:root{--field-black:#1F221C;--bone:#F5F4EF;--gold:#D4A24A;--gold-bright:#E8BC6B;--sage:#7E8B67;--steel:#C7BFAE;--line:#4A463B;--wood:#6d4b2d;--wood-mid:#4a321f;--wood-dark:#21170f;}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--field-black);color:var(--bone);font-family:'Inter',sans-serif}body{background-image:radial-gradient(circle at 15% 0%,rgba(212,162,74,.09),transparent 28%),radial-gradient(circle at 85% 20%,rgba(126,139,103,.08),transparent 25%)}button,a{font:inherit}#app{min-height:100vh}.shelf-shell{max-width:1480px;margin:auto;padding:26px clamp(16px,4vw,58px) 20px}.welcome{display:grid;grid-template-columns:1fr auto;gap:20px;align-items:end;border-bottom:1px solid var(--line);padding-bottom:30px;position:relative}.brand-mark{grid-column:1/-1;font-family:'Sora',sans-serif;font-weight:700;letter-spacing:.18em;font-size:.88rem;display:flex;gap:9px;align-items:center}.brand-dot{width:9px;height:9px;border-radius:50%;background:var(--gold);box-shadow:0 0 16px rgba(212,162,74,.55)}.eyebrow{font-family:'IBM Plex Mono',monospace;color:var(--gold-bright);font-size:.68rem;letter-spacing:.16em;font-weight:600}.welcome h1{font-family:'Sora',sans-serif;font-size:clamp(2.6rem,7vw,5.7rem);line-height:.92;margin:8px 0 10px;letter-spacing:-.055em}.welcome p{margin:0;color:var(--steel);font-size:clamp(1rem,2vw,1.25rem)}.settings-trigger{position:absolute;right:0;top:0;background:transparent;color:var(--steel);border:1px solid var(--line);border-radius:999px;padding:9px 13px;font-family:'IBM Plex Mono',monospace;font-size:.58rem;letter-spacing:.1em;cursor:pointer}.settings-trigger:hover{border-color:var(--gold);color:var(--gold)}.profile-chip{display:flex;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:rgba(245,244,239,.03)}.profile-chip div{padding:13px 17px;min-width:82px;border-left:1px solid var(--line)}.profile-chip div:first-child{border-left:0}.profile-chip span{font-family:'IBM Plex Mono',monospace;font-size:.55rem;color:var(--steel);display:block;letter-spacing:.12em}.profile-chip strong{font-family:'Sora',sans-serif;font-size:1.05rem}.shelf-section{padding:42px 0 30px}.section-heading{display:flex;justify-content:space-between;gap:24px;align-items:end;margin-bottom:22px}.section-heading h2{font-family:'Sora',sans-serif;font-size:clamp(1.55rem,3vw,2.4rem);margin:6px 0 0;letter-spacing:-.035em}.section-heading p{color:var(--steel);margin:0;max-width:440px;text-align:right}.explorer-room{position:relative;border:1px solid #66503a;border-radius:22px;padding:clamp(22px,4vw,54px) clamp(14px,3vw,34px) 34px;overflow:hidden;background:radial-gradient(ellipse at 50% 0%,rgba(232,188,107,.17),transparent 38%),linear-gradient(180deg,#191b17 0%,#12130f 72%,#0a0b09 100%);box-shadow:inset 0 0 90px rgba(0,0,0,.6),0 28px 70px rgba(0,0,0,.28)}.room-light{position:absolute;left:12%;right:12%;top:-120px;height:260px;background:radial-gradient(ellipse,rgba(255,222,160,.16),transparent 70%);pointer-events:none}.dust{position:absolute;inset:0;opacity:.25;pointer-events:none;background-image:radial-gradient(circle,#f7dfb2 0 1px,transparent 1.4px),radial-gradient(circle,#fff 0 .7px,transparent 1.2px);background-size:73px 61px,47px 53px;background-position:10px 20px,30px 5px;animation:dustFloat 15s linear infinite}.shelf-stack{position:relative;z-index:2}.shelf-row{position:relative;padding:0 10px 34px;margin-bottom:24px}.cartridge-row{display:flex;align-items:flex-end;justify-content:center;gap:clamp(10px,2vw,24px);min-height:245px;perspective:900px}.shelf-plank{position:absolute;left:-1%;right:-1%;bottom:15px;height:27px;border-radius:3px;background:linear-gradient(180deg,#8a6038 0%,#5b3c24 34%,#372318 100%);box-shadow:0 9px 0 #1b120d,0 15px 21px rgba(0,0,0,.55),inset 0 2px 1px rgba(255,227,174,.18)}.shelf-plank:after{content:"";position:absolute;inset:3px 0 0;background:repeating-linear-gradient(95deg,transparent 0 42px,rgba(255,255,255,.035) 43px 44px,transparent 45px 91px)}.cartridge{--w:178px;position:relative;width:var(--w);height:230px;flex:0 1 var(--w);display:block;text-decoration:none;color:var(--bone);transform-origin:50% 100%;transition:transform .25s cubic-bezier(.2,.8,.2,1),filter .25s,opacity .25s;filter:drop-shadow(0 13px 8px rgba(0,0,0,.42));cursor:default}.cartridge[href]{cursor:pointer}.cartridge-face{position:absolute;inset:0 0 0 14px;border-radius:8px 8px 4px 4px;overflow:hidden;border:1px solid rgba(245,244,239,.22);background:linear-gradient(155deg,#34352f,#1d1f1b 68%);box-shadow:inset 0 0 0 4px rgba(0,0,0,.2),inset 0 -16px 28px rgba(0,0,0,.25)}.cartridge-spine{position:absolute;left:0;top:9px;bottom:3px;width:22px;border-radius:5px 0 0 4px;background:linear-gradient(90deg,#171813,#393b34);border:1px solid rgba(245,244,239,.14);z-index:3;display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:8px 2px}.cartridge-spine span{writing-mode:vertical-rl;transform:rotate(180deg);font:600 .42rem 'IBM Plex Mono';letter-spacing:.14em;color:var(--adventure-accent)}.cartridge-spine i{font-style:normal;font-size:.8rem}.cartridge-brand{height:25px;background:var(--adventure-accent);color:#11130f;display:flex;align-items:center;padding:0 9px;font:700 .49rem 'IBM Plex Mono';letter-spacing:.09em}.cartridge-art{height:91px;position:relative;display:flex;align-items:center;justify-content:center;background:linear-gradient(145deg,color-mix(in srgb,var(--adventure-accent) 78%,#151713),#11130f 78%);overflow:hidden}.cartridge-art>span{font-size:3.4rem;z-index:2;filter:drop-shadow(0 7px 1px rgba(0,0,0,.3));image-rendering:pixelated}.pixel-stars{position:absolute;inset:0;background-image:radial-gradient(circle,#F5F4EF 0 1px,transparent 1.6px);background-size:27px 23px;opacity:.25}.cartridge-copy{padding:9px 10px}.cartridge-copy small{display:block;color:var(--adventure-accent);font:600 .43rem 'IBM Plex Mono';letter-spacing:.08em;text-transform:uppercase}.cartridge h3{font:700 .92rem/1.08 'Sora';margin:5px 0 4px;letter-spacing:-.03em}.difficulty{color:var(--gold-bright);font-size:.6rem;letter-spacing:.05em}.motion-icons{display:flex;gap:4px;flex-wrap:wrap;margin-top:7px}.motion-icons b{font:500 .39rem 'IBM Plex Mono';border:1px solid rgba(245,244,239,.14);border-radius:999px;padding:3px 5px;color:var(--steel)}.cartridge-status{margin-top:8px;padding-top:7px;border-top:1px solid rgba(245,244,239,.1);font:600 .42rem 'IBM Plex Mono';letter-spacing:.1em;color:var(--adventure-accent)}.cartridge[href]:hover,.cartridge[href]:focus-visible{transform:translateY(-15px) rotateY(-4deg) rotateZ(-.7deg) scale(1.035);filter:drop-shadow(0 25px 18px rgba(0,0,0,.52));outline:none}.cartridge.launching{position:relative;z-index:20;transform:translateY(-45px) rotateY(-10deg) scale(1.28)!important;filter:drop-shadow(0 40px 35px rgba(0,0,0,.7))}.status-soon,.status-docking{opacity:.52}.status-docking .cartridge-face{border-style:dashed}.dashboard-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:18px;padding:8px 0 44px}.summary-card,.passport-card{background:rgba(245,244,239,.035);border:1px solid var(--line);border-radius:16px;padding:24px}.summary-card h3,.passport-card h3{font-family:'Sora',sans-serif;margin:8px 0 20px;font-size:1.25rem}.movement-stats{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}.movement-stats div{background:rgba(0,0,0,.15);padding:13px 8px;border-radius:9px}.movement-stats strong{display:block;font-family:'Sora',sans-serif;font-size:1.05rem}.movement-stats span{color:var(--steel);font-size:.58rem}.quiet-note{font-size:.66rem;color:var(--steel);margin:16px 0 0}.passport-stamps{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.stamp{aspect-ratio:1;border:1px dashed #6d685b;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;opacity:.45}.stamp.earned{opacity:1;border:2px solid var(--gold);box-shadow:inset 0 0 0 4px rgba(212,162,74,.12)}.stamp span{font-size:1.35rem}.stamp small{font-family:'IBM Plex Mono',monospace;font-size:.42rem;margin-top:4px}.lib-foot{display:flex;justify-content:space-between;border-top:1px solid var(--line);padding:18px 0;color:var(--steel);font-family:'IBM Plex Mono',monospace;font-size:.58rem;letter-spacing:.12em}.game-host{min-height:100vh}.back-to-lib{position:fixed;top:10px;left:10px;z-index:400;font-family:'IBM Plex Mono',monospace;font-size:.68rem;letter-spacing:.09em;background:rgba(31,34,28,.86);border:1px solid rgba(245,244,239,.25);color:var(--bone);padding:8px 13px;border-radius:999px;cursor:pointer;backdrop-filter:blur(6px)}.settings-backdrop{position:fixed;inset:0;z-index:1000;background:rgba(7,8,6,.78);backdrop-filter:blur(9px);display:grid;place-items:center;padding:18px}.settings-panel{position:relative;width:min(640px,100%);max-height:90vh;overflow:auto;border:1px solid #6c563e;border-radius:20px;padding:28px;background:linear-gradient(160deg,#282a24,#151713);box-shadow:0 34px 90px rgba(0,0,0,.65)}.settings-panel h2{font:700 clamp(1.7rem,5vw,2.5rem) 'Sora';margin:8px 0}.settings-intro{color:var(--steel);line-height:1.55}.settings-close{position:absolute;right:16px;top:12px;background:transparent;border:0;color:var(--bone);font-size:2rem;cursor:pointer}.display-options{display:grid;gap:9px;margin:22px 0}.display-option{text-align:left;color:var(--bone);background:rgba(245,244,239,.035);border:1px solid var(--line);border-radius:12px;padding:14px 15px;cursor:pointer}.display-option span{display:block;font:700 .8rem 'IBM Plex Mono';letter-spacing:.08em}.display-option small{display:block;color:var(--steel);margin-top:5px;line-height:1.35}.display-option.selected{border-color:var(--gold);box-shadow:inset 4px 0 0 var(--gold);background:rgba(212,162,74,.08)}.cast-note{border-top:1px solid var(--line);padding-top:16px;color:var(--steel);font-size:.82rem;line-height:1.5}.cast-note strong{color:var(--gold)}body.adventure-opening .shelf-shell{opacity:.25;transition:opacity .4s}
@keyframes dustFloat{from{background-position:10px 20px,30px 5px}to{background-position:85px 81px,-17px 58px}}
@media(max-width:920px){.cartridge{--w:160px;height:214px}.cartridge-row{min-height:230px}.dashboard-grid{grid-template-columns:1fr}.section-heading{display:block}.section-heading p{text-align:left;margin-top:8px}}
@media(max-width:680px){.shelf-shell{padding:18px 12px}.welcome{grid-template-columns:1fr}.profile-chip{width:100%}.profile-chip div{flex:1}.explorer-room{padding:28px 7px 24px;border-radius:16px}.shelf-row{padding-left:0;padding-right:0}.cartridge-row{gap:8px;min-height:212px}.cartridge{--w:min(43vw,154px);height:200px}.cartridge-face{left:11px}.cartridge-brand{font-size:.4rem}.cartridge-art{height:77px}.cartridge-art>span{font-size:2.7rem}.cartridge h3{font-size:.79rem}.movement-stats{grid-template-columns:repeat(3,1fr)}.lib-foot{display:block;line-height:1.8}.settings-trigger{top:1px}.welcome{padding-top:34px}}
@media(max-width:380px){.cartridge{--w:43vw;height:188px}.cartridge-row{min-height:199px}.cartridge-copy{padding:7px}.motion-icons b{font-size:.33rem}.movement-stats{grid-template-columns:repeat(2,1fr)}.profile-chip div{padding:10px 7px}}
@media(min-width:1200px){.cartridge{--w:196px;height:250px}.cartridge-row{min-height:265px}.cartridge-art{height:104px}.cartridge-art>span{font-size:4rem}.cartridge h3{font-size:1rem}}
@media(orientation:landscape) and (max-height:620px){.welcome{grid-template-columns:1fr auto;padding-bottom:18px}.welcome h1{font-size:3rem}.shelf-section{padding-top:25px}.explorer-room{padding-top:24px}.cartridge{--w:145px;height:190px}.cartridge-row{min-height:200px}.dashboard-grid{display:none}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}

/* v3 usability fixes */
.settings-trigger{cursor:pointer;touch-action:manipulation;z-index:50;pointer-events:auto}
.settings-backdrop{pointer-events:auto}
.settings-panel,.settings-panel *{pointer-events:auto}
.cartridge-art img{position:relative;z-index:2;width:72%;height:72%;object-fit:contain;image-rendering:pixelated;filter:drop-shadow(0 7px 1px rgba(0,0,0,.3))}
.cartridge-spine i img{width:16px;height:16px;object-fit:contain;image-rendering:pixelated}
.stamp img{width:54%;height:54%;object-fit:contain;image-rendering:pixelated;border-radius:4px}
body.shelf-tv .shelf-shell{max-width:1920px;padding-left:4vw;padding-right:4vw}
body.shelf-tv .welcome h1{font-size:clamp(4rem,7vw,7rem)}
body.shelf-tv .cartridge{--w:220px;height:280px}
body.shelf-tv .cartridge-row{min-height:300px}
body.shelf-tv .cartridge-art{height:120px}
body.shelf-tv .dashboard-grid{font-size:1.15rem}


/* Clean-route Adventure host. The legacy engine runs inside a same-origin frame
   so the public URL stays /flyingfish, /raptor, /desertdash, or /dragon. */
.adventure-frame-shell{position:fixed;inset:0;background:#090b09;z-index:100;overflow:hidden}
.adventure-frame{display:block;width:100%;height:100%;border:0;background:#090b09}
.adventure-frame-shell .back-to-lib{position:fixed;left:max(12px,env(safe-area-inset-left));top:max(12px,env(safe-area-inset-top));z-index:101;border:1px solid rgba(245,244,239,.28);background:rgba(31,34,28,.9);color:#F5F4EF;border-radius:999px;padding:11px 15px;font:600 .7rem 'IBM Plex Mono',monospace;letter-spacing:.08em;backdrop-filter:blur(10px);cursor:pointer}
@media (orientation:landscape){body[data-display-mode="tv"] .adventure-frame-shell .back-to-lib{font-size:.85rem;padding:13px 18px}}
