:root{font-family:Tahoma,Arial,sans-serif;color:#171717;background:#1376e4;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}html,body{height:100%;margin:0}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #fff100;outline-offset:3px}.skip-link{position:fixed;z-index:10000;left:16px;top:-70px;background:#fff;color:#111;padding:12px 20px}.skip-link:focus{top:16px}.desktop{position:relative;isolation:isolate;overflow:hidden;height:100svh;min-height:520px;background:#237dff}.sky{position:absolute;inset:0;background-image:url('./assets/01_ceu_background.webp');background-size:cover;background-position:center;filter:saturate(1.1)}.sky-tint{position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at 48% 58%,transparent 25%,rgba(17,48,156,.04) 57%,rgba(2,28,117,.20) 100%)}.scanlines{position:absolute;z-index:10;inset:0;pointer-events:none;opacity:.075;background:repeating-linear-gradient(0deg,transparent 0 3px,rgba(12,36,79,.8) 3px 4px);mix-blend-mode:multiply}.scene-viewport{position:absolute;inset:0;overflow:hidden;pointer-events:none}.scene{position:absolute;width:1672px;height:941px;left:50%;top:50%;transform:translate(-50%,-50%) scale(var(--scene-scale,1));transform-origin:center center;pointer-events:none;will-change:transform}.scene-item{position:absolute;left:calc(var(--x)*1px);top:calc(var(--y)*1px);width:calc(var(--w)*1px);height:calc(var(--h)*1px);display:block;object-fit:fill;user-select:none;pointer-events:none;will-change:transform;transform:translate3d(calc(var(--mouse-x,0px)*var(--depth)),calc(var(--mouse-y,0px)*var(--depth)),0)}.planet{z-index:1;filter:drop-shadow(0 -10px 45px rgba(0,225,255,.28));animation:planet-in 1.2s cubic-bezier(.2,.8,.2,1) both}.extras{z-index:3;animation:arrive 1.1s .25s both}.surfer{z-index:4;filter:drop-shadow(0 12px 18px rgba(21,63,106,.18));animation:arrive 1.2s .15s both}.name-art{z-index:6;animation:title-in 1s both}.hotspot{border:0;padding:0;margin:0;background:transparent;z-index:7;cursor:pointer;pointer-events:auto;transition:filter .25s;animation:arrive 1s .4s both}.hotspot img{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none;transition:transform .2s ease,filter .2s ease}.hotspot:hover img,.hotspot:focus-visible img{transform:translateY(-7px) scale(1.045);filter:drop-shadow(0 0 13px #fff) drop-shadow(0 0 15px #18f6ff)}.hotspot:active img{transform:translateY(1px) scale(.98)}.hotspot-tip{position:absolute;left:50%;bottom:-24px;transform:translate(-50%,-5px);opacity:0;white-space:nowrap;background:#fff6ce;border:2px solid #111;color:#111;padding:6px 9px;font-family:'Courier New',monospace;font-weight:900;font-size:15px;box-shadow:4px 4px 0 #111;transition:opacity .2s,transform .2s;pointer-events:none}.hotspot:hover .hotspot-tip,.hotspot:focus-visible .hotspot-tip{opacity:1;transform:translate(-50%,0)}.hotspot-tip span{color:#1761d1}.corner{position:absolute;z-index:11;font:700 11px/1.4 'Courier New',monospace;letter-spacing:.045em;color:#fff;text-shadow:1px 2px 0 rgba(3,46,90,.38)}.top-left{left:clamp(18px,3.8vw,70px);top:clamp(15px,3vh,40px)}.top-right{right:clamp(18px,3.8vw,70px);top:clamp(15px,3vh,40px)}.bottom-left{left:clamp(18px,3.8vw,70px);bottom:24px}.bottom-right{right:clamp(18px,3.8vw,70px);bottom:17px}.corner-label{padding:3px 7px;background:#0054cf;border:1px solid #bdf8ff;box-shadow:2px 2px 0 #073b97}.corner-dot{display:inline-block;border-radius:50%;height:7px;width:7px;background:#ff5d45;margin-left:12px;box-shadow:0 0 8px #fff}.signal{display:inline-block;border-radius:50%;height:8px;width:8px;background:#9bff3c;box-shadow:0 0 0 2px #fff,0 0 10px #9bff3c;margin-right:6px}.blinking{animation:blink 1s steps(1) infinite}.shortcuts{display:flex;gap:5px}.small-shortcut{appearance:none;cursor:pointer;border:1px solid rgba(255,255,255,.65);background:rgba(4,58,142,.65);color:#fff;font:700 11px/1 'Courier New',monospace;padding:8px 9px;backdrop-filter:blur(4px);box-shadow:2px 2px 0 rgba(8,44,113,.3)}.small-shortcut:hover,.small-shortcut:focus-visible{background:#fff;color:#083f8c;text-shadow:none}.small-shortcut span{margin-right:3px}.help-hint{position:absolute;z-index:10;bottom:6.4%;left:50%;transform:translateX(-50%);color:#fff;font:700 11px/1.5 'Courier New',monospace;text-shadow:1px 2px 2px #1967ad;letter-spacing:2px;white-space:nowrap;opacity:.9;animation:hint 4s ease-in-out infinite}.pixel-spark{color:#fff8a0;margin:0 8px}
.window-layer{pointer-events:none;position:fixed;inset:0;z-index:100;overflow:hidden}.os-window{pointer-events:auto;position:absolute;top:50%;left:50%;width:min(90vw,660px);max-height:min(90svh,760px);display:flex;flex-direction:column;transform:translate(-50%,-50%);color:#101010;background:#c0c0c0;border:2px solid;border-color:#fff #424242 #424242 #fff;box-shadow:1px 1px 0 #111,3px 3px 0 #111,15px 24px 42px rgba(4,13,63,.38);font:14px/1.5 Tahoma,'MS Sans Serif',sans-serif;animation:window-in .18s ease-out;min-width:275px}.os-window[data-kind=paint]{width:min(92vw,850px)}.os-window[data-kind=phone]{width:min(92vw,420px)}.os-window[data-kind=warning]{width:min(92vw,520px)}.os-titlebar{height:33px;background:linear-gradient(90deg,#06177e 0%,#0b56bc 70%,#55a3ea 100%);color:#fff;display:flex;align-items:center;justify-content:space-between;padding:3px 4px 3px 9px;gap:10px;cursor:grab;flex-shrink:0;touch-action:none;user-select:none}.os-titlebar:active{cursor:grabbing}.os-title-group{display:flex;align-items:center;gap:7px;overflow:hidden}.os-titlebar h2{font:700 13px/1 Tahoma,Arial,sans-serif;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.window-icon{font-size:17px;color:#ffde59}.os-title-actions{display:flex;gap:3px}.title-control{display:grid;place-items:center;padding:0;width:21px;height:20px;background:#c0c0c0;border:2px solid;border-color:#fff #333 #333 #fff;color:#171717;font:700 16px/1 monospace;cursor:pointer}.title-control:hover{background:#e3e3e3}.title-control:active,.win-btn:active{border-color:#333 #fff #fff #333}.os-window-body{padding:12px 14px 16px;overflow:auto;overscroll-behavior:contain;flex:1}.os-status{height:24px;flex-shrink:0;border-top:1px solid #888;box-shadow:inset 1px 1px 0 #fff;display:flex;align-items:center;justify-content:space-between;padding:0 8px;font-size:11px;color:#333}.win-btn{cursor:pointer;color:#111;background:#c0c0c0;min-width:86px;padding:4px 12px;border:2px solid;border-color:#fff #444 #444 #fff;box-shadow:1px 1px 0 #000;font:13px/1.3 Tahoma,sans-serif}.win-btn:hover{background:#dbdbdb}.win-btn.primary{font-weight:700}.window-menu{display:flex;gap:15px;border-bottom:1px solid #888;padding:0 0 8px;margin-bottom:8px;font-size:13px}.window-menu u{text-underline-offset:2px}.paint-toolbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;padding:9px 0}.tools,.swatches{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.tool-button{height:34px;min-width:34px;display:grid;place-items:center;border:2px solid;border-color:#fff #555 #555 #fff;background:#c0c0c0;cursor:pointer;font-size:17px}.tool-button[aria-pressed=true]{border-color:#555 #fff #fff #555;background:#e9e9e9}.swatch{border:2px solid #b9b9b9;box-shadow:1px 1px 0 #444;width:21px;height:21px;cursor:pointer;background:var(--swatch);padding:0}.swatch[aria-pressed=true]{outline:2px solid #171717;outline-offset:1px}.paint-board{background:#fff;border:2px solid;border-color:#777 #fff #fff #777;overflow:hidden;touch-action:none}.paint-board canvas{display:block;width:100%;height:auto;touch-action:none;cursor:crosshair}.paint-bottom{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;padding-top:12px}.paint-bottom small{color:#444}.warning-intro{display:flex;gap:17px;align-items:flex-start;padding:20px 7px 28px}.warning-emoji{font-size:54px;line-height:1}.warning-copy{font-size:16px;line-height:1.55}.warning-copy strong{display:block;margin-bottom:7px}.warning-buttons{display:flex;justify-content:flex-end;gap:10px;padding:0 4px 7px}.about-head{font:700 14px 'Courier New',monospace;color:#242424}.about-card{background:#fffceb;border:2px inset #eee;max-width:100%;padding:18px;font-size:14px}.about-card h3{font-size:20px;margin:0 0 7px}.about-card p{margin:0 0 13px}.about-links{display:flex;gap:9px;flex-wrap:wrap;padding-top:10px}.about-links a,.phone-links a{color:#0639a0;text-decoration:underline;font-weight:700}.about-card code{background:#dce4f5;padding:2px 4px}.phone-frame{width:min(280px,100%);margin:10px auto 12px;border:12px solid #383b42;border-bottom-width:19px;border-radius:45px 45px 57px 57px;padding:24px 12px 12px;background:linear-gradient(110deg,#838891,#30353b 70%);box-shadow:inset 3px 3px 2px #d5d9dd,6px 10px 15px #818181}.phone-speaker{background:#232629;border:2px inset #616161;border-radius:15px;width:54px;height:8px;margin:0 auto 17px}.phone-screen{border:5px solid #687669;border-radius:8px;background:#b7d59a;min-height:170px;padding:13px 10px;color:#142f1e;font-family:'Courier New',monospace;box-shadow:inset 2px 2px 5px #536d46}.phone-status{display:flex;justify-content:space-between;border-bottom:2px solid #315d3e;padding-bottom:5px;font-weight:700}.phone-heading{font-size:13px;font-weight:700;margin-top:12px}.phone-number{font-size:21px;font-weight:900;margin:3px 0 8px}.phone-screen p{font-size:12px;margin:5px 0}.phone-keypad{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:15px}.phone-keypad button{border:2px solid #24292d;border-radius:10px;color:#1f2428;font:bold 17px/1.2 monospace;background:#d3d5d6;padding:7px 0;box-shadow:inset 1px 1px 1px #fff;cursor:pointer}.phone-keypad button:active{transform:translateY(2px);box-shadow:none}.phone-links{display:flex;justify-content:center;gap:18px;flex-wrap:wrap;padding-bottom:4px}.contact-note{text-align:center;color:#3e3e3e;font-size:12px}.minimized-chip{pointer-events:auto;position:relative;background:#c0c0c0;border:2px outset #fff;padding:5px 10px;color:#111;cursor:pointer}.window-taskbar{pointer-events:none;position:fixed;bottom:55px;left:50%;transform:translateX(-50%);display:flex;gap:5px;z-index:150}
@keyframes window-in{from{opacity:0;scale:.96}to{opacity:1;scale:1}}@keyframes blink{50%{opacity:0}}@keyframes hint{0%,100%{opacity:.82}50%{opacity:1}}@keyframes arrive{from{opacity:0;translate:0 17px}to{opacity:1;translate:0 0}}@keyframes title-in{from{opacity:0;translate:0 -14px}to{opacity:1;translate:0 0}}@keyframes planet-in{from{opacity:0;translate:0 40px}to{opacity:1;translate:0 0}}
@media(max-width:850px){.top-right{font-size:9px}.corner-label{font-size:9px}.bottom-left{display:none}.help-hint{bottom:13%;font-size:9px}.shortcuts{bottom:17px;right:50%;transform:translateX(50%)}.small-shortcut{padding:9px 10px}.scene{top:49%}.os-window{max-height:83svh}.window-taskbar{bottom:60px}}@media(max-width:480px){.top-left{top:12px;left:10px;font-size:9px}.top-right{right:10px;top:35px;font-size:9px}.help-hint{bottom:17%;font-size:8px;letter-spacing:0}.shortcuts{gap:3px}.small-shortcut{font-size:10px}.os-window-body{padding:10px}.paint-toolbar{gap:7px}.swatch{height:17px;width:17px}.os-window{min-width:260px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:0s!important;scroll-behavior:auto!important}}

.os-window[hidden]{display:none!important}

/* Art direction v2: all eight layers were individually generated, never cut from the hero. */
.sky {background-size:cover;background-position:center center;filter:none;}
.sky-tint {background:radial-gradient(ellipse at 50% 60%,transparent 40%,rgba(10,50,138,.08) 80%,rgba(5,40,132,.16) 100%);}
.planet {filter:drop-shadow(0 -6px 30px rgba(29,217,255,.34));}
.extras {filter:drop-shadow(0 0 6px rgba(165,247,255,.25));}
.surfer {filter:drop-shadow(0 12px 20px rgba(11,56,115,.21));}
.name-art {filter:drop-shadow(0 0 2px rgba(255,255,255,.32));}
.paint-hotspot {z-index:8;}
.warning-hotspot {z-index:8;}
.phone-hotspot {z-index:9;}
.hotspot{touch-action:manipulation;}
.hotspot:focus-visible {outline:3px dashed #ffee50;outline-offset:9px;border-radius:16px;}
@media (max-width: 850px){.help-hint{bottom:11%;}.scene{top:50%;}}
@media (max-width: 600px){
  .scene{top:47%;}
  .help-hint{bottom:16%;background:rgba(4,45,124,.52);padding:5px 7px;letter-spacing:.035em;}
  .corner-label{background:#0756bd;}
  .paint-hotspot{--x:506!important;--y:340!important;--w:225!important;--h:169!important;}
  .warning-hotspot{--x:1008!important;--y:353!important;--w:288!important;--h:216!important;}
  .phone-hotspot{--x:1060!important;--y:615!important;--w:90!important;--h:135!important;}
}

@media(max-width:600px){.scene{top:clamp(244px,34svh,300px)!important}}
@media (max-width:600px){.planet{--y:835!important}}

/* -------------------------------------------------------------------------
   Webcore Alive: real spherical atlas, DAISY-like signal interference, DoF.
   Artwork remains in its own image layers and clickable sprites stay crisp.
   ------------------------------------------------------------------------- */
.atmosphere-glow{position:absolute;inset:0;z-index:0;pointer-events:none;background:radial-gradient(ellipse 500px 350px at var(--spot-x,50%) var(--spot-y,48%),rgba(255,255,255,.12),transparent 90%);mix-blend-mode:screen;transition:opacity .4s}
.planet{isolation:isolate;overflow:visible;filter:drop-shadow(0 0 28px rgba(31,240,255,.40)) drop-shadow(0 -6px 36px rgba(14,115,255,.17));}
.planet-fallback,.planet-globe,.planet-atmosphere{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:contain;pointer-events:none}
.planet-fallback{opacity:1;transition:opacity .9s ease}
.planet-globe{opacity:0;transition:opacity 1.15s ease;}
.planet-rendered .planet-globe{opacity:1}
.planet-rendered .planet-fallback{opacity:0}
.planet-atmosphere{border-radius:50%;box-shadow:inset 0 0 52px rgba(9,210,255,.15),0 0 48px rgba(19,235,255,.16);opacity:.76;animation:planet-halo 8s ease-in-out infinite}
@keyframes planet-halo{0%,100%{opacity:.63}50%{opacity:.94}}
/* Each depth plane has a distinct focal softness; hovered clickable layers pop into focus. */
.extras{filter:blur(.55px) drop-shadow(0 0 6px rgba(165,247,255,.25));transition:filter .45s ease,opacity .45s ease}
.planet{transition:filter .5s ease,opacity .5s ease}
.surfer{transition:filter .45s ease,opacity .45s ease}
.name-art{transition:filter .45s ease}
.desktop.depth-active .planet{filter:blur(2.7px) drop-shadow(0 0 32px rgba(0,227,255,.35));}
.desktop.depth-active .extras{filter:blur(1.7px) brightness(.97);}
.desktop.depth-active .surfer{filter:blur(.85px) drop-shadow(0 12px 18px rgba(0,55,106,.2));}
.desktop.window-depth-focus .scene-viewport{filter:blur(3.1px) saturate(.90) brightness(.91);transition:filter .3s}
.scene-viewport{transition:filter .3s}
.desktop.window-depth-focus .sky{filter:blur(2px)}
/* Light spill only behind the button art; nothing overlays the window itself. */
.hotspot{isolation:isolate;overflow:visible;}
.hotspot::before{content:"";position:absolute;z-index:0;inset:18% 10%;border-radius:48%;background:radial-gradient(ellipse,rgba(255,255,232,.6) 4%,rgba(74,255,240,.48) 30%,rgba(4,103,255,.05) 75%,transparent 82%);filter:blur(19px);opacity:.43;pointer-events:none;animation:beacon-glow 3.2s ease-in-out infinite}
.hotspot img{position:relative;z-index:1;animation:interactive-float 4.1s ease-in-out infinite;filter:drop-shadow(0 0 5px rgba(216,250,255,.58));}
.paint-hotspot img{animation-delay:-.2s}
.warning-hotspot img{animation-delay:-1.4s}
.phone-hotspot img{animation-delay:-2.2s}
.paint-hotspot::before{animation-delay:-.4s}
.warning-hotspot::before{animation-delay:-1.6s}
.phone-hotspot::before{animation-delay:-2.8s}
.hotspot:hover::before,.hotspot:focus-visible::before{opacity:1;filter:blur(23px);animation-duration:1.15s}
.hotspot:hover img,.hotspot:focus-visible img{transform:translateY(-9px) scale(1.095);filter:drop-shadow(0 0 12px #fff) drop-shadow(0 0 19px #1dfcfd) drop-shadow(0 0 27px rgba(0,80,255,.48))}
.hotspot:active img{transform:translateY(2px) scale(.965)}
.hotspot-tip{z-index:4;box-shadow:4px 4px 0 #111,0 0 14px #fff;}
@keyframes interactive-float{0%,100%{translate:0 0}50%{translate:0 -8px}}
@keyframes beacon-glow{0%,100%{opacity:.32;transform:scale(.91)}50%{opacity:.70;transform:scale(1.14)}}
/* 120ms occasional packet-loss artifacts are drawn to a transparent canvas. */
.glitch-canvas{position:absolute;inset:0;width:100%;height:100%;z-index:9;pointer-events:none;contain:strict}
.glitch-noise{position:absolute;z-index:9;inset:0;pointer-events:none;opacity:0;background:repeating-linear-gradient(180deg,transparent 0 6px,rgba(255,29,83,.16) 6px 7px,transparent 7px 13px,rgba(48,255,242,.14) 13px 14px);mix-blend-mode:screen}
.desktop.glitch-active .glitch-noise{animation:packet-tear .14s steps(2,end) 1}
@keyframes packet-tear{0%{opacity:0;transform:translateY(0)}30%{opacity:.19;transform:translateY(-7px)}70%{opacity:.16;transform:translateY(3px)}100%{opacity:0;transform:translateY(0)}}
/* Feature fallback / accessibility. Avoid any idle motion for reduced-motion users. */
@media (prefers-reduced-motion:reduce){
  .planet-atmosphere,.hotspot img,.hotspot::before{animation:none!important}
  .glitch-canvas,.glitch-noise{display:none!important}
  .hotspot::before{opacity:.48}
}

/* Mobile framing: globe is secondary to the character and interactive windows. */
@media (max-width:600px){.planet{--y:970!important}}

/* -------------------------------------------
   Surf Mode — layered speed wake + mesh puppet
   ------------------------------------------- */
.surfer{isolation:isolate;filter:drop-shadow(0 12px 17px rgba(2,45,102,.24))}
.surfer-motion{position:absolute;inset:0;transform-origin:51% 74%;will-change:transform}
.surfer-fallback,.surfer-puppet{display:block;position:absolute;inset:0;width:100%;height:100%;object-fit:fill;pointer-events:none}
.surfer-puppet{opacity:0}
.surfer.puppet-ready .surfer-puppet{opacity:1}
.surfer.puppet-ready .surfer-fallback{opacity:0}
.surf-trail{position:absolute;left:0;top:0;width:1672px;height:941px;display:block;z-index:3;pointer-events:none;mix-blend-mode:screen;opacity:.96;transform:translate3d(calc(var(--mouse-x,0px)*.32),calc(var(--mouse-y,0px)*.32),0);filter:drop-shadow(0 0 5px rgba(78,239,255,.28));}
.bottom-controls{display:flex;align-items:center;gap:13px}
.turbo-surf{position:relative;border:2px outset #d9fdff;cursor:pointer;background:linear-gradient(180deg,#0d4dc1,#072e91);color:#fafffa;font:900 12px/1.2 'Courier New',monospace;letter-spacing:.1em;padding:9px 13px;box-shadow:3px 3px 0 rgba(0,37,105,.36),0 0 15px rgba(28,221,252,.38);text-shadow:0 0 8px rgba(255,255,255,.5);transition:filter .18s,scale .18s}
.turbo-surf:hover,.turbo-surf:focus-visible{filter:brightness(1.35) drop-shadow(0 0 11px #8bfbff);scale:1.035}
.turbo-surf:active{scale:.96;border-style:inset}
.turbo-surf.is-turbo{color:#fffaa3;box-shadow:0 0 25px #a4fdff,0 0 36px rgba(2,79,234,.42)}
@media(max-width:850px){.bottom-controls{bottom:64px;left:14px}.bottom-controls>span{display:none}.turbo-surf{font-size:10px;padding:8px 9px}}
@media(max-width:600px){.bottom-controls{bottom:clamp(70px,11vh,105px);left:12px}.turbo-surf{font-size:10px}}
@media(prefers-reduced-motion:reduce){.surf-trail{display:none!important}.surfer-puppet{display:none!important}.surfer-fallback{opacity:1!important}.surfer-motion{transform:none!important}.turbo-surf{transition:none!important}}

/* Compressed neon afterimages appear only during a velocity burst. */
.surfer-echo{position:absolute;inset:0;display:block;width:100%;height:100%;pointer-events:none;object-fit:fill;z-index:0;opacity:0;transform-origin:49% 76%;will-change:opacity,transform}
.surfer-motion{z-index:1}
.surfer.is-boosting .echo-first{animation:surfer-afterimage .28s ease-out 4;filter:brightness(1.4) sepia(.36) hue-rotate(140deg) saturate(1.7) blur(1.3px)}
.surfer.is-boosting .echo-second{animation:surfer-afterimage-alt .31s ease-out 3;filter:brightness(1.3) hue-rotate(170deg) saturate(1.8) blur(2px)}
@keyframes surfer-afterimage{0%{opacity:.26;transform:translate(-28px,-13px) scale(.99)}100%{opacity:0;transform:translate(-72px,-33px) scale(.98)}}
@keyframes surfer-afterimage-alt{0%{opacity:.15;transform:translate(-16px,-7px) scale(1)}100%{opacity:0;transform:translate(-46px,-27px) scale(.97)}}
@media(prefers-reduced-motion:reduce){.surfer-echo,.surfer.is-boosting .surfer-echo{display:none!important}}
/* Puppet state is owned by the inner motion container, not the outer layer. */
.surfer-motion.puppet-ready .surfer-puppet{opacity:1}
.surfer-motion.puppet-ready .surfer-fallback{opacity:0}

.turbo-surf:disabled{opacity:.65;cursor:not-allowed;filter:grayscale(.65)}


/* Warp Drive: cinematic space-time fold above the artwork but below desktop UI. */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.warp-canvas,.warp-lens{position:absolute;inset:0;pointer-events:none;width:100%;height:100%;z-index:8;opacity:0;transition:opacity .32s ease;}
.warp-canvas.is-visible{opacity:1}
.warp-lens{z-index:7;mix-blend-mode:screen;background:radial-gradient(ellipse at 50% 53%,transparent 0 12%,rgba(164,237,255,.12) 26%,rgba(6,46,192,.17) 55%,rgba(1,3,45,.32) 91%);opacity:var(--warp-power,0);transition:none}
.desktop.warp-active .scene-viewport{will-change:transform,filter}
.desktop.warp-active .scene-viewport{transform:scale(var(--warp-scale,1));}
.desktop.warp-charging .scene-viewport{filter:saturate(.78) brightness(.94) blur(.5px)}
.desktop.warp-jumping .scene-viewport{filter:contrast(1.08) saturate(1.20) blur(calc(var(--warp-power,0)*.65px));}
.desktop.warp-recovering .scene-viewport{filter:none;}
.desktop.warp-active .hotspot-tip,.desktop.warp-active .hotspot-corners,.desktop.warp-active .help-hint{visibility:hidden;}
/* Canvas fallback keeps the actual hero/puppet node above the Warp overlay.
   Its scene anchor follows the regular responsive layout, without Warp zoom. */
.desktop.warp-active .warp-foreground{z-index:9;transform:none;filter:none;will-change:auto;}
.desktop.warp-active .warp-foreground .surfer{filter:none;}
.desktop.warp-jumping .sky{filter:saturate(1.28) brightness(.78);transform:scale(1.08);transition:transform 2.8s ease,filter .55s ease}
.desktop.warp-active .atmosphere-glow{opacity:.95}
.warp-hud{position:absolute;pointer-events:none;z-index:11;top:72px;right:clamp(18px,3.8vw,70px);min-width:250px;opacity:0;transform:translateY(-10px) scale(.97);transition:opacity .2s ease,transform .2s ease;font:800 11px/1.4 'Courier New',monospace;letter-spacing:.14em;color:#fff;text-shadow:0 1px 6px #1a62a7,0 0 16px #54deff;text-align:center}
.warp-hud>span{display:block}
.warp-hud>span:first-child{font-size:17px;color:#fcffbd;letter-spacing:.25em}
.warp-meter{margin:8px auto 0;border:1px solid #e8f9ff;height:6px;width:100%;max-width:250px;background:rgba(1,20,79,.38);box-shadow:0 0 10px #91f9ff}
.warp-meter>span{display:block;width:calc(var(--warp-power,0)*100%);height:100%;background:linear-gradient(90deg,#43e3ff,#fffbc3,#fff);box-shadow:0 0 13px #e0ffff}
.desktop.warp-active .warp-hud{opacity:1;transform:translateY(0) scale(1)}
.turbo-surf.is-turbo{animation:warp-button-light .38s alternate infinite}
@keyframes warp-button-light{from{box-shadow:0 0 15px #76deff}to{box-shadow:0 0 27px #fff,0 0 50px #2adfff}}
@media(max-width:650px){.warp-hud{top:auto;bottom:22%;left:50%;right:auto;translate:-50% 0;min-width:min(245px,75vw);font-size:9px}.warp-hud>span:first-child{font-size:13px}}
@media(prefers-reduced-motion:reduce){.warp-canvas,.warp-lens,.warp-hud{display:none!important}.desktop.warp-active .scene-viewport,.desktop.warp-charging .scene-viewport,.desktop.warp-jumping .scene-viewport{filter:none!important;transform:none!important}.turbo-surf.is-turbo{animation:none!important}}


/* Decorative collectibles; the depth composition is defined below. */
.object-light-trails{z-index:2;overflow:visible;pointer-events:none;filter:drop-shadow(0 0 9px rgba(112,249,255,.30))}
.arc-lines path{stroke-dasharray:18 14;animation:arc-flow 13s linear infinite}
.arc-lines path:nth-child(2){animation-duration:17s;animation-direction:reverse}
.arc-lines path:nth-child(3){animation-duration:11s}
.arc-photons{filter:drop-shadow(0 0 5px #fff) drop-shadow(0 0 13px #21e8ff);opacity:.78}
.decor-sprite{z-index:var(--decor-z,3);overflow:visible;filter:drop-shadow(0 0 7px rgba(67,235,255,.08));}
.decor-sprite img{display:block;width:100%;height:100%;object-fit:fill;transform-origin:center center;animation:decor-float 6.8s ease-in-out infinite;animation-delay:var(--float-delay,0s);will-change:transform;pointer-events:none}
.decor-sprite::after{content:"";position:absolute;z-index:-1;inset:21%;border-radius:50%;background:radial-gradient(ellipse,rgba(130,255,255,.18),rgba(61,127,255,.09) 52%,transparent 73%);filter:blur(14px);opacity:.55;animation:beacon-glow 8s ease-in-out infinite;animation-delay:var(--float-delay,0s);pointer-events:none}
@keyframes decor-float{0%,100%{transform:translate3d(0,0,0) rotate(0deg)}40%{transform:translate3d(calc(2px * var(--float-strength,1)),calc(-10px * var(--float-strength,1)),0) rotate(calc(.95deg * var(--float-strength,1)))}72%{transform:translate3d(calc(-3px * var(--float-strength,1)),calc(-4px * var(--float-strength,1)),0) rotate(calc(-.55deg * var(--float-strength,1)))}}
@keyframes arc-flow{to{stroke-dashoffset:-256}}
@media(prefers-reduced-motion:reduce){.decor-sprite img,.decor-sprite::after,.arc-lines path{animation:none!important}.arc-photons{display:none!important}}

/* GPU artwork replaces only visual layers. HTML buttons keep focus, hit areas,
   tooltips and window actions. These rules are removed if renderer startup fails. */
.three-scene{position:absolute;inset:0;width:100%;height:100%;z-index:1;pointer-events:none}
.three-ready .scene-viewport{z-index:2;filter:none!important}
.desktop.three-ready .scene-viewport{transform:none!important;}
.three-ready .planet,.three-ready .surfer,.three-ready .name-art,.three-ready .decor-sprite{visibility:hidden;filter:none!important;will-change:auto}
.three-ready .decor-sprite img,.three-ready .decor-sprite::after,.three-ready .planet-atmosphere{animation:none!important;will-change:auto}
.three-ready .hotspot img{visibility:hidden;animation:none!important;filter:none!important}
.three-ready .hotspot::before,.three-ready .surf-trail,.three-ready .warp-canvas,.three-ready .warp-lens{display:none}
.three-ready .hotspot{animation:none;filter:none!important}
.three-still .blinking,.three-still .help-hint{animation:none!important}
.three-ready .surfer,.three-ready .name-art{visibility:visible;opacity:0;animation:none!important}
.three-ready .surfer *{will-change:auto}
.three-ready .sky,.three-ready .sky-tint,.three-ready .atmosphere-glow{visibility:hidden;filter:none!important;will-change:auto}

/* Persistent desktop selection cues: crisp edges and labels without an idle
   animation or extra WebGL passes. Inverse sizes stay readable as art scales. */
.hotspot{--cue-unit:calc(1px / var(--scene-scale,1));--cue-color:#efffff;}
.hotspot:focus-visible{outline:calc(2 * var(--cue-unit)) dashed #fff100;outline-offset:calc(5 * var(--cue-unit));border-radius:0;}
.hotspot-corners{position:absolute;z-index:3;inset:0;pointer-events:none;}
.hotspot-corners i{position:absolute;width:calc(15 * var(--cue-unit));height:calc(15 * var(--cue-unit));border:solid var(--cue-color);border-width:calc(3 * var(--cue-unit)) 0 0 calc(3 * var(--cue-unit));box-shadow:calc(-2 * var(--cue-unit)) calc(-2 * var(--cue-unit)) 0 #073b97;}
.hotspot-corners i:nth-child(1){left:0;top:0;}
.hotspot-corners i:nth-child(2){right:0;top:0;transform:rotate(90deg);}
.hotspot-corners i:nth-child(3){right:0;bottom:0;transform:rotate(180deg);}
.hotspot-corners i:nth-child(4){left:0;bottom:0;transform:rotate(270deg);}
.hotspot-tip{bottom:calc(-31 * var(--cue-unit));padding:calc(5 * var(--cue-unit)) calc(7 * var(--cue-unit));border:calc(2 * var(--cue-unit)) solid;border-color:#fff #454545 #454545 #fff;background:#c0c0c0;color:#111;font:700 calc(12 * var(--cue-unit))/1.2 'Courier New',monospace;letter-spacing:0;opacity:1;transform:translateX(-50%);box-shadow:calc(2 * var(--cue-unit)) calc(2 * var(--cue-unit)) 0 #073b97;pointer-events:auto;transition:background-color .12s ease,color .12s ease;}
.hotspot-tip span{color:#0756bd;}
.hotspot-tip .hotspot-icon{margin-right:calc(2 * var(--cue-unit));}
.hotspot:hover,.hotspot:focus-visible{--cue-color:#fff100;}
.hotspot:hover .hotspot-tip,.hotspot:focus-visible .hotspot-tip{background:#000080;color:#fff;opacity:1;transform:translateX(-50%);}
.hotspot:hover .hotspot-tip span,.hotspot:focus-visible .hotspot-tip span{color:#fff100;}
.hotspot:active{--cue-color:#fff100;}
.hotspot:active .hotspot-tip{border-color:#454545 #fff #fff #454545;translate:0 calc(2 * var(--cue-unit));background:#000080;color:#fff;box-shadow:none;}
.hotspot:active .hotspot-tip span{color:#fff100;}
.help-hint{display:grid;gap:5px;width:max-content;max-width:calc(100% - 24px);padding:9px 12px;border:2px solid;border-color:#fff #454545 #454545 #fff;background:#fff6ce;color:#111;box-shadow:3px 3px 0 #073b97;font:700 11px/1.4 'Courier New',monospace;text-shadow:none;letter-spacing:0;white-space:normal;opacity:1;animation:none;pointer-events:none;}
.help-hint-title{color:#000080;font-size:10px;}
.help-hint[hidden]{display:none;}
@media(max-width:600px){
  /* The composition crops the right-hand warning art; keep its selection and
     label within the visible viewport without moving the artwork or hit area. */
  .hotspot-corners{left:max(0px,calc((836 - var(--x)) * 1px - (50vw - 10px) / var(--scene-scale)));right:max(0px,calc((var(--x) + var(--w) - 836) * 1px - (50vw - 10px) / var(--scene-scale)));}
  .hotspot:is(.warning-hotspot,.phone-hotspot) .hotspot-tip{left:auto;right:max(0px,calc((var(--x) + var(--w) - 836) * 1px - (50vw - 12px) / var(--scene-scale)));transform:none;}
  .help-hint{bottom:16%;padding:9px 12px;font-size:11px;letter-spacing:0;background:#fff6ce;}
}

/* The new lettering is part of the background, baked once into the GPU atlas. */
@font-face{font-family:UnifrakturCook;src:url('./assets/fonts/UnifrakturCook-Bold.ttf') format('truetype');font-weight:700;font-display:swap;}
.scene{top:calc(50% - 42px);}
.name-art{margin:0;text-align:center;color:#e82f57;font:700 360px/320px UnifrakturCook,serif;z-index:2;filter:none;animation:none;letter-spacing:-4px;}
.hero-link,.camera-link,.player-link{background:none;border:0;padding:0;margin:0;pointer-events:auto;touch-action:manipulation;}
.hero-link{clip-path:polygon(24% 4%,46% 3%,50% 17%,92% 27%,100% 34%,94% 48%,94% 88%,100% 94%,100% 99%,12% 99%,8% 78%,2% 62%,0% 35%,15% 25%);}
.hero-link:focus-visible{outline:4px solid #fff100;outline-offset:0;}
.hero-tip{position:absolute;left:60%;bottom:10%;padding:5px 7px;color:#fff;background:#000080;border:2px outset #fff;font:700 calc(12px / var(--scene-scale,1))/1.2 'Courier New',monospace;white-space:nowrap;opacity:0;}
.hero-link:hover .hero-tip,.hero-link:focus-visible .hero-tip{opacity:1;}
.camera-link{z-index:8;--cue-unit:calc(1px / var(--scene-scale,1));}
.camera-link:focus-visible{outline:3px dashed #fff100;outline-offset:4px;}
.camera-link:hover .hotspot-tip,.camera-link:focus-visible .hotspot-tip{background:#000080;color:#fff;}
.desktop.three-ready .hero-link{opacity:1;visibility:visible;}
.desktop.three-ready .hero-link img,.desktop.three-ready .hero-link canvas{visibility:hidden;}
.desktop.three-ready .camera-link{visibility:visible;}
.desktop.three-ready .camera-link img{visibility:hidden;}
.desktop.three-ready .camera-link::after{display:none;}
.player-link{--cue-unit:calc(1px / var(--scene-scale,1));--cue-color:#efffff;text-decoration:none;}
.player-link:hover,.player-link:focus-visible{--cue-color:#fff100;}
.player-link:focus-visible{outline:calc(2 * var(--cue-unit)) dashed #fff100;outline-offset:calc(5 * var(--cue-unit));}
.player-link:hover .hotspot-tip,.player-link:focus-visible .hotspot-tip{background:#000080;color:#fff;}
.player-link:hover .hotspot-tip span,.player-link:focus-visible .hotspot-tip span{color:#fff100;}
.player-link:active .hotspot-tip{border-color:#454545 #fff #fff #454545;translate:0 calc(2 * var(--cue-unit));background:#000080;color:#fff;box-shadow:none;}
.player-link:active .hotspot-tip span{color:#fff100;}
.player-link img{animation:none;transform:none;}
.desktop.three-ready .decor-player.player-link{visibility:visible!important;}
.desktop.three-ready .player-link img{visibility:hidden;}
.desktop.three-ready .player-link::after{display:none;}
.desktop.warp-active .hero-tip,.desktop.warp-active .camera-link .hotspot-tip,.desktop.warp-active .player-link .hotspot-tip{visibility:hidden;}
.resume-files{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin:24px 0;}
.file-shortcut{position:relative;display:grid;justify-items:center;gap:7px;min-width:0;padding:12px 4px;border:1px dashed transparent;background:transparent;}
.file-shortcut img{width:80px;height:96px;image-rendering:pixelated;}
.file-shortcut .file-badge{position:absolute;right:2px;bottom:2px;padding:1px 3px;background:#b3261e;color:#fff;font:700 8px/1 'Courier New',monospace;letter-spacing:.5px;}
.file-shortcut strong{font:700 11px 'Courier New',monospace;overflow-wrap:anywhere;}
.file-shortcut span{font-size:12px;color:#333;}
.file-shortcut:hover,.file-shortcut:focus-visible{background:#ddd;border-color:#000080;}
.resume-document{margin:0;min-height:280px;white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.6;padding:16px;background:#fff;border:2px inset #fff;font:13px/1.6 'Courier New',monospace;}
.directory-address{padding:7px 9px;border:2px inset #fff;background:#fff;font:12px 'Courier New',monospace;}
.project-card{display:flex;gap:16px;padding:17px 0;border-bottom:1px solid #888;}
.project-card:last-child{border:0;}
.project-card h3,.daisy-intro h3{margin:0 0 8px;}
.project-card p,.daisy-intro p{font-size:13px;line-height:1.6;margin:0 0 14px;}
.project-symbol{font-size:38px;color:#000080;min-width:42px;}
.project-card a{display:inline-block;text-decoration:none;}
.daisy-intro{display:flex;gap:12px;padding:12px;margin-bottom:12px;background:#fff6ce;border:2px inset #fff;}
.daisy-intro p{margin-bottom:7px;font-size:12px;}
.daisy-intro a{font-size:12px;}
.daisy-flower{font-size:32px;color:#075c67;}
.gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(135px,1fr));gap:12px;min-height:230px;align-content:start;padding:14px;background:#fff;border:2px inset #fff;}
.folder-empty{grid-column:1/-1;text-align:center;padding:55px 12px;color:#555;font:13px 'Courier New',monospace;}
.gallery-item{display:grid;gap:7px;padding:6px;border:1px solid #aaa;background:#f5f5f5;}
.gallery-item img{width:100%;height:110px;object-fit:contain;}
.gallery-item span{font-size:12px;overflow-wrap:anywhere;}
.gallery-instagram{grid-column:1/-1;display:flex;align-items:center;gap:12px;min-height:84px;padding:12px;border:2px outset #fff;background:#c0c0c0;color:#000080;text-decoration:none;overflow-wrap:anywhere;}
.gallery-instagram-icon{flex-shrink:0;width:32px;height:32px;fill:none;stroke:currentColor;stroke-width:2;}
.gallery-instagram-copy{display:grid;gap:4px;min-width:0;}
.gallery-instagram-copy strong{font-size:14px;}
.gallery-instagram-copy>span{font-size:12px;}
.gallery-instagram:hover,.gallery-instagram:focus-visible{background:#000080;color:#fff;}
.gallery-instagram:focus-visible{outline:2px dashed #000080;outline-offset:3px;}
.gallery-instagram:active{border-style:inset;}
.os-window[data-kind="photo"]{height:min(82svh,calc(90vw + 170px),760px);}
.photo-viewer{margin:0;display:grid;gap:10px;text-align:center;}
.photo-viewer img{width:auto;height:auto;justify-self:center;max-width:100%;max-height:60svh;object-fit:contain;}
.photo-source{justify-self:center;max-width:100%;font-size:12px;text-decoration:none;overflow-wrap:anywhere;}
.photo-source[hidden]{display:none;}
.os-window[data-kind="phone"]{width:355px;min-width:0;}
.phone-frame{max-width:276px;padding:17px 14px;margin:0 auto 12px;}
.phone-screen{padding:9px;border-radius:3px;background:#adc28c;}
.snake-score{display:flex;justify-content:space-between;padding:6px 0;font:700 12px monospace;}
.snake-board{display:block;width:100%;height:auto;image-rendering:pixelated;border:2px solid #25371e;}
.phone-screen [data-snake-status]{font:11px monospace;margin:7px 0;min-height:14px;}
.snake-controls{display:flex;gap:4px;}
.snake-controls button{flex:1;padding:5px 2px;font:11px monospace;border:1px solid #25371e;background:#adc28c;color:#25371e;}
.phone-keypad{gap:6px;margin-top:12px;}
.phone-keypad button{position:relative;min-height:35px;padding:6px 0;font-size:16px;}
.phone-keypad small{position:absolute;right:5px;top:3px;font-size:8px;}
.window-taskbar{max-width:calc(100vw - 24px);flex-wrap:wrap;justify-content:center;}
@media(hover:hover) and (pointer:fine){
  body,.desktop{cursor:url('./assets/cursors/pixel-arrow.svg') 2 2,auto;}
  .desktop button,.window-layer button,.window-layer a,.window-taskbar button,a{cursor:url('./assets/cursors/pixel-link.svg') 2 2,pointer;}
  .desktop button:disabled,.window-layer button:disabled{cursor:not-allowed;}
  .paint-board canvas{cursor:crosshair;}
  .resume-document{cursor:text;}
}
@media(max-width:850px){.scene{top:calc(50% - 32px);}.shortcuts{gap:3px;}.small-shortcut{font-size:9px;padding:8px 6px;}}
@media(max-width:600px){
  .scene{top:clamp(220px,29svh,260px)!important;}
  .name-art{--x:466!important;--y:130!important;--w:740!important;--h:160!important;font-size:181px;line-height:160px;letter-spacing:-2px;}
  .warning-hotspot{--x:936!important;--y:348!important;--w:230!important;--h:173!important;}
  .phone-hotspot{--w:100!important;--h:150!important;}
  .camera-link{--x:505!important;--y:655!important;--w:170!important;--h:149!important;}
  .shortcuts{max-width:calc(100vw - 16px);width:max-content;}
  .small-shortcut{font-size:8px;padding:9px 5px;white-space:nowrap;}
  .small-shortcut>span{display:none;}
  .hero-tip{font-size:calc(10px / var(--scene-scale,1));}
  .resume-files{gap:6px;}.file-shortcut{padding:10px 2px;}.project-card{gap:10px;}
}

/* Three decorative planes. Focus is baked in the atlas; CSS is the fallback. */
.desktop{touch-action:pan-y pinch-zoom;}
.decor-sprite[data-plane=far]{--depth:.1!important;--decor-z:1!important;--defocus:2.8;--decor-opacity:.82;--decor-halo:.02;--float-strength:.2;--float-rate:.5;}
.decor-sprite[data-plane=mid]{--depth:.34!important;--decor-z:2!important;--defocus:.45;--decor-opacity:.96;--decor-halo:.05;--float-strength:.5;--float-rate:.72;}
.decor-sprite[data-plane=near]{--depth:.78!important;--decor-z:3!important;--defocus:0;--decor-opacity:1;--decor-halo:.08;--float-strength:.9;--float-rate:1;}
.hotspot,.hero-link,.camera-link,.player-link{--depth:0!important;}
.decor-sprite.player-link[data-plane]{--depth:0!important;transition:none;}
.decor-sprite[data-plane]{transform:translate3d(calc(var(--mouse-x,0px) * var(--depth) / var(--scene-scale,1)),calc(var(--mouse-y,0px) * var(--depth) / var(--scene-scale,1)),0);transition:transform .2s ease-out;}
.decor-sprite[data-plane] img{opacity:var(--decor-opacity);filter:blur(calc(var(--defocus)*1px));animation-duration:calc(6.8s / var(--float-rate));}
.decor-sprite[data-plane]::after{opacity:calc(var(--decor-halo)*2);}
.three-ready .decor-sprite img{filter:none;}
.decor-cd{--x:280!important;--y:420!important;--w:200!important;--h:197!important;}
.decor-document-top{--x:475!important;--y:190!important;--w:108!important;--h:112!important;}
.decor-folder-left{--x:455!important;--y:515!important;--w:125!important;--h:120!important;}
.decor-document-bottom{--x:520!important;--y:830!important;--w:90!important;--h:95!important;}
.decor-globe{--x:1350!important;--y:175!important;--w:86!important;--h:88!important;}
.decor-monitor{--x:1340!important;--y:340!important;--w:165!important;--h:155!important;}
.decor-printer{--x:740!important;--y:865!important;--w:135!important;--h:127!important;}
.decor-folder-right{--x:1440!important;--y:715!important;--w:112!important;--h:106!important;}
.decor-cd-stack{--x:1360!important;--y:450!important;--w:214!important;--h:202!important;}
.decor-player{--x:1140!important;--y:700!important;--w:240!important;--h:168!important;}
.decor-note{--x:1145!important;--y:575!important;--w:60!important;--h:60!important;}
.object-light-trails{opacity:.62;}
@media(max-width:850px){
  .decor-sprite[data-plane=far]{--decor-opacity:.78;}
  .decor-sprite[data-plane=mid]{--decor-opacity:.94;}
}
@media(max-width:600px){
  /* Four destinations frame the figure; five decorations occupy their own lower band. */
  .paint-hotspot{--x:506!important;--y:390!important;--w:190!important;--h:143!important;}
  .warning-hotspot{--x:956!important;--y:395!important;--w:210!important;--h:158!important;}
  .camera-link{--x:510!important;--y:728!important;--w:144!important;--h:126!important;}
  .phone-hotspot{--x:1084!important;--y:790!important;--w:80!important;--h:120!important;}
  .hotspot-tip{font-size:calc(10px / var(--scene-scale,1));padding:calc(4 * var(--cue-unit)) calc(5 * var(--cue-unit));bottom:calc(-26 * var(--cue-unit));}
  .paint-hotspot .hotspot-tip{top:calc(-26 * var(--cue-unit));bottom:auto;left:0;transform:none;}
  .warning-hotspot .hotspot-tip{top:calc(-26 * var(--cue-unit));bottom:auto;right:0;left:auto;transform:none;}
  .phone-hotspot .hotspot-tip{right:0!important;left:auto;transform:none;}
  .hotspot-corners i{width:calc(10 * var(--cue-unit));height:calc(10 * var(--cue-unit));border-width:calc(2 * var(--cue-unit)) 0 0 calc(2 * var(--cue-unit));}
  .decor-cd{--x:518!important;--y:975!important;--w:110!important;--h:108!important;}
  .decor-globe{--x:1070!important;--y:990!important;--w:52!important;--h:54!important;}
  .decor-player{--x:750!important;--y:1015!important;--w:175!important;--h:123!important;}
  .decor-document-bottom{--x:1010!important;--y:1180!important;--w:55!important;--h:58!important;}
  .decor-sprite:is(.decor-document-top,.decor-folder-left,.decor-folder-right,.decor-monitor,.decor-printer,.decor-note,.decor-cd-stack){--decor-opacity:0;visibility:hidden;}
  .object-light-trails{opacity:.1;}
  .shortcuts{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));width:calc(100vw - 20px);bottom:10px;gap:4px;}
  .small-shortcut{min-height:44px;padding:6px 3px;font-size:9px;white-space:normal;line-height:1.2;}
  .help-hint{bottom:65px;max-width:calc(100vw - 28px);padding:6px 8px;font-size:9px;line-height:1.35;white-space:normal;}
  .help-hint-title{display:none;}
  .bottom-controls{bottom:101px;}
}
@media(max-width:600px) and (max-height:700px){.decor-document-bottom{--decor-opacity:0;visibility:hidden;}}
@media(max-width:600px) and (max-height:620px){.help-hint{display:none;}.bottom-controls{bottom:65px;}}
.os-window[data-kind=paint]{width:min(92vw,760px);}
.daisy-showcase{margin:0 0 14px;background:#0024c3;border:2px inset #fff;}
.daisy-showcase img{display:block;width:100%;height:auto;}
.daisy-showcase figcaption{padding:7px 10px;color:#fff;font:700 12px 'Courier New',monospace;}
.daisy-links{display:flex;gap:8px;flex-wrap:wrap;}
.daisy-links a{display:inline-block;text-decoration:none;}
@media(max-width:600px){.daisy-intro{padding:10px;}.daisy-flower{display:none;}.daisy-links a{flex:1;text-align:center;min-height:38px;padding:8px 5px;}.daisy-intro h3{font-size:15px;}.daisy-showcase{margin-bottom:10px;}}
@media(prefers-reduced-motion:reduce){.decor-sprite[data-plane]{transition:none;}}

/* Spatial desktop with classic desktop controls and resizable windows. */
.desktop{min-height:0;}
.camera-link{--cue-color:#efffff;}
.camera-link:hover,.camera-link:focus-visible{--cue-color:#fff100;}
.camera-link:hover .hotspot-tip,.camera-link:focus-visible .hotspot-tip{background:#000080;color:#fff;}
.camera-link:focus-visible{outline:calc(2 * var(--cue-unit)) dashed #fff100;outline-offset:calc(5 * var(--cue-unit));}
/* Keep the original Windows 98 chrome; resize behavior uses the same frame. */
.os-window{min-width:0;overflow:visible;}
.os-title-group{min-width:0;flex:1;}.os-title-actions{flex-shrink:0;}
.os-window-body{min-height:0;}
.os-status{padding-right:30px;}
.window-resize-grip{position:absolute;bottom:0;right:0;width:29px;height:29px;border:0;background:transparent;color:#555;cursor:nwse-resize;touch-action:none;border-radius:0;font-size:17px;z-index:4;}
.window-resize-edge{position:absolute;z-index:3;touch-action:none;}
.window-resize-edge[data-resize=n]{top:-4px;left:12px;right:12px;height:8px;cursor:ns-resize;}
.window-resize-edge[data-resize=s]{bottom:-4px;left:12px;right:30px;height:8px;cursor:ns-resize;}
.window-resize-edge[data-resize=e]{right:-4px;top:12px;bottom:30px;width:8px;cursor:ew-resize;}
.window-resize-edge[data-resize=w]{left:-4px;top:12px;bottom:12px;width:8px;cursor:ew-resize;}
.window-resize-edge:is([data-resize=ne],[data-resize=nw],[data-resize=sw]){width:16px;height:16px;}
.window-resize-edge[data-resize=ne]{right:-4px;top:-4px;cursor:nesw-resize;}
.window-resize-edge[data-resize=nw]{left:-4px;top:-4px;cursor:nwse-resize;}
.window-resize-edge[data-resize=sw]{left:-4px;bottom:-4px;cursor:nesw-resize;}
.is-maximized .window-resize-grip,.is-maximized .window-resize-edge{display:none;}
.is-adjusting{user-select:none;}
.window-taskbar{bottom:88px;max-width:calc(100vw - 24px);overflow-x:auto;padding:4px;}
.minimized-chip{flex-shrink:0;max-width:190px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;border:2px outset #fff;border-radius:0;background:#c0c0c0;font:11px/1.4 Tahoma,sans-serif;}
.shortcuts{width:max-content;max-width:calc(100vw - 24px);gap:4px;padding:4px;border:2px solid;border-color:#fff #424242 #424242 #fff;border-radius:0;background:#c0c0c0;box-shadow:2px 2px 0 #073b97;backdrop-filter:none;text-shadow:none;}
.small-shortcut{border:2px solid;border-color:#fff #424242 #424242 #fff;border-radius:0;background:#c0c0c0;color:#111;box-shadow:inset -1px -1px #808080;backdrop-filter:none;min-height:44px;font:700 11px/1.25 Tahoma,Arial,sans-serif;letter-spacing:0;white-space:nowrap;}
.small-shortcut>span{color:#000080;}
.small-shortcut:hover,.small-shortcut:focus-visible{background:#000080;color:#fff;}
.small-shortcut:hover>span,.small-shortcut:focus-visible>span{color:#fff100;}
.small-shortcut:active{border-color:#424242 #fff #fff #424242;box-shadow:inset 1px 1px #808080;}
.turbo-surf{border:2px solid;border-color:#fff #424242 #424242 #fff;border-radius:0;min-height:44px;background:linear-gradient(90deg,#000080,#075bc0);box-shadow:2px 2px 0 #073b97;}
.turbo-surf:hover,.turbo-surf:focus-visible{scale:1;filter:brightness(1.15);}
.turbo-surf:active{scale:1;border-color:#424242 #fff #fff #424242;box-shadow:none;}
.help-hint{display:none;}
@media(max-width:600px){
  .desktop{min-height:0;}
  .scene{top:var(--scene-top,310px)!important;}
  .top-left{top:max(14px,env(safe-area-inset-top));left:14px;}
  .top-right{top:calc(max(14px,env(safe-area-inset-top)) + 29px);left:14px;right:auto;display:flex;align-items:center;width:max-content;height:44px;padding:5px 8px;border:1px solid #bdf8ff;border-radius:0;background:#0054cf;box-shadow:2px 2px 0 #073b97;text-shadow:none;backdrop-filter:none;}
  .scene-item:is(.hero-link,.name-art,.planet,.paint-hotspot,.warning-hotspot,.camera-link,.phone-hotspot,.player-link){--x:var(--mobile-x)!important;--y:var(--mobile-y)!important;--w:var(--mobile-w)!important;--h:var(--mobile-h)!important;}
  .name-art{font-size:calc(var(--mobile-w,1160) * 360px / 1472);line-height:calc(var(--mobile-h,252) * 1px);}
  .paint-hotspot{--art-top:2%;--art-right:12%;--art-bottom:0%;--art-left:7%;}
  .warning-hotspot{--art-top:13%;--art-right:2%;--art-bottom:14%;--art-left:4%;}
  .camera-link{--art-top:14%;--art-right:0%;--art-bottom:11%;--art-left:0%;}
  .phone-hotspot{--art-top:4%;--art-right:11%;--art-bottom:4%;--art-left:16%;}
  .player-link{--art-top:16%;--art-right:11%;--art-bottom:16%;--art-left:14%;}
  .hotspot-corners{inset:var(--art-top) var(--art-right) var(--art-bottom) var(--art-left);}
  .hotspot-corners i{width:calc(8 * var(--cue-unit));height:calc(8 * var(--cue-unit));}
  /* Rótulos mais longos (DESENVOLVIMENTO, DESIGN) usam um corpo menor para
     caber na tela sem cobrir o retrato. */
  .hotspot:is(.paint-hotspot,.warning-hotspot,.phone-hotspot) .hotspot-tip,.camera-link .hotspot-tip,.player-link .hotspot-tip{left:calc((100% + var(--art-left) - var(--art-right)) / 2)!important;right:auto!important;top:calc(100% - var(--art-bottom) + 7 * var(--cue-unit));bottom:auto;font-size:calc(8 * var(--cue-unit));transform:translateX(-50%);}
  .camera-link .hotspot-tip span{color:#0756bd;}
  /* Upper captions face away from the silhouette, clearing arms and fingers. */
  .hotspot:is(.paint-hotspot,.warning-hotspot) .hotspot-tip{top:auto;bottom:calc(100% - var(--art-top) + 7 * var(--cue-unit));}
  /* Rótulos longos (DESENVOLVIMENTO) ancoram pela direita para não sair da tela. */
  .hotspot.warning-hotspot .hotspot-tip{left:auto!important;right:max(0px,calc((var(--x) + var(--w) - 836) * 1px - (50vw - 12px) / var(--scene-scale)))!important;transform:none!important;}
  .hero-link{--cue-unit:calc(1px / var(--scene-scale,1));clip-path:none;pointer-events:none;}
  .hero-link::after{content:'';position:absolute;inset:0;pointer-events:auto;clip-path:polygon(24% 4%,46% 3%,50% 17%,92% 27%,100% 34%,94% 48%,94% 88%,100% 94%,100% 99%,12% 99%,8% 78%,2% 62%,0% 35%,15% 25%);}
  .hero-tip{left:78%;top:calc(94% + 6 * var(--cue-unit));bottom:auto;z-index:2;transform:translateX(-50%);padding:calc(4 * var(--cue-unit)) calc(5 * var(--cue-unit));border:calc(2 * var(--cue-unit)) solid;border-color:#fff #454545 #454545 #fff;background:#c0c0c0;color:#111;font-size:calc(9 * var(--cue-unit));box-shadow:calc(2 * var(--cue-unit)) calc(2 * var(--cue-unit)) 0 #073b97;opacity:1;pointer-events:auto;}
  .hero-link:hover .hero-tip,.hero-link:focus-visible .hero-tip{background:#000080;color:#fff;}
  .decor-sprite[data-plane]{--decor-opacity:0!important;visibility:hidden;}
  .decor-sprite.decor-player[data-plane]{--decor-opacity:1!important;visibility:visible!important;}
  .desktop.three-ready .decor-player{visibility:hidden!important;}
  .object-light-trails,.surf-trail{display:none!important;}
  .scanlines{opacity:.025;}
  .shortcuts{left:8px;right:8px;bottom:max(10px,env(safe-area-inset-bottom));transform:none;width:auto;max-width:none;grid-template-columns:repeat(5,minmax(0,1fr));}
  .small-shortcut{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-height:50px;padding:5px 1px;font-size:9px;white-space:nowrap;}
  .small-shortcut>span{display:block;margin:0;font-size:14px;line-height:14px;}
  .bottom-controls{top:calc(max(14px,env(safe-area-inset-top)) + 29px);right:14px;bottom:auto;left:auto;}
  .window-taskbar{left:12px;right:12px;transform:none;bottom:calc(82px + env(safe-area-inset-bottom));max-width:calc(100vw - 24px);}
  .turbo-surf{font-size:9px;padding:7px 10px;}
  .os-window{max-height:calc(100svh - 104px);}
  .os-titlebar{height:38px;}
  .title-control{width:28px;height:27px;}
  .os-window-body{padding:10px;}
  .window-resize-grip{width:34px;height:29px;}
}
/* A transparent touch target preserves the original sprite sizes. */
@media(max-width:1000px) and (pointer:coarse){
  .hotspot::after,.camera-link::before,.player-link::before{content:'';display:block;position:absolute;left:50%;top:50%;width:max(100%,calc(44px / var(--scene-scale,1)));height:max(100%,calc(44px / var(--scene-scale,1)));transform:translate(-50%,-50%);background:transparent;pointer-events:auto;}
}
@media(min-width:601px) and (max-width:1000px) and (max-height:500px){
  .top-left,.top-right{top:14px;}
  .bottom-controls{top:43px;right:14px;bottom:auto;left:auto;}
  .bottom-controls>span{display:none;}
  .name-art{--x:596!important;--y:90!important;--w:480!important;--h:104!important;font-size:120px;line-height:104px;}
  .paint-hotspot{--x:250!important;--y:300!important;}
  .warning-hotspot{--x:1200!important;--y:300!important;--w:210!important;--h:158!important;}
  .camera-link{--x:250!important;--y:675!important;--w:148!important;--h:130!important;}
  .phone-hotspot{--x:1200!important;--y:675!important;--w:96!important;--h:144!important;}
  .hotspot-tip{bottom:calc(-24 * var(--cue-unit));font-size:calc(10 * var(--cue-unit));}
  .decor-sprite[data-plane]{--decor-opacity:0!important;visibility:hidden;}
  .decor-sprite.decor-player[data-plane]{--decor-opacity:1!important;--x:780!important;--y:740!important;--w:180!important;--h:126!important;visibility:visible!important;}
  .desktop.three-ready .decor-player{visibility:hidden!important;}
  .object-light-trails,.surf-trail{display:none!important;}
  .os-window{max-height:calc(100svh - 104px);}
}

/* Curriculum TXT files open as a classic Notepad, not a framed document card. */
.os-window.notepad-window{width:min(92vw,700px);height:min(70svh,520px);}
.notepad-window .os-window-body{display:flex;padding:0;overflow:hidden;background:#fff;}
.notepad-shell{display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;}
.notepad-menu-bar{position:relative;flex-shrink:0;display:flex;gap:0;margin:0;padding:0 2px;border:0;background:#c0c0c0;color:#111;font:13px/1.4 Tahoma,'MS Sans Serif',sans-serif;}
.notepad-menu{position:relative;}
.notepad-menu>summary{display:block;padding:3px 8px;list-style:none;cursor:default;user-select:none;}
.notepad-menu>summary::-webkit-details-marker{display:none;}
.notepad-menu[open]>summary,.notepad-menu>summary:hover{color:#fff;background:#000080;}
.notepad-menu-popup{position:absolute;top:100%;left:0;z-index:10;min-width:170px;padding:3px;background:#c0c0c0;border:2px solid;border-color:#fff #424242 #424242 #fff;box-shadow:2px 2px 0 #111;}
.notepad-menu-popup button,.notepad-menu-popup a{display:block;width:100%;padding:5px 9px;border:0;border-radius:0;box-shadow:none;background:transparent;color:#111;text-align:left;white-space:nowrap;text-decoration:none;font:13px/1.4 Tahoma,'MS Sans Serif',sans-serif;}
.notepad-menu-popup button:hover,.notepad-menu-popup a:hover,.notepad-menu-popup button:focus-visible,.notepad-menu-popup a:focus-visible{background:#000080;color:white;}
.notepad-menu-popup [aria-pressed=true]::before{content:'✓ ';}
.notepad-shortcut{float:right;margin-left:24px;}
.notepad-menu:last-child{position:static;}
.notepad-menu:last-child .notepad-menu-popup{left:auto;right:2px;}
.notepad-window .resume-document{display:block;flex:1;width:100%;min-height:0;margin:0;padding:4px;border:0;border-radius:0;outline:none;resize:none;background:#fff;color:#000;white-space:pre;overflow:auto;box-shadow:none;font:13px/1.35 'Courier New',monospace;cursor:text;}
.notepad-window .resume-document[wrap=soft]{white-space:pre-wrap;overflow-wrap:anywhere;}
.notepad-download-bar{display:flex;flex-wrap:wrap;column-gap:16px;flex-shrink:0;padding:3px 6px;border-top:1px solid #808080;box-shadow:inset 0 1px #fff;background:#c0c0c0;font:13px/1.4 Tahoma,Arial,sans-serif;}
.notepad-download-bar a{display:inline-flex;align-items:center;min-height:28px;color:#000080;text-decoration:underline;}
@media(max-width:600px){.notepad-menu>summary{padding:5px 9px;}.notepad-menu-popup button,.notepad-menu-popup a{padding:9px;}}
@media(max-width:600px){.notepad-download-bar a{min-height:44px;}}
@media(max-width:380px){.turbo-surf{min-width:84px;}.turbo-full{display:none;}}
.camera-link:hover .hotspot-tip span,.camera-link:focus-visible .hotspot-tip span{color:#fff100;}

/* LEITOR.EXE — leitor de PDF no estilo do site */
.os-window[data-kind=resume-pt],.os-window[data-kind=resume-en]{width:min(94vw,820px);height:min(90svh,780px);}
.os-window[data-kind=resume-pt] .os-window-body,.os-window[data-kind=resume-en] .os-window-body{display:flex;flex-direction:column;padding:0;overflow:hidden;}
.pdf-reader{display:flex;flex-direction:column;flex:1;min-height:0;background:#5a5a5a;color:#111;font:13px/1.4 Tahoma,'MS Sans Serif',sans-serif;}
.pdf-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;flex-shrink:0;padding:6px 8px;background:#c0c0c0;border-bottom:1px solid #808080;box-shadow:inset 0 1px #fff;}
.pdf-file{padding:4px 9px;background:#000080;color:#fff;font:700 11px/1.3 'Courier New',monospace;letter-spacing:1px;}
.pdf-toolset{display:flex;align-items:center;gap:5px;}
.pdf-button{display:grid;place-items:center;min-width:28px;height:26px;padding:0 6px;background:#c0c0c0;border:2px solid;border-color:#fff #444 #444 #fff;box-shadow:1px 1px 0 #000;font:13px/1 monospace;cursor:pointer;color:#111;}
.pdf-button:hover:not(:disabled){background:#dbdbdb;}
.pdf-button:active:not(:disabled){border-color:#444 #fff #fff #444;box-shadow:none;}
.pdf-button:disabled{opacity:.45;cursor:default;box-shadow:none;}
.pdf-counter{min-width:96px;text-align:center;font:12px/1.3 'Courier New',monospace;color:#222;}
.pdf-open{margin-left:auto;min-height:26px;text-decoration:none;white-space:nowrap;display:inline-flex;align-items:center;}
.pdf-stage{flex:1;min-height:0;overflow:auto;display:flex;justify-content:safe center;align-items:flex-start;padding:18px 12px 26px;background:#5a5a5a;}
.pdf-pages{--pdf-zoom:1;display:flex;flex-direction:column;align-items:center;gap:18px;zoom:var(--pdf-zoom);}
.pdf-sheet{position:relative;width:min(660px,100%);min-height:934px;padding:54px 58px;background:#fff;color:#1a1a1a;box-shadow:0 10px 26px rgba(0,0,0,.45);font:13px/1.62 Georgia,'Times New Roman',serif;}
.pdf-measure{position:absolute;left:-9999px;top:0;visibility:hidden;font:13px/1.62 Georgia,'Times New Roman',serif;color:#1a1a1a;}
.pdf-name{margin:0 0 4px;font:700 30px/1.1 Georgia,serif;letter-spacing:.5px;}
.pdf-role{margin:0 0 16px;color:#0b56bc;font:italic 14px/1.4 Georgia,serif;}
.pdf-section{margin:20px 0 8px;padding-bottom:4px;border-bottom:1px solid #b9c4de;color:#0b56bc;font:700 12px/1.3 Tahoma,sans-serif;letter-spacing:1.4px;text-transform:uppercase;}
.pdf-company{margin:14px 0 2px;font:700 14px/1.35 Georgia,serif;}
.pdf-meta{margin:0 0 8px;color:#666;font:italic 12px/1.45 Georgia,serif;}
.pdf-paragraph{margin:0 0 10px;}
.pdf-line{margin:0 0 6px;}
.pdf-contact{margin:0 0 4px;color:#333;font-size:12.5px;}
.pdf-bullet{margin:0 0 5px;padding-left:15px;position:relative;list-style:none;}
.pdf-bullet::before{content:"•";position:absolute;left:2px;color:#0b56bc;}
.pdf-link{color:#0b56bc;}
.pdf-loading{margin:0;color:#666;font:italic 13px/1.5 Georgia,serif;}
.pdf-status{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-shrink:0;padding:5px 10px;background:#c0c0c0;border-top:1px solid #808080;box-shadow:inset 0 1px #fff;color:#333;font-size:11.5px;}
.pdf-downloads{display:flex;gap:14px;flex-wrap:wrap;}
.pdf-downloads a{color:#000080;text-decoration:underline;}
@media(max-width:600px){
  .pdf-toolbar{gap:6px;padding:6px;}
  .pdf-file{font-size:10px;}
  .pdf-open{width:100%;justify-content:center;margin-left:0;}
  .pdf-stage{padding:12px 6px 20px;}
  .pdf-sheet{width:min(520px,100%);min-height:736px;padding:36px 34px;}
  .pdf-downloads a{min-height:44px;display:inline-flex;align-items:center;}
}

/* DOCUMENTO.EXE — interface no estilo Word: menu, abas e página */
.os-window[data-kind=warning],.os-window[data-kind=paint]{width:min(94vw,860px);height:min(88svh,720px);}
.os-window[data-kind=warning] .os-window-body,.os-window[data-kind=paint] .os-window-body{display:flex;flex-direction:column;padding:0;overflow:hidden;}
.word-shell{display:flex;flex-direction:column;flex:1;min-height:0;background:#c0c0c0;color:#111;font:14px/1.5 Tahoma,'MS Sans Serif',sans-serif;}
.word-menu{display:flex;gap:0;flex-shrink:0;padding:2px 4px;background:#c0c0c0;border-bottom:1px solid #808080;font:13px/1.4 Tahoma,sans-serif;}
.word-menu span{padding:3px 9px;color:#111;}
.word-menu-title{margin-left:auto;font-weight:700;color:#000080;}
.word-tabs{display:flex;gap:2px;flex-shrink:0;align-items:flex-end;padding:6px 6px 0;background:#c0c0c0;}
.word-tab{position:relative;padding:6px 14px;border:2px solid;border-color:#fff #424242 #424242 #fff;border-bottom:0;background:#c0c0c0;color:#111;font:700 12px/1.2 Tahoma,sans-serif;cursor:pointer;max-width:190px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.word-tab:hover{background:#d8d8d8;}
.word-tab.is-active{background:#fff;color:#000080;padding-bottom:7px;z-index:1;}
.word-pages{flex:1;min-height:0;overflow:auto;background:#808080;padding:0 12px 12px;}
.word-panel{background:#fff;max-width:720px;margin:0 auto;padding:22px 26px 30px;color:#111;box-shadow:2px 3px 0 rgba(0,0,0,.25);}
.word-panel[hidden]{display:none;}
.word-title{margin:0 0 2px;font:700 22px/1.2 Georgia,'Times New Roman',serif;}
.word-subtitle{margin:0 0 16px;color:#666;font:italic 13px/1.4 Georgia,serif;}
.word-hero{position:relative;display:block;margin:0 0 14px;border:1px solid #999;background:#fff;line-height:0;}
.word-hero img{display:block;width:100%;height:auto;}
.word-hero-badge{position:absolute;right:8px;bottom:8px;padding:5px 9px;background:#000080;color:#fff;font:700 11px/1.2 Tahoma,sans-serif;line-height:1.2;text-decoration:none;box-shadow:1px 1px 0 #000;}
.word-hero:hover .word-hero-badge{background:#0000a8;}
.word-link-line{margin:0 0 16px;font-size:13px;color:#444;}
.word-link{color:#000080;text-decoration:underline;}
.word-lead{margin:0 0 10px;font:700 16px/1.4 Georgia,serif;}
.word-paragraph{margin:0 0 12px;font:14px/1.65 Georgia,'Times New Roman',serif;}
.word-heading{margin:16px 0 6px;font:700 14px/1.3 Tahoma,sans-serif;color:#000080;}
.word-artwork{margin:18px 0 0;}
.word-artwork img{display:block;width:100%;height:auto;border:1px solid #999;}
.word-artwork figcaption{padding:6px 9px;background:#f0f0f0;border:1px solid #999;border-top:0;color:#444;font:11px/1.4 Tahoma,sans-serif;}
.word-panel:focus-visible{outline:3px solid #fff100;outline-offset:-3px;}

/* Composição reduzida: em desktop, só os destinos clicáveis permanecem visíveis.
   Mesmo mecanismo do bloco mobile (max-width:600px): --decor-opacity:0 zera a instância
   no renderizador Three.js (scene-three.js lê --decor-opacity) e visibility:hidden cobre
   o fallback DOM/Canvas. Remova data-composition="reduced" no <main id="desktop"> para
   restaurar a composição completa com as decorações. */
.desktop[data-composition="reduced"] .decor-sprite:is(.decor-cd,.decor-document-top,.decor-folder-left,.decor-document-bottom,.decor-globe,.decor-monitor,.decor-printer,.decor-folder-right,.decor-cd-stack,.decor-note){--decor-opacity:0;visibility:hidden;}
/* FIM COMPOSIÇÃO REDUZIDA */

/* TEMPORÁRIO: o atalho do Last.fm sai de todas as visualizações, do desktop ao
   celular. Apague este bloco para trazê-lo de volta. */
.desktop .decor-sprite.decor-player.player-link{--decor-opacity:0!important;visibility:hidden!important;}
.desktop.three-ready .decor-player.player-link{visibility:hidden!important;}
/* FIM LAST.FM */

/* Fan menu — destinations fold into the hero until he is hovered. */
[data-fan][data-fan-folded]{pointer-events:none!important;}
[data-fan][data-fan-folded] .hotspot-tip{opacity:0!important;}
/* WebGL owns the flight; the HTML cues (corners, labels) follow its progress. */
.desktop.three-ready [data-fan]{opacity:var(--fan,0);}
/* Canvas/DOM fallback: the same fold, expressed as a staggered CSS transition. */
.desktop:not(.three-ready) [data-fan]{transition:opacity .38s ease calc(var(--fan-i,0) * 55ms),transform .62s cubic-bezier(.2,1.5,.4,1) calc(var(--fan-i,0) * 55ms);}
.desktop:not(.three-ready):not(.fan-open) [data-fan]{opacity:0!important;transform:translate3d(calc(var(--fan-dx,0) * 1px),calc(var(--fan-dy,0) * 1px),0) rotate(var(--fan-roll,0deg)) scale(.22)!important;transition-duration:.26s,.34s;transition-timing-function:ease,cubic-bezier(.6,0,.9,.4);}
.fan-hint{position:absolute;z-index:12;left:var(--hint-x,62%);top:var(--hint-y,32%);display:flex;align-items:center;gap:8px;pointer-events:none;opacity:0;transform:translateY(6px);transition:opacity .25s ease,transform .25s ease;}
.desktop.fan-ready:not(.fan-seen) .fan-hint{opacity:1;transform:none;transition-delay:1.4s;}
.fan-hint-dot{position:relative;width:12px;height:12px;border-radius:50%;background:#fff100;box-shadow:0 0 0 2px #111,0 0 12px #fff8a8;}
.fan-hint-dot::after{content:"";position:absolute;inset:-7px;border-radius:50%;border:2px solid #fff;animation:fan-hint-ping 1.6s cubic-bezier(.2,.7,.3,1) infinite;}
.fan-hint-label{padding:4px 8px;border:1px solid #111;background:#ffffe1;color:#111;font:700 12px/1.2 'Courier New',monospace;letter-spacing:.04em;box-shadow:3px 3px 0 rgba(0,0,0,.35);white-space:nowrap;}
@keyframes fan-hint-ping{0%{transform:scale(.4);opacity:.9}80%,100%{transform:scale(1.5);opacity:0}}
@media(hover:none),(pointer:coarse){.fan-hint{display:none;}}
@media(prefers-reduced-motion:reduce){
  .fan-hint-dot::after{animation:none;}
  .desktop:not(.three-ready) [data-fan]{transition-duration:.2s,0s!important;transition-delay:0s!important;}
}
