:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--color-ink:#1c1914;--color-ink-soft:#3a342c;--color-ink-muted:#5a5248;--color-paper:#f3ebde;--color-paper-warm:#ebe4d4;--color-paper-dark:#12100e;--color-paper-mid:#1a1714;--color-desk:#2a2420;--color-manila:#d9c7a3;--color-manila-deep:#c4ad82;--color-manila-edge:#a89068;--color-accent:#8b3a2a;--color-accent-soft:#8b3a2a1a;--color-accent-line:#1c191438;--color-stamp:#9a4230;--color-success:#2f5a38;--color-danger:#9b3b32;--color-danger-on-dark:#e8a39c;--color-lock:#5c5348;--font-display:"Libre Baskerville", "Palatino Linotype", Georgia, serif;--font-body:"Source Serif 4", Georgia, serif;--font-stamp:"Special Elite", "Courier New", monospace;--font-ui:"Source Serif 4", Georgia, serif;--shadow-sheet:0 1px 0 #fff6 inset, 0 1px 0 #0000001f, 0 22px 48px #0000006b, 0 0 0 1px #0000001a;--shadow-panel:0 3px 0 var(--murdoku-line);--paper-fiber:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 180 180'%3E%3Cfilter id='f'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0.22 0 0 0 0 0.18 0 0 0 0 0.12 0 0 0 0.28 0'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23f)'/%3E%3C/svg%3E");--murdoku-ink:#1c1914;--murdoku-paper:#f3ebde;--murdoku-line:#2e2923;--murdoku-bg:#e5ddd0}@keyframes sheet-settle{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes sheet-drop{0%{opacity:0;transform:translateY(-18px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes backdrop-fade{0%{opacity:0}to{opacity:1}}@keyframes stamp-hit{0%{opacity:0;filter:blur(1px);transform:scale(1.55)rotate(-8deg)}55%{opacity:1;filter:blur();transform:scale(.94)rotate(-1.5deg)}to{opacity:1;transform:scale(1)rotate(-2deg)}}@keyframes victory-stamp-land{0%{opacity:0;transform:translate(-50%,-60%)scale(1.8)rotate(-18deg)}60%{opacity:1;transform:translate(-50%,-50%)scale(.92)rotate(-8deg)}to{opacity:1;transform:translate(-50%,-50%)scale(1)rotate(-12deg)}}@keyframes lamp-breathe{0%,to{opacity:.72;transform:scale(1)}50%{opacity:1;transform:scale(1.06)}}@keyframes dust-drift{0%{opacity:.35;transform:translate(0,0)}50%{opacity:.55;transform:translate(6px,-10px)}to{opacity:.3;transform:translate(-4px,-18px)}}@keyframes grain-shift{0%{background-position:0 0}to{background-position:40px 28px}}@keyframes tick-breathe{0%,to{opacity:.62}50%{opacity:1}}@keyframes sheen-sweep{0%{transform:translate(-130%)skew(-12deg)}to{transform:translate(130%)skew(-12deg)}}@keyframes amber-flash{0%{filter:brightness();box-shadow:inset 0 0 0 999px #c79f2a00}35%{filter:brightness(1.12);box-shadow:inset 0 0 0 999px #c79f2a47}to{filter:brightness();box-shadow:inset 0 0 0 999px #c79f2a00}}@keyframes ink-shake{0%,to{transform:translate(0)}20%{transform:translate(-3px)rotate(-.4deg)}40%{transform:translate(3px)rotate(.4deg)}60%{transform:translate(-2px)}80%{transform:translate(2px)}}@keyframes danger-flash{0%,to{filter:brightness();box-shadow:none}40%{filter:brightness(1.05);box-shadow:inset 0 0 0 999px #9b3b3238}}@keyframes highlight-pulse{0%,to{box-shadow:inset 0 0 0 999px #c79f2a2e}50%{box-shadow:inset 0 0 0 999px #c79f2a52}}@keyframes window-breathe{0%,to{filter:brightness();box-shadow:inset 0 0 0 1px #ffffffb8,0 0 4px #a9dff359}50%{filter:brightness(1.08);box-shadow:inset 0 0 0 1px #ffffffd9,0 0 10px #a9dff3a6}}@keyframes board-sheen-drift{0%,to{background-position:0 40%,0 0,0 0}50%{background-position:100% 60%,0 0,0 0}}@keyframes place-pop{0%{opacity:.4;filter:brightness(1.25);transform:scale(.7)}70%{filter:brightness(1.08);transform:scale(1.08)}to{opacity:1;filter:brightness();transform:scale(1)}}@keyframes match-glow{0%{filter:brightness();box-shadow:4px 5px 0 var(--line), inset 0 0 0 3px color-mix(in srgb, var(--tile-tone) 34%, transparent), 0 0 0 0 #c79f2a00}40%{filter:brightness(1.15);box-shadow:4px 5px 0 var(--line), inset 0 0 0 3px #c79f2a59, 0 0 16px 2px #c79f2a73}to{filter:brightness();opacity:0;transform:scale(.82)translateY(-6px)}}.fx-amber-flash{animation:.45s ease-out amber-flash}.fx-ink-shake{animation:.38s ease-out ink-shake,.38s ease-out danger-flash}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}html{background:var(--color-desk);color:var(--color-ink);font-family:var(--font-body);overflow-x:clip}body{background-color:var(--color-desk);background-image:radial-gradient(120% 80% at 50% 40%,#0000 35%,#00000059 100%),radial-gradient(circle at 12% 88%,#8b3a2a24,#0000 28%),radial-gradient(circle at 88% 20%,#b4a0781a,#0000 32%),repeating-linear-gradient(0deg,#0000,#0000 2px,#00000009 2px 3px),linear-gradient(165deg,#322a24 0%,#1a1714 48%,#0e0c0a 100%);background-attachment:fixed;min-height:100dvh;margin:0;position:relative;overflow-x:clip}body:before{content:"";pointer-events:none;z-index:0;transform-origin:50% 0;background:radial-gradient(85% 65% at 50% 0,#e8d6aa47,#d9c7a31a 38%,#0000 72%);height:68vh;animation:5.5s ease-in-out infinite lamp-breathe;position:fixed;inset:-8% -5% auto}body:after{content:"";pointer-events:none;z-index:0;opacity:.4;mix-blend-mode:soft-light;background-image:radial-gradient(1.2px 1.2px at 12% 22%,#f3ebde8c,#0000),radial-gradient(1px 1px at 28% 68%,#d9c7a373,#0000),radial-gradient(1.4px 1.4px at 47% 38%,#f3ebde66,#0000),radial-gradient(1px 1px at 63% 14%,#d9c7a380,#0000),radial-gradient(1.2px 1.2px at 78% 56%,#f3ebde59,#0000),radial-gradient(1px 1px at 88% 82%,#d9c7a366,#0000),radial-gradient(1.3px 1.3px at 35% 90%,#f3ebde4d,#0000),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 160 160'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0.15 0 0 0 0 0.12 0 0 0 0 0.08 0 0 0 0.55 0'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23g)'/%3E%3C/svg%3E");background-repeat:repeat;background-size:auto,auto,auto,auto,auto,auto,auto,140px 140px;animation:14s ease-in-out infinite alternate dust-drift,28s linear infinite grain-shift;position:fixed;inset:0}@media (width<=720px),(prefers-reduced-data:reduce){body{background-attachment:scroll}body:before{opacity:.9;animation:none}body:after{display:none}}*{box-sizing:border-box}#root{z-index:1;min-height:100dvh;position:relative}input,button{font:inherit;-webkit-tap-highlight-color:#8b3a2a2e}input:focus,button:focus{outline-offset:2px;outline:2px solid #8b3a2a8c}::selection{color:var(--color-ink);background:#8b3a2a38}.landing-shell{min-height:100dvh;padding:clamp(28px,5vw,56px) 20px 48px;padding-top:max(clamp(28px, 5vw, 56px), env(safe-area-inset-top,0px));padding-right:max(20px, env(safe-area-inset-right,0px));padding-bottom:max(48px, env(safe-area-inset-bottom,0px));padding-left:max(20px, env(safe-area-inset-left,0px));flex-direction:column;align-items:center;gap:clamp(28px,4vw,40px);display:flex}.landing-hero,.landing-card,.dossier-archive,.continue-panel{width:min(720px,100%)}.landing-hero,.landing-card{isolation:isolate;background:linear-gradient(180deg, #fffcf59e, transparent 38%), radial-gradient(ellipse 80% 50% at 100% 0%, #8b3a2a0d, transparent 55%), var(--paper-fiber), var(--color-paper);border:1px solid var(--color-accent-line);box-shadow:var(--shadow-sheet);background-size:auto,auto,160px 160px,auto;padding:clamp(28px,5vw,44px) clamp(22px,4vw,40px);animation:.7s ease-out both sheet-settle;position:relative;overflow:hidden}.landing-hero:before,.landing-card:before{content:"";pointer-events:none;z-index:1;border:1px dashed #1c191429;position:absolute;inset:10px}.landing-hero:after,.landing-card:after{content:"";pointer-events:none;z-index:0;mix-blend-mode:multiply;background:radial-gradient(circle at 8% 92%,#8b3a2a12,#0000 22%),radial-gradient(circle at 96% 6%,#a890681f,#0000 18%),linear-gradient(135deg,#0000 62%,#1c19140a 100%);position:absolute;inset:0}.landing-hero>*,.landing-card>*{z-index:2;position:relative}.case-stamp,.label{font-family:var(--font-stamp);letter-spacing:.14em;text-transform:uppercase;color:var(--color-stamp);transform-origin:0;margin:0 0 14px;font-size:.92rem;animation:.6s cubic-bezier(.2,.85,.25,1) .15s both stamp-hit;display:inline-block}.landing-brand,.landing-card h1{font-family:var(--font-display);letter-spacing:-.02em;color:var(--color-ink);text-shadow:0 1px #fffcf58c;margin:0;font-size:clamp(2.4rem,7vw,3.6rem);font-weight:700;line-height:1.05}.landing-brand:after,.landing-card h1:after{content:"";background:linear-gradient(90deg, var(--color-accent) 0%, #8b3a2a59 55%, transparent 100%);width:min(5.5rem,28%);height:2px;margin-top:.85rem;display:block}.landing-kicker{font-family:var(--font-stamp);letter-spacing:.06em;color:var(--color-ink-soft);margin:14px 0 0;font-size:.95rem}.landing-lede,.landing-copy{max-width:none;color:var(--color-ink-soft);text-wrap:pretty;margin:22px 0 0;font-size:1.05rem;line-height:1.7;position:relative}.landing-lede p,.landing-copy p{margin:0}.landing-lede p+p,.landing-copy p+p{margin-top:.9em}.landing-copy a{color:var(--color-accent);text-underline-offset:3px}.landing-tick{font-family:var(--font-stamp);letter-spacing:.12em;color:var(--color-stamp);margin:16px 0 0;font-size:1rem;animation:3.6s ease-in-out infinite tick-breathe}.primary-button{isolation:isolate;border:2px solid var(--color-ink);background:linear-gradient(180deg, #ffffff14, transparent 40%), var(--color-ink);min-width:220px;color:var(--color-paper);font-family:var(--font-stamp);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;margin-top:28px;padding:.95rem 1.6rem;font-size:.95rem;transition:transform .18s,background .18s,color .18s,box-shadow .18s;position:relative;overflow:hidden;box-shadow:0 3px #0c0a08,inset 0 1px #fffcf524}.primary-button:after{content:"";z-index:1;pointer-events:none;background:linear-gradient(105deg,#0000 35%,#fffcf538 50%,#0000 65%);position:absolute;inset:0;transform:translate(-130%)skew(-12deg)}.primary-button:hover{background:linear-gradient(180deg, #ffffff1a, transparent 40%), var(--color-accent);border-color:#6e2e22;transform:translateY(-1px);box-shadow:0 4px #4a1e16,inset 0 1px #fffcf529}.primary-button:hover:after{animation:.75s sheen-sweep}.primary-button:active{transform:translateY(2px);box-shadow:0 1px #0c0a08,inset 0 1px #fffcf514}.dossier-archive{animation:.7s ease-out .12s both sheet-settle}.dossier-archive-head{justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:14px;padding:0 4px;display:flex}.dossier-archive-head h2{font-family:var(--font-stamp);letter-spacing:.16em;text-transform:uppercase;color:var(--color-manila);margin:0;font-size:1rem}.progress-summary{font-family:var(--font-stamp);letter-spacing:.08em;text-transform:uppercase;color:var(--color-manila-deep);margin:0;font-size:.82rem}.dossier-alert{font-family:var(--font-stamp);letter-spacing:.06em;color:var(--color-stamp);box-shadow:inset 3px 0 0 var(--color-accent);background:linear-gradient(90deg,#8b3a2a1f,#f3ebde1a);border:1px dashed #8b3a2a66;margin:0 0 14px;padding:10px 14px;font-size:.9rem}.dossier-rack{gap:14px;margin:0;padding:0;list-style:none;display:grid}.dossier{text-align:left;width:100%;color:var(--color-ink);cursor:pointer;filter:drop-shadow(0 10px 18px #00000047);animation:.55s ease-out both sheet-settle;animation-delay:calc(.2s + var(--dossier-i,0) * 80ms);background:0 0;border:0;grid-template-columns:1fr auto;grid-template-areas:"tab tab""body status";padding:0;transition:transform .2s,filter .2s;display:grid;position:relative}.dossier:hover:not(:disabled){filter:drop-shadow(0 14px 22px #00000061);transform:translateY(-3px)rotate(-.35deg)}.dossier:hover:not(:disabled) .dossier-body{box-shadow:inset 0 0 0 1px #fffcf573}.dossier:focus-visible{outline:2px solid var(--color-accent);outline-offset:4px}.dossier-tab{min-width:72px;height:28px;font-family:var(--font-stamp);letter-spacing:.1em;color:var(--color-ink-soft);background:linear-gradient(180deg, #fffcf559, transparent 60%), linear-gradient(180deg, #e4d3ad, var(--color-manila-deep));border:2px solid var(--color-manila-edge);clip-path:polygon(8% 0,92% 0,100% 100%,0 100%);z-index:1;border-bottom:0;border-radius:8px 8px 0 0;grid-area:tab;justify-content:center;justify-self:start;align-items:center;margin:0 0 -2px 18px;padding:0 16px;font-size:.9rem;display:inline-flex;box-shadow:0 -2px 6px #00000014}.dossier-body{background:linear-gradient(135deg, #ffffff61, transparent 42%), var(--paper-fiber), linear-gradient(180deg, #e8d9b8 0%, var(--color-manila) 100%);border:2px solid var(--color-manila-edge);background-size:auto,140px 140px,auto;border-right-width:0;flex-direction:column;grid-area:body;gap:4px;min-height:108px;padding:16px 18px;display:flex;box-shadow:inset 0 -10px 18px #5a46280f,inset -8px 0 14px #5a46280d}.dossier-meta{justify-content:space-between;align-items:center;gap:10px;display:flex}.dossier-file-id{font-family:var(--font-stamp);letter-spacing:.14em;text-transform:uppercase;color:var(--color-ink-muted);font-size:.72rem}.dossier-seal{font-family:var(--font-stamp);letter-spacing:.14em;text-transform:uppercase;background:#f3ebde73;border:2px solid;border-radius:2px;padding:3px 9px;font-size:.68rem;transform:rotate(-3deg);box-shadow:inset 0 0 0 1px}.seal-sellado{color:var(--color-lock)}.seal-abierto{color:var(--color-accent)}.seal-resuelto{color:var(--color-success);animation:.5s cubic-bezier(.2,.85,.25,1) both stamp-hit}.dossier-title{font-family:var(--font-display);color:var(--color-ink);margin-top:4px;font-size:1.2rem;font-weight:700;line-height:1.25}.dossier-teaser{color:var(--color-ink-soft);font-size:.95rem;line-height:1.45}.dossier-code{font-family:var(--font-stamp);letter-spacing:.1em;text-transform:uppercase;color:var(--color-success);margin-top:6px;font-size:.82rem}.dossier-status{background:var(--paper-fiber), linear-gradient(180deg, #e0cfab, var(--color-manila-deep));border:2px solid var(--color-manila-edge);background-size:140px 140px,auto;border-left:0;grid-area:status;place-items:center;padding:0 18px;display:grid;box-shadow:inset 6px 0 12px #5a462814}.status-mark{width:40px;height:40px;color:var(--color-ink-soft);place-items:center;display:grid}.status-mark.locked{color:var(--color-lock)}.status-mark.open{color:var(--color-accent)}.status-mark.solved{font-family:var(--font-stamp);color:var(--color-success);border:2.5px solid var(--color-success);box-shadow:inset 0 0 0 1.5px var(--color-success);background:#3d6b4514;border-radius:50%;font-size:1.35rem;transform:rotate(-8deg)}.dossier.is-locked{cursor:not-allowed;opacity:.72;filter:drop-shadow(0 6px 12px #00000038)grayscale(.35)}.dossier.is-locked .dossier-body,.dossier.is-locked .dossier-tab,.dossier.is-locked .dossier-status{background:linear-gradient(#cfc3a8,#b8a888)}.dossier.is-locked .dossier-title{color:var(--color-ink-soft)}.dossier.is-locked .dossier-teaser{color:var(--color-ink-muted)}.dossier.is-solved .dossier-body{background:linear-gradient(135deg,#ffffff47,#0000 40%),linear-gradient(#e4dcc4 0%,#d2c49c 100%)}.continue-panel{background:linear-gradient(#f3ebde24,#f3ebde0d),#00000038;border:1px dashed #d9c7a36b;margin-top:8px;padding:24px clamp(18px,3vw,28px);animation:.7s ease-out .22s both sheet-settle;position:relative;box-shadow:inset 0 1px #fffcf50f,0 12px 28px #00000038}.continue-panel h2{font-family:var(--font-display);color:var(--color-manila);margin:0;font-size:1.2rem}.continue-panel p{color:#f3ebdec7;margin:10px 0 0;line-height:1.6}.continue-form{flex-wrap:wrap;gap:10px;margin-top:16px;display:flex}.continue-form input{min-width:0;color:var(--color-manila);font-family:var(--font-stamp);letter-spacing:.08em;text-transform:uppercase;background:#00000047;border:1px solid #d9c7a366;flex:220px;padding:.85rem 1rem}.continue-form .tool-button,.tool-button.secondary{border:1px solid var(--color-manila-edge);background:linear-gradient(180deg, #fffcf559, transparent 55%), var(--color-manila);width:auto;min-width:120px;color:var(--color-ink);font-family:var(--font-stamp);letter-spacing:.06em;text-transform:uppercase;cursor:pointer;box-shadow:0 2px 0 var(--color-manila-edge), inset 0 1px 0 #fffcf559;padding:.85rem 1.2rem;transition:transform .15s,box-shadow .15s}.continue-form .tool-button:hover,.tool-button.secondary:hover{box-shadow:0 3px 0 var(--color-manila-edge), inset 0 1px 0 #fffcf566;transform:translateY(-1px)}.continue-form .tool-button:active,.tool-button.secondary:active{box-shadow:0 1px 0 var(--color-manila-edge), inset 0 1px 0 #fffcf533;transform:translateY(1px)}.continue-feedback{font-family:var(--font-stamp);color:#9fd39f;margin:12px 0 0}.continue-feedback.error{color:var(--color-danger-on-dark);animation:.38s ease-out ink-shake}.text-link{color:var(--color-manila);font-family:var(--font-stamp);cursor:pointer;text-underline-offset:3px;background:0 0;border:0;margin-top:8px;padding:0;text-decoration:underline;display:inline-block}.landing-card .text-link,.landing-hero .text-link{color:var(--color-ink-soft)}.text-link.danger{color:#e6a09a;font-size:.85rem}.landing-credit{text-align:center;width:min(720px,100%);font-family:var(--font-stamp);letter-spacing:.04em;color:#d9c7a38c;border-top:1px dashed #d9c7a338;margin-top:clamp(8px,2vw,16px);padding-top:20px;font-size:.75rem;line-height:1.55}.landing-credit p{margin:0}.code-hint strong,.continue-code{font-family:var(--font-stamp);letter-spacing:.12em}.continue-code{text-align:center;color:#1d1d1d;background:#f3eee3;border:2px dashed #1d1d1d;margin:18px 0;padding:14px 16px;font-size:1.35rem;font-weight:700}.save-code-modal .save-code-copy{width:100%;min-height:48px;margin:0 0 8px;display:block}.save-code-modal .continue-feedback{text-align:center;margin:0 0 12px;font-size:.95rem}.save-code-modal .continue-feedback.error{color:#8b1e1e}.save-code-modal .text-link{color:#1d1d1d;width:100%;margin-top:10px;display:block}.save-code-modal{overflow:hidden}.victory-stamp{z-index:2;border:3px solid var(--color-success);width:7.2rem;height:7.2rem;font-family:var(--font-stamp);letter-spacing:.14em;text-transform:uppercase;color:var(--color-success);opacity:.92;pointer-events:none;filter:contrast(1.05);background:#f3ebde8c;border-radius:50%;place-items:center;padding:.4rem;font-size:.95rem;animation:.65s cubic-bezier(.2,.85,.25,1) .2s both victory-stamp-land;display:grid;position:absolute;top:22%;left:72%;box-shadow:inset 0 0 0 2px #3d6b4559,0 0 0 1px #3d6b4533}.victory-stamp:after{content:"";border:1.5px dashed #3d6b4573;border-radius:50%;position:absolute;inset:8px}.puzzle-menu{gap:12px;margin-top:28px;display:grid}.puzzle-option{text-align:left;border:2px solid var(--color-manila-edge);background:var(--color-manila);width:100%;color:var(--color-ink);cursor:pointer;grid-template-columns:auto 1fr;gap:2px 14px;padding:14px 16px;display:grid}.finale-shell{padding-block:max(24px, env(safe-area-inset-top,0px)) max(24px, env(safe-area-inset-bottom,0px));justify-content:center;position:relative}.finale-shell--board{min-height:100dvh;padding:10px 14px;padding-top:max(10px, env(safe-area-inset-top,0px));padding-right:max(14px, env(safe-area-inset-right,0px));padding-bottom:max(10px, env(safe-area-inset-bottom,0px));padding-left:max(14px, env(safe-area-inset-left,0px));gap:0;overflow:hidden}.finale-stage{isolation:isolate;place-items:center;width:min(1120px,100%);min-height:min(760px,100dvh - 36px);display:grid;position:relative}.finale-shell--board .finale-stage{width:min(1200px,100%);min-height:calc(100dvh - 20px);padding:clamp(40px,6vh,72px) clamp(48px,6vw,96px)}.finale-card{z-index:2;width:min(480px,100%);position:relative;box-shadow:0 0 0 1px #fffcf514,0 18px 48px #00000073}.finale-shell--board .finale-card{width:min(420px,100%);padding:clamp(20px,3vw,32px) clamp(18px,2.6vw,28px)}.finale-shell--board .finale-card h1{margin-bottom:.35em;font-size:clamp(1.75rem,3.6vw,2.25rem)}.finale-shell--board .landing-kicker{margin-bottom:.7em}.finale-shell--board .finale-question{margin:0;font-size:clamp(1.05rem,2.4vw,1.22rem)}.finale-shell--board .finale-form{gap:10px;margin-top:14px}.finale-shell--board .finale-form input{padding:.75rem .95rem}.finale-shell--board .finale-card .text-link{margin-top:12px}.finale-question{font-family:var(--font-display);color:var(--color-ink);font-size:clamp(1.15rem,3.2vw,1.35rem);font-weight:700;line-height:1.45}.finale-form{flex-direction:column;align-items:stretch;gap:12px;margin-top:22px;display:flex}.finale-form input{border:1px solid var(--color-accent-line);width:100%;color:var(--color-ink);font-family:var(--font-stamp);letter-spacing:.06em;background:#fffcf58c;padding:.95rem 1.1rem;font-size:1.05rem}.finale-form input:focus{outline-offset:2px;outline:2px solid #8b3a2a59}.finale-form .primary-button{width:100%;min-width:0;margin-top:4px}.finale-card .continue-feedback{margin-top:14px}.finale-suspects{z-index:1;pointer-events:none;margin:0;padding:0;list-style:none;position:absolute;inset:0}.finale-suspects--pile{overflow:visible}.finale-suspects li{--x:50;--y:50;--r:0deg;--z:1;--delay:.1s;left:calc(var(--x) * 1%);top:calc(var(--y) * 1%);z-index:var(--z);width:clamp(70px,7.4vw,96px);transform:translate(-50%, -50%) rotate(var(--r));margin:0;position:absolute}.finale-suspect--featured{width:clamp(104px,12vw,148px)}.finale-photo-card{isolation:isolate;background:linear-gradient(180deg, #fffcf5b3, transparent 40%), var(--paper-fiber), var(--color-paper);border:1px solid var(--color-accent-line);width:100%;animation:.55s ease-out both finale-photo-in;animation-delay:var(--delay,.1s);content-visibility:auto;contain-intrinsic-size:120px 150px;background-size:auto,160px 160px,auto;margin:0;padding:14px 7px 5px;position:relative;overflow:visible;box-shadow:inset 0 1px #fffcf559,2px 3px #0000002e,0 7px 14px #00000061}@keyframes finale-photo-in{0%{opacity:0;filter:blur(2px)}to{opacity:1;filter:blur()}}.finale-photo-card:before{content:"";pointer-events:none;z-index:1;border:1px dashed #1c191424;position:absolute;inset:11px 5px 5px}.finale-chincheta{z-index:5;background:radial-gradient(circle at 32% 28%, #fff6, transparent 40%), radial-gradient(circle at 50% 55%, var(--pin-mid,#c0392b), var(--pin-dark,#6b1410) 70%);border-radius:50%;width:13px;height:13px;position:absolute;top:3px;left:50%;transform:translate(-50%);box-shadow:0 1px 2px #0000008c,inset 0 -2px 3px #00000059,inset 0 2px 2px #ffffff59}.finale-chincheta:after{content:"";background:linear-gradient(#9aa0a6,#5c636a);border-radius:1px;width:2px;height:7px;position:absolute;top:100%;left:50%;transform:translate(-50%);box-shadow:0 1px 1px #00000059}.finale-suspects li[data-pin=ruby],.proof-drop[data-pin=ruby]{--pin-mid:#d64545;--pin-dark:#7a1515}.finale-suspects li[data-pin=brass],.proof-drop[data-pin=brass]{--pin-mid:#d4a017;--pin-dark:#7a5a0a}.finale-suspects li[data-pin=navy],.proof-drop[data-pin=navy]{--pin-mid:#3d6ea8;--pin-dark:#1a3558}.finale-suspects li[data-pin=forest],.proof-drop[data-pin=forest]{--pin-mid:#3f8f5a;--pin-dark:#1d4a2c}.finale-photo-card img{z-index:2;aspect-ratio:5/6;object-fit:cover;object-position:center 40%;border:1px solid #1c19142e;width:100%;height:auto;display:block;position:relative}.finale-photo-card--kai img{aspect-ratio:3/4;object-position:center 55%}.finale-photo-card figcaption{z-index:2;font-family:var(--font-stamp);letter-spacing:.08em;text-transform:uppercase;color:var(--color-stamp);text-align:center;white-space:nowrap;text-overflow:ellipsis;margin:5px 1px 1px;font-size:.58rem;position:relative;overflow:hidden}@media (width<=560px){.landing-shell{padding:20px 14px 36px;padding-top:max(20px, env(safe-area-inset-top,0px));padding-right:max(14px, env(safe-area-inset-right,0px));padding-bottom:max(36px, env(safe-area-inset-bottom,0px));padding-left:max(14px, env(safe-area-inset-left,0px));gap:22px}.landing-brand,.landing-card h1{font-size:clamp(1.9rem,8.5vw,2.4rem)}.landing-hero,.landing-card{padding:clamp(22px,5vw,32px) clamp(16px,4vw,24px)}.landing-lede,.landing-copy{font-size:1rem;line-height:1.65}.primary-button{width:100%;min-width:0;min-height:48px}.continue-form{flex-direction:column}.continue-form input,.continue-form .tool-button,.continue-form .tool-button.secondary{flex:none;width:100%;min-width:0;min-height:48px}.dossier{grid-template-columns:1fr;grid-template-areas:"tab""body""status"}.dossier-body{border-bottom-width:0;border-right-width:2px;min-height:0;padding:14px}.dossier-status{border-left:2px solid var(--color-manila-edge);border-top:0;justify-content:flex-start;padding:10px 14px}.dossier-title{font-size:1.1rem}.victory-stamp{width:5.2rem;height:5.2rem;font-size:.72rem;top:12%;left:auto;right:4%}.finale-shell--board{padding:8px 10px;padding-top:max(8px, env(safe-area-inset-top,0px));padding-right:max(10px, env(safe-area-inset-right,0px));padding-bottom:max(8px, env(safe-area-inset-bottom,0px));padding-left:max(10px, env(safe-area-inset-left,0px));overflow:hidden}.finale-shell--board .finale-stage{place-items:center;width:100%;min-height:calc(100dvh - 16px);padding:0;display:grid}.finale-shell--board .finale-card{z-index:2;width:min(100%,318px);margin-inline:auto;padding:clamp(14px,3.6vw,20px) clamp(12px,3.2vw,16px);box-shadow:0 0 0 1px #fffcf51a,0 18px 48px #0000008c,0 0 0 10px #100c0929}.finale-suspects--pile{position:absolute;inset:-1% -2%}.finale-suspects li{left:calc(var(--mx) * 1%);top:calc(var(--my) * 1%);width:clamp(52px,14vw,68px)}.finale-suspect--featured{width:clamp(86px,26vw,112px)}.finale-photo-card{padding:11px 5px 3px}.finale-chincheta{width:11px;height:11px;top:2px}.finale-photo-card figcaption{letter-spacing:.05em;margin-top:2px;font-size:.46rem}.finale-shell--board .finale-card h1{font-size:clamp(1.55rem,7vw,1.9rem)}.finale-shell--board .finale-question{font-size:1.02rem}}@media (width>=561px) and (width<=900px){.finale-shell--board .finale-stage{padding:clamp(64px,9vh,100px) clamp(64px,8vw,110px)}.finale-suspects li{width:clamp(66px,9.5vw,88px)}.finale-suspect--featured{width:clamp(96px,14vw,128px)}}.finale-shell--rain{height:100dvh;min-height:100dvh;padding:0;overflow:hidden}.finale-shell--proof-settled .proof-message:before{opacity:1;background:#100c097a;animation:none}.finale-shell--proof-settled .proof-message-card{animation:none}.finale-shell--letterbox:before,.finale-shell--letterbox:after{content:"";z-index:45;pointer-events:none;background:#000;height:0;animation:1.55s cubic-bezier(.22,.61,.36,1) forwards cinema-letterbox;position:fixed;left:0;right:0}.finale-shell--letterbox:before{top:0}.finale-shell--letterbox:after{bottom:0}.finale-shell--letterbox .sound-dock{z-index:50}.finale-shell--letterbox .proof-message-card{z-index:46}@keyframes cinema-letterbox{0%{height:0}to{height:clamp(52px,11vh,100px)}}.proof-rain{z-index:20;pointer-events:none;position:fixed;inset:0;overflow:hidden}.proof-drop{--x:50%;--y:46%;--r:0deg;--dx:0px;--size:170px;--dur:.56s;top:var(--y);left:var(--x);width:var(--size);pointer-events:none;animation:proof-deal var(--dur) cubic-bezier(.16, .84, .28, 1) forwards;margin:0;position:absolute}@keyframes proof-deal{0%{opacity:0;transform:translate3d(calc(-50% + var(--dx)), calc(-50% - 24vh), 0) rotate(calc(var(--r) * .3)) scale(.92)}40%{opacity:1}to{opacity:1;transform:translate3d(-50%, -50%, 0) rotate(var(--r)) scale(1)}}.finale-photo-card--proof{content-visibility:visible;contain-intrinsic-size:none;padding:16px 8px 6px;animation:none;box-shadow:inset 0 1px #fffcf559,3px 5px #00000038,0 14px 22px #00000047}.finale-photo-card--proof img{aspect-ratio:auto;object-fit:cover;object-position:center;opacity:0;height:auto;max-height:168px;transition:opacity .18s}.finale-photo-card--proof img.is-loaded{opacity:1}@media (width<=560px){.finale-photo-card--proof img{max-height:128px}}.proof-message{z-index:40;padding:max(24px, env(safe-area-inset-top,0px)) max(20px, env(safe-area-inset-right,0px)) max(24px, env(safe-area-inset-bottom,0px)) max(20px, env(safe-area-inset-left,0px));pointer-events:none;place-items:center;display:grid;position:fixed;inset:0}.proof-message:before{content:"";background:#100c096b;animation:1.1s both backdrop-fade;position:absolute;inset:0}.proof-message-card{pointer-events:auto;width:min(520px,100%);animation:1.05s ease-out .18s both sheet-settle}.proof-message-card h1{font-size:clamp(1.65rem,4.6vw,2.45rem);line-height:1.12}.sound-dock{top:max(12px, env(safe-area-inset-top,0px));right:max(12px, env(safe-area-inset-right,0px));z-index:40;position:fixed}.sound-toggle{border:1px solid var(--color-accent-line,#1c191447);min-height:40px;color:var(--ink,#1c1914);letter-spacing:.06em;text-transform:uppercase;cursor:pointer;background:linear-gradient(#fffcf5eb,#f5eee0e0);border-radius:6px;justify-content:center;align-items:center;gap:.4rem;padding:.45rem .75rem;font-family:inherit;font-size:.72rem;font-weight:600;transition:background .15s,border-color .15s,transform .1s;display:inline-flex;box-shadow:inset 0 1px #fffcf5b3,0 2px 8px #1c191414}.sound-toggle:hover{border-color:#1c191473}.sound-toggle:active{transform:translateY(1px)}.sound-toggle.is-muted{opacity:.72}.sound-toggle-icon{place-items:center;line-height:0;display:grid}.sound-toggle-label{line-height:1}.topbar-actions .sound-toggle{min-height:42px}.murdoku-topbar .sound-toggle,.hex-topbar .sound-toggle,.mahjong-topbar .sound-toggle{background:#fffcf5bf}@media (width<=520px){.sound-toggle-label{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.sound-toggle{width:42px;padding:.45rem;position:relative}}.murdoku-shell{--ink:var(--murdoku-ink);--paper:var(--murdoku-paper);--line:var(--murdoku-line);min-height:100dvh;padding:16px clamp(12px,2vw,28px) 28px;padding-top:max(16px, env(safe-area-inset-top,0px));padding-right:max(clamp(12px, 2vw, 28px), env(safe-area-inset-right,0px));padding-bottom:max(28px, env(safe-area-inset-bottom,0px));padding-left:max(clamp(12px, 2vw, 28px), env(safe-area-inset-left,0px));color:var(--ink);background-color:var(--murdoku-bg);font-family:var(--font-body);background-image:radial-gradient(90% 70% at 50% 0,#fffcf559,#0000 55%),radial-gradient(100% 80% at 50% 100%,#1c19141a,#0000 50%),radial-gradient(#2c282014 .7px,#0000 .7px);background-size:auto,auto,9px 9px;overflow-x:clip}.murdoku-topbar{background:linear-gradient(180deg, #fffcf573, transparent 50%), var(--paper-fiber), var(--paper);border:2px solid var(--line);max-width:1500px;min-height:76px;box-shadow:var(--shadow-panel);background-size:auto,140px 140px,auto;border-radius:8px;justify-content:space-between;align-items:center;gap:16px;margin:0 auto 14px;padding:8px 16px;display:flex}.topbar-left,.topbar-middle,.timer{align-items:center;display:flex}.topbar-left{gap:12px}.arrow-button{border:2px solid var(--line);background:linear-gradient(180deg, #fffcf566, transparent 55%), var(--paper);width:42px;height:42px;color:var(--ink);cursor:pointer;box-shadow:0 2px 0 var(--line);border-radius:6px;place-items:center;padding:0;font-size:1.5rem;transition:transform .12s,box-shadow .12s;display:grid}.arrow-button:hover{box-shadow:0 3px 0 var(--line);transform:translateY(-1px)}.arrow-button:active{box-shadow:0 1px 0 var(--line);transform:translateY(1px)}.brand-block{align-items:baseline;gap:12px;display:flex}.brand{font-family:var(--font-display);letter-spacing:0;color:var(--ink);font-size:clamp(1.7rem,2.4vw,2.2rem);font-weight:700;line-height:1}.case-name{font-family:var(--font-stamp);letter-spacing:.04em;font-size:.95rem;font-weight:400}.topbar-actions{align-items:center;gap:10px;display:flex}.hint-button{white-space:nowrap;justify-content:center;align-items:center;gap:.35rem;width:auto;min-height:42px;padding:.5rem .75rem;display:inline-flex}.hint-label{display:inline}.timer{border:2px solid var(--line);font-variant-numeric:tabular-nums;background:#ffffff59;border-radius:6px;justify-content:center;min-width:76px;padding:.65rem .8rem;font-size:1.05rem;font-weight:700}.game-layout{grid-template-columns:minmax(280px,360px) minmax(420px,1fr) 112px;align-items:stretch;gap:14px;max-width:1500px;margin:0 auto;display:grid;position:relative}.suspect-panel,.board-panel{isolation:isolate;background:linear-gradient(180deg, #fffcf559, transparent 40%), var(--paper-fiber), var(--paper);border:2px solid var(--line);box-shadow:var(--shadow-panel);background-size:auto,140px 140px,auto;border-radius:8px;position:relative}.board-panel:after{content:"";z-index:0;pointer-events:none;border-radius:inherit;opacity:.7;mix-blend-mode:soft-light;background:linear-gradient(125deg,#fffcf552 0%,#0000 42% 58%,#28241c0a 100%) 0 0/200% 200%,radial-gradient(70% 50% at 18% 0,#d9c7a329,#0000 60%) 0 0/100% 100%;animation:9s ease-in-out infinite board-sheen-drift;position:absolute;inset:0}.board-panel>*{z-index:1;position:relative}.suspect-panel{grid-area:1/1/span 2;max-height:calc(100vh - 130px);padding:14px;overflow:auto}.suspect-hint{font-family:var(--font-stamp);letter-spacing:.03em;color:#6a655c;margin:0 0 10px;font-size:.7rem;line-height:1.4}.suspect-panel h2{font-family:var(--font-display);color:var(--ink);margin:0 0 4px;font-size:1.55rem}.helper-text{min-height:2.2em;font-family:var(--font-body);color:#4a433a;text-wrap:pretty;margin:0 0 12px;font-size:.78rem;line-height:1.45}.suspect-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.suspect-card{background:linear-gradient(#fffcf566,#0000 45%),#ebe9e0;border:1px solid #b8b6ac;border-radius:6px;min-width:0;padding:0;transition:transform .15s,box-shadow .15s,border-color .15s;overflow:hidden;box-shadow:0 1px #2e29231f}.suspect-card:hover{border-color:#9a9688;transform:translateY(-1px);box-shadow:0 3px #2e292324}.suspect-card.selected{outline-offset:1px;border-color:#b45c3a;outline:3px solid #b45c3a;box-shadow:0 2px #b45c3a40}.suspect-select{width:100%;color:var(--ink);cursor:pointer;background:0 0;border:0;flex-direction:column;align-items:center;gap:5px;padding:8px 6px 4px;display:flex}.suspect-clue-wrap{flex-direction:column;align-items:center;gap:4px;width:100%;padding:0 6px 8px;display:flex}.suspect-card.victim{background:#f3e4df;border-color:#a43d32}.suspect-card.victim .portrait{color:#5c241c;background:#e2b4a8}.suspect-select:disabled{cursor:not-allowed;opacity:.52}.suspect-card[data-placed=true] .suspect-select{background:#e4ecdf}.suspect-card[data-gender=male] .portrait{background:#b8d1d2}.suspect-card[data-gender=female] .portrait{background:#e2c4b7}.portrait{border:2px solid var(--line);background:#d8d4c8;border-radius:50%;flex:none;place-items:center;width:58px;height:58px;display:grid;position:relative;overflow:hidden}.portrait--board{border-width:1.5px;width:100%;height:100%;box-shadow:0 1px #00000026}.portrait-svg{width:88%;height:88%;display:block}.portrait--photo{background:#3a4038}.portrait-img{object-fit:cover;width:100%;height:100%;display:block}.portrait-body,.portrait-head{fill:#f2ebe2;stroke:#2a2d28;stroke-width:2px}.portrait-hair{fill:#3a342e}.portrait[data-gender=male]{background:#b8d1d2}.portrait[data-gender=male] .portrait-hair{fill:#2f4a4e}.portrait[data-gender=female]{background:#e2c4b7}.portrait[data-gender=female] .portrait-hair{fill:#5a3428}.portrait[data-gender=pair]{background:#d4c9b8}.portrait--victim{box-shadow:inset 0 0 0 3px #a43d32}.suspect-name{text-align:center;font-family:var(--font-display);letter-spacing:-.01em;margin:0;font-size:.92rem;font-weight:700;line-height:1.15}.suspect-text{width:100%;font-family:var(--font-body);text-align:center;color:#4a433a;text-wrap:pretty;background:0 0;border:0;margin:0;padding:5px 2px 0;font-size:.7rem;line-height:1.45}.clue-keyword{color:inherit;font:inherit;cursor:pointer;-webkit-box-decoration-break:clone;box-decoration-break:clone;background:#1c19140d;border:0;border-radius:2px;margin:0;padding:0 3px;font-weight:700;text-decoration:none;transition:background .12s,color .12s,box-shadow .12s;display:inline}.clue-keyword.has-punct{white-space:nowrap}.clue-keyword-label{text-underline-offset:2px;text-decoration:underline;text-decoration-thickness:1.5px;-webkit-text-decoration-color:inherit;text-decoration-color:inherit}.clue-punct{font-weight:inherit;text-decoration:none}.clue-keyword[data-type=room]{color:#2f4a32;background:#3d6b4514}.clue-keyword[data-type=room] .clue-keyword-label{text-decoration-color:#3d6b458c}.clue-keyword[data-type=object]{color:#2a3a4a;background:#42566a14}.clue-keyword[data-type=object] .clue-keyword-label{text-decoration-color:#42566a8c}.clue-keyword[data-type=person]{color:#5c241c;background:#8b3a2a14}.clue-keyword[data-type=person] .clue-keyword-label{text-decoration-color:#8b3a2a80}.clue-keyword[data-type=keyword]{color:#5a4020;font-family:var(--font-stamp);letter-spacing:.02em;background:#c79f2a1a;font-size:.92em;font-weight:400}.clue-keyword[data-type=keyword] .clue-keyword-label{text-decoration-color:#b45c3a80}.clue-keyword:hover,.clue-keyword.is-active{box-shadow:inset 0 0 0 1px #1c19141f}.clue-keyword:hover{filter:brightness(.97)}.clue-keyword.is-active{color:#6a3a1a;background:#f3e7c4}.clue-keyword.is-active .clue-keyword-label{text-decoration-color:#b45c3a}.clue-keyword[data-type=room].is-active{color:#243828;background:#d7e8d4}.clue-keyword[data-type=object].is-active{color:#1e2a38;background:#dde4f2}.clue-keyword[data-type=person].is-active{color:#5c241c;background:#f0ddd6}.clue-keyword[data-type=keyword].is-active{color:#6a3a1a;background:#f3e7c4}.placed-mark{color:#476044;text-transform:uppercase;font-size:.58rem;font-weight:700}.board-panel{flex-direction:column;grid-area:1/2/span 2;justify-content:center;padding:clamp(12px,2vw,22px);display:flex}.board-grid{aspect-ratio:1;border:2px solid var(--line);background:#f0efe8;border-radius:4px;grid-template-rows:repeat(9,minmax(0,1fr));grid-template-columns:repeat(9,minmax(0,1fr));width:min(100%,640px);margin:0 auto;display:grid;overflow:hidden}.board-rule{text-align:center;color:#5c584e;width:min(100%,640px);margin:10px auto 0;font-size:.72rem;font-weight:700}.cell{--floor-base:#ebe6da;--floor-noise:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0.2 0 0 0 0 0.18 0 0 0 0 0.14 0 0 0 0.35 0'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23n)'/%3E%3C/svg%3E");--floor-pattern:none;--floor-size:auto;--floor-position:0 0;min-width:0;color:var(--ink);text-align:center;cursor:pointer;isolation:isolate;background-color:var(--floor-base);background-image:var(--floor-pattern);background-size:var(--floor-size);background-position:var(--floor-position);border:1px solid #24272259;border-radius:0;flex-direction:column;justify-content:center;align-items:center;padding:1px;font-size:.47rem;font-weight:700;line-height:1.1;display:flex;position:relative;overflow:hidden}.cell:before{content:"";z-index:1;opacity:1;pointer-events:none;border:1px solid #2427221a;border-radius:1px;position:absolute;inset:14%;box-shadow:inset 0 1px #ffffff47,inset 0 -1px #28241c0f}.cell:after{content:"";z-index:0;pointer-events:none;background-image:var(--floor-noise), linear-gradient(160deg, #ffffff3d 0%, transparent 45%, #28241c0f 100%);background-blend-mode:soft-light, normal;opacity:.9;mix-blend-mode:multiply;background-size:48px 48px,auto;position:absolute;inset:0}.cell.is-highlighted{outline-offset:-2px;z-index:4;outline:2px solid #c79f2a;animation:1.8s ease-in-out infinite highlight-pulse;box-shadow:inset 0 0 0 999px #c79f2a38}.cell.line-locked{box-shadow:inset 0 0 0 999px #19192214}.cell.occupiable{cursor:pointer}.cell-furniture{z-index:1;pointer-events:none;opacity:1;place-items:center;display:grid;position:absolute;inset:5%}.cell-furniture.has-occupant{opacity:.78;inset:16% 7% 3%}.cell-furniture.has-occupant:has([data-kind=alfombra]){opacity:.95;inset:8% 5% 4%}.furniture-icon[data-kind=alfombra]:before{display:none}.furniture-icon[data-kind=alfombra] .furniture-svg{filter:none}.furniture-icon{place-items:center;width:100%;height:100%;display:grid;position:relative}.furniture-icon:before{content:"";pointer-events:none;z-index:0;background:radial-gradient(#1c191438,#0000 70%);border-radius:50%;height:18%;position:absolute;bottom:6%;left:18%;right:18%}.furniture-svg{z-index:1;filter:contrast(1.06)saturate(1.1)drop-shadow(0 1px #2a2d2859)drop-shadow(0 2.5px 1.5px #1c191433);width:100%;height:100%;display:block;position:relative}.furniture-icon.is-glow-lamp .furniture-svg{filter:contrast(1.06)saturate(1.15)drop-shadow(0 1px #2a2d284d)drop-shadow(0 0 5px #f0d8788c)drop-shadow(0 2px 1px #1c191429)}.furniture-icon.is-glow-water .furniture-svg{filter:contrast(1.06)saturate(1.12)drop-shadow(0 1px #2a2d284d)drop-shadow(0 0 4px #7ec8e880)drop-shadow(0 2px 1px #1c191429)}.furniture-icon.is-glow-fire .furniture-svg{filter:contrast(1.08)saturate(1.15)drop-shadow(0 1px #2a2d284d)drop-shadow(0 0 5px #f0a05073)drop-shadow(0 2px 1px #1c191429)}.cell.boundary-top{border-top:3px solid var(--line)}.cell.boundary-right{border-right:3px solid var(--line)}.cell.boundary-bottom{border-bottom:3px solid var(--line)}.cell.boundary-left{border-left:3px solid var(--line)}.cell.window-top,.cell.window-bottom,.cell.window-left,.cell.window-right{z-index:2}.cell-window{z-index:3;pointer-events:none;background:#a9dff3;border:1px solid #42566a;animation:4.2s ease-in-out infinite window-breathe;display:block;position:absolute;box-shadow:inset 0 0 0 1px #ffffffb8,0 0 6px #a9dff373}.window-top .cell-window{width:100%;height:5px;top:0;left:0}.window-bottom .cell-window{width:100%;height:5px;bottom:0;left:0}.window-left .cell-window{width:5px;height:100%;top:0;left:0}.window-right .cell-window{width:5px;height:100%;top:0;right:0}.cell.blocked{--floor-base:color-mix(in srgb, currentColor 6%, #d4d0c6);cursor:not-allowed}.cell.blocked:before{display:none}.cell span.cell-occupant{z-index:3;aspect-ratio:1;border:1.5px solid var(--line);letter-spacing:0;text-transform:none;background:#f8f5ec;border-radius:50%;place-items:center;width:72%;font-size:clamp(.42rem,.72vw,.68rem);font-weight:900;line-height:1;animation:.32s ease-out place-pop;display:grid;position:relative;box-shadow:0 1px #00000026}.cell span.cell-occupant.cell-occupant--photo{box-shadow:none;background:0 0;border:none;padding:0;overflow:visible}.cell span.empty-cell-mark{z-index:2;color:#a43d32;text-shadow:0 1px 1px #fffc;pointer-events:none;place-items:center;font-size:clamp(1rem,1.6vw,1.5rem);font-weight:900;line-height:1;display:grid;position:absolute;inset:0}.cell-occupant[data-gender=male]:not(.cell-occupant--photo){background-color:#b8d1d2!important}.cell-occupant[data-gender=female]:not(.cell-occupant--photo){background-color:#e2c4b7!important}.cell-occupant[data-gender=pair]:not(.cell-occupant--photo){background-color:#d4c9b8!important}.portrait--board.portrait--victim{box-shadow:inset 0 0 0 2px #a43d32,0 1px #00000026}.suspect-card[data-gender=pair] .portrait{background:#d4c9b8}.board-grid--10{aspect-ratio:1;grid-template-rows:repeat(10,minmax(0,1fr));grid-template-columns:repeat(10,minmax(0,1fr));width:min(100%,720px)}.board-grid--10 .cell{font-size:.4rem}.board-grid--10 .cell span.cell-occupant{font-size:clamp(.34rem,.62vw,.58rem)}.board-grid--7{aspect-ratio:1;grid-template-rows:repeat(7,minmax(0,1fr));grid-template-columns:repeat(7,minmax(0,1fr));width:min(100%,580px)}.board-grid--7 .cell{font-size:.42rem}.board-grid--7 .cell span.cell-occupant{font-size:clamp(.36rem,.65vw,.6rem)}.board-grid--8{aspect-ratio:1;grid-template-rows:repeat(8,minmax(0,1fr));grid-template-columns:repeat(8,minmax(0,1fr));width:min(100%,620px)}.board-grid--8 .cell{font-size:.4rem}.board-grid--8 .cell span.cell-occupant{font-size:clamp(.34rem,.6vw,.56rem)}.murdoku-shell--park{background-color:#e6ebe8;background-image:radial-gradient(#2c322a12 .7px,#0000 .7px),linear-gradient(165deg,#f2efe6 0%,#dde8e2 50%,#d2dde8 100%);background-size:9px 9px,auto}.timer.countdown{--timer-led:#ffb14a;--timer-led-dim:#c47a22;--timer-chassis:#1a1410;--timer-bezel:#3a2a1c;isolation:isolate;min-width:0;color:var(--timer-led);border:2px solid var(--timer-bezel);background:linear-gradient(180deg, #ffc87814, transparent 40%), linear-gradient(180deg, #2a2018 0%, var(--timer-chassis) 45%, #0e0b09 100%);letter-spacing:.06em;font-variant-numeric:tabular-nums;text-shadow:0 0 6px #ffaa3c8c,0 0 1px #ffc878e6;border-radius:4px;align-items:center;gap:.4rem;padding:.42rem .7rem .42rem .55rem;font-family:Courier New,Courier,ui-monospace,monospace;font-size:1.15rem;font-weight:700;line-height:1;animation:2.8s ease-in-out infinite timer-chassis-hum;display:inline-flex;position:relative;box-shadow:0 2px #0a0806,inset 0 1px #ffdca01f,inset 0 -10px 18px #00000073,0 0 0 1px #ffa03c1f,0 0 16px #c85a1447}.timer.countdown:before,.timer.countdown:after{content:"";pointer-events:none;z-index:2;border:1.5px solid #ffaa468c;width:7px;height:7px;position:absolute}.timer.countdown:before{border-bottom:0;border-right:0;top:3px;left:3px}.timer.countdown:after{border-top:0;border-left:0;bottom:3px;right:3px}.timer.countdown .timer-tag{color:var(--timer-led-dim);letter-spacing:.14em;text-shadow:none;background:#00000059;border:1px solid #ffaa4659;border-radius:2px;flex:none;padding:.15rem .28rem .1rem;font-size:.62rem;font-weight:800;line-height:1}.timer.countdown .timer-readout{align-items:baseline;gap:.02em;display:inline-flex}.timer.countdown .timer-mm,.timer.countdown .timer-ss{text-align:center;min-width:1.55em;display:inline-block}.timer.countdown .timer-colon{text-align:center;opacity:1;width:.45em;animation:1s step-end infinite timer-colon-blink;display:inline-block}.timer.countdown.is-urgent{--timer-led:#ff6b4a;--timer-led-dim:#e04830;--timer-bezel:#6a1810;color:#ffd2c4;text-shadow:0 0 8px #ff4628b3,0 0 2px #ffb48cf2;animation:.9s ease-in-out infinite timer-urgent-glow;box-shadow:0 2px #2a0604,inset 0 1px #ffb48c2e,inset 0 -10px 18px #00000080,0 0 0 1px #ff502859,0 0 22px #dc321e73}.timer.countdown.is-urgent .timer-tag{color:#ff8a6a;border-color:#ff644680;animation:.9s step-end infinite timer-tag-flash}.timer.countdown.is-urgent .timer-colon{animation-duration:.5s}.timer.countdown.is-critical{--timer-led:#ff3b2f;--timer-led-dim:#ff1e12;--timer-bezel:#4a0808;color:#fff4f0;text-shadow:0 0 10px #ff2814d9,0 0 2px #fff;background:linear-gradient(#ff503247,#0000 45%),linear-gradient(#3a100c 0%,#140806 50%,#0a0404 100%);animation:.45s step-end infinite timer-critical-flash;box-shadow:0 2px #1a0404,inset 0 0 14px #ff281440,0 0 0 1px #ff28148c,0 0 28px #ff1e148c}.timer.countdown.is-critical .timer-tag{color:#fff;background:#a0140aa6;border-color:#ff503cb3;animation:.45s step-end infinite timer-tag-flash}.timer.countdown.is-critical .timer-colon{animation-duration:.3s}.timer.countdown.is-expired{--timer-led:#8a2a22;--timer-led-dim:#5a1814;--timer-bezel:#2a0808;color:#5a1814;text-shadow:none;background:#1a0c0a;animation:none;box-shadow:0 2px #0a0404,inset 0 0 12px #0009}.timer.countdown.is-expired .timer-tag,.timer.countdown.is-expired .timer-colon{opacity:.45;animation:none}@keyframes timer-colon-blink{0%,49%{opacity:1}50%,to{opacity:.15}}@keyframes timer-chassis-hum{0%,to{box-shadow:0 2px #0a0806,inset 0 1px #ffdca01f,inset 0 -10px 18px #00000073,0 0 0 1px #ffa03c1f,0 0 12px #c85a1438}50%{box-shadow:0 2px #0a0806,inset 0 1px #ffdca029,inset 0 -10px 18px #00000073,0 0 0 1px #ffaa4638,0 0 22px #dc6e1e66}}@keyframes timer-urgent-glow{0%,to{filter:brightness()}50%{filter:brightness(1.12)}}@keyframes timer-critical-flash{0%,49%{filter:brightness(1.05)}50%,to{filter:brightness(.82)}}@keyframes timer-tag-flash{0%,49%{opacity:1}50%,to{opacity:.35}}.cell-occupant[data-gender=mystery],.suspect-card[data-gender=mystery] .portrait{background:#c9b8d4!important}.room-laundry{--floor-base:#d5dde8;--floor-pattern:repeating-linear-gradient(90deg, #4652681a 0 1px, transparent 1px 5px), repeating-linear-gradient(0deg, #4652680d 0 1px, transparent 1px 6px)}.room-wc{--floor-base:#e0d5cf;--floor-pattern:linear-gradient(#5a44381f 1px, transparent 1px), linear-gradient(90deg, #5a44381f 1px, transparent 1px), radial-gradient(circle at 30% 35%, #ffffff38 0 18%, transparent 19%);--floor-size:33% 33%, 33% 33%, 100% 100%}.room-entry{--floor-base:#d8e4d6;--floor-pattern:repeating-linear-gradient(0deg, #344e361c 0 1.5px, transparent 1.5px 11px), repeating-linear-gradient(90deg, transparent 0 48%, #344e3614 48% 52%, transparent 52% 100%)}.room-nursery{--floor-base:#e8d5e0;--floor-pattern:radial-gradient(#824e6c24 1.1px, transparent 1.2px), radial-gradient(#fff3 .8px, transparent 1px);--floor-size:9px 9px, 13px 13px;--floor-position:0 0, 4px 5px}.room-living{--floor-base:#dde6c9;--floor-pattern:repeating-linear-gradient(90deg, #3e522c1a 0 1px, transparent 1px 14px), repeating-linear-gradient(0deg, #3e522c0d 0 1px, transparent 1px 4px), repeating-linear-gradient(90deg, transparent 0 7px, #3e522c0a 7px 14px)}.room-bedroom{--floor-base:#d4d0e6;--floor-pattern:repeating-linear-gradient(90deg, #483e6e1a 0 2px, transparent 2px 10px), repeating-linear-gradient(0deg, #483e6e0a 0 1px, transparent 1px 5px)}.room-balcony{--floor-base:#c9dde8;--floor-pattern:repeating-linear-gradient(0deg, #304e6424 0 2px, transparent 2px 9px), repeating-linear-gradient(90deg, transparent 0 46%, #304e6414 46% 54%, transparent 54% 100%)}.room-avenue{--floor-base:#e4d9c8;--floor-pattern:repeating-linear-gradient(90deg, #604a2a1f 0 2px, transparent 2px 11px), repeating-linear-gradient(0deg, #604a2a0d 0 1px, transparent 1px 5px), linear-gradient(180deg, transparent 0 42%, #604a2a0a 42% 58%, transparent 58%)}.room-jungle{--floor-base:#c9dbc8;--floor-pattern:radial-gradient(ellipse 40% 30% at 30% 40%, #285a281f, transparent), radial-gradient(ellipse 35% 28% at 70% 65%, #285a281a, transparent), radial-gradient(#244e2829 1px, transparent 1.2px);--floor-size:100% 100%, 100% 100%, 8px 8px}.room-plaza{--floor-base:#d8e0e8;--floor-pattern:linear-gradient(#3a4e6621 1.5px, transparent 1.5px), linear-gradient(90deg, #3a4e6621 1.5px, transparent 1.5px), linear-gradient(#ffffff1f 1px, transparent 1px), linear-gradient(90deg, #ffffff1f 1px, transparent 1px);--floor-size:50% 50%, 50% 50%, 50% 50%, 50% 50%;--floor-position:0 0, 0 0, 1px 1px, 1px 1px}.room-castle{--floor-base:#e0d0dc;--floor-pattern:repeating-linear-gradient(0deg, #62364e1f 0 2px, transparent 2px 12px), repeating-linear-gradient(90deg, transparent 0 40%, #62364e14 40% 60%, transparent 60% 100%), repeating-linear-gradient(0deg, transparent 0 6px, #62364e0d 6px 12px)}.room-tales{--floor-base:#e6d8c4;--floor-pattern:repeating-linear-gradient(135deg, #6c4c2c17 0 3px, transparent 3px 8px), repeating-linear-gradient(45deg, #6c4c2c0d 0 2px, transparent 2px 10px)}.room-space{--floor-base:#c5d8e6;--floor-pattern:repeating-linear-gradient(0deg, #2a4a6c1f 0 1.5px, transparent 1.5px 8px), linear-gradient(90deg, #ffffff1a 0%, transparent 40%, #2a4a6c0d 100%)}.room-frontier{--floor-base:#dbc9b4;--floor-pattern:repeating-linear-gradient(90deg, #60462a1a 0 2px, transparent 2px 10px), radial-gradient(#60462a1a .9px, transparent 1.1px);--floor-size:auto, 11px 11px}.room-pier{--floor-base:#c4d4de;--floor-pattern:repeating-linear-gradient(90deg, #283e5424 0 2.5px, transparent 2.5px 9px), repeating-linear-gradient(0deg, #283e540d 0 1px, transparent 1px 5px), repeating-linear-gradient(90deg, transparent 0 4px, #ffffff14 4px 5px, transparent 5px 9px)}.room-bar{--floor-base:#d7e1d1;--floor-pattern:repeating-linear-gradient(90deg, #3048341c 0 2px, transparent 2px 12px), repeating-linear-gradient(0deg, #3048340d 0 1px, transparent 1px 4px), repeating-linear-gradient(90deg, transparent 0 6px, #3048340a 6px 12px)}.room-storage{--floor-base:#d1e0df;--floor-pattern:radial-gradient(#324e4c1f .8px, transparent 1px), repeating-linear-gradient(0deg, #324e4c0a 0 1px, transparent 1px 8px);--floor-size:7px 7px, auto}.room-secret{--floor-base:#ded7e8;--floor-pattern:radial-gradient(#4e367024 1px, transparent 1.2px), repeating-linear-gradient(45deg, #4e36700d 0 2px, transparent 2px 7px);--floor-size:8px 8px, auto}.room-dining{--floor-base:#cbd8e3;--floor-pattern:repeating-linear-gradient(45deg, transparent 0 5px, #32485e1a 5px 6px, transparent 6px 11px, #32485e14 11px 12px), repeating-linear-gradient(-45deg, transparent 0 5px, #32485e14 5px 6px, transparent 6px 11px, #32485e0f 11px 12px)}.room-kitchen{--floor-base:#e3c6d0;--floor-pattern:linear-gradient(#6e384e21 1px, transparent 1px), linear-gradient(90deg, #6e384e21 1px, transparent 1px), repeating-linear-gradient(45deg, #6e384e0a 0 2px, transparent 2px 6px);--floor-size:50% 50%, 50% 50%, auto}.room-legend{flex-wrap:wrap;justify-content:center;gap:8px 16px;width:min(100%,640px);margin:14px auto 0;font-size:.72rem;font-weight:700;display:flex}.room-legend span{align-items:center;gap:6px;display:inline-flex}.room-legend i{background-color:var(--floor-base,#ebe6da);background-image:var(--floor-pattern,none);background-size:var(--floor-size,auto);background-position:var(--floor-position,0 0);border:1px solid #24272280;border-radius:2px;width:12px;height:12px}.right-tools{background:0 0;flex-direction:column;grid-area:1/3;align-self:start;gap:10px;padding:0;display:flex}.tool-button{border:2px solid var(--line);background:linear-gradient(180deg, #fffcf566, transparent 55%), var(--paper);width:100%;min-height:50px;color:var(--ink);box-shadow:0 2px 0 var(--line);letter-spacing:0;cursor:pointer;border-radius:6px;padding:.7rem .45rem;font-size:.68rem;font-weight:800;transition:transform .12s,box-shadow .12s,background .15s}.tool-button:hover{box-shadow:0 3px 0 var(--line);transform:translateY(-1px)}.tool-button:active{box-shadow:0 1px 0 var(--line);transform:translateY(1px)}.tool-button.small{white-space:pre-line;text-transform:lowercase;flex-direction:column;justify-content:center;align-items:center;gap:8px;min-height:84px;font-size:.65rem;display:flex}.tool-icon{place-items:center;font-size:1.85rem;line-height:1;display:grid}.tool-svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;width:1.85rem;height:1.85rem}.tool-button.action{text-transform:none;background:linear-gradient(#fffcf559,#0000 55%),#e5d6c4}.bottom-tools{background:0 0;flex-direction:column;grid-area:2/3;align-self:end;gap:10px;padding:0;display:flex}.secondary{background:var(--paper);min-height:48px}.mark-toggle{justify-content:center;align-items:center;gap:.55rem;display:inline-flex}.mark-toggle-icon{color:#a43d32;background:#a43d3214;border:1.5px solid #a43d32;border-radius:3px;place-items:center;width:1.55em;height:1.55em;font-size:1.15em;font-weight:700;line-height:1;display:grid}.mark-toggle[aria-pressed=true]{color:#792d26;background:#eed8d2;border-color:#a43d32}.mark-toggle[aria-pressed=true] .mark-toggle-icon{color:#f8f0ec;background:#a43d32;border-color:#792d26}.submit-button:disabled{opacity:.55;cursor:not-allowed}.submit-button.is-ready{background:#dce8d4;border-color:#476044}.hints-modal .hints-copy{color:#4a4a4a;margin:0 0 12px;font-size:.9rem}.hints-list{gap:10px;margin:0 0 14px;padding-left:1.2rem;font-size:.92rem;line-height:1.45;display:grid}.hints-empty,.hints-done{color:#6a655c;margin:0 0 12px;font-size:.88rem}.hints-actions{flex-direction:column;gap:8px;display:flex}.modal-backdrop{z-index:10;background:#181b189e;place-items:center;padding:20px;animation:.28s both backdrop-fade;display:grid;position:fixed;inset:0}.instructions-modal{border:2px solid var(--line);background:var(--paper);width:min(480px,100%);box-shadow:0 6px 0 var(--line);border-radius:8px;padding:30px;animation:.48s cubic-bezier(.2,.85,.25,1) both sheet-drop;position:relative}.instructions-modal h2{font-family:var(--font-display);margin:0 0 12px}.instructions-modal p:not(.label){line-height:1.6}.instructions-modal .primary-button{min-width:0;margin-top:12px;padding:.8rem 1rem}@media (width<=900px){.murdoku-shell,.hex-shell,.mahjong-shell{padding:10px 8px 20px;padding-top:max(10px, env(safe-area-inset-top,0px));padding-right:max(8px, env(safe-area-inset-right,0px));padding-bottom:max(20px, env(safe-area-inset-bottom,0px));padding-left:max(8px, env(safe-area-inset-left,0px))}.murdoku-topbar,.hex-topbar,.mahjong-topbar{box-sizing:border-box;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:6px;width:100%;min-width:0;max-width:100%;min-height:52px;padding:6px 8px;display:grid;overflow:visible}.topbar-left,.topbar-actions,.brand-block{display:contents}.brand{text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:100%;font-size:clamp(.9rem,3.6vw,1.15rem);overflow:hidden}.topbar-middle{display:none}.murdoku-topbar .arrow-button,.hex-topbar .arrow-button,.mahjong-topbar .arrow-button{width:40px;height:40px;font-size:1.2rem}.murdoku-topbar .hint-button,.hex-topbar .hint-button,.mahjong-topbar .hint-button{width:40px;min-width:40px;max-width:40px;height:40px;min-height:40px;padding:0;font-size:.95rem}.hint-label{display:none}.murdoku-topbar .timer,.hex-topbar .timer,.mahjong-topbar .timer{white-space:nowrap;justify-self:end;width:auto;min-width:0;max-width:none;padding:.35rem .4rem;font-size:.85rem}.timer.countdown{letter-spacing:.04em;gap:.28rem;min-width:0;padding:.34rem .45rem .34rem .38rem;font-size:.92rem;animation:none}.timer.countdown:before,.timer.countdown:after{width:5px;height:5px}.timer.countdown .timer-tag{letter-spacing:.1em;padding:.12rem .2rem .08rem;font-size:.55rem}.timer.countdown .timer-mm,.timer.countdown .timer-ss{min-width:1.4em}.timer.countdown.is-urgent,.timer.countdown.is-critical{animation:none}.timer.countdown.is-urgent .timer-tag,.timer.countdown.is-critical .timer-tag{opacity:1;animation:none}.game-layout{grid-template-columns:minmax(0,1fr);gap:10px;min-width:0;max-width:100%}.suspect-panel,.board-panel,.right-tools,.bottom-tools{grid-column:1;min-width:0;max-height:none}.board-panel{grid-row:1;padding:6px}.suspect-panel{grid-row:2;padding:10px}.suspect-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.portrait{width:52px;height:52px}.suspect-name{font-size:.85rem}.suspect-text{overflow-wrap:break-word;word-break:normal;-webkit-hyphens:manual;hyphens:manual;font-size:.75rem}.board-grid{width:100%}.cell-furniture{inset:10%}.cell-furniture.has-occupant{inset:18% 10% 4%}.cell span.empty-cell-mark{font-size:clamp(.7rem,3.2vw,1rem)}.cell span.cell-occupant{width:68%;font-size:clamp(.4rem,2.6vw,.62rem)}.right-tools{flex-flow:wrap;grid-row:3;gap:8px}.right-tools .tool-button{white-space:nowrap;flex-direction:row;flex:1 1 0;gap:.4rem;width:auto;min-width:0;min-height:48px;padding:.45rem .5rem;font-size:.72rem}.right-tools .tool-icon{font-size:1.15rem}.right-tools .tool-svg{width:1.2rem;height:1.2rem}.bottom-tools{grid-row:4;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.bottom-tools .tool-button{white-space:normal;min-height:48px;padding:.55rem .4rem;font-size:.72rem;line-height:1.2}.mark-toggle{flex-direction:row;gap:.4rem}.case-name{display:none}.instructions-modal{max-height:min(90dvh,100%);padding:clamp(16px,4vw,28px);overflow:auto}.modal-backdrop{padding:max(12px, env(safe-area-inset-top,0px)) max(12px, env(safe-area-inset-right,0px)) max(12px, env(safe-area-inset-bottom,0px)) max(12px, env(safe-area-inset-left,0px))}}@media (width<=430px){.suspect-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.suspect-card{border-radius:5px}.portrait{width:44px;height:44px}.suspect-text{font-size:.7rem;line-height:1.35}.board-panel{padding:4px}.board-rule,.room-legend{font-size:.68rem}.cell span.cell-occupant{font-size:clamp(.38rem,2.8vw,.58rem)}.bottom-tools .tool-button,.right-tools .tool-button{min-height:44px;font-size:.68rem}.timer{min-width:0;padding:.28rem .32rem;font-size:.78rem}.timer.countdown{gap:.18rem;padding:.26rem .32rem;font-size:.78rem}.timer.countdown .timer-tag{font-size:.48rem}.brand{font-size:clamp(.8rem,3.2vw,1rem)}.murdoku-topbar,.hex-topbar,.mahjong-topbar{gap:4px;padding:5px 6px}}.hex-shell,.mahjong-shell{--ink:var(--murdoku-ink);--paper:var(--murdoku-paper);--line:var(--murdoku-line);min-height:100dvh;padding:16px clamp(12px,2vw,28px) 28px;padding-top:max(16px, env(safe-area-inset-top,0px));padding-right:max(clamp(12px, 2vw, 28px), env(safe-area-inset-right,0px));padding-bottom:max(28px, env(safe-area-inset-bottom,0px));padding-left:max(clamp(12px, 2vw, 28px), env(safe-area-inset-left,0px));color:var(--ink);background-color:var(--murdoku-bg);font-family:var(--font-body);background-image:radial-gradient(90% 70% at 50% 0,#fffcf559,#0000 55%),radial-gradient(100% 80% at 50% 100%,#1c19141a,#0000 50%);overflow-x:clip}.hex-topbar,.mahjong-topbar{background:linear-gradient(180deg, #fffcf573, transparent 50%), var(--paper-fiber), var(--paper);border:2px solid var(--line);min-height:76px;box-shadow:var(--shadow-panel);background-size:auto,140px 140px,auto;border-radius:8px;justify-content:space-between;align-items:center;gap:16px;margin:0 auto 14px;padding:8px 16px;display:flex}.hex-shell .topbar-actions,.mahjong-shell .topbar-actions{align-items:center;gap:10px;display:flex}.hex-shell .hint-button,.mahjong-shell .hint-button{white-space:nowrap;justify-content:center;align-items:center;gap:.35rem;width:auto;min-height:42px;padding:.5rem .75rem;display:inline-flex}.hex-side,.hex-board-panel,.mahjong-side,.mahjong-board-panel{isolation:isolate;background:linear-gradient(180deg, #fffcf559, transparent 40%), var(--paper-fiber), var(--paper);border:2px solid var(--line);box-shadow:var(--shadow-panel);background-size:auto,140px 140px,auto;border-radius:8px;position:relative;overflow:hidden}.hex-board-panel:after,.mahjong-board-panel:after{content:"";z-index:0;pointer-events:none;opacity:.7;mix-blend-mode:soft-light;background:linear-gradient(125deg,#fffcf559 0%,#0000 42% 58%,#28241c0a 100%) 0 0/200% 200%,radial-gradient(70% 50% at 20% 0,#d9c7a32e,#0000 60%) 0 0/100% 100%;animation:9s ease-in-out infinite board-sheen-drift;position:absolute;inset:0}.hex-board-panel>*,.mahjong-board-panel>*{z-index:1;position:relative}.hex-side,.mahjong-side{flex-direction:column;padding:14px;display:flex}@media (width<=900px){.hex-shell,.mahjong-shell{padding:10px 8px 20px;padding-top:max(10px, env(safe-area-inset-top,0px));padding-right:max(8px, env(safe-area-inset-right,0px));padding-bottom:max(20px, env(safe-area-inset-bottom,0px));padding-left:max(8px, env(safe-area-inset-left,0px))}.hex-topbar,.mahjong-topbar{box-sizing:border-box;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:6px;width:100%;min-width:0;max-width:100%;min-height:52px;padding:6px 8px;display:grid;overflow:visible}.hex-shell .topbar-left,.mahjong-shell .topbar-left,.hex-shell .topbar-actions,.mahjong-shell .topbar-actions,.hex-shell .brand-block,.mahjong-shell .brand-block{display:contents}.hex-shell .hint-button,.mahjong-shell .hint-button{width:40px;min-width:40px;height:40px;min-height:40px;padding:0;font-size:.95rem}.hex-side,.mahjong-side{padding:10px;overflow:auto}}.hex-shell{--accent:#b45c3a;background-image:radial-gradient(90% 70% at 50% 0,#fffcf559,#0000 55%),radial-gradient(100% 80% at 50% 100%,#1c19141a,#0000 50%),radial-gradient(#2c282014 .7px,#0000 .7px);background-size:auto,auto,9px 9px}.hex-topbar{max-width:1400px}.hex-layout{grid-template-columns:minmax(260px,340px) minmax(320px,1fr);align-items:stretch;gap:14px;max-width:1400px;margin:0 auto;display:grid}.hex-side,.hex-board-panel{border-radius:8px}.hex-side{gap:10px;max-height:calc(100vh - 130px);overflow:auto}.hex-side h2{font-family:var(--font-display);color:var(--ink);margin:0 0 2px;font-size:1.55rem}.hex-hint{color:#6a655c;margin:0;font-size:.68rem}.hex-status{color:#4a4a4a;min-height:2.2em;margin:0;font-size:.82rem;line-height:1.4}.hex-controls{grid-template-columns:1fr 1fr;gap:8px;margin-top:2px;display:grid}.hex-controls .tool-button{text-transform:none;flex-direction:row;justify-content:center;align-items:center;gap:.45rem;width:100%;min-height:48px;font-size:.72rem;display:inline-flex}.hex-controls .tool-button.action{background:#e5d6c4}.hex-controls .tool-button.small{white-space:nowrap;text-transform:none;flex-direction:row;gap:.45rem;min-height:48px;font-size:.72rem}.hex-tray{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.hex-tray-item{width:100%;color:inherit;cursor:grab;background:#ebe9e0;border:1px solid #b8b6ac;border-radius:6px;flex-direction:column;align-items:center;gap:4px;padding:10px 8px 8px;transition:transform .16s,background .16s,outline .12s;display:flex;overflow:hidden;box-shadow:0 2px #2e29232e}.hex-tray-item:hover{background:#f3efe6;transform:translateY(-1px)}.hex-tray-item.selected{outline:3px solid var(--accent);outline-offset:1px;background:#f3e7c4}.hex-tray-item:active{cursor:grabbing}.hex-tray-header{justify-content:center;align-items:baseline;gap:6px;width:100%;display:flex}.hex-tray-letter{color:#3a3832;min-width:1.15em;font-family:var(--font-stamp);letter-spacing:.02em;text-transform:uppercase;background:#24272214;border-radius:3px;padding:0 4px;font-size:.7rem;font-weight:400;display:inline-block}.hex-tray-label{font-family:var(--font-display);text-align:center;margin:0;font-size:.95rem;font-weight:700;line-height:1.15}.hex-tray-hint{text-align:center;color:#3a3832;margin:0;font-size:.64rem;line-height:1.35}.hex-tray-face{font-family:var(--font-stamp);letter-spacing:.04em;text-transform:uppercase;color:#6a655c;font-size:.62rem;font-weight:400}.hex-tray-empty{color:#5c584e;text-align:center;background:#ffffff59;border:1.5px dashed #2e292347;border-radius:6px;padding:12px;font-size:.82rem}.hex-help{color:#5c584e;border-top:1.5px dashed #2e292347;margin:0;padding-top:8px;font-size:.74rem;line-height:1.4}.hex-help kbd{border:1.5px solid var(--line);background:var(--paper);box-shadow:0 1px 0 var(--line);font-size:.85em;font-family:var(--font-stamp);border-radius:3px;padding:.05em .4em;font-weight:400;display:inline-block}.hex-board-panel{flex-direction:column;justify-content:center;align-items:center;gap:12px;min-height:520px;padding:clamp(12px,2vw,22px);display:flex}.hex-board-frame{border:2px solid var(--line);background:linear-gradient(145deg,#fffcf580 0%,#0000 40% 60%,#b4a0781a 100%) 0 0/200% 200%,#f0efe8;border-radius:4px;width:min(100%,560px);padding:10px;animation:8s ease-in-out infinite board-sheen-drift;box-shadow:inset 0 0 0 1px #ffffff59,0 3px #2e29232e}.hex-board{touch-action:none;cursor:crosshair;width:100%;height:auto;display:block}.hex-piece{filter:drop-shadow(0 1px #2a2d2847)drop-shadow(0 3px 2px #1c191424);width:100%;max-width:180px;height:auto;margin-inline:auto;display:block}.hex-board-panel .hex-piece{max-width:none}.hex-cell{transition:fill .12s,filter .16s}.hex-cell.placed{animation:.4s ease-out hex-place-flash}@keyframes hex-place-flash{0%{filter:brightness(1.35)saturate(1.2)}to{filter:brightness()saturate()}}.hex-piece.dimmed{opacity:.45}.hex-piece.interactive{pointer-events:none}.hex-board-rule{text-align:center;color:#5c584e;width:min(100%,560px);margin:0;font-size:.72rem;font-weight:700}.hex-submit{text-transform:none;min-width:200px;min-height:48px;font-size:.78rem}.hex-submit.is-ready{background:#dce8d4;border-color:#476044}@media (width<=900px){.hex-layout{grid-template-columns:minmax(0,1fr);gap:10px;min-width:0;max-width:100%}.hex-side{min-width:0;max-height:none}.hex-board-panel{order:-1;gap:8px;min-height:0;padding:8px}.hex-board-frame{padding:6px}.hex-tray{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.hex-tray-item{gap:2px;min-width:0;padding:8px 6px 6px}.hex-piece{max-width:112px}.hex-tray-label{font-size:.82rem}.hex-tray-hint{font-size:.6rem}.hex-controls{grid-template-columns:1fr 1fr}.hex-controls .tool-button{min-width:0;min-height:44px;padding:.45rem .4rem;font-size:.68rem}.hex-submit{width:100%;min-width:0}.hex-shell .case-name,.hex-help kbd{display:none}}@media (width<=360px){.hex-piece{max-width:96px}.hex-tray-label{font-size:.78rem}}.mahjong-shell{--accent:#b45c3a;--tile-paper:#f8f5ec;background-image:radial-gradient(90% 70% at 50% 0,#fffcf559,#0000 55%),radial-gradient(100% 80% at 50% 100%,#1c19141a,#0000 50%),radial-gradient(#2c282014 .7px,#0000 .7px);background-size:auto,auto,9px 9px}.mahjong-topbar{max-width:1400px}.mahjong-layout{grid-template-columns:minmax(240px,320px) minmax(320px,1fr);align-items:stretch;gap:14px;max-width:1400px;margin:0 auto;display:grid}.mahjong-side,.mahjong-board-panel{border-radius:8px}.mahjong-side{gap:10px}.mahjong-side h2{font-family:var(--font-display);color:var(--ink);margin:0 0 2px;font-size:1.55rem}.mahjong-hint{color:#6a655c;margin:0;font-size:.68rem}.mahjong-status{color:#4a4a4a;min-height:2.2em;margin:0;font-size:.82rem;line-height:1.4}.mahjong-controls{flex-direction:column;gap:10px;margin-top:4px;display:flex}.mahjong-controls .tool-button{text-transform:none;flex-direction:row;justify-content:center;align-items:center;gap:.55rem;width:100%;min-height:48px;font-size:.78rem;display:inline-flex}.mahjong-controls .tool-button.action{background:#e5d6c4}.mahjong-legend{border-top:1.5px dashed #2e292347;gap:8px;margin-top:auto;padding-top:12px;display:grid}.mahjong-legend-item{color:#5c584e;align-items:center;gap:10px;font-size:.72rem;font-weight:700;display:flex}.mahjong-legend-swatch{border:2px solid var(--line);border-radius:4px;flex:none;width:28px;height:36px;box-shadow:2px 2px #2e292347}.mahjong-legend-swatch.is-free{background:linear-gradient(160deg, #ffffff8c, transparent 50%), var(--tile-paper)}.mahjong-legend-swatch.is-blocked{opacity:.72;filter:saturate(.55);background:#d8d4c8}.mahjong-help{color:#5c584e;margin:0;font-size:.74rem;line-height:1.4}.mahjong-board-panel{flex-direction:column;justify-content:center;padding:clamp(12px,2vw,22px);display:flex;overflow:auto}.mahjong-board-frame{max-width:100%;min-height:200px;margin-inline:auto;display:block;position:relative;overflow:hidden}.mahjong-board{border:2px solid var(--line);background:#ebe6da;border-radius:4px;position:absolute;top:0;left:0;overflow:hidden;box-shadow:inset 0 0 0 1px #ffffff59,0 3px #2e29232e}.mahjong-background{object-fit:cover;object-position:center 35%;pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;inset:0}.mahjong-background-veil{pointer-events:none;background:linear-gradient(#f3ebde38 0%,#1c19142e 45%,#1c191447 100%),radial-gradient(80% 70% at 50% 55%,#0000 20%,#1c191429 100%),linear-gradient(125deg,#fffcf533 0%,#0000 45% 55%,#d9c7a31f 100%) 0 0/200% 200%;animation:10s ease-in-out infinite board-sheen-drift;position:absolute;inset:0}.mahjong-board-rule{text-align:center;color:#5c584e;width:min(100%,720px);margin:12px auto 0;font-size:.72rem;font-weight:700}.mahjong-tile{cursor:pointer;background:0 0;border:none;width:56px;height:72px;padding:0;transition:transform .16s,filter .16s,opacity .22s;position:absolute;transform:translate(0)}.mahjong-tile-edge{background:color-mix(in srgb, var(--tile-tone) 35%, #2e2923);pointer-events:none;border-radius:4px;position:absolute;inset:3px -3px -3px 3px}.mahjong-tile-face{border:2px solid var(--line);background-color:var(--tile-paper);width:100%;height:100%;box-shadow:3px 3px 0 var(--line), inset 0 0 0 3px color-mix(in srgb, var(--tile-tone) 26%, transparent);color:var(--tile-tone);background-image:linear-gradient(160deg,#ffffff80 0%,#0000 42%,#28241c0d 100%),radial-gradient(#2c282012 .6px,#0000 .7px);background-size:auto,6px 6px;border-radius:4px;flex-direction:column;justify-content:center;align-items:center;gap:1px;padding:4px 2px 3px;display:flex;position:relative}.mahjong-tile-stamp{border:1.5px solid color-mix(in srgb, var(--tile-tone) 70%, var(--line));opacity:.55;pointer-events:none;border-radius:50%;width:7px;height:7px;position:absolute;top:4px;right:5px}.mahjong-tile-glyph{place-items:center;width:36px;height:36px;line-height:0;display:grid}.mahjong-tile-icon{filter:contrast(1.05)saturate(1.08)drop-shadow(0 1px #2a2d2852)drop-shadow(0 2px 1px #1c191429);width:100%;height:100%;display:block}.mahjong-tile-label{font-family:var(--font-stamp);letter-spacing:.05em;text-transform:uppercase;color:#2e2a24;text-overflow:ellipsis;white-space:nowrap;max-width:90%;font-size:.6rem;font-weight:400;overflow:hidden}.mahjong-tile.is-blocked{cursor:default}.mahjong-tile.is-blocked .mahjong-tile-face{filter:saturate(.55)brightness(.9);box-shadow:2px 2px 0 #2e292359, inset 0 0 0 3px color-mix(in srgb, var(--tile-tone) 14%, transparent)}.mahjong-tile.is-blocked .mahjong-tile-edge{opacity:.55}.mahjong-tile.is-free:hover{transform:translate(-1px,-2px);z-index:180!important}.mahjong-tile.is-free:hover .mahjong-tile-face{box-shadow:4px 5px 0 var(--line), inset 0 0 0 3px color-mix(in srgb, var(--tile-tone) 34%, transparent)}.mahjong-tile.is-selected{transform:translate(-2px,-4px);z-index:200!important}.mahjong-tile.is-selected .mahjong-tile-face{outline:3px solid var(--accent);outline-offset:1px;box-shadow:4px 5px 0 var(--line), inset 0 0 0 3px color-mix(in srgb, var(--accent) 22%, transparent);animation:.28s ease-out mahjong-select-pop}.mahjong-tile.is-matched{pointer-events:none}.mahjong-tile.is-matched .mahjong-tile-face{animation:.32s ease-out forwards match-glow}.mahjong-tile.is-reject{animation:.38s ease-out ink-shake;z-index:190!important}.mahjong-tile.is-reject .mahjong-tile-face{animation:.38s ease-out danger-flash}@keyframes mahjong-select-pop{0%{transform:scale(.94)}70%{transform:scale(1.04)}to{transform:scale(1)}}@media (width<=900px){.mahjong-layout{grid-template-columns:minmax(0,1fr);gap:10px;min-width:0;max-width:100%}.mahjong-side,.mahjong-board-panel{min-width:0}.mahjong-board-panel{order:-1;padding:6px;overflow:hidden}.mahjong-board-frame{width:100%;min-height:0}.mahjong-board-rule{margin-top:8px;font-size:.7rem}.mahjong-controls{flex-direction:row;gap:8px}.mahjong-controls .tool-button{flex:1 1 0;width:auto;min-width:0;min-height:44px;padding:.45rem .5rem;font-size:.72rem}.mahjong-shell .case-name{display:none}.mahjong-tile-label{letter-spacing:.02em;font-size:.52rem}}
