/* ===== HBTI:紫×虹色のパチンコ演出風テーマ ===== */
:root{
  --bg:#1a0b2e; --card:rgba(40,18,72,.88); --ink:#f6f0ff; --sub:#bba9dc; --line:rgba(255,226,122,.28);
  --a:#33e0a1; --b:#ff4fa8; --accent:#ffd54a; --soft:rgba(255,213,74,.12); --radius:16px;
  --rainbow:linear-gradient(180deg,#ff3b3b 0%,#ff9a1f 18%,#ffe82e 36%,#39e36a 52%,#2ec5ff 68%,#5a5cff 84%,#c64bff 100%);
  --rainbow-x:linear-gradient(90deg,#ff3b3b,#ff9a1f,#ffe82e,#39e36a,#2ec5ff,#5a5cff,#c64bff);
  --gold:linear-gradient(90deg,#ffd54a,#fff3b0,#ffd54a);
}
*{box-sizing:border-box}
html{background:var(--bg)}
body{margin:0;min-height:100vh;color:var(--ink);font-family:"Hiragino Sans","Noto Sans JP",system-ui,sans-serif;line-height:1.7;
  background:
    radial-gradient(ellipse at 50% 0%,rgba(255,79,168,.45) 0%,rgba(122,44,255,.35) 35%,rgba(26,11,46,0) 70%),
    repeating-conic-gradient(from 0deg at 50% -10%,rgba(255,255,255,.045) 0deg 5deg,rgba(255,255,255,0) 5deg 10deg),
    var(--bg);
  background-attachment:fixed}
a{color:var(--accent)}
.wrap{max-width:760px;margin:0 auto;padding:24px 18px 80px}

/* ロゴ */
header{text-align:center;padding:14px 0 6px}
header .logo{display:inline-block;font-family:"Arial Black","Hiragino Sans",sans-serif;font-weight:900;font-size:30px;letter-spacing:.02em;
  background:var(--rainbow);-webkit-background-clip:text;background-clip:text;color:transparent;
  -webkit-text-stroke:1px rgba(255,226,122,.9);filter:drop-shadow(0 0 8px rgba(255,213,74,.55)) drop-shadow(0 2px 0 #0d0518)}
header .logo span{color:transparent}
header .logo a{color:inherit}

/* カード */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:24px;margin:16px 0;
  box-shadow:0 0 0 1px rgba(198,75,255,.15) inset,0 10px 30px rgba(0,0,0,.35),0 0 24px rgba(198,75,255,.18);backdrop-filter:blur(4px)}
h1{font-size:26px;margin:.2em 0 .4em;text-align:center;font-weight:900}
h2{font-size:18px;margin:0 0 12px;font-weight:900}
.lead{color:var(--sub);text-align:center;margin:0 0 8px}
.note{font-size:12px;color:var(--sub)}
.center{text-align:center}
.hidden{display:none !important}
.gate{max-width:440px;margin:12vh auto 0}

/* 虹色の大見出し(トップのHBTI) */
.hero{font-family:"Arial Black","Hiragino Sans",sans-serif;font-size:64px;line-height:1.05;font-weight:900;letter-spacing:.02em;
  background:var(--rainbow);-webkit-background-clip:text;background-clip:text;color:transparent;
  -webkit-text-stroke:2px #ffe27a;filter:drop-shadow(0 0 12px rgba(255,213,74,.6)) drop-shadow(0 4px 0 #0d0518)}
.ribbon{display:inline-block;font-weight:900;color:#1a0b2e;background:var(--gold);padding:4px 18px;border-radius:999px;
  transform:rotate(-3deg);box-shadow:0 0 16px rgba(255,213,74,.7);font-size:14px;margin-bottom:8px}

/* ボタン */
.btn{display:inline-block;border:0;border-radius:999px;padding:14px 30px;font-size:16px;font-weight:900;cursor:pointer;text-decoration:none;
  color:#1a0b2e;background:var(--gold);box-shadow:0 0 0 2px #1a0b2e,0 0 0 4px #ffe27a,0 0 22px rgba(255,213,74,.65);
  transition:transform .1s,filter .15s}
.btn:hover{filter:brightness(1.08)}
.btn:active{transform:scale(.97)}
.btn.ghost{background:transparent;color:var(--ink);box-shadow:0 0 0 1px var(--line)}
.btn.sm{padding:8px 16px;font-size:13px}
.btn:disabled{opacity:.35;cursor:not-allowed;filter:grayscale(.6)}
.btns{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}

/* 任意入力 */
.opt{display:grid;gap:14px;margin:18px 0 6px;text-align:left}
.opt label{font-size:13px;font-weight:900;display:block;margin-bottom:6px;color:var(--accent)}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{border:1px solid var(--line);background:rgba(255,255,255,.05);color:var(--ink);border-radius:999px;padding:6px 14px;font-size:13px;cursor:pointer}
.chip.on{background:var(--rainbow-x);color:#1a0b2e;border-color:transparent;font-weight:900;box-shadow:0 0 12px rgba(255,255,255,.35)}

/* 進捗 */
.progress{position:sticky;top:0;background:rgba(26,11,46,.92);padding:10px 0;z-index:5}
.bar{height:10px;background:rgba(255,255,255,.1);border-radius:99px;overflow:hidden}
.bar i{display:block;height:100%;width:0;background:var(--rainbow-x);transition:width .3s;box-shadow:0 0 10px rgba(255,255,255,.5)}
.ptext{font-size:12px;color:var(--sub);text-align:right;margin-top:4px}

/* 質問 */
.q{padding:22px 0;border-bottom:1px solid rgba(255,255,255,.08);transition:opacity .2s}
.q:last-child{border-bottom:0}
.q.done{opacity:.4}
.q p{text-align:center;font-weight:900;margin:0 0 14px}
.scale{display:flex;align-items:center;justify-content:center;gap:10px}
.scale .lab{font-size:12px;font-weight:900;white-space:nowrap}
.scale .lab.l{color:var(--a)} .scale .lab.r{color:var(--b)}
.dot{border-radius:50%;border:2px solid;background:transparent;cursor:pointer;padding:0;transition:background .15s,transform .1s,box-shadow .15s}
.dot:active{transform:scale(.9)}
.dot[data-v="3"],.dot[data-v="-3"]{width:46px;height:46px}
.dot[data-v="2"],.dot[data-v="-2"]{width:38px;height:38px}
.dot[data-v="1"],.dot[data-v="-1"]{width:30px;height:30px}
.dot[data-v="0"]{width:24px;height:24px;border-color:#8a7aa8}
.dot.pos{border-color:var(--a)} .dot.neg{border-color:var(--b)}
.dot.pos.on{background:var(--a);box-shadow:0 0 14px var(--a)}
.dot.neg.on{background:var(--b);box-shadow:0 0 14px var(--b)}
.dot[data-v="0"].on{background:#8a7aa8}
@media (max-width:480px){.scale{gap:5px}.scale .lab{font-size:10px}
 .dot[data-v="3"],.dot[data-v="-3"]{width:38px;height:38px}.dot[data-v="2"],.dot[data-v="-2"]{width:32px;height:32px}.dot[data-v="1"],.dot[data-v="-1"]{width:26px;height:26px}
 .hero{font-size:52px}}

/* 結果 */
.emoji{font-size:60px;text-align:center;line-height:1.2;margin:4px 0 0;filter:drop-shadow(0 0 14px rgba(255,255,255,.5))}
.tname{font-size:30px;font-weight:900;text-align:center;margin:0;line-height:1.3;
  background:var(--rainbow);-webkit-background-clip:text;background-clip:text;color:transparent;
  -webkit-text-stroke:1px #ffe27a;filter:drop-shadow(0 0 8px rgba(255,213,74,.5)) drop-shadow(0 3px 0 #0d0518)}
.code{font-family:"Arial Black",sans-serif;font-size:16px;font-weight:900;letter-spacing:.35em;text-align:center;color:var(--accent);margin:6px 0 0}
.aru{background:var(--soft);border:1px solid var(--line);border-radius:12px;padding:10px 14px;text-align:center;font-weight:900;margin:14px 0;color:#fff3b0}
.axis{margin:16px 0}
.axis .row{display:flex;justify-content:space-between;font-size:13px;font-weight:900}
.axis .track{height:12px;background:rgba(255,255,255,.1);border-radius:99px;position:relative;overflow:hidden;margin-top:4px}
.axis .track i{position:absolute;top:0;bottom:0;background:var(--rainbow-x);border-radius:99px;box-shadow:0 0 10px rgba(255,255,255,.4)}
.axis .cm{font-size:13px;color:var(--sub);margin-top:4px}
.match{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.match > div{border:1px solid var(--line);border-radius:12px;padding:12px;text-align:center;background:rgba(255,255,255,.04)}
.match .e{font-size:34px}
.match b{display:block;color:#fff3b0}

/* おすすめ */
.filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.rec{display:grid;gap:12px}
.cr{border:1px solid var(--line);border-radius:12px;padding:14px;display:flex;gap:12px;align-items:flex-start;background:rgba(255,255,255,.04)}
.cr .body{flex:1}
.cr a.name{font-weight:900;color:#fff;text-decoration:none}
.cr .pr{font-size:11px;background:rgba(255,255,255,.15);border-radius:4px;padding:1px 6px;margin-left:6px;color:var(--sub)}
.cr .new{font-size:11px;background:var(--b);color:#fff;border-radius:4px;padding:1px 6px;margin-left:4px;font-weight:900}
.fav{border:1px solid var(--line);background:transparent;color:var(--sub);border-radius:999px;width:36px;height:36px;cursor:pointer;font-size:16px}
.fav.on{background:var(--b);border-color:var(--b);color:#fff;box-shadow:0 0 12px var(--b)}
.ph{border:1px dashed var(--line);border-radius:12px;padding:14px;color:var(--sub);font-size:14px}
canvas{display:none}

/* 記事ページ */
.article h1{text-align:left;font-size:22px}
.article h2{font-size:18px;margin:28px 0 8px;padding-left:10px;border-left:4px solid var(--accent)}
.article p,.article li{font-size:15px}
.crumb{font-size:12px;color:var(--sub)}
.crumb a,.foot a{color:var(--sub)}
.typegrid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.typegrid > div{border:1px solid var(--line);border-radius:12px;padding:12px;background:rgba(255,255,255,.04)}
.typegrid b{color:#fff3b0}
.typegrid .e{font-size:28px}
@media (max-width:480px){.typegrid{grid-template-columns:1fr}}
