:root{--ink:#142039;--paper:#fff9df;--yellow:#ffda32;--base:#d91e2b;--accent:#ffe13e;--ease-out:cubic-bezier(.23,1,.32,1);--ease-in-out:cubic-bezier(.77,0,.175,1);font-family:"Arial Black","Microsoft YaHei","PingFang SC",sans-serif;color:var(--ink);font-synthesis:none}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;overscroll-behavior:none}html{-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%}body{background:var(--base)}button{font:inherit;color:inherit;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}button:focus-visible{outline:4px dashed white;outline-offset:8px}button:disabled{cursor:default}[hidden]{display:none!important}#stage{position:relative;isolation:isolate;height:100vh;height:100dvh;overflow:hidden;background:var(--base)}#intro,#world,#scenery,#scenery img{position:absolute;inset:0;width:100%;height:100%}#intro{overflow:hidden;background:var(--base)}.burst{position:absolute;inset:-90%;background:repeating-conic-gradient(from 8deg at 50% 50%,transparent 0deg 13deg,#fff2 13deg 22deg,transparent 22deg 36deg,#061c5c24 36deg 43deg);transform:rotate(-8deg)}.halftone{position:absolute;inset:0;background-image:radial-gradient(#102c704a 1.5px,transparent 1.7px);background-size:12px 12px;mask-image:radial-gradient(ellipse,transparent 20%,#000 100%);opacity:.7}.orbit{position:absolute;width:95vmin;height:95vmin;border:2px solid #ffffff1a;border-radius:50%;left:50%;top:50%;transform:translate(-50%,-50%) rotate(-20deg)}.orbit-one{width:130vmin;height:46vmin;border-width:3px}.orbit-two{width:155vmin;height:155vmin;border:1px dashed #ffffff29}#location{position:absolute;z-index:3;top:5.5%;left:0;width:100%;text-align:center;color:var(--paper);font-size:clamp(26px,6.5vh,70px);font-weight:1000;letter-spacing:.14em;-webkit-text-stroke:2px var(--ink);paint-order:stroke fill;text-shadow:5px 6px 0 var(--ink);transform:rotate(-4deg);pointer-events:none}#map-position{position:absolute;left:50%;top:51%;width:min(67vh,54vw);height:min(67vh,54vw);transform:translate(-50%,-50%);z-index:2}#map-float{width:100%;height:100%;animation:float 5s ease-in-out infinite}#map-button{position:relative;width:100%;height:100%;display:block;border:0;background:none;padding:0;isolation:isolate;border-radius:50%;transition:transform 150ms var(--ease-out)}.disc-depth,.disc-face{position:absolute;inset:0;border:clamp(4px,.75vh,8px) solid var(--ink);border-radius:50%;pointer-events:none}.disc-depth{background:var(--ink);transform:translate(1.3%,3.5%);box-shadow:0 20px 0 #071b4824}.disc-face{background:var(--accent);box-shadow:inset 0 0 0 7px var(--paper),inset 0 0 0 10px var(--ink);overflow:hidden}.disc-face:before{content:"";position:absolute;inset:2%;border-radius:50%;background:radial-gradient(circle at 32% 25%,#fff5 0,transparent 65%),repeating-conic-gradient(from 15deg,transparent 0 23deg,#fff3 23deg 24deg);opacity:.8}.disc-face:after{content:"";position:absolute;inset:6%;border:2px dashed #14203925;border-radius:50%}#map-art{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}.glint{position:absolute;width:7%;height:7%;background:var(--paper);clip-path:polygon(50% 0,63% 37%,100% 50%,63% 63%,50% 100%,37% 63%,0 50%,37% 37%);filter:drop-shadow(2px 2px var(--ink));pointer-events:none}.glint-one{top:7%;right:16%;transform:rotate(10deg)}.glint-two{left:5%;bottom:15%;width:4%;height:4%}.landmark-label{font-family:"Microsoft YaHei",sans-serif;font-size:27px;font-weight:1000;fill:#fff9df;stroke:#142039;stroke-width:5;paint-order:stroke fill;letter-spacing:3px}#hint{position:absolute;bottom:6%;left:0;width:100%;text-align:center;font-size:clamp(12px,1.8vh,18px);font-weight:700;letter-spacing:.22em;color:#fff9df;opacity:0;pointer-events:none;text-shadow:1px 2px 0 #142039}
#world{background:#56d3f5}#scenery{overflow:hidden}#scenery img{object-fit:cover;object-position:50% 50%}#background-b{opacity:0}.scene-grain{position:absolute;inset:0;background:radial-gradient(#17203922 .7px,transparent .8px);background-size:4px 4px;opacity:.23;pointer-events:none}#scene-caption{position:absolute;top:7%;left:max(5%,env(safe-area-inset-left));transform:rotate(-3deg);display:flex;flex-direction:column;align-items:flex-start;pointer-events:none}#scene-caption>span{font-size:clamp(9px,1.5vh,15px);font-weight:900;letter-spacing:.2em;background:var(--ink);color:var(--paper);padding:6px 12px}#scene-caption strong{font-size:clamp(34px,7.6vh,82px);font-weight:1000;line-height:1.2;color:var(--paper);-webkit-text-stroke:2px var(--ink);paint-order:stroke fill;text-shadow:5px 5px 0 var(--ink);letter-spacing:.05em}#scene-caption i{font-size:clamp(11px,1.6vh,17px);font-style:normal;font-weight:900;background:var(--yellow);padding:6px 10px;border:2px solid var(--ink);margin-top:8px;box-shadow:3px 3px 0 var(--ink)}#chapter-stamp{position:absolute;top:5%;right:max(5%,env(safe-area-inset-right));font-size:clamp(26px,5vh,52px);font-weight:1000;font-style:italic;transform:rotate(4deg);color:var(--paper);-webkit-text-stroke:1.5px var(--ink);paint-order:stroke fill;text-shadow:3px 3px 0 var(--ink)}#chapter-stamp span{font-size:.4em}#sound{position:absolute;right:max(4%,env(safe-area-inset-right));top:17%;display:flex;align-items:center;gap:7px;padding:8px 12px;min-height:44px;background:var(--paper);border:3px solid var(--ink);box-shadow:4px 4px 0 var(--ink);transform:rotate(2deg);font-size:12px;font-weight:900;z-index:7;transition:transform 120ms var(--ease-out)}#sound svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}#sound[aria-pressed=true]{background:var(--yellow)}#sound:active{transform:translate(2px,2px) rotate(2deg)}#dialogue-wrap{position:absolute;inset:auto max(2.5%,env(safe-area-inset-right)) max(2%,env(safe-area-inset-bottom)) max(2.5%,env(safe-area-inset-left));height:31.5%;z-index:6;filter:drop-shadow(6px 7px 0 #142039)}#dialogue{position:absolute;inset:0;width:100%;height:100%;display:flex;align-items:flex-start;text-align:left;border:clamp(3px,.6vh,6px) solid var(--ink);background:var(--paper);padding:clamp(22px,4.5vh,48px) clamp(22px,4.5vw,80px) clamp(30px,5.8vh,60px);clip-path:polygon(0 3%,99.3% 0,100% 96%,.4% 100%);transition:background 120ms ease}#dialogue:after{content:"";position:absolute;inset:8px;border:1px solid #14203925;pointer-events:none}#dialogue-text{font-family:"Microsoft YaHei","PingFang SC",sans-serif;font-size:clamp(16px,2.8vh,29px);font-weight:700;line-height:1.65;letter-spacing:.045em;white-space:pre-wrap;max-height:100%;overflow-y:auto;overscroll-behavior:contain;user-select:text}#dialogue.question #dialogue-text{font-size:clamp(20px,3.8vh,40px);font-weight:900;line-height:1.4}#speaker{position:absolute;top:-17px;left:3%;z-index:2;display:flex;align-items:center;gap:12px}#speaker-name{display:block;background:var(--yellow);border:3px solid var(--ink);padding:5px 22px;font-size:clamp(12px,2vh,22px);font-weight:1000;transform:rotate(-3deg);box-shadow:3px 3px 0 var(--ink)}#demo-label{font-size:clamp(9px,1.3vh,12px);font-weight:900;letter-spacing:.16em;background:var(--ink);color:var(--paper);padding:5px 8px}#continue{position:absolute;bottom:clamp(10px,2.5vh,25px);right:3%;font-size:clamp(10px,1.7vh,16px);font-weight:900;letter-spacing:.1em;display:flex;align-items:center;gap:14px}#continue b{display:inline-grid;place-items:center;background:var(--yellow);border:2px solid var(--ink);width:27px;height:24px;font-size:20px}#actor{position:absolute;z-index:5;left:74%;top:52%;width:clamp(95px,22vh,260px);height:clamp(142px,33vh,390px);transform:translate(-50%,-50%);pointer-events:none}#avatar{width:100%;height:100%;object-fit:contain;image-rendering:pixelated;filter:drop-shadow(4px 5px 0 #14203955);transform-origin:50% 95%}#actor-shadow{position:absolute;bottom:0;left:15%;width:70%;height:8%;border-radius:50%;background:#14203945;filter:blur(3px)}#actor.idle #avatar{animation:idle 2.6s steps(2,end) infinite}#actor.talking #avatar{animation:speak .38s steps(2,end) infinite}#actor.walking #avatar{animation:walk .3s steps(2,end) infinite}#particles{position:absolute;inset:0;width:100%;height:100%;z-index:8;pointer-events:none}#transition{position:absolute;inset:0;z-index:10;pointer-events:none;visibility:hidden;overflow:hidden}.transition-stripe{position:absolute;inset:-30%;background:var(--yellow);border:14px solid var(--ink);transform:translateX(-130%) rotate(-12deg);box-shadow:20px 0 0 var(--paper),35px 0 0 var(--ink)}#transition-word{position:absolute;left:50%;top:45%;transform:translate(-50%,-50%) rotate(-10deg);font-size:clamp(50px,14vh,150px);font-weight:1000;color:var(--paper);-webkit-text-stroke:4px var(--ink);paint-order:stroke fill;text-shadow:8px 9px 0 #f4536c;white-space:nowrap;opacity:0}#rotate{display:none}#load-error{position:fixed;z-index:30;bottom:10%;left:50%;transform:translateX(-50%);padding:20px;background:var(--paper);border:3px solid var(--ink);font-weight:700}#load-error button{margin-left:10px;padding:8px;background:var(--yellow);border:2px solid var(--ink)}
@keyframes float{0%,100%{transform:translate(-1%,-1.4%) rotate(-3deg)}35%{transform:translate(1.2%,1.5%) rotate(2.2deg)}70%{transform:translate(-.8%,.8%) rotate(-1deg)}}@keyframes idle{0%,100%{transform:translateY(0) scaleY(1)}50%{transform:translateY(1px) scaleY(.985)}}@keyframes speak{0%,100%{transform:translateY(0) rotate(-1deg)}50%{transform:translateY(-3px) rotate(1deg)}}@keyframes walk{0%,100%{transform:translateY(0) rotate(-4deg)}50%{transform:translateY(-7px) rotate(4deg)}}
@media(hover:hover) and (pointer:fine){#map-button:not(:disabled):hover{transform:scale(1.04)}#dialogue.question:hover{background:#fff1af}#sound:hover{transform:translateY(-3px) rotate(-2deg)}}#map-button:not(:disabled):active{transform:scale(.96)}
@media(max-height:500px) and (orientation:landscape){#map-position{width:65vh;height:65vh}#location{top:3%;font-size:7vh}#scene-caption{top:6%;left:4%}#scene-caption>span{padding:3px 7px;font-size:8px}#scene-caption strong{font-size:8vh}#scene-caption i{margin-top:4px;padding:4px 7px;font-size:10px}#sound{top:20%;padding:4px 8px;min-height:36px;font-size:10px}#speaker{top:-13px}#speaker-name{padding:3px 14px;border-width:2px}#dialogue{padding:22px 26px 30px}#dialogue-text{font-size:clamp(13px,3.6vh,18px);line-height:1.45}#dialogue.question #dialogue-text{font-size:5vh}#continue{bottom:8px;font-size:9px}#continue b{height:20px;width:23px;font-size:16px}#actor{width:23vh;height:34.5vh}}
@media(orientation:portrait){#stage{visibility:hidden}#rotate{position:fixed;display:flex;inset:0;z-index:40;background:#ffda32;align-items:center;justify-content:center;flex-direction:column;overflow:hidden;padding:30px;text-align:center}.rotate-dots{position:absolute;inset:0;background-image:radial-gradient(#14203922 1.8px,transparent 2px);background-size:12px 12px;mask-image:linear-gradient(#000,transparent 60%);pointer-events:none}.rotate-phone{width:65px;height:104px;border:5px solid var(--ink);border-radius:12px;box-shadow:6px 6px 0 var(--ink);background:var(--paper);transform:rotate(25deg);display:grid;place-items:center;margin-bottom:35px}.rotate-phone span{font-size:58px;font-weight:1000}.rotate-eyebrow{font-size:11px;font-weight:900;letter-spacing:.25em;background:var(--ink);color:var(--yellow);padding:8px 12px;transform:rotate(-3deg)}#rotate h1{font-size:clamp(34px,10vw,60px);font-weight:1000;line-height:1.3;letter-spacing:-.03em;margin:14px 0;transform:rotate(-3deg)}#rotate>p:last-of-type{font-size:13px;font-weight:700}.rotate-line{width:75px;height:6px;background:var(--ink);margin-top:25px;transform:rotate(-4deg)}}
@media(prefers-reduced-motion:reduce){#map-float,#actor.idle #avatar,#actor.talking #avatar,#actor.walking #avatar{animation:none}.burst{opacity:.6}#map-button{transition:opacity 150ms}#map-button:active{transform:none}}
#map-shape>g{transform-box:view-box;transform-origin:400px 400px}#landmarks{transform-origin:center}
/* Native dialogue and fullscreen detail panels */
#actor{width:clamp(142px,33vh,390px);height:clamp(142px,33vh,390px)}
#dialogue{cursor:pointer;touch-action:manipulation}#dialogue:focus-visible{outline:4px dashed var(--yellow);outline-offset:-10px}
#dialogue.hobby-panel{padding:clamp(18px,3.4vh,36px) 3% clamp(8px,1.5vh,15px);cursor:default;background:#fff9df}
.hobby-panel #dialogue-text{width:100%;height:100%;max-height:none;overflow:visible}
.hobby-options{display:grid;grid-template-columns:1fr 1fr;gap:clamp(6px,1.4vh,14px);width:100%;height:100%;align-content:center}
.hobby-option{display:flex;align-items:center;gap:12px;border:2px solid var(--ink);background:#fff1b1;box-shadow:3px 3px 0 var(--ink);padding:clamp(6px,1.4vh,14px) 14px;min-height:40px;font-size:clamp(13px,2.2vh,23px);font-weight:900;cursor:pointer;touch-action:manipulation;transition:transform 120ms var(--ease-out),background 120ms}
.hobby-option:active{transform:translate(2px,2px)}.hobby-option:focus-visible{outline:3px dashed #a1278b;outline-offset:3px}.hobby-option b{margin-left:auto}.hobby-option.visited{background:#e5f6db}.hobby-option.hobby-next{background:#ffda32}.hobby-number{font-size:.7em;color:#9d6118}.hobby-option.visited .hobby-number{color:#3d7851}
#detail-modal{width:min(1280px,92vw);max-width:none;height:min(850px,88dvh);max-height:92dvh;border:0;padding:0;background:transparent;overflow:visible;color:var(--ink)}
#detail-modal::backdrop{background:#10192dcc;backdrop-filter:blur(5px)}
.modal-shell{display:flex;flex-direction:column;height:100%;background:var(--paper);border:5px solid var(--ink);box-shadow:9px 10px 0 var(--yellow);overflow:hidden}
.modal-header{display:flex;align-items:center;justify-content:space-between;padding:22px 30px 18px;background:var(--yellow);border-bottom:4px solid var(--ink);flex-shrink:0}
#modal-kicker{font-size:11px;font-weight:900;letter-spacing:.2em}#modal-title{margin:4px 0 0;font-size:clamp(23px,3.8vh,40px);font-weight:1000;letter-spacing:.02em}
#modal-close{height:44px;width:44px;flex-shrink:0;margin-left:15px;display:grid;place-items:center;border:3px solid var(--ink);background:var(--paper);font-size:21px;box-shadow:3px 3px 0 var(--ink);transition:transform 120ms var(--ease-out)}#modal-close:active{transform:translate(2px,2px)}
#modal-body{padding:24px 30px;overflow:auto;overscroll-behavior:contain;flex:1;min-height:0;scrollbar-color:#142039 #fff1b1;scrollbar-width:thin}
.modal-intro{font-size:15px;line-height:1.7;margin:0 0 22px;font-weight:700}.modal-empty{min-height:240px;height:100%;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;padding:30px;gap:12px}.modal-empty>.brand-icon{width:75px;height:75px;object-fit:contain}.modal-empty h3{font-size:clamp(20px,3vh,32px);margin:6px 0;font-weight:1000}.modal-empty p{max-width:560px;font-size:15px;line-height:1.9;margin:0}.paper-stack{font-size:65px;line-height:1;color:#1264e8;font-weight:1000}
#modal-footer{padding:14px 30px;display:flex;gap:15px;align-items:center;justify-content:space-between;border-top:3px solid var(--ink);background:#fff0b3;flex-shrink:0;min-height:58px}.modal-note{font-size:11px;line-height:1.5;font-weight:700}.comic-link{display:inline-flex;align-items:center;justify-content:center;background:var(--ink);color:var(--paper);padding:11px 16px;text-decoration:none;font-size:13px;font-weight:900;border:2px solid var(--ink);transition:transform 120ms var(--ease-out);flex-shrink:0}.comic-link:active{transform:translateY(2px)}
.project-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.project-card{display:flex;flex-direction:column;padding:20px;border:3px solid var(--ink);box-shadow:4px 4px 0 var(--ink);color:var(--ink);background:#fffef5;text-decoration:none;position:relative;min-height:190px;transition:transform 150ms var(--ease-out),background 150ms}.project-card>.brand-icon{width:25px;height:25px;object-fit:contain}.project-card h3{overflow-wrap:anywhere;font-size:17px;line-height:1.4;margin:12px 0 8px;font-weight:1000}.project-card p{font-family:"Microsoft YaHei",sans-serif;font-size:12px;line-height:1.7;margin:0 0 16px;color:#47516b}.project-meta{display:flex;gap:12px;align-items:center;font-size:11px;font-weight:900;margin-top:auto}.project-meta b{margin-left:auto;font-size:20px}.game-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.game-card{display:block;text-decoration:none;color:var(--ink);border:3px solid var(--ink);background:#ffefb0;box-shadow:4px 4px 0 var(--ink)}.game-card>img{width:100%;aspect-ratio:460/215;object-fit:cover;display:block;border-bottom:3px solid var(--ink)}.game-card>div{padding:12px}.game-card h3{font-size:15px;margin:0 0 8px}.hours{font-size:22px;font-weight:1000;font-style:italic}.materials{display:grid;gap:15px}.material-row{display:flex;justify-content:space-between;align-items:center;padding:22px;border:3px solid var(--ink);text-decoration:none;color:var(--ink);background:#fff1b1;font-weight:900}
.sports-modal .modal-header{position:absolute;right:14px;top:14px;z-index:2;padding:0;border:0;background:none}.sports-modal .modal-header>div{display:none}.sports-modal .modal-shell{background:#1264e8}.sports-modal #modal-body{padding:24px;display:flex;align-items:center;overflow:hidden}.sports-modal #modal-footer{display:none}.sports-panels{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:100%;gap:15px}.sport-panel{border:4px solid var(--ink);box-shadow:5px 6px 0 var(--ink);background:var(--yellow);overflow:hidden;transform:rotate(-2deg)}.sport-panel:nth-child(2){transform:rotate(2deg)}.sport-panel:nth-child(3){transform:rotate(-1deg)}.sport-panel svg{width:100%;height:auto;display:block}
#ending{position:absolute;z-index:6;left:31%;right:3%;top:21%;bottom:4%;padding:26px 30px;background:#fff9dff5;border:4px solid var(--ink);box-shadow:8px 8px 0 var(--ink);overflow:auto;overscroll-behavior:contain;transform:rotate(-1deg)}.ending-kicker{display:inline-block;color:#a52e4d;font-size:10px;font-weight:1000;letter-spacing:.22em}.ending-heading h1{font-size:clamp(23px,3.7vh,42px);font-weight:1000;margin:8px 0;letter-spacing:-.04em}.ending-heading p{font-size:13px;font-weight:700;margin:0 0 22px}.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.contact-card{display:flex;align-items:center;gap:12px;padding:12px;text-align:left;text-decoration:none;color:var(--ink);border:2px solid var(--ink);background:#fffef7;min-width:0;transition:transform 120ms var(--ease-out),background 120ms}.contact-card>.brand-icon{width:29px;height:29px;flex-shrink:0;object-fit:contain}.contact-words{min-width:0;display:flex;flex-direction:column;gap:4px}.contact-label{font-size:10px;font-weight:900;color:#656570;letter-spacing:.07em}.contact-value{font-family:Arial,"Microsoft YaHei",sans-serif;font-size:clamp(11px,1.6vh,17px);font-weight:800;overflow-wrap:anywhere;user-select:text}.contact-action{font-size:9px;font-weight:900;margin-left:auto;white-space:nowrap}.contact-card.copied{background:#d5f7c2}.ending-foot{display:flex;justify-content:space-between;gap:12px;font-size:10px;font-weight:700;margin-top:18px;color:#62687a}.credits-link{color:inherit}
@media(hover:hover) and (pointer:fine){.hobby-option:hover{background:#ffda32;transform:translateY(-2px)}.project-card:hover{background:#fff0b0;transform:translateY(-3px)}.contact-card:hover{background:#ffefb0;transform:translateY(-2px)}}
@media(max-height:500px) and (orientation:landscape){#actor{width:34.5vh;height:34.5vh}.hobby-option{min-height:32px;padding:5px 9px;font-size:12px;gap:8px}.hobby-options{gap:6px}.hobby-panel #dialogue-text{font-size:13px}#dialogue.hobby-panel{padding:20px 18px 8px}#detail-modal{height:87dvh;width:93vw}.modal-shell{border-width:3px;box-shadow:5px 5px 0 var(--yellow)}.modal-header{padding:10px 18px;border-bottom-width:3px}#modal-kicker{font-size:8px}#modal-title{font-size:22px;margin-top:2px}#modal-close{width:36px;height:36px;font-size:17px}#modal-body{padding:14px 18px}.modal-intro{font-size:12px;margin-bottom:14px}#modal-footer{padding:8px 18px;min-height:44px}.comic-link{padding:7px 11px;font-size:11px}.modal-note{font-size:9px}.modal-empty{min-height:0;padding:12px;gap:5px}.modal-empty>.brand-icon{width:43px;height:43px}.modal-empty h3{font-size:20px}.modal-empty p{font-size:12px;line-height:1.6}.project-grid{gap:10px}.project-card{padding:12px;min-height:140px}.project-card h3{font-size:13px;margin:8px 0}.project-card p{font-size:10px}.project-card>.brand-icon{width:20px;height:20px}.project-meta{font-size:9px}.sports-modal #modal-body{padding:24px 16px}.sports-panels{gap:10px}.sport-panel{border-width:3px;box-shadow:3px 3px 0 var(--ink)}.sports-modal .modal-header{right:8px;top:8px}#ending{left:30%;top:15%;bottom:3%;padding:14px 16px;border-width:3px;box-shadow:5px 5px 0 var(--ink)}.ending-kicker{font-size:8px}.ending-heading h1{font-size:23px;margin:4px 0}.ending-heading p{font-size:10px;margin-bottom:10px}.contact-grid{gap:6px}.contact-card{padding:7px;gap:7px;min-height:42px}.contact-card>.brand-icon{width:23px;height:23px}.contact-label{font-size:8px}.contact-value{font-size:10px}.contact-action{font-size:8px}.contact-words{gap:2px}.ending-foot{font-size:8px;margin-top:10px}}
@media(orientation:portrait){#detail-modal{visibility:hidden}#detail-modal::backdrop{background:transparent;backdrop-filter:none}*{animation-play-state:paused!important}}
@media(prefers-reduced-motion:reduce){.hobby-option,.project-card,.contact-card{transition:background 150ms}}
.software-heading{font-size:clamp(18px,2.6vh,27px);margin:36px 0 8px;font-weight:1000}.software-grid{max-width:820px;margin-bottom:10px}
/* Revised comic staging: no scene labels, character-only transitions. */
.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
#sound{top:max(4%,env(safe-area-inset-top));right:max(3.5%,env(safe-area-inset-right));width:46px;height:46px;min-height:44px;justify-content:center;padding:8px;transform:rotate(2deg)}#sound svg{width:24px;height:24px}
#transition-runner{position:absolute;left:0;top:50%;width:29vh;height:29vh;opacity:0;pointer-events:none}.runner-hero,.runner-ghost{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;image-rendering:pixelated}.runner-hero{filter:drop-shadow(5px 6px 0 #14203955)}.ghost-one{transform:translateX(-28%);opacity:.13}.ghost-two{transform:translateX(-14%);opacity:.27}
.transition-track{position:absolute;inset:0;display:flex;align-items:center;justify-content:space-evenly;transform:translateY(18vh)}.transition-track i{width:5vh;height:5vh;background:#1264e8;border:3px solid var(--ink);box-shadow:5px 5px 0 #142039;transform:rotate(-8deg)}.transition-track i:nth-child(2n){background:#f65a90;transform:translateY(-8vh) rotate(8deg)}.transition-track i:nth-child(3){background:#fff9df;transform:translateY(-13vh) rotate(-5deg)}
.card-pending{opacity:0}.card-enter{animation:cardPop 280ms var(--ease-out) both;animation-delay:var(--card-delay,0ms)}
@keyframes cardPop{from{opacity:0;transform:translateY(20px) scale(.93) rotate(-1deg)}to{opacity:1;transform:translateY(0) scale(1) rotate(0deg)}}
@keyframes cardFade{from{opacity:0}to{opacity:1}}
.game-info{display:flex;flex-direction:column}.game-card h3{line-height:1.45;min-height:2.9em;margin-bottom:6px}.hours{display:block}.achievement-progress{margin-top:13px;padding-top:11px;border-top:1px solid #14203935}.achievement-label{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:11px;font-weight:900}.achievement-label b{color:#6d3b20}.achievement-track{height:8px;border:2px solid var(--ink);background:#fff9df;margin-top:7px;overflow:hidden}.achievement-track i{display:block;width:100%;height:100%;background:#14bdb0;transform-origin:left center}.data-updated{font-size:11px;line-height:1.6;font-weight:700;text-align:right}
.sports-modal{width:min(1450px,96vw)!important;height:92dvh!important;max-height:94dvh!important}.sports-modal .modal-shell{border-width:5px;background:var(--ink)}.sports-modal #modal-body{padding:0;display:block;overflow:hidden}.sports-panels{height:100%;width:100%;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;background:var(--ink)}.sport-panel,.sport-panel:nth-child(2),.sport-panel:nth-child(3){height:100%;min-height:0;border:0;box-shadow:none;transform:none;background:var(--ink);overflow:hidden}.sport-panel svg{width:100%;height:100%;display:block;object-fit:cover}.sports-modal .modal-header{right:14px;top:14px}.sports-modal #modal-close{background:#fff9df}
.ending-foot{justify-content:flex-end}
@media(max-height:500px) and (orientation:landscape){#sound{width:38px;height:38px;min-height:38px;padding:6px;top:max(4%,env(safe-area-inset-top))}#sound svg{width:21px;height:21px}.game-card>div{padding:10px}.game-card h3{font-size:12px}.hours{font-size:20px}.achievement-progress{margin-top:9px;padding-top:8px}.achievement-label{font-size:9px}.achievement-track{height:6px;margin-top:5px}.data-updated{font-size:9px}.sports-modal{height:93dvh!important;max-height:94dvh!important}.sports-modal .modal-shell{border-width:3px}.sports-panels{gap:4px}.sports-modal .modal-header{right:8px;top:8px}}
@media(prefers-reduced-motion:reduce){.card-pending{opacity:1}.card-enter{animation-name:cardFade;animation-duration:150ms;animation-delay:0ms}.runner-ghost{display:none}}
.transition-track{opacity:0}
/* Account banners use the actual equipped Steam media and GitHub profile README. */
.profile-banner{position:relative;isolation:isolate;display:flex;align-items:center;gap:22px;min-height:190px;margin:0 0 26px;padding:28px 34px;border:3px solid var(--ink);box-shadow:5px 5px 0 var(--ink);overflow:hidden;text-decoration:none;color:#fff9df;background:#101722;transition:transform 150ms var(--ease-out)}
.profile-banner-poster,.profile-banner-video,.profile-banner-shade,.github-banner-grid{position:absolute;inset:0;width:100%;height:100%;z-index:-2;object-fit:cover;object-position:center 43%;pointer-events:none}.profile-banner-video{z-index:-1}.profile-banner-shade{z-index:0;background:linear-gradient(90deg,#101524cf 0%,#10152470 38%,#1015240a 78%,#10152430 100%)}
.profile-banner-identity{position:relative;z-index:1;display:flex;align-items:center;gap:24px;min-width:0}.profile-banner-avatar{position:relative;display:block;width:100px;height:100px;flex-shrink:0}.profile-avatar-image{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border:3px solid #fff9df;box-shadow:3px 3px 0 #14203975}.profile-avatar-frame{position:absolute;inset:-12%;width:124%;height:124%;object-fit:contain;pointer-events:none}.profile-banner-words{display:flex;flex-direction:column;gap:9px;min-width:0}.profile-banner-name{display:flex;align-items:center;gap:10px}.profile-banner-name>.brand-icon{width:28px;height:28px;object-fit:contain;flex-shrink:0}.profile-banner-name strong{font-size:clamp(23px,3.2vh,34px);font-weight:1000;letter-spacing:-.025em;text-shadow:2px 2px 0 #101724;overflow-wrap:anywhere}.profile-banner-subtitle,.profile-banner-bio,.profile-banner-location{font-size:13px;font-weight:700;line-height:1.5;color:#f9efdf}.profile-banner-location{font-size:11px;color:#a9c6da}.profile-banner-arrow{position:absolute;z-index:2;right:17px;top:14px;font-size:25px;font-weight:900;color:white;text-shadow:2px 2px #142039}
.profile-banner-github{background:#101923;justify-content:space-between}.github-banner-grid{z-index:-1;background-image:linear-gradient(#5ee2bc12 1px,transparent 1px),linear-gradient(90deg,#5ee2bc12 1px,transparent 1px),radial-gradient(ellipse at 90% 20%,#36525660,transparent 70%);background-size:24px 24px,24px 24px,100% 100%;mask-image:linear-gradient(90deg,transparent,#000)}.profile-banner-github .profile-banner-name>.brand-icon{filter:brightness(0) invert(1)}.profile-banner-github .profile-avatar-image{border-color:#5be8bd}.github-banner-readme{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:20px;flex:0 1 46%;min-width:0;padding-left:18px;border-left:1px solid #b6e4d833}.github-banner-animation{display:block;width:100%;height:30px}.github-banner-animation svg{display:block;width:100%;height:30px;overflow:visible}.github-banner-models{display:flex;align-items:center;justify-content:center;gap:20px;flex-wrap:wrap}.github-model{display:flex;align-items:center;gap:8px;font-size:11px;font-weight:700;color:#d8e5e5;white-space:nowrap}.github-model img{width:24px;height:24px;object-fit:contain}.profile-banner.is-paused *{animation-play-state:paused!important}
@media(hover:hover) and (pointer:fine){.profile-banner:hover{transform:translateY(-2px)}}
@media(max-height:500px) and (orientation:landscape){.profile-banner{min-height:122px;padding:17px 22px;margin-bottom:18px;gap:14px;box-shadow:3px 3px 0 var(--ink)}.profile-banner-avatar{width:68px;height:68px}.profile-banner-identity{gap:16px}.profile-banner-words{gap:5px}.profile-banner-name{gap:7px}.profile-banner-name strong{font-size:21px}.profile-banner-name>.brand-icon{width:22px;height:22px}.profile-banner-subtitle,.profile-banner-bio{font-size:10px}.profile-banner-location{font-size:9px}.profile-banner-arrow{right:10px;top:6px;font-size:21px}.github-banner-readme{gap:10px;flex-basis:43%;padding-left:12px}.github-banner-animation,.github-banner-animation svg{height:24px}.github-banner-models{gap:10px}.github-model{font-size:8px;gap:5px}.github-model img{width:18px;height:18px}}
@media(prefers-reduced-motion:reduce){.profile-banner-video{display:none}.profile-avatar-frame{display:none}.github-profile-typing .t{animation:none!important;opacity:0}.github-profile-typing .t:first-of-type{opacity:1}}
.materials-category{font-size:clamp(18px,2.6vh,27px);margin:28px 0 14px;font-weight:1000}.materials{grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:24px}.material-row{gap:18px;min-width:0;box-shadow:4px 4px 0 var(--ink);transition:transform 150ms var(--ease-out),background 150ms}.material-info{display:flex;flex-direction:column;gap:9px;min-width:0}.material-info strong{font-size:16px;line-height:1.5;overflow-wrap:anywhere}.material-meta{font-size:11px;color:#645943;font-weight:700}.material-row>b{font-size:12px;white-space:nowrap;flex-shrink:0}@media(hover:hover) and (pointer:fine){.material-row:hover{background:#ffde57;transform:translateY(-2px)}}@media(max-height:500px) and (orientation:landscape){.materials-category{font-size:18px;margin:20px 0 10px}.materials{gap:12px;margin-bottom:18px}.material-row{padding:14px;gap:10px}.material-info strong{font-size:12px}.material-meta{font-size:9px}.material-row>b{font-size:10px}}
