/* G-SPOT visual system: paper / asphalt / signal. No effects over source artwork. */
:root{--ink:#f0ede3;--muted:#c2c0b5;--gold:#c9bf9f;--accent:#f2ce3d;--signal:#f2ce3d;--surface:#121310;--line:#e9e5d033;--display:'Barlow Condensed',Impact,sans-serif;--body:'Space Grotesk',sans-serif;--metric:'SFMono-Regular',Consolas,'Liberation Mono',monospace}
body{font-size:16px;line-height:1.65;color:var(--ink)}
h1,h2,h3{font-weight:800;letter-spacing:-.025em}h4{font-family:var(--display);font-weight:700;letter-spacing:.015em}
.eyebrow,.project-status,.tour-status,.tour-footnote,.journey-status,.journey-screen-note,.drone-meta,.collection-mast>span,.art-disclaimer,.lab-status,.lab-count,.lab-pixel,.channel-status{font-family:var(--metric);font-weight:500;letter-spacing:.055em}
.eyebrow{color:#d5d0bc;font-size:10px}.quiet{color:var(--muted)}
/* Grain is a small, static local tile on surfaces, never a full-screen filter. */
.glass-card,.note-card,.lab-draft,.lab-source,.starter-palette,.project-brief-grid article,.game-promise,.section details,.quick-story,.journey-stage,.drone-viewer,.operator-stage,.separate-worlds-mark,.collection-principles{background-color:var(--surface);background-image:url('assets/asphalt-grain.svg');border:1px solid var(--line);border-radius:2px;box-shadow:none;backdrop-filter:none}
.site-header{border-bottom:1px solid #dfdcc039;box-shadow:none;backdrop-filter:none}.site-header:after{content:'';position:absolute;left:6%;bottom:-2px;width:48px;height:3px;background:var(--signal);pointer-events:none}
.section{border-top-color:#ddd7bb33}.section-head{border-bottom-color:var(--line)}
/* Flat-cut controls. Phone shells, colour swatches and social identities retain their shapes. */
a.button,button.button,.hero-actions .button,#menu-open,.sound-toggle,.tour-controls button,.journey-controls button,.journey-controls button[data-journey-play],.journey-progress button,.tour-tabs button,.tour-controls>button,.film-controls button,.drone-picker button,.studio-thumb,.lab-actions button,.saved-palette>button,.starter-palette,.source-photo-button,.angle-controls button{border-radius:2px;background-color:#161713;background-image:none;box-shadow:none;backdrop-filter:none;border:1px solid #e1dcc652;color:var(--ink);transition:background-color 90ms steps(2,end),border-color 90ms steps(2,end),color 90ms steps(2,end),transform 90ms steps(2,end)}
a.button,.hero-actions .button,.lab-actions button,.tour-controls button,.journey-controls button{font-family:var(--display);font-size:17px;font-weight:700;letter-spacing:.035em;line-height:1.2;min-height:46px}
a.button:not(.secondary){border-left:4px solid #d7cfb6;background:#e8e2d0;color:#131511}.button.secondary{background:#141612e8;color:var(--ink)}
a.button:hover,button.button:hover,.hero-actions .button:hover,.tour-controls button:hover,.journey-controls button:hover,.drone-picker button:hover,#menu-open:hover,.lab-actions button:hover{background:var(--signal);color:#171911;border-color:var(--signal);transform:none;box-shadow:3px 3px 0 #0006}
a.button:active,button:active{transform:translate(1px,1px)}
button[aria-pressed=true]:not(.exact-swatches button):not(.journey-palette button),.journey-progress button[aria-pressed=true],.tour-tabs button[aria-selected=true],.drone-picker button[aria-selected=true]{background-color:var(--signal);border-color:var(--signal);color:#11150d;box-shadow:inset 3px 0 #161a11}
a:focus-visible,button:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid var(--signal);outline-offset:4px}
input:not([type=range]):not([type=color]):not([type=checkbox]),select,textarea{border-radius:2px;border:1px solid #c9c3a45c;background:#0e100d;color:var(--ink);font:inherit;padding:10px 12px;min-height:44px}
/* Compact editorial labels and decisive, finite transitions. */
.hero-merch figcaption,.hero-visual-label,.tour-annotation span,.journey-annotation,.journey-screen-note,.map-illustration-tag,.guide-caption{font-family:var(--display);font-weight:700;letter-spacing:.055em;border-radius:1px;border-color:#d9d1b355;background-color:#151711;color:#f1ecda;box-shadow:3px 3px 0 #0005}
.tour-annotation path,.journey-annotation path{stroke:#f0d66e}.journey-annotation circle{fill:#f0d66e}.tour-annotation.arrive{animation:street-stamp 180ms steps(3,end)}
@keyframes street-stamp{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}
.tour-progress{height:5px;background:#555449}.tour-progress span{background:var(--signal);transition:width 120ms steps(4,end)}
.journey-stage.journey-changing{opacity:.9;transform:none}.journey-stage{transition:opacity 100ms steps(2,end)}
.social-channel .social-icon img,.wallet-footer .wallet-mark img,.social-channel .wallet-channel .social-icon img,.wallet-channel img,.polygon-channel img{animation:none!important}.social-channel .social-icon{box-shadow:none;background:#161713;border-color:#d5d0bb45}
.art-intro img,.workshop-study,.blueprint,.camera-window{border-radius:2px}.blueprint{background-color:#111a18;border-color:#c0c7ba55}.blueprint text{fill:#e2e2d3}
/* Study frames are presentation surfaces, not claims of AR relighting. */
.cast-stage-media,.operator-feature .operator-stage,.drone-viewer{border-bottom:2px solid #8b8879;background-color:#10130f;background-image:radial-gradient(ellipse at 50% 80%,#4c4d383d,transparent 64%),url('assets/asphalt-grain.svg')}
.lab-message,.lab-empty,.tour-footnote{font-size:12px;line-height:1.6}.lab-message{border-left:3px solid #a59e82;padding-left:12px}.lab-message[role=alert]{border-left-color:var(--signal)}
@media(max-width:700px){body{font-size:16px}.site-header:after{left:18px;width:36px}.phone-tour-copy>p,.journey-copy>p,.section details p{font-size:16px;line-height:1.65}.hero-actions{gap:10px}.hero-actions .button{flex:1 1 160px;padding:13px 16px}.tour-controls button{min-width:44px;min-height:46px}.tour-status{font-size:10px}.tour-annotation span{font-size:12px}.site-footer{border-top:1px solid var(--line)}}
@media(prefers-reduced-motion:reduce){a,button,.tour-progress span,.journey-stage{transition:none!important}.tour-annotation.arrive{animation:none}}
.home-page .arrival-hero{padding-top:42px;padding-bottom:42px;min-height:calc(100svh - 118px)}.home-page .hero-merch{height:min(590px,65svh)}.home-page .hero-whisper{font-weight:800}.phone-tour-intro h2,.journey-heading h2,.phone-tour-copy h3,.journey-copy h3{font-weight:800}
@media(max-width:760px){.home-page .arrival-hero{padding-top:30px;padding-bottom:32px;min-height:auto}.home-page .hero-merch{height:min(510px,61svh)}}
.tour-chapters button{border-radius:2px;background:#151713;border:1px solid #e1dcc652;box-shadow:none;backdrop-filter:none;font:600 16px/1.25 var(--display);letter-spacing:.02em;min-height:64px;transition:background-color 90ms steps(2,end)}.tour-chapters button>span{font:10px/1.2 var(--metric);color:#c4beaa}.tour-chapters button[aria-pressed=true]>span{color:#202311}.tour-chapters button:hover{border-color:var(--signal)}
#menu-open{white-space:nowrap;flex-shrink:0}.header-actions{min-width:0}.sound-toggle{white-space:nowrap;flex-shrink:0}
@media(max-width:700px){.site-header{gap:8px}.site-header .brand img{width:120px;max-height:78px}.site-header .header-actions{gap:8px}.site-header #menu-open{padding:10px;min-width:80px;gap:8px;word-break:normal;overflow-wrap:normal}.site-header .sound-toggle{padding:8px 6px;font-size:9px}.home-page .site-header .release-link{display:none}}
@media(max-width:350px){.site-header .brand img{width:105px}.site-header{padding-inline:12px}}
.dialog-top button,.tour-navigation button,.caption-pin{border-radius:2px;box-shadow:none;background:#151713;border:1px solid #e1dcc652;min-height:44px;transition:background-color 90ms steps(2,end)}.dialog-top button:hover{background:var(--signal);color:#11150d}
.art-study-controls button,.art-more-tones,.starter-palette,.tour-navigation button,.film-selector button{border-radius:2px;box-shadow:none;background:#161713;border:1px solid #e1dcc652;font-family:var(--display);font-size:15px;min-height:44px;transition:background-color 90ms steps(2,end)}.art-study-controls button[aria-pressed=true]{background:var(--signal);color:#11150d}.art-more-tones:hover{border-color:var(--signal)}
