/* =========================================================
   ユニットコントローラー — デザインシステム
   Phase 0: 共通トークン＋演出部品 / Phase 1: 起動画面(gate)
   ========================================================= */

:root{
  /* ベース配色は ojipon（https://ojipon.site-sample.online/）に準拠＝オレンジ基調の配色。
     ※号機カラー（壱=紫/弐=赤/参=グレー）はブランド上の理由で据え置き（dashboard.phpで個別指定）。 */
  --bg:#0a0a0f;
  --panel:#0f1019;
  --panel-line:rgba(255,122,0,.34);   /* パネル枠：オレンジ（視認性向上のため濃いめ） */
  --fg:#e7e9f0;
  --muted:#868c9a;

  --red:#ff2424;
  --red-dk:#7c0d0d;
  --blu:#46c9ff;
  --grn:#00ff9d;   /* ONLINE/良好/CALM/利益 等（ミントグリーン） */
  --amb:#ffd000;   /* 警戒/EXTERNAL 等（イエロー） */
  --org:#ff7a00;   /* 主アクセント（オレンジ） */
  --pur:#ff7a00;       /* 旧・カーソル/フォーカス色（紫）→オレンジに統一 */
  --pur-lock:#ff9d3d;  /* ロックオン時（明るいオレンジ） */

  --grid:rgba(255,122,0,.05);   /* 背景グリッド：オレンジ極薄 */

  --mono:'Share Tech Mono','Courier New',monospace;
  --mincho:'Shippori Mincho B1', serif;

  --hazard:repeating-linear-gradient(-45deg,
            var(--amb) 0 20px, #000 20px 40px);
  --hazard-red:repeating-linear-gradient(-45deg,
            var(--red) 0 20px, #000 20px 40px);
}

*{ box-sizing:border-box; }
html,body{ margin:0; padding:0; }

body{
  background:var(--bg);
  color:var(--fg);
  font-family:var(--mono);
  letter-spacing:.05em;
  min-height:100vh;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
  text-shadow:0 0 1px rgba(255,255,255,.05);
}

a{ color:var(--blu); text-decoration:none; }
a:hover{ color:#fff; }

/* ---------- 背景レイヤー（全ページ共通） ---------- */
.eva-grid{
  position:fixed; inset:0; z-index:-3; pointer-events:none;
  background:
    repeating-linear-gradient(90deg, transparent 0 39px, var(--grid) 39px 40px),
    repeating-linear-gradient(0deg,  transparent 0 39px, var(--grid) 39px 40px),
    radial-gradient(ellipse 90% 70% at 50% 22%, #0d0618 0%, #030205 62%, #000 100%);
  animation:gridpulse 6s ease-in-out infinite;
}
@keyframes gridpulse{ 0%,100%{opacity:.85} 50%{opacity:1} }

.eva-scan{
  position:fixed; inset:0; z-index:60; pointer-events:none;
  background:repeating-linear-gradient(0deg,
    rgba(0,0,0,.30) 0 1px, transparent 1px 3px);
  mix-blend-mode:multiply; opacity:.6;
}
.eva-scan::after{
  content:""; position:absolute; left:0; right:0; height:150px; top:-150px;
  background:linear-gradient(180deg, transparent, rgba(70,201,255,.10), transparent);
  animation:scanmove 7s linear infinite;
}
@keyframes scanmove{ from{top:-150px} to{top:100%} }

.eva-vignette{
  position:fixed; inset:0; z-index:-2; pointer-events:none;
  box-shadow:inset 0 0 220px 40px rgba(0,0,0,.9);
}

/* ターゲット照準／シールド風 背景モチーフ（全ページ・極薄） */
.eva-target{
  position:fixed; inset:0; z-index:-2; pointer-events:none; opacity:.6;
  background:
    repeating-radial-gradient(circle at 84% 18%, transparent 0 37px, rgba(255,140,0,.055) 37px 38px),
    repeating-radial-gradient(circle at 14% 86%, transparent 0 47px, rgba(70,201,255,.04) 47px 48px);
}
.eva-target::before{
  content:""; position:absolute; top:18%; left:84%; width:150px; height:150px;
  transform:translate(-50%,-50%); border:1px solid rgba(255,140,0,.14); border-radius:50%;
  background:
    linear-gradient(rgba(255,140,0,.16),rgba(255,140,0,.16)) 50% 0/1px 100% no-repeat,
    linear-gradient(rgba(255,140,0,.16),rgba(255,140,0,.16)) 0 50%/100% 1px no-repeat;
  animation:gridpulse 5s ease-in-out infinite;
}

/* ---------- 背景演出を派手に（レーダー掃引・グリッド増幅・ロックオン強化・全ユーザー共通） ---------- */
/* 元は購入済み限定だったが「背景の動きだけは購入ステータス問わず両方に」という要望で全員に適用。 */
:root{ --grid:rgba(255,140,0,.14); }
.eva-grid{ animation:gridpulsePaid 4s ease-in-out infinite; }
@keyframes gridpulsePaid{ 0%,100%{opacity:.8} 50%{opacity:1.25} }

.eva-target{ opacity:1; }
.eva-target::before{
  width:220px; height:220px; border-color:rgba(255,140,0,.28);
  animation:gridpulse 5s ease-in-out infinite, paidLockPulse 3.2s ease-in-out infinite;
}
.eva-target::after{
  content:""; position:absolute; top:18%; left:84%; width:340px; height:340px;
  transform:translate(-50%,-50%); border:1px dashed rgba(255,140,0,.2); border-radius:50%;
  animation:paidRingSpin 22s linear infinite;
}
@keyframes paidLockPulse{
  0%,100%{ box-shadow:0 0 0 0 rgba(255,140,0,.45); }
  50%{ box-shadow:0 0 46px 10px rgba(255,140,0,.4); }
}
@keyframes paidRingSpin{ from{ transform:translate(-50%,-50%) rotate(0deg); } to{ transform:translate(-50%,-50%) rotate(360deg); } }

.eva-radar{
  display:block; position:fixed; inset:0; z-index:-2; pointer-events:none; mix-blend-mode:screen;
  background:conic-gradient(from 0deg at 50% 50%,
    rgba(255,140,0,.16) 0deg, transparent 26deg 334deg, rgba(255,140,0,.16) 360deg);
  animation:radarSweep 10s linear infinite;
}
@keyframes radarSweep{ from{ transform:rotate(0deg); } to{ transform:rotate(360deg); } }

@media (prefers-reduced-motion:reduce){
  /* 動きを抑える環境ではレーダー掃引等は非表示のまま静的にする（*{animation:none!important}は既存適用済み）。 */
  .eva-radar{ display:none; }
  .eva-target::after{ display:none; }
}

/* ---------- 共通アニメーション ---------- */
@keyframes rgbsplit{
  0%,72%,100%{ text-shadow:0 0 6px currentColor; transform:none; }
  78%{ text-shadow:-2px 0 var(--red), 2px 0 var(--blu); transform:translateX(-1px); }
  86%{ text-shadow: 2px 0 var(--red),-2px 0 var(--blu); transform:translateX(1px); }
}
@keyframes blink{ 50%{ opacity:.25; } }
@keyframes lamp{ 0%,100%{ box-shadow:0 0 4px currentColor; opacity:.5 } 50%{ box-shadow:0 0 14px currentColor; opacity:1 } }
@keyframes decode{ 0%{opacity:.1; filter:blur(3px)} 60%{opacity:1; filter:blur(0)} }
@keyframes flick{ 0%,100%{opacity:1} 8%{opacity:.6} 10%{opacity:1} 92%{opacity:.7} }
@keyframes marquee{ from{transform:translateX(0)} to{transform:translateX(-50%)} }
@keyframes bar-load{ from{width:0} to{width:100%} }

/* ---------- グリッチテキスト（見出しに .glitch data-text="..."） ---------- */
.glitch{ position:relative; display:inline-block; animation:rgbsplit 5s steps(1) infinite; }
.glitch::before,.glitch::after{
  content:attr(data-text); position:absolute; left:0; top:0; width:100%;
  clip-path:inset(0 0 0 0); opacity:.0; pointer-events:none;
}
.glitch:hover::before{ opacity:.9; color:var(--red);  transform:translate(-2px,0); }
.glitch:hover::after { opacity:.9; color:var(--blu);  transform:translate(2px,0); }

/* ---------- ハザードバー（斜めトラ柄・流れる警告） ---------- */
.hazard-bar{
  position:relative; height:34px; overflow:hidden;
  background:var(--hazard);
  border-top:2px solid #000; border-bottom:2px solid #000;
  display:flex; align-items:center;
}
.hazard-bar.is-red{ background:var(--hazard-red); }
.hazard-track{ display:flex; white-space:nowrap; animation:marquee 22s linear infinite; }
.hazard-text{
  padding:0 1.2em; font-weight:bold; color:#000;
  font-size:.82rem; letter-spacing:.18em; text-shadow:none;
}

/* 細い警告見出し */
.hazard-slim{
  display:inline-block; padding:.25em .8em; color:#000; font-weight:bold;
  background:var(--amb); letter-spacing:.16em; font-size:.75rem;
}
.hazard-slim.is-red{ background:var(--red); color:#fff; }

/* ---------- ステータスランプ／行 ---------- */
.lamp{ display:inline-block; width:.6em; height:.6em; border-radius:50%;
  background:currentColor; animation:lamp 1.6s ease-in-out infinite; }
.st-line{ display:flex; align-items:center; gap:.5em; font-size:.8rem;
  color:var(--muted); letter-spacing:.12em; padding:.15em 0; }
.st-line .val{ color:var(--grn); }
.st-line.is-red{ color:var(--red); } .st-line.is-red .val{ color:var(--red); }
.st-line.is-amb .val{ color:var(--amb); }

/* ---------- 汎用パネル ---------- */
.panel{
  position:relative; background:linear-gradient(180deg, rgba(8,5,12,.92), rgba(4,2,6,.92));
  border:2px solid var(--panel-line); padding:1.1rem 1.2rem; margin:1rem 0;
  box-shadow:0 0 0 1px rgba(0,0,0,.6), inset 0 0 30px rgba(255,122,0,.05);
}
.panel::before{ content:""; position:absolute; top:-2px; left:-2px; width:16px; height:16px;
  border-top:3px solid var(--pur); border-left:3px solid var(--pur); }
.panel::after{ content:""; position:absolute; bottom:-2px; right:-2px; width:16px; height:16px;
  border-bottom:3px solid var(--pur); border-right:3px solid var(--pur); }
.panel-title{ font-family:var(--mincho); font-weight:800; font-size:1.6rem;
  margin:.2em 0 .5em; letter-spacing:.04em; }
.panel-center{ max-width:640px; margin:12vh auto; text-align:center; }
.muted{ color:var(--muted); font-size:.85rem; line-height:1.9; }

/* ---------- 購入済みユーザー限定：スクロール連動フェードイン演出（js/eva-reveal.js） ---------- */
/* body.dash-paid のときだけ有効。戻す場合はこのブロックを削除するだけでよい（HTML/JS側は無害化される）。 */
body.dash-paid .panel,
body.dash-paid .unit-card{
  opacity:0; transform:translateY(56px) scale(.94); filter:blur(6px);
  transition:opacity 1.1s cubic-bezier(.16,1,.3,1),
             transform 1.1s cubic-bezier(.16,1,.3,1),
             filter 1.1s cubic-bezier(.16,1,.3,1);
}
body.dash-paid .panel.is-revealed,
body.dash-paid .unit-card.is-revealed{
  opacity:1; transform:translateY(0) scale(1); filter:blur(0);
  animation: revealGlow 1.3s ease-out;
}
@keyframes revealGlow{
  0%   { box-shadow:0 0 0 1px rgba(0,0,0,.6), inset 0 0 30px rgba(255,122,0,.05), 0 0 0 0 rgba(255,122,0,0); }
  35%  { box-shadow:0 0 0 1px rgba(0,0,0,.6), inset 0 0 30px rgba(255,122,0,.05), 0 0 55px 10px rgba(255,140,0,.6); }
  100% { box-shadow:0 0 0 1px rgba(0,0,0,.6), inset 0 0 30px rgba(255,122,0,.05), 0 0 0 0 rgba(255,122,0,0); }
}
@media (prefers-reduced-motion:reduce){
  /* 動きを抑える環境では非表示状態のまま固まらないよう、常に最終状態で表示する。 */
  body.dash-paid .panel,
  body.dash-paid .unit-card{ opacity:1; transform:none; filter:none; transition:none; }
}

/* ================================================================
   購入済みユーザー限定：炎の演出（進捗クエスト #19「有料版サイトの見た目アップデート」）
     ① セクション(.panel)のフレームを、炎がゆっくり一周する演出に
     ② 稼働中のEAカード(.unit-card.is-running)は炎がメラメラ揺らめく演出に
   body.dash-paid のときだけ有効＝無料ユーザーの見た目は一切変わらない。
   戻す場合はこのブロックごと削除すればよい（dashboard.php の is-running クラスは残っても無害）。
   ・枠の炎は「border部分だけをconic-gradientで塗り、その角度(--fire-angle)を回す」方式。
     @property 非対応ブラウザでは回らないだけで、静的な炎色のフレームとして表示される。
   ・要素側の animation は既存の revealGlow（表示時の1回きり）と共有するため、
     .is-revealed には炎のアニメと revealGlow を併記した上書きルールを置いている
     （revealGlow を最後に書くことで、表示の瞬間だけ box-shadow を占有させる）。
   ・prefers-reduced-motion:reduce では末尾の *{animation:none!important} により
     回転も明滅も止まり、静止した炎色のフレームになる。
   ================================================================ */
@property --fire-angle { syntax:'<angle>'; inherits:false; initial-value:0deg; }
@property --ember-angle{ syntax:'<angle>'; inherits:false; initial-value:0deg; }
@keyframes fireAngle { to{ --fire-angle:360deg;  } }
@keyframes emberAngle{ to{ --ember-angle:360deg; } }

/* ① セクションのフレーム：炎がゆっくり一周する */
body.dash-paid .panel{
  border-color:transparent;
  background:
    /* 内側は不透過（元の .panel と同じ色）＝枠の炎がパネル内部へ透けないようにする */
    linear-gradient(180deg, #08050c, #040206) padding-box,
    conic-gradient(from var(--fire-angle),
      rgba(255,36,0,.10)    0deg,
      rgba(255,122,0,.85)  26deg,
      rgba(255,208,0,1)    50deg,
      rgba(255,122,0,.80)  76deg,
      rgba(255,36,0,.16)  120deg,
      rgba(255,36,0,.10)  186deg,
      rgba(255,122,0,.55) 216deg,
      rgba(255,208,0,.85) 242deg,
      rgba(255,122,0,.50) 272deg,
      rgba(255,36,0,.10)  318deg,
      rgba(255,36,0,.10)  360deg) border-box;
  animation:fireAngle 16s linear infinite, fireEmber 7s ease-in-out infinite alternate;
}
body.dash-paid .panel.is-revealed{
  animation:fireAngle 16s linear infinite, fireEmber 7s ease-in-out infinite alternate,
            revealGlow 1.3s ease-out;
}
@keyframes fireEmber{
  from{ box-shadow:0 0 0 1px rgba(0,0,0,.6), inset 0 0 30px rgba(255,122,0,.05), 0 0 16px rgba(255,90,0,.10); }
  to  { box-shadow:0 0 0 1px rgba(0,0,0,.6), inset 0 0 34px rgba(255,122,0,.12), 0 0 34px rgba(255,110,0,.26); }
}

/* ② 稼働中のEAカード：枠の炎を速く回し、下端から熱が立ちのぼるようメラメラさせる */
body.dash-paid .unit-card.is-running{
  border-color:transparent;
  background:
    linear-gradient(180deg, #03060a 56%, #140803 100%) padding-box,
    conic-gradient(from var(--ember-angle),
      rgba(255,36,0,.16)    0deg,
      rgba(255,122,0,.90)  22deg,
      rgba(255,208,0,1)    44deg,
      rgba(255,122,0,.80)  70deg,
      rgba(255,36,0,.18)  128deg,
      rgba(255,36,0,.14)  200deg,
      rgba(255,150,20,.75) 236deg,
      rgba(255,208,0,.90) 258deg,
      rgba(255,122,0,.55) 286deg,
      rgba(255,36,0,.16)  330deg,
      rgba(255,36,0,.16)  360deg) border-box;
  animation:emberAngle 7s linear infinite, emberFlicker 3.4s ease-in-out infinite;
}
body.dash-paid .unit-card.is-running.is-revealed{
  animation:emberAngle 7s linear infinite, emberFlicker 3.4s ease-in-out infinite,
            revealGlow 1.3s ease-out;
}
/* box-shadow の inset は「背景の上・文字の下」に描かれるので、カード内の文字を隠さずに
   下端のゆらめきだけを重ねられる。刻みを不規則にして“メラメラ”感を出す。 */
@keyframes emberFlicker{
  0%,100%{ box-shadow:inset 0 -30px 38px -24px rgba(255,110,0,.50), 0 0 16px rgba(255,80,0,.18); }
  17%    { box-shadow:inset 0 -44px 50px -22px rgba(255,150,20,.74), 0 0 28px rgba(255,90,0,.32); }
  34%    { box-shadow:inset 0 -24px 34px -26px rgba(255,100,0,.38), 0 0 12px rgba(255,80,0,.14); }
  53%    { box-shadow:inset 0 -50px 56px -20px rgba(255,170,40,.82), 0 0 32px rgba(255,100,0,.38); }
  71%    { box-shadow:inset 0 -32px 40px -24px rgba(255,120,0,.52), 0 0 18px rgba(255,80,0,.20); }
  87%    { box-shadow:inset 0 -40px 48px -22px rgba(255,140,10,.66), 0 0 24px rgba(255,90,0,.28); }
}
/* 左のアクセントバーは炎が立ちのぼる帯に（同じ柄を繰り返すので継ぎ目が出ない） */
body.dash-paid .unit-card.is-running::before{
  background:repeating-linear-gradient(0deg,
    #ff2400 0, #ff7a00 13px, #ffd000 25px, #ff7a00 38px, #ff2400 52px);
  opacity:1; box-shadow:0 0 12px rgba(255,110,0,.55);
  animation:emberRise 1.7s linear infinite;
}
@keyframes emberRise{ from{ background-position:0 0; } to{ background-position:0 -52px; } }
/* 稼働バッジも熱を帯びさせる（色は稼働＝緑のまま＝ステータスの意味は変えない） */
body.dash-paid .unit-card.is-running .unit-status.is-on{
  box-shadow:0 0 14px rgba(255,110,0,.35);
  text-shadow:0 0 8px rgba(0,255,157,.55);
}

/* ---------- ボタン ---------- */
.btn-eva{
  display:inline-block; margin-top:1.2rem; padding:.7em 1.6em;
  color:var(--amb); border:1px solid var(--amb); background:transparent;
  font-family:var(--mono); letter-spacing:.18em; cursor:pointer;
  transition:.15s; text-transform:uppercase;
}
.btn-eva:hover{ background:var(--amb); color:#000; box-shadow:0 0 18px rgba(255,139,224,.5); }

/* ---------- カウントアップ数値 ---------- */
.sync{ color:var(--amb); font-variant-numeric:tabular-nums; }

/* =========================================================
   ヘッダー / フッター（通常ページ）
   ========================================================= */
/* ヘッダー＋通貨ティッカーをまとめて上部に固定 */
.topbar{ position:sticky; top:0; z-index:50; }
.eva-header{
  position:relative; z-index:2;
  display:flex; align-items:center; justify-content:space-between;
  gap:.5rem 1rem; flex-wrap:wrap;
  padding:.6rem 1.1rem; background:rgba(0,0,0,.72);
  border-bottom:1px solid var(--panel-line); backdrop-filter:blur(2px);
}

/* 通貨レート ティッカー（赤帯・全幅・ヘッダー直下） */
.price-ticker{
  overflow:hidden; white-space:nowrap; position:relative;
  background:linear-gradient(180deg, rgba(255,36,36,.18), rgba(255,36,36,.05));
  border-bottom:1px solid rgba(255,36,36,.55);
  padding:.32rem 0;
}
.pt-track{
  display:inline-flex; white-space:nowrap; align-items:center;
  font-family:var(--mono); font-size:.72rem; letter-spacing:.04em;
  animation:marquee 42s linear infinite;
}
.price-ticker:hover .pt-track{ animation-play-state:paused; }
.pt-item{ padding:0 .2em; color:var(--fg); }
.pt-item .lbl{ color:var(--muted); }
.pt-item .code{ color:var(--fg); }
.pt-item .price{ color:#fff; font-weight:bold; }
.pt-item .up{ color:var(--grn); }
.pt-item .down{ color:var(--red); }
.pt-sep{ color:rgba(255,36,36,.65); margin:0 .55em; }
.pt-loading{ color:var(--muted); font-family:var(--mono); font-size:.72rem; padding-left:1rem; }

/* ヘッダー ステータスチップ（ojipon風・test2トークンで統合） */
.hdr-status{ display:flex; gap:.45rem; flex-wrap:wrap; align-items:stretch; margin-left:auto; }
.hdr-chip{
  display:flex; flex-direction:column; justify-content:center; line-height:1.25; white-space:nowrap;
  border:1px solid var(--panel-line); background:rgba(0,0,0,.35); padding:.2em .7em;
}
.hdr-chip-lbl{ font-family:var(--mono); font-size:.5rem; color:var(--muted); letter-spacing:.22em; }
.hdr-chip-val{ display:flex; align-items:center; gap:.4em; font-size:.72rem; letter-spacing:.04em; }
.hdr-chip-val b{ color:var(--grn); font-weight:700; }
.hdr-lamp{ width:.5em; height:.5em; border-radius:50%; background:var(--grn);
  box-shadow:0 0 6px var(--grn); animation:lamp 2s ease-in-out infinite; }
.hdr-sync{ font-variant-numeric:tabular-nums; }
.hdr-pilot{ display:flex; flex-direction:column; justify-content:center; line-height:1.25;
  border:1px solid var(--org); background:rgba(255,140,0,.08); padding:.2em .7em;
  text-decoration:none; cursor:pointer; transition:background .15s, box-shadow .15s; }
.hdr-pilot:hover{ background:rgba(255,140,0,.18); box-shadow:0 0 12px rgba(255,140,0,.3); }
.hdr-pilot-lbl{ font-family:var(--mono); font-size:.5rem; color:var(--org); letter-spacing:.22em; }
.hdr-pilot-name{ font-size:.72rem; font-weight:700; color:#fff; letter-spacing:.04em; }
.hdr-pilot-no{ font-family:var(--mono); color:var(--org); }
@media (max-width:640px){
  .hdr-chip{ padding:.18em .5em; }
  .hdr-chip-val{ font-size:.66rem; }
}
.eva-logo{ display:flex; align-items:baseline; gap:.4em; color:#fff; }
.eva-logo-mark{ color:var(--red); }
.eva-logo-name{ font-family:var(--mincho); font-weight:800; font-size:1.25rem; letter-spacing:.05em; }
.eva-logo-sub{ color:var(--muted); font-size:.68rem; letter-spacing:.28em; }
.eva-nav{ display:flex; gap:1.1rem; font-size:.82rem; letter-spacing:.14em; }
.eva-nav a{ color:var(--fg); }
.eva-nav a:hover{ color:var(--amb); }

.eva-main{ max-width:1140px; margin:0 auto; padding:1.2rem 1.1rem 4rem; }
.eva-main-gate{ max-width:none; margin:0; padding:0; }

.eva-footer{
  border-top:2px solid var(--org); padding:1.6rem 1.1rem;
  display:flex; flex-direction:column; align-items:center; gap:.9rem;
  text-align:center; color:var(--muted); font-size:.75rem; letter-spacing:.12em;
}
.eva-footer-god{ font-family:var(--mono); letter-spacing:.28em; color:var(--org);
  font-size:.85rem; line-height:1.8; }
.eva-footer-disc{ font-size:.68rem; color:var(--muted); line-height:2; max-width:760px; }
.eva-footer-links{ display:flex; gap:1.4rem; }
.eva-footer-links a{ color:var(--muted); }
.eva-footer-links a:hover{ color:var(--amb); }
.eva-footer-copy{ color:var(--muted); }

/* =========================================================
   Phase 1: 起動画面（gate）
   ========================================================= */
.gate-mode{ height:100vh; overflow:hidden; }
.gate{ position:relative; height:100vh; display:flex; flex-direction:column; }

.hazard-bar-top{ flex:0 0 auto; }
.hazard-bar-bottom{ flex:0 0 auto; }

.gate-body{
  flex:1 1 auto; display:grid;
  grid-template-columns:1fr minmax(0,560px) 1fr;
  align-items:center; gap:1rem; padding:1.2rem 1.4rem;
}

/* 左右の警告カラム */
.gate-warnings{ display:flex; flex-direction:column; gap:.55rem; align-self:center; }
.gate-warnings-right{ text-align:right; }
.gate-warnings .st-line{ animation:flick 4s ease-in-out infinite; }
.gate-warnings-right .st-line{ justify-content:flex-end; }

/* 中央 */
.gate-center{ text-align:center; animation:decode 1.4s ease-out both; }
.gate-code{ color:var(--grn); font-size:.75rem; letter-spacing:.34em; margin-bottom:.8rem; }
.gate-title{
  font-family:var(--mincho); font-weight:800; color:#fff;
  font-size:clamp(3.4rem, 14vw, 8rem); line-height:.9;
  transform:scaleX(.86); transform-origin:center;
  margin:.1em 0; text-shadow:0 0 30px rgba(255,255,255,.15);
}
.gate-sub{ color:var(--amb); font-size:.9rem; letter-spacing:.3em; margin-bottom:1.1rem; }
.gate-sync{ color:var(--muted); font-size:.9rem; letter-spacing:.2em; margin-bottom:1.6rem; }
.gate-sync b{ font-size:1.5rem; }

/* ENGAGE ボタン */
.engage{
  position:relative; display:inline-flex; flex-direction:column; gap:.35em;
  padding:1.05em 2.4em; cursor:pointer; background:rgba(255,36,36,.06);
  border:2px solid var(--red); color:#fff; font-family:var(--mono);
  animation:engage-pulse 1.8s ease-in-out infinite;
}
.engage:hover{ background:var(--red); }
.engage:hover .engage-en{ color:#000; }
.engage-jp{ font-size:1.15rem; letter-spacing:.24em; }
.engage-en{ font-size:.72rem; letter-spacing:.28em; color:var(--red); }
/* 単独「起動」ボタン（文字大きめ） */
.engage-solo{ padding:.9em 2.6em; }
.engage-solo .engage-jp{ font-size:1.8rem; letter-spacing:.5em; padding-left:.5em; }
.engage::before,.engage::after{ content:""; position:absolute; width:10px; height:10px; }
.engage::before{ top:-2px; left:-2px; border-top:3px solid var(--amb); border-left:3px solid var(--amb); }
.engage::after{ bottom:-2px; right:-2px; border-bottom:3px solid var(--amb); border-right:3px solid var(--amb); }
@keyframes engage-pulse{ 0%,100%{ box-shadow:0 0 0 0 rgba(255,36,36,.5) } 60%{ box-shadow:0 0 0 14px rgba(255,36,36,0) } }

.gate-note{ margin-top:1.2rem; color:var(--muted); font-size:.72rem; letter-spacing:.16em; }

/* 起動フラッシュ（ENGAGE押下時のオーバーレイ） */
.boot-flash{
  position:fixed; inset:0; z-index:200; display:none;
  background:#000; color:var(--grn); font-family:var(--mono);
  align-items:center; justify-content:center; flex-direction:column; gap:1rem;
}
.boot-flash.is-on{ display:flex; animation:flick .18s steps(2) 3; }
.bf-line{ letter-spacing:.4em; font-size:1rem; color:var(--amb); }
.bf-bar{ width:min(70vw,420px); height:8px; border:1px solid var(--grn); }
.bf-bar > i{ display:block; height:100%; background:var(--grn); width:0; animation:bar-load 1.4s ease-out forwards; }
.is-engaging{ animation:flick .2s steps(2) infinite; }

/* =========================================================
   レスポンシブ
   ========================================================= */
@media (max-width:860px){
  .gate-body{ grid-template-columns:1fr; gap:1.4rem; padding:1rem; }
  .gate-warnings{ display:none; }             /* スマホは中央のみ表示 */
  .gate-title{ transform:scaleX(.9); }
}
@media (max-width:520px){
  .eva-logo-sub{ display:none; }
  .hazard-text{ font-size:.72rem; }
}

/* =========================================================
   ダッシュボード（経済指標・通貨コメント・チャート）
   ========================================================= */
.txt-grn{ color:var(--grn); } .txt-amb{ color:var(--amb); }

.panel-bar{ display:flex; align-items:center; gap:.8rem; flex-wrap:wrap;
  border-bottom:1px solid var(--panel-line); padding-bottom:.6rem; margin-bottom:.9rem; }
.panel-bar-title{ font-family:var(--mincho); font-weight:800; font-size:1.32rem; color:#fff; letter-spacing:.03em; }
.panel-exp{ margin-left:auto; font-family:var(--mono); font-size:.72rem; color:var(--muted); white-space:nowrap; }
.panel-exp.is-expired{ color:var(--red); }
.panel-bar-upd{ margin-left:auto; color:var(--muted); font-size:.72rem; letter-spacing:.1em; }

/* 経済指標テーブル */
.table-scroll{ overflow-x:auto; }
.ind-table{ width:100%; border-collapse:collapse; font-size:.82rem; white-space:nowrap; }
.ind-table th{ text-align:left; color:var(--muted); font-weight:normal; letter-spacing:.12em;
  border-bottom:1px solid var(--panel-line); padding:.45rem .7rem; font-size:.72rem; }
.ind-table td{ padding:.55rem .7rem; border-bottom:1px solid rgba(255,122,0,.09); }
.ind-table tbody tr:hover{ background:rgba(255,122,0,.06); }
.c-time{ color:var(--blu); font-variant-numeric:tabular-nums; }
.c-name{ white-space:normal; min-width:180px; color:var(--fg); }
.c-num{ color:var(--muted); font-variant-numeric:tabular-nums; text-align:right; }
.c-actual{ color:#fff; }
.c-actual .pending{ color:var(--amb); }
.c-cur{ color:var(--grn); letter-spacing:.08em; }
.imp{ letter-spacing:.1em; }
.imp.is-red{ color:var(--red); } .imp.is-amb{ color:var(--amb); } .imp.is-grn{ color:var(--grn); }

/* 終了済みの指標はグレーアウト */
.ind-table tr.is-done{ opacity:.4; }
.ind-table tr.is-done td,
.ind-table tr.is-done .c-time,
.ind-table tr.is-done .c-cur,
.ind-table tr.is-done .imp{ color:var(--muted) !important; }
.ind-table tr.is-done:hover{ opacity:.6; background:rgba(255,255,255,.02); }
.done-badge{ display:inline-block; font-size:.62rem; letter-spacing:.05em;
  color:#000; background:var(--muted); padding:.05em .4em; border-radius:1px;
  vertical-align:middle; }

/* カウントダウン＋指標リスト（2カラム / OJIPON移植） */
.indi-top{ display:grid; grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr); gap:1rem; align-items:start; }
.countdown-box{
  border:1px solid var(--panel-line); background:rgba(0,0,0,.3);
  padding:2rem 1.1rem; text-align:center;
  display:flex; flex-direction:column; justify-content:center; align-items:center;
  gap:1.1rem; min-height:300px;
}
.cd-lbl{ font-family:var(--mono); font-size:.72rem; color:var(--muted); letter-spacing:.26em; line-height:1.8; }
.cd-target{ font-size:1.15rem; font-weight:700; color:var(--amb); margin:0; line-height:1.7; }
.cd-timer{
  font-family:var(--mono); font-size:clamp(2.6rem,7vw,4.4rem); font-weight:bold;
  color:var(--grn); letter-spacing:.04em; text-shadow:0 0 16px rgba(0,255,157,.35);
  font-variant-numeric:tabular-nums; line-height:1.1;
}
.countdown-box.is-warn  .cd-timer{ color:var(--amb); text-shadow:0 0 16px rgba(255,139,224,.45); }
.countdown-box.is-alert .cd-timer{ color:var(--red); text-shadow:0 0 16px rgba(255,36,36,.5);
  animation:blink 1s step-end infinite; }
.countdown-box.is-alert{ border-color:rgba(255,36,36,.55); }

/* 指標リスト：縦スクロール（高さはJSでカウントダウン箱に同期） */
.indi-scroll{ overflow:auto; }
.indi-scroll::-webkit-scrollbar{ width:8px; height:8px; }
.indi-scroll::-webkit-scrollbar-thumb{ background:var(--panel-line); }
.indi-scroll::-webkit-scrollbar-track{ background:transparent; }
.indi-scroll{ scrollbar-width:thin; scrollbar-color:var(--panel-line) transparent; }
.indi-scroll .ind-table thead th{ position:sticky; top:0; background:var(--panel); z-index:1; }
.ind-table tr.is-next td{ background:rgba(255,139,224,.10); }
.ind-table tr.is-next .c-time{ color:var(--amb); font-weight:bold; }
@media (max-width:820px){
  .indi-top{ grid-template-columns:1fr; }
  /* スマホ：縦は全表示・横に広いテーブルは枠内で横スクロール（ページ全体のはみ出しを防ぐ） */
  .indi-scroll{ overflow-x:auto; overflow-y:visible; max-width:100%; }
}

/* 通貨コメント */
.cmt-grid{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:.9rem; }
@media (max-width:760px){ .cmt-grid{ grid-template-columns:1fr; } }
.cmt-card{ border:1px solid var(--panel-line); background:rgba(0,0,0,.3); padding:.8rem .9rem; }
.cmt-cur{ display:flex; align-items:center; gap:.5em; color:var(--amb);
  font-weight:bold; letter-spacing:.14em; margin-bottom:.5rem;
  border-bottom:1px dashed rgba(255,139,224,.3); padding-bottom:.4rem; }
.cmt-flag{ font-size:1.2em; }
.cmt-body{ margin:0; color:var(--fg); font-size:.82rem; line-height:1.85; }

/* AI相場予想 */
.fc-grid{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:.9rem; padding:.9rem; }
@media (max-width:760px){ .fc-grid{ grid-template-columns:1fr; } }
.fc-card{ border:1px solid var(--panel-line); background:rgba(0,0,0,.3); border-radius:3px; padding:.8rem .9rem; }
.fc-head{ display:flex; align-items:center; gap:.5rem; flex-wrap:wrap; margin-bottom:.5rem;
  border-bottom:1px dashed var(--panel-line); padding-bottom:.45rem; }
.fc-pair{ font-family:var(--mincho); font-weight:700; color:#fff; font-size:1rem; }
.fc-sym{ font-size:.72rem; color:var(--muted); }
.fc-bias{ margin-left:auto; font-family:var(--mono); font-size:.86rem; font-weight:700;
  padding:.2rem .7rem; border-radius:2px; border:2px solid; white-space:nowrap; }
/* 見通しは5段階：上昇 / やや上昇 / レンジ / やや下落 / 下落 */
.fc-bias.is-up{ color:var(--grn); border-color:rgba(0,255,157,.55); background:rgba(0,255,157,.10); }
.fc-bias.is-up-w{ color:#8ef0c4; border-color:rgba(0,255,157,.30); background:rgba(0,255,157,.05); }
.fc-bias.is-flat{ color:var(--amb); border-color:rgba(255,208,0,.5); background:rgba(255,208,0,.06); }
.fc-bias.is-down-w{ color:#ff9c9c; border-color:rgba(255,36,36,.28); background:rgba(255,36,36,.04); }
.fc-bias.is-down{ color:var(--red); border-color:rgba(255,36,36,.5); background:rgba(255,36,36,.08); }
/* 予想カードの読み上げ（▶）ボタン */
.fc-tts{ flex:0 0 auto; cursor:pointer; font-size:.62rem; line-height:1; padding:0;
  width:1.55rem; height:1.55rem; border-radius:50%; display:inline-flex; align-items:center; justify-content:center;
  color:var(--grn); background:rgba(255,122,0,.12); border:1px solid rgba(255,122,0,.5); transition:.12s; }
.fc-tts:hover{ background:rgba(255,122,0,.28); color:#fff; }
.fc-tts.is-playing{ color:#fff; background:var(--red); border-color:var(--red); }
.fc-comment{ margin:0; color:var(--fg); font-size:.82rem; line-height:1.85; }
.fc-note{ margin:.9rem 0 0; color:var(--muted); font-size:.7rem; }
/* AI相場予想：お知らせ形式（通貨ごと・5日分・日時付き） */
.fc-news{ padding:0; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:.9rem; align-items:stretch; }
@media (max-width:900px){ .fc-news{ grid-template-columns:1fr; } }
.fc-pair-group{ border:2px solid var(--panel-line); background:rgba(0,0,0,.28); border-radius:3px; overflow:hidden; display:flex; flex-direction:column; }
/* 各列の内容領域を箱いっぱいに広げ、表示部/モザイク部で高さを揃える */
.fc-pair-group > .fc-list, .fc-pair-group > .fc-lock-wrap{ flex:1 1 auto; min-height:0; }
.fc-list .fc-item:last-child{ border-bottom:0; }
.fc-pair-title{ display:flex; align-items:baseline; gap:.5rem; padding:.6rem .85rem;
  background:rgba(255,122,0,.08); border-bottom:2px solid var(--panel-line); }
.fc-pair-title b{ font-family:var(--mincho); font-weight:800; color:#fff; font-size:1.12rem; }
.fc-pair-title .mono{ font-size:.78rem; color:var(--muted); }
.fc-list{ list-style:none; margin:0; padding:0; }
.fc-item{ padding:.6rem .85rem; border-bottom:1px dashed rgba(255,122,0,.14); }
.fc-item:last-child{ border-bottom:none; }
.fc-item:first-child{ background:rgba(255,140,0,.05); }   /* 最新（先頭）を薄く強調 */
.fc-item-head{ display:flex; align-items:center; gap:.5rem; margin-bottom:.35rem; }
.fc-when{ font-size:.82rem; font-weight:700; color:var(--blu); font-variant-numeric:tabular-nums; }
.fc-item-head .fc-bias{ margin-left:auto; }
.fc-item-body{ margin:0; color:#f2f4f9; font-size:.94rem; font-weight:500; line-height:1.85; }
/* オススメ度（☆5段階）＋担当号機 */
.fc-reco{ display:flex; align-items:center; gap:.45rem; flex-wrap:wrap; margin:0 0 .45rem;
  padding:.3rem .5rem; border:1px dashed rgba(255,122,0,.28); background:rgba(255,122,0,.05); border-radius:2px; }
.fc-reco-lbl{ font-family:var(--mono); font-size:.7rem; color:var(--muted); letter-spacing:.08em; }
.fc-reco-unit,.fc-unit-tag{ font-family:var(--mincho); font-weight:800; font-size:.8rem; letter-spacing:.04em; }
.fc-unit-tag{ padding:.05rem .4rem; border:1px solid currentColor; border-radius:2px; font-size:.72rem; }
.fc-reco-unit.u1,.fc-unit-tag.u1,.fc-legend-tbl .u1{ color:#b06bff; }   /* 壱＝紫 */
.fc-reco-unit.u2,.fc-unit-tag.u2,.fc-legend-tbl .u2{ color:#ff5a5a; }   /* 弐＝赤 */
.fc-reco-unit.u3,.fc-unit-tag.u3,.fc-legend-tbl .u3{ color:#c2ccd6; }   /* 参＝グレー */
.fc-stars{ margin-left:auto; font-size:.95rem; letter-spacing:.08em; white-space:nowrap; line-height:1;
  text-shadow:0 0 6px currentColor; }
.fc-stars.is-s5{ color:var(--grn); }
.fc-stars.is-s4{ color:var(--amb); }
.fc-stars.is-s3{ color:var(--org); }
.fc-stars.is-s2{ color:#ff8a4d; }
.fc-stars.is-s1{ color:var(--red); }
/* 見通し×オススメ度の対応表 */
.fc-legend{ margin:.9rem 0 0; border-top:1px dashed var(--panel-line); }
.fc-legend > summary{ padding:.6rem .2rem; cursor:pointer; font-family:var(--mono); font-size:.78rem; color:var(--amb); }
.fc-legend > summary:hover{ color:#fff; }
.fc-legend-scroll{ overflow-x:auto; max-width:100%; }
.fc-legend-tbl{ border-collapse:collapse; width:100%; min-width:420px; }
.fc-legend-tbl th,.fc-legend-tbl td{ padding:.35rem .6rem; border-bottom:1px dashed rgba(255,122,0,.14); text-align:left; white-space:nowrap; }
.fc-legend-tbl th{ font-family:var(--mono); font-size:.74rem; color:var(--muted); font-weight:700; }
.fc-legend-tbl td .fc-stars{ margin-left:0; }
/* 管理：AI相場予想の確認 */
.aif-dist{ display:flex; flex-wrap:wrap; gap:.5rem .9rem; align-items:center; margin:.6rem 0 0;
  padding:.5rem .7rem; border:1px solid var(--panel-line); border-radius:3px; background:rgba(255,255,255,.03); font-size:.8rem; }
.aif-dist-lbl{ font-family:var(--mono); font-size:.74rem; color:var(--muted); }
.aif-dist-item b{ font-weight:700; }
.aif-scroll{ overflow-x:auto; max-width:100%; }
.aif-tbl{ border-collapse:collapse; width:100%; min-width:760px; }
.aif-tbl th,.aif-tbl td{ padding:.45rem .6rem; border-bottom:1px dashed rgba(255,122,0,.14); text-align:left; vertical-align:top; }
.aif-tbl th{ font-family:var(--mono); font-size:.72rem; color:var(--muted); font-weight:700; white-space:nowrap; }
.aif-tbl td{ font-size:.82rem; }
.aif-tbl td.mono small{ display:block; color:var(--muted); font-family:var(--mono); font-size:.7rem; }
.aif-reason{ color:#c9d3de; line-height:1.6; min-width:260px; }
.aif-form{ display:flex; gap:.35rem; align-items:center; white-space:nowrap; }
.aif-form select{ padding:.25rem .4rem; }
.eacfg-row.is-ai{ border-top:1px dashed rgba(255,122,0,.25); padding-top:.55rem; margin-top:.35rem; }
.eacfg-row.is-ai label small{ color:var(--muted); font-weight:400; }
.eacfg-ai-note{ margin:.3rem 0 .6rem; font-size:.74rem; line-height:1.6; color:var(--muted);
  border-left:2px solid rgba(255,122,0,.45); padding:.3rem .6rem; background:rgba(255,255,255,.03); }
.eacfg-ai-note b{ color:#ffb84d; }
.fc-legend-list{ list-style:none; margin:.5rem 0 0; padding:0; display:grid; gap:.35rem; font-size:.82rem; }
.fc-legend-list li{ display:flex; align-items:center; gap:.6rem; color:#c9d3de; }
.fc-legend-list .fc-stars{ flex:0 0 auto; letter-spacing:.08em; }
.fc-legend-note{ margin:.5rem 0 0; color:var(--muted); font-size:.7rem; }
/* AI相場予想：過去分はポップアップで（インラインで開くと3カラムの高さが不揃いになるため） */
.fc-more-btn{ display:block; width:100%; margin-top:auto; cursor:pointer; text-align:center;
  border:0; border-top:2px dashed var(--panel-line); background:rgba(255,122,0,.06);
  padding:.6rem .85rem; font-family:var(--mono); font-size:.86rem; font-weight:700; color:var(--amb);
  transition:background .12s, color .12s; }
.fc-more-btn::before{ content:"🕘 "; }
.fc-more-btn:hover{ background:rgba(255,122,0,.16); color:#fff; }
/* モーダル内の予想リストは先頭強調を無効化（全件同列に見せる） */
#forecastModal .fc-item:first-child{ background:transparent; }
/* AI相場予想：過去分（最新5日分の履歴） */
.fc-history{ margin:0 .9rem .6rem; border-top:1px dashed var(--panel-line); }
.fc-history > summary{ padding:.6rem .2rem; font-size:.78rem; color:var(--amb); }
.fc-history .fc-grid{ padding:.5rem 0 .2rem; }
.fc-day + .fc-day{ border-top:1px dashed rgba(255,122,0,.14); }
.fc-day-date{ font-family:var(--mono); font-size:.74rem; color:var(--muted); margin:.5rem 0 0 .1rem; }

/* チャートグリッド */
/* minmax(0,1fr) + min-width:0 でグリッド子の「最小幅=中身」バグを抑え、iframeのはみ出しを防ぐ */
.chart-grid{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem; }
.chart-card{ min-width:0; overflow:hidden; border:1px solid var(--panel-line); background:rgba(0,0,0,.35); padding:.6rem; }
.chart-head{ display:flex; align-items:baseline; gap:.6em; padding:.2rem .3rem .5rem; }
.chart-label{ font-family:var(--mincho); font-weight:700; color:#fff; font-size:1.05rem; }
.chart-sub{ color:var(--blu); font-size:.74rem; letter-spacing:.12em; }

/* 時間足タブ（M1/M5/M15/H1/D1/W1） */
.chart-tf{ display:flex; flex-wrap:wrap; gap:.3rem; padding:0 .3rem .55rem; }
.chart-tf-btn{
  font-family:var(--mono); font-size:.68rem; letter-spacing:.08em; line-height:1;
  color:var(--muted); background:rgba(0,0,0,.35);
  border:1px solid var(--panel-line); padding:.34em .62em; cursor:pointer;
  text-shadow:none; transition:color .12s, background .12s, border-color .12s;
}
.chart-tf-btn:hover{ color:var(--fg); border-color:var(--grn); }
.chart-tf-btn.is-active{ color:#000; background:var(--amb); border-color:var(--amb); font-weight:bold; }

/* チャート本体：高さはチャート実寸(js側height)に追従。横だけ枠内に収める */
.chart-body{ width:100%; min-height:400px; }
.chart-body .tradingview-widget-container__widget{ width:100%; max-width:100%; }
/* TradingViewが生成するiframeは横のみ枠内に強制（縦は実寸のまま＝見切れ防止） */
.chart-body iframe{ display:block; width:100% !important; max-width:100% !important; }
@media (max-width:760px){
  .chart-grid{ grid-template-columns:1fr; }
}

/* 搭乗要項（運用情報テーブル＋FAQ / OJIPON移植） */
/* 搭乗要項：スペックカード（旧 .info-grid/.kv テーブルの置き換え） */
.brief-grid{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:.6rem; }
.brief-item{ border:1px solid var(--panel-line); border-left:2px solid var(--org);
  background:rgba(0,0,0,.3); padding:.7rem .85rem; }
.brief-k{ font-family:var(--mono); font-size:.68rem; letter-spacing:.08em; color:var(--org);
  margin-bottom:.4rem; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.brief-v{ font-size:.82rem; line-height:1.75; color:var(--fg); }
@media (max-width:1100px){ .brief-grid{ grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:560px){ .brief-grid{ grid-template-columns:1fr; } }
/* よくある質問：回答常時表示のQ&Aカード2列 */
.faq-grid{ display:grid; grid-template-columns:1fr 1fr; gap:.6rem; }
.faq-item{ border:1px solid var(--panel-line); background:rgba(0,0,0,.3); padding:.8rem .95rem; }
.faq-q{ font-size:.85rem; font-weight:700; color:var(--fg); margin:0 0 .45rem;
  padding-bottom:.45rem; border-bottom:1px dashed var(--panel-line); }
.faq-q::before{ content:"▸"; color:var(--org); margin-right:.5em; }
.faq-a{ font-size:.78rem; color:var(--muted); line-height:1.95; }
@media (max-width:820px){ .faq-grid{ grid-template-columns:1fr; } }
details{ border:1px solid var(--panel-line); background:rgba(0,0,0,.3); margin-bottom:.5rem; }
summary{ cursor:pointer; padding:.6rem .9rem; font-size:.85rem; font-weight:700; list-style:none;
  color:var(--fg); position:relative; }
summary::-webkit-details-marker{ display:none; }
summary::before{ content:"▸"; color:var(--org); margin-right:.5em; }
details[open] summary::before{ content:"▾"; }
details .a{ padding:0 .9rem .8rem; font-size:.78rem; color:var(--muted); line-height:1.95; }

/* =========================================================
   計器・警告演出（段階警告 / HUD）
   ========================================================= */
.txt-org{ color:var(--org); }
.txt-red{ color:var(--red); }
.txt-blu{ color:var(--blu); }

/* ② 常設ステータスストリップ */
.hud-strip{
  display:flex; flex-wrap:wrap; gap:.4rem 1.2rem; align-items:center;
  padding:.5rem .8rem; margin:0 0 1rem;
  border:1px solid var(--panel-line); background:rgba(0,0,0,.35);
  font-size:.72rem; letter-spacing:.1em; color:var(--muted);
}
.hud-item{ display:inline-flex; align-items:center; gap:.4em; }
.hud-item b{ color:var(--fg); font-variant-numeric:tabular-nums; letter-spacing:.06em; }
.hud-en{ color:var(--muted); font-size:.9em; }
.hud-clock b{ color:var(--org); font-size:1.05em; }


/* =========================================================
   Phase 2: ブートログ演出（起動 → ダッシュボード移行時）
   ========================================================= */
.boot-log{
  position:fixed; inset:0; z-index:300; display:none;
  align-items:center; justify-content:center;   /* 画面の縦横中央にログを配置 */
  background:#000; color:var(--grn); font-family:var(--mono); overflow:hidden;
}
.boot-log.is-on{ display:flex; animation:decode .5s ease-out both; }
.boot-log-inner{ width:100%; max-width:720px; padding:0 1.4rem; text-align:center; }
.bl-head{
  color:var(--amb); letter-spacing:.28em; font-size:.8rem;
  border-bottom:1px solid var(--panel-line); padding-bottom:.6rem; margin-bottom:1rem;
}
.bl-body .bl-line{
  font-size:.86rem; line-height:2; letter-spacing:.06em; white-space:pre-wrap;
  text-shadow:0 0 6px currentColor; animation:bl-in .18s ease-out both;
}
@keyframes bl-in{ from{ opacity:0; transform:translateY(4px) } to{ opacity:1; transform:none } }
.bl-cursor{
  display:inline-block; color:var(--grn); font-size:.9rem; margin-top:.3rem;
  animation:bl-blink 1s steps(2,end) infinite;
}
@keyframes bl-blink{ 50%{ opacity:0 } }
@media (max-width:520px){
  .bl-body .bl-line{ font-size:.74rem; line-height:1.9; }
}

/* ---- フリーズ演出（溜め → 一撃）---- */
/* 溜め：カーソル停止＋ログを拡大＆発光、赤ヴィネットがせり上がる */
.boot-log.is-frozen .bl-cursor{ animation:none; opacity:1; }
.boot-log.is-frozen .boot-log-inner{ animation:bl-charge .7s ease-in both; }
@keyframes bl-charge{
  0%{   transform:scale(1);    filter:none; }
  100%{ transform:scale(1.06); filter:brightness(1.5) saturate(1.3); }
}
.boot-log.is-frozen::after{
  content:""; position:absolute; inset:0; pointer-events:none; z-index:3;
  animation:bl-vig .7s ease-in both;
}
@keyframes bl-vig{
  from{ box-shadow:inset 0 0 200px 40px rgba(255,36,36,0); }
  to{   box-shadow:inset 0 0 220px 70px rgba(255,36,36,.55); }
}

/* 一撃：全画面フラッシュ */
.bl-flash{ position:absolute; inset:0; background:#fff; opacity:0; pointer-events:none; z-index:1; }
.boot-log.is-burst .bl-flash{ animation:bl-flash .6s ease-out both; }
@keyframes bl-flash{ 0%{ opacity:0 } 6%{ opacity:1 } 100%{ opacity:0 } }

/* 一撃：巨大文字「準備完了」リビール */
.bl-reveal{
  position:absolute; inset:0; z-index:2; pointer-events:none;
  display:flex; flex-direction:column; gap:.5rem;
  align-items:center; justify-content:center; text-align:center; opacity:0;
}
.boot-log.is-burst .bl-reveal{ animation:bl-reveal .6s .04s ease-out both; }
@keyframes bl-reveal{
  0%{   opacity:0; transform:scale(1.3); filter:blur(6px); }
  40%{  opacity:1; filter:blur(0); }
  100%{ opacity:1; transform:scale(1); }
}
.bl-reveal-jp{
  font-family:var(--mincho); font-weight:800; color:#fff;
  font-size:clamp(2.6rem,12vw,6rem); letter-spacing:.08em; transform:scaleX(.9);
  text-shadow:0 0 34px rgba(255,139,224,.85), 0 0 10px #fff;
}
.bl-reveal-en{ color:var(--amb); letter-spacing:.34em; font-size:.9rem; }
/* 一撃中は下のログを薄く */
.boot-log.is-burst .boot-log-inner{ opacity:.12; }

/* 画面全体シェイク */
.is-shake{ animation:eva-shake .6s cubic-bezier(.36,.07,.19,.97) both; }
@keyframes eva-shake{
  10%,90%{ transform:translate(-2px,1px); }
  20%,80%{ transform:translate(4px,-2px); }
  30%,50%,70%{ transform:translate(-7px,3px); }
  40%,60%{ transform:translate(7px,-3px); }
}

/* 一撃のあと完全ブラックアウト（この黒のまま司令室へ遷移）*/
.bl-blackout{ position:absolute; inset:0; background:#000; opacity:0; pointer-events:none; z-index:4; }
.boot-log.is-blackout .bl-blackout{ animation:bl-black .48s ease-in both; }
@keyframes bl-black{ from{ opacity:0 } to{ opacity:1 } }

/* =========================================================
   司令室（ダッシュボード）入場ベール：黒を約1秒保持 → フェードイン
   ========================================================= */
.enter-veil{
  position:fixed; inset:0; z-index:400; background:#000; pointer-events:none;
  animation:enter-veil 1.9s ease-out both;
}
@keyframes enter-veil{ 0%{ opacity:1 } 52%{ opacity:1 } 100%{ opacity:0 } }
@media (prefers-reduced-motion:reduce){
  .enter-veil{ display:none; }   /* モーション抑制時はフェード無しで即表示 */
}

/* =========================================================
   効果音 ON/OFF トグル（全ページ右下・固定）
   ========================================================= */
.eva-sfx-toggle{
  position:fixed; right:12px; bottom:10px; z-index:150;
  display:inline-flex; align-items:center; gap:.35em;
  padding:.38em .7em; cursor:pointer;
  font-family:var(--mono); font-size:.68rem; letter-spacing:.16em; line-height:1;
  color:var(--grn); background:rgba(0,0,0,.82);
  border:1px solid var(--panel-line); text-shadow:none;
  transition:background .15s, color .15s, border-color .15s;
}
.eva-sfx-toggle:hover{ color:#000; background:var(--grn); border-color:var(--grn); }
.eva-sfx-toggle.is-muted{ color:var(--muted); }
.eva-sfx-toggle.is-muted:hover{ color:#000; background:var(--muted); border-color:var(--muted); }
.eva-sfx-toggle span{ letter-spacing:.12em; }
@media (max-width:520px){
  .eva-sfx-toggle{ padding:.4em .5em; }
  .eva-sfx-toggle span{ display:none; }   /* スマホはアイコンのみ */
}

/* =========================================================
   カスタムカーソル：ターゲットレティクル（紫）／OJIPONから移植
   ========================================================= */
@keyframes spin{ to{ transform:rotate(360deg); } }

/* マウス環境: CSSネイティブの画像カーソル（旧JSカーソルを廃止＝ほぼ無負荷）。タッチ端末は素のまま */
@media (pointer:fine){
  /* 通常＝紫のターゲットレティクル（32x32・ホットスポット中央16,16） */
  body{ cursor:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 32 32'><circle cx='16' cy='16' r='11.5' fill='none' stroke='%23ff7a00' stroke-width='1.3' stroke-dasharray='10 5 3 5'/><path d='M16 3v5M16 24v5M3 16h5M24 16h5' stroke='%23ff7a00' stroke-width='1.2'/><circle cx='16' cy='16' r='1.7' fill='%23ff7a00'/></svg>") 16 16, auto; }
  /* リンク/ボタン等の操作要素＝マゼンタのLOCK ON配色 */
  a[href], button, summary, label, select, [role="button"],
  .engage, .chart-tf-btn, .eva-sfx-toggle, .hdr-pilot{
    cursor:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 32 32'><circle cx='16' cy='16' r='11.5' fill='none' stroke='%23ffb300' stroke-width='1.5' stroke-dasharray='10 5 3 5'/><path d='M16 3v5M16 24v5M3 16h5M24 16h5' stroke='%23ffb300' stroke-width='1.4'/><circle cx='16' cy='16' r='2' fill='%23ffb300'/></svg>") 16 16, pointer;
  }
  /* 管理コンソールは通常カーソルに戻す */
  body.admin-mode{ cursor:auto; }
  body.admin-mode a[href], body.admin-mode button, body.admin-mode summary,
  body.admin-mode label, body.admin-mode [role="button"]{ cursor:pointer; }
  body.admin-mode input, body.admin-mode textarea, body.admin-mode select{ cursor:auto; }
}

/* ============================================================
   認証フォーム（ログイン / 会員登録 / パスワード再設定）
   ============================================================ */
.auth-wrap{
  min-height:60vh;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:clamp(1.2rem,4vw,3rem) 1rem;
}
.auth-card{
  width:100%;
  max-width:420px;
  background:linear-gradient(180deg,rgba(10,14,20,.92),rgba(5,8,11,.96));
  border:1px solid var(--panel-line);
  border-radius:4px;
  box-shadow:0 0 0 1px rgba(0,0,0,.6), 0 0 40px rgba(255,122,0,.10);
  padding:clamp(1.4rem,4vw,2.2rem);
  position:relative;
}
.auth-card::before{
  content:"";
  position:absolute; inset:0;
  border-top:2px solid var(--pur);
  opacity:.55; pointer-events:none;
}
.auth-code{
  font-family:var(--mono);
  font-size:.66rem;
  letter-spacing:.14em;
  color:var(--muted);
  margin-bottom:.5rem;
}
.auth-title{
  font-family:var(--mincho);
  font-size:clamp(1.5rem,5vw,1.9rem);
  color:var(--fg);
  margin:0 0 1.1rem;
  letter-spacing:.06em;
}
.auth-lead{
  font-size:.82rem;
  color:var(--muted);
  line-height:1.7;
  margin:0 0 1rem;
}
.auth-form{ display:flex; flex-direction:column; gap:.9rem; }
/* フォームが連続するとき（管理のステータス/有効期限/購入トグル等）は間隔を空ける */
.auth-form + .auth-form{ margin-top:1.4rem; }
/* 単一入力の管理フォームは「入力＋ボタン」を横並びに（.auth-form-inline を付けた時のみ） */
.auth-form-inline{ flex-direction:row; flex-wrap:wrap; align-items:flex-end; gap:.8rem; }
.auth-form-inline .auth-field{ flex:1 1 220px; }
.auth-form-inline .auth-check{ flex:1 1 100%; margin:0; }
.auth-form-inline .auth-btn{ width:auto; margin-top:0; flex:0 0 auto; }
.auth-field{ display:flex; flex-direction:column; gap:.35rem; }
.auth-field > span{
  font-family:var(--mono);
  font-size:.72rem;
  letter-spacing:.08em;
  color:var(--grn);
}
.auth-field input,
.auth-field textarea,
.auth-field select{
  width:100%;
  background:#03060a;
  border:1px solid var(--panel-line);
  border-radius:3px;
  color:var(--fg);
  font-family:var(--mono);
  font-size:.95rem;
  padding:.7rem .8rem;
  transition:border-color .15s, box-shadow .15s;
}
.auth-field textarea{ resize:vertical; min-height:2.6rem; line-height:1.6; }
.auth-field input:focus,
.auth-field textarea:focus,
.auth-field select:focus{
  outline:none;
  border-color:var(--pur);
  box-shadow:0 0 0 2px rgba(255,122,0,.25);
}
.auth-btn{
  margin-top:.4rem;
  width:100%;
  background:linear-gradient(180deg,rgba(255,122,0,.28),rgba(255,122,0,.14));
  border:1px solid var(--pur);
  border-radius:3px;
  color:var(--fg);
  font-family:var(--mono);
  font-size:.95rem;
  letter-spacing:.12em;
  padding:.8rem 1rem;
  cursor:pointer;
  transition:background .15s, box-shadow .15s, transform .06s;
}
.auth-btn:hover{ background:linear-gradient(180deg,rgba(255,122,0,.42),rgba(255,122,0,.2)); box-shadow:0 0 22px rgba(255,122,0,.3); }
.auth-btn:active{ transform:translateY(1px); }

/* パスワード表示トグル（目アイコン） */
.pw-wrap{ position:relative; display:block; }
.pw-wrap input{ padding-right:2.9rem; }
.pw-toggle{
  position:absolute; top:0; right:0; height:100%; width:2.7rem;
  display:flex; align-items:center; justify-content:center;
  background:transparent; border:0; padding:0; cursor:pointer;
  color:var(--muted); line-height:0;
  transition:color .15s;
}
.pw-toggle:hover{ color:var(--pur); }
.pw-toggle:focus-visible{ outline:none; color:var(--pur); }
.pw-toggle svg{ display:block; }
.auth-links{
  display:flex;
  flex-wrap:wrap;
  gap:.4rem 1.1rem;
  margin-top:1.2rem;
  padding-top:1rem;
  border-top:1px solid rgba(255,122,0,.16);
}
.auth-links a{
  font-family:var(--mono);
  font-size:.76rem;
  color:var(--blu);
  text-decoration:none;
  letter-spacing:.04em;
}
.auth-links a:hover{ color:var(--pur); text-decoration:underline; }
.auth-consent{
  margin:.8rem 0 0;
  font-size:.72rem;
  line-height:1.7;
  color:var(--muted);
  text-align:center;
}
.auth-consent a{ color:var(--blu); }
.auth-consent a:hover{ color:var(--pur); }
.auth-msg{
  font-size:.82rem;
  line-height:1.7;
  padding:.7rem .85rem;
  border-radius:3px;
  margin:0 0 1rem;
  border:1px solid;
}
.auth-msg.is-error{ color:#ffd6d6; background:rgba(255,36,36,.10); border-color:rgba(255,36,36,.5); }
.auth-msg.is-info{  color:#ffe3c2; background:rgba(255,122,0,.10); border-color:rgba(255,122,0,.5); }
.auth-msg.is-warn{  color:#ffe6f8; background:rgba(255,139,224,.10); border-color:rgba(255,139,224,.5); }
.auth-msg a{ color:var(--blu); }

/* 管理画面（__DASHBOARD__ / ライセンス一覧） */
.admin-stack{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:1.2rem;
  width:100%;
  max-width:520px;
}
.admin-stack > .auth-card{ width:100%; }
.auth-lead code{ font-family:var(--mono); color:var(--grn); font-size:.85em; }
.lic-list{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:.5rem; }
.lic-list a{
  display:flex; align-items:center; gap:.8rem;
  padding:.7rem .85rem;
  background:#03060a;
  border:1px solid var(--panel-line);
  border-radius:3px;
  text-decoration:none;
  transition:border-color .15s, box-shadow .15s;
}
.lic-list a:hover{ border-color:var(--pur); box-shadow:0 0 16px rgba(255,122,0,.18); }
.lic-acc{ font-family:var(--mono); font-size:.95rem; color:var(--fg); }
.lic-name{ flex:1; font-size:.82rem; color:var(--muted); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.lic-exp{ font-family:var(--mono); font-size:.72rem; color:var(--muted); white-space:nowrap; }
.lic-badge{ font-family:var(--mono); font-size:.7rem; padding:.15rem .55rem; border-radius:2px; border:1px solid; white-space:nowrap; }
.lic-badge.is-on{ color:var(--grn); border-color:rgba(0,255,157,.5); }
.lic-badge.is-off{ color:var(--red); border-color:rgba(255,36,36,.5); }
.auth-btn.admin-danger{ background:linear-gradient(180deg,rgba(255,36,36,.22),rgba(255,36,36,.08)); border-color:var(--red); }
.auth-btn.admin-danger:hover{ background:linear-gradient(180deg,rgba(255,36,36,.38),rgba(255,36,36,.16)); box-shadow:0 0 22px rgba(255,36,36,.3); }

/* 販売モデル：管理テーブル / 購入数 / 利用登録 / 成績 */
.admin-wide{ max-width:1000px; }
.admin-table-wrap{ overflow-x:auto; }
.admin-table{ width:100%; border-collapse:collapse; font-size:.82rem; }
.admin-table th{ text-align:left; font-family:var(--mono); font-size:.7rem; letter-spacing:.05em; color:var(--grn); border-bottom:1px solid var(--panel-line); padding:.5rem; white-space:nowrap; }
.admin-table td{ padding:.55rem .5rem; border-bottom:1px solid rgba(255,122,0,.10); vertical-align:middle; }
.admin-table td small{ display:block; color:var(--muted); font-size:.68rem; }
.admin-table a{ color:var(--blu); text-decoration:none; }
.admin-table a:hover{ color:var(--pur); }
.mono{ font-family:var(--mono); }

.ent-row{ flex-direction:row !important; align-items:center; justify-content:space-between; gap:.6rem; }
.ent-row > span:first-child{ flex:1; color:var(--fg); font-family:inherit; letter-spacing:0; }
.ent-row > span:first-child small{ color:var(--muted); }
.ent-input{ display:flex; align-items:center; gap:.5rem; }
.ent-input input{ width:5rem; }
.ent-input small{ color:var(--muted); font-size:.68rem; white-space:nowrap; }

.act-row{ display:flex !important; align-items:center; gap:.7rem; padding:.6rem .7rem; background:#03060a; border:1px solid var(--panel-line); border-radius:3px; }
.act-ops{ margin-left:auto; display:flex; gap:.4rem; align-items:center; }
.act-ops form{ margin:0; }
.mini-btn{ font-family:var(--mono); font-size:.7rem; padding:.32rem .6rem; border:1px solid var(--panel-line); border-radius:2px; background:transparent; color:var(--blu); cursor:pointer; text-decoration:none; display:inline-block; line-height:1.2; }
.mini-btn:hover{ border-color:var(--pur); color:var(--pur); }
.mini-btn.danger{ color:var(--red); border-color:rgba(255,36,36,.4); }
.mini-btn.danger:hover{ border-color:var(--red); color:#ffb3b3; }
/* 管理：ユーザー完全削除の危険ゾーン */
.auth-card.danger-zone{ border:1px solid rgba(255,36,36,.5); background:rgba(255,36,36,.04); }
.auth-card.danger-zone .auth-code{ color:var(--red); }

.hist-nav{ display:flex; align-items:center; justify-content:space-between; gap:.6rem; margin:.4rem 0 1rem; font-family:var(--mono); font-size:.82rem; color:var(--fg); }
.hist-nav a{ color:var(--blu); text-decoration:none; }
.hist-nav a:hover{ color:var(--pur); }
/* ============================================================
   損益報告（P/L REPORT）＋ 報告完了の演出
   ============================================================ */
.report-body{ padding:0; text-align:center; }
.report-lead{ font-size:.85rem; color:var(--fg); line-height:1.8; margin-bottom:.8rem; }
.report-form{ display:flex; align-items:flex-end; justify-content:center; gap:1.1rem; flex-wrap:wrap; }
.report-field{ display:flex; flex-direction:column; align-items:center; gap:.3rem; }
.report-field > span{ font-family:var(--mono); font-size:.72rem; letter-spacing:.06em; color:var(--muted); }
.report-amount{ font-family:var(--mono); font-size:1.35rem; font-weight:700; text-align:center;
  width:13rem; max-width:60vw; padding:.55rem .8rem; border-radius:3px;
  background:rgba(0,0,0,.4); border:1px solid var(--panel-line); }
.report-amount.p{ color:var(--grn); }
.report-amount.m{ color:var(--red); }
.report-action{ display:flex; align-items:center; gap:.6rem; }
.report-btn{ font-family:var(--mono); font-size:.9rem; letter-spacing:.08em; font-weight:700; cursor:pointer;
  color:#0a0a12; background:var(--org); border:1px solid var(--org); border-radius:3px;
  padding:.7rem 1.5rem; transition:.15s; }
.report-btn:hover{ filter:brightness(1.12); box-shadow:0 0 18px rgba(255,140,0,.5); }
.report-btn:disabled{ opacity:.55; cursor:default; box-shadow:none; }
.report-done-badge{ font-family:var(--mono); font-size:.85rem; color:var(--grn);
  border:1px solid rgba(0,255,157,.5); border-radius:3px; padding:.55rem 1.1rem; white-space:nowrap; }

/* --- 報告完了のフルスクリーン演出 --- */
.rfx{ position:fixed; inset:0; z-index:11000; pointer-events:none; overflow:hidden; opacity:1; transition:opacity .55s ease; }
.rfx.rfx-out{ opacity:0; }
.rfx::before{ content:""; position:absolute; inset:0; background:rgba(3,4,8,.72);
  background-image:repeating-linear-gradient(0deg, transparent 0 3px, rgba(0,0,0,.25) 3px 4px); }
.rfx-flash{ position:absolute; inset:0; background:#fff; opacity:0; animation:rfxFlash .55s ease-out; }
.rfx-center{ position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center;
  text-align:center; gap:.35rem; padding:1rem; }
.rfx-code{ font-family:var(--mono); font-size:.78rem; letter-spacing:.3em; color:var(--org); opacity:0; animation:rfxIn .5s .15s forwards; }
.rfx-title{ font-family:var(--mincho); font-weight:900; font-size:clamp(2.4rem,10vw,6rem); color:#fff; letter-spacing:.14em;
  text-shadow:0 0 24px var(--pur), 0 0 55px var(--red); opacity:0; transform:scale(1.4);
  animation:rfxTitle .65s .1s cubic-bezier(.2,.8,.2,1) forwards; }
.rfx-sub{ font-family:var(--mono); font-size:1rem; letter-spacing:.42em; color:var(--amb); opacity:0; animation:rfxIn .5s .35s forwards; }
.rfx-amt{ margin-top:.7rem; font-family:var(--mono); font-weight:700; font-size:clamp(1.1rem,4.5vw,1.9rem); opacity:0; animation:rfxIn .5s .5s forwards; }
.rfx-amt.p{ color:var(--grn); }
.rfx-amt.m{ color:var(--red); }
@keyframes rfxFlash{ 0%{ opacity:.92; } 100%{ opacity:0; } }
@keyframes rfxTitle{ 0%{ opacity:0; transform:scale(1.4); } 60%{ opacity:1; transform:scale(.96); } 100%{ opacity:1; transform:scale(1); } }
@keyframes rfxIn{ to{ opacity:1; } }
.rfx-shake{ animation:rfxShake .5s ease-in-out; }
@keyframes rfxShake{ 0%,100%{ transform:translate(0,0); } 15%{ transform:translate(-7px,4px); } 30%{ transform:translate(6px,-5px); }
  45%{ transform:translate(-5px,-4px); } 60%{ transform:translate(5px,4px); } 75%{ transform:translate(-3px,3px); } 90%{ transform:translate(3px,-2px); } }

/* 損益カレンダーのタブ切替（全体／EAごと） */
/* セクション内の余白はパネル(.panel)側で統一。中身ラッパーは横paddingを持たない（指標/チャートに揃える） */
.cal-tabs{ display:flex; flex-wrap:wrap; gap:.5rem; padding:0; margin-bottom:.7rem; }
.cal-tab{ font-family:var(--mono); font-size:.98rem; font-weight:700; cursor:pointer; color:var(--fg);
  background:transparent; border:2px solid var(--panel-line); border-radius:4px; padding:.5rem 1.1rem; letter-spacing:.02em; transition:.12s; }
.cal-tab:hover{ color:#fff; border-color:var(--grn); }
.cal-tab.is-active{ color:#0a0a12; background:var(--grn); border-color:var(--grn); font-weight:800; }
.cal-wrap{ padding:0; }
.cal-view{ display:none; }
.cal-view.is-active{ display:block; }
#dashCalBody.is-loading{ opacity:.5; pointer-events:none; }
.hist-cal{ overflow-x:auto; }
.hist-cal table{ width:100%; border-collapse:collapse; table-layout:fixed; min-width:340px; }
.hist-cal th{ font-family:var(--mono); font-size:.7rem; color:var(--grn); padding:.3rem 0; border-bottom:1px solid var(--panel-line); }
.hist-cal th.sun{ color:var(--red); }
.hist-cal th.sat{ color:var(--blu); }
.hist-cal td{ height:3rem; vertical-align:top; border:1px solid rgba(255,122,0,.10); padding:.2rem .3rem; }
.hist-cal td.empty{ background:rgba(255,255,255,.02); }
.hist-cal td i{ font-style:normal; color:var(--muted); font-family:var(--mono); font-size:.7rem; }
.hist-cal td.sun i{ color:var(--red); }
.hist-cal td.sat i{ color:var(--blu); }
.hist-cal td span{ display:block; margin-top:.15rem; font-family:var(--mono); font-size:.86rem; font-weight:700; text-align:right; }
/* 土日はエントリー想定なし：列幅を狭め＋グレーアウトで控えめに */
.hist-cal th.sun, .hist-cal th.sat,
.hist-cal td.sun, .hist-cal td.sat{ width:8%; }
.hist-cal td.sun, .hist-cal td.sat{ background:rgba(150,150,170,.07); }
.hist-cal td.sun i, .hist-cal td.sat i{ color:var(--muted); opacity:.65; }
/* プラスだった日／マイナスだった日でセル自体を色分け（利益=紫系／損失=赤系。OJIPON参考） */
.hist-cal td.is-plus{ background:rgba(255,122,0,.18); }
.hist-cal td.is-minus{ background:rgba(255,36,36,.16); }
.hist-total{ margin:.9rem 0 0; text-align:right; font-family:var(--mono); font-size:1.1rem; font-weight:700; }
.hist-total strong{ font-size:1.28rem; font-weight:800; margin:0 .15rem; }
.hist-cal .p, .hist-total .p, .mypage-info .p{ color:var(--grn); }
.hist-cal .m, .hist-total .m, .mypage-info .m{ color:var(--red); }

/* ===== スマホ：パチスロ収支カレンダー風（金額は省略せずフル表示・横スクロール無し） =====
   参考: Myパチ収支表 / pRecord 等（月グリッドに日別損益を色分け・黒字/赤字が一目で分かる）。
   幅を稼ぐため、この画面幅ではページ/パネル/カレンダーの左右余白を絞る（サイト全体の調整）。 */
@media (max-width:600px){
  .eva-main{ padding-left:.4rem; padding-right:.4rem; }        /* ページ左右余白を縮小 */
  body.dash .eva-main{ padding-left:.4rem; padding-right:.4rem; }
  .panel{ padding-left:.5rem; padding-right:.5rem; }           /* パネル左右余白を縮小 */
  /* EA切替タブ：スマホは小さくして横1列に収める（折返し無し） */
  .cal-tabs{ flex-wrap:nowrap; gap:.35rem; justify-content:center; margin-bottom:.5rem; }
  .cal-tab{ font-size:.78rem; font-weight:700; padding:.34rem .55rem; border-width:1px; white-space:nowrap; flex:0 1 auto; min-width:0; }
  .cal-wrap{ padding:0; }
  .hist-cal{ overflow-x:visible; }                             /* スクロール不要＝幅内に収める */
  .hist-cal table{ min-width:0; }                              /* 340px下限を解除＝親幅にフィット */
  /* 7列を均等幅に（土日も同じ幅＝スロアプリ風。従来の8%狭めを解除） */
  .hist-cal th.sun, .hist-cal th.sat,
  .hist-cal td.sun, .hist-cal td.sat{ width:auto; }
  .hist-cal th{ font-size:.7rem; padding:.28rem 0; }
  .hist-cal td{ position:relative; height:auto; min-height:3.1rem; padding:1.15rem .05rem .12rem; text-align:center; }
  .hist-cal td i{ position:absolute; top:.12rem; left:.2rem; font-size:.68rem; line-height:1; }
  /* 日別損益：フル金額を中央にビシッと。ビューポート連動で自動フィット（9〜12px） */
  .hist-cal td span{ display:block; margin:0; text-align:center; white-space:nowrap;
    font-size:clamp(9px, 2.7vw, 12px); font-weight:700; letter-spacing:-.02em; }
  .hist-total{ text-align:center; }
}

/* ダッシュボードの「運用中EA」パネル */
.myea-empty{ padding:1rem; color:var(--muted); font-size:.85rem; }
.myea-empty a{ color:var(--blu); }
.myea-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr)); gap:.7rem; padding:.9rem; }
.myea-card{ display:block; padding:.8rem .9rem; background:#03060a; border:1px solid var(--panel-line); border-radius:3px; text-decoration:none; transition:border-color .15s, box-shadow .15s; }
.myea-card:hover{ border-color:var(--pur); box-shadow:0 0 18px rgba(255,122,0,.18); }
.myea-top{ display:flex; align-items:center; justify-content:space-between; gap:.5rem; }
.myea-top b{ color:var(--fg); font-family:var(--mincho); font-size:1rem; }
.myea-acc{ margin-top:.35rem; color:var(--muted); font-size:.82rem; }
.myea-pl{ margin-top:.4rem; font-family:var(--mono); font-size:.82rem; color:var(--fg); }
.myea-pl strong.p{ color:var(--grn); }
.myea-pl strong.m{ color:var(--red); }

/* 配備ユニット（OJIPON風カード：購入済みEA＋搭乗） */
.board-flash{ margin:.7rem .9rem 0; padding:.6rem .85rem; border-radius:3px; font-size:.82rem; border:1px solid; }
.board-flash.is-ok{ color:#ffe3c2; background:rgba(255,122,0,.10); border-color:rgba(255,122,0,.5); }
.board-flash.is-ng{ color:#ffd6d6; background:rgba(255,36,36,.10); border-color:rgba(255,36,36,.5); }
.board-flash.is-note{ color:#ffe0b0; background:rgba(255,140,0,.08); border-color:rgba(255,140,0,.45); }
.unit-list{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:.9rem; padding:0; align-items:stretch; }
@media (max-width:1000px){ .unit-list{ grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:640px){ .unit-list{ grid-template-columns:1fr; } }
.unit-card{ position:relative; background:#03060a; border:2px solid var(--panel-line); border-radius:4px; padding:1rem 1.1rem; }
.unit-card::before{ content:""; position:absolute; left:0; top:0; bottom:0; width:5px; background:var(--pur); opacity:.85; border-radius:4px 0 0 4px; }
.unit-head{ display:flex; align-items:center; justify-content:space-between; gap:.6rem; }
.unit-id{ display:flex; align-items:baseline; gap:.6rem; flex-wrap:wrap; }
.unit-no{ font-family:var(--mono); font-size:.75rem; font-weight:700; letter-spacing:.12em; color:var(--pur); }
.unit-name{ font-family:var(--mincho); font-weight:800; font-size:1.32rem; color:var(--fg); }
.unit-status{ font-family:var(--mono); font-size:.74rem; font-weight:700; padding:.24rem .66rem; border-radius:2px; border:2px solid; white-space:nowrap; }
.unit-status.is-on{ color:var(--grn); border-color:rgba(0,255,157,.5); }
.unit-status.is-wait{ color:var(--amb); border-color:rgba(255,139,224,.5); }
.unit-status.is-idle{ color:var(--muted); border-color:var(--panel-line); }
.unit-logic{ margin-top:.35rem; font-family:var(--mono); font-size:.85rem; font-weight:600; color:var(--amb); letter-spacing:.03em; line-height:1.65; }
.unit-stats{ display:grid; grid-template-columns:repeat(auto-fit,minmax(110px,1fr)); gap:.5rem; margin:.8rem 0; }
.unit-stats > div{ background:rgba(255,122,0,.06); border:2px solid rgba(255,122,0,.18); border-radius:3px; padding:.55rem .65rem; }
.unit-stats span{ display:block; font-family:var(--mono); font-size:.66rem; letter-spacing:.03em; color:var(--muted); margin-bottom:.2rem; }
.unit-stats b{ font-family:var(--mono); font-size:1.15rem; font-weight:700; color:var(--fg); }
/* 口座タイプ（HFM MT4 PREMIUM口座 等）は長いので通貨より小さめ＋折り返し可 */
.unit-stats b.unit-acct-type{ display:block; font-size:.78rem; line-height:1.45; letter-spacing:.02em; }
.unit-stats b.p{ color:var(--grn); }
.unit-stats b.m{ color:var(--red); }
.unit-desc{ margin:.2rem 0 .6rem; font-size:.8rem; color:var(--muted); line-height:1.7; }
.unit-license{ margin-top:.6rem; padding-top:.7rem; border-top:1px solid rgba(255,122,0,.16); }
.unit-slots{ font-family:var(--mono); font-size:.82rem; color:var(--fg); }
.unit-slots b{ color:var(--grn); }
.unit-accts{ list-style:none; margin:.6rem 0 0; padding:0; display:flex; flex-direction:column; gap:.45rem; }
.unit-accts li{ display:flex; align-items:center; gap:.6rem; flex-wrap:wrap; font-size:.82rem; }
.unit-accts .unit-pl{ font-family:var(--mono); font-size:.78rem; color:var(--muted); margin-left:auto; }
.unit-accts .unit-pl strong.p{ color:var(--grn); }
.unit-accts .unit-pl strong.m{ color:var(--red); }
/* 搭乗ボタン（押すと #boardModal ポップアップで口座番号を入力） */
.unit-board-btn{ cursor:pointer; font-family:var(--mono); font-size:.85rem; letter-spacing:.06em; color:var(--fg);
  background:linear-gradient(180deg,rgba(255,122,0,.28),rgba(255,122,0,.12)); border:0; border-radius:3px; padding:.55rem 1.1rem; }
.unit-board-btn:hover{ background:linear-gradient(180deg,rgba(255,122,0,.42),rgba(255,122,0,.2)); box-shadow:0 0 18px rgba(255,122,0,.25); }
.unit-board-full{ margin-top:.7rem; font-size:.78rem; color:var(--muted); }

/* 損益グラフ（自己完結SVG折れ線：累積損益） */
.pl-chart{ width:100%; height:auto; display:block; }
.pl-line{ stroke-width:1.6; vector-effect:non-scaling-stroke; }
.pl-line.p{ stroke:var(--grn); }
.pl-line.m{ stroke:var(--red); }
.pl-area{ opacity:.14; }
.pl-area.p{ fill:var(--grn); }
.pl-area.m{ fill:var(--red); }
.pl-zero{ stroke:rgba(255,122,0,.35); stroke-dasharray:3 3; stroke-width:1; }
.pl-ylab, .pl-xlab{ fill:var(--muted); font-family:var(--mono); font-size:10px; }
.pl-chart-empty{ padding:1rem; color:var(--muted); font-size:.82rem; text-align:center; }
.pl-chart-box{ margin:.2rem 0 1rem; padding:.6rem .4rem; background:rgba(255,122,0,.05); border:1px solid rgba(255,122,0,.14); border-radius:3px; }
.pl-chart-ttl{ font-family:var(--mono); font-size:.72rem; letter-spacing:.05em; color:var(--grn); margin:0 0 .3rem .4rem; }
.unit-spark{ margin-top:.35rem; border:1px solid var(--panel-line); background:#0a0a10; padding:6px; border-radius:3px; }
/* EA本体ダウンロードボタン（ライセンス登録済みのユニットに表示） */
.unit-dl{ display:block; margin:.55rem 0 .2rem; padding:.55rem .7rem; text-align:center;
  font-family:var(--mono); font-size:.82rem; letter-spacing:.06em; border-radius:3px;
  color:var(--grn); border:1px solid rgba(255,122,0,.5); background:rgba(255,122,0,.08); transition:.15s; }
.unit-dl:hover{ background:rgba(255,122,0,.2); color:#fff; }
/* 日足損益の棒グラフ */
.pl-bars{ width:100%; height:auto; display:block; }
.pl-bar.p{ fill:var(--grn); }
.pl-bar.m{ fill:var(--red); }
/* 配備ユニット：グラフ見出し（自分の成績／フォワード実績） */
.unit-graph{ margin-top:.5rem; }
.unit-graph-ttl{ font-family:var(--mono); font-size:.68rem; letter-spacing:.05em; color:var(--muted); margin:0 0 .15rem; }
.unit-graph-ttl.is-fwd{ color:var(--amb); }
.unit-graph-ttl.is-bt{ color:var(--blu); }
.unit-graph-empty{ font-size:.72rem; color:var(--muted); padding:.4rem 0; }
.unit-acct{ display:block !important; }
.unit-acct-row{ display:flex; align-items:center; gap:.6rem; flex-wrap:wrap; }

/* ============================================================
   管理コンソール（__DASHBOARD__）専用UI ─ 会員向けとは別デザイン
   会員=黒×紫の演出、管理=スレート×オレンジのフラットなコンソール
   ============================================================ */
body.admin-mode{
  background:#0a0c10;
  color:#e6e9ef;
  min-height:100vh;
}
.admin-mode .adm-header{
  position:sticky; top:0; z-index:20;
  display:flex; align-items:center; justify-content:space-between; gap:1rem;
  padding:.7rem clamp(.9rem,3vw,1.4rem);
  background:#0d1016;
  border-bottom:2px solid var(--org);
}
.adm-brand{
  display:inline-flex; align-items:center; gap:.4rem;
  font-family:var(--mono); letter-spacing:.14em;
  color:var(--org); font-size:.95rem; text-decoration:none;
}
.adm-brand small{ color:#7f8a9a; letter-spacing:.1em; }
.adm-mark{ color:var(--org); }
.adm-nav a{ font-family:var(--mono); font-size:.76rem; color:#9fb0c3; text-decoration:none; margin-left:1.1rem; }
.adm-nav a:hover{ color:var(--org); }
.adm-main{ padding:clamp(1.2rem,3vw,2rem) 1rem 3rem; }
.adm-footer{
  padding:1rem; text-align:center;
  color:#6b7686; font-family:var(--mono); font-size:.7rem; letter-spacing:.06em;
  border-top:1px solid rgba(255,140,0,.18);
}

/* 会員用コンポーネントを管理モードで再配色（上寄せ・オレンジ） */
.admin-mode .auth-wrap{ min-height:0; display:block; padding:0; }
.admin-mode .admin-stack{ margin:0 auto; }
.admin-mode .auth-card{
  background:linear-gradient(180deg,#12161d,#0e1116);
  border-color:rgba(255,140,0,.26);
  box-shadow:none;
  max-width:1000px;   /* 管理コンソールのカードは横幅を広く（420px→1000px相当） */
}
.admin-mode .auth-card::before{ border-top-color:var(--org); opacity:.7; }
.admin-mode .auth-code{ color:#d08a3c; }
.admin-mode .auth-title{ color:#fff; font-family:var(--mono); letter-spacing:.04em; font-size:clamp(1.3rem,4vw,1.6rem); }
.admin-mode .auth-lead{ color:#8b96a6; }
.admin-mode .auth-field > span{ color:#e0a86a; }
.admin-mode .auth-field input,
.admin-mode .auth-field textarea,
.admin-mode .auth-field select{ background:#080a0e; border-color:rgba(255,140,0,.22); }
.admin-mode .auth-field input:focus,
.admin-mode .auth-field textarea:focus,
.admin-mode .auth-field select:focus{ border-color:var(--org); box-shadow:0 0 0 2px rgba(255,140,0,.22); }
.admin-mode .auth-btn{
  background:linear-gradient(180deg,rgba(255,140,0,.28),rgba(255,140,0,.12));
  border-color:var(--org); color:#fff;
}
.admin-mode .auth-btn:hover{ background:linear-gradient(180deg,rgba(255,140,0,.44),rgba(255,140,0,.2)); box-shadow:0 0 22px rgba(255,140,0,.28); }
.admin-mode .auth-links{ border-top-color:rgba(255,140,0,.16); }
.admin-mode .auth-links a,
.admin-mode .admin-table a,
.admin-mode .mini-btn{ color:#e0a86a; }
.admin-mode .auth-links a:hover,
.admin-mode .admin-table a:hover,
.admin-mode .mini-btn:hover{ color:var(--org); border-color:var(--org); }
.admin-mode .admin-table th{ color:var(--org); border-bottom-color:rgba(255,140,0,.3); }
.admin-mode .admin-table td{ border-bottom-color:rgba(255,140,0,.10); }
.admin-mode .lic-list a,
.admin-mode .act-row,
.admin-mode .auth-field input,
.admin-mode .auth-field textarea{ background:#080a0e; }
.admin-mode .lic-list a:hover{ border-color:var(--org); box-shadow:0 0 16px rgba(255,140,0,.16); }
.admin-mode .mypage-info dt{ color:#e0a86a; }
.admin-mode .mypage-info{ border-bottom-color:rgba(255,140,0,.16); }
/* 稼働/停止バッジは意味を保持（緑=稼働 / 赤=停止） */
.admin-mode .lic-badge.is-on{ color:#7ee081; border-color:rgba(126,224,129,.5); }
.admin-mode .lic-badge.is-off{ color:#ff6b6b; border-color:rgba(255,107,107,.5); }

/* 管理：メニューのアクティブ強調 */
.adm-nav a.is-active{ color:var(--org); border-bottom:2px solid var(--org); padding-bottom:.15rem; }

/* 管理：検索フォーム */
.adm-search{ display:flex; gap:.5rem; align-items:center; flex-wrap:wrap; margin:.3rem 0 1.1rem; }
.adm-search input[type="search"]{
  flex:1; min-width:180px;
  background:#080a0e; border:1px solid rgba(255,140,0,.22); border-radius:3px;
  color:#e6e9ef; font-family:var(--mono); font-size:.9rem; padding:.6rem .8rem;
}
.adm-search input[type="search"]:focus{ outline:none; border-color:var(--org); box-shadow:0 0 0 2px rgba(255,140,0,.2); }
.adm-search button{
  font-family:var(--mono); font-size:.85rem; padding:.6rem 1.1rem;
  background:linear-gradient(180deg,rgba(255,140,0,.28),rgba(255,140,0,.12));
  border:1px solid var(--org); border-radius:3px; color:#fff; cursor:pointer;
}
.adm-search button:hover{ background:linear-gradient(180deg,rgba(255,140,0,.44),rgba(255,140,0,.2)); }
.adm-search-clear{ font-family:var(--mono); font-size:.78rem; color:#9fb0c3; text-decoration:none; }
.adm-search-clear:hover{ color:var(--org); }

/* 管理：ハブ（メニューカード） */
.adm-hub{ display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:1rem; margin-top:.4rem; }
.adm-hub-card{
  display:block; padding:1.4rem 1.2rem;
  background:linear-gradient(180deg,#12161d,#0e1116);
  border:1px solid rgba(255,140,0,.26); border-radius:4px;
  text-decoration:none; transition:border-color .15s, box-shadow .15s;
}
.adm-hub-card:hover{ border-color:var(--org); box-shadow:0 0 22px rgba(255,140,0,.16); }
.adm-hub-card h2{ margin:0; font-family:var(--mono); color:#fff; font-size:1.05rem; letter-spacing:.04em; }
.adm-hub-count{ margin:.4rem 0 .3rem; font-family:var(--mono); color:var(--org); font-size:1.9rem; line-height:1; }
.adm-hub-card small{ color:#8b96a6; font-size:.76rem; }

/* マイページ（カード縦積み＋情報リスト） */
.mypage-stack{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:1.2rem;
  width:100%;
  max-width:420px;
}
.mypage-stack > .auth-card{ width:100%; }
.mypage-info{
  margin:0 0 1.1rem;
  padding:0 0 1rem;
  border-bottom:1px solid rgba(255,122,0,.16);
  display:grid;
  grid-template-columns:auto 1fr;
  gap:.4rem .9rem;
}
.mypage-info dt{
  font-family:var(--mono);
  font-size:.72rem;
  letter-spacing:.06em;
  color:var(--grn);
  white-space:nowrap;
}
.mypage-info dd{
  margin:0;
  font-family:var(--mono);
  font-size:.86rem;
  color:var(--fg);
  word-break:break-all;
}

/* ============================================================
   規約・ポリシー等の長文ページ
   ============================================================ */
.legal{
  max-width:820px;
  margin:0 auto;
  padding:clamp(1.2rem,4vw,2.6rem) 1rem clamp(2rem,6vw,3.5rem);
  line-height:1.95;
  color:var(--fg);
}
.legal h1{
  font-family:var(--mincho);
  font-size:clamp(1.6rem,5vw,2.1rem);
  letter-spacing:.05em;
  margin:0 0 .5rem;
}
.legal .legal-lead{
  color:var(--muted);
  font-size:.85rem;
  line-height:1.9;
  margin:0 0 1.4rem;
}
.legal h2{
  font-family:var(--mono);
  font-size:.98rem;
  letter-spacing:.06em;
  color:var(--grn);
  margin:2.1rem 0 .5rem;
  padding-bottom:.35rem;
  border-bottom:1px solid var(--panel-line);
}
.legal p{ margin:.5rem 0; font-size:.9rem; }
.legal ol,.legal ul{ margin:.4rem 0 .6rem 1.5rem; font-size:.9rem; }
.legal li{ margin:.35rem 0; }
.legal b{ color:#ffe3c2; }
.legal .legal-date{
  margin-top:1.8rem;
  color:var(--muted);
  font-size:.82rem;
  font-family:var(--mono);
}
.legal .legal-note{
  margin-top:1.4rem;
  padding:.85rem 1rem;
  border:1px dashed var(--panel-line);
  border-radius:3px;
  color:var(--muted);
  font-size:.8rem;
  line-height:1.85;
}
.legal .legal-back{ margin-top:2rem; }
.legal .legal-back a{
  font-family:var(--mono);
  font-size:.8rem;
  color:var(--blu);
  text-decoration:none;
}
.legal .legal-back a:hover{ color:var(--pur); text-decoration:underline; }

/* ============================================================
   司令室の横幅拡大（セクションが窮屈だったため）
   ============================================================ */
body.dash .eva-main{ max-width:1360px; }

/* 口座解除ボタン（配備ユニットの行内フォーム） */
.unit-release{ display:inline; margin:0; }
.unit-release .mini-btn.danger{ cursor:pointer; }

/* ============================================================
   EAラインナップ（購入前でも見える公開実績）
   ============================================================ */
.lineup-card{ border-color:rgba(255,140,0,.35); }
.lineup-forward{ margin-top:.7rem; padding-top:.6rem; border-top:1px dashed var(--panel-line); }
.lineup-fwd-head{ display:flex; align-items:center; justify-content:space-between; gap:.5rem;
  font-family:var(--mono); font-size:.72rem; color:var(--muted); margin-bottom:.35rem; }
.lineup-nodata{ font-size:.76rem; color:var(--muted); padding:.5rem 0; }

/* ============================================================
   管理：利用状況のEAタブ
   ============================================================ */
.ea-tabs{ display:flex; flex-wrap:wrap; gap:.4rem; margin:.2rem 0 .8rem; }
.ea-tab{ font-family:var(--mono); font-size:.76rem; cursor:pointer;
  background:transparent; color:#9fb0c3; border:1px solid var(--panel-line);
  border-radius:3px; padding:.3rem .7rem; }
.ea-tab small{ opacity:.7; margin-left:.2rem; }
.ea-tab:hover{ color:var(--org); border-color:rgba(255,140,0,.5); }
.ea-tab.is-active{ color:#111; background:var(--org); border-color:var(--org); font-weight:700; }

/* 管理：ラインナップ編集フォーム */
.lineup-admin-grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:.6rem; }
.auth-check{ display:flex; align-items:flex-start; gap:.5rem; font-size:.82rem; color:var(--muted); margin:.2rem 0 .6rem; }
.auth-check input{ margin-top:.15rem; }

@media (max-width:560px){
  .lineup-admin-grid{ grid-template-columns:1fr; }
}

/* ===== パラメーター設定ボタン（配備ユニット内・DLボタンの下） ===== */
.unit-config{ display:block; width:100%; margin:.3rem 0 .2rem; padding:.5rem .7rem; cursor:pointer;
  font-family:var(--mono); font-size:.8rem; letter-spacing:.05em; border-radius:3px;
  color:#ffb84d; border:1px solid rgba(255,138,0,.5); background:rgba(255,138,0,.08); transition:.15s; }
.unit-config:hover{ background:rgba(255,138,0,.2); color:#fff; }

/* ===== 搭乗ボタン横の「スペック確認」（搭乗前にバックテスト実績を確認） ===== */
.unit-actions{ margin-top:.85rem; display:flex; flex-wrap:wrap; gap:.5rem; align-items:flex-start; justify-content:center; }
/* 搭乗ポップアップ（#boardModal）：口座タイプの注意文＋再確認チェック */
.board-warn{ margin:0 0 .9rem; padding:.7rem .8rem; border-radius:3px;
  border:1px solid rgba(255,138,0,.45); background:rgba(255,138,0,.08); }
.board-warn-ttl{ margin:0 0 .35rem; font-family:var(--mono); font-size:.78rem; letter-spacing:.05em; color:#ffb84d; }
.board-warn-body{ margin:0; font-size:.86rem; line-height:1.7; color:#e7ecf4; }
.board-warn-body b{ color:#fff; font-family:var(--mono); }
.board-warn-note{ margin:.4rem 0 0; font-size:.72rem; line-height:1.6; color:var(--muted); }
.board-check{ display:flex; align-items:flex-start; gap:.5rem; margin:.2rem 0 1rem; padding:.6rem .7rem;
  border:1px solid var(--panel-line); border-radius:3px; background:rgba(255,255,255,.03);
  font-size:.82rem; line-height:1.6; color:#dfe6ef; cursor:pointer; }
.board-check input{ margin-top:.2rem; accent-color:var(--unit-color,#b06bff); flex:0 0 auto; }
.board-check b{ color:#fff; font-family:var(--mono); }
.board-check:hover{ border-color:var(--unit-color,#b06bff); }
#bdSubmit:disabled{ cursor:not-allowed; }
.unit-spec-btn{ font-family:var(--mono); font-size:.85rem; letter-spacing:.06em; padding:.55rem 1.1rem;
  border-radius:3px; cursor:pointer; color:#9fd8ff; border:1px solid rgba(93,183,255,.45);
  background:rgba(93,183,255,.08); transition:.15s; }
.unit-spec-btn:hover{ background:rgba(93,183,255,.2); color:#fff; }
/* スペック確認ポップアップ（.eacfg を1カラムで流用） */
.eacfg-panel.is-spec{ width:min(520px,100%); }
.eacfg-body.is-spec-body{ grid-template-columns:1fr; }
/* 機体画像はSPEC見出しの上（1カラム目）。パラメーター設定の .eacfg-visual を流用しつつ幅だけ抑える */
.eacfg-body.is-spec-body .eacfg-visual{ width:100%; max-width:240px; margin:0 auto .2rem; }

/* ===== パラメーター設定ポップアップ（桜大戦風・機体カラー可変） ===== */
body.eacfg-open{ overflow:hidden; }
.eacfg[hidden]{ display:none; }
.eacfg{ position:fixed; inset:0; z-index:1200; display:flex; align-items:center; justify-content:center; padding:1rem; }
.eacfg-overlay{ position:absolute; inset:0; background:rgba(4,6,12,.82); backdrop-filter:blur(2px); }
.eacfg-panel{ --unit-color:#b06bff; position:relative; width:min(960px,100%); max-height:92vh; overflow:auto;
  background:linear-gradient(160deg, rgba(14,16,26,.98), rgba(9,10,18,.98));
  border:1px solid color-mix(in srgb, var(--unit-color) 60%, transparent);
  border-radius:6px; box-shadow:0 0 0 1px rgba(0,0,0,.6), 0 24px 70px rgba(0,0,0,.7),
    0 0 40px color-mix(in srgb, var(--unit-color) 30%, transparent);
  animation:eacfgIn .22s ease-out; }
@keyframes eacfgIn{ from{ opacity:0; transform:translateY(14px) scale(.985);} to{ opacity:1; transform:none;} }
.eacfg-bar{ display:flex; align-items:center; gap:.6rem; padding:.7rem .9rem;
  border-bottom:1px solid color-mix(in srgb, var(--unit-color) 40%, transparent);
  background:color-mix(in srgb, var(--unit-color) 12%, transparent); }
.eacfg-tag{ font-family:var(--mono); font-size:.7rem; letter-spacing:.12em; padding:.15rem .5rem; border-radius:2px;
  color:#0a0a12; font-weight:700; background:var(--unit-color); }
.eacfg-title{ font-weight:700; font-size:1rem; color:#fff; }
.eacfg-acc{ margin-left:auto; font-size:.78rem; color:var(--muted); font-family:var(--mono); }
.eacfg-x{ margin-left:.4rem; width:1.9rem; height:1.9rem; flex:0 0 auto; cursor:pointer; border-radius:3px;
  color:#fff; font-size:1.15rem; line-height:1; border:1px solid rgba(255,255,255,.2); background:rgba(255,255,255,.05); }
.eacfg-x:hover{ background:rgba(255,255,255,.15); }
/* ゲーム機体選択画面風の3カラム：スペック ／ 機体画像 ／ パラメーター */
.eacfg-body{ display:grid; grid-template-columns:1fr 220px 1.15fr; gap:1rem; padding:1rem; align-items:start; }
.eacfg-col{ min-width:0; }
.eacfg-col-hd{ font-family:var(--mono); font-size:.72rem; letter-spacing:.14em; color:var(--unit-color);
  padding:.35rem .55rem; margin-bottom:.75rem; border-left:3px solid var(--unit-color);
  background:color-mix(in srgb, var(--unit-color) 12%, transparent); text-transform:uppercase; }
/* col1: スペック */
.eacfg-catch{ margin:0 0 .8rem; font-size:.84rem; line-height:1.75; color:#e7ecf4; font-family:var(--mincho); }
.eacfg-stats{ margin:0; display:flex; flex-direction:column; gap:.5rem; }
.eacfg-stat{ display:flex; justify-content:space-between; align-items:baseline; gap:.5rem;
  padding:.5rem .6rem; border:1px solid color-mix(in srgb, var(--unit-color) 32%, transparent);
  border-radius:3px; background:linear-gradient(180deg, rgba(0,0,0,.15), rgba(0,0,0,.4)); }
.eacfg-stat dt{ font-family:var(--mono); font-size:.64rem; letter-spacing:.05em; color:var(--muted); }
.eacfg-stat dd{ margin:0; font-family:var(--mono); font-size:1.05rem; font-weight:700; color:#fff;
  text-shadow:0 0 12px color-mix(in srgb, var(--unit-color) 65%, transparent); }
.eacfg-spec-note{ margin:.8rem 0 0; font-size:.64rem; line-height:1.6; color:var(--muted); }
/* バックテスト(Strategy Tester)レポート：ボタン押下で#backtestModal(.resm)にポップアップ表示。 */
.eacfg-bt{ margin:.9rem 0 0; }
/* col2: 機体画像（CRTスキャンライン風） */
.eacfg-visual{ align-self:start; position:relative; border:1px solid color-mix(in srgb, var(--unit-color) 55%, transparent); border-radius:5px;
  overflow:hidden; background:radial-gradient(120% 90% at 50% 0%, color-mix(in srgb, var(--unit-color) 26%, transparent), rgba(6,7,14,.9));
  box-shadow:inset 0 0 30px color-mix(in srgb, var(--unit-color) 20%, transparent); }
.eacfg-visual img{ display:block; width:100%; height:auto; }
.eacfg-visual::after{ content:""; position:absolute; inset:0; pointer-events:none;
  background:repeating-linear-gradient(0deg, rgba(0,0,0,0) 0 2px, rgba(0,0,0,.14) 2px 3px); }
/* ================================================================
   機体画像の常時アイドルアニメーション（2026-08-03 追加・CSSのみ／マウス操作不要で常時ループ）。
   戻す場合はこのブロック（.eacfg-visual{perspective}〜@keyframes eacfgVisualGlow まで）を
   削除 or コメントアウトするだけでよい（HTML/JSの変更は無し）。
   prefers-reduced-motion:reduce の環境では末尾の `*{animation:none!important}` により自動的に無効化される。
   ================================================================ */
.eacfg-visual{ perspective:900px; }
.eacfg-visual img{
  animation: eacfgVisualFloat 6s ease-in-out infinite;
  transform-style: preserve-3d;
  will-change: transform;
}
.eacfg-visual::before{ content:""; position:absolute; inset:0; pointer-events:none; z-index:1;
  box-shadow:inset 0 0 30px color-mix(in srgb, var(--unit-color) 45%, transparent);
  animation: eacfgVisualGlow 6s ease-in-out infinite; }
@keyframes eacfgVisualFloat{
  /* 画像を少し縮小(scale)して余白を作り、基準位置(0%/100%)を下寄りにすることで
     浮遊時(50%)に上へ動いても画像の下端がコンテナからはみ出て切れないようにしている。 */
  0%, 100% { transform: scale(.92) translateY(8px)  rotateY(-4deg) rotateX(1deg); }
  50%      { transform: scale(.92) translateY(-2px) rotateY(4deg)  rotateX(-1deg); }
}
@keyframes eacfgVisualGlow{
  0%, 100% { opacity:.55; }
  50%      { opacity:1; }
}
/* col3: パラメーター */
.eacfg-params{ min-width:0; }
.eacfg-row{ display:flex; flex-direction:column; gap:.28rem; margin-bottom:.7rem; }
.eacfg-row > label{ font-size:.78rem; letter-spacing:.03em; color:var(--muted); }
.eacfg-row > label small{ color:#ff9d5c; font-size:.7rem; }
.eacfg-row select, .eacfg-row input[type=number]{ width:100%; padding:.5rem .6rem; border-radius:3px;
  font-family:var(--mono); font-size:.92rem; color:#fff; background:rgba(0,0,0,.35);
  border:1px solid rgba(255,255,255,.16); }
.eacfg-row select:focus, .eacfg-row input:focus{ outline:none; border-color:var(--unit-color);
  box-shadow:0 0 0 2px color-mix(in srgb, var(--unit-color) 30%, transparent); }
.eacfg-row input:disabled{ opacity:.55; cursor:not-allowed; }
.eacfg-dow{ display:flex; flex-wrap:wrap; gap:.4rem; }
.eacfg-dow label{ display:inline-flex; align-items:center; gap:.25rem; padding:.35rem .55rem; border-radius:3px; cursor:pointer;
  font-size:.85rem; color:#dfe6ef; border:1px solid rgba(255,255,255,.14); background:rgba(0,0,0,.25); }
.eacfg-dow input, .eacfg-gg input[type=checkbox]{ accent-color:var(--unit-color); }
.eacfg-gg{ display:flex; align-items:center; gap:.6rem; flex-wrap:wrap; color:#dfe6ef; font-size:.85rem; }
.eacfg-gg label{ display:inline-flex; align-items:center; gap:.3rem; cursor:pointer; }
.eacfg-gg input[type=number]{ width:5rem; }
.eacfg-msg{ min-height:1.1em; margin:.2rem 0 .7rem; font-size:.82rem; color:var(--muted); }
.eacfg-msg.is-ok{ color:#65e6a0; }
.eacfg-msg.is-err{ color:#ff6b6b; }
.eacfg-actions{ display:flex; justify-content:flex-end; gap:.6rem; }
.eacfg-cancel, .eacfg-save{ padding:.55rem 1.1rem; border-radius:3px; cursor:pointer;
  font-family:var(--mono); font-size:.85rem; letter-spacing:.05em; }
.eacfg-cancel{ color:#cfd6e0; background:rgba(255,255,255,.06); border:1px solid rgba(255,255,255,.18); }
.eacfg-cancel:hover{ background:rgba(255,255,255,.14); }
.eacfg-save{ color:#0a0a12; font-weight:700; border:1px solid var(--unit-color); background:var(--unit-color); }
.eacfg-save:hover{ filter:brightness(1.1); }
.eacfg-save:disabled{ opacity:.5; cursor:progress; }
@media (max-width:860px){
  .eacfg-body{ grid-template-columns:1fr; }
  .eacfg-visual{ max-width:240px; margin:0 auto; order:-1; }
}

/* ===== AI相場予想：未稼働EAのロック表示（実データはサーバ側で非出力・ブラーは演出のみ） ===== */
.fc-lock-wrap{ position:relative; }
.fc-lock-wrap .fc-blur{ filter:blur(5px); opacity:.5; user-select:none; pointer-events:none; }
.fc-bias.is-lock{ color:var(--muted); border-color:var(--panel-line); background:transparent; }
.fc-lock-tag{ font-family:var(--mono); font-size:.7rem; color:var(--muted); white-space:nowrap; }
.fc-lock-overlay{ position:absolute; inset:0; z-index:2; display:flex; flex-direction:column;
  align-items:center; justify-content:center; gap:.35rem; text-align:center; padding:.8rem;
  background:radial-gradient(circle at 50% 42%, rgba(10,10,15,.28), rgba(10,10,15,.72)); border-radius:4px; }
.fc-lock-overlay .lk-ico{ font-size:1.5rem; line-height:1; }
.fc-lock-overlay .lk-msg{ font-family:var(--mono); font-size:.82rem; letter-spacing:.05em; color:var(--org); }
.fc-lock-overlay .lk-sub{ font-size:.72rem; line-height:1.5; color:var(--muted); }

/* ===== 運用成績ポップアップ ===== */
body.resm-open{ overflow:hidden; }
.resm[hidden]{ display:none; }
.resm{ position:fixed; inset:0; z-index:1200; display:flex; align-items:center; justify-content:center; padding:1rem; }
.resm-overlay{ position:absolute; inset:0; background:rgba(4,6,12,.82); backdrop-filter:blur(2px); }
.resm-panel{ position:relative; width:min(720px,100%); max-height:92vh; display:flex; flex-direction:column; overflow:hidden;
  background:linear-gradient(160deg, rgba(14,16,26,.98), rgba(9,10,18,.98));
  border:1px solid var(--panel-line); border-radius:6px;
  box-shadow:0 0 0 1px rgba(0,0,0,.6), 0 24px 70px rgba(0,0,0,.7); animation:eacfgIn .22s ease-out; }
.resm-bar{ display:flex; align-items:center; gap:.6rem; padding:.7rem .9rem;
  border-bottom:1px solid var(--panel-line); background:rgba(255,122,0,.08); }
.resm-title{ font-weight:700; color:#fff; font-size:.98rem; }
.resm-acc{ margin-left:auto; font-size:.78rem; color:var(--muted); }
.resm-x{ width:1.9rem; height:1.9rem; flex:0 0 auto; cursor:pointer; border-radius:3px;
  color:#fff; font-size:1.15rem; line-height:1; border:1px solid rgba(255,255,255,.2); background:rgba(255,255,255,.05); }
.resm-x:hover{ background:rgba(255,255,255,.15); }
.resm-content{ padding:1rem; overflow:auto; }
#btmImg{ display:block; max-width:100%; height:auto; margin:0 auto; border-radius:4px; }
.resm-loading, .resm-err{ color:var(--muted); font-size:.85rem; text-align:center; padding:1.5rem 1rem; }
.resm-err{ color:var(--red); }
.resm-view .pl-chart{ width:100%; height:auto; }
.resm-view .pl-chart-box{ margin-top:.2rem; }
.hist-nav .res-nav{ background:transparent; border:1px solid var(--panel-line); color:var(--blu);
  font-family:var(--mono); font-size:.78rem; padding:.3rem .6rem; border-radius:2px; cursor:pointer; }
.hist-nav .res-nav:hover{ border-color:var(--org); color:var(--org); }
/* 月移動ナビの無効化（表示下限より前へは遡れない＝config/setting: calendar_min_month） */
.hist-nav .res-nav[disabled]{ opacity:.35; color:var(--muted); border-color:var(--panel-line); cursor:not-allowed; }
.hist-nav .res-nav[disabled]:hover{ border-color:var(--panel-line); color:var(--muted); }
.hist-nav .hist-nav-off{ opacity:.35; color:var(--muted); font-family:var(--mono); font-size:.78rem; }
/* ===== 配備ユニット：ショーケース（未導入EA・成績はモザイク／購入導線） ===== */
.unit-card.is-showcase::before{ background:var(--muted); opacity:.45; }
.unit-card.is-showcase .unit-status.is-idle{ color:var(--org); border-color:rgba(255,122,0,.5); }
.unit-showcase{ margin-top:.8rem; display:flex; flex-direction:column; gap:.5rem; align-items:center; text-align:center; }
.unit-showcase-note{ font-family:var(--mono); font-size:.72rem; letter-spacing:.03em; color:var(--org); }
/* モザイク：1日平均損益（ダミー文字をぼかす・実データは非出力） */
.unit-lock-val{ filter:blur(5px); user-select:none; color:var(--muted); }
/* モザイク：グラフ（フェイクのスパークをぼかし＋ロックオーバーレイ・実データは非出力） */
.unit-lock-box{ position:relative; margin-top:.35rem; border:1px solid var(--panel-line); background:#0a0a10; border-radius:3px; overflow:hidden; }
.unit-lock-blur{ display:block; width:100%; height:auto; filter:blur(4px); opacity:.55; }
.unit-lock-blur .ulk-line{ stroke:var(--unit-color,#b06bff); stroke-width:2; }
.unit-lock-blur .ulk-area{ fill:color-mix(in srgb, var(--unit-color,#b06bff) 25%, transparent); }
.unit-lock-overlay{ position:absolute; inset:0; display:flex; align-items:center; justify-content:center; text-align:center;
  font-family:var(--mono); font-size:.74rem; letter-spacing:.04em; color:var(--org);
  background:radial-gradient(circle at 50% 45%, rgba(10,10,15,.35), rgba(10,10,15,.7)); }

@media (prefers-reduced-motion:reduce){
  *{ animation:none !important; }
}

/* ===== 口座開設マニュアル（搭乗前ポップアップ #boardManual）ここから ===== */
.eacfg-panel.is-manual{ width:min(720px,100%); }
.bm-lead{ margin:0 0 .9rem; font-size:.9rem; line-height:1.8; color:#e7ecf4; }
.bm-lead b{ color:#ffb84d; font-family:var(--mono); }
.bm-steps{ list-style:none; margin:0 0 .9rem; padding:0; display:grid; gap:.55rem; }
.bm-steps li{ padding:.6rem .75rem; border:1px solid color-mix(in srgb, var(--unit-color,#b06bff) 30%, transparent);
  background:rgba(255,255,255,.03); border-radius:3px; font-size:.86rem; line-height:1.8; color:#e7ecf4; }
.bm-steps b{ color:#fff; }
.bm-no{ color:var(--unit-color,#b06bff); font-weight:700; margin-right:.25rem; font-family:var(--mono); }
.bm-link{ display:inline-block; margin-top:.35rem; padding:.4rem .9rem; border:1px solid var(--unit-color,#b06bff);
  color:#fff; text-decoration:none; font-size:.84rem; border-radius:3px; }
.bm-link:hover{ background:color-mix(in srgb, var(--unit-color,#b06bff) 20%, transparent); }
.bm-type{ color:#ffb84d; font-size:.82rem; }
.bm-refid{ font-family:var(--mono); color:#ffb84d; }
.bm-figs{ display:grid; grid-template-columns:1fr 1fr; gap:.6rem; margin:0 0 .3rem; }
.bm-figs a{ display:block; border:1px solid rgba(255,255,255,.15); border-radius:3px; overflow:hidden; }
.bm-figs img{ display:block; width:100%; height:auto; }
.bm-note{ margin:.2rem 0 .8rem; font-size:.72rem; color:var(--muted); }
.bm-confirm{ margin-bottom:.2rem; }
.bm-sublist{ list-style:none; margin:.45rem 0 0; padding:0; display:grid; gap:.3rem; }
.bm-sublist li{ padding:.3rem .6rem; border-left:2px solid color-mix(in srgb, var(--unit-color,#b06bff) 55%, transparent);
  background:rgba(255,255,255,.04); font-size:.84rem; line-height:1.7; }
.bm-warn{ color:#ffb84d; font-weight:700; }
.bm-caution{ display:inline-block; margin-top:.15rem; color:#ff6b6b; font-size:.8rem; font-weight:700; }
@media (max-width:640px){ .bm-figs{ grid-template-columns:1fr; } }
/* ===== 口座開設マニュアル ここまで ===== */

/* ===== EA設置マニュアル（#setupManual）＋DLボタン下の呼び出しボタン ここから ===== */
.unit-setup-btn{ display:block; width:100%; margin:.35rem 0 .2rem; padding:.55rem .7rem; text-align:center; cursor:pointer;
  font-family:var(--mono); font-size:.82rem; letter-spacing:.06em; border-radius:3px;
  color:var(--blu); border:1px solid rgba(70,201,255,.45); background:rgba(70,201,255,.07); transition:.15s; }
.unit-setup-btn:hover{ background:rgba(70,201,255,.18); color:#fff; }
.bm-fig{ display:block; margin:.5rem 0 .1rem; max-width:520px;
  border:1px solid rgba(255,255,255,.15); border-radius:3px; overflow:hidden; }
.bm-fig img{ display:block; width:100%; height:auto; }
.bm-fig.is-sm{ max-width:320px; }
.bm-fig.is-lg{ max-width:100%; }
.sm-cautions{ list-style:none; margin:0 0 .9rem; padding:0; display:grid; gap:.45rem; }
.sm-cautions li{ padding:.55rem .75rem; border:1px solid rgba(255,107,107,.35); border-left:2px solid #ff6b6b;
  background:rgba(255,107,107,.05); font-size:.84rem; line-height:1.8; color:#e7ecf4; }
.sm-cautions b{ color:#ff6b6b; }
/* 冒頭の動画リンク（設置方法をYouTubeで確認） */
.sm-video{ display:flex; align-items:center; gap:.7rem; margin:0 0 .9rem; padding:.7rem .85rem; text-decoration:none;
  border:1px solid rgba(255,59,48,.45); border-left:3px solid #ff3b30; border-radius:3px;
  background:linear-gradient(90deg, rgba(255,59,48,.14), rgba(255,59,48,.04)); transition:.15s; }
.sm-video:hover{ background:linear-gradient(90deg, rgba(255,59,48,.26), rgba(255,59,48,.08)); }
.sm-video-ico{ flex:0 0 auto; display:grid; place-items:center; width:36px; height:25px; border-radius:5px;
  background:#ff3b30; color:#fff; font-size:.72rem; line-height:1; }
.sm-video-txt{ display:grid; gap:.1rem; min-width:0; }
.sm-video-txt b{ color:#fff; font-size:.88rem; }
.sm-video-txt small{ color:var(--muted); font-size:.72rem; }
.sm-video-go{ margin-left:auto; color:#ff8a80; font-family:var(--mono); font-size:.9rem; }
/* ===== EA設置マニュアル ここまで ===== */

/* ===== VPS設置マニュアル（#vpsManual）＋DLボタン下の呼び出しボタン ここから =====
   ポップアップ本体は口座開設/EA設置マニュアルと同じ .eacfg-panel.is-manual + .bm-* を流用するため、
   ここで足すのは呼び出しボタンの見た目だけ（DL=オレンジ／EA設置=ブルー と区別するためバイオレット）。 */
.unit-vps-btn{ display:block; width:100%; margin:.35rem 0 .2rem; padding:.55rem .7rem; text-align:center; cursor:pointer;
  font-family:var(--mono); font-size:.82rem; letter-spacing:.06em; border-radius:3px;
  color:#c9a7ff; border:1px solid rgba(176,107,255,.45); background:rgba(176,107,255,.07); transition:.15s; }
.unit-vps-btn:hover{ background:rgba(176,107,255,.18); color:#fff; }
/* ===== VPS設置マニュアル ここまで ===== */

/* ===== 管理：フォワード損益編集（/__DASHBOARD__/forward/）ここから ===== */
.fwd-tabs{ display:flex; flex-wrap:wrap; gap:.5rem; margin:0 0 1rem; }
.fwd-tab{
  display:flex; flex-direction:column; gap:.1rem; padding:.5rem .9rem;
  font-family:var(--mono); font-size:.86rem; text-decoration:none; color:#9fb0c3;
  background:#080a0e; border:1px solid rgba(255,140,0,.22); border-radius:3px; transition:.15s;
}
.fwd-tab small{ font-size:.68rem; color:#6f7b8a; letter-spacing:.04em; }
.fwd-tab:hover{ border-color:var(--org); color:#fff; }
.fwd-tab.is-active{ color:#fff; border-color:var(--org); background:linear-gradient(180deg,rgba(255,140,0,.22),rgba(255,140,0,.06)); }
.fwd-tab.is-active small{ color:#e0a86a; }
.fwd-nav{ border-top:1px solid rgba(255,140,0,.16); padding-top:.9rem; }
/* 対象口座の選択（運営フォワード／会員） */
.fwd-pick-h{ margin:0 0 .9rem; font-size:.95rem; letter-spacing:.08em; color:#e6e9ef; }
.fwd-pick{ display:grid; gap:1.1rem; }
.fwd-pick-row{ display:grid; gap:.55rem; }
.fwd-pick-label{ font-family:var(--mono); font-size:.72rem; letter-spacing:.1em; color:#e0a86a; }
.fwd-pick-row .fwd-tabs{ margin:0; }
.fwd-pick-empty{ margin:0; font-size:.82rem; color:var(--muted); }
.fwd-pick-note{ margin:0; font-size:.76rem; color:var(--muted); }
.fwd-userform{ display:flex; gap:.5rem; align-items:center; flex-wrap:wrap; }
.fwd-userform select{
  flex:1 1 320px; max-width:520px; padding:.45rem .6rem;
  font-family:var(--mono); font-size:.82rem; color:#e6e9ef;
  background:#080a0e; border:1px solid rgba(255,140,0,.22); border-radius:3px;
}
.fwd-userform select:focus{ outline:none; border-color:var(--org); box-shadow:0 0 0 2px rgba(255,140,0,.2); }
.fwd-warn{ margin:.2rem 0 0; padding:.55rem .75rem; font-size:.78rem; line-height:1.7; color:#ffd9b0;
  border:1px solid rgba(255,140,0,.35); border-left:2px solid var(--org); background:rgba(255,140,0,.06); }
.mini-link{ font-family:var(--mono); font-size:.72rem; color:#e0a86a; text-decoration:none; margin-left:.3rem; }
.mini-link:hover{ color:var(--org); text-decoration:underline; }
.fwd-sum{ grid-template-columns:auto 1fr; }
.fwd-table td{ vertical-align:middle; }
.fwd-table tr.is-sun .fwd-date{ color:#ff8a8a; }
.fwd-table tr.is-sat .fwd-date{ color:#8ab8ff; }
.fwd-table tr.is-ov{ background:rgba(255,140,0,.07); }
.fwd-table tr.is-future td{ opacity:.55; }
.fwd-date{ font-family:var(--mono); white-space:nowrap; }
.fwd-table td.fwd-date small{ display:inline; margin-left:.35rem; color:var(--muted); font-size:.68rem; }
.fwd-input::placeholder{ color:#4d5663; }
.fwd-auto{ white-space:nowrap; }
.fwd-auto .p{ color:var(--grn); }
.fwd-auto .m{ color:var(--red); }
.fwd-none{ color:#5a6472; }
.fwd-input{
  width:100%; max-width:180px; padding:.4rem .55rem; text-align:right;
  font-family:var(--mono); font-size:.86rem; color:#e6e9ef;
  background:#080a0e; border:1px solid rgba(255,140,0,.22); border-radius:3px;
}
.fwd-input:focus{ outline:none; border-color:var(--org); box-shadow:0 0 0 2px rgba(255,140,0,.2); }
.fwd-state{ white-space:nowrap; }
.fwd-state small{ display:block; margin-top:.15rem; color:var(--muted); font-size:.68rem; }
.fwd-badge{
  display:inline-block; font-family:var(--mono); font-size:.68rem; letter-spacing:.05em;
  padding:.12rem .5rem; border-radius:2px; border:1px solid rgba(159,176,195,.35); color:#9fb0c3;
}
.fwd-badge.is-ov{ color:#ffb84d; border-color:rgba(255,184,77,.55); }
.fwd-badge.is-add{ color:#7ee081; border-color:rgba(126,224,129,.5); }
.fwd-badge.is-fwd{ color:#e0a86a; border-color:rgba(255,140,0,.5); }
.fwd-badge.is-user{ color:#8ab8ff; border-color:rgba(138,184,255,.5); }
.fwd-hint{ margin:.7rem 0 0; font-size:.74rem; color:var(--muted); }
.fwd-hint code{ font-family:var(--mono); color:#e0a86a; }
.fwd-form .auth-btn{ margin-top:1rem; }
@media (max-width:640px){
  .fwd-table{ font-size:.78rem; }
  .fwd-input{ max-width:120px; }
  .fwd-state small{ display:none; }
}
/* ===== 管理：フォワード損益編集 ここまで ===== */

/* ================================================================
   募集終了シール（進捗クエスト #21「無料版ユーザの2, 3号機に募集終了シールを張りたい」）
     無料ユーザー(is_paid=0)かつ「募集終了」EA（config: DEFAULT_SEALED_EA_CODES ／
     setting: sealed_ea_codes）のカードで、.unit-license（体験枠の行〜各ボタンの領域＝
     こすけさんの赤枠部分）の中身をこのシールに差し替える。
     ※ 導線はPHP側で出力ごと消しており、CSSは見た目だけ。募集を再開するときは
       DEFAULT_SEALED_EA_CODES を [] にすれば出力が止まる（このブロックは残っても無害）。
   ================================================================ */
.unit-license.is-sealed{
  display:flex; align-items:center; justify-content:center;
  min-height:150px; padding:1rem .6rem .9rem;
  border-radius:3px;
  /* 立入禁止テープ風の斜めストライプ＋赤の下地 */
  background:
    repeating-linear-gradient(-45deg, rgba(255,45,45,.055) 0 9px, transparent 9px 18px),
    rgba(28,4,8,.5);
  box-shadow:inset 0 0 26px rgba(255,40,20,.10);
}
.unit-seal{ width:100%; text-align:center; }
.unit-seal-img{
  display:block; width:100%; max-width:320px; height:auto; margin:0 auto;
  filter:drop-shadow(0 0 12px rgba(255,70,25,.45));
  animation:sealPulse 3.6s ease-in-out infinite;
}
@keyframes sealPulse{
  0%,100%{ filter:drop-shadow(0 0 9px rgba(255,70,25,.32)); }
  50%    { filter:drop-shadow(0 0 18px rgba(255,90,35,.6)); }
}
.unit-seal-note{
  margin:.85rem .2rem 0; font-size:.76rem; line-height:1.75; color:#ffb9b2; letter-spacing:.02em;
}
.unit-seal-note b{ color:#ff6f5c; font-weight:700; }
@media (max-width:640px){
  .unit-license.is-sealed{ min-height:130px; }
  .unit-seal-img{ max-width:280px; }
}
/* ===== 募集終了シール ここまで ===== */
