/* ============================================================
   SAKURA TRADING ONLINE ─ IT CITY
   ------------------------------------------------------------
   .net（本番）とは作りを変える：
     明朝＋余白 → 等幅＋格子＋光。共通言語はロゴだけ。
   ============================================================ */

:root{
  --gold:#c69b3c; --gold-lt:#e8c877;
  --cyan:#38e8c4; --cyan-dim:#1c8f7a; --lime:#9ef07a;
  --green:#3a7d5c; --green-lt:#5aad7a; --green-bg:#e8f5ee;
  --sakura:#f5e6ea; --sakura-dk:#d4a0af;
  --deep:#081e16; --panel:rgba(8,30,22,.82);
  --line:rgba(56,232,196,.28);
  --text:#e8f4f0; --text-dim:#8fbaa8; --text-faint:#5e9a84;
  --mono:ui-monospace,"SF Mono",Menlo,"Courier New",monospace;
  --sans:"Hiragino Sans","Hiragino Kaku Gothic ProN",system-ui,sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%;overflow:hidden;background:var(--deep);
  background-image:radial-gradient(ellipse at 50% 30%,#0f3526 0%,var(--deep) 70%)}
body{font-family:var(--sans);color:var(--text);-webkit-font-smoothing:antialiased}
button{font-family:inherit;cursor:pointer;border:0;background:0;color:inherit}
:focus-visible{outline:2px solid var(--cyan);outline-offset:3px}

canvas#stage{position:fixed;inset:0;width:100%;height:100%;display:block;z-index:1}
.scan{position:fixed;inset:0;z-index:2;pointer-events:none;opacity:.10;
  background:repeating-linear-gradient(0deg,rgba(90,173,122,.12) 0 1px,transparent 1px 3px)}

.layer{position:fixed;inset:0;z-index:3;display:flex;align-items:center;
  justify-content:center;pointer-events:none}
.layer.on{pointer-events:auto}

/* ══════════ 入口 ══════════ */
#gate{transition:opacity .4s ease}
#gate .in{text-align:center}
#logo{width:min(230px,52vw);height:auto;display:block;margin:0 auto 22px;
  filter:drop-shadow(0 0 42px rgba(90,173,122,.45)) drop-shadow(0 0 18px rgba(198,155,60,.40));
  transition:opacity .28s ease}
.id{font-family:var(--mono);font-size:10.5px;letter-spacing:.42em;color:var(--cyan);margin-bottom:13px}
#gate h1{font-family:var(--mono);font-size:clamp(14px,2.5vw,20px);font-weight:500;
  letter-spacing:.16em;line-height:1.75;color:#dff3ec;margin-bottom:28px}
#gate h1 b{color:var(--gold-lt);font-weight:600}
.go{font-family:var(--mono);font-size:12.5px;letter-spacing:.28em;color:#fff;
  background:linear-gradient(180deg,#4dbd7a,#2d8f56);border-radius:6px;padding:14px 44px;
  box-shadow:0 0 0 1px rgba(77,189,122,.5),0 14px 40px -16px rgba(77,189,122,.85);
  transition:box-shadow .18s,transform .18s}
.go:hover{transform:translateY(-1px);box-shadow:0 0 0 1px #4dbd7a,0 18px 46px -14px rgba(77,189,122,1)}
.go[disabled]{opacity:.4;cursor:default}
.pplink{display:block;margin-top:18px;font-family:var(--mono);font-size:10px;
  letter-spacing:.16em;color:var(--text-faint);transition:color .3s}
.pplink:hover{color:var(--green-lt)}

/* ══════════ 加速 ══════════ */
#warp{opacity:0;transition:opacity .35s ease;flex-direction:column;gap:10px}
#warp .st{font-family:var(--mono);font-size:11px;letter-spacing:.4em;color:var(--cyan)}
#warp .bar{width:170px;height:1px;background:rgba(56,232,196,.2);overflow:hidden}
#warp .bar i{display:block;height:100%;width:0;background:var(--cyan);
  box-shadow:0 0 10px var(--cyan);transition:width .35s linear}

/* ══════════ 街 ══════════ */
#city{opacity:0;transition:opacity 1s ease;align-items:flex-start;justify-content:flex-start}
#city.on{pointer-events:none}          /* 背景はクリックを通す。札とパネルだけ拾う */

.hud{padding:22px 26px 0;font-family:var(--mono);pointer-events:none}
.hud .l1{font-size:10px;letter-spacing:.4em;color:var(--cyan);margin-bottom:7px}
.hud .l2{font-size:clamp(15px,2.4vw,21px);letter-spacing:.1em}
.hud .l2 b{color:var(--gold-lt);font-weight:600}
.hud .l3{font-size:10.5px;color:var(--text-faint);margin-top:8px;letter-spacing:.1em}

#cityMark{position:fixed;right:24px;top:20px;width:58px;height:auto;opacity:0;z-index:4;
  transition:opacity 1s ease;filter:drop-shadow(0 0 12px rgba(56,232,196,.4))}
#cityMark.on{opacity:.5}

/* ── オフィスの札 ── */
.tag{position:absolute;transform:translate(-50%,-50%);pointer-events:auto;
  opacity:0;transition:opacity .5s ease;z-index:4}
.tag.show{opacity:1}
.tag .b{font-family:var(--mono);background:var(--panel);border:1px solid var(--line);
  border-left:2px solid var(--cyan);border-radius:2px;padding:7px 12px;white-space:nowrap;
  backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px);
  transition:border-color .18s,transform .18s,box-shadow .18s}
