:root{--bg: #ece7df;--bg-2: #f6f2ea;--panel: #ffffff;--panel-2: #f3efe7;--text: #1b1a17;--muted: #6f6a62;--ink: #17161a;--ink-soft: rgba(23, 22, 26, .18);--accent: #f2b233;--accent-2: #e09a10;--accent-text: #1b1a17;--blue: #3d8bff;--blue-soft: rgba(61, 139, 255, .28);--ok: #4fae6a;--danger: #e2483f;--danger-bg: rgba(226, 72, 63, .26);--select: #ffd45c;--shadow: 4px 4px 0 var(--ink);--shadow-sm: 3px 3px 0 var(--ink);--shadow-lg: 8px 8px 0 var(--ink);--radius: 12px;--border: 3px solid var(--ink);--font: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Noto Sans SC", "Microsoft YaHei", "Apple SD Gothic Neo", "Malgun Gothic", sans-serif;--font-display: "Avenir Next", "Trebuchet MS", system-ui, -apple-system, "Segoe UI", "PingFang SC", "Noto Sans SC", "Apple SD Gothic Neo", sans-serif}:root[data-mode=noir]{--bg: #15161c;--bg-2: #1d1f28;--panel: #262934;--panel-2: #1f2129;--text: #ece6da;--muted: #9a938a;--ink: #0b0b0e;--ink-soft: rgba(236, 230, 218, .15);--accent: #d9a83a;--accent-2: #f0c14f;--accent-text: #1a1a1a;--blue: #6fa8ff;--blue-soft: rgba(111, 168, 255, .32);--ok: #7fbf8a;--danger: #ef6b62;--danger-bg: rgba(239, 107, 98, .3);--select: #f0d27a}:root[data-mode=noir] .suspect-card,:root[data-mode=noir] .bubble,:root[data-mode=noir] .tool,:root[data-mode=noir] .card,:root[data-mode=noir] .chapter,:root[data-mode=noir] .modal,:root[data-mode=noir] .level-btn,:root[data-mode=noir] .btn,:root[data-mode=noir] .seg,:root[data-mode=noir] .timer,:root[data-mode=noir] .board-frame{border-color:#3a3d4a}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--font);color:var(--text);background:var(--bg);background-image:radial-gradient(rgba(0,0,0,.05) 1px,transparent 1px);background-size:18px 18px;min-height:100vh;line-height:1.45;-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}h1,h2,h3{margin:0;line-height:1.2}p{margin:.25rem 0}ul,ol{margin:0;padding:0;list-style:none}.muted{color:var(--muted)}.small{font-size:.82rem}:focus-visible{outline:3px solid var(--blue);outline-offset:2px}.btn{border:var(--border);background:var(--panel);border-radius:10px;padding:.5rem 1rem;font-weight:800;box-shadow:var(--shadow-sm);transition:transform .08s ease,box-shadow .08s ease}.btn:hover:not(:disabled){transform:translate(-1px,-1px);box-shadow:4px 4px 0 var(--ink)}.btn:active:not(:disabled){transform:translate(2px,2px);box-shadow:1px 1px 0 var(--ink)}.btn.primary{background:var(--accent);color:var(--accent-text)}.btn.ghost{background:var(--panel-2)}.btn.on{background:var(--select);color:#1b1a17}.small-btn{padding:.3rem .7rem;font-size:.85rem}.seg{display:inline-flex;border:var(--border);border-radius:10px;overflow:hidden;background:var(--panel);box-shadow:var(--shadow-sm)}.seg button{border:0;background:transparent;padding:.4rem .85rem;font-size:.9rem;font-weight:700}.seg button+button{border-left:2px solid var(--ink)}.seg button.on{background:var(--accent);color:var(--accent-text)}.lang-picker{display:inline-flex;align-items:center;gap:.35rem;padding:.25rem .5rem .25rem .6rem;border:var(--border);border-radius:10px;background:var(--panel);box-shadow:var(--shadow-sm);font-size:.9rem;font-weight:700;cursor:pointer}.lang-picker select{border:0;background:transparent;color:inherit;font:inherit;font-weight:700;padding:.15rem 0;cursor:pointer;max-width:8.5rem}.lang-picker select:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}.lang-picker option{color:#1b1b1f;background:#fff}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.toggle{display:inline-flex;align-items:center;gap:.4rem;font-size:.9rem;font-weight:700;cursor:pointer}.toggle input{accent-color:var(--accent);width:1.15rem;height:1.15rem}.settings-bar{display:flex;flex-wrap:wrap;gap:.7rem;align-items:center;justify-content:center;margin-top:1rem}.landing{max-width:1120px;margin:0 auto;padding:1rem 1.25rem 3rem}.landing-top{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.6rem}.landing-top .settings-bar{margin-top:0;justify-content:flex-end}.hero{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:2.5rem;align-items:center;margin-top:2.5rem}.eyebrow{display:inline-block;font-size:.78rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);border:2px solid var(--ink);border-radius:999px;padding:.15rem .7rem;background:var(--panel)}.hero-title{margin-top:.8rem;font-size:clamp(2.6rem,6vw,4rem)}.hero-tagline{font-family:var(--font-display);font-size:clamp(1.4rem,2.6vw,1.9rem);font-weight:900;margin:.6rem 0 .4rem;line-height:1.2}.hero-tagline:after{content:"";display:block;width:84px;height:8px;margin-top:.6rem;background:var(--accent);border:2px solid var(--ink);border-radius:999px}.hero-body{font-size:1.05rem;line-height:1.6;max-width:34rem;margin:.9rem 0 1.4rem}.hero-actions{display:flex;flex-wrap:wrap;gap:.7rem;align-items:center}.btn.big{font-size:1.05rem;padding:.7rem 1.3rem;box-shadow:var(--shadow)}.hero-visual{display:flex;flex-direction:column;align-items:center;gap:.9rem;min-width:0}.hero-board{position:relative;width:min(100%,460px);transform:rotate(-1.5deg)}.hero-board .board-frame{width:100%}.hero-board .cell{cursor:default}.hero-stamp{position:absolute;top:-14px;right:-10px;background:var(--accent);color:var(--accent-text);border:var(--border);border-radius:999px;padding:.2rem .75rem;font-weight:800;font-size:.85rem;box-shadow:var(--shadow-sm);transform:rotate(4deg)}.hero-clues{display:flex;flex-wrap:wrap;justify-content:center;gap:.6rem;width:100%}.hero-clue{flex:1 1 200px;max-width:260px;display:flex;gap:.55rem;align-items:flex-start;background:var(--panel);border:var(--border);border-radius:10px;padding:.5rem .6rem;box-shadow:var(--shadow-sm);transform:rotate(var(--tilt, 0deg));font-size:.85rem;line-height:1.35}.hero-clue-portrait{flex:0 0 auto;width:44px;height:44px;border:2px solid var(--ink);border-radius:6px;display:flex;align-items:flex-end;justify-content:center;overflow:hidden}.hero-clue-portrait svg{margin-bottom:-4px}.hero-clue-text{display:flex;flex-direction:column;gap:.15rem;min-width:0}.hero-clue-text>b{font-family:var(--font-display);font-size:.9rem}.hero-caption{text-align:center;max-width:34rem}.section-title{font-family:var(--font-display);font-size:1.5rem;text-align:center;margin:3rem 0 1.2rem}.steps-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1.25rem}.step{position:relative;align-items:flex-start;padding-top:1.4rem}.step h3{font-size:1.1rem}.step .mini-grid{--mg: 34px;width:calc(var(--mg) * 3 + 6px)}.step-num{position:absolute;top:-16px;left:14px;width:34px;height:34px;border-radius:50%;border:var(--border);background:var(--accent);color:var(--accent-text);font-family:var(--font-display);font-weight:900;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-sm)}.features-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:.9rem}.feature{display:flex;gap:.8rem;align-items:flex-start;background:var(--panel);border:2px solid var(--ink);border-radius:12px;padding:.85rem 1rem}.feature h3{font-size:1rem;margin-bottom:.2rem}.feature-icon{font-size:1.6rem;line-height:1;flex:0 0 auto}.landing-faq .faq{max-width:46rem;margin:0 auto}.landing-cta{display:flex;justify-content:center;flex-wrap:wrap;gap:.8rem;margin-top:3rem}.landing-foot{text-align:center;margin-top:3rem;border-top:2px solid var(--ink-soft);padding-top:1.2rem}.landing-links{display:flex;justify-content:center;gap:1.2rem;margin-top:.4rem}.linkish{border:0;background:none;padding:0;color:var(--muted);font-weight:700;text-decoration:underline;text-underline-offset:3px}.linkish:hover{color:var(--text)}.menu-head{position:relative}.menu-home{position:absolute;left:0;top:0}@media (max-width: 600px){.menu-home{position:static;margin-bottom:.6rem}}@media (max-width: 900px){.hero{grid-template-columns:1fr;gap:1.8rem;margin-top:1.5rem}.hero-copy{text-align:center}.hero-tagline:after{margin-left:auto;margin-right:auto}.hero-body{margin-left:auto;margin-right:auto}.hero-actions{justify-content:center}.hero-board{transform:none}.section-title{margin-top:2.2rem}}.menu{max-width:1000px;margin:0 auto;padding:2rem 1rem 3rem}.menu-head{text-align:center}.title{font-family:var(--font-display);font-size:clamp(2.2rem,5.5vw,3.4rem);font-weight:900;letter-spacing:.01em;-webkit-text-stroke:1px var(--ink)}.title-icon{margin-right:.4rem;-webkit-text-stroke:0}.subtitle{display:inline-block;margin-top:.4rem;font-size:1rem;font-weight:800;background:var(--accent);color:var(--accent-text);border:var(--border);border-radius:999px;padding:.15rem .9rem;box-shadow:var(--shadow-sm)}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:1.25rem;margin:1.75rem 0}.card,.chapter{background:var(--panel);border:var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.card{padding:1.1rem 1.2rem;display:flex;flex-direction:column;gap:.55rem}.card h2{font-size:1.2rem}.card .btn{align-self:flex-start}.card-meta{font-size:.9rem;color:var(--muted)}.chapters-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:.9rem}.chapter{padding:1rem 1.2rem;margin-bottom:1.25rem}.chapter h3{font-size:1.05rem}.level-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:.75rem;margin-top:.8rem}.level-btn{width:100%;border:var(--border);background:var(--panel-2);border-radius:10px;padding:.6rem .5rem;display:flex;flex-direction:column;align-items:center;gap:.1rem;box-shadow:var(--shadow-sm);transition:transform .08s ease,box-shadow .08s ease}.level-btn:hover{transform:translate(-1px,-1px);box-shadow:4px 4px 0 var(--ink)}.level-btn.done{background:color-mix(in srgb,var(--ok) 28%,var(--panel-2))}.level-num{font-weight:800}.level-size{font-size:1.1rem;font-weight:700}.level-diff,.level-best{font-size:.75rem;color:var(--muted)}.level-best{color:var(--ok);font-weight:700}.level-btn.playing{background:color-mix(in srgb,var(--blue) 22%,var(--panel-2))}.level-playing{font-size:.75rem;color:var(--blue);font-weight:700}.menu-foot{text-align:center;margin-top:1.5rem;display:flex;flex-direction:column;align-items:center;gap:.6rem}.resume{margin-top:1.5rem}.resume-card{flex-direction:row;align-items:center;justify-content:space-between;gap:1rem;background:color-mix(in srgb,var(--blue) 14%,var(--panel))}.resume-card h2{font-size:1.1rem}.resume-card .btn{align-self:center;white-space:nowrap}@media (max-width: 600px){.resume-card{flex-direction:column;align-items:stretch}}.account{display:inline-flex;align-items:center;gap:.45rem;border:var(--border);border-radius:999px;background:var(--panel);padding:.2rem .4rem .2rem .25rem;box-shadow:var(--shadow-sm);max-width:100%}.account-avatar{width:26px;height:26px;border-radius:50%;border:2px solid var(--ink);object-fit:cover;flex:0 0 auto}.account-avatar.initial{display:inline-flex;align-items:center;justify-content:center;background:var(--accent);color:var(--accent-text);font-weight:900;font-size:.8rem}.account-name{font-size:.85rem;font-weight:700;max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account .btn{box-shadow:none;padding:.15rem .55rem}.sync-dot{width:10px;height:10px;border-radius:50%;border:2px solid var(--ink);background:var(--muted);flex:0 0 auto}.sync-dot.synced{background:var(--ok)}.sync-dot.syncing{background:var(--accent);animation:pulse .9s ease-in-out infinite alternate}.sync-dot.error{background:var(--danger)}@keyframes pulse{0%{opacity:.4}to{opacity:1}}.auth-block{display:flex;flex-direction:column;gap:.5rem;margin-top:.9rem}.auth-google{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;background:var(--panel);color:var(--text)}.google-mark{flex:0 0 auto}.auth-divider{display:flex;align-items:center;gap:.6rem;margin:1rem 0 .2rem;color:var(--muted);font-size:.8rem;font-weight:700}.auth-divider:before,.auth-divider:after{content:"";flex:1;border-top:2px solid var(--ink-soft)}.auth-label{font-weight:800;font-size:.9rem}.auth-row{display:flex;gap:.5rem}.auth-input{flex:1;min-width:0;font:inherit;color:var(--text);background:var(--panel-2);border:var(--border);border-radius:10px;padding:.45rem .7rem}.auth-sent{margin-top:.9rem;padding:.6rem .8rem;border:var(--border);border-radius:10px;background:color-mix(in srgb,var(--ok) 22%,var(--panel));font-weight:700}.auth-tabs{display:grid;grid-template-columns:1fr 1fr;gap:.3rem;margin:.2rem 0 .9rem;padding:.25rem;border:var(--border);border-radius:12px;background:var(--panel-2)}.auth-tab{font:inherit;font-weight:800;color:var(--muted);background:transparent;border:2px solid transparent;border-radius:9px;padding:.4rem .6rem;cursor:pointer}.auth-tab:hover{color:var(--text)}.auth-tab.on{color:var(--text);background:var(--panel);border-color:var(--ink);box-shadow:var(--shadow-sm)}.auth-form{display:flex;flex-direction:column;gap:.7rem;margin-top:.9rem}.auth-field{display:flex;flex-direction:column;gap:.3rem}.auth-field .auth-input{width:100%}.auth-password{position:relative;display:flex}.auth-password .auth-input{padding-right:2.6rem}.auth-eye{position:absolute;right:.35rem;top:50%;transform:translateY(-50%);width:2rem;height:2rem;display:inline-flex;align-items:center;justify-content:center;font-size:1rem;line-height:1;background:transparent;border:2px solid transparent;border-radius:8px;cursor:pointer}.auth-eye:hover,.auth-eye:focus-visible{border-color:var(--ink-soft);background:var(--panel)}.auth-submit{width:100%;margin-top:.2rem}.auth-links{display:flex;justify-content:flex-end;margin-top:-.3rem}.auth-link{font:inherit;font-size:.85rem;font-weight:800;color:var(--text);background:none;border:0;padding:0;cursor:pointer;text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:3px}.auth-link:hover:not(:disabled){color:var(--accent-ink, var(--text));text-decoration-color:var(--accent)}.auth-link:disabled{opacity:.5;cursor:default}.auth-footer{display:flex;flex-direction:column;align-items:flex-start;gap:.4rem;margin-top:1rem}.auth-consent{margin:0;text-align:center}.auth-consent a{color:inherit;font-weight:700;text-decoration:underline;text-underline-offset:3px}.auth-setup{margin-top:.9rem;padding:.8rem;border:var(--border);border-radius:10px;background:var(--panel-2)}.auth-setup-title{margin:0 0 .35rem;font-weight:900}.auth-config{margin:.7rem 0 0;padding:.65rem .75rem;overflow-x:auto;border:var(--border);border-radius:8px;background:var(--panel);color:var(--text);font:.82rem/1.5 ui-monospace,SFMono-Regular,Menlo,monospace}.game{display:grid;grid-template-columns:minmax(320px,34%) minmax(0,1fr) 176px;min-height:100vh}.col-left{border-right:var(--border);background:var(--bg-2);padding:.9rem 1rem 1.5rem;overflow-y:auto;max-height:100vh}.col-board{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:1.5rem 1.25rem}.tools{border-left:var(--border);background:var(--bg-2);padding:.9rem .8rem 1rem;display:flex;flex-direction:column;gap:.6rem;max-height:100vh;overflow-y:auto}@media (max-width: 980px){.game{grid-template-columns:1fr;grid-template-areas:"head" "board" "tools" "suspects"}.col-left{display:contents}.game-head{grid-area:head;padding:.8rem 1rem 0}.suspects{grid-area:suspects;padding:0 1rem 2rem}.col-board{grid-area:board;padding:.75rem .75rem .5rem}.tools{grid-area:tools}}.brand-row{display:flex;align-items:center;gap:.6rem}.brand{font-family:var(--font-display);font-weight:900;font-size:1.35rem;letter-spacing:.02em}.brand-sub{margin-left:auto}.case-row{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-top:.5rem}.case-title{font-size:1rem}.timer{font-variant-numeric:tabular-nums;font-weight:800;background:var(--panel);border:var(--border);padding:.15rem .6rem;border-radius:8px;box-shadow:var(--shadow-sm)}.case-line{margin:.5rem 0 .9rem;font-size:.9rem}.suspects-head{text-align:center;margin-bottom:.6rem}.suspects-head h2{font-size:1rem}.suspect-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(116px,1fr));gap:1.1rem .8rem}.suspect{display:flex;flex-direction:column;gap:.5rem}.suspect-card{width:100%;padding:0;border:var(--border);border-radius:10px;background:var(--panel);box-shadow:var(--shadow);overflow:hidden;display:flex;flex-direction:column;text-align:center;transition:transform .08s ease,box-shadow .08s ease}.suspect-card:not(.static):hover{transform:translate(-1px,-1px);box-shadow:5px 5px 0 var(--ink)}.suspect-card:not(.static):active{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--ink)}.portrait{position:relative;display:flex;align-items:flex-end;justify-content:center;aspect-ratio:1;margin:6px 6px 0;border:var(--border);border-radius:6px;overflow:hidden}.portrait svg{width:88%;height:88%;margin-bottom:-6%;filter:drop-shadow(0 3px 0 rgba(0,0,0,.25))}.victim-portrait,.log-portrait{background:repeating-linear-gradient(45deg,#f3e2b3 0 10px,#eed59a 10px 20px);align-items:center}.log-portrait{background:repeating-linear-gradient(0deg,#e9eef3 0 12px,#d9e2ec 12px 24px)}.victim-icon{font-size:3rem;filter:drop-shadow(0 3px 0 rgba(0,0,0,.25))}.suspect-name{font-family:var(--font-display);font-weight:800;font-size:1.05rem;padding:.3rem .3rem .4rem}.placed-tag{position:absolute;top:4px;right:4px;width:22px;height:22px;border-radius:50%;border:2px solid var(--ink);background:var(--ok);color:#fff;font-size:.8rem;font-weight:900;display:flex;align-items:center;justify-content:center}.suspect.placed .suspect-card{background:var(--panel-2)}.suspect.placed .portrait svg{opacity:.85}.suspect.selected .suspect-card{outline:4px solid var(--blue);outline-offset:-1px}.suspect.selected .suspect-name{color:var(--blue)}.bubble{border:var(--border);border-radius:10px;background:var(--panel);box-shadow:var(--shadow-sm);padding:.35rem;display:flex;flex-direction:column;gap:.3rem;position:relative}.bubble:before{content:"";position:absolute;top:-9px;left:18px;width:12px;height:12px;background:var(--panel);border-left:var(--border);border-top:var(--border);transform:rotate(45deg)}.suspect.selected .bubble{background:color-mix(in srgb,var(--blue) 12%,var(--panel))}.suspect.selected .bubble:before{background:color-mix(in srgb,var(--blue) 12%,var(--panel))}.clue{width:100%;text-align:left;border:0;background:transparent;border-radius:6px;padding:.35rem .45rem;font-size:.88rem;line-height:1.4}.clue b{font-weight:800}.clue:not(.static-clue):hover{background:var(--panel-2)}.clue.struck{text-decoration:line-through;opacity:.45}.clue.violated{background:var(--danger-bg);box-shadow:inset 4px 0 0 var(--danger)}.clue.silent{text-align:center}.clue.static-clue{display:block;cursor:default}.board-frame{width:min(100%,calc(96px * var(--n) + 40px),640px);border:var(--border);border-radius:4px;box-shadow:var(--shadow-lg);background:var(--ink);padding:4px}.board{display:grid;width:100%;aspect-ratio:1;gap:0}.cell{position:relative;min-width:0;min-height:0;width:100%;height:100%;container-type:size;border:0;padding:0;margin:0;display:flex;align-items:center;justify-content:center;overflow:hidden;border-top:1px solid var(--ink-soft);border-left:1px solid var(--ink-soft);transition:filter .12s ease,box-shadow .12s ease}.cell.wall-t{border-top:5px solid var(--ink)}.cell.wall-l{border-left:5px solid var(--ink)}.cell.wall-b{border-bottom:5px solid var(--ink)}.cell.wall-r{border-right:5px solid var(--ink)}.cell.blocked{cursor:default}.cell:after{content:"";position:absolute;inset:0;pointer-events:none;background:transparent;border:0 solid var(--blue);transition:background .1s ease;z-index:1}.cell.room-hover:after{background:#ffffff1a}.cell.room-hover.edge-t:after{border-top-width:4px}.cell.room-hover.edge-l:after{border-left-width:4px}.cell.room-hover.edge-b:after{border-bottom-width:4px}.cell.room-hover.edge-r:after{border-right-width:4px}.cell.cell-hover:after{background:#ffffff8c}:root[data-mode=noir] .cell.room-hover:after{background:#ffffff0d}:root[data-mode=noir] .cell.cell-hover:after{background:#ffffff4d}.cell>*{position:relative;z-index:2}.cell>.cell-caption{position:absolute}.cell.hl{box-shadow:inset 0 0 0 4px var(--blue)}.cell.dim{filter:saturate(.75) brightness(.94)}:root[data-mode=noir] .cell.dim{filter:brightness(.75)}.cell.selected{box-shadow:inset 0 0 0 5px var(--select)}.cell.conflict{box-shadow:inset 0 0 0 100vmax var(--danger-bg)}.cell.conflict.selected{box-shadow:inset 0 0 0 5px var(--select),inset 0 0 0 100vmax var(--danger-bg)}.cell.culprit{animation:glow 1.1s ease-in-out infinite alternate}@keyframes glow{0%{box-shadow:inset 0 0 0 4px var(--accent)}to{box-shadow:inset 0 0 0 8px var(--accent)}}.cell-emoji{font-size:46cqw;line-height:1;user-select:none;filter:drop-shadow(0 3px 0 rgba(0,0,0,.35));transform:translateY(-6cqw)}.cell-emoji.prop{opacity:.95}.cell-cat{width:84cqw;height:84cqw;display:block;filter:drop-shadow(0 3px 0 rgba(0,0,0,.3))}.cell-mark{font-size:40cqw;line-height:1;color:var(--ink);opacity:.55;font-weight:900}.cell-notes{display:flex;flex-wrap:wrap;gap:2cqw;justify-content:center;align-items:center;max-width:90cqw}.note-cat{width:24cqw;height:24cqw;display:block;background:#fff;border-radius:50%;border:1.5px solid var(--ink)}.board{position:relative}.room-labels{position:absolute;inset:0;pointer-events:none;z-index:2;container-type:size}.room-label{position:absolute;font-family:var(--font-display);font-size:clamp(.62rem,calc(18cqw / var(--n)),1.05rem);font-weight:900;color:#fff;-webkit-text-stroke:3px var(--ink);paint-order:stroke fill;letter-spacing:.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.1}.cell-caption{position:absolute;bottom:3cqw;left:0;right:0;text-align:center;font-size:clamp(8px,12cqw,12px);font-weight:700;color:#fff;-webkit-text-stroke:2.5px var(--ink);paint-order:stroke fill;pointer-events:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 2px}.cell.has-label .cell-caption{display:none}.mode-banner{max-width:620px;background:var(--blue);color:#fff;border:var(--border);border-radius:10px;padding:.5rem .8rem;font-size:.85rem;font-weight:700;box-shadow:var(--shadow-sm)}.tools-title{font-size:.8rem;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.tools-group{display:flex;flex-direction:column;gap:.6rem}.tools-group.bottom{margin-top:auto}.tools-row{display:flex;gap:.6rem}.tool{border:var(--border);border-radius:10px;background:var(--panel);box-shadow:var(--shadow);padding:.55rem .5rem;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.15rem;font-weight:800;min-height:48px;transition:transform .08s ease,box-shadow .08s ease}.tool:hover:not(:disabled){transform:translate(-1px,-1px);box-shadow:5px 5px 0 var(--ink)}.tool:active:not(:disabled){transform:translate(2px,2px);box-shadow:1px 1px 0 var(--ink)}.tool:disabled{box-shadow:var(--shadow-sm)}.tool.on{background:var(--blue);color:#fff}.tool.primary{background:var(--accent);color:var(--accent-text)}.tool.accuse{min-height:64px}.tool-icon{font-size:1.3rem;line-height:1}.tool-label{font-size:.82rem;line-height:1.2;text-align:center}.tool-sub{font-size:.68rem;font-weight:600;opacity:.8;text-align:center}.tool.icon-only{flex:1;padding:.4rem;font-size:1.1rem;min-height:42px}.tool.back{flex:0 0 auto;width:42px;box-shadow:var(--shadow-sm)}.modal-backdrop{position:fixed;inset:0;background:#140f0a80;display:flex;align-items:center;justify-content:center;padding:1rem;z-index:50;animation:fade .15s ease}@keyframes fade{0%{opacity:0}}.modal{background:var(--panel);border:var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:1.4rem 1.5rem;width:min(100%,480px);max-height:90vh;overflow:auto;animation:pop .18s ease}.modal.wide{width:min(100%,640px)}@keyframes pop{0%{transform:translateY(12px) scale(.98);opacity:0}}.modal-title{font-family:var(--font-display);font-size:1.5rem;margin-bottom:.4rem}.modal-actions{display:flex;justify-content:flex-end;gap:.7rem;margin-top:1.2rem}.accuse-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:.8rem;margin-top:.9rem}.accuse-cat{width:100%;display:flex;flex-direction:column;align-items:center;gap:.25rem;border:var(--border);background:var(--panel);border-radius:10px;padding:.35rem .35rem .5rem;font-weight:800;box-shadow:var(--shadow-sm);transition:transform .08s ease,box-shadow .08s ease}.accuse-cat .portrait{width:100%;margin:0}.accuse-cat:hover{transform:translate(-1px,-1px);box-shadow:4px 4px 0 var(--ink)}.accuse-cat.wrong{opacity:.5;outline:3px solid var(--danger)}.feedback{margin-top:.9rem;padding:.6rem .8rem;border-radius:10px;border:var(--border);background:var(--danger-bg);color:var(--text);font-weight:700}.shake{animation:shake .35s ease}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-5px)}75%{transform:translate(5px)}}.win-hero{display:flex;flex-direction:column;align-items:center;gap:.4rem;margin:.4rem 0}.badge{background:var(--accent);color:var(--accent-text);border:2px solid var(--ink);border-radius:999px;padding:.1rem .7rem;font-size:.8rem;font-weight:800}.win-body{text-align:center;font-size:1.02rem}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:.6rem;margin:1rem 0 0}.stats div{background:var(--panel-2);border:2px solid var(--ink);border-radius:10px;padding:.5rem;text-align:center}.stats dt{font-size:.75rem;color:var(--muted);font-weight:700}.stats dd{margin:0;font-weight:900;font-size:1.15rem;font-variant-numeric:tabular-nums}.rules-tabs{display:flex;gap:.4rem;flex-wrap:wrap;margin:.4rem 0 .9rem;border-bottom:3px solid var(--ink);padding-bottom:.6rem}.rules-tab{border:var(--border);border-radius:999px;background:var(--panel-2);padding:.3rem .9rem;font-weight:800;font-size:.9rem;box-shadow:var(--shadow-sm);transition:transform .08s ease,box-shadow .08s ease}.rules-tab:hover{transform:translate(-1px,-1px);box-shadow:4px 4px 0 var(--ink)}.rules-tab.on{background:var(--accent);color:var(--accent-text)}.rules-panel{display:flex;flex-direction:column;gap:1rem;font-size:.95rem}.rules-section h3{font-family:var(--font-display);font-size:1.05rem;margin-bottom:.35rem}.rules-section p{margin:.2rem 0}.rules-list{padding-left:1.3rem;display:flex;flex-direction:column;gap:.35rem}.rules-list.ordered{list-style:decimal}.rules-list.bullets{list-style:disc}.kw-list{margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:.8rem}.kw{display:flex;gap:.7rem;align-items:flex-start;background:var(--panel-2);border:2px solid var(--ink);border-radius:10px;padding:.6rem}.kw-text{min-width:0}.kw dt{font-weight:800;margin-bottom:.15rem}.kw dd{margin:0;font-size:.88rem;color:var(--text)}.tech-steps{display:flex;flex-wrap:wrap;gap:.9rem;margin-top:.5rem}.tech-step{margin:0;display:flex;gap:.6rem;align-items:center;flex:1 1 240px;background:var(--panel-2);border:2px solid var(--ink);border-radius:10px;padding:.5rem .6rem}.tech-step figcaption{font-size:.85rem;color:var(--muted)}.faq{display:flex;flex-direction:column;gap:.5rem}.faq-item{border:2px solid var(--ink);border-radius:10px;background:var(--panel-2);padding:.45rem .8rem}.faq-item summary{cursor:pointer;font-weight:800;list-style:none;display:flex;gap:.5rem;align-items:baseline}.faq-item summary::-webkit-details-marker{display:none}.faq-item summary:before{content:"▸";flex:0 0 auto;transition:transform .12s ease}.faq-item[open] summary:before{transform:rotate(90deg)}.faq-item p{margin:.45rem 0 .2rem 1.1rem;font-size:.9rem}.mini-grid{--mg: 30px;display:grid;flex:0 0 auto;border:3px solid var(--ink);border-radius:3px;background:var(--ink);width:calc(var(--mg) * 3 + 6px);aspect-ratio:1}.mg-cell{position:relative;display:flex;align-items:center;justify-content:center;border-top:1px solid var(--ink-soft);border-left:1px solid var(--ink-soft);font-size:.85rem;line-height:1}.mg-cell.mg-wall-t{border-top:3px solid var(--ink)}.mg-cell.mg-wall-l{border-left:3px solid var(--ink)}.mg-cell.mg-hl{box-shadow:inset 0 0 0 3px var(--blue)}.mg-cat{width:20px;height:20px;border-radius:50%;border:2px solid var(--ink);background:#fff;color:var(--ink);font-weight:900;font-size:.75rem;display:flex;align-items:center;justify-content:center}.mg-cat.maybe{border-style:dashed;background:#ffffff8c;font-weight:700}.mg-icon{font-size:1rem;filter:drop-shadow(0 1px 0 rgba(0,0,0,.3))}.mg-x{font-weight:900;color:var(--ink);opacity:.55}.mg-must{font-weight:900;color:var(--blue);font-size:1rem}:root[data-mode=noir] .mg-cat{background:#ece6da}:root[data-mode=noir] .mg-x{color:#ece6da;opacity:.7}.loading{min-height:60vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;color:var(--muted)}@media (max-width: 980px){.tools{border-left:0;max-height:none;overflow:visible;background:transparent;padding:.25rem .75rem .5rem;gap:.5rem}.tools-title{display:none}.tools-group,.tools-group.bottom{flex-direction:row;flex-wrap:wrap;justify-content:center;gap:.5rem;margin-top:0}.tools-row{display:contents}.tool{flex:1 1 0;min-width:72px;max-width:140px;min-height:52px;padding:.35rem .3rem;box-shadow:var(--shadow-sm)}.tool.accuse{flex:2 1 0;max-width:220px;min-height:52px}.tool.icon-only{flex:0 0 52px;min-height:52px}.tool-icon{font-size:1.1rem}.tool-label{font-size:.75rem}.suspect-grid{grid-template-columns:repeat(auto-fill,minmax(104px,1fr))}.board-frame{box-shadow:var(--shadow)}.hide-mobile{display:none}.brand-sub{white-space:nowrap;font-size:.75rem}.brand{font-size:1.15rem}.tool.back{min-height:40px;width:40px}}:root[data-mode=noir] .bubble:before{border-color:#3a3d4a}@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}
