/* DAWN - theme on top of the o7 / DANK base: fairy palette, DUSK mode, security breach, ex files */
:root{
  --card:#fff3f8;
  --cream:#ffe3ef;
  --sky-deep:#5b3a8c;
  --pink:#ff3d97;
  --nv:#76b900;
  --teal:#7fe0c9;
}
body{background:#2b2350}
.war{background:#2b2350}

/* logo: DAWN in four fairy colours */
.dawn-logo{font-size:clamp(58px,8.6vw,118px);letter-spacing:-.02em;white-space:nowrap}
.dawn-logo span{display:inline-block;transform-origin:50% 90%}
.dawn-logo .l1{color:#ff8fc1}.dawn-logo .l2{color:var(--amber)}.dawn-logo .l3{color:var(--teal)}.dawn-logo .l4{color:#b6f23a}
.dawn-logo.snap span{animation:hop 460ms var(--ease-out) both}
.dawn-logo.snap .l2{animation-delay:40ms}.dawn-logo.snap .l3{animation-delay:80ms}.dawn-logo.snap .l4{animation-delay:120ms}
@keyframes hop{0%{transform:translateY(0)}40%{transform:translateY(-14px) rotate(-4deg)}100%{transform:translateY(0)}}
.subtitle{color:#ffd1e6}
.hero{background:linear-gradient(160deg,#4a2f7c 0%,#7a3f7e 55%,#b4537f 100%)}

/* hero frame: Dawn standing on her branch; Dusk replaces the whole frame in dusk mode */
.hero-dawn{height:88%;bottom:9%;filter:drop-shadow(0 6px 10px rgba(30,10,40,.45))}
.hero-dusk{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 30%;opacity:0;transition:opacity 260ms ease}
.walker{width:64px;height:64px;filter:drop-shadow(2px 3px 0 rgba(0,0,0,.35))}

/* nav: the dusk switch */
.nav-btn.dusk-btn{background:#2a1530;color:#ffb3d9;cursor:pointer}
.nav-btn.dusk-btn[aria-pressed="true"]{background:#ffe3a2;color:#2a1530}

/* ---------- DUSK MODE: evil twin palette ---------- */
body.dusk{--card:#1f0c12;--cream:#2c1119;--amber:#ff5a6e;--sky-deep:#12070c;background:#07060d}
body.dusk .war{background:#07060d}
body.dusk .hero{background:linear-gradient(160deg,#12070c 0%,#2e0d18 60%,#5e131a 100%)}
body.dusk .hero-dusk{opacity:1}
body.dusk .hero-dawn,body.dusk .scene-frame canvas{opacity:0}
body.dusk .xp-window,body.dusk .ctl,body.dusk .bevel-box,body.dusk .lore,body.dusk .notepad{color:#f3d6dc}
body.dusk .muted,body.dusk .ca-meta{color:#c79aa5}
body.dusk .btn-xp:not(.olive):not(.red){color:#f3d6dc}
body.dusk .titlebar{background:#5a0d18}
body.dusk .dawn-logo .l1,body.dusk .dawn-logo .l2,body.dusk .dawn-logo .l3,body.dusk .dawn-logo .l4{color:#ff2d4a}
body.dusk .subtitle{color:#ff9aa8}
body.dusk .lore-last{color:#ff5a6e}
body.dusk .ie-body,body.dusk .cert{color:#f3d6dc}
body.dusk input.txt,body.dusk .chat-form input{background:#12070c;color:#f3d6dc}

/* ---------- CHOOSE ALICE: security breach flash ---------- */
body::after{content:"";position:fixed;inset:0;z-index:650;pointer-events:none;opacity:0;background:repeating-linear-gradient(-45deg,rgba(255,0,30,.22) 0 22px,rgba(0,0,0,.1) 22px 44px);transition:opacity 200ms ease}
body.breach::after{opacity:1;animation:siren .3s steps(2,start) infinite}
@keyframes siren{50%{opacity:.35}}

/* meme maker inputs */
input.txt{width:100%;margin-top:6px;font:22px/1.1 var(--crt);padding:6px 8px;border:3px solid var(--ink);background:#fff;color:var(--ink);box-shadow:inset 2px 2px 0 rgba(0,0,0,.15)}
input.txt:focus-visible{outline:3px solid var(--pink);outline-offset:1px}
.maker-preview{background:linear-gradient(#ffd1e6,#c7a6ff)}

/* ---------- THE EX FILES ---------- */
.exes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.ex{display:flex;flex-direction:column}
.ex-photo{aspect-ratio:4/3;overflow:hidden;border-bottom:3px solid var(--ink);background:#111}
.ex-photo img{width:100%;height:100%;object-fit:cover;object-position:50% 25%;display:block}
.ex.dawn .ex-photo img{object-position:50% 20%}
.redacted{height:100%;display:grid;place-content:center;gap:10px;text-align:center;background:repeating-linear-gradient(0deg,#111 0 12px,#1b1b1b 12px 24px);color:#ff3b4f;font:14px/1 var(--pixel)}
.redacted b{display:block;background:#000;padding:8px 10px;border:2px solid #ff3b4f}
.ex-body{padding:10px 12px 12px;display:flex;flex-direction:column;gap:6px;flex:1}
.ex-name{margin:0;font:13px/1.2 var(--pixel)}
.ex-name small{font-size:8px;opacity:.7}
.ex ul{margin:0;padding-left:18px;font-size:19px;line-height:1.15;flex:1}
.ex .btn-xp{align-self:flex-start}
.ex .n{font-size:17px}
.ex.alice .ex-name{color:#c8202f}
.ex.alice ul li:first-child{background:#111;color:#111;width:max-content;user-select:none}

/* museum poster window */
.poster-body{padding:0;background:#dfe7ef}
.poster-body img{display:block;width:100%;height:auto}

/* toast/popup emotes are faces now: keep them round-ish */
.popup-body img{width:46px;height:46px}

@media (max-width:900px){
  .exes{grid-template-columns:1fr}
  .ex{display:grid;grid-template-columns:42% 1fr}
  .ex .titlebar{grid-column:1/-1}
  .ex-photo{aspect-ratio:auto;border-bottom:0;border-right:3px solid var(--ink)}
}
@media (max-width:560px){
  .topnav{left:8px;right:8px;justify-content:center;flex-wrap:wrap}
  .nav-btn{font-size:7px;padding:6px 6px}
  .dawn-logo{font-size:clamp(44px,15vw,72px)}
  .ex{grid-template-columns:38% 1fr}
  .ex ul{font-size:17px}
}
@media (prefers-reduced-motion:reduce){
  .dawn-logo.snap span,body.breach::after{animation:none}
}

/* =====================================================================
   NVIDIA SKIN (user, 2026-11-09: "less Windows, more NVIDIA")
   The windows are GeForce FX box art now: brushed chrome bodies, black title bars with an NVIDIA-green rule,
   black/green section heads. Dawn's fairy colours stay as the accent.
   ===================================================================== */
:root{--card:#eef1f3;--cream:#e2e7ea;--ink:#0b0b0b;--amber:#c8ff6a}
body,.war{background:#0a1a0d}
.xp-window{background:linear-gradient(180deg,#f5f7f8 0%,#dfe4e7 60%,#cfd6db 100%);box-shadow:5px 5px 0 rgba(0,0,0,.9),inset 0 1px 0 #fff}
.titlebar{background:linear-gradient(180deg,#232323 0%,#060606 100%);color:#e6f6d2;border-bottom:3px solid var(--nv);letter-spacing:.02em}
.titlebar .amber,.titlebar .blink.amber{color:var(--nv)}
.titlebar.olive-bar{background:var(--nv);color:#0b0b0b}
.sec-head{background:#0b0b0b;color:#e6f6d2;border-bottom:3px solid var(--nv)}
.sec-head.olive{background:var(--nv);color:#0b0b0b;border-bottom-color:#0b0b0b}
.sec-head.blue{background:linear-gradient(90deg,#0b0b0b 0%,#14270a 100%)}
.sec-head.ink{background:#0b0b0b}
.sec-head.pink{background:linear-gradient(90deg,#ff3d97 0%,#c7a6ff 100%);color:#fff;border-bottom-color:#0b0b0b}
.sec-head.red{background:#8a0f1c}
.uc{background:var(--nv);color:#0b0b0b}
.uc::before,.uc::after{background:repeating-linear-gradient(45deg,#0b0b0b 0 4px,var(--nv) 4px 8px)}
.marquee{background:#050505;border-color:#050505}
.marquee-track{color:var(--nv)}
.btn-xp.olive,.chip[aria-pressed="true"],.nav-btn.buy,.hero-ca .copy-ca,.foot-ca button{background:var(--nv);color:#0b0b0b}
.btn-xp{background:linear-gradient(180deg,#fafbfc,#cfd6db)}
.btn-xp.red{background:#c8202f;color:#fff}
.btn-xp.amber-btn{background:linear-gradient(180deg,#e9ffc2,#b6f23a);color:#0b0b0b}
.big-btn.green{background:var(--nv);color:#0b0b0b}
.big-btn.blue{background:#0b0b0b;color:#e6f6d2}
.big-btn.cream{background:linear-gradient(180deg,#fafbfc,#c3cbd1);color:#0b0b0b}
.hero-ca-tag{background:var(--nv)}
.nav-btn{color:var(--nv)}
.lore{border-color:#0b0b0b;background:linear-gradient(180deg,#f7f9fa,#e3e8eb)}
.lore-last{color:#4f8a00}
.ie-bar{background:#dfe4e7}
.paint-note{color:#3f6f00}
.ca-title{color:#3f6f00}

/* hero = the GeForce FX box: black, a green light streak, chrome */
.hero{background:
  linear-gradient(115deg,transparent 0 46%,rgba(118,185,0,.22) 46% 48%,transparent 48% 52%,rgba(118,185,0,.12) 52% 53%,transparent 53%),
  radial-gradient(120% 90% at 80% 30%,#1f3a0b 0%,#0a1406 45%,#030303 100%)}
.hero-left{color:#e9eef1}
.hero-copy b{color:#c8ff6a}
.subtitle{color:#e6f6d2;-webkit-text-stroke:2px #000}
.welcome{color:var(--nv)}
.scene-frame{border-color:#0b0b0b;box-shadow:8px 8px 0 #000,0 0 0 3px var(--nv)}
.stamp-pink{background:var(--nv);color:#0b0b0b}
.stamp-est{background:linear-gradient(180deg,#fafbfc,#c3cbd1)}
/* Dawn now stands on the GeForce FX card */
.hero-dawn{height:74%;bottom:30%}

/* intro = NVIDIA demo launcher boot screen */
.intro{background:#020402}
.intro-grid{background-image:linear-gradient(rgba(118,185,0,.55) 2px,transparent 2px),linear-gradient(90deg,rgba(118,185,0,.55) 2px,transparent 2px)}
.intro-ver{color:var(--nv)}
.intro-bar,.intro-log{border-color:var(--nv)}
.intro-fill{background:repeating-linear-gradient(90deg,#b6f23a 0 12px,#3f6f00 12px 20px)}
.btn-skip{background:var(--nv)}

/* keep dusk winning over the skin */
body.dusk{--card:#1f0c12;--cream:#2c1119;--amber:#ff5a6e;--nv:#ff2d4a}
body.dusk .xp-window,body.dusk .lore{background:linear-gradient(180deg,#24101a,#160910)}
body.dusk .btn-xp:not(.olive):not(.red){background:#2c1119}
body.dusk .war{background:#120709}

/* contrast fixes (dusk) + mobile bubbles */
body.dusk .ca-input,body.dusk .hero-ca .ca-text,body.dusk .foot-ca .ca-text{color:#111}
body.dusk .toast p,body.dusk .popup-body p{color:#f3d6dc}
.stamp-est{color:#0b0b0b}
@media (max-width:560px){.labels .bubble:nth-child(n+4){display:none}}