.tag:hover .b,.tag:focus-visible .b{border-color:var(--gold);transform:translateY(-3px);
  box-shadow:0 10px 26px -12px rgba(198,155,60,.6)}
.tag[aria-selected="true"] .b{border-color:var(--gold-lt);
  box-shadow:0 0 0 1px var(--gold-lt),0 12px 30px -12px rgba(232,200,119,.7)}
.tag .n{font-family:var(--sans);font-size:12px;display:block;color:var(--text)}
.tag .m{font-size:9.5px;letter-spacing:.16em;color:var(--cyan);margin-top:3px;display:block}
.tag .d{display:inline-block;width:4px;height:4px;background:var(--lime);border-radius:50%;
  margin-right:5px;animation:blip 1.5s ease-in-out infinite}
@keyframes blip{0%,100%{opacity:.3}50%{opacity:1;box-shadow:0 0 7px var(--lime)}}

/* オフィスの窓。中で誰かが働いている合図 */
.tag .win{display:flex;gap:2px;margin-top:6px}
.tag .win i{width:6px;height:4px;background:rgba(56,232,196,.16);border-radius:1px;
  animation:win 3.4s steps(1,end) infinite}
@keyframes win{0%,44%{background:rgba(56,232,196,.16)}
  46%,72%{background:rgba(56,232,196,.85);box-shadow:0 0 6px rgba(56,232,196,.7)}
  74%,100%{background:rgba(56,232,196,.16)}}

/* ══════════ オフィスの中（右から出る板） ══════════ */
#office{position:fixed;top:0;right:0;bottom:0;width:min(430px,92vw);z-index:8;
  background:linear-gradient(180deg,rgba(8,30,22,.95),rgba(6,22,16,.97));
  border-left:1px solid var(--line);backdrop-filter:blur(16px);
  -webkit-backdrop-filter:blur(16px);transform:translateX(100%);
  transition:transform .42s cubic-bezier(.16,1,.3,1);display:flex;flex-direction:column}
#office.on{transform:none}
#office header{padding:22px 24px 16px;border-bottom:1px solid var(--line);flex:none}
#office .zc{font-family:var(--mono);font-size:9.5px;letter-spacing:.3em;color:var(--cyan);
  display:flex;align-items:center;gap:8px;margin-bottom:9px}
#office .zc i{width:7px;height:7px;border-radius:50%;display:inline-block}
#office h2{font-size:20px;font-weight:600;letter-spacing:.04em;margin-bottom:6px}
#office .lead{font-size:12.5px;color:var(--text-dim);line-height:1.8}
#office .close{position:absolute;top:18px;right:18px;font-family:var(--mono);font-size:16px;
  color:var(--text-faint);width:30px;height:30px;border-radius:3px;transition:color .15s,background .15s}
