@import "https://fonts.googleapis.com/css2?family=Press+Start+2P&display=swap";:root{--bg:#0f1208;--screen-bg:#b2bd08;--pixel-on:#000;--ink:#000000eb;--ink-soft:#000000b3;--ink-border:#000c;--surface:#b2bd08e6;--surface-inverse:#000000e0;--on-inverse:#d8ddb5;--retro-font:"Press Start 2P", ui-monospace, monospace;--lcd-text-lg:clamp(10px, 2.2vw, 16px);--lcd-text-md:clamp(8px, 1.4vw, 12px);--lcd-text-sm:clamp(6px, 1vw, 9px)}html,body{background-color:var(--bg);width:100%;height:100%;margin:0;font-family:system-ui,sans-serif;overflow:hidden}.container{box-sizing:border-box;width:100%;height:100dvh;padding:env(safe-area-inset-top,0px) env(safe-area-inset-right,0px) env(safe-area-inset-bottom,0px) env(safe-area-inset-left,0px);align-items:stretch;display:flex;overflow:hidden}.game-shell{box-sizing:border-box;flex:1;grid-template-rows:1fr auto;width:100%;min-width:0;min-height:0;display:grid}.nokia-screen-inner{background:var(--screen-bg);width:100%;height:min(100%, calc(100% * var(--screen-height-ratio,.5714)));max-height:100%;image-rendering:pixelated;border:0;margin:auto;position:relative;overflow:hidden}.game-shell.is-landscape{--lcd-text-lg:clamp(12px, 2.6cqw, 22px);--lcd-text-md:clamp(10px, 2cqw, 16px);--lcd-text-sm:clamp(9px, 1.6cqw, 13px);justify-content:center;align-items:center;display:flex;container-type:size}.game-shell.is-landscape .nokia-screen-inner{width:min(100cqw, calc(100cqh * var(--screen-pixel-cols,336) / var(--screen-pixel-rows,192)));height:min(100cqh, calc(100cqw * var(--screen-pixel-rows,192) / var(--screen-pixel-cols,336)));max-width:100%;max-height:100%;margin:0}.game-shell.is-landscape .controls-hint{left:env(safe-area-inset-left,0px);right:env(safe-area-inset-right,0px);bottom:env(safe-area-inset-bottom,0px);z-index:5;position:fixed}.game-shell.is-portrait{grid-template-rows:1fr auto;overflow:hidden}#phone{aspect-ratio:50/110;box-sizing:border-box;perspective:1000px;transform-origin:50% 36%;max-width:100%;height:100%;max-height:100%;margin:0 auto;padding:5%;transition:transform .5s cubic-bezier(.25,1,.5,1);container-type:inline-size;&.is-zoomed{transform:scale(1.6)translateY(8%)}--lcd-text-lg:clamp(10px, 4.5cqw, 16px);--lcd-text-md:clamp(8px, 3.5cqw, 12px);--lcd-text-sm:clamp(6px, 2.8cqw, 10px);& button{cursor:pointer;&:focus-visible{outline:none}}& #cover{width:100%;height:100%;transform-style:preserve-3d;background-color:#303848;border-radius:12% 12% 15% 15%/25% 25% 40% 40%;position:relative;transform:rotateX(5deg)rotateY(-3deg);box-shadow:0 12px 25px #000000b3,-4px 0 12px #00000080,4px 0 12px #0006,inset 0 -2px 8px #ffffff26,inset 0 4px 12px #0006,0 0 0 3px #0000004d;& #speaker{border-radius:15px/45px;flex-direction:column;justify-content:center;align-items:center;gap:9%;width:8%;height:10%;display:flex;position:absolute;top:5%;left:50%;transform:translate(-50%);box-shadow:inset 0 1.5px 4px #000c,0 1px 3px #0009;& .hole{aspect-ratio:2;background:radial-gradient(circle at 30%,#111 40%,#000 80%);border-radius:60%;width:40%}}& #label{color:#e8e8e8;background:linear-gradient(145deg,#303848 0%,#404858 50%,#282838 100%);padding:0 4px;font-family:monospace;font-size:clamp(14px,5cqw,20px);font-weight:700;position:absolute;top:18%;left:50%;transform:translate(-50%);box-shadow:inset 0 2px 6px #000000d9,inset 0 -1px 3px #28303880,inset -1.5px 0 4px #000000bf,inset 1.5px 0 4px #000000a6,0 .5px 2px #1e2630b3,0 1px 3px #00000080}& #screen{background-color:var(--screen-bg);width:70%;height:22%;color:var(--pixel-on);box-sizing:border-box;border-radius:7px;padding:clamp(2px,1.2cqw,6px) clamp(4px,2.2cqw,12px);position:absolute;top:25%;left:50%;transform:translate(-50%);& .nokia-screen-inner{background:0 0;border-radius:4px;width:100%;height:100%}}& #light-ring{box-sizing:border-box;border:15px solid #b6b6bd;border-radius:20% 20% 70% 70%/60% 60% 55% 55%;width:95%;height:65%;position:absolute;top:0%;left:50%;transform:translate(-50%);box-shadow:0 0 0 1px #fff6,0 1px 2px #0006,inset 0 1px 3px #fff9,inset 0 -1px 2px #5a5a5fcc,inset -1px 0 2px #ffffff4d,inset 1px 0 2px #646469b3;& #cont-key-select{background-color:#b6b6bd;border-radius:60% 60% 70% 70%/45% 45% 100% 100%;width:77%;height:18%;position:absolute;bottom:0%;left:50%;transform:translate(-50%);& #key-select{background:#b6b6bd;border:2px solid #000;border-radius:25% 25% 70% 70%/25% 25% 100% 100%;width:55%;height:40%;transition:transform .1s,filter .1s;position:absolute;top:0;left:50%;transform:translate(-50%);box-shadow:0 1px 10px #000000b3,-1px 0 4px #00000080,1px 0 3px #0006,inset 0 -2px 6px #ffffff40,inset 0 2px 4px #0006;&:before{content:"";background-color:#3094d7;border-radius:0 0 50px 50px/10px 10px 20px 20px;width:50%;height:20%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}&:active{filter:brightness(.9);transform:translate(-50%)translateY(1px)}}}& #key-cancel{background:#b6b6bd;border:2px solid #000;border-radius:45% 45% 25% 25%/45% 45% 100% 100%;width:20%;height:7%;transition:transform .1s,filter .1s;position:absolute;bottom:3%;left:11%;transform:rotate(38deg);box-shadow:0 1px 10px #000000b3,-1px 0 4px #00000080,1px 0 3px #0006,inset 0 -2px 6px #ffffff40,inset 0 2px 4px #0006;& span{color:#000;font-family:monospace;font-size:clamp(10px,4cqw,20px);display:block;transform:rotate(-38deg)}&:active{filter:brightness(.9);transform:rotate(38deg)translateY(1.5px)}}& #cont-key-arrows{background:#b6b6bd;border:2px solid #000;border-radius:25% 25% 45% 45%;width:40%;height:7%;position:absolute;bottom:0;right:8%;transform:rotate(-30deg);box-shadow:0 1px 10px #000000b3,-1px 0 4px #00000080,1px 0 3px #0006,inset 0 -2px 6px #ffffff40,inset 0 2px 4px #0006;& button{background:0 0;border:0;font-size:clamp(14px,8cqw,40px);line-height:0;transition:transform .1s,filter .1s}& #key-left{border-radius:35% 0% 0% 35%;width:50%;height:100%;position:absolute;bottom:10%;left:0;&:active{filter:brightness(.9);transform:translateY(1px)}}& #key-right{border-radius:0% 35% 35% 0%;width:50%;height:100%;position:absolute;bottom:10%;right:0;&:active{filter:brightness(.9);transform:translateY(1px)}}}}& #keypad{grid-template-rows:repeat(4,1fr);grid-template-columns:repeat(3,1fr);gap:7%;width:80%;height:28%;display:grid;position:absolute;bottom:4%;left:50%;transform:translate(-50%);& .key{color:#173f21;cursor:pointer;background-color:#d2d1ea;border:0;border-radius:45% 45% 55% 55%/60% 60% 45% 45%;width:100%;height:75%;font-size:clamp(8px,3.5cqw,14px);font-weight:700;line-height:1;transition:all .1s;box-shadow:0 3px 8px #000000b3,-1px 1px 3px #00000080,1px 1px 3px #0006,inset 0 -2px 6px #ffffff40,0 0 0 1.5px #0009,inset 2px 2px 4px #0000004d;&:nth-child(3n+1){margin-top:-15%;transform:rotate(10deg)translateY(0)rotateX(8deg)}&:nth-child(3n+2){transform:rotate(0)translateY(0)rotateX(8deg)}&:nth-child(3n){margin-top:-15%;transform:rotate(-10deg)translateY(0)rotateX(8deg)}& span{color:#173f21;letter-spacing:.5px;font-size:clamp(6px,2.5cqw,10px);font-weight:400}&#asterisk{padding-top:5%;font-size:clamp(14px,6cqw,24px)}&#hash{padding-top:5%;font-size:clamp(10px,4.5cqw,18px)}&:nth-child(3n+1):active{transform:rotate(10deg)translateY(1.5px)rotateX(4deg);box-shadow:0 1px 3px #000000b3,inset 0 -1px 3px #ffffff40,0 0 0 1.5px #0009,inset 2px 2px 4px #0000004d}&:nth-child(3n+2):active{transform:rotate(0)translateY(1.5px)rotateX(4deg);box-shadow:0 1px 3px #000000b3,inset 0 -1px 3px #ffffff40,0 0 0 1.5px #0009,inset 2px 2px 4px #0000004d}&:nth-child(3n):active{transform:rotate(-10deg)translateY(1.5px)rotateX(4deg);box-shadow:0 1px 3px #000000b3,inset 0 -1px 3px #ffffff40,0 0 0 1.5px #0009,inset 2px 2px 4px #0000004d}}}}}@media (width>=1200px){#phone{aspect-ratio:55/110}}@media (width>=1400px){#phone{aspect-ratio:58/110}}.controls-hint,.instructions{color:#d8ddb5;text-align:center;letter-spacing:.6px;background:#00000059;padding:8px 12px;font-size:12px}.controls-hint{justify-content:center;gap:18px;display:flex}.instructions strong{color:#fff}.screen-resolution-grid{pointer-events:none;background-image:linear-gradient(90deg,#00000026 1px,#0000 1px),linear-gradient(#00000026 1px,#0000 1px);background-size:calc(100% / var(--screen-pixel-cols,84)) calc(100% / var(--screen-pixel-rows,48));position:absolute;inset:0}.dev-tools-dock{z-index:40;align-items:center;gap:8px;display:flex;position:fixed;bottom:12px;right:12px}.asset-viewer-toggle,.dev-tool-button{color:#d8ddb5;letter-spacing:.5px;cursor:pointer;background:#080a04e6;border:1px solid #d8ddb580;border-radius:8px;padding:8px 10px;font-size:12px}.asset-viewer-panel{z-index:39;color:#d8ddb5;background:#080a04f2;border:1px solid #d8ddb573;border-radius:10px;gap:8px;width:min(92vw,360px);max-height:calc(100vh - 72px);padding:10px;display:grid;position:fixed;bottom:64px;right:12px;overflow:auto}.asset-viewer-row{gap:4px;display:grid}.asset-viewer-row label,.asset-viewer-checkbox{font-size:12px}.asset-viewer-row select,.asset-viewer-row input[type=range]{width:100%}.asset-viewer-meta{justify-content:space-between;align-items:center;font-size:12px;display:flex}.asset-preview-canvas{background:var(--screen-bg);width:100%;height:auto;image-rendering:pixelated;border-radius:4px}.asset-edit-button{width:100%}.asset-editor-modal-backdrop{z-index:60;background:#000000b3;padding:12px;display:flex;position:fixed;inset:0}.asset-editor-modal{color:#d8ddb5;background:#080a04fa;border:1px solid #d8ddb573;border-radius:10px;grid-template-rows:auto auto 1fr auto;gap:8px;width:100%;height:100%;padding:10px;display:grid}.asset-editor-header{align-items:center;gap:10px;display:flex}.asset-editor-controls{align-items:center;gap:8px;display:flex}.asset-editor-controls input[type=range]{width:220px}.asset-editor-canvas-wrap{background:#101306;border:1px solid #d8ddb559;border-radius:6px;overflow:auto}.asset-editor-canvas{image-rendering:pixelated;cursor:crosshair;display:block}.asset-editor-output{color:#d8ddb5;background:#00000073;border:1px solid #d8ddb559;border-radius:6px;width:100%;min-height:120px;padding:8px;font-family:monospace;font-size:11px}.flow-controller-dock{z-index:40;position:fixed;bottom:12px;left:12px}.flow-controller-panel{z-index:39;color:#d8ddb5;background:#080a04f2;border:1px solid #d8ddb573;border-radius:10px;gap:10px;width:min(92vw,360px);max-height:calc(100vh - 72px);padding:10px;display:grid;position:fixed;bottom:64px;left:12px;overflow:auto}.flow-controller-actions{gap:8px;display:flex}.flow-controller-meta{font-size:12px}.resume-overlay{box-sizing:border-box;color:var(--ink);font-family:var(--retro-font);--resume-title:clamp(6px, 1vw, 10px);--resume-body:clamp(5.5px, .8vw, 8.5px);pointer-events:none;background:0 0;padding:clamp(2px,.4vw,5px) clamp(8px,2.2vw,14px) clamp(2px,.4vw,5px) clamp(4px,1.2vw,8px);position:absolute;overflow:hidden}.game-shell.is-landscape .resume-overlay{--resume-title:var(--lcd-text-md);--resume-body:var(--lcd-text-sm);padding:clamp(2px,.6cqw,8px) clamp(6px,2cqw,16px) clamp(2px,.6cqw,8px) clamp(4px,1.4cqw,12px)}.resume-overlay-scroll{scrollbar-width:none;-ms-overflow-style:none;overscroll-behavior:contain;touch-action:pan-y;-webkit-overflow-scrolling:touch;height:100%;overflow-y:auto}.resume-overlay-scroll::-webkit-scrollbar{display:none}.nokia-scrollbar-track{border-left:1.5px solid var(--ink);pointer-events:none;background:0 0;width:4px;position:absolute;top:clamp(2px,.4vw,5px);bottom:clamp(2px,.4vw,5px);right:1px}.nokia-scrollbar-thumb{background:var(--ink);width:3.5px;position:absolute;left:-2px}.resume-item{border-bottom:1px dashed #0000004d;margin-bottom:clamp(3px,.6vw,6px);padding-bottom:clamp(2px,.4vw,5px)}.game-shell.is-landscape .resume-item{margin-bottom:clamp(4px,1cqw,10px);padding-bottom:clamp(3px,.8cqw,8px)}.resume-item:last-child{border-bottom:none}.resume-item-head{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.resume-item h3{font-size:var(--resume-title);letter-spacing:.04em;margin:0}.resume-item-date{font-size:var(--resume-body);color:var(--ink-soft);white-space:nowrap}.resume-item-sub{color:var(--ink-soft);font-size:var(--resume-body)}.resume-item p{font-size:var(--resume-body);margin:clamp(1px,.2vw,3px) 0 0;line-height:1.35}.game-shell.is-landscape .resume-item p{margin:clamp(2px,.4cqw,4px) 0 0}.projects-overlay{background:var(--screen-bg);color:var(--ink);font-family:var(--retro-font);flex-direction:column;gap:clamp(8px,1.6vw,14px);padding:clamp(10px,2.6vw,20px) 0;display:flex;position:absolute;inset:0}.projects-lead{font-size:var(--lcd-text-sm);color:var(--ink-soft);margin:0;padding:0 clamp(10px,2.6vw,20px);line-height:1.5}.projects-prompt{color:var(--ink);font-family:var(--retro-font);font-size:var(--lcd-text-md);letter-spacing:.08em;text-align:center;cursor:pointer;background:0 0;border:0;margin:0 auto;padding:clamp(4px,.8vw,8px)}.projects-prompt.is-blinked-off{visibility:hidden}.projects-header{justify-content:space-between;align-items:center;gap:12px;padding:0 clamp(10px,2.6vw,20px);display:flex}.projects-header h2{font-size:var(--lcd-text-lg);letter-spacing:.08em;margin:0}.projects-back{border:2px solid var(--ink-border);color:var(--ink);font-family:var(--retro-font);font-size:var(--lcd-text-sm);letter-spacing:.06em;cursor:pointer;white-space:nowrap;background:0 0;padding:clamp(4px,.8vw,8px) clamp(8px,1.4vw,12px);text-decoration:none}.cv-viewer-title{text-align:center;font-size:var(--lcd-text-md);letter-spacing:.06em;flex:1;margin:0}.cv-viewer-header{gap:8px}.cv-viewer-downloads{flex-shrink:0;gap:6px;display:flex}.cv-download-link{text-decoration:none}a.project-card-link{text-align:left;color:inherit;cursor:pointer;font:inherit;text-decoration:none;display:block}.cv-viewer-frame{border:2px solid var(--ink-border);background:var(--screen-bg);flex:1;width:calc(100% - 2*clamp(10px,2.6vw,20px));min-height:0;margin:0 clamp(10px,2.6vw,20px)}.cv-viewer-fullscreen{z-index:40;box-sizing:border-box;padding:max(12px, env(safe-area-inset-top,0px)) max(12px, env(safe-area-inset-right,0px)) max(12px, env(safe-area-inset-bottom,0px)) max(12px, env(safe-area-inset-left,0px));background:var(--screen-bg);color:var(--ink);font-family:var(--retro-font);--lcd-text-lg:clamp(12px, 4.2vw, 18px);--lcd-text-md:clamp(10px, 3.4vw, 14px);--lcd-text-sm:clamp(9px, 2.8vw, 12px);flex-direction:column;gap:12px;display:flex;position:fixed;inset:0}.cv-viewer-fullscreen .projects-header{flex-shrink:0;padding:0}.cv-viewer-fullscreen .cv-viewer-frame{background:#fff;border-width:2px;width:100%;margin:0}.projects-back:hover,.projects-back:focus-visible{background:var(--surface-inverse);color:var(--on-inverse);outline:none}.projects-scroll-wrapper{flex-direction:column;flex:1;min-height:0;display:flex;position:relative;overflow:hidden}.projects-scroll{touch-action:pan-y;-webkit-overflow-scrolling:touch;scrollbar-width:none;-ms-overflow-style:none;overscroll-behavior:contain;flex:1;grid-template-columns:repeat(auto-fill,minmax(min(280px,100%),1fr));align-content:start;gap:clamp(6px,1.2vw,10px);min-height:0;padding-left:clamp(10px,2.6vw,20px);padding-right:clamp(10px,2.6vw,20px);display:grid;overflow:hidden auto}.projects-scroll::-webkit-scrollbar{display:none}.project-card{box-sizing:border-box;border:2px solid var(--ink-border);width:100%;height:100%;color:var(--ink);font-family:var(--retro-font);text-align:left;cursor:pointer;background:0 0;flex-direction:column;padding:clamp(8px,1.4vw,12px);text-decoration:none;display:flex}.project-card-head{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.project-card-title{align-items:baseline;gap:clamp(4px,.8vw,8px);min-width:0;display:flex}.project-tag{background:var(--surface-inverse);color:var(--on-inverse);font-size:var(--lcd-text-sm);letter-spacing:.08em;white-space:nowrap;flex:none;padding:.15em .45em}.project-card:hover .project-tag,.project-card:focus-visible .project-tag{background:var(--on-inverse);color:var(--surface-inverse)}.project-card h3{font-size:var(--lcd-text-md);letter-spacing:.04em;margin:0}.project-card-date{font-size:var(--lcd-text-sm);color:var(--ink-soft);white-space:nowrap}.project-card p{font-size:var(--lcd-text-sm);color:var(--ink-soft);margin:clamp(4px,.9vw,8px) 0;line-height:1.5}.project-card-url{font-size:var(--lcd-text-sm);word-break:break-all;margin-top:auto;text-decoration:underline}.project-card-url-hint,.project-card-url-done{display:none}@media (hover:hover){.project-card:hover .project-card-url-idle{display:none}.project-card:hover .project-card-url-hint{display:inline}}.project-card:focus-visible .project-card-url-idle{display:none}.project-card:focus-visible .project-card-url-hint{display:inline}.project-card-url.is-copied .project-card-url-idle,.project-card-url.is-copied .project-card-url-hint{display:none}.project-card-url.is-copied .project-card-url-done{display:inline}.project-card:hover,.project-card:focus-visible{background:var(--surface-inverse);outline:none}.project-card:hover h3,.project-card:hover p,.project-card:hover .project-card-date,.project-card:hover .project-card-url,.project-card:focus-visible h3,.project-card:focus-visible p,.project-card:focus-visible .project-card-date,.project-card:focus-visible .project-card-url{color:var(--on-inverse)}body{user-select:none}.onboarding-overlay{background:var(--screen-bg);z-index:100;box-sizing:border-box;justify-content:center;align-items:center;padding:10px;display:flex;position:absolute;inset:0}.onboarding-box{border:2px solid var(--ink-border);box-sizing:border-box;width:100%;font-family:var(--retro-font);color:var(--ink);background:0 0;flex-direction:column;align-items:center;gap:8px;padding:8px;display:flex}.onboarding-title{font-size:var(--lcd-text-lg);border-bottom:2px solid var(--ink-border);text-align:center;width:100%;margin:0;padding-bottom:4px;font-weight:700}.onboarding-list{width:100%;font-size:var(--lcd-text-md);flex-direction:column;gap:6px;margin:4px 0;padding:0;list-style:none;display:flex}.onboarding-list li{justify-content:space-between;align-items:center;display:flex}.key-badge{background:var(--ink);color:var(--screen-bg);font-weight:700;font-size:var(--lcd-text-sm);border-radius:2px;padding:1px 4px}.onboarding-ok{font-size:var(--lcd-text-sm);margin-top:4px;animation:1s step-end infinite onboarding-blink}@keyframes onboarding-blink{50%{opacity:0}}
