/* Hallmark · macrostructure: Split Studio · theme: custom midnight war journal · genre: atmospheric · anchor hue: warm gold
 * nav: N1b solid · footer: Ft5 Statement · enrichment: official game art · motion: button press; gallery opacity · axes: dark / roman-serif / warm
 * pre-emit critique: P4 H5 E4 S5 R5 V4 */
@import url("tokens.css");
*{box-sizing:border-box}html,body{margin:0;overflow-x:clip}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--nav-height) + 24px)}body{background:var(--color-wine);color:var(--color-ink);font-family:var(--font-body);font-size:var(--text-base);line-height:1.8}body::before{content:"";position:fixed;inset:0;z-index:-1;background:repeating-linear-gradient(90deg,var(--color-clear) 0 46px,var(--color-hair) 46px 47px);pointer-events:none}h1,h2,h3{font-style:normal;line-height:1.3;overflow-wrap:anywhere;min-width:0}h1,h2{font-family:var(--font-display)}h2{font-size:clamp(1.8rem,3.1vw,2.65rem);margin:0 0 var(--space-lg)}h3{font-size:var(--text-lg);margin:0 0 var(--space-sm)}p{margin:0 0 var(--space-lg)}p:last-child{margin-bottom:0}a{color:inherit;text-underline-offset:4px}button{font:inherit;cursor:pointer}img{max-width:100%;height:auto;display:block}figure{margin:0}ul,ol{padding-left:1.5rem}li{margin-block:.5rem}button,a,summary{touch-action:manipulation}a:focus-visible,button:focus-visible,summary:focus-visible{outline:3px solid var(--color-focus-dark);outline-offset:4px}.site-header :focus-visible,.hero :focus-visible,footer :focus-visible,.mobile-cta :focus-visible,dialog :focus-visible{outline-color:var(--color-focus-light)}[hidden]{display:none!important}.skip{position:fixed;top:10px;left:10px;background:var(--color-paper);color:var(--color-ink);padding:var(--space-sm) var(--space-md);z-index:1000;transform:translateY(-160%)}.skip:focus{transform:none}.site-header{position:sticky;top:0;background:var(--color-canvas);color:var(--color-light-ink);z-index:100;border-bottom:var(--rule-hair) solid var(--color-dark-rule)}.nav-inner{max-width:var(--page-width);margin:auto;min-height:var(--nav-height);padding:var(--space-sm) var(--space-lg);display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);flex-wrap:wrap}.brand{text-decoration:none;font-family:var(--font-display);font-size:var(--text-lg);display:flex;gap:var(--space-sm);align-items:center;white-space:nowrap}.crest{width:25px;height:25px;border:var(--rule-heavy) solid var(--color-accent);transform:rotate(30deg);display:block}.crest::after{content:"";display:block;inset:4px;position:absolute;border:var(--rule-hair) solid var(--color-accent);transform:rotate(30deg)}.site-nav{order:3;width:100%;display:flex;justify-content:space-between;gap:var(--space-sm)}.site-nav a{min-height:44px;display:flex;align-items:center;text-decoration:none;font-size:var(--text-sm);white-space:nowrap;border-bottom:var(--rule-heavy) solid var(--color-clear)}.site-nav a[aria-current=page]{color:var(--color-accent);border-color:var(--color-accent)}.menu-toggle{display:none;border:var(--rule-hair) solid var(--color-dark-rule);color:var(--color-light-ink);background:var(--color-canvas);min-height:44px;padding:var(--space-sm) var(--space-md)}.btn.nav-download{display:none}.js .menu-toggle{display:block}.js .site-nav{display:none}.js .site-nav.is-open{display:flex}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-sm);background:var(--color-accent);color:var(--color-accent-ink);border:var(--rule-heavy) solid var(--color-canvas);padding:.75rem 1.25rem;min-height:48px;text-decoration:none;font-weight:650;font-size:var(--text-sm);white-space:nowrap;box-shadow:4px 4px 0 var(--color-canvas);transition:transform var(--dur-fast) var(--ease-out)}.btn.secondary{background:var(--color-clear);color:inherit;box-shadow:none;border:var(--rule-hair) solid currentColor}.btn:active,button:active{transform:translateY(2px)}a[aria-disabled=true],button:disabled{opacity:.5;cursor:not-allowed}.actions{display:flex;flex-wrap:wrap;gap:var(--space-md);margin-top:var(--space-xl)}.btn[data-state=loading]{opacity:.65;cursor:progress}.btn[data-state=error]{outline:2px dashed var(--color-error)}.btn[data-state=success]{border-color:var(--color-success)}.hero{position:relative;background:var(--color-canvas);color:var(--color-light-ink);min-height:620px;display:grid;align-items:center;isolation:isolate}.hero-scene{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2;opacity:.65}.hero::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,var(--color-shade),var(--color-soft-shade)),linear-gradient(0deg,var(--color-canvas),var(--color-clear) 55%)}.hero-inner{width:100%;max-width:var(--page-width);margin:auto;padding:var(--space-xl) var(--space-lg) var(--space-2xl);display:grid;gap:var(--space-xl)}.tags{display:flex;gap:var(--space-sm);flex-wrap:wrap;margin-bottom:var(--space-md)}.tag{font-size:var(--text-xs);padding:.2rem .6rem;border:var(--rule-hair) solid var(--color-dark-rule);color:var(--color-light-muted)}.hero h1{font-size:var(--text-display);letter-spacing:.03em;margin:0 0 var(--space-lg)}.original-name{display:block;font-family:var(--font-mono);font-size:var(--text-sm);font-weight:400;letter-spacing:.03em;line-height:1.8;margin-top:var(--space-md);color:var(--color-light-muted)}.hero-intro{max-width:32em;color:var(--color-light-muted);font-size:var(--text-lg)}.hero-cover{align-self:center;padding:var(--space-sm);background:var(--color-paper);color:var(--color-ink);transform:rotate(-1deg);box-shadow:8px 8px 0 var(--color-canvas);border:var(--rule-hair) solid var(--color-rule)}.hero-cover img{width:100%;aspect-ratio:616/353}.hero-cover figcaption{padding:var(--space-sm);font-family:var(--font-display);font-size:var(--text-lg)}.hero-cover::before{content:"";position:absolute;top:-12px;left:42%;width:80px;height:24px;background:var(--color-accent);opacity:.8;transform:rotate(5deg)}.hero-note{font-size:var(--text-xs);color:var(--color-light-muted);margin-top:var(--space-lg)}.paper{max-width:var(--page-width);margin:0 auto;background:var(--color-paper);box-shadow:8px 0 0 var(--color-canvas)}.block{padding:var(--space-2xl) var(--space-lg)}.ledger{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-lg) var(--space-md);margin:0;padding:var(--space-xl) var(--space-lg);background:var(--color-paper-deep);color:var(--color-ink)}.ledger dt{font-size:var(--text-xs);color:var(--color-muted)}.ledger dd{margin:var(--space-xs) 0 0;font-weight:600;font-size:var(--text-sm)}.story{display:grid;gap:var(--space-xl)}.story-lede{font-family:var(--font-display);font-size:var(--text-xl);line-height:1.65;max-width:24em}.story-text{max-width:40em}.note{padding:var(--space-md) var(--space-lg);border-left:3px solid var(--color-wine);background:var(--color-paper-deep);color:var(--color-ink);font-size:var(--text-sm)}.feature-row{display:grid;gap:var(--space-xl);align-items:center;padding-block:var(--space-xl)}.feature-row+ .feature-row{margin-top:var(--space-xl)}.feature-image{max-width:300px;margin:auto;border:var(--rule-hair) solid var(--color-rule);box-shadow:6px 6px 0 var(--color-paper-deep)}.feature-image a{display:block}.feature-image img{width:100%}.feature-text{min-width:0}.names{color:var(--color-muted);font-size:var(--text-sm);margin-bottom:var(--space-md)}.mechanic{border-top:var(--rule-hair) solid var(--color-rule);margin-top:var(--space-lg);padding-top:var(--space-md);font-size:var(--text-sm)}.gallery-preview{display:grid;gap:var(--space-md);align-items:start}.gallery-shot{display:block;background:var(--color-canvas);color:var(--color-light-ink);border:var(--rule-hair) solid var(--color-canvas)}.gallery-shot img{width:100%;height:auto}.thumbs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-sm)}.thumbs figcaption{font-size:var(--text-xs);margin-top:var(--space-xs);color:var(--color-muted)}.gallery-links{display:flex;justify-content:space-between;gap:var(--space-md);align-items:center;flex-wrap:wrap;margin-top:var(--space-lg)}.text-link{display:inline-flex;align-items:center;min-height:44px;font-size:var(--text-sm);white-space:nowrap}.audience{display:grid;gap:var(--space-xl);background:var(--color-paper-deep);color:var(--color-ink)}.audience ul{margin:0}.faq details{border-top:var(--rule-hair) solid var(--color-rule)}.faq details:last-child{border-bottom:var(--rule-hair) solid var(--color-rule)}.faq summary{padding:var(--space-lg) 0;cursor:pointer;line-height:1.6;font-weight:600}.faq details[open] summary{color:var(--color-wine)}.faq-answer{padding:0 0 var(--space-lg);max-width:48em}.download-panel{padding:var(--space-xl);border:var(--rule-hair) solid var(--color-rule);background:var(--color-paper-deep);color:var(--color-ink);display:grid;gap:var(--space-lg);position:relative}.download-panel h2{font-size:var(--text-2xl)}.download-panel .ticket{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-muted)}.final-cta{background:var(--color-canvas);color:var(--color-light-ink);padding:var(--space-2xl) var(--space-lg);display:grid;gap:var(--space-md)}.final-cta .btn{border-color:var(--color-accent);box-shadow:4px 4px 0 var(--color-dark-rule)}.final-cta p{color:var(--color-light-muted);max-width:38em}footer{background:var(--color-canvas);color:var(--color-light-muted);padding:var(--space-2xl) var(--space-lg) var(--space-xl)}.footer-inner{max-width:var(--page-width);margin:auto}.footer-statement{font-family:var(--font-display);font-size:clamp(1.6rem,3.3vw,2.5rem);color:var(--color-light-ink);margin-bottom:var(--space-xl);line-height:1.5}.footer-meta{display:grid;gap:var(--space-lg)}.footer-nav,.related{display:flex;gap:var(--space-sm) var(--space-lg);flex-wrap:wrap}.footer-nav a,.related a{font-size:var(--text-sm);white-space:nowrap;min-height:44px;display:inline-flex;align-items:center}.footer-legal{font-size:var(--text-xs);border-top:var(--rule-hair) solid var(--color-dark-rule);margin-top:var(--space-xl);padding-top:var(--space-lg)}.footer-legal p{margin-bottom:var(--space-sm)}.mobile-cta{position:fixed;inset:auto 0 0;background:var(--color-canvas);color:var(--color-light-ink);padding:var(--space-sm) var(--space-md) max(.5rem,env(safe-area-inset-bottom));display:flex;justify-content:space-between;align-items:center;gap:var(--space-sm);z-index:90;border-top:var(--rule-hair) solid var(--color-dark-rule)}.mobile-cta small{font-size:var(--text-xs);line-height:1.6}.mobile-cta .btn{min-height:44px;box-shadow:none;padding:.5rem .75rem}.page-head{padding:var(--space-xl) var(--space-lg) var(--space-2xl);background:var(--color-canvas);color:var(--color-light-ink)}.breadcrumb{display:flex;gap:var(--space-sm);flex-wrap:wrap;font-size:var(--text-xs);margin-bottom:var(--space-xl);color:var(--color-light-muted)}.breadcrumb a{min-height:44px;display:inline-flex;align-items:center;white-space:nowrap}.breadcrumb span{display:inline-flex;align-items:center}.page-head h1{font-size:clamp(2rem,4vw,3.5rem);margin:0 0 var(--space-lg)}.page-head p{max-width:46em;color:var(--color-light-muted)}.page-head a:focus-visible{outline-color:var(--color-focus-light)}.contents{margin:0;padding:var(--space-lg);background:var(--color-paper-deep);color:var(--color-ink);display:flex;flex-wrap:wrap;gap:var(--space-sm) var(--space-lg)}.contents a{font-size:var(--text-sm);min-height:44px;display:inline-flex;align-items:center;white-space:nowrap}.guide-intro{font-size:var(--text-sm);color:var(--color-muted)}.steps{list-style:none;padding:0;counter-reset:step;margin:var(--space-lg) 0}.steps li{display:grid;grid-template-columns:36px minmax(0,1fr);gap:var(--space-md);counter-increment:step;margin-bottom:var(--space-lg);align-items:start}.steps li::before{content:counter(step,decimal-leading-zero);font-family:var(--font-mono);font-size:var(--text-sm);color:var(--color-wine);border-top:2px solid var(--color-wine);padding-top:var(--space-xs)}.steps li p{margin:0}.keys{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-sm);margin:var(--space-lg) 0}.keys div{padding:var(--space-md);background:var(--color-paper-deep);color:var(--color-ink)}.keys dt{font-family:var(--font-mono);font-weight:600}.keys dd{margin:var(--space-sm) 0 0;font-size:var(--text-sm)}.guide-figure{max-width:640px;margin:var(--space-xl) auto}.guide-figure figcaption{font-size:var(--text-sm);color:var(--color-muted);margin-top:var(--space-sm)}.guide-section{max-width:52em}.source-label{font-size:var(--text-xs);color:var(--color-muted)}.requirements{display:grid;gap:var(--space-lg)}.requirements article{border:var(--rule-hair) solid var(--color-rule);padding:var(--space-lg)}.requirements dl{margin:0}.requirements dl div{padding:.75rem 0;border-bottom:var(--rule-hair) solid var(--color-rule)}.requirements dl div:last-child{border:0}.requirements dt{color:var(--color-muted);font-size:var(--text-xs)}.requirements dd{margin:var(--space-xs) 0 0;font-size:var(--text-sm);overflow-wrap:anywhere}.filters{display:none;flex-wrap:wrap;gap:var(--space-sm);margin:0 0 var(--space-xl)}.js .filters{display:flex}.filters button{padding:.5rem 1rem;border:var(--rule-hair) solid var(--color-rule);background:var(--color-paper);color:var(--color-ink);min-height:44px;white-space:nowrap;font-size:var(--text-sm)}.filters button[aria-pressed=true]{background:var(--color-ink);color:var(--color-paper);border-color:var(--color-ink)}.gallery-grid{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));gap:var(--space-xl) var(--space-lg)}.gallery-card{min-width:0}.gallery-card figcaption{margin-top:var(--space-sm);font-size:var(--text-sm)}.gallery-card a{display:block;border:var(--rule-hair) solid var(--color-rule);background:var(--color-canvas)}.gallery-card img{width:100%}.gallery-card.portrait a{background:var(--color-paper-deep)}.gallery-card.portrait img{height:320px;object-fit:contain}.gallery-count{font-size:var(--text-sm);color:var(--color-muted);min-height:2em}.back-top{display:inline-flex;min-height:44px;align-items:center;font-size:var(--text-sm);white-space:nowrap}body{padding-bottom:76px}dialog{position:fixed;inset:0;margin:auto;border:var(--rule-hair) solid var(--color-dark-rule);padding:var(--space-md);background:var(--color-canvas);color:var(--color-light-ink);width:min(96%,960px);max-height:94dvh;height:fit-content;overflow:auto}dialog::backdrop{background:var(--color-shade)}.lightbox-toolbar{display:flex;justify-content:space-between;gap:var(--space-sm);align-items:center;margin-bottom:var(--space-md);flex-wrap:wrap}.lightbox-toolbar button,.lightbox-controls button{background:var(--color-canvas);color:var(--color-light-ink);border:var(--rule-hair) solid var(--color-dark-rule);padding:.5rem .75rem;min-height:44px;font-size:var(--text-sm);white-space:nowrap}.lightbox-image{width:auto;max-width:100%;max-height:70dvh;object-fit:contain;margin:auto}.lightbox-stage{min-height:220px;display:grid;place-items:center}.lightbox-controls{display:flex;justify-content:space-between;align-items:center;gap:var(--space-sm);margin-top:var(--space-md)}.lightbox-caption{font-size:var(--text-sm);max-width:50%;text-align:center;line-height:1.5}.lightbox-status{font-size:var(--text-sm);min-height:1.8em;text-align:center;line-height:1.6}.lightbox-status a{color:var(--color-accent)}dialog[data-state=loading] .lightbox-image{opacity:.3}dialog[data-state=error]{border-style:dashed;border-color:var(--color-error)}dialog[data-state=success] .lightbox-image{opacity:1}.lightbox-image{transition:opacity var(--dur-fast) var(--ease-out)}.lightbox-content:fullscreen{width:100%;height:100%;max-height:none;overflow:auto;padding:var(--space-lg);background:var(--color-canvas);color:var(--color-light-ink)}.legal-scope{font-size:var(--text-sm);color:var(--color-muted)}
@media(hover:hover) and (pointer:fine){.btn:hover{transform:translate(-1px,-1px)}.btn.secondary:hover{background:var(--color-paper-deep);color:var(--color-ink)}.hero .btn.secondary:hover{background:var(--color-dark-rule);color:var(--color-light-ink)}.site-nav a:hover,.footer-nav a:hover,.related a:hover{color:var(--color-accent)}.gallery-shot:hover,.gallery-card a:hover{outline:2px solid var(--color-accent);outline-offset:2px}.filters button:hover{border-color:var(--color-ink)}summary:hover{color:var(--color-wine)}}
@media(min-width:40rem){.block{padding:var(--space-3xl) var(--space-2xl)}.ledger{grid-template-columns:repeat(4,minmax(0,1fr));padding:var(--space-xl) var(--space-2xl)}.hero-inner{padding:var(--space-2xl)}.page-head{padding:var(--space-2xl)}.story{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-2xl)}.feature-row{grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:var(--space-2xl)}.feature-row.reverse .feature-image{order:2}.feature-row.reverse .feature-text{order:1}.feature-image{width:100%;max-width:275px}.audience{grid-template-columns:repeat(2,minmax(0,1fr))}.requirements{grid-template-columns:repeat(2,minmax(0,1fr))}.keys{grid-template-columns:repeat(3,minmax(0,1fr))}.gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.download-panel{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);align-items:center}.final-cta{padding:var(--space-2xl);grid-template-columns:minmax(0,1fr) auto;align-items:center}.final-cta .actions{margin:0}.gallery-preview{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}.thumbs{grid-template-columns:repeat(1,minmax(0,1fr))}.hero-cover{max-width:480px;justify-self:center;width:100%}}
@media(min-width:60rem){.nav-inner{flex-wrap:nowrap;padding-inline:var(--space-xl)}.site-nav,.js .site-nav{order:0;width:auto;display:flex;gap:var(--space-xl)}.js .menu-toggle{display:none}.btn.nav-download{display:inline-flex;font-size:var(--text-xs);padding:.6rem .8rem;min-height:44px;box-shadow:3px 3px 0 var(--color-dark-rule)}.hero-inner{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:var(--space-2xl);padding-block:var(--space-3xl)}.hero{min-height:calc(100svh - var(--nav-height));max-height:900px}.hero-cover{max-width:480px}.hero-cover figcaption{padding:var(--space-md);font-size:var(--text-xl)}.gallery-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.thumbs{grid-template-columns:repeat(2,minmax(0,1fr))}.footer-meta{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.mobile-cta{display:none}body{padding-bottom:0}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.btn:hover,.btn:active,button:active{transform:none}}

button[data-state=loading]{opacity:.65;cursor:progress}button[data-state=error]{outline:2px dashed var(--color-error)}button[data-state=success]{border-color:var(--color-success)}