#office .close:hover{color:var(--cyan);background:rgba(56,232,196,.10)}

/* オフィスの中 ─ 実際に働いている画 */
#office .floor{position:relative;height:150px;flex:none;border-top:1px solid var(--line);
  background:#081e16;overflow:hidden}
#office .floor canvas{display:block;width:100%;height:150px}
#office .floor .src{position:absolute;right:10px;top:9px;font-family:var(--mono);
  font-size:8.5px;letter-spacing:.16em;color:var(--lime);
  background:rgba(8,30,22,.72);border:1px solid rgba(158,240,122,.28);
  border-radius:2px;padding:3px 7px}
#office .floor .src.demo{color:var(--text-faint);border-color:rgba(126,163,155,.24)}

/* 稼働メーター（Nairobi が実データを入れる枠） */
.meters{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);
  border-top:1px solid var(--line);border-bottom:1px solid var(--line);flex:none}
.meter{background:rgba(8,30,22,.9);padding:11px 12px;text-align:center}
.meter .v{font-family:var(--mono);font-size:17px;color:var(--cyan);letter-spacing:.02em}
.meter .v.gold{color:var(--gold-lt)}
.meter .k{font-size:9px;color:var(--text-faint);letter-spacing:.18em;margin-top:3px;
  font-family:var(--mono)}

#office .list{flex:1;overflow-y:auto;padding:8px 0 20px}
.svc{display:flex;align-items:flex-start;gap:11px;padding:11px 24px;
  border-bottom:1px solid rgba(56,232,196,.07);transition:background .14s}
.svc:hover{background:rgba(56,232,196,.05)}
.svc .no{font-family:var(--mono);font-size:10px;color:var(--cyan-dim);flex:none;
  width:26px;padding-top:2px;letter-spacing:.04em}
.svc .t{font-size:13px;line-height:1.65;flex:1}
.svc .st{font-family:var(--mono);font-size:8.5px;letter-spacing:.14em;flex:none;
  padding:2px 6px;border-radius:2px;margin-top:2px}
.svc .st.run{color:var(--lime);background:rgba(158,240,122,.10)}
.svc .st.idle{color:var(--text-faint);background:rgba(126,163,155,.08)}

/* ══════════ EVA ─ 待機 ⇄ 展開 ⇄ 対話 ══════════
   決めごと（マエストロ厳命）
     ・位置は right:10px / bottom:10px に固定。動かしません。
     ・z-index は 4。文字・ボタン・オフィスの板より必ず下です。
     ・待機中は小さく半透明。クリックを拾うのは EVA 本体だけ。
     ・起動時に2回まわる → スッと縮んで右下へ退避 → 押すと出てくる。
   ────────────────────────────────────────── */
#eva{position:fixed;right:10px;bottom:10px;z-index:4;
  display:flex;align-items:flex-end;gap:10px;
  opacity:0;pointer-events:none;transition:opacity .5s ease;
  /* 状態ごとの見た目は、この4つの値だけで決まります（重なりの取り合いを避けるため） */
  --scale:.66;   /* EVA本体の大きさ  */
  --dim:.5;      /* EVA本体の濃さ    */
  --pv:hidden;   /* 吹き出しを見せるか */
  --po:0}        /* 吹き出しの濃さ    */
#eva.on{opacity:1}

/* 展開／対話：ひょっこり全表示 */
#eva[data-state="open"],
#eva[data-state="ask"]{--scale:1;--dim:1;--pv:visible;--po:1}

/* ── EVA 本体（唯一クリックできる部分）── */
#eva .body{pointer-events:auto;padding:0;line-height:0;border-radius:50%;
  transform:scale(var(--scale));opacity:var(--dim);
  transition:transform .34s cubic-bezier(.2,1.3,.4,1),opacity .3s ease,filter .3s ease}
