:root{--pq-color-ink: #101827;--pq-color-navy: #18243a;--pq-color-panel: #263b5a;--pq-color-panel-hi: #31496d;--pq-color-cyan: #55c7e8;--pq-color-success: #78d66b;--pq-color-reward: #f4c95d;--pq-color-warning: #ff8066;--pq-color-cream: #fff2d6;--pq-color-muted: #9baec2;--pq-radius-sm: 6px;--pq-radius-md: 10px;--pq-radius-lg: 16px;--pq-border-width: 2px;--pq-space-1: 4px;--pq-space-2: 8px;--pq-space-3: 12px;--pq-space-4: 16px;--pq-space-6: 24px;--pq-space-8: 32px;--pq-shadow-panel: 0 4px 0 rgba(16, 24, 39, .35);--pq-font-ui: "Be Vietnam Pro", system-ui, "Segoe UI", Roboto, sans-serif;--pq-font-code: "JetBrains Mono", ui-monospace, "Cascadia Code", Consolas, monospace;--pq-font-pixel: "Silkscreen", var(--pq-font-ui);--pq-focus: 0 0 0 3px var(--pq-color-ink), 0 0 0 6px var(--pq-color-reward);--pq-code-size: 15px}*{box-sizing:border-box}html,body{margin:0;height:100%}body{background:var(--pq-color-ink);color:var(--pq-color-cream);font-family:var(--pq-font-ui);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}#app{min-height:100%;display:flex;flex-direction:column}canvas.pixel{image-rendering:pixelated;image-rendering:crisp-edges;display:block;width:100%;height:auto}h1,h2,h3{line-height:1.25;margin:0}p{margin:0}code,kbd,pre{font-family:var(--pq-font-code)}kbd{font-size:.8em;padding:1px 5px;border-radius:4px;background:var(--pq-color-ink);color:var(--pq-color-cream);border:1px solid var(--pq-color-muted)}.btn-primary kbd{background:#1018271f;color:var(--pq-color-ink);border-color:#10182780}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.skip-link{position:absolute;left:-999px;top:8px;z-index:10;background:var(--pq-color-reward);color:var(--pq-color-ink);padding:8px 12px;border-radius:var(--pq-radius-sm);font-weight:700}.skip-link:focus{left:8px}:focus-visible{outline:none;box-shadow:var(--pq-focus)}.btn{--bg: var(--pq-color-panel);--fg: var(--pq-color-cream);display:inline-flex;align-items:center;gap:var(--pq-space-2);min-height:40px;padding:0 var(--pq-space-4);font:600 14px/1 var(--pq-font-ui);color:var(--fg);background:var(--bg);border:var(--pq-border-width) solid var(--pq-color-ink);border-radius:var(--pq-radius-sm);box-shadow:0 3px 0 var(--pq-color-ink);cursor:pointer;white-space:nowrap;transition:transform 80ms ease,filter 80ms ease}.btn:hover:not(:disabled){filter:brightness(1.12)}.btn:active:not(:disabled){transform:translateY(2px);box-shadow:0 1px 0 var(--pq-color-ink)}.btn:focus-visible{box-shadow:var(--pq-focus)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{--bg: var(--pq-color-cyan);--fg: var(--pq-color-ink)}.btn-success{--bg: var(--pq-color-success);--fg: var(--pq-color-ink)}.btn-ghost{--bg: transparent;box-shadow:none;border-color:var(--pq-color-panel-hi)}.btn-warn{--bg: var(--pq-color-warning);--fg: var(--pq-color-ink)}.btn .ico{width:16px;height:16px;flex:none}.btn[aria-busy=true] .ico{animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.hud{display:flex;align-items:center;gap:var(--pq-space-4);flex-wrap:wrap;padding:var(--pq-space-2) var(--pq-space-4);background:var(--pq-color-navy);border-bottom:var(--pq-border-width) solid var(--pq-color-ink);box-shadow:var(--pq-shadow-panel);position:relative;z-index:2}.brand{font-family:var(--pq-font-pixel);font-size:18px;letter-spacing:1px;color:var(--pq-color-reward);text-decoration:none;display:flex;align-items:center;gap:var(--pq-space-2)}.brand canvas{width:28px}.brand canvas.brand-byte{width:auto;height:30px}.hud-zone{color:var(--pq-color-muted);font-size:14px}.hud-zone strong{color:var(--pq-color-cream);font-weight:600}.hud-spacer{flex:1}.xp{display:inline-flex;align-items:center;gap:6px;font-weight:700;color:var(--pq-color-reward)}.xp canvas{width:16px}.toggle[aria-pressed=true]{--bg: var(--pq-color-panel-hi);border-color:var(--pq-color-reward)}.map-screen{flex:1;display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:var(--pq-space-6);padding:var(--pq-space-6);max-width:1280px;width:100%;margin:0 auto;align-items:start}.map-frame{position:relative;border:3px solid var(--pq-color-ink);border-radius:var(--pq-radius-md);overflow:hidden;box-shadow:var(--pq-shadow-panel);background:#3e9a4a}.map-node{position:absolute;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:2px}.map-node .tag{font-size:13px;font-weight:700;padding:2px 8px;border-radius:var(--pq-radius-sm);background:var(--pq-color-navy);border:2px solid var(--pq-color-ink);white-space:nowrap}.map-node.locked .tag{color:var(--pq-color-muted);background:#101827d9;display:inline-flex;gap:4px;align-items:center}.map-node.locked .tag svg{width:12px;height:12px}.map-node.mission .btn{animation:nudge 1.6s ease-in-out infinite}@keyframes nudge{50%{transform:translateY(-3px)}}.map-panel{background:var(--pq-color-navy);border:var(--pq-border-width) solid var(--pq-color-ink);border-radius:var(--pq-radius-md);padding:var(--pq-space-6);box-shadow:var(--pq-shadow-panel);display:flex;flex-direction:column;gap:var(--pq-space-4)}.map-panel h1{font-family:var(--pq-font-pixel);font-size:26px;color:var(--pq-color-reward);font-weight:400}.tagline{color:var(--pq-color-muted)}.status-chip{display:inline-flex;align-items:center;gap:6px;font-weight:700;padding:4px 10px;border-radius:999px;font-size:13px;border:2px solid currentColor;width:fit-content}.status-chip.ok{color:var(--pq-color-success)}.status-chip.new{color:var(--pq-color-cyan)}.status-chip svg{width:14px;height:14px}.mission-card{border-top:2px dashed var(--pq-color-panel-hi);padding-top:var(--pq-space-4);display:flex;flex-direction:column;gap:var(--pq-space-3)}.mission-card .btn{justify-content:center;min-height:48px;font-size:16px}.map-col{display:flex;flex-direction:column;gap:var(--pq-space-3);min-width:0}.region-tabs{display:flex;gap:6px;flex-wrap:wrap}.region-tab{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:0 12px;font:600 13px/1 var(--pq-font-ui);color:var(--pq-color-cream);background:var(--pq-color-navy);border:2px solid var(--pq-color-panel-hi);border-radius:var(--pq-radius-sm);cursor:pointer}.region-tab svg{width:14px;height:14px}.region-tab .num{font-family:var(--pq-font-pixel);color:var(--pq-color-cyan)}.region-tab.active{border-color:var(--pq-color-reward);background:var(--pq-color-panel)}.region-tab:disabled{color:var(--pq-color-muted);cursor:not-allowed;border-style:dashed}.region-tab:focus-visible{box-shadow:var(--pq-focus);outline:none}.region-head h2{font-size:16px;color:var(--pq-color-cyan)}.btn-done{--bg: var(--pq-color-navy);--fg: var(--pq-color-success);border-color:var(--pq-color-success)}.mission-list{list-style:none;margin:0;padding:0;display:grid;gap:6px;max-height:38vh;overflow-y:auto;overscroll-behavior:contain}.mission-list li{display:grid;grid-template-columns:18px 1fr auto;gap:10px;align-items:center;padding:8px 10px;border-radius:var(--pq-radius-sm);background:var(--pq-color-panel);font-size:14px}.mission-list li svg{width:16px;height:16px}.mission-list li.done svg,.mission-list li.done .state{color:var(--pq-color-success)}.mission-list li.open svg,.mission-list li.open .state{color:var(--pq-color-cyan)}.mission-list li.locked{background:transparent;border:2px dashed var(--pq-color-panel-hi);color:var(--pq-color-muted)}.mission-list .state{font-size:12px;font-weight:700}.legend{list-style:none;padding:0;margin:0;display:grid;gap:6px;font-size:13px;color:var(--pq-color-muted)}.legend li{display:flex;align-items:center;gap:8px}.legend i{width:12px;height:12px;border:2px solid var(--pq-color-ink);display:inline-block;flex:none}.lab{flex:1;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:minmax(0,1fr);gap:var(--pq-space-4);padding:var(--pq-space-4);min-height:0}.col{display:flex;flex-direction:column;gap:var(--pq-space-3);min-width:0;min-height:0}.viewport{position:relative;border:3px solid var(--pq-color-ink);border-radius:var(--pq-radius-md);overflow:hidden;background:var(--pq-color-panel);box-shadow:var(--pq-shadow-panel);flex:none}.vp-label{position:absolute;transform:translate(-50%);font:700 12px/1 var(--pq-font-ui);color:var(--pq-color-cream);background:#101827d1;border-radius:4px;padding:3px 6px;white-space:nowrap;pointer-events:none}.vp-caption{position:absolute;left:50%;bottom:6px;transform:translate(-50%);font:700 13px/1.2 var(--pq-font-ui);color:var(--pq-color-ink);background:var(--pq-color-success);border:2px solid var(--pq-color-ink);border-radius:var(--pq-radius-sm);padding:4px 10px;white-space:nowrap}.vp-caption[hidden]{display:none}.vp-tag{position:absolute;bottom:6px;left:6px;font:600 11px/1 var(--pq-font-ui);color:var(--pq-color-cream);background:#101827d1;padding:4px 6px;border-radius:4px}.viewport:has(.vp-caption:not([hidden])) .vp-tag{display:none}.byte-line{display:flex;gap:var(--pq-space-3);align-items:flex-start;background:var(--pq-color-navy);border:var(--pq-border-width) solid var(--pq-color-ink);border-radius:var(--pq-radius-md);padding:var(--pq-space-3);flex:none}.byte-line canvas{width:42px;flex:none}.byte-line canvas.byte-hd{width:auto;height:46px;image-rendering:auto}.byte-line .who{font-family:var(--pq-font-pixel);color:var(--pq-color-cyan);font-size:12px;display:block}.byte-line.help{border-color:var(--pq-color-reward)}.byte-line.ok{border-color:var(--pq-color-success)}.brief{font-size:17px;line-height:1.55;flex:1 1 auto;background:var(--pq-color-navy);border:var(--pq-border-width) solid var(--pq-color-ink);border-radius:var(--pq-radius-md);padding:var(--pq-space-4);overflow:auto;min-height:0;display:flex;flex-direction:column;gap:var(--pq-space-4)}.brief h1{font-size:26px;line-height:1.25}.brief p{font-size:inherit}.brief h2{font-size:14px;text-transform:uppercase;letter-spacing:.06em;color:var(--pq-color-cyan);margin-bottom:2px}.brief .goal{background:var(--pq-color-panel);border-left:4px solid var(--pq-color-reward);padding:var(--pq-space-2) var(--pq-space-3);border-radius:0 var(--pq-radius-sm) var(--pq-radius-sm) 0}.io{display:grid;grid-template-columns:1fr 1fr;gap:var(--pq-space-3)}.io pre{margin:0;background:var(--pq-color-ink);padding:var(--pq-space-2) var(--pq-space-3);border-radius:var(--pq-radius-sm);font-size:16px;line-height:1.4}.io .lbl{font-size:12px;color:var(--pq-color-muted)}.sample-box{border:2px dashed var(--pq-color-panel-hi);border-radius:var(--pq-radius-sm);padding:var(--pq-space-3)}.testdata{display:flex;flex-wrap:wrap;gap:6px}.testdata code{background:var(--pq-color-panel);padding:2px 8px;border-radius:4px;font-size:13px}.muted{color:var(--pq-color-muted)}.editor-wrap{display:flex;flex-direction:column;flex:1;min-height:260px;background:var(--pq-color-navy);border:var(--pq-border-width) solid var(--pq-color-ink);border-radius:var(--pq-radius-md);overflow:hidden;box-shadow:var(--pq-shadow-panel)}.toolbar{display:flex;align-items:center;gap:var(--pq-space-2);padding:var(--pq-space-2);background:var(--pq-color-panel);border-bottom:var(--pq-border-width) solid var(--pq-color-ink);flex-wrap:wrap}.file-tab{font:600 13px/1 var(--pq-font-code);color:var(--pq-color-cream);padding:6px 10px;background:var(--pq-color-navy);border-radius:var(--pq-radius-sm)}.runtime{font-size:12px;color:var(--pq-color-muted);display:inline-flex;align-items:center;gap:6px}.runtime .dot{width:8px;height:8px;border-radius:2px;background:var(--pq-color-muted)}.runtime[data-s=ready] .dot{background:var(--pq-color-success)}.runtime[data-s=failed] .dot{background:var(--pq-color-warning)}.editor{flex:1;min-height:0;overflow:hidden}.editor .cm-editor{height:100%;font-size:var(--pq-code-size)}.editor .cm-editor.cm-focused{outline:none}.editor-wrap:focus-within{box-shadow:var(--pq-focus)}.confirm{display:inline-flex;gap:6px;align-items:center;font-size:13px}.results{background:var(--pq-color-navy);border:var(--pq-border-width) solid var(--pq-color-ink);border-radius:var(--pq-radius-md);padding:var(--pq-space-3) var(--pq-space-4);flex:none;max-height:42%;overflow:auto;display:flex;flex-direction:column;gap:var(--pq-space-2)}.results-head{display:flex;align-items:center;gap:var(--pq-space-3);flex-wrap:wrap}.results-head h2{font-size:16px;display:flex;align-items:center;gap:8px}.results-head h2 svg{width:20px;height:20px;flex:none}.results[data-s=pass]{border-color:var(--pq-color-success)}.results[data-s=pass] h2{color:var(--pq-color-success)}.results[data-s=fail] h2,.results[data-s=error] h2{color:var(--pq-color-warning)}.score{font-weight:700;font-variant-numeric:tabular-nums}.tests{list-style:none;margin:0;padding:0;display:grid;gap:4px}.tests li{display:grid;grid-template-columns:22px 1fr;gap:8px;align-items:start;font-size:14px;padding:6px 8px;background:var(--pq-color-panel);border-radius:var(--pq-radius-sm)}.tests li svg{width:18px;height:18px;margin-top:2px}.tests li.pass svg{color:var(--pq-color-success)}.tests li.bad svg{color:var(--pq-color-warning)}.tests details summary{cursor:pointer;color:var(--pq-color-muted);font-size:13px}.tests pre{margin:4px 0 0;background:var(--pq-color-ink);padding:6px 8px;border-radius:4px;font-size:13px;white-space:pre-wrap}.cmp{display:grid;grid-template-columns:1fr 1fr;gap:8px}.reward{display:flex;align-items:center;gap:10px;color:var(--pq-color-reward);font-weight:700}.reward canvas{width:24px}.actions{display:flex;gap:var(--pq-space-2);flex-wrap:wrap}.fatal{background:var(--pq-color-ink);border-left:4px solid var(--pq-color-warning);padding:8px 10px;border-radius:0 var(--pq-radius-sm) var(--pq-radius-sm) 0;font-size:14px;white-space:pre-wrap;word-break:break-word}.scene-box{display:flex;gap:var(--pq-space-3);align-items:stretch;flex:none}.scene-box .viewport{width:min(52%,calc(26vh * 16 / 9));min-width:200px}.scene-box .byte-line{flex:1;min-width:0;font-size:14px;overflow:auto;max-height:calc(26vh + 8px)}@media (min-width: 901px) and (min-height: 600px){#app:has(.lab){height:100vh;height:100dvh}.col.world{overflow:hidden}}@media (min-width: 901px) and (max-height: 820px){.scene-box .viewport{width:min(52%,calc(24vh * 16 / 9))}}@media (min-width: 1280px){.map-screen{align-items:center}.map-node .tag,.region-tab{font-size:14px}}@media (max-width: 1439px){.toolbar kbd{display:none}}@media (max-width: 1100px){.region-tab .label-long,.file-tab,.toolbar .label-long{display:none}}@media (max-width: 900px){.map-screen{grid-template-columns:minmax(0,1fr)}.lab{grid-template-columns:minmax(0,1fr);grid-template-rows:none}.viewport{width:100%;max-width:640px;margin:0 auto}.scene-box{flex-direction:column}.scene-box .viewport{width:100%;max-width:480px}.scene-box .byte-line{max-height:none}.col.world{order:0}.editor-wrap{min-height:360px}.results{max-height:none}}@media (max-width: 600px){.hud{gap:var(--pq-space-2);padding:var(--pq-space-2) var(--pq-space-3)}.hud-zone{display:none}.lab,.map-screen{padding:var(--pq-space-3);gap:var(--pq-space-3)}.io,.cmp{grid-template-columns:1fr}.vp-label{font-size:10px;padding:2px 4px}.toolbar .btn{padding:0 10px}.toolbar .label-long{display:none}.map-node .tag{font-size:11px;padding:1px 4px}}@media (prefers-reduced-motion: reduce){:root:not([data-motion=full]) *{animation:none!important;transition:none!important}}:root[data-motion=reduced] *{animation:none!important;transition:none!important}.auth{flex:1;min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:var(--pq-space-6) var(--pq-space-4);background:linear-gradient(#0a101e59,#0a101e80),#0b1224 url(/art/login-bg.jpg) 35% center / cover no-repeat}@media (max-width: 700px){.auth{background-position:15% center;background-image:linear-gradient(#0a101e8c,#0a101eb3),url(/art/login-bg.jpg)}}.logo-h1{margin:0;line-height:0}.logo{display:block;width:100%;max-width:420px;height:auto;margin:0 auto}.map-panel .logo{max-width:240px;margin:0}.auth-card{width:100%;max-width:420px;background:var(--pq-color-navy);border:var(--pq-border-width) solid var(--pq-color-ink);border-radius:var(--pq-radius-md);box-shadow:var(--pq-shadow-panel);padding:var(--pq-space-6);display:flex;flex-direction:column;gap:var(--pq-space-4)}.auth-card h1{font-family:var(--pq-font-pixel);font-size:26px;color:var(--pq-color-reward);font-weight:400}.auth-tabs{display:flex;gap:6px}.auth-tabs a{flex:1;text-align:center;padding:8px;border-radius:var(--pq-radius-sm);border:2px solid var(--pq-color-panel-hi);color:var(--pq-color-cream);text-decoration:none;font-weight:600}.auth-tabs a[aria-current=page]{border-color:var(--pq-color-reward);background:var(--pq-color-panel)}.auth-form{display:flex;flex-direction:column;gap:var(--pq-space-3)}.field{display:flex;flex-direction:column;gap:4px;font-weight:600;font-size:14px}.field input{font:16px var(--pq-font-ui);padding:10px 12px;min-height:44px;border-radius:var(--pq-radius-sm);border:2px solid var(--pq-color-ink);background:var(--pq-color-ink);color:var(--pq-color-cream)}.field input::placeholder{color:var(--pq-color-muted)}.field input:focus-visible{box-shadow:var(--pq-focus)}.auth-error{color:var(--pq-color-warning);font-size:14px;min-height:1.4em}.auth-form .btn{justify-content:center;min-height:48px;font-size:16px}.hud-user{color:var(--pq-color-cream);font-weight:600;font-size:14px;text-decoration:underline dotted;text-underline-offset:3px}.admin{flex:1;display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:var(--pq-space-6);padding:var(--pq-space-6);align-items:start;max-width:1280px;width:100%;margin:0 auto}.admin-main{display:flex;flex-direction:column;gap:var(--pq-space-3);min-width:0}.admin-bar{display:flex;gap:var(--pq-space-3);align-items:center;flex-wrap:wrap}.admin-search{flex:1 1 260px;font:16px var(--pq-font-ui);padding:8px 12px;min-height:40px;border-radius:var(--pq-radius-sm);border:2px solid var(--pq-color-ink);background:var(--pq-color-ink);color:var(--pq-color-cream)}.admin-table-wrap{overflow-x:auto;border:var(--pq-border-width) solid var(--pq-color-ink);border-radius:var(--pq-radius-md);background:var(--pq-color-navy);box-shadow:var(--pq-shadow-panel)}.admin-table{width:100%;border-collapse:collapse;font-size:14px}.admin-table th,.admin-table td{padding:10px 12px;text-align:left;white-space:nowrap;border-bottom:1px solid var(--pq-color-panel)}.admin-table th{color:var(--pq-color-cyan);font-weight:600}.admin-table tbody tr{cursor:pointer}.admin-table tbody tr:hover,.admin-table tbody tr.selected{background:var(--pq-color-panel)}.admin-table tbody tr:focus-visible{outline:none;box-shadow:inset 0 0 0 2px var(--pq-color-reward)}.admin-detail{background:var(--pq-color-navy);border:var(--pq-border-width) solid var(--pq-color-ink);border-radius:var(--pq-radius-md);box-shadow:var(--pq-shadow-panel);padding:var(--pq-space-4);display:flex;flex-direction:column;gap:var(--pq-space-3);position:sticky;top:var(--pq-space-4)}.admin-detail h2{font-size:20px;color:var(--pq-color-reward)}.admin-detail h3{font-size:15px;color:var(--pq-color-cyan);margin-top:var(--pq-space-2)}.admin-stats{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;margin:0;font-size:14px}.admin-stats dt{color:var(--pq-color-muted)}.admin-stats dd{margin:0;font-weight:600}.admin-missions{margin:0;padding-left:20px;font-size:14px}.admin-drafts details{margin-bottom:var(--pq-space-2)}.admin-drafts summary{cursor:pointer;font-weight:600}.admin-code{background:var(--pq-color-ink);padding:var(--pq-space-2) var(--pq-space-3);border-radius:var(--pq-radius-sm);font-size:13px;white-space:pre-wrap;overflow-x:auto;max-height:260px}.admin-note{font-size:12px}@media (max-width: 900px){.admin{grid-template-columns:minmax(0,1fr);padding:var(--pq-space-3)}.admin-detail{position:static}}.admin-col{display:flex;flex-direction:column;gap:var(--pq-space-3);min-width:0}.admin-tabs{display:flex;gap:6px;flex-wrap:wrap}.admin-tab{min-height:36px;padding:0 12px;font:600 14px/1 var(--pq-font-ui);color:var(--pq-color-cream);background:var(--pq-color-navy);border:2px solid var(--pq-color-panel-hi);border-radius:var(--pq-radius-sm);cursor:pointer}.admin-tab.active{border-color:var(--pq-color-reward);background:var(--pq-color-panel)}.admin-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--pq-space-3)}.admin-card{background:var(--pq-color-navy);border:var(--pq-border-width) solid var(--pq-color-ink);border-radius:var(--pq-radius-md);padding:var(--pq-space-3) var(--pq-space-4);display:flex;flex-direction:column;gap:4px}.admin-card strong{font-size:26px;color:var(--pq-color-reward)}.admin-h2{font-size:18px;color:var(--pq-color-cyan)}.admin-input{font:15px var(--pq-font-ui);padding:8px 10px;min-height:40px;border-radius:var(--pq-radius-sm);border:2px solid var(--pq-color-ink);background:var(--pq-color-ink);color:var(--pq-color-cream)}.admin-table tbody tr.stuck td:last-child{color:var(--pq-color-warning);font-weight:700}.admin-scroll{max-height:240px;overflow-y:auto}.admin-foot{text-align:center;padding:var(--pq-space-3);font-size:13px}.admin-foot a,.auth-foot{color:var(--pq-color-cyan)}.auth-foot{text-align:center;font-size:13px}.btn.danger{color:var(--pq-color-warning)}.privacy{max-width:680px}.privacy h2{font-size:16px;color:var(--pq-color-cyan);margin-top:var(--pq-space-2)}.privacy ul{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:4px}.privacy-back{align-self:flex-start}.mission-card .btn{white-space:normal;text-align:left;height:auto;min-height:44px}.contest-clock{font-family:var(--pq-font-pixel);font-size:18px;color:var(--pq-color-cyan);padding:2px 10px;border:2px solid currentColor;border-radius:999px}.contest-clock.low{color:var(--pq-color-danger, #ff6b6b)}.board-screen{flex:1;display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:var(--pq-space-6);padding:var(--pq-space-6);max-width:1180px;width:100%;margin:0 auto;align-items:start}.board-col,.contest-body{display:flex;flex-direction:column;gap:var(--pq-space-3);min-width:0}.board-title{font-family:var(--pq-font-pixel);font-size:24px;color:var(--pq-color-reward);font-weight:400}.board-me{background:var(--pq-color-navy);border:var(--pq-border-width) solid var(--pq-color-reward);border-radius:var(--pq-radius-md);padding:var(--pq-space-3) var(--pq-space-4);display:flex;flex-direction:column;gap:var(--pq-space-2)}.board-me-stats{display:flex;align-items:baseline;gap:var(--pq-space-3);flex-wrap:wrap}.board-me-stats strong{font-size:28px;color:var(--pq-color-reward)}.board-toggle{display:flex;align-items:center;gap:10px;min-height:40px;cursor:pointer}.board-toggle input{width:22px;height:22px;accent-color:var(--pq-color-cyan)}.board-table tr.me td{color:var(--pq-color-reward);font-weight:700}.board-you{font-weight:400;color:var(--pq-color-muted)}.board-profile{position:sticky;top:var(--pq-space-3);max-height:calc(100vh - 32px);overflow-y:auto}.board-profile[hidden]{display:none}.board-chips{display:flex;flex-wrap:wrap;gap:8px}.board-region h3{font-size:14px;color:var(--pq-color-cyan);margin:var(--pq-space-2) 0 4px}.board-missions{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;font-size:14px}.board-missions li{display:flex;gap:8px;align-items:flex-start}.board-missions .ico{color:var(--pq-color-success);width:14px;height:14px;margin-top:3px;flex:none}.contest-screen{flex:1;display:flex;flex-direction:column;gap:var(--pq-space-4);padding:var(--pq-space-6);max-width:900px;width:100%;margin:0 auto;min-width:0}.contest-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--pq-space-4)}.contest-card .btn{align-self:flex-start}.contest-countdown{font-family:var(--pq-font-pixel);font-size:44px;color:var(--pq-color-cyan);text-align:center;padding:var(--pq-space-4);border:3px solid currentColor;border-radius:var(--pq-radius-md);background:var(--pq-color-navy)}.contest-countdown.low{color:var(--pq-color-warning)}.contest-problems{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--pq-space-2)}.contest-problem{display:flex;justify-content:space-between;align-items:center;gap:var(--pq-space-3);flex-wrap:wrap;background:var(--pq-color-navy);border:var(--pq-border-width) solid var(--pq-color-ink);border-radius:var(--pq-radius-md);padding:var(--pq-space-3) var(--pq-space-4)}.contest-review{background:var(--pq-color-navy);border-radius:var(--pq-radius-md);padding:var(--pq-space-3) var(--pq-space-4)}.contest-code{font:13px var(--pq-font-code);background:var(--pq-color-ink);padding:10px;border-radius:var(--pq-radius-sm);overflow-x:auto;white-space:pre;margin-top:6px}.admin-table tbody tr.me td{color:var(--pq-color-reward);font-weight:700}.map-links{display:flex;flex-direction:column;gap:var(--pq-space-2);border-top:2px dashed var(--pq-color-panel-hi);padding-top:var(--pq-space-4)}.map-links .btn{justify-content:center;min-height:44px}.contest-live{animation:contest-pulse 1.4s ease-in-out infinite}@keyframes contest-pulse{50%{opacity:.55}}@media (prefers-reduced-motion: reduce){.contest-live{animation:none}}:root[data-motion=reduced] .contest-live{animation:none}@media (max-width: 860px){.board-screen{grid-template-columns:minmax(0,1fr);padding:var(--pq-space-3)}.board-profile{position:static;max-height:none}.contest-screen{padding:var(--pq-space-3)}.contest-countdown{font-size:32px}}.admin-form{display:flex;flex-direction:column;gap:var(--pq-space-3);margin-bottom:var(--pq-space-4)}.install-guide{border:2px dashed var(--pq-color-panel-hi);border-radius:var(--pq-radius-sm);padding:var(--pq-space-3);font-size:14px}.install-guide summary{cursor:pointer;font-weight:700;color:var(--pq-color-cyan)}.install-guide[open] summary{margin-bottom:var(--pq-space-2)}.install-guide ul{margin:var(--pq-space-2) 0 0;padding-left:18px;display:grid;gap:var(--pq-space-2)}.install-guide .btn{margin-top:var(--pq-space-2)}.install-guide .btn[hidden]{display:none}.star-row{display:inline-flex;gap:1px;margin-left:auto}.star-row .star{display:inline-flex;color:var(--pq-color-panel-hi);opacity:.6}.star-row .star.on{color:var(--pq-color-reward);opacity:1}.star-row svg{width:14px;height:14px}.mission-list li .star-row+.state{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.mission-list li.done .star-row .star .ico,.mission-list li.done .star-row svg{width:14px;height:14px;color:inherit}.mission-list li.done .star-row .star{color:var(--pq-color-panel-hi);opacity:1}.mission-list li.done .star-row .star.on{color:var(--pq-color-reward)}.star-cell{white-space:nowrap}.star-cell svg{width:14px;height:14px;color:var(--pq-color-reward);vertical-align:-2px}.board-table th svg{width:14px;height:14px;color:var(--pq-color-reward)}.status-chip svg{flex:none}.map-node.pop .btn{animation:node-pop .5s ease-out 3;box-shadow:0 0 0 3px var(--pq-color-reward),0 0 16px 4px #f4c95dcc}@keyframes node-pop{0%{transform:scale(.8)}60%{transform:scale(1.18)}to{transform:scale(1)}}@media (prefers-reduced-motion: reduce){.map-node.pop .btn{animation:none}}:root[data-motion=reduced] .map-node.pop .btn{animation:none}.region-banner{position:fixed;top:0;right:0;bottom:0;left:0;z-index:90;display:grid;place-items:center;padding:var(--pq-space-3);background:#101827b8}.region-banner-card{max-width:420px;width:100%;text-align:center;background:var(--pq-color-navy);border:3px solid var(--pq-color-reward);border-radius:var(--pq-radius-md);padding:var(--pq-space-4);display:grid;gap:var(--pq-space-3);justify-items:center;animation:banner-in .35s ease-out}.region-banner-card h2{margin:0;font-size:20px;color:var(--pq-color-reward)}.region-banner-card p{margin:0}.region-banner-icon svg{width:40px;height:40px;color:var(--pq-color-reward)}.region-banner-actions{display:flex;flex-wrap:wrap;gap:var(--pq-space-2);justify-content:center}@keyframes banner-in{0%{transform:scale(.9);opacity:0}to{transform:none;opacity:1}}@media (prefers-reduced-motion: reduce){.region-banner-card{animation:none}}:root[data-motion=reduced] .region-banner-card{animation:none}.badges-screen{max-width:960px;margin:0 auto;padding:var(--pq-space-4);display:grid;gap:var(--pq-space-4)}.badge-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:var(--pq-space-3)}.badge-stat{display:flex;align-items:center;gap:var(--pq-space-2);flex-wrap:wrap;background:var(--pq-color-panel);border:2px solid var(--pq-color-ink);border-radius:var(--pq-radius-sm);padding:var(--pq-space-3)}.badge-stat svg{width:20px;height:20px;color:var(--pq-color-reward)}.badge-stat strong{font-size:20px}.badge-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:var(--pq-space-3)}.badge-card{display:flex;align-items:center;gap:var(--pq-space-3);background:var(--pq-color-panel);border:2px solid var(--pq-color-ink);border-radius:var(--pq-radius-sm);padding:var(--pq-space-3);min-width:0}.badge-card.locked{opacity:.8}.badge-text{display:grid;gap:2px;min-width:0;overflow-wrap:anywhere}.badge-card .medal,.board-badges .medal{flex:none;position:relative}.medal.locked{display:inline-grid;place-items:center;width:48px;height:48px;border-radius:50%;background:var(--pq-color-ink);border:3px solid var(--pq-color-panel-hi);color:var(--pq-color-muted)}.medal.locked svg{width:22px;height:22px}.medal .medal-img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:contain;image-rendering:pixelated}.board-badges{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:var(--pq-space-3)}.board-badges li{display:inline-flex;align-items:center;gap:var(--pq-space-2)}@media (max-width: 600px){.badges-screen{padding:var(--pq-space-3) 16px}.badge-grid{grid-template-columns:minmax(0,1fr)}}:root{--pq-tone-gold: #f4c95d;--pq-tone-teal: #3fc8b4;--pq-tone-violet: #a58cf0;--pq-tone-coral: #ff8066;--pq-tone-leaf: #78d66b;--pq-tone-sky: #55c7e8}.medal{--tone: var(--pq-tone-gold);display:inline-grid;place-items:center;flex:none;width:40px;height:40px;border-radius:50%;background:var(--tone);color:var(--pq-color-ink);border:3px solid var(--pq-color-ink);box-shadow:inset 0 -4px #10182740,0 3px #10182759}.medal .ico{width:20px;height:20px}.medal.tone-gold{--tone: var(--pq-tone-gold)}.medal.tone-teal{--tone: var(--pq-tone-teal)}.medal.tone-violet{--tone: var(--pq-tone-violet)}.medal.tone-coral{--tone: var(--pq-tone-coral)}.medal.tone-leaf{--tone: var(--pq-tone-leaf)}.medal.tone-sky{--tone: var(--pq-tone-sky)}.medal.has-img{background:none;border:0;box-shadow:none;width:48px;height:50px;border-radius:0;position:relative}.medal.has-img>.ico{visibility:hidden}.medal.has-img .medal-img{image-rendering:auto}.medal-big{position:relative;display:inline-grid;place-items:center;width:40px;height:40px}.medal-big .medal-img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:contain}.medal-big.has-img{width:84px;height:88px}.medal-big.has-img>.ico{visibility:hidden}.region-banner-icon:has(.has-img) svg{width:auto;height:auto}.medal.locked{background:var(--pq-color-panel);color:var(--pq-color-muted);filter:grayscale(1);opacity:.7}.streak-chip{display:inline-flex;align-items:center;gap:4px;font-weight:700;color:var(--pq-color-warning)}.streak-chip.dim{opacity:.55}.streak-chip .ico{width:16px;height:16px}.sound-wrap{position:relative;display:inline-flex}.sound-pop{position:absolute;right:0;top:calc(100% + 8px);z-index:20;width:250px;display:grid;gap:var(--pq-space-3);padding:var(--pq-space-3);background:var(--pq-color-panel);border:var(--pq-border-width) solid var(--pq-color-ink);border-radius:var(--pq-radius-md);box-shadow:var(--pq-shadow-panel)}.sound-pop[hidden]{display:none}.switch-row,.vol-row{display:flex;align-items:center;justify-content:space-between;gap:var(--pq-space-3);cursor:pointer;font-size:14px}.vol-row input{flex:1;max-width:120px;accent-color:var(--pq-color-reward)}.switch-row input{position:absolute;opacity:0;width:1px;height:1px}.switch{position:relative;flex:none;width:40px;height:22px;border-radius:11px;background:var(--pq-color-ink);border:2px solid var(--pq-color-ink);transition:background .15s}.switch:after{content:"";position:absolute;left:2px;top:2px;width:14px;height:14px;border-radius:50%;background:var(--pq-color-muted);transition:transform .15s,background .15s}.switch-row input:checked+.switch{background:var(--pq-color-success)}.switch-row input:checked+.switch:after{transform:translate(18px);background:var(--pq-color-ink)}.switch-row input:focus-visible+.switch{box-shadow:var(--pq-focus)}.toast-host{position:fixed;bottom:16px;left:16px;z-index:100;display:grid;gap:var(--pq-space-2);width:min(320px,calc(100vw - 24px));pointer-events:none}.toast{pointer-events:auto;cursor:pointer;display:flex;align-items:center;gap:var(--pq-space-3);padding:var(--pq-space-3);background:var(--pq-color-navy);color:var(--pq-color-cream);border:var(--pq-border-width) solid var(--pq-color-cyan);border-radius:var(--pq-radius-md);box-shadow:var(--pq-shadow-panel);animation:pq-toast-in .3s ease-out both}.toast.tone-reward{border-color:var(--pq-color-reward)}.toast.tone-success{border-color:var(--pq-color-success)}.toast.tone-warn{border-color:var(--pq-color-warning)}.toast.out{opacity:0;transform:translateY(-8px);transition:opacity .25s,transform .25s}.toast-text{display:grid;gap:2px}.toast-text strong{font-family:var(--pq-font-pixel);font-size:13px;color:var(--pq-color-reward);font-weight:400}@keyframes pq-toast-in{0%{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:none}}@media (max-width: 640px){.toast-host{left:50%;transform:translate(-50%)}.sound-pop{position:fixed;top:var(--pop-top, 64px);left:16px;right:16px;width:auto;max-width:360px;margin-left:auto}}.tests li.reveal{animation:pq-row-in .3s ease-out both}@keyframes pq-row-in{0%{opacity:0;transform:translate(-12px)}to{opacity:1;transform:none}}.stars-box{display:grid;gap:4px;justify-items:start}.stars-row{display:flex;gap:6px}.star{color:var(--pq-color-panel-hi);display:inline-flex}.star .ico{width:28px;height:28px}.star.on{color:var(--pq-color-reward)}.star.pop{animation:pq-star-pop .4s cubic-bezier(.3,1.6,.5,1) both}@keyframes pq-star-pop{0%{opacity:0;transform:scale(.2) rotate(-30deg)}to{opacity:1;transform:none}}.stars-box small{font-size:12px}.stars-box .record{color:var(--pq-color-cyan);font-weight:700}.xp-count{font-variant-numeric:tabular-nums}.reward{position:relative}.xp-chip{position:absolute;right:0;top:50%;margin-top:-12px;padding:2px 10px;border-radius:12px;background:var(--pq-color-reward);color:var(--pq-color-ink);font-weight:700;font-size:13px;border:2px solid var(--pq-color-ink);visibility:hidden}.xp-chip.flying{position:fixed;margin:0;right:auto;visibility:visible;z-index:100;pointer-events:none;transition:transform .7s cubic-bezier(.5,0,.7,.4),opacity .7s}.scene-box{position:relative}.scene-box.shake{animation:pq-shake .4s ease-in-out}@keyframes pq-shake{0%,to{transform:none}20%{transform:translate(-5px)}40%{transform:translate(5px)}60%{transform:translate(-3px)}80%{transform:translate(3px)}}.confetti{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none;z-index:5}.confetti span{position:absolute;top:-10px;width:7px;height:10px;opacity:0;animation:pq-confetti 2s ease-in forwards}@keyframes pq-confetti{0%{opacity:1;transform:translate(0) rotate(0)}to{opacity:0;transform:translate(var(--dx, 0),260px) rotate(540deg)}}@media (prefers-reduced-motion: reduce){:root:not([data-motion=full]) .tests li.reveal,:root:not([data-motion=full]) .star.pop,:root:not([data-motion=full]) .toast{animation:none}}:root[data-motion=reduced] .tests li.reveal,:root[data-motion=reduced] .star.pop,:root[data-motion=reduced] .toast,:root[data-motion=reduced] .scene-box.shake,:root[data-motion=reduced] .confetti{animation:none}.update-banner{position:fixed;inset:0 0 auto 0;z-index:110;padding:8px 16px 0;padding-top:calc(env(safe-area-inset-top,0px) + 8px);display:grid;justify-items:center;pointer-events:none}.update-card{pointer-events:auto;display:flex;gap:var(--pq-space-3);width:min(480px,100%);padding:var(--pq-space-4);background:var(--pq-color-navy);border:3px solid var(--pq-color-reward);border-radius:var(--pq-radius-md);box-shadow:var(--pq-shadow-panel);animation:banner-in .3s ease-out}.update-card p{margin:4px 0 0;font-size:14px;color:var(--pq-color-muted)}.update-ico{display:grid;place-items:center;flex:none;width:36px;height:36px;border-radius:50%;background:#f4c95d26;color:var(--pq-color-reward)}.update-actions{display:flex;flex-wrap:wrap;gap:var(--pq-space-2);margin-top:var(--pq-space-3)}@media (prefers-reduced-motion: reduce){.update-card{animation:none}}:root[data-motion=reduced] .update-card{animation:none}.wardrobe-screen{width:100%;box-sizing:border-box;max-width:960px;margin:0 auto;padding:var(--pq-space-4);display:grid;gap:var(--pq-space-4)}.outfit-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:var(--pq-space-3)}.outfit-card{display:flex;flex-direction:column;align-items:center;gap:var(--pq-space-2);background:var(--pq-color-panel);border:2px solid var(--pq-color-ink);border-radius:var(--pq-radius-sm);padding:var(--pq-space-3);min-width:0}.outfit-card.worn{border-color:var(--pq-color-reward)}.outfit-stage{display:grid;place-items:end center;width:100%;height:150px;background:var(--pq-color-ink);border-radius:var(--pq-radius-sm);padding-bottom:8px}.outfit-canvas{width:96px;height:135px;image-rendering:pixelated}.outfit-stage.is-locked .outfit-canvas{filter:brightness(0) opacity(.55)}.outfit-sprite{image-rendering:pixelated;flex:none}.outfit-need{display:inline-flex;align-items:center;gap:4px;font-weight:700}.outfit-need svg{width:16px;height:16px}.outfit-bar{width:100%;height:8px;background:var(--pq-color-ink);border-radius:4px;overflow:hidden}.outfit-bar span{display:block;height:100%;background:var(--pq-color-reward)}.outfit-card .btn{width:100%;justify-content:center;min-height:44px}.board-who{display:flex;align-items:flex-end;gap:var(--pq-space-3)}.board-who h2{margin:0}@media (max-width: 600px){.wardrobe-screen{padding:var(--pq-space-3) 16px}.outfit-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.plain-list{list-style:none;margin:0;padding:0;display:grid;gap:var(--pq-space-2)}.plain-list li{display:flex;align-items:center;justify-content:space-between;gap:var(--pq-space-3)}.count-badge{position:absolute;top:-6px;right:-6px;min-width:18px;height:18px;padding:0 5px;box-sizing:border-box;display:inline-grid;place-items:center;border-radius:9px;background:var(--pq-color-warning);color:var(--pq-color-ink);border:2px solid var(--pq-color-ink);font:700 11px/1 var(--pq-font-ui)}.count-badge[hidden]{display:none}.count-badge.inline{position:static;margin-left:6px}.bell-btn,.notif-wrap{position:relative}.notif-pop{position:absolute;right:0;top:calc(100% + 8px);z-index:30;width:340px;max-height:min(70vh,480px);display:flex;flex-direction:column;background:var(--pq-color-panel);border:var(--pq-border-width) solid var(--pq-color-ink);border-radius:var(--pq-radius-md);box-shadow:var(--pq-shadow-panel);overflow:hidden}.notif-pop[hidden]{display:none}.notif-head{display:flex;align-items:center;justify-content:space-between;gap:var(--pq-space-2);padding:var(--pq-space-2) var(--pq-space-3);border-bottom:2px solid var(--pq-color-ink)}.notif-list{list-style:none;margin:0;padding:0;overflow-y:auto}.notif a{display:flex;gap:var(--pq-space-3);align-items:flex-start;padding:var(--pq-space-3);color:var(--pq-color-cream);text-decoration:none;border-bottom:1px solid var(--pq-color-ink)}.notif a:hover,.notif a:focus-visible{background:var(--pq-color-panel-hi)}.notif.unread a{background:#55c7e81f;border-left:4px solid var(--pq-color-cyan)}.notif-ico{flex:none;color:var(--pq-color-reward)}.notif-ico .ico,.friend-meta .ico{width:16px;height:16px}.notif-text{display:grid;gap:2px;font-size:14px;min-width:0;overflow-wrap:anywhere}.notif-time{font-size:12px}.notif-empty{padding:var(--pq-space-4)}.friends-screen,.chat-screen{width:100%;box-sizing:border-box;max-width:960px;margin:0 auto;padding:var(--pq-space-4);display:grid;gap:var(--pq-space-4);align-content:start}.friends-tabs{display:flex;gap:6px;flex-wrap:wrap}.friends-body{display:grid;gap:var(--pq-space-4)}.friend-grid,.thread-list,.feed-list{list-style:none;margin:0;padding:0;display:grid;gap:var(--pq-space-3);grid-template-columns:repeat(auto-fill,minmax(min(100%,420px),1fr))}.thread-list,.feed-list{grid-template-columns:minmax(0,1fr)}.friend-card{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--pq-space-3);align-items:center;padding:var(--pq-space-3);background:var(--pq-color-panel);border:var(--pq-border-width) solid var(--pq-color-ink);border-radius:var(--pq-radius-md);box-shadow:var(--pq-shadow-panel)}.friend-info{display:grid;gap:2px;min-width:0}.friend-info strong{overflow-wrap:anywhere}.friend-meta{display:inline-flex;align-items:center;gap:4px;font-size:13px}.friend-actions{grid-column:1 / -1;display:flex;gap:var(--pq-space-2);flex-wrap:wrap}.friend-actions .btn{min-height:40px}.friend-menu{grid-column:1 / -1;display:flex;gap:var(--pq-space-2);flex-wrap:wrap}.friend-menu[hidden]{display:none}.friend-empty{display:grid;gap:var(--pq-space-3);justify-items:start}.avatar{position:relative;display:inline-grid;place-items:end center;width:64px;height:76px;flex:none;overflow:hidden;background:var(--pq-color-navy);border-radius:var(--pq-radius-sm);border:2px solid var(--pq-color-ink)}.avatar .outfit-sprite{image-rendering:pixelated;margin-bottom:-2px}.avatar .ico{width:24px;height:24px;align-self:center}.online-dot{position:absolute;right:4px;top:4px;width:12px;height:12px;border-radius:50%;background:var(--pq-color-muted);border:2px solid var(--pq-color-ink)}.online-dot.on{background:var(--pq-color-success)}.thread{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;gap:var(--pq-space-3);align-items:center;padding:var(--pq-space-3);color:var(--pq-color-cream);text-decoration:none;background:var(--pq-color-panel);border:var(--pq-border-width) solid var(--pq-color-ink);border-radius:var(--pq-radius-md)}.thread:hover,.thread:focus-visible{background:var(--pq-color-panel-hi)}.thread.unread{border-color:var(--pq-color-cyan)}.thread-text{display:grid;gap:2px;min-width:0;overflow-wrap:anywhere}.thread-last{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:14px}.thread-time{font-size:12px;white-space:nowrap}.push-card{display:grid;gap:var(--pq-space-2);justify-items:start;padding:var(--pq-space-3);background:var(--pq-color-navy);border:2px dashed var(--pq-color-panel-hi);border-radius:var(--pq-radius-md)}.push-card p{margin:0}.push-note{font-size:13px}.friend-blocked{display:grid;gap:var(--pq-space-2)}.search-out{margin-top:var(--pq-space-3)}.chat-screen{display:flex;flex-direction:column;gap:var(--pq-space-3);flex:1}.chat-head{display:flex;align-items:center;gap:var(--pq-space-3)}.chat-head .avatar{width:48px;height:56px}.chat-head .avatar{place-items:start center}.chat-who{display:grid}.chat-notice{margin:0;padding:var(--pq-space-2) var(--pq-space-3);background:var(--pq-color-navy);border-left:4px solid var(--pq-color-reward);border-radius:var(--pq-radius-sm)}.chat-notice[hidden],.chat-more[hidden],.report-box[hidden],.auth-error[hidden]{display:none}.chat-list{list-style:none;margin:0;padding:var(--pq-space-3);overflow-y:auto;display:flex;flex-direction:column;gap:var(--pq-space-2);background:var(--pq-color-navy);border:2px solid var(--pq-color-ink);border-radius:var(--pq-radius-md);min-height:200px;max-height:calc(100dvh - 280px);flex:1 1 auto}.msg{display:grid;gap:2px;max-width:80%}.msg.mine{align-self:flex-end;justify-items:end}.msg.theirs{align-self:flex-start;justify-items:start}.bubble{padding:8px 12px;border-radius:14px;overflow-wrap:anywhere;white-space:pre-wrap;border:2px solid var(--pq-color-ink)}.mine .bubble{background:var(--pq-color-cyan);color:var(--pq-color-ink);border-bottom-right-radius:4px}.theirs .bubble{background:var(--pq-color-panel-hi);color:var(--pq-color-cream);border-bottom-left-radius:4px}.msg-meta{font-size:11px;display:flex;gap:6px;align-items:center}.link-btn{background:none;border:0;padding:4px;min-height:24px;color:var(--pq-color-muted);font:inherit;text-decoration:underline;cursor:pointer}.link-btn:hover,.link-btn:focus-visible{color:var(--pq-color-warning)}.report-box{display:flex;gap:var(--pq-space-2);flex-wrap:wrap}.chat-form{display:flex;gap:var(--pq-space-2)}.chat-input{flex:1;min-width:0;min-height:44px;font-size:16px}.chat-more{justify-self:center}.staff-social{display:grid;gap:var(--pq-space-2)}.staff-msgs{max-height:260px;overflow-y:auto;font-size:14px}.staff-msgs li{display:block}.staff-thread summary{cursor:pointer;padding:4px 0}.report-list{list-style:none;margin:0;padding:0;display:grid;gap:var(--pq-space-3)}.report{display:grid;gap:var(--pq-space-2);padding:var(--pq-space-3);background:var(--pq-color-panel);border:2px solid var(--pq-color-ink);border-radius:var(--pq-radius-md)}.report.open{border-color:var(--pq-color-warning)}.report p{margin:0}.report-msg{font-style:italic;overflow-wrap:anywhere}.avatar-kin{place-items:center;font-weight:700;color:var(--pq-color-reward)}.avatar-kin .ico{width:32px;height:32px}.family-section{display:grid;gap:var(--pq-space-2)}.thread-cta{min-height:36px;padding:4px 12px;pointer-events:none}.post-list{list-style:none;margin:0;padding:0;display:grid;gap:var(--pq-space-3)}.post{display:grid;gap:4px;padding:var(--pq-space-3);background:var(--pq-color-panel);border:var(--pq-border-width) solid var(--pq-color-ink);border-left:4px solid var(--pq-color-reward);border-radius:var(--pq-radius-md)}.post-body{margin:0;white-space:pre-wrap;overflow-wrap:anywhere}.post-meta{font-size:12px}.class-head{display:grid;gap:2px}.class-head h1,.class-head p{margin:0}.announce-panel{display:grid;gap:var(--pq-space-2);margin-bottom:var(--pq-space-3)}.announce-text{width:100%;box-sizing:border-box;min-height:96px;font:inherit;resize:vertical}.attach{margin-top:6px;font-size:13px}.attach summary{cursor:pointer}.attach-code{margin:6px 0;padding:8px;max-height:240px;overflow:auto;background:var(--pq-color-ink);color:var(--pq-color-cream);border-radius:var(--pq-radius-sm);font-size:12px;white-space:pre;text-align:left}.attach-chip{display:flex;gap:var(--pq-space-2);align-items:center;justify-content:space-between;padding:6px 10px;background:var(--pq-color-navy);border-left:4px solid var(--pq-color-cyan);border-radius:var(--pq-radius-sm);font-size:14px}.attach-chip[hidden]{display:none}.msg .bubble{max-width:100%}@media (max-width: 640px){.thread-cta{display:none}.notif-pop{position:fixed;top:var(--pop-top, 64px);left:16px;right:16px;width:auto;max-width:420px;margin-left:auto}.friends-screen,.chat-screen{padding:var(--pq-space-3) 16px}.thread{grid-template-columns:auto minmax(0,1fr) auto}.thread .thread-time{display:none}.msg{max-width:90%}.chat-list{max-height:calc(100dvh - 400px)}}@media (prefers-reduced-motion: reduce){.notif-pop,.toast{animation:none}}.report .btn{justify-self:start}.class-screen .btn[hidden]{display:none}
