/* Product Team Map: 3D office fills its container (#tm-shell), TELOS-token UI floats on top (top bar, quest card, detail panel, minimap) */
:root{
  --bg:#FAF8FC; --surface:#FFFFFF; --surface-alt:#F2EEFA;
  --ink:#1C1033; --ink-soft:#5B5270; --ink-faint:#8A82A0; --line:#E3DDF0;
  --accent:#C81F68; --accent-strong:#A5175A; --accent-soft:#F7E0EC;
  --cyan:#0B7A93; --cyan-soft:#DEF4FA; --yellow:#8A5D00; --yellow-soft:#FFF1D1;
  --indigo-deep:#170B3D; --indigo-deep-2:#241354; --on-indigo:#F4F0FB; --on-indigo-soft:#BEB3DA; --on-indigo-line:#3A2C68;
  --chip-pink:#E92F7C; --chip-cyan:#35C6E8; --chip-yellow:#FFC53D;
  --scene-bg:#EEE9F8; --scene-floor:#F7F4FC;
  --shadow:0 20px 44px -28px rgba(28,16,51,.35);
  --radius-s:6px; --radius-m:14px;
  --font-display:'Google Sans','Be Vietnam Pro','Segoe UI',sans-serif;
  --font-body:'Be Vietnam Pro','Segoe UI',system-ui,sans-serif;
  --font-caption:'Oswald','Be Vietnam Pro','Segoe UI',sans-serif;
  --font-mono:'JetBrains Mono',ui-monospace,'SFMono-Regular',monospace;
}
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]){
  --bg:#120A2B; --surface:#1B1140; --surface-alt:#221650; --ink:#F4F0FB; --ink-soft:#BEB3DA; --ink-faint:#8B7FAE; --line:#3A2C68;
  --accent:#FF6BA8; --accent-strong:#FF8CBB; --accent-soft:#3A1A34; --cyan:#5FD3EE; --cyan-soft:#12324A; --yellow:#FFC53D; --yellow-soft:#3A2E12;
  --scene-bg:#1A1238; --scene-floor:#2A2052; --shadow:0 20px 44px -24px rgba(0,0,0,.6); color-scheme:dark; } }
:root[data-theme="dark"]{
  --bg:#120A2B; --surface:#1B1140; --surface-alt:#221650; --ink:#F4F0FB; --ink-soft:#BEB3DA; --ink-faint:#8B7FAE; --line:#3A2C68;
  --accent:#FF6BA8; --accent-strong:#FF8CBB; --accent-soft:#3A1A34; --cyan:#5FD3EE; --cyan-soft:#12324A; --yellow:#FFC53D; --yellow-soft:#3A2E12;
  --scene-bg:#1A1238; --scene-floor:#2A2052; --shadow:0 20px 44px -24px rgba(0,0,0,.6); color-scheme:dark; }

[hidden]{display:none!important;}
#app{position:absolute;inset:0;overflow:hidden;background:var(--scene-bg);color:var(--ink);font-family:var(--font-body);font-size:14px;line-height:normal;}
#dbg{position:absolute;left:50%;top:70px;transform:translateX(-50%);z-index:20;font:12px/1.5 var(--font-mono);background:var(--indigo-deep);color:var(--on-indigo);padding:10px 12px;border-radius:8px;white-space:pre;pointer-events:none;}
#stage{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none;cursor:grab;}

#overlay{position:absolute;inset:0;pointer-events:none;overflow:hidden;}
#app button{font-family:inherit;}
#app :focus-visible{outline:2px solid var(--chip-cyan);outline-offset:2px;}

/* top bar */
.topbar{position:absolute;left:0;right:0;top:0;padding:calc(10px + env(safe-area-inset-top,0px)) 16px 10px;display:flex;gap:10px;align-items:center;flex-wrap:wrap;pointer-events:none;z-index:5;}
.topbar > *{pointer-events:auto;}
.seg{display:flex;background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:3px;box-shadow:var(--shadow);}
.seg button{border:0;background:transparent;color:var(--ink-soft);padding:7px 13px;border-radius:999px;font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap;}
.seg button[aria-pressed="true"]{background:var(--ink);color:var(--bg);}
.seg.modes button[aria-pressed="true"]{background:var(--accent);color:#fff;}
.spacer{flex:1;}
.icon-btn{border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:999px;padding:8px 14px;font-size:13px;font-weight:600;cursor:pointer;box-shadow:var(--shadow);}
.icon-btn:hover{border-color:var(--ink-faint);}

/* labels in scene */
.lbl{position:absolute;left:0;top:0;transform:translate(-50%,-100%);white-space:nowrap;pointer-events:none;will-change:transform;}
.room-lbl{font-family:var(--font-caption);text-transform:uppercase;letter-spacing:.06em;font-size:11px;color:var(--ink-soft);background:color-mix(in srgb,var(--surface) 85%,transparent);border:1px solid var(--line);padding:3px 8px;border-radius:5px;}
.room-lbl b{color:var(--ink);font-weight:600;margin-left:4px;}
.name-lbl{font-size:11.5px;font-weight:600;color:var(--ink);background:var(--surface);border:1px solid var(--line);padding:3px 8px;border-radius:999px;box-shadow:0 6px 14px -8px rgba(28,16,51,.4);}
.name-lbl::after{content:"";position:absolute;left:50%;bottom:-5px;width:8px;height:8px;background:inherit;border-right:inherit;border-bottom:inherit;transform:translateX(-50%) rotate(45deg);}
.name-lbl.vip{background:var(--chip-yellow);color:var(--indigo-deep);border-color:transparent;}
.name-lbl.me{background:var(--accent);color:#fff;border-color:transparent;}
.bubble{margin-top:-4px;font-size:12px;color:var(--ink);background:var(--surface);border:1px solid var(--line);padding:7px 10px;border-radius:12px;max-width:220px;white-space:normal;box-shadow:var(--shadow);line-height:1.4;}
.bubble small{display:block;color:var(--ink-faint);font-family:var(--font-caption);letter-spacing:.05em;text-transform:uppercase;font-size:10px;margin-bottom:2px;}
.bubble kbd{font-family:var(--font-mono);font-size:10.5px;background:var(--surface-alt);border:1px solid var(--line);border-radius:4px;padding:0 4px;}
.qmark{font-family:var(--font-display);font-weight:800;font-size:22px;line-height:1;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;color:var(--indigo-deep);background:var(--chip-yellow);border:2px solid var(--indigo-deep);animation:bob 1.1s ease-in-out infinite;}
.qmark.turn{background:var(--chip-cyan);}
.qmark.step{background:var(--chip-pink);color:#fff;font-size:15px;}
@keyframes bob{50%{margin-top:-6px;}}
.chat{font-family:var(--font-display);font-weight:800;font-size:15px;line-height:1;color:var(--accent);background:var(--surface);border:1.5px solid var(--ink);border-radius:12px;padding:7px 11px;min-width:30px;text-align:center;box-shadow:0 6px 14px -8px rgba(28,16,51,.45);margin-top:-8px;}
.chat::after{content:"";position:absolute;left:12px;bottom:-5px;width:8px;height:8px;background:var(--surface);border-right:1.5px solid var(--ink);border-bottom:1.5px solid var(--ink);transform:rotate(45deg);}
.dots{display:inline-flex;gap:3px;align-items:center;height:9px;}
.dots i{width:6px;height:6px;border-radius:50%;background:var(--ink);animation:dot 1s ease-in-out infinite;}
.dots i:nth-child(2){animation-delay:.15s;} .dots i:nth-child(3){animation-delay:.3s;}
@keyframes dot{40%{transform:translateY(-3px);opacity:.5;}}
.qbar{margin-top:8px;height:6px;border-radius:3px;background:var(--line);overflow:hidden;}
.qbar i{display:block;height:100%;width:0;background:var(--accent);border-radius:3px;}
.objhint{font-size:12px;color:var(--ink-faint);}
@media (prefers-reduced-motion: reduce){.dots i{animation:none;}}
@media (prefers-reduced-motion: reduce){.qmark{animation:none;}}

/* cards */
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-m);box-shadow:var(--shadow);}
.eyebrow{font-family:var(--font-caption);font-weight:500;letter-spacing:.07em;text-transform:uppercase;font-size:11px;color:var(--accent);display:flex;align-items:center;gap:6px;margin:0;}
.eyebrow::before{content:"◆";font-size:8px;}

#quest{position:absolute;left:16px;top:76px;width:300px;max-width:calc(100% - 32px);padding:14px 16px;pointer-events:auto;z-index:4;}
#quest h3{font-family:var(--font-display);font-size:16px;margin:6px 0 4px;text-wrap:balance;}
#quest p{margin:0;color:var(--ink-soft);font-size:13px;line-height:1.5;}
.qprog{display:flex;gap:4px;margin-top:10px;}
.qprog i{flex:1;height:5px;border-radius:3px;background:var(--line);}
.qprog i.done{background:var(--chip-cyan);}
.qprog i.now{background:var(--accent);}
.objective{margin-top:10px;padding:8px 10px;background:var(--surface-alt);border-radius:8px;font-size:13px;color:var(--ink);display:flex;gap:8px;align-items:flex-start;}
.objective::before{content:"";flex:none;width:9px;height:9px;margin-top:4px;border-radius:2px;background:var(--accent);transform:rotate(45deg);}

#panel{position:absolute;right:16px;top:76px;width:330px;max-width:calc(100% - 32px);max-height:calc(100% - 100px);overflow:auto;padding:18px;pointer-events:auto;z-index:6;}
#panel h2{font-family:var(--font-display);font-size:20px;margin:8px 0 6px;line-height:1.2;}
.chips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px;}
.chip{font-family:var(--font-caption);font-weight:500;letter-spacing:.04em;text-transform:uppercase;font-size:10.5px;padding:3px 8px;border-radius:5px;background:var(--surface-alt);color:var(--ink-soft);display:inline-flex;align-items:center;gap:5px;}
.chip .sw{width:8px;height:8px;border-radius:50%;}
.chip.pub{background:var(--cyan-soft);color:var(--cyan);}
.chip.draft{background:var(--yellow-soft);color:var(--yellow);}
.chip.todo{background:var(--accent-soft);color:var(--accent);}
.sec{margin-top:12px;}
.sec h4{font-family:var(--font-caption);font-weight:500;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint);margin:0 0 4px;}
.sec p{margin:0;line-height:1.55;color:var(--ink);font-size:13.5px;}
.row{display:flex;gap:8px;margin-top:16px;flex-wrap:wrap;}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 18px;border-radius:999px;border:1px solid transparent;font-size:13.5px;font-weight:600;cursor:pointer;text-decoration:none;}
.btn-primary{background:var(--accent);color:#fff;}
.btn-primary:hover{background:var(--accent-strong);}
.btn-ghost{border-color:var(--line);color:var(--ink);background:transparent;}
.btn-ghost:hover{border-color:var(--ink-faint);}
.btn[disabled],.btn.is-disabled{opacity:.55;cursor:default;pointer-events:none;}
#panel .btn.is-disabled{pointer-events:auto;cursor:not-allowed;} /* still clickable so GA can count "tm_article_missing" */
.close{position:absolute;right:10px;top:10px;border:0;background:transparent;color:var(--ink-faint);font-size:20px;cursor:pointer;width:32px;height:32px;border-radius:50%;}
.close:hover{background:var(--surface-alt);color:var(--ink);}

#dialog{position:absolute;left:50%;bottom:22px;transform:translateX(-50%);width:560px;max-width:calc(100% - 32px);padding:16px 18px;pointer-events:auto;z-index:7;background:var(--indigo-deep);color:var(--on-indigo);border:1px solid var(--on-indigo-line);}
#dialog .who{font-family:var(--font-caption);letter-spacing:.06em;text-transform:uppercase;font-size:11.5px;color:var(--chip-yellow);}
#dialog p{margin:6px 0 0;font-size:15px;line-height:1.55;}
#dialog .row{margin-top:12px;}
#dialog .btn-ghost{color:var(--on-indigo);border-color:var(--on-indigo-line);}

#hint{position:absolute;left:16px;bottom:16px;padding:10px 12px;font-size:12px;color:var(--ink-soft);pointer-events:auto;max-width:calc(100% - 340px);}
#hint kbd{font-family:var(--font-mono);font-size:11px;background:var(--surface-alt);border:1px solid var(--line);border-radius:4px;padding:1px 5px;color:var(--ink);}
#hint span{white-space:nowrap;margin-right:10px;display:inline-block;}

#mini{padding:10px;pointer-events:auto;}
.dock{position:absolute;right:16px;bottom:16px;display:flex;align-items:flex-end;gap:10px;pointer-events:none;z-index:5;}
.dock > *{pointer-events:auto;}
#mini canvas{display:block;border-radius:8px;background:var(--surface-alt);}
#mini .met{display:flex;justify-content:space-between;font-size:12px;color:var(--ink-soft);margin-top:6px;font-variant-numeric:tabular-nums;}
#mini .met b{color:var(--ink);}
.zoom{display:flex;gap:4px;}
.zoom button{border:1px solid var(--line);background:var(--surface);color:var(--ink);width:24px;height:22px;border-radius:6px;cursor:pointer;font-weight:700;line-height:1;}

.gfilter{display:flex;flex-wrap:wrap;gap:6px;}
.gfilter button{border:1px solid var(--line);background:var(--surface);color:var(--ink-soft);border-radius:999px;padding:4px 10px 4px 7px;font-size:12px;cursor:pointer;display:inline-flex;align-items:center;gap:6px;}
.gfilter button[aria-pressed="false"]{opacity:.45;}
.gfilter .sw{width:10px;height:10px;border-radius:50%;}

#roomintro{position:absolute;left:16px;bottom:72px;width:380px;max-width:calc(100% - 32px);padding:14px 40px 12px 16px;pointer-events:auto;z-index:4;animation:ri-in .25s ease-out;}
#roomintro h3{font-family:var(--font-display);font-size:17px;margin:4px 0 4px;}
#roomintro p{margin:0;color:var(--ink-soft);font-size:13px;line-height:1.55;}
#roomintro .close{top:6px;right:6px;}
.ri-foot{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:10px;font-size:12px;color:var(--ink-faint);flex-wrap:wrap;}
.ri-off{border:0;background:transparent;color:var(--accent);font-weight:600;font-size:12px;cursor:pointer;padding:2px 0;text-decoration:underline;text-underline-offset:3px;}
@keyframes ri-in{from{opacity:0;transform:translateY(6px);}}
@media (prefers-reduced-motion: reduce){#roomintro{animation:none;}}
#welcome{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:440px;max-width:calc(100% - 32px);padding:22px 24px;pointer-events:auto;z-index:8;}
#welcome h1{font-family:var(--font-display);font-size:24px;line-height:1.2;margin:8px 0 8px;text-wrap:balance;}
#welcome p{margin:0 0 8px;color:var(--ink-soft);line-height:1.6;}

#modal{position:absolute;inset:0;background:rgba(18,10,43,.45);display:grid;place-items:center;pointer-events:auto;z-index:9;padding:16px;}
#modal .card{width:520px;max-width:100%;max-height:100%;overflow:auto;padding:22px;position:relative;}
#modal h2{font-family:var(--font-display);font-size:21px;margin:8px 0 6px;}
.rewards{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin-top:14px;}
.reward{border:1px solid var(--line);border-radius:12px;padding:12px;background:var(--surface-alt);display:flex;flex-direction:column;gap:6px;min-width:0;}
.reward b{font-family:var(--font-display);font-size:14.5px;}
.reward a{color:var(--accent);font-weight:600;font-size:12.5px;text-decoration:none;}
.reward a:hover{text-decoration:underline;}
.reward span{font-size:12px;color:var(--ink-faint);}

#list{position:absolute;inset:0;background:var(--bg);overflow:auto;pointer-events:auto;z-index:10;padding-block:16px 40px;padding-inline:16px;}
#list .inner{max-width:920px;margin:0 auto;}
#list h1{font-family:var(--font-display);font-size:26px;margin:6px 0 4px;}
#list .lead{color:var(--ink-soft);margin:0 0 18px;max-width:65ch;line-height:1.6;}
#list .grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;}
#list .room{padding:16px;}
#list .room h3{font-family:var(--font-display);font-size:16px;margin:4px 0 8px;}
#list ul{list-style:none;margin:0;padding:0;display:grid;gap:6px;}
#list li{display:flex;justify-content:space-between;gap:8px;font-size:13.5px;align-items:center;}
#list li a{color:var(--ink);text-decoration:none;border-bottom:1px solid var(--line);}
#list li a:hover{color:var(--accent);border-color:var(--accent);}
#list .close-list{position:sticky;top:0;float:right;z-index:1;}

@media (max-width:760px){
  .seg button{padding:6px 10px;font-size:12px;}
  #hint{display:none;}
  #mini canvas{width:120px;height:90px;}
}

/* scale switch: "Outsource agency" coming soon */
.seg button.soon{cursor:not-allowed;color:var(--ink-faint);display:inline-flex;align-items:center;gap:6px;}
.soon-chip{font-family:var(--font-caption);font-weight:500;font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;padding:2px 6px;border-radius:4px;background:var(--yellow-soft);color:var(--yellow);}

/* quest button docked next to the minimap */
.quest-fab{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;width:84px;height:92px;padding:0;border:0;border-radius:var(--radius-m);cursor:pointer;
  background:linear-gradient(160deg,#E92F7C 0%,#A5175A 100%);color:#fff;box-shadow:0 14px 30px -12px rgba(200,31,104,.75);transform-origin:50% 90%;
  animation:qf-shake 3.6s ease-in-out infinite;}
.quest-fab::before{content:"";position:absolute;inset:-4px;border-radius:18px;border:2px solid var(--accent);opacity:0;animation:qf-ring 3.6s ease-out infinite;pointer-events:none;}
.quest-fab:hover{filter:brightness(1.08);}
.quest-fab .qf-icon{display:grid;place-items:center;width:40px;height:40px;border-radius:12px;background:rgba(255,255,255,.16);}
.quest-fab .qf-label{font-family:var(--font-display);font-weight:700;font-size:13.5px;letter-spacing:.01em;line-height:1;}
.quest-fab .qf-badge{position:absolute;top:-8px;right:-8px;min-width:22px;height:22px;padding:0 6px;border-radius:11px;background:var(--chip-yellow);color:var(--indigo-deep);
  font:700 11.5px/22px var(--font-body);text-align:center;border:2px solid var(--surface);font-variant-numeric:tabular-nums;}
.quest-fab[aria-pressed="true"]{animation:none;background:linear-gradient(160deg,#241354 0%,#170B3D 100%);box-shadow:0 0 0 3px var(--accent),0 14px 30px -12px rgba(23,11,61,.7);}
.quest-fab[aria-pressed="true"]::before{animation:none;}
@keyframes qf-shake{0%,72%,100%{transform:rotate(0) scale(1);}75%{transform:rotate(-9deg) scale(1.06);}79%{transform:rotate(8deg) scale(1.06);}83%{transform:rotate(-6deg) scale(1.04);}87%{transform:rotate(4deg) scale(1.02);}91%{transform:rotate(0) scale(1);}}
@keyframes qf-ring{0%,72%{opacity:0;transform:scale(1);}76%{opacity:.9;}100%{opacity:0;transform:scale(1.18);}}
@media (prefers-reduced-motion: reduce){.quest-fab,.quest-fab::before{animation:none;}}

/* list view: tabs + 2D reporting tree */
#list .list-tabs{display:inline-flex;margin:0 0 18px;box-shadow:none;}
.tree-head{display:flex;flex-direction:column;gap:12px;margin-bottom:16px;}
.tree-legend{display:flex;flex-wrap:wrap;gap:8px 20px;font-size:12.5px;color:var(--ink-soft);}
.tree-legend span{display:inline-flex;align-items:center;gap:8px;}
.tree-legend .ln{display:inline-block;width:26px;border-top:2px solid var(--ink-soft);}
.tree-tools{display:flex;flex-wrap:wrap;gap:8px;align-items:center;}
.tree-tools .gfilter{flex:1;min-width:0;}
.tree-all{padding:5px 12px;font-size:12px;}
#list ul.tree,#list ul.tree ul{display:block;list-style:none;margin:0;padding:0;}
#list ul.tree ul{margin-left:13px;padding-left:20px;border-left:2px solid var(--line);}
#list ul.tree li{display:block;position:relative;padding:4px 0;}
#list ul.tree ul > li::before{content:"";position:absolute;left:-20px;top:20px;width:16px;border-top:2px solid var(--line);}
#list ul.tree ul > li:last-child::after{content:"";position:absolute;left:-22px;top:21px;bottom:0;width:2px;background:var(--bg);}
#list .tree summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:6px;}
#list .tree summary::-webkit-details-marker{display:none;}
#list .tree summary::before{content:"▸";width:14px;flex:none;color:var(--ink-faint);font-size:12px;transition:transform .15s;}
#list .tree details[open] > summary::before{transform:rotate(90deg);}
#list .tree li > .tnode{margin-left:20px;}
.tnode{display:inline-flex;align-items:center;flex-wrap:wrap;gap:6px 8px;padding:7px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface);font-size:13.5px;max-width:100%;}
.tnode .sw{width:9px;height:9px;border-radius:50%;flex:none;}
.tnode b{font-weight:600;}
.tnode b a{color:var(--ink);text-decoration:none;border-bottom:1px solid var(--line);}
.tnode b a:hover{color:var(--accent);border-color:var(--accent);}
.tnode small{color:var(--ink-faint);font-size:11.5px;}
.tnode.me{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft);}
.tnode.dim{opacity:.35;}
.tnode .dotted,.tree-legend .dotted{font-style:normal;font-size:11px;color:var(--accent);border:1px dashed var(--accent);border-radius:5px;padding:1px 6px;white-space:nowrap;}
.tcount{font-family:var(--font-caption);font-size:10.5px;color:var(--ink-faint);background:var(--surface-alt);border-radius:999px;padding:1px 7px;}
@media (max-width:760px){
  .seg{max-width:100%;overflow-x:auto;scrollbar-width:none;}
  .quest-fab{width:68px;height:78px;gap:4px;}
  .quest-fab .qf-icon{width:34px;height:34px;}
  .quest-fab .qf-label{font-size:12px;}
  #list ul.tree ul{margin-left:8px;padding-left:14px;}
}

/* dialogs: the close button stays put, only .sheet-body scrolls */
#panel,#roomintro,#modal .card.sheet{display:flex;flex-direction:column;overflow:hidden;}
#panel{padding:0;}
#panel > .sheet-body{padding:18px;}
#modal .card.sheet{padding:0;}
#modal .card.sheet > .sheet-body{padding:22px;}
#roomintro > .sheet-body{padding:0;}
.sheet-body{overflow:auto;min-height:0;flex:1 1 auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;}
#panel > .close,#modal .card.sheet > .close,#roomintro > .close{z-index:2;background:var(--surface);}
#panel > .sheet-body > .eyebrow:first-child,#modal .card.sheet > .sheet-body > .eyebrow:first-child,#roomintro .eyebrow{padding-right:34px;}

/* scale: segmented buttons on desktop, native dropdown list on mobile */
.scale-select{display:none;position:relative;}
.scale-select select{appearance:none;-webkit-appearance:none;font:600 13px/1.2 var(--font-body);color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:999px;
  padding:9px 34px 9px 14px;box-shadow:var(--shadow);cursor:pointer;max-width:100%;}
.scale-select::after{content:"";position:absolute;right:14px;top:50%;width:7px;height:7px;border-right:2px solid var(--ink-soft);border-bottom:2px solid var(--ink-soft);transform:translateY(-70%) rotate(45deg);pointer-events:none;}
.sr-only{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;}
.show-sm{display:none;}

@media (max-width:760px){
  .topbar{flex-wrap:nowrap;gap:8px;padding-left:12px;padding-right:12px;}
  .scale-seg{display:none;}
  .scale-select{display:block;flex:1 1 auto;min-width:0;}
  .scale-select select{width:100%;}
  .topbar .spacer{display:none;}
  .hide-sm{display:none;} .show-sm{display:inline;}
  #btn-list{flex:none;}
  #welcome{max-height:calc(100% - 24px);overflow:auto;padding:18px 18px 16px;}
  #welcome h1{font-size:20px;}
  #panel h2{font-size:18px;}
  #modal{padding:12px;}
  #modal .card{padding:18px;}
  #modal .card.sheet{padding:0;}
  #modal .card.sheet > .sheet-body{padding:18px;}
  #dialog p{font-size:14px;}
}

/* loading state while data is fetched */
#tm-loading{position:absolute;inset:0;display:grid;place-items:center;z-index:11;background:var(--scene-bg);color:var(--ink-soft);font:500 14px/1.5 var(--font-body);pointer-events:none;transition:opacity .3s;}
#tm-loading.done{opacity:0;}
#tm-loading i{display:block;width:34px;height:34px;margin:0 auto 12px;border-radius:50%;border:3px solid var(--line);border-top-color:var(--accent);animation:tm-spin .8s linear infinite;}
@keyframes tm-spin{to{transform:rotate(360deg);}}
@media (prefers-reduced-motion: reduce){#tm-loading i{animation:none;}}


/* ── mobile HUD: thu gọn mặc định, popup là bottom sheet ───────────────── */
.q-pill,.q-close,.map-btn,.mini-head,.ri-compact,.b-touch{display:none;}

@media (max-width:760px){
  /* bong bóng cạnh nhân vật: chỉ tên + gợi ý chạm */
  .bubble .b-long,.bubble .b-key{display:none;}
  .bubble .b-touch{display:inline;color:var(--ink-faint);}
  .bubble{max-width:170px;padding:5px 9px;}

  /* thanh nhiệm vụ: một dòng nhỏ dưới topbar */
  #quest{top:58px;left:12px;right:12px;width:auto;max-width:none;padding:0;border-radius:999px;background:var(--surface);}
  #quest .q-full{display:none;}
  #quest .q-pill{display:flex;align-items:center;gap:6px;padding-right:5px;}
  .q-go{flex:none;border:0;border-radius:999px;background:var(--indigo-deep);color:#fff;font:700 12px/1 var(--font-body);padding:8px 12px;cursor:pointer;}
  #quest .q-compact{display:flex;flex:1;min-width:0;align-items:center;gap:8px;min-height:38px;padding:5px 4px 5px 5px;border:0;background:transparent;color:var(--ink);cursor:pointer;text-align:left;font:500 12.5px/1.3 var(--font-body);}
  .qc-n{flex:none;font:700 11px/1 var(--font-body);color:#fff;background:var(--accent);border-radius:999px;padding:6px 8px;font-variant-numeric:tabular-nums;}
  .qc-t{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .qc-more{flex:none;color:var(--ink-faint);font-size:18px;line-height:1;}

  /* giới thiệu phòng: toast nhỏ góc trái dưới, chạm để đọc */
  #roomintro{left:12px;right:auto;bottom:12px;top:auto;width:auto;max-width:calc(100% - 160px);padding:0;border-radius:999px;}
  #roomintro > .close,#roomintro > .sheet-body{display:none;}
  #roomintro .ri-compact{display:flex;align-items:center;gap:8px;max-width:100%;padding:7px 12px 7px 7px;border:0;background:transparent;color:var(--ink);font:500 12px/1.3 var(--font-body);cursor:pointer;text-align:left;}
  #roomintro .ri-compact span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .ri-i{flex:none;display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--accent-soft);color:var(--accent);font:700 12px/1 var(--font-display);}

  /* dock: nút Nhiệm vụ + nút bản đồ, cùng cỡ nhỏ */
  .dock{right:12px;bottom:12px;gap:8px;align-items:flex-end;}
  #mini{display:none;}
  .map-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;width:56px;height:60px;padding:0;border:1px solid var(--line);border-radius:var(--radius-m);background:var(--surface);color:var(--ink);box-shadow:var(--shadow);cursor:pointer;}
  .mb-met{font:600 11px/1 var(--font-body);color:var(--ink-soft);font-variant-numeric:tabular-nums;}
  .mb-met b{color:var(--ink);}
  .quest-fab{width:56px;height:60px;gap:2px;border-radius:var(--radius-m);}
  .quest-fab .qf-icon{width:28px;height:28px;border-radius:9px;background:transparent;}
  .quest-fab .qf-icon svg{width:24px;height:24px;}
  .quest-fab .qf-label{font-size:10.5px;}
  .quest-fab .qf-badge{top:-7px;right:-7px;min-width:20px;height:20px;font-size:10.5px;line-height:20px;padding:0 5px;}

  /* mọi popup: bottom sheet, cao tối đa ~1/3 màn hình, cuộn bên trong */
  #panel,#reader,#dialog,#welcome,#modal .card,#roomintro.open,#mini.open,#quest.open{
    position:fixed;left:0;right:0;bottom:0;top:auto;width:auto;max-width:none;transform:none;
    max-height:36vh;max-height:36svh;margin:0;box-sizing:border-box;
    border-radius:18px 18px 0 0;border-bottom:0;z-index:30;
    box-shadow:0 -14px 34px -14px rgba(18,10,43,.42);
    padding-bottom:env(safe-area-inset-bottom,0px);
    animation:sheet-up .22s ease-out;
  }
  #welcome,#modal .card:not(.sheet),#dialog{overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;}
  #welcome{padding:18px 18px 0;}
  #welcome h1{font-size:19px;}
  #welcome p{font-size:13.5px;line-height:1.55;}
  #dialog{padding:14px 16px calc(14px + env(safe-area-inset-bottom,0px));}
  #dialog p{font-size:14px;}
  #panel > .sheet-body,#reader > .sheet-body{padding:16px 16px 0;}
  #panel h2{font-size:18px;}
  /* nút hành động luôn thấy, nội dung cuộn phía trên */
  #panel .row,#reader .row,#welcome .row,#modal .card .row{position:sticky;bottom:0;margin:12px -16px 0;padding:10px 16px 14px;background:var(--surface);border-top:1px solid var(--line);}
  #welcome .row{margin:12px -18px 0;padding:10px 18px 14px;}
  #modal .card:not(.sheet){padding:18px 18px 0;}
  #modal .card:not(.sheet) .row{margin:12px -18px 0;padding:10px 18px 14px;}
  #modal .card.sheet > .sheet-body{padding:18px 18px 0;}
  #modal .card.sheet .row{margin:12px -18px 0;padding:10px 18px 14px;}
  #modal{background:transparent;padding:0;pointer-events:none;display:block;}
  #modal[hidden]{display:none;}
  #modal .card{pointer-events:auto;}
  .rewards{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;}

  #roomintro.open{padding:0;border-radius:18px 18px 0 0;}
  #roomintro.open .ri-compact{display:none;}
  #roomintro.open > .close,#roomintro.open > .sheet-body{display:block;}
  #roomintro.open > .sheet-body{padding:16px 16px 18px;}

  #quest.open{padding:0;border-radius:18px 18px 0 0;background:var(--surface);}
  #quest.open .q-pill{display:none;}
  #quest.open .q-close{display:block;z-index:2;background:var(--surface);}
  #quest.open .q-full{display:block;overflow:auto;padding:16px 16px 18px;max-height:inherit;box-sizing:border-box;}
  #quest.open .q-full .eyebrow{padding-right:34px;}

  #mini.open{display:flex;flex-direction:column;align-items:stretch;padding:12px 16px calc(12px + env(safe-area-inset-bottom,0px));}
  #mini.open .mini-head{display:flex;align-items:center;justify-content:space-between;font-size:12px;color:var(--ink-faint);margin-bottom:8px;min-height:24px;}
  #mini.open .mini-head .close{position:static;}
  #mini.open canvas{width:auto;height:calc(36svh - 100px);max-height:calc(36vh - 100px);max-width:100%;aspect-ratio:180/130;margin:0 auto;}
  #mini.open .zoom button{width:34px;height:30px;}
}
@keyframes sheet-up{from{transform:translateY(24px);opacity:.4;}}

@media (prefers-reduced-motion: reduce){#panel,#reader,#dialog,#welcome,#modal .card,#roomintro.open,#mini.open,#quest.open{animation:none;}}

/* xem trước bài viết (chỉ mở trên mobile) */
#reader{display:flex;flex-direction:column;overflow:hidden;padding:0;pointer-events:auto;}
#reader[hidden]{display:none;}
#reader > .close{z-index:2;background:var(--surface);}
#reader .eyebrow{padding-right:34px;}
.rd-head{display:flex;gap:12px;align-items:center;margin:8px 0 8px;}
.rd-head h3{font-family:var(--font-display);font-size:16.5px;line-height:1.3;margin:0;text-wrap:balance;}
.rd-img{flex:none;width:72px;height:72px;border-radius:10px;object-fit:cover;background:var(--surface-alt);}
.rd-ex{margin:0 0 6px;font-size:13.5px;line-height:1.55;color:var(--ink-soft);}
.rd-note{flex-basis:100%;margin:0;font-size:11.5px;color:var(--ink-faint);}
#reader .row .btn{flex:1;}
.sk{animation:sk 1.2s ease-in-out infinite;}
.sk-line{height:12px;border-radius:6px;background:var(--surface-alt);animation:sk 1.2s ease-in-out infinite;}
.sk-line.short{width:60%;}
@keyframes sk{50%{opacity:.45;}}
@media (prefers-reduced-motion: reduce){.sk,.sk-line{animation:none;}}

/* "Tiếp tục từ lần trước" */
#resume{position:absolute;left:50%;top:76px;transform:translateX(-50%);display:flex;align-items:center;gap:12px;padding:9px 14px;font-size:13px;color:var(--ink);pointer-events:auto;z-index:6;white-space:nowrap;max-width:calc(100% - 32px);}
#resume[hidden]{display:none;}
#resume span{overflow:hidden;text-overflow:ellipsis;}
@media (max-width:760px){#resume{top:106px;left:12px;right:12px;transform:none;max-width:none;justify-content:space-between;font-size:12.5px;border-radius:999px;}}

/* nút chuyển ngôn ngữ VI / EN */
.lang-switch{display:inline-flex;align-items:center;justify-content:center;min-width:40px;text-decoration:none;font-family:var(--font-caption);letter-spacing:.06em;}
@media (max-width:760px){.lang-switch{flex:none;padding:8px 10px;}}

/* ── Nhiệm vụ theo giờ (SPEC-hourly) ─────────────────────────────── */
.b-fab{flex:none;white-space:nowrap;}
.qmark.hq{background:var(--chip-yellow);}
.qmark.hq.step{background:#2FBF8F;color:#fff;}
.lbl.hqm{z-index:2;}
.h-saylbl{z-index:3;}
.h-say{background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:12px;padding:6px 10px;font-size:12.5px;line-height:1.4;max-width:220px;white-space:normal;box-shadow:var(--shadow);}
#h-card{position:absolute;left:16px;top:76px;width:300px;max-width:calc(100% - 32px);padding:12px 14px;pointer-events:auto;z-index:4;border-color:var(--chip-yellow);box-shadow:0 0 0 2px rgba(255,197,61,.35),var(--shadow);}
#h-card h3{font-family:var(--font-display);font-size:15px;margin:4px 0 2px;}
#h-card .h-row{margin-top:10px;}
#h-card .btn{padding:7px 14px;font-size:12.5px;}
#h-toast{position:absolute;left:50%;bottom:120px;transform:translateX(-50%);max-width:min(440px,calc(100% - 32px));padding:10px 14px;font-size:13px;pointer-events:none;z-index:12;text-align:center;}
#h-bar{position:absolute;left:50%;top:64px;transform:translateX(-50%);width:min(520px,calc(100% - 24px));padding:12px 14px;z-index:9;display:flex;gap:10px;align-items:flex-start;pointer-events:auto;box-sizing:border-box;}
#h-bar[hidden],#h-act[hidden],#h-card[hidden],#h-toast[hidden],#h-shade[hidden],#h-sheet[hidden],#badges[hidden]{display:none;}
.h-bar-in{flex:1;min-width:0;}
.h-title{font-family:var(--font-display);font-weight:700;font-size:15px;}
.h-sub{font-size:12.5px;color:var(--ink-soft);margin-top:4px;line-height:1.45;}
.h-count{font-size:13px;margin-top:6px;}
.h-timer{font-variant-numeric:tabular-nums;font-weight:700;color:var(--accent);}
.h-quit{flex:none;padding:6px 12px;font-size:12px;}
.h-tug{display:flex;align-items:center;gap:8px;margin-top:8px;font-size:12px;font-weight:600;}
.h-tugbar{position:relative;flex:1;height:14px;border-radius:7px;background:var(--line);overflow:hidden;}
.h-tugbar i{position:absolute;inset:0 auto 0 0;background:linear-gradient(90deg,#E92F7C,#FFC53D);transition:width .08s linear;}
.h-tugbar b{position:absolute;left:50%;top:-2px;bottom:-2px;width:2px;background:var(--ink);opacity:.5;}
.h-meter{height:12px;border-radius:6px;background:var(--line);overflow:hidden;margin-top:8px;}
.h-meter i{display:block;height:100%;width:0;background:linear-gradient(90deg,#8B7FE0,#E92F7C);}
.h-act{position:absolute;left:50%;bottom:24px;transform:translateX(-50%);z-index:9;min-width:150px;height:64px;padding:0 26px;border:0;border-radius:999px;background:linear-gradient(160deg,#E92F7C,#A5175A);color:#fff;font:800 18px/1 var(--font-display);box-shadow:0 14px 30px -10px rgba(200,31,104,.7);cursor:pointer;touch-action:none;user-select:none;-webkit-user-select:none;}
.h-act:active,.h-act.on{transform:translateX(-50%) scale(.96);filter:brightness(1.1);}
#h-shade{position:absolute;inset:0;z-index:8;background:rgba(18,10,43,.72);color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;pointer-events:none;text-align:center;padding:16px;}
#h-shade.h-light{background:rgba(18,10,43,.25);}
#h-shade b{font:800 86px/1 var(--font-display);}
#h-shade span{font-size:15px;max-width:420px;}
#app.h-playing #quest,#app.h-playing #h-card,#app.h-playing #roomintro{display:none !important;}
#h-sheet{position:absolute;right:16px;top:76px;width:380px;max-width:calc(100% - 32px);max-height:calc(100% - 100px);z-index:7;pointer-events:auto;display:flex;flex-direction:column;overflow:hidden;padding:0;}
#h-sheet > .sheet-body{padding:18px;}
#h-sheet > .close{z-index:2;background:var(--surface);}
#h-sheet h2{font-family:var(--font-display);font-size:19px;margin:6px 0 10px;line-height:1.3;}
.h-opts{display:grid;gap:8px;}
.h-opt{justify-content:flex-start;text-align:left;border-radius:12px;padding:10px 12px;white-space:normal;line-height:1.4;}
.h-opt kbd{font-family:var(--font-mono);font-size:11px;background:var(--surface-alt);border:1px solid var(--line);border-radius:4px;padding:0 5px;}
.h-opt.ok{border-color:#2FBF8F;background:rgba(47,191,143,.12);}
.h-opt.bad{border-color:#E5446D;background:rgba(229,68,109,.1);}
.h-def{margin:0 0 12px;padding:10px 12px;border-left:3px solid var(--accent);background:var(--surface-alt);border-radius:0 8px 8px 0;font-size:13.5px;line-height:1.55;}
.h-lose{color:var(--ink);font-size:14px;line-height:1.55;}
.h-note{color:var(--ink-faint);font-size:12.5px;}
.h-offer{margin-top:14px;padding:12px;border:1px solid var(--chip-yellow);border-radius:12px;background:rgba(255,197,61,.08);}
.h-offer h4{display:flex;justify-content:space-between;align-items:center;gap:8px;font-family:var(--font-caption);font-weight:500;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);margin:0 0 6px;}
.h-offer b{display:block;font-family:var(--font-display);font-size:15px;margin-bottom:4px;}
.h-offer p{margin:0;font-size:13px;line-height:1.55;}
.h-offer .row{margin-top:10px;}
.h-left{font-variant-numeric:tabular-nums;color:var(--accent);letter-spacing:0;}
.h-status{margin-top:8px;font-size:12.5px;font-weight:600;color:#2FBF8F;}
/* bộ sưu tập huy hiệu */
#badges{position:absolute;inset:0;background:var(--bg);overflow:auto;pointer-events:auto;z-index:10;padding-block:16px 40px;padding-inline:16px;}
#badges .inner{max-width:920px;margin:0 auto;}
#badges h1{font-family:var(--font-display);font-size:26px;margin:6px 0 4px;}
#badges .h-n{color:var(--accent);font-size:18px;}
#badges .lead{color:var(--ink-soft);margin:0 0 6px;max-width:65ch;line-height:1.6;}
.h-store{font-size:12.5px;color:var(--ink-faint);margin:0 0 18px;}
.h-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:12px;}
.h-badge{display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;padding:16px 12px;border:1px solid var(--line);border-radius:16px;background:var(--surface);color:var(--ink);font:inherit;cursor:pointer;}
.h-badge:disabled{cursor:default;}
.h-badge b{font-family:var(--font-display);font-size:14.5px;}
.h-badge span{font-size:12px;color:var(--ink-soft);line-height:1.45;}
.h-badge small{font-size:11px;color:var(--ink-faint);}
.h-badge.dim .coin2d{opacity:.35;filter:grayscale(.6);}
.coin2d{width:96px;height:96px;border-radius:50%;padding:6px;background:var(--rim,#FFC53D);box-shadow:inset 0 -6px 0 rgba(0,0,0,.15),0 8px 18px -8px rgba(18,10,43,.45);box-sizing:border-box;}
.coin2d img{width:100%;height:100%;border-radius:50%;object-fit:cover;display:block;}
.coin2d.dark{background:#1C1033;}
.h-coinbox{position:fixed;inset:0;z-index:1000;background:rgba(18,10,43,.6);display:flex;align-items:center;justify-content:center;padding:16px;box-sizing:border-box;overflow:hidden;overscroll-behavior:contain;}
.h-coincard{position:relative;width:min(420px,100%);box-sizing:border-box;max-height:100%;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;padding:18px 18px 14px;text-align:center;}
.h-coincard h2{font-family:var(--font-display);font-size:21px;margin:4px 0 4px;}
.h-coincard p{margin:0 0 6px;color:var(--ink-soft);font-size:13.5px;}
.h-coincard small{color:var(--ink-faint);}
.h-coincard .row{justify-content:center;flex-wrap:wrap;}
.h-coin3d{display:block;width:min(280px,100%);height:auto;aspect-ratio:1/1;margin:0 auto;cursor:grab;touch-action:none;}
#badges.h-coin-open{overflow:hidden;}
@media (max-width:760px){ .h-coinbox{padding:12px;} .h-coincard{padding:14px 14px 12px;} .h-coin3d{width:min(240px,100%);} .h-coincard h2{font-size:19px;} }
.h-hint{font-size:11.5px;color:var(--ink-faint);margin-top:8px !important;}
@media (max-width:760px){
  #h-card{top:104px;left:12px;right:12px;width:auto;max-width:none;padding:10px 12px;}
  #h-card .objective{font-size:12px;}
  #h-bar{top:58px;width:calc(100% - 24px);}
  .h-act{bottom:16px;height:58px;}
  .b-fab{padding:8px 10px;}
  #h-sheet{position:fixed;left:0;right:0;bottom:0;top:auto;width:auto;max-width:none;max-height:36vh;max-height:36svh;border-radius:18px 18px 0 0;border-bottom:0;z-index:30;box-shadow:0 -14px 34px -14px rgba(18,10,43,.42);animation:sheet-up .22s ease-out;}
  #h-sheet > .sheet-body{padding:16px 16px 0;}
  #h-sheet .row{position:sticky;bottom:0;margin:12px -16px 0;padding:10px 16px 14px;background:var(--surface);border-top:1px solid var(--line);}
  #h-toast{bottom:96px;}
  .h-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
  .coin2d{width:80px;height:80px;}
}
@media (prefers-reduced-motion: reduce){#h-sheet{animation:none;}}

/* ---------- menu tròn quanh nhân vật (chơi tự do) ---------- */
#h-radial{position:absolute;left:0;top:0;width:0;height:0;z-index:6;pointer-events:none;}
#h-radial[hidden]{display:none;}
.h-rad{position:absolute;left:0;top:0;width:64px;height:64px;margin:-32px 0 0 -32px;padding:0;border:2px solid var(--surface);border-radius:50%;
  background:var(--surface);color:var(--ink);box-shadow:0 8px 22px -8px rgba(18,10,43,.5),0 0 0 1px var(--line);cursor:pointer;pointer-events:auto;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;font:600 10.5px/1.1 var(--font-body);text-align:center;
  transform:translate(0,0) scale(.3);opacity:0;transition:transform .2s cubic-bezier(.3,1.4,.6,1) var(--d,0ms),opacity .15s ease var(--d,0ms);}
#h-radial.open .h-rad{transform:translate(var(--x),var(--y)) scale(1);opacity:1;}
.h-rad:hover,.h-rad:focus-visible{box-shadow:0 0 0 3px var(--accent),0 10px 24px -8px rgba(18,10,43,.55);outline:none;}
#h-radial.open .h-rad:hover{transform:translate(var(--x),var(--y)) scale(1.08);}
.h-rad .h-ico{font-size:22px;line-height:1;}
.h-rad .h-rl{max-width:58px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;}
.h-rad kbd{position:absolute;top:-4px;left:-4px;width:16px;height:16px;border-radius:50%;background:var(--ink);color:var(--surface);font:700 9px/16px var(--font-body);border:0;padding:0;}
.h-rad.talk{background:var(--indigo-deep,#241354);color:#fff;border-color:var(--indigo-deep,#241354);}
.h-rad.locked{background:var(--surface-alt);color:var(--ink-faint);border-style:dashed;border-color:var(--line);}
.h-rad.locked .h-ico{font-size:16px;opacity:.75;}
.h-radt{position:absolute;left:0;top:0;transform:translate(-50%,var(--y));white-space:nowrap;padding:4px 10px;border-radius:999px;background:rgba(18,10,43,.78);color:#fff;font-size:11px;font-variant-numeric:tabular-nums;opacity:0;transition:opacity .2s ease .15s;}
#h-radial.open .h-radt{opacity:1;}
#app.h-playing #h-radial{display:none !important;}
#app.h-radial-on .lbl.bubble{display:none !important;}
@media (max-width:760px){ .h-rad{width:58px;height:58px;margin:-29px 0 0 -29px;font-size:10px;} .h-rad kbd{display:none;} }
@media (prefers-reduced-motion: reduce){.h-rad{transition:none;}}
/* danh sách chọn người (nấu xói: chọn người bị nấu xói khi đã chọn người nghe) */
.h-pickhint{font-size:13px;color:var(--ink-soft);margin:0 0 10px;line-height:1.5;}
.h-picklist{display:flex;flex-direction:column;gap:6px;}
.h-pickrow{display:grid;grid-template-columns:1fr auto;grid-template-rows:auto auto;column-gap:10px;align-items:center;text-align:left;padding:9px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink);cursor:pointer;font:inherit;}
.h-pickrow:hover,.h-pickrow:focus-visible{border-color:var(--accent);}
.h-pickrow b{font-size:14px;font-weight:600;}
.h-pickrow span{grid-column:1;font-size:12px;color:var(--ink-faint);}
.h-pickrow em{grid-row:1 / span 2;grid-column:2;font-style:normal;color:#E0A100;font-size:12px;letter-spacing:1px;}
.qmark.hq.pick{background:#E92F7C;color:#fff;width:22px;height:22px;line-height:22px;font-size:18px;}
.h-partners{margin:8px 0 4px;} .h-partners .chip{cursor:pointer;border:1px solid var(--line);font:inherit;font-size:12.5px;}
.h-win{font-size:13.5px;color:var(--ink-soft);}
/* ---------- màn hình thông báo full màn hình: thua (đỏ), thắng (xanh thương hiệu), mở huy hiệu (xanh + vàng, có nút đóng) ---------- */
#h-splash{position:fixed;inset:0;z-index:2000;display:flex;align-items:center;justify-content:center;padding:24px;box-sizing:border-box;text-align:center;color:#fff;
  background:radial-gradient(120% 90% at 50% 40%,rgba(200,31,104,.94),rgba(60,8,40,.97) 70%);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);
  pointer-events:auto;opacity:0;transition:opacity .2s ease;overflow-y:auto;}
#h-splash[hidden]{display:none;}
#h-splash.in{opacity:1;}
#h-splash.out{opacity:0;}
#h-splash.hs-win{background:radial-gradient(120% 90% at 50% 40%,rgba(53,198,232,.95),rgba(11,122,147,.96) 45%,rgba(6,52,70,.98) 85%);}
#h-splash.hs-badge{background:radial-gradient(110% 85% at 50% 38%,rgba(11,122,147,.96),rgba(10,40,64,.97) 60%,rgba(23,11,61,.98));}
.h-splash-in{max-width:min(900px,100%);margin:auto;}
.h-splash-ico{font-size:clamp(64px,14vw,120px);line-height:1;margin-bottom:8px;}
#h-splash h2{font-family:var(--font-display);font-weight:800;font-size:clamp(40px,10vw,104px);line-height:1.02;letter-spacing:-.01em;margin:0 0 14px;text-shadow:0 6px 0 rgba(0,0,0,.18);overflow-wrap:anywhere;}
#h-splash.hs-lose.in h2,#h-splash.hs-lose.in .h-splash-ico{animation:h-shake .5s cubic-bezier(.36,.07,.19,.97) both;}
#h-splash.hs-win.in h2,#h-splash.hs-win.in .h-splash-ico{animation:h-pop .55s cubic-bezier(.3,1.5,.6,1) both;}
.h-splash-sub{font-size:clamp(17px,3.6vw,26px);font-weight:700;margin:0 0 10px;color:#FFE3EF;}
.h-splash-txt{font-size:clamp(15px,2.8vw,20px);line-height:1.5;margin:0 auto;max-width:36ch;color:#FFD6E6;}
#h-splash.hs-win .h-splash-sub,#h-splash.hs-badge .h-splash-sub{color:#E6FAFF;}
#h-splash.hs-win .h-splash-txt,#h-splash.hs-badge .h-splash-txt{color:#D2F3FB;}
.h-splash-chip{display:inline-block;margin:-4px 0 12px;padding:6px 14px;border-radius:999px;background:#FFC53D;color:#1C1033;font-weight:800;font-size:clamp(14px,2.6vw,18px);}
.h-splash-bar{position:absolute;left:0;bottom:0;height:6px;width:100%;background:#FFC53D;transform-origin:left;animation:h-countdown linear forwards;}
/* mở huy hiệu */
#h-splash.hs-badge h2{font-size:clamp(30px,6.5vw,60px);color:#FFC53D;margin:6px 0 10px;}
.h-splash-eye{font-family:var(--font-caption);text-transform:uppercase;letter-spacing:.1em;font-size:clamp(13px,2.4vw,16px);color:#9FE7F7;margin:0 0 4px;}
.h-splash-coin{display:block;width:min(240px,62vw,36vh);height:auto;aspect-ratio:1/1;margin:0 auto;cursor:grab;touch-action:none;}
.h-splash-row{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:20px;}
.h-splash-btn{min-width:150px;min-height:48px;padding:12px 22px;border-radius:999px;border:0;background:#FFC53D;color:#1C1033;font:800 15px/1 var(--font-body);cursor:pointer;}
.h-splash-btn.ghost{background:transparent;color:#fff;box-shadow:inset 0 0 0 2px rgba(255,255,255,.7);}
.h-splash-btn:focus-visible,.h-splash-x:focus-visible{outline:3px solid #fff;outline-offset:2px;}
.h-splash-x{position:absolute;top:max(14px,env(safe-area-inset-top));right:14px;width:44px;height:44px;border-radius:50%;border:0;background:rgba(255,255,255,.16);color:#fff;font-size:26px;line-height:44px;cursor:pointer;}
.h-gotline{font-size:13.5px;margin:8px 0 0;color:var(--ink-soft);}
@keyframes h-shake{0%{transform:scale(.6);opacity:0}30%{transform:scale(1.08);opacity:1}45%{transform:translateX(-10px) rotate(-2deg)}60%{transform:translateX(10px) rotate(2deg)}75%{transform:translateX(-5px)}100%{transform:none}}
@keyframes h-pop{0%{transform:scale(.5) translateY(20px);opacity:0}60%{transform:scale(1.1);opacity:1}100%{transform:none}}
@keyframes h-countdown{from{transform:scaleX(1)}to{transform:scaleX(0)}}
@media (prefers-reduced-motion: reduce){#h-splash{transition:none;}#h-splash.in h2,#h-splash.in .h-splash-ico{animation:none !important;}.h-splash-bar{animation:none;display:none;}}
/* đánh nhau: chữ bật ra trong đám bụi */
.lbl.h-powlbl{z-index:3;pointer-events:none;}
.h-pow{font:900 22px/1 var(--font-display);color:#fff;-webkit-text-stroke:2px #1C1033;paint-order:stroke;text-shadow:0 3px 0 #E92F7C;animation:h-powin .6s ease-out both;white-space:nowrap;}
@keyframes h-powin{0%{transform:scale(.3) rotate(-12deg);opacity:0}25%{transform:scale(1.25) rotate(6deg);opacity:1}100%{transform:translateY(-14px) scale(1);opacity:0}}
@media (prefers-reduced-motion: reduce){.h-pow{animation:none;}}
/* mã huy hiệu */
.h-awid{display:inline-block;margin-top:4px;padding:2px 8px;border-radius:6px;background:var(--surface-alt);color:var(--ink);font:700 12px/1.4 var(--font-mono);letter-spacing:.02em;}
.h-awid.wait{color:var(--ink-faint);font-weight:500;}
.h-awslot{display:block;}
.h-awline{display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap;margin:8px 0 2px;}
.h-awline .h-awid{font-size:14px;margin:0;}
.h-splash-code{margin:10px 0 0;}
.h-splash-code .h-awid{background:rgba(255,255,255,.14);color:#FFC53D;font-size:16px;}

/* (để cuối file cho thắng các luật bottom sheet phía trên) ≤ 640px có thanh tab dưới đáy (cao 64px): mọi bottom sheet nằm ngay trên thanh, không che menu.
   Thanh tab được đặt cao hơn khung game (team-map.html) để menu "⋯ Thêm" mở được cả khi đang có sheet. */
@media (max-width:640px){
  #panel,#reader,#dialog,#welcome,#modal .card,#roomintro.open,#mini.open,#quest.open,#h-sheet{bottom:64px;padding-bottom:0;}
}