#eva .body svg{width:64px;height:64px;display:block}
#eva .body:hover{transform:scale(calc(var(--scale) * 1.16));opacity:1}
#eva .body:active{transform:scale(calc(var(--scale) * .94))}
#eva[data-state="open"] .body,
#eva[data-state="ask"]  .body{filter:drop-shadow(0 0 14px rgba(56,232,196,.45))}

/* 起動時のアピール（2回だけ回る） */
#eva.intro .body{animation:spin .85s ease-in-out 2}
@keyframes spin{to{transform:rotate(360deg)}}

/* ── 吹き出し（展開中だけ出ます）── */
#eva .panel{background:rgba(8,30,22,.93);border:1px solid rgba(56,232,196,.42);
  border-left:2px solid var(--cyan);border-radius:8px;width:min(268px,66vw);
  box-shadow:0 18px 46px -22px #000;pointer-events:auto;
  visibility:var(--pv);opacity:var(--po);
  transform:translateY(calc((1 - var(--po)) * 8px)) scale(calc(.96 + var(--po) * .04));
  transform-origin:100% 100%;
  transition:opacity .24s ease,transform .24s cubic-bezier(.2,1.2,.4,1),visibility .24s}
#eva .who{font-family:var(--mono);font-size:9px;letter-spacing:.28em;color:var(--cyan);
  padding:10px 15px 0;display:flex;align-items:center;justify-content:space-between}
#eva .who .dot{width:5px;height:5px;border-radius:50%;background:var(--lime);
  animation:blip 2s ease-in-out infinite}
#eva .say{padding:7px 15px 12px;font-size:13px;line-height:1.85}
#eva .say b{color:var(--gold-lt);font-weight:600}
#eva .acts{display:flex;flex-wrap:wrap;gap:6px;padding:0 15px 11px}
#eva .acts button{font-family:var(--mono);font-size:10px;letter-spacing:.1em;
  border:1px solid var(--line);border-radius:2px;padding:6px 10px;color:var(--text-dim);
  transition:border-color .15s,color .15s,background .15s}
#eva .acts button:hover{border-color:var(--cyan);color:var(--cyan);background:rgba(56,232,196,.08)}

/* ── 対話の受け口（将来ここへ返答をつなぎます）── */
#eva .ask{display:flex;gap:6px;padding:0 12px 12px}
#eva .ask input{flex:1;min-width:0;background:rgba(56,232,196,.06);
  border:1px solid var(--line);border-radius:2px;padding:7px 9px;
  font-family:var(--sans);font-size:12px;color:var(--text)}
#eva .ask input::placeholder{color:var(--text-faint)}
#eva .ask input:focus{outline:0;border-color:var(--cyan);background:rgba(56,232,196,.10)}
#eva .ask button{flex:none;width:32px;border:1px solid var(--line);border-radius:2px;
  color:var(--cyan);font-size:11px;transition:border-color .15s,background .15s}
#eva .ask button:hover{border-color:var(--cyan);background:rgba(56,232,196,.12)}

.eye{animation:blink 5s infinite;transform-origin:center;transform-box:fill-box}
@keyframes blink{0%,93%,100%{transform:scaleY(1)}96%{transform:scaleY(.08)}}

/* ★ EVA の待機エリア。ここには文字も部品も置きません。
     オフィスの板は、この高さの手前で終わらせます。 */
#office{bottom:88px;border-bottom:1px solid var(--line)}

.skip{position:fixed;right:20px;top:18px;z-index:11;font-family:var(--mono);font-size:9.5px;
  letter-spacing:.24em;color:var(--text-faint);opacity:0;transition:opacity .3s}
.skip.on{opacity:1}
.skip:hover{color:var(--cyan)}

/* 音の入切（右上）。音はすべてその場で合成、外部通信なし */
.snd{position:fixed;right:20px;top:44px;z-index:11;display:flex;align-items:flex-end;
  gap:2px;height:15px;padding:4px 6px;border:1px solid var(--line);border-radius:2px;
  background:var(--panel);opacity:.55;transition:opacity .2s,border-color .2s}
