/* ============================================================
   MJS バーチャル展示会 2026 ｜ 共通デザインテーマ
   expo-theme.css
   ------------------------------------------------------------
   世界観：「経営課題の街を歩こう」(MJS.バーチャル展示会マップ.png)
   使い方：<head>で読み込み、<body class="theme-green"> のように
           テーマ色クラスを付けるだけ。詳細は README.md 参照。
   ============================================================ */

/* ---------- 基本トークン（全ページ共通） ---------- */
:root{
  --cream:#F7EFDD; --cream2:#F1E4CB; --sand:#E7D3AC;
  --paper:#FFFFFF; --ink:#4A3B2A; --ink-soft:#7A6A54; --line:#E4D6BC;
  --wood:#C1895D; --wood-dark:#8C6239;
  --teal:#039DAD; --gold:#F7931E; --red:#E8483F; --hub:#2E4A87;
  --shadow:0 6px 20px rgba(120,95,55,.14);
  --shadow-lg:0 10px 28px rgba(120,95,55,.16);
  --radius:16px;
  /* シグネチャー色の既定（theme-* 未指定時はグリーン） */
  --key:#009245; --key-d:#00713a; --key-l:#DCEBCB; --key-ll:#EEF5E2;
}

/* ---------- テーマ色（街区シグネチャー） ----------
   製品/テーマ別に body へ付与。マップの街区色に準拠。 */
