:root{color-scheme:dark;--bg:#08060d;--panel:#15101f;--ink:#f4f0f8;--muted:#aaa1b5;--violet:#d5a3ff;--purple:#b64cff;--approved:#54e58a;--pending:#f4bd50;--redo:#ff5875;font:16px system-ui,sans-serif}
*{box-sizing:border-box}
body{margin:0;color:var(--ink);background:radial-gradient(ellipse at 55% 0%,#1b0d2a,var(--bg) 65%) fixed;min-height:100dvh;padding:0 0 82px}
.top,main,nav{max-width:650px;margin:auto}
.top{display:flex;justify-content:space-between;align-items:center;padding:15px 18px;min-height:49px;border-bottom:1px solid #332441;color:var(--violet);font:700 .67rem ui-monospace,monospace;letter-spacing:.13em}
.top i{display:inline-block;width:6px;height:6px;background:var(--purple);box-shadow:0 0 11px var(--purple);margin-right:6px;transform:rotate(45deg)}
main{padding:0 15px}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
.eyebrow,.micro{color:var(--violet);font:700 .68rem ui-monospace,monospace;letter-spacing:.12em;text-transform:uppercase}
h1,h2{margin:12px 0 8px;font-size:clamp(1.45rem,6vw,2rem);font-weight:900;letter-spacing:-.055em}
h2{font-size:1.28rem}
h3,p{margin:0 0 7px;overflow-wrap:anywhere}
h3{font-size:1.03rem}
p,small{color:var(--muted);line-height:1.45}
.hero p{margin:6px 0 0;color:var(--ink)}
.intro{margin:21px 0 14px}
.metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}
.metric,.card,.empty,.panel{background:linear-gradient(145deg,#20152d,#100c17 75%);border:1px solid #3d2b50;border-radius:9px;padding:12px}
.metric{border-top:2px solid currentColor;color:var(--violet)}
.metric strong{display:block;font-size:1.55rem;line-height:1;margin-bottom:6px}
.metric span{color:var(--ink);font:700 .64rem ui-monospace,monospace;text-transform:uppercase}
.approved{color:var(--approved)}.pending{color:var(--pending)}.redo,.missed{color:var(--redo)}
.card{margin:8px 0;border-left:3px solid #7a4f97}
.card.approved{border-left-color:var(--approved)}.card.pending{border-left-color:var(--pending)}.card.redo{border-left-color:var(--redo)}
.card h3{color:var(--ink);margin-top:5px}
.card p{white-space:pre-wrap}
.status{font:800 .71rem ui-monospace,monospace;text-transform:uppercase;color:var(--violet)}
.status.approved{color:var(--approved)}.status.pending{color:var(--pending)}.status.redo,.status.missed{color:var(--redo)}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.spread{justify-content:space-between}.section{margin:20px 0 10px}
button,input,select,textarea{font:inherit}
button{min-height:46px;padding:8px 12px;border:1px solid #674183;border-radius:7px;background:#21142d;color:var(--ink);font-weight:750;cursor:pointer}
button:active{transform:translateY(1px)}
button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid #e0abff;outline-offset:2px}
.primary{background:#d5a3ff;color:#180820;border-color:#e1b9ff}
button.approved{color:var(--approved);border-color:#377651}button.redo{color:var(--redo);border-color:#8b3c50}
.card .row{margin-top:10px}
button:disabled{opacity:.58;cursor:default}
nav{position:fixed;bottom:0;left:0;right:0;background:#100b19;border-top:1px solid #53316f;display:flex;justify-content:space-around;z-index:2;padding:5px 4px 7px}
nav button{flex:1;border:0;background:none;color:var(--muted);font:800 .73rem system-ui;min-height:53px}
nav button span{display:block;font:700 1.12rem system-ui;line-height:1.2}
nav [aria-current=page]{color:var(--violet);text-shadow:0 0 12px var(--purple)}
.progress{margin:12px 0;color:var(--muted);font-size:.88rem}
progress{display:block;width:100%;height:10px;margin-top:6px;accent-color:var(--purple)}
.day{border-top:1px solid #362442;margin:13px 0;padding-top:7px}
.panel{margin:10px 0}.empty{color:var(--muted)}
dialog{width:min(480px,calc(100% - 24px));max-height:90dvh;overflow:auto;padding:17px;background:var(--panel);color:var(--ink);border:1px solid #9e69bf;border-radius:10px}
dialog::backdrop{background:#000b}
label{display:block;margin:10px 0;color:var(--ink)}
input:not([type=checkbox]),select,textarea{display:block;width:100%;min-height:46px;border:1px solid #674183;border-radius:6px;background:#0e0a14;color:var(--ink);padding:9px;margin-top:5px}
input[type=checkbox]{accent-color:var(--purple);width:18px;height:18px}
fieldset{border:1px solid #674183;margin:10px 0}.days label,.toggle{display:inline-flex;align-items:center;gap:5px;min-height:45px;margin:0 5px 0 0}
[hidden]{display:none!important}
#notice:not(:empty){position:fixed;left:50%;transform:translateX(-50%);bottom:67px;z-index:3;width:min(610px,94%);background:#251434;border:1px solid var(--purple);padding:10px;border-radius:8px;color:var(--ink);box-shadow:0 5px 30px #000a}

/* 01.1 artwork and touch layout */
:root{--surface:#100b19;--edge:#513466;--nav-height:76px}
html{scroll-padding-bottom:calc(var(--nav-height) + 14px)}
body{padding-bottom:calc(var(--nav-height) + 14px);background:radial-gradient(ellipse at 70% 0%,#251134,var(--bg) 62%) fixed}
main{padding-inline:clamp(12px,4vw,24px)}
.top{gap:10px;padding:12px clamp(12px,4vw,24px);min-height:46px;letter-spacing:.1em}
#role{color:#f1dbff;text-align:right}
.hero{display:block;margin:14px 0;min-height:0;padding:0;background:#120b1d;clip-path:none;border:1px solid #75419d;border-radius:12px;overflow:hidden;box-shadow:0 0 22px #8d32c225}
.hero-art{display:block;width:100%;aspect-ratio:728/262;object-fit:cover}
.hero--welcome .hero-art{height:clamp(212px,85vw,440px);aspect-ratio:auto;object-position:center 20%}
.hero-caption{padding:10px 14px 12px;border-top:1px solid #724a89;background:#161020}
.hero--parent .hero-caption{background:linear-gradient(90deg,#160d22 42%,#160d22a8),url(wall-art.webp) right 53%/205px auto no-repeat,#160d22}
.hero--son .hero-caption{background:linear-gradient(90deg,#140c20 45%,#140c2077),url(night-art.webp) right 28%/210px auto no-repeat,#140c20}
.hero-caption h1{margin:0;font-size:clamp(1.15rem,4.8vw,1.6rem);letter-spacing:-.03em;font-style:italic;text-transform:uppercase}
.hero-caption p{margin:2px 0 0;color:#d9cbe4;font-size:.88rem}
.intro{border-left:3px solid var(--purple);padding-left:12px}
.metric{padding:10px 9px;background:linear-gradient(140deg,#281a38,#110b1b);border-radius:8px}
.metric strong{font-size:clamp(1.45rem,6vw,1.85rem);font-variant-numeric:tabular-nums}
.metric span{display:block;line-height:1.25;overflow-wrap:anywhere}
.card{margin:9px 0;padding:13px 14px;background:linear-gradient(125deg,#23182d,#100c16 78%);border-color:#513865;border-left:3px solid #9b65bf}
.card h3{margin-top:8px;font-size:1.08rem}
.card>.row:first-child{margin-top:0;gap:6px}
.card .row:last-child button{flex:1 1 auto}
.icon{display:inline-block;width:1.15em;height:1.15em;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none}
.status{display:inline-flex;align-items:center;gap:6px;flex-direction:row-reverse;border:1px solid color-mix(in srgb,currentColor 60%,#15101f);border-radius:5px;padding:4px 7px;background:#100a16;color:#e2d9eb;line-height:1.1}
.status .icon{width:14px;height:14px}
button{min-height:48px;border-color:#8557a4;border-radius:8px;background:linear-gradient(150deg,#2c1a3c,#170d22);font-weight:750}
button>.icon{vertical-align:-.17em;margin-right:6px}
.primary{color:#fff6ff;background:linear-gradient(120deg,#613080,#3c1463);border-color:#c67bff;box-shadow:inset 0 0 0 1px #d88bff38,0 0 12px #b64cff2b}
button.approved{background:#10271c;border-color:#439a65}
button.redo{background:#2a1420;border-color:#a95369}
nav{min-height:var(--nav-height);padding:6px max(5px,env(safe-area-inset-right)) 7px max(5px,env(safe-area-inset-left));background:#110a1b;border-top:1px solid #684287;gap:4px}
nav button{min-width:0;display:grid;justify-items:center;align-content:center;gap:3px;padding:4px;border:1px solid transparent;background:none;font-size:.72rem}
nav button>.icon{width:22px;height:22px;margin:0}
nav button span{font:inherit;line-height:1.12;overflow-wrap:anywhere}
nav [aria-current=page]{border-color:#8956ab;background:linear-gradient(150deg,#3b2051,#1b1028);color:#f1d7ff;box-shadow:inset 0 -2px #b64cff;text-shadow:none}
.progress{margin:8px 0;padding:8px 10px;border:1px solid #412b53;border-radius:7px;background:#110b19;display:grid;grid-template-columns:1fr auto;gap:6px}
.progress strong{color:#e6d4f3;font-variant-numeric:tabular-nums}
progress{grid-column:1/-1;height:8px;margin:0;appearance:none;border:0;border-radius:99px;overflow:hidden;background:#342340}
progress::-webkit-progress-bar{background:#342340}
progress::-webkit-progress-value{background:repeating-linear-gradient(125deg,transparent 0 8px,#6f1eac33 9px 11px),linear-gradient(90deg,#9843ed,#f0a0ff);border-radius:99px}
progress::-moz-progress-bar{background:linear-gradient(90deg,#9843ed,#f0a0ff);border-radius:99px}
#notice:not(:empty){bottom:calc(var(--nav-height) + 5px)}

/* Household pairing and connection feedback */
.connection{margin:10px 0 0;padding:7px 10px;border-left:3px solid var(--purple);background:#171023;color:#e6d4f3;font-size:.81rem}
.pair-code{display:block;user-select:all;overflow-wrap:anywhere;padding:12px;margin:8px 0;
  background:#10091a;color:#f3dcff;border:1px solid #8956ab;border-radius:6px;font:700 1rem ui-monospace,monospace}
.members{padding:0;list-style:none}
.members li{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:8px 0;border-bottom:1px solid #513466}

.correction{margin:10px 0;padding:8px 10px;border-left:3px solid var(--redo);background:#301826;color:var(--ink);overflow-wrap:anywhere}
.correction p,.review-history p{margin:4px 0;white-space:pre-wrap;overflow-wrap:anywhere}
.lineup-heading{margin:16px 0 5px;color:var(--muted)}
.review-history summary{min-height:48px;display:list-item;align-content:center;cursor:pointer;color:#dfc3f1}
.review-history li{margin:8px 0;overflow-wrap:anywhere}
dialog{max-height:min(90dvh,calc(100dvh - 20px));overscroll-behavior:contain}
#background-diagnostics{white-space:pre-wrap;overflow-wrap:anywhere;font:inherit;font-size:.9rem;line-height:1.6}

/* Device appearance */
:root[data-theme=toxic]{--bg:#080e09;--panel:#16251a;--surface:#101b13;--edge:#46684c;--ink:#f2ffe9;--muted:#bacdb8;--violet:#baff79;--purple:#a6f84c;--approved:#73ed9b;--pending:#ffcf69;--redo:#ff8592;--halo:#263a1e}
:root[data-theme=blood]{--bg:#11090e;--panel:#2a1720;--surface:#1d1016;--edge:#75505c;--ink:#fff2f1;--muted:#ddbec4;--violet:#ffaaa8;--purple:#fc787c;--approved:#78e9a8;--pending:#ffd488;--redo:#ff8ba7;--halo:#44212c}
:root[data-theme=ice]{--bg:#071321;--panel:#142c42;--surface:#0c1d30;--edge:#426783;--ink:#f1fbff;--muted:#b7cfdf;--violet:#a1eeff;--purple:#59ddfb;--approved:#74edbd;--pending:#ffd17a;--redo:#ff91ab;--halo:#163951}
:root[data-theme=gold]{--bg:#0c0b09;--panel:#252019;--surface:#17140f;--edge:#716344;--ink:#fff7e7;--muted:#d0c3aa;--violet:#ebce95;--purple:#d3ad64;--approved:#89e4a9;--pending:#ffc86a;--redo:#ff91a4;--halo:#30281a}
:root[data-theme] body{background:radial-gradient(ellipse at 68% 0%,var(--halo),var(--bg) 66%) fixed}
:root[data-theme] :is(.hero,.card,.panel,.metric,.empty,button,input,select,textarea,fieldset,.top,.day,nav,dialog){border-color:var(--edge)}
:root[data-theme] :is(.hero,.card,.panel,.metric,.empty){background:linear-gradient(145deg,var(--panel),var(--surface) 78%);box-shadow:none}
:root[data-theme] :is(nav,input,select,textarea,#notice){background:var(--surface)}
:root[data-theme] button:not(.primary){background:var(--panel)}
:root[data-theme] button.primary{background:var(--violet);color:var(--bg);border-color:var(--violet)}
:root[data-theme] :is(#role,.status,.eyebrow){color:var(--violet)}
:root[data-theme] .status.approved{color:var(--approved)}
:root[data-theme] .status.pending{color:var(--pending)}
:root[data-theme] .status.redo,:root[data-theme] .status.missed{color:var(--redo)}
:root[data-theme] :is(.hero-caption,.correction,.connection,.review-history){background:var(--surface);border-color:var(--edge)}
:root[data-theme] :focus-visible{outline-color:var(--violet)}
:root[data-theme] .hero--welcome .hero-art{height:auto;aspect-ratio:1040/374}
.card-pages{touch-action:pan-y pinch-zoom}
.card-pages h3{margin-top:8px}
.card[data-compact] .short-detail{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.card-page-controls{display:flex;gap:5px;flex-wrap:wrap;margin-top:8px}
.card-page-controls button{min-width:44px;min-height:44px;padding:4px 8px;font-size:.72rem}
.card-page-controls button[aria-pressed=true]{outline:1px solid var(--violet);color:var(--violet)}
.points-list{margin:8px 0;padding-left:22px;overflow-wrap:anywhere}
.card-pages [data-card-panel]{min-height:34px}
@media(prefers-reduced-motion:no-preference){
  .card-pages [data-card-panel]:not([hidden]){animation:card-page-in 130ms ease-out}
  @keyframes card-page-in{from{opacity:.65;transform:translateX(4px)}to{opacity:1;transform:none}}
}
:root[data-theme] :is(.progress,.status,.pair-code){background:var(--surface);border-color:var(--edge)}
:root[data-theme] :is(.progress strong,.hero-caption p,.connection){color:var(--ink)}
:root[data-theme] .review-history summary{color:var(--violet)}
:root[data-theme] nav button:not([aria-current]){background:transparent;border-color:transparent}
:root[data-theme] nav [aria-current=page]{color:var(--violet);border-color:var(--edge);box-shadow:inset 0 -2px var(--purple)}
:root[data-theme] .primary{box-shadow:none}
:root[data-theme] .card.approved{border-left-color:var(--approved)}
:root[data-theme] .card.pending{border-left-color:var(--pending)}
:root[data-theme] .card.redo{border-left-color:var(--redo)}
:root[data-theme] progress,:root[data-theme] progress::-webkit-progress-bar{background:var(--edge)}
:root[data-theme] progress::-webkit-progress-value{background:linear-gradient(90deg,var(--purple),var(--violet))}
:root[data-theme] progress::-moz-progress-bar{background:linear-gradient(90deg,var(--purple),var(--violet))}