.snd:hover{opacity:1;border-color:var(--cyan)}
.snd i{width:2.5px;height:3px;background:var(--text-faint);border-radius:1px}
.snd.on i{background:var(--cyan);animation:eq .9s ease-in-out infinite}
.snd.on i:nth-child(2){animation-delay:.15s}
.snd.on i:nth-child(3){animation-delay:.3s}
.snd.on i:nth-child(4){animation-delay:.45s}
@keyframes eq{0%,100%{height:3px}50%{height:11px}}

@media (prefers-reduced-motion:reduce){
  #eva svg,#eva.intro svg,.d,#eva .who .dot,.tag .win i,.snd.on i{animation:none}
  #office{transition:none}
}
@media (max-width:640px){
  .hud{padding:16px 15px 0}
  #cityMark{width:42px;right:14px;top:14px}
  #eva{gap:8px}
  #eva .panel{width:min(216px,64vw)}
  #eva .say{font-size:12px}
  #eva svg{width:50px;height:50px}
  #office{width:100vw}
  .tag .n{font-size:11px}
}

/* EVA が考えている間の表示 */
#eva .wait{color:var(--cyan);font-size:12px}
#eva .wait::after{content:'';animation:dots 1.2s steps(4,end) infinite}
@keyframes dots{0%{content:''}25%{content:'.'}50%{content:'..'}75%{content:'...'}}

/* ══════════ 本社タワー（街の中心・頂点） ══════════ */
#hq{position:absolute;transform:translate(-50%,-100%);pointer-events:auto;
  background:0;border:0;padding:0;display:flex;flex-direction:column;
  align-items:center;gap:0;z-index:5;opacity:0;transition:opacity .8s ease}
#hq.show{opacity:1}
#hq .crown{font-size:11px;color:var(--gold-lt);line-height:1;margin-bottom:3px;
  filter:drop-shadow(0 0 8px rgba(232,200,119,.8))}
#hq .tower{width:34px;height:118px;border-radius:3px 3px 0 0;
  background:linear-gradient(180deg,rgba(198,155,60,.30),rgba(198,155,60,.10));
  border:1px solid rgba(232,200,119,.42);
  box-shadow:0 0 26px -6px rgba(232,200,119,.55);
  display:flex;align-items:flex-start;justify-content:center;padding-top:8px}
#hq .wins{display:grid;grid-template-columns:repeat(3,1fr);gap:3px;width:22px}
#hq .wins i{width:5px;height:4px;border-radius:1px;background:rgba(232,200,119,.20);
  animation:hqwin 4.2s steps(1,end) infinite}
@keyframes hqwin{0%,50%{background:rgba(232,200,119,.20)}
  52%,80%{background:rgba(255,236,180,.95);box-shadow:0 0 6px rgba(232,200,119,.9)}
  82%,100%{background:rgba(232,200,119,.20)}}
#hq .plate{font-family:var(--mono);background:rgba(8,30,22,.90);
  border:1px solid rgba(232,200,119,.42);border-top:2px solid var(--gold-lt);
  border-radius:4px;padding:6px 12px;margin-top:-1px;white-space:nowrap;
  backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px);
  transition:transform .18s,box-shadow .18s}
#hq:hover .plate{transform:translateY(-3px);
  box-shadow:0 10px 28px -12px rgba(232,200,119,.75)}
#hq .plate b{display:block;font-size:11px;color:var(--gold-lt);letter-spacing:.14em}
#hq .plate em{display:block;font-style:normal;font-size:8.5px;color:var(--text-faint);
  letter-spacing:.16em;margin-top:2px}

/* ══════════ 代表の間 ══════════ */
#hqRoom{position:fixed;inset:0;z-index:12;
  display:flex;flex-direction:column;align-items:center;
  overflow-y:auto;padding:26px 24px 40px;
  background-color:#f0f7f2;
  background-image:
    radial-gradient(ellipse at 50% 0%,#ddf0e3 0%,#f0f7f2 50%),
    radial-gradient(ellipse at 80% 90%,rgba(245,230,234,.4) 0%,transparent 50%);
  opacity:0;visibility:hidden;
  transition:visibility 0s}