body.theme-green {--key:#009245; --key-d:#00713a; --key-l:#DCEBCB; --key-ll:#EEF5E2;} /* 給与・人事 */
body.theme-purple{--key:#93278F; --key-d:#6f1d6c; --key-l:#EBD6EA; --key-ll:#F6EAF5;} /* 契約・法務 (Galileopt街区) */
body.theme-teal  {--key:#039DAD; --key-d:#026f7b; --key-l:#D3ECEF; --key-ll:#E8F5F7;} /* 最新技術・Luca */
body.theme-lime  {--key:#7CB961; --key-d:#5d9445; --key-l:#E0EFCF; --key-ll:#F0F6E6;} /* 成長・MJSLINK */
body.theme-brown {--key:#C1895D; --key-d:#8C6239; --key-l:#EAD9C4; --key-ll:#F5ECDF;} /* 会計事務所 */
body.theme-blue  {--key:#2E4A87; --key-d:#213763; --key-l:#D6DEEE; --key-ll:#EAEFF7;} /* ハブ・その他 */

/* ---------- リセット & ベース ---------- */
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  font-family:"Noto Sans JP","Hiragino Kaku Gothic ProN",Meiryo,sans-serif;
  color:var(--ink); font-size:14px; line-height:1.6; min-height:100%;
  background:
    radial-gradient(1100px 500px at 82% -8%, var(--key-ll) 0%, rgba(255,255,255,0) 60%),
    radial-gradient(900px 480px at 8% 108%, #FBF4E4 0%, rgba(251,244,228,0) 55%),
    var(--cream);
}
a{color:var(--key-d)}

/* ---------- 地面（芝ライン） ---------- */
.ground{position:fixed;left:0;right:0;bottom:0;height:46px;z-index:0;
  background:linear-gradient(180deg,#CDE4A6 0%, #B9D889 100%);border-top:3px solid #A9CC77;}
.ground.tall{height:70px}
.ground::before{content:"";position:absolute;top:-9px;left:0;right:0;height:12px;
  background:radial-gradient(circle at 10px 12px,#B9D889 8px,transparent 9px) repeat-x;background-size:24px 12px;}
.ground .fence{position:absolute;bottom:8px;left:0;right:0;height:26px;
  background:repeating-linear-gradient(90deg,transparent 0 30px,#E8D9B5 30px 34px);opacity:.6}

/* ---------- ヘッダー ---------- */
.topbar{position:relative;z-index:2;display:flex;align-items:center;gap:14px;
  padding:12px 26px;background:linear-gradient(180deg,#FFFDF7,#F6ECD6);
  border-bottom:2px solid var(--sand);box-shadow:0 2px 0 rgba(255,255,255,.6) inset;}
.brand{display:flex;align-items:center;gap:9px;font-weight:800;letter-spacing:.03em;color:var(--wood-dark)}
.brand .logo{width:26px;height:26px;border-radius:7px;background:var(--wood);display:grid;place-items:center;
  color:#fff;font-size:12px;box-shadow:inset 0 -3px 0 rgba(0,0,0,.15)}
.brand small{font-size:10px;color:var(--ink-soft);font-weight:700;display:block}
.title-wrap{flex:1;min-width:0}
.title-wrap h1{font-size:17px;font-weight:800;color:var(--ink);display:flex;align-items:center;gap:8px}
.title-wrap h1 .pin{color:var(--key)}
.title-wrap p{font-size:11px;color:var(--ink-soft)}
.back{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:700;color:var(--wood-dark);
  text-decoration:none;background:#fff;border:1.5px solid var(--sand);padding:7px 13px;border-radius:20px;white-space:nowrap;transition:.2s}
.back:hover{background:var(--cream2);transform:translateX(-2px)}
.expo-tag{font-size:11px;font-weight:800;color:#fff;background:var(--teal);padding:6px 14px;border-radius:20px;box-shadow:0 3px 0 #027d8a}

/* ---------- レイアウト ---------- */
.wrap{position:relative;z-index:1;max-width:1180px;margin:0 auto;padding:18px 20px 70px;}
.lead{display:flex;align-items:center;gap:12px;margin:2px 2px 14px;color:var(--ink-soft);font-size:12.5px}
.lead .step{background:var(--key);color:#fff;font-weight:800;border-radius:16px;padding:4px 12px;font-size:11.5px;box-shadow:0 3px 0 var(--key-d)}
.grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.08fr);gap:18px;align-items:start}
@media (max-width:900px){.grid{grid-template-columns:1fr}}

/* ---------- カード（建物風） ---------- */
.card{background:var(--paper);border-radius:var(--radius);box-shadow:var(--shadow);border:1px solid var(--line);overflow:hidden}
.card-roof{background:var(--wood);height:12px;background-image:repeating-linear-gradient(45deg,rgba(0,0,0,.08) 0 8px,transparent 8px 16px)}
.card-body{padding:16px 18px 18px}
.card-h{display:flex;align-items:center;gap:9px;font-size:14px;font-weight:800;color:var(--ink);margin-bottom:12px}
.card-h .ic{width:26px;height:26px;border-radius:8px;display:grid;place-items:center;font-size:14px;color:#fff;background:var(--key)}

/* ---------- 入力グループ ---------- */
.group{background:var(--key-ll);border:1px solid var(--key-l);border-radius:12px;padding:12px 13px;margin-bottom:12px}
.group:last-child{margin-bottom:0}
.group-t{font-size:12px;font-weight:800;color:var(--key-d);margin-bottom:9px;display:flex;align-items:center;gap:7px}
.group-t .tag{font-size:10px;background:#fff;border:1px solid var(--key-l);color:var(--key-d);padding:1px 7px;border-radius:8px}
.row{display:grid;grid-template-columns:1fr 108px 44px;align-items:center;gap:8px;margin-bottom:7px}
.row:last-child{margin-bottom:0}
.row label{font-size:12px;color:var(--ink)}
.row .unit{font-size:10.5px;color:var(--ink-soft)}
.row.sub label{padding-left:14px;color:var(--ink-soft);font-size:11.5px}
input[type=number],input[type=text]{width:100%;padding:7px 9px;border:1.6px solid var(--gold);border-radius:8px;
  background:#FFFDF4;font-size:13px;color:var(--ink);text-align:right;font-variant-numeric:tabular-nums}
input[type=number]:focus,input[type=text]:focus{outline:none;border-color:var(--key);box-shadow:0 0 0 3px rgba(0,0,0,.08);background:#fff}
select{width:100%;padding:7px 9px;border:1.6px solid var(--gold);border-radius:8px;background:#FFFDF4;font-size:12.5px;color:var(--ink)}
select:focus{outline:none;border-color:var(--key)}
.auto{width:100%;padding:7px 9px;border:1.4px dashed var(--line);border-radius:8px;background:#F6F1E6;
  font-size:13px;color:var(--ink-soft);text-align:right;font-weight:700;font-variant-numeric:tabular-nums}
.hint{font-size:10.5px;color:var(--ink-soft);margin-top:6px;line-height:1.6}
.stamp-hint{font-size:10.5px;color:#8a5a00;background:#FFF7E4;border-left:3px solid var(--gold);
  padding:4px 9px;border-radius:0 6px 6px 0;margin:2px 0 6px}

/* ---------- ヒーロー（結果ハイライト） ---------- */
.hero{background:linear-gradient(135deg,var(--key) 0%,var(--key-d) 100%);color:#fff;border-radius:var(--radius);
  padding:18px 20px;box-shadow:var(--shadow);position:relative;overflow:hidden}
.hero::after{content:"";position:absolute;right:-30px;top:-30px;width:150px;height:150px;border-radius:50%;background:rgba(255,255,255,.08)}
.hero .cap{font-size:12px;opacity:.9;font-weight:700;display:flex;align-items:center;gap:7px}
.hero .big{font-size:40px;font-weight:900;letter-spacing:-1px;line-height:1.1;margin:4px 0 2px;font-variant-numeric:tabular-nums}
.hero .big .yen{font-size:22px;font-weight:800;margin-right:2px}
.hero .big .u{font-size:16px;font-weight:800;margin-left:3px}
.hero .sub{font-size:12.5px;opacity:.95}
.hero .rate{display:inline-flex;align-items:baseline;gap:4px;background:rgba(255,255,255,.16);border-radius:12px;padding:5px 12px;margin-top:9px;font-weight:800}
.hero .rate b{font-size:24px;font-variant-numeric:tabular-nums}
.hero .per{font-size:11px;opacity:.9;margin-top:8px}
.hero .per b{font-weight:800}

/* ---------- Before/After バー ---------- */
.bars{background:var(--paper);border-radius:var(--radius);box-shadow:var(--shadow);border:1px solid var(--line);padding:15px 18px;margin-top:14px}
.bars h3{font-size:12.5px;font-weight:800;color:var(--ink);margin-bottom:12px;display:flex;align-items:center;gap:7px}
.barline{margin-bottom:12px}.barline:last-child{margin-bottom:0}
.barline .bl-top{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:4px}
.barline .bl-name{font-size:12px;font-weight:700}
.barline .bl-name.paper{color:var(--ink-soft)}
.barline .bl-name.elec{color:var(--key-d)}
.barline .bl-val{font-size:14px;font-weight:800;font-variant-numeric:tabular-nums}
.track{height:26px;background:#F0EAD9;border-radius:8px;overflow:hidden}
.fill{height:100%;width:0;border-radius:8px;transition:width 1s cubic-bezier(.22,1,.36,1)}
.fill.paper{background:repeating-linear-gradient(45deg,#C9B48F 0 10px,#BFA783 10px 20px)}
.fill.elec{background:linear-gradient(90deg,var(--key),color-mix(in srgb,var(--key) 65%,#fff))}

/* ---------- 演出ステージ（Before→After が消える） ---------- */
.stage{background:var(--paper);border-radius:var(--radius);box-shadow:var(--shadow);border:1px solid var(--line);padding:15px 18px;margin-top:14px}
.stage h3{font-size:12.5px;font-weight:800;color:var(--ink);margin-bottom:6px;display:flex;align-items:center;gap:7px}
.stage .cap{font-size:11px;color:var(--ink-soft);margin-bottom:12px}
.scene{display:grid;grid-template-columns:1fr 44px 1fr;align-items:end;gap:6px;min-height:132px}
.side{display:flex;flex-direction:column;align-items:center;gap:8px}
.side .lab{font-size:11px;font-weight:800;padding:3px 10px;border-radius:12px}
.side.before .lab{background:#EDE3CE;color:var(--wood-dark)}
.side.after .lab{background:var(--key-l);color:var(--key-d)}
.count-badge{font-size:10.5px;color:var(--ink-soft);font-weight:700}
.arrow{align-self:center;font-size:22px;color:var(--key);animation:slidearr 1.4s ease-in-out infinite}
@keyframes slidearr{0%,100%{transform:translateX(-3px);opacity:.5}50%{transform:translateX(3px);opacity:1}}
/* 紙束 */
.paperstack{position:relative;width:74px;height:96px;display:flex;flex-direction:column-reverse;align-items:center;justify-content:flex-start}
.sheet{width:56px;height:9px;background:#fff;border:1px solid #E3D6B8;border-radius:2px;margin-top:-4px;
  box-shadow:0 1px 1px rgba(0,0,0,.06);position:relative;transition:transform .6s ease,opacity .6s ease}
.sheet::before{content:"";position:absolute;left:6px;right:22px;top:3px;height:1px;background:#E7DCC5}
.sheet.gone{transform:translate(60px,-70px) rotate(18deg);opacity:0}
/* 端末 */
.device{width:66px;height:96px;border-radius:12px;border:3px solid var(--hub);background:linear-gradient(160deg,#eef7ff,#d8ecff);
  position:relative;display:grid;place-items:center;box-shadow:0 4px 10px rgba(46,74,135,.18)}
.device::after{content:"";position:absolute;bottom:5px;width:22px;height:3px;border-radius:2px;background:var(--hub);opacity:.4}
.device .chk,.cloud .chk{font-size:30px;color:var(--key);opacity:0;transform:scale(.4);transition:.5s .4s}
.device.on .chk,.cloud.on .chk{opacity:1;transform:scale(1)}
/* クラウド */
.cloud{width:104px;height:74px;border-radius:38px;background:linear-gradient(160deg,#eef7ff,#dcecff);
  border:2px solid #bcd6f5;position:relative;display:grid;place-items:center;box-shadow:0 4px 10px rgba(46,74,135,.16)}
.cloud::before,.cloud::after{content:"";position:absolute;background:inherit;border:2px solid #bcd6f5;border-radius:50%}
.cloud::before{width:40px;height:40px;left:12px;top:-16px}
.cloud::after{width:52px;height:52px;right:10px;top:-24px}
.cloud .chk{z-index:1}

/* ---------- 内訳テーブル ---------- */
.detail{background:var(--paper);border-radius:var(--radius);box-shadow:var(--shadow);border:1px solid var(--line);margin-top:14px;overflow:hidden}
.detail .dh{padding:11px 16px;font-size:12.5px;font-weight:800;color:var(--ink);background:var(--cream2);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:7px}
.dcols{display:grid;grid-template-columns:1fr 1fr;gap:0}
@media (max-width:520px){.dcols{grid-template-columns:1fr}}
.dcol{border-right:1px solid var(--line)}.dcol:last-child{border-right:none}
.dcol .ch{padding:8px 14px;font-size:11.5px;font-weight:800;color:#fff}
.dcol .ch.paper{background:#9c8a6a}.dcol .ch.elec{background:var(--key)}
table.rt{width:100%;border-collapse:collapse}
.rt td{padding:7px 16px;font-size:12px;border-bottom:1px solid #F2ECDD}
.rt td:last-child{text-align:right;font-weight:700;font-variant-numeric:tabular-nums}
.rt tr:last-child td{border-bottom:none}
.rt .ind td:first-child{padding-left:28px;color:var(--ink-soft);font-weight:400}
.rt .tot td{background:var(--key-ll);font-weight:800;font-size:12.5px}

/* ---------- プラン表示 ---------- */
.plan{background:var(--key-ll);border:1px solid var(--key-l);border-radius:12px;padding:11px 14px;margin-top:14px}
.plan .pt{font-size:11.5px;font-weight:800;color:var(--key-d);margin-bottom:6px;display:flex;align-items:center;gap:6px}
.plan ul{list-style:none;font-size:12px;color:var(--ink)}
.plan li{padding:2px 0 2px 16px;position:relative}
.plan li::before{content:"●";color:var(--key);font-size:8px;position:absolute;left:2px;top:6px}

/* ---------- 注記 & CTA ---------- */
.foot{margin-top:16px;display:flex;gap:14px;flex-wrap:wrap;align-items:stretch}
.notes{flex:1;min-width:280px;background:#FBF6EA;border:1px solid var(--line);border-radius:12px;padding:12px 15px;font-size:11px;color:var(--ink-soft);line-height:1.8}
.notes li{margin-left:16px}
.cta{background:linear-gradient(135deg,var(--gold),#e07d0a);color:#fff;border-radius:12px;padding:14px 18px;min-width:210px;
  display:flex;flex-direction:column;justify-content:center;gap:6px;box-shadow:var(--shadow);text-decoration:none}
.cta b{font-size:14px;font-weight:800}.cta span{font-size:11px;opacity:.95}
.cta .go{align-self:flex-start;background:#fff;color:#d9760a;font-weight:800;font-size:11px;padding:5px 12px;border-radius:14px;margin-top:2px}

.footer{position:relative;z-index:2;text-align:center;color:var(--ink-soft);font-size:10.5px;padding:22px 10px 90px}

/* ============================================================
   ランディング（トップの街）用パーツ
   ============================================================ */
/* 空・流れる雲 */
.sky{position:fixed;inset:0;z-index:0;overflow:hidden;pointer-events:none}
.cloud-bg{position:absolute;background:#fff;border-radius:50px;opacity:.85;filter:drop-shadow(0 6px 10px rgba(120,95,55,.06));animation:drift linear infinite}
.cloud-bg::before,.cloud-bg::after{content:"";position:absolute;background:#fff;border-radius:50%}
.cloud-bg.c1{width:120px;height:40px;top:12%;left:-160px;animation-duration:46s}
.cloud-bg.c1::before{width:52px;height:52px;left:18px;top:-22px}.cloud-bg.c1::after{width:64px;height:64px;right:16px;top:-30px}
.cloud-bg.c2{width:90px;height:32px;top:26%;left:-160px;animation-duration:62s;animation-delay:-20s;opacity:.7}
.cloud-bg.c2::before{width:40px;height:40px;left:14px;top:-16px}.cloud-bg.c2::after{width:50px;height:50px;right:12px;top:-22px}
.cloud-bg.c3{width:150px;height:46px;top:8%;left:-200px;animation-duration:80s;animation-delay:-40s;opacity:.6}
.cloud-bg.c3::before{width:60px;height:60px;left:22px;top:-26px}.cloud-bg.c3::after{width:74px;height:74px;right:18px;top:-34px}
@keyframes drift{from{transform:translateX(0)}to{transform:translateX(calc(100vw + 260px))}}

/* リボン看板 */
.hero-town{position:relative;z-index:2;text-align:center;padding:22px 16px 6px}
.ribbon{display:inline-block;background:var(--teal);color:#fff;font-weight:800;font-size:12px;letter-spacing:.08em;
  padding:6px 22px;border-radius:6px;position:relative;box-shadow:0 4px 0 #027d8a;margin-bottom:14px}
.ribbon::before,.ribbon::after{content:"";position:absolute;top:0;border:14px solid var(--teal);border-bottom-width:13px}
.ribbon::before{left:-16px;border-left-color:transparent}
.ribbon::after{right:-16px;border-right-color:transparent}
.hero-town h1{font-size:34px;font-weight:900;color:var(--ink);line-height:1.25;text-shadow:0 2px 0 #fff}
.hero-town p{margin-top:8px;font-size:14px;color:var(--ink-soft);font-weight:600}
.hero-town .sub{margin-top:3px;font-size:12px;color:var(--ink-soft)}

/* 建物（入口カード） */
.town{position:relative;z-index:2;max-width:1000px;margin:6px auto 0;padding:16px 24px 0;display:grid;gap:34px;align-items:end}
.town.cols-2{grid-template-columns:1fr 1fr}
.town.cols-3{grid-template-columns:repeat(3,1fr)}
@media (max-width:820px){.town.cols-2,.town.cols-3{grid-template-columns:1fr;gap:22px}}
.bldg{position:relative;text-decoration:none;color:inherit;display:block;transition:transform .28s cubic-bezier(.34,1.56,.64,1)}
.bldg:hover{transform:translateY(-10px)}
.bldg:focus-visible{outline:3px solid var(--gold);outline-offset:6px;border-radius:20px}
.house{background:var(--paper);border:1px solid var(--line);border-radius:16px 16px 14px 14px;box-shadow:var(--shadow-lg);overflow:hidden;position:relative}
.house::after{content:"";position:absolute;left:0;right:0;bottom:0;height:0;background:linear-gradient(180deg,transparent,rgba(255,214,120,.16));transition:height .3s}
.bldg:hover .house::after{height:60%}
.roof{height:56px;position:relative;display:grid;place-items:center;color:#fff;background:linear-gradient(180deg,var(--roof-c,var(--key)),var(--roof-d,var(--key-d)))}
.roof .chimney{position:absolute;right:26px;top:-16px;width:16px;height:22px;border-radius:3px;background:var(--roof-d,var(--key-d))}
.roof .flag{position:absolute;left:50%;top:-30px;transform:translateX(-50%);width:2px;height:30px;background:var(--wood-dark)}
.roof .flag::after{content:"";position:absolute;top:0;left:2px;width:26px;height:16px;border-radius:2px;background:var(--roof-c,var(--key));animation:wave 2.4s ease-in-out infinite}
@keyframes wave{0%,100%{clip-path:polygon(0 0,100% 0,100% 100%,0 100%)}50%{clip-path:polygon(0 8%,100% 0,100% 92%,0 100%)}}
.plate{padding:16px 20px 18px;text-align:center}
.plate .emoji{font-size:44px;line-height:1;filter:drop-shadow(0 4px 6px rgba(0,0,0,.12));display:inline-block;transition:transform .3s}
.bldg:hover .plate .emoji{transform:scale(1.12) rotate(-4deg)}
.plate .badge{display:inline-block;font-size:11px;font-weight:800;padding:4px 12px;border-radius:14px;margin:10px 0 6px;background:var(--key-l);color:var(--key-d)}
.plate h2{font-size:20px;font-weight:900;color:var(--ink);margin-bottom:4px}
.plate .lead-txt{font-size:12.5px;color:var(--ink-soft);min-height:38px}
.plate .prod{font-size:11px;color:var(--ink-soft);margin-top:6px;font-weight:700}
.enter{display:inline-flex;align-items:center;gap:8px;margin-top:14px;font-weight:800;font-size:13px;color:#fff;
  padding:10px 22px;border-radius:24px;background:var(--key);box-shadow:0 4px 0 var(--key-d);transition:.2s}
.bldg:hover .enter{filter:brightness(1.06)}
.enter .ar{transition:transform .2s}.bldg:hover .enter .ar{transform:translateX(4px)}

/* 案内キャラ（モンキー吹き出し） */
.guide{position:relative;z-index:2;max-width:1000px;margin:16px auto 0;padding:0 24px;display:flex;align-items:center;gap:12px;justify-content:center}
.guide .face{font-size:34px;animation:bob 2.2s ease-in-out infinite}
@keyframes bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
.bubble{background:#fff;border:1.5px solid var(--sand);border-radius:16px;padding:10px 16px;font-size:12.5px;color:var(--ink);font-weight:600;position:relative;box-shadow:var(--shadow);max-width:520px}
.bubble::after{content:"";position:absolute;left:-9px;top:50%;transform:translateY(-50%);border:8px solid transparent;border-right-color:#fff}
.bubble b{color:var(--key)}

/* 動きを減らす設定のユーザーへの配慮 */
@media (prefers-reduced-motion:reduce){
  *{animation:none!important}
  .fill{transition:none}
}