#hqRoom.on{opacity:1;visibility:visible}
#hqRoom>header,#hqRoom>.body{width:100%;max-width:760px}

#hqRoom .close{position:fixed;top:18px;right:22px;font-family:var(--mono);
  font-size:18px;color:#7a9b88;width:36px;height:36px;border-radius:50%;
  background:#fff;border:1px solid #c8ddd0;
  box-shadow:0 2px 8px rgba(0,0,0,.08);
  transition:color .15s,background .15s,box-shadow .15s;z-index:3}
#hqRoom .close:hover{color:#3a7d5c;background:#e8f5ee;box-shadow:0 4px 14px rgba(58,125,92,.18)}

#hqRoom header{padding:6px 0 20px}
#hqRoom .tag{font-family:var(--mono);font-size:9.5px;letter-spacing:.3em;
  color:#3a7d5c;margin-bottom:16px}
#hqRoom .who{display:flex;align-items:center;gap:22px;
  background:linear-gradient(135deg,#fff 60%,#e8f5ee);
  border-radius:16px;padding:24px 28px;
  box-shadow:0 4px 24px rgba(58,125,92,.10)}
#hqRoom .who svg{width:120px;height:auto;flex:none;
  filter:drop-shadow(0 8px 20px rgba(58,125,92,.25))}
#hqRoom .id strong{display:block;font-size:22px;letter-spacing:.08em;color:#1a3a28}
#hqRoom .id span{display:block;font-family:var(--mono);font-size:10.5px;
  letter-spacing:.22em;color:#3a7d5c;margin-top:6px}

#hqRoom .body{border-top:2px solid #3a7d5c;padding-top:24px;margin-top:8px}
#hqRoom h2{font-size:20px;color:#1a3a28;letter-spacing:.08em;margin-bottom:6px;font-weight:700}
#hqRoom .msgSub{font-family:var(--mono);font-size:11px;letter-spacing:.2em;
  color:#5a8c6a;margin-bottom:22px}
#hqRoom .body p{font-size:14px;line-height:2.15;color:#2a4a36;margin-bottom:17px;
  text-align:justify}
#hqRoom .sign{font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;
  color:#7a9b88;text-align:right;margin-top:14px}

/* メッセージタブ */
.msgTabs{display:flex;gap:4px;margin-bottom:20px}
.msgTab{font-family:var(--mono);font-size:11px;letter-spacing:.12em;
  padding:8px 18px;border-radius:20px;border:1px solid #c8ddd0;
  color:#5a8c6a;background:#fff;transition:all .2s}
.msgTab.on{background:#3a7d5c;color:#fff;border-color:#3a7d5c;
  box-shadow:0 2px 10px rgba(58,125,92,.3)}
.msgTab:hover:not(.on){background:#e8f5ee;border-color:#5aad7a}
.msgPane{display:none}
.msgPane.on{display:block}

.mEye{animation:blink 6s infinite;transform-origin:center;transform-box:fill-box}

@media(max-width:640px){
  #hqRoom{padding:22px 16px 36px}
  #hqRoom .who{flex-direction:column;align-items:flex-start;gap:14px;padding:18px 20px}
  #hqRoom .who svg{width:88px}
  #hqRoom .id strong{font-size:18px}
  #hqRoom .body p{font-size:13px;line-height:2}
  #hq .tower{height:92px}
  .msgTabs{flex-wrap:wrap}
  .msgTab{font-size:10px;padding:7px 14px}
}
@media(prefers-reduced-motion:reduce){#hq .wins i,.mEye{animation:none}}

/* ══════════ 連絡先の札（代表の間・お問い合わせの間で共通） ══════════ */
.ctBox{border:1px solid #c8ddd0;border-top:2px solid #3a7d5c;
  border-radius:12px;background:#fff;padding:24px 24px 20px;margin-top:30px;
  box-shadow:0 4px 20px rgba(58,125,92,.08)}
#ctRoom .ctBox{border-color:rgba(232,200,119,.24);border-top-color:var(--gold);
  background:rgba(3,11,14,.72);box-shadow:none;border-radius:4px}
.ctCap{font-family:var(--mono);font-size:9.5px;letter-spacing:.28em;
  color:#3a7d5c;margin-bottom:7px}
#ctRoom .ctCap{color:var(--gold-lt)}
.ctName{font-size:17px;letter-spacing:.04em;color:#1a3a28;margin-bottom:4px}
#ctRoom .ctName{color:#fff}
.ctCeo{font-size:12px;color:#5a8c6a;margin-bottom:18px}
#ctRoom .ctCeo{color:var(--text-dim)}
.ctCeo em{font-style:normal;font-family:var(--mono);font-size:10.5px;
  letter-spacing:.14em;color:#7a9b88;margin-left:8px}
#ctRoom .ctCeo em{color:var(--text-faint)}
.ctList{display:grid;grid-template-columns:5.4em 1fr;gap:1px;
  background:#c8ddd0;border:1px solid #c8ddd0;
  border-radius:8px;overflow:hidden}
#ctRoom .ctList{background:rgba(232,200,119,.18);border-color:rgba(232,200,119,.18);border-radius:3px}
.ctList dt,.ctList dd{background:#f8fbf9;padding:10px 12px;margin:0}
#ctRoom .ctList dt,#ctRoom .ctList dd{background:rgba(2,8,11,.9)}
.ctList dt{font-family:var(--mono);font-size:9.5px;letter-spacing:.16em;
  color:#3a7d5c;display:flex;align-items:center}
#ctRoom .ctList dt{color:var(--cyan)}
.ctList dd{font-size:13px;line-height:1.85;color:#2a4a36;word-break:break-word}
#ctRoom .ctList dd{color:#e4efeb}
.ctList .zip{font-family:var(--mono);font-size:11px;color:#7a9b88;
  letter-spacing:.06em;display:block;margin-bottom:2px}
.ctList a{color:#3a7d5c;text-decoration:none;
  border-bottom:1px solid rgba(58,125,92,.3)}
#ctRoom .ctList a{color:var(--gold-lt);border-bottom-color:rgba(232,200,119,.28)}
.ctList a:hover{border-bottom-color:#3a7d5c}
#ctRoom .ctList a:hover{border-bottom-color:var(--gold-lt)}
.ctList .note{display:block;font-size:10.5px;color:#7a9b88;margin-top:3px}
#ctRoom .ctList .note{color:var(--text-faint)}
.ctActs{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:18px}
.ctActs a{display:flex;align-items:center;justify-content:center;gap:6px;
  padding:12px 10px;border-radius:8px;font-size:13px;font-weight:600;
  text-decoration:none;transition:opacity .16s,transform .16s}
.ctActs a:hover{opacity:.88;transform:translateY(-1px)}
.ctActs .ctTel{background:linear-gradient(90deg,#3a7d5c,#2d6b4a);color:#fff;
  box-shadow:0 4px 14px rgba(58,125,92,.25)}
.ctActs .ctMail{background:#fff;
  border:1px solid #c8ddd0;color:#3a7d5c}
#ctRoom .ctActs .ctTel{background:linear-gradient(90deg,#17bd7c,#0e9a60)}
#ctRoom .ctActs .ctMail{background:rgba(232,200,119,.10);
  border-color:rgba(232,200,119,.34);color:var(--gold-lt)}

/* ══════════ お問い合わせの間 ══════════ */
#ctRoom{position:fixed;top:0;left:0;right:0;bottom:0;z-index:13;
  display:flex;align-items:center;justify-content:center;
  overflow-y:auto;padding:30px 22px;
  background:#081e16;
  opacity:0;visibility:hidden;transition:opacity .34s ease,visibility .34s}
#ctRoom::before{content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(ellipse at 50% -10%,#1a4d33 0%,#081e16 62%)}
#ctRoom .inner{position:relative;z-index:1}
#ctRoom.on{opacity:1;visibility:visible}
#ctRoom .inner{width:100%;max-width:560px}
#ctRoom .ctLogo{width:min(150px,42vw);height:auto;display:block;margin:0 auto 4px;
  filter:drop-shadow(0 0 26px rgba(56,232,196,.24)) drop-shadow(0 0 12px rgba(198,155,60,.3))}
#ctRoom .close{position:fixed;top:18px;right:22px;font-family:var(--mono);
  font-size:18px;color:var(--text-faint);width:36px;height:36px;border-radius:3px;
  background:rgba(4,14,18,.9);border:1px solid rgba(232,200,119,.28);z-index:3}
#ctRoom .close:hover{color:var(--gold-lt);background:rgba(232,200,119,.14)}
#ctRoom .ctNote{font-size:12px;color:var(--text-faint);text-align:center;
  margin-top:16px;line-height:1.9}
@media(max-width:560px){
  .ctList{grid-template-columns:4.6em 1fr}
  .ctList dt{font-size:9px;padding:9px 8px}
  .ctList dd{font-size:12.5px;padding:9px 10px}
  .ctActs{grid-template-columns:1fr}
}

/* ══════════ EVA の声 ══════════ */
/* 聞き取った言葉を映す帯 */
#eva .heard{max-height:0;overflow:hidden;opacity:0;
  font-size:12px;line-height:1.7;color:var(--cyan);
  padding:0 15px;transition:max-height .24s ease,opacity .24s ease,padding .24s ease}
#eva .heard.on{max-height:70px;opacity:1;padding:0 15px 9px}

/* マイクのボタン */
#eva .mic{flex:none;width:34px;height:34px;position:relative;
  border:1px solid var(--line);border-radius:2px;background:rgba(56,232,196,.06);
  color:var(--cyan);display:flex;align-items:center;justify-content:center;
  transition:border-color .16s,background .16s,color .16s}
#eva .mic svg{width:17px;height:17px;fill:currentColor;position:relative;z-index:1}
#eva .mic:hover{border-color:var(--cyan);background:rgba(56,232,196,.14)}
/* 聞いている時 ─ ふちが光って脈打ちます */
#eva .mic[data-state="listening"]{border-color:var(--lime);color:var(--lime);
  background:rgba(158,240,122,.14);
  box-shadow:0 0 0 1px var(--lime),0 0 16px -2px rgba(158,240,122,.7);
  animation:micPulse 1.3s ease-in-out infinite}
@keyframes micPulse{0%,100%{box-shadow:0 0 0 1px var(--lime),0 0 12px -3px rgba(158,240,122,.6)}
  50%{box-shadow:0 0 0 1px var(--lime),0 0 22px 0 rgba(158,240,122,.9)}}
/* 考えている時 */
#eva .mic[data-state="thinking"]{border-color:var(--gold-lt);color:var(--gold-lt);
  background:rgba(232,200,119,.12)}
/* 声の波（聞いている時だけ動きます） */
#eva .mic .wave{position:absolute;inset:0;display:none;
  align-items:center;justify-content:center;gap:2px;opacity:.5}
#eva .mic[data-state="listening"] .wave{display:flex}
#eva .mic[data-state="listening"] svg{opacity:.35}
#eva .mic .wave b{width:2px;height:5px;background:var(--lime);border-radius:1px;
  animation:micWave .9s ease-in-out infinite}
#eva .mic .wave b:nth-child(2){animation-delay:.15s}
#eva .mic .wave b:nth-child(3){animation-delay:.3s}
@keyframes micWave{0%,100%{height:5px}50%{height:15px}}

/* 声の入切 */
#eva .mute{flex:none;width:30px;border:1px solid var(--line);border-radius:2px;
  font-size:13px;line-height:1;background:0;transition:border-color .16s,background .16s}
#eva .mute:hover{border-color:var(--cyan);background:rgba(56,232,196,.1)}

/* EVA が話している間、そっと息づきます */
#eva.talking .body svg{animation:evaTalk 1.1s ease-in-out infinite}
@keyframes evaTalk{0%,100%{transform:scale(1)}50%{transform:scale(1.045)}}

@media(prefers-reduced-motion:reduce){
  #eva .mic[data-state="listening"],#eva .mic .wave b,#eva.talking .body svg{animation:none}
}
