@font-face{font-family:Inter;font-style:normal;font-weight:300 700;font-display:swap;src:url(/fonts/Inter-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:300 700;font-display:swap;src:url(/fonts/Inter-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:"Press Start 2P";font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/PressStart2P-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"Press Start 2P";font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/PressStart2P-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--sky-blue: #0bbaf9;--night-sky: #090302;--dark-blue: #0d1821;--primary: #ffd700;--accent: #ff6f61;--text-light: #f4f4f4;--panel-bg: rgba(13, 24, 33, .82);--pixel-font: "Press Start 2P", monospace;--floor-h: 72px;--ground: 64px;--char-size: 72px;--panel-top: max(96px, 12vh);--safe-top: env(safe-area-inset-top, 0px);--safe-right: env(safe-area-inset-right, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-left: env(safe-area-inset-left, 0px);--floor-y: calc(var(--floor-h) + var(--safe-bottom));--ground-y: calc(var(--ground) + var(--safe-bottom));--reserve: calc(var(--ground-y) + var(--char-size) + 52px)}*{margin:0;padding:0;box-sizing:border-box}html{height:100%}body{min-height:100%;font-family:Inter,sans-serif;color:var(--text-light);background-color:var(--sky-blue)}.hidden{display:none!important}.icon{display:inline-block;width:1em;height:1em;fill:currentColor;vertical-align:-.125em;flex-shrink:0}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.back-link{display:inline-flex;align-items:center;gap:.6em;font-family:var(--pixel-font);font-size:.7rem;line-height:1.4;color:var(--primary);text-decoration:none;text-shadow:1px 1px 0 #000}.back-link:hover{text-decoration:underline}body.case-study{--cs-text: #dfe5ec;--cs-muted: #9fb0c0;--cs-line: rgba(255, 255, 255, .1);--cs-surface: #142433;--cs-measure: 760px;background-color:var(--dark-blue);color:var(--cs-text);line-height:1.7;-webkit-font-smoothing:antialiased}.cs-body a{color:var(--sky-blue)}.case-study a:focus-visible,.case-study .cs-table:focus-visible,.case-study .cs-btn:focus-visible{outline:2px solid var(--primary);outline-offset:3px}.cs-topbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:calc(.9rem + var(--safe-top)) calc(5vw + var(--safe-right)) .9rem calc(5vw + var(--safe-left));background:#0d1821e0;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--cs-line)}.cs-topbar .back-link,.case-study .cs-topbar-link{padding:.75rem 0;margin:-.75rem 0}.case-study .cs-topbar-link{font-size:.85rem;font-weight:600;color:var(--cs-muted);text-decoration:none}.case-study .cs-topbar-link:hover{color:var(--text-light)}.cs-hero{position:relative}.cs-cover{display:block;width:100%;height:clamp(180px,34vh,360px);object-fit:cover;-webkit-mask-image:linear-gradient(to bottom,#000 55%,transparent);mask-image:linear-gradient(to bottom,#000 55%,transparent)}.cs-hero-text{position:relative;max-width:var(--cs-measure);margin:-4.5rem auto 0;padding:0 5vw;box-sizing:content-box}.cs-hero-text:first-child{margin-top:3rem}.cs-icon{display:block;font-size:clamp(2.8rem,8vw,4rem);line-height:1;margin-bottom:1rem;filter:drop-shadow(0 4px 10px rgba(0,0,0,.5))}.cs-kicker{font-size:.8rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--primary);margin-bottom:.6rem}.cs-title{font-family:var(--pixel-font);font-weight:400;font-size:clamp(1.05rem,3.6vw,1.9rem);line-height:1.5;color:var(--text-light);text-shadow:3px 3px 0 #000;text-wrap:balance}.cs-body{overflow-wrap:break-word;max-width:var(--cs-measure);margin:0 auto;padding:2.5rem 5vw 1rem;box-sizing:content-box;font-size:1.05rem}.cs-layout-slides{--cs-measure: 1080px}.cs-layout-pdf{--cs-measure: 880px}.cs-body>*+*,.cs-column>*+*{margin-top:1.1em}.cs-body h2,.cs-body h3,.cs-body h4{color:var(--text-light);line-height:1.3;text-wrap:balance}.cs-body h2{font-size:1.6rem;margin-top:2.4em;padding-top:1.2em;border-top:1px solid var(--cs-line)}.cs-body>h2:first-child{margin-top:0;padding-top:0;border-top:0}.cs-body h3{font-size:1.25rem;margin-top:2em}.cs-body h4{font-size:1.05rem;margin-top:1.6em}.cs-body :is(h2,h3,h4) u{text-decoration:none}.cs-body u{text-decoration-color:#ffd7008c;text-decoration-thickness:2px;text-underline-offset:3px}.cs-body a{text-underline-offset:2px}.cs-body strong{color:var(--text-light);font-weight:700}.cs-body ul,.cs-body ol{padding-left:1.4em}.cs-body li+li,.cs-body li>ul,.cs-body li>ol{margin-top:.45em}.cs-body li::marker{color:var(--primary)}.cs-body code{font-size:.9em;padding:.1em .35em;border-radius:4px;background:var(--cs-surface)}.cs-body hr{border:0;border-top:1px solid var(--cs-line);margin:2.4em 0}.hl-blue{color:#6cc4ff}.hl-green{color:#7ddf9a}.hl-orange{color:#ffae5c}.hl-yellow{color:var(--primary)}.hl-red{color:#ff8a7f}.hl-pink{color:#ff9ccf}.hl-purple{color:#c3a6ff}.hl-brown{color:#e3b98f}.hl-gray{color:var(--cs-muted)}.cs-image{width:min(100%,var(--w, 100%));margin-inline:auto}.cs-image a{display:block;border-radius:10px;overflow:hidden;background:var(--cs-surface);box-shadow:0 6px 24px #00000059;cursor:zoom-in}.cs-image img{display:block;width:100%;height:auto}.cs-image figcaption{margin-top:.6em;font-size:.85rem;color:var(--cs-muted);text-align:center}.cs-layout-slides .cs-image+.cs-image{margin-top:2rem}.cs-columns{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:1.5rem 2rem;align-items:start}.cs-column>:first-child{margin-top:0}.cs-callout{display:flex;gap:.9rem;padding:1rem 1.2rem;border-radius:10px;border-left:4px solid var(--primary);background:var(--cs-surface)}.cs-callout-icon{font-size:1.3rem;line-height:1.3}.cs-table{overflow-x:auto;border:1px solid var(--cs-line);border-radius:10px}.cs-table table{width:100%;min-width:480px;border-collapse:collapse;font-size:.9rem;line-height:1.5}.cs-table th,.cs-table td{padding:.65em .9em;text-align:left;vertical-align:top;border-bottom:1px solid var(--cs-line)}.cs-table th{background:var(--cs-surface);color:var(--text-light)}.cs-table tr:last-child td{border-bottom:0}.cs-summary{padding:1.4rem 1.5rem;border:1px solid var(--cs-line);border-left:4px solid var(--primary);border-radius:12px;background:var(--cs-surface)}.cs-summary dl{display:grid;gap:.9rem}.cs-summary dt{font-size:.75rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--primary)}.cs-summary dd{margin-top:.15rem;line-height:1.55}.cs-summary .cs-btn{margin-top:1.2rem}.cs-body>.cs-summary+h2{margin-top:2rem}.cs-pdf-actions{display:flex;flex-wrap:wrap;gap:.75rem}.cs-body .cs-page{margin-top:1.25rem}.cs-more-pages>summary{margin-top:1.5rem;list-style:none;cursor:pointer}.cs-more-pages>summary::-webkit-details-marker{display:none}.cs-more-pages[open]>summary{display:none}.cs-pdf-text{border:1px solid var(--cs-line);border-radius:10px;padding:.9rem 1.1rem}.cs-pdf-text>summary{font-weight:700;cursor:pointer}.cs-pdf-text section{margin-top:1.2rem;font-size:.95rem}.cs-pdf-text h3{font-size:.8rem;letter-spacing:.06em;text-transform:uppercase;color:var(--cs-muted)}.cs-pdf-text p{margin-top:.5em;overflow-wrap:anywhere}.case-study .cs-btn{display:inline-flex;align-items:center;gap:.55em;padding:.75em 1.2em;border:2px solid var(--primary);border-radius:8px;background:var(--primary);color:var(--dark-blue);font-weight:700;font-size:.9rem;text-decoration:none;box-shadow:3px 3px #000;transition:transform .1s ease,box-shadow .1s ease}.case-study .cs-btn:hover{transform:translate(-1px,-1px);box-shadow:4px 4px #000}.case-study .cs-btn:active{transform:translate(2px,2px);box-shadow:1px 1px #000}.case-study .cs-btn-ghost{background:transparent;color:var(--primary)}.cs-footer{max-width:var(--cs-measure);margin:3rem auto 0;padding:2rem 5vw calc(3rem + var(--safe-bottom));box-sizing:content-box;border-top:1px solid var(--cs-line)}.cs-contact{padding:1.6rem 1.5rem;border-radius:12px;background:var(--cs-surface);text-align:center}.cs-contact-title{font-family:var(--pixel-font);font-weight:400;font-size:clamp(.8rem,2.6vw,1rem);line-height:1.5;color:var(--primary);text-shadow:2px 2px 0 #000}.cs-contact p{margin:.7rem auto 1.2rem;max-width:34rem;color:var(--cs-muted)}.cs-contact-links{display:flex;flex-wrap:wrap;justify-content:center;gap:.75rem}.cs-footer-nav{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1.5rem;margin-top:2rem}.cs-layout-slides+.cs-footer{--cs-measure: 1080px}.cs-layout-pdf+.cs-footer{--cs-measure: 880px}.case-study .cs-next{display:flex;flex-direction:column;align-items:flex-end;margin-left:auto;text-align:right;text-decoration:none}.cs-next-label{font-size:.75rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--cs-muted)}.cs-next-title{font-weight:700;font-size:1.05rem;color:var(--text-light)}.case-study .cs-next:hover .cs-next-title{color:var(--primary)}.projects-index{background:#0a0418 url(/images/retro_space.jpg) center / cover fixed}.cs-index{max-width:1120px;margin:0 auto;padding:3rem calc(5vw + var(--safe-right)) calc(4rem + var(--safe-bottom)) calc(5vw + var(--safe-left));box-sizing:content-box}.cs-index-title{font-family:var(--pixel-font);font-weight:400;font-size:clamp(1.2rem,5vw,2rem);line-height:1.4;color:var(--primary);text-shadow:3px 3px 0 #000}.cs-index-intro{margin:.8rem 0 2.2rem;color:var(--cs-text)}.cs-cards{list-style:none;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,250px),1fr));gap:1.25rem}.case-study .cs-card{display:flex;flex-direction:column;height:100%;overflow:hidden;border:2px solid rgba(255,255,255,.12);border-radius:12px;background:#0d1821e6;color:var(--text-light);text-decoration:none;transition:transform .15s ease,border-color .15s ease,box-shadow .15s ease}.case-study .cs-card:hover,.case-study .cs-card:focus-visible{transform:translateY(-3px);border-color:var(--primary);box-shadow:4px 4px #000}.cs-card img{display:block;width:100%;aspect-ratio:16 / 9;object-fit:cover;background:var(--cs-surface)}.cs-card-text{display:flex;flex-direction:column;gap:.35rem;padding:.9rem 1rem 1.1rem}.cs-card-kind{font-size:.75rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--primary)}.cs-card-title{font-weight:700;line-height:1.35}.cs-card-summary{font-size:.85rem;line-height:1.45;color:var(--cs-muted)}.cs-index-heading{margin:2.5rem 0 1rem;font-family:var(--pixel-font);font-weight:400;font-size:.9rem;color:var(--text-light);text-shadow:2px 2px 0 #000}.cs-index-heading+.cs-index-note{margin:-.4rem 0 1rem;color:var(--cs-muted)}.cs-cards-featured{grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr))}.skip-link{position:fixed;top:calc(8px + var(--safe-top));left:calc(8px + var(--safe-left));z-index:5000;padding:.7rem 1rem;border-radius:8px;background:var(--primary);color:var(--dark-blue);font-weight:700;text-decoration:none;transform:translateY(-200%)}.skip-link:focus{transform:none;outline:3px solid #000}@media(max-width:768px){.cs-topbar .back-link{font-size:.6rem}.cs-body{font-size:1rem;padding-top:2rem}.cs-body h2{font-size:1.35rem}.cs-body h3{font-size:1.15rem}.projects-index{background-attachment:scroll}}body.game{height:100%;overflow:hidden;transition:background-color .6s ease;-webkit-tap-highlight-color:transparent}#game-wrapper{-webkit-user-select:none;user-select:none}#game-wrapper img{-webkit-user-drag:none}#game-wrapper .content{-webkit-user-select:text;user-select:text}button{touch-action:manipulation}body.game a:focus-visible,body.game button:focus-visible{outline:3px solid var(--primary);outline-offset:3px;border-radius:4px}.scene .content:focus-visible{outline:3px solid var(--primary);outline-offset:2px}body.game.night{background-color:var(--night-sky)}.intro{position:fixed;inset:0;background-image:url(/images/background1.webp);background-repeat:repeat;background-size:auto 100%;display:flex;align-items:center;justify-content:center;padding:16px;z-index:2000}html.returning .intro{display:none}.intro-content{max-width:720px;text-align:center;background-color:#0d1821cc;padding:2rem;border-radius:12px;box-shadow:0 4px 10px #00000080}.intro-title{font-family:var(--pixel-font);color:var(--primary);font-size:clamp(1.1rem,5vw,1.8rem);line-height:1.4;margin-bottom:1.2rem;text-shadow:2px 2px 0 #000}.intro-subtitle{font-size:1rem;margin-bottom:1.5rem}.start-btn{font-family:var(--pixel-font);background-color:var(--primary);color:var(--dark-blue);padding:.8rem 1.6rem;border:none;border-radius:8px;cursor:pointer;box-shadow:0 4px #c5a200;transition:transform .1s}.start-btn:hover{transform:translateY(-3px)}.intro-skip,.intro-noscript{margin-top:1.3rem;font-size:.9rem}.intro-noscript{font-size:1rem}.intro-skip a,.intro-noscript a{color:var(--primary);font-weight:600}.hud{position:fixed;top:0;left:0;right:0;display:flex;align-items:flex-start;gap:12px;padding:calc(var(--hud-pad-y, 12px) + var(--safe-top)) calc(var(--hud-pad-x, 12px) + var(--safe-right)) var(--hud-pad-y, 12px) calc(var(--hud-pad-x, 12px) + var(--safe-left));z-index:1000;pointer-events:none}.section-indicator{flex:1;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-family:var(--pixel-font);font-size:.9rem;line-height:1.4;color:var(--primary);text-shadow:2px 2px 0 #000}.score-display{display:flex;flex-direction:column;gap:8px;font-family:var(--pixel-font);background:#000000b3;padding:12px 16px;border:3px solid var(--primary);border-radius:8px;box-shadow:0 0 20px #ffd54a80}.score-item{display:flex;justify-content:space-between;align-items:center;gap:16px}.score-label{font-size:.65rem;color:#fff;text-shadow:1px 1px 0 #000;letter-spacing:1px}.score-value{font-size:.8rem;color:var(--primary);text-shadow:2px 2px 0 #000;min-width:48px;text-align:right}.hud-btn{pointer-events:auto;display:grid;place-items:center;flex-shrink:0;width:36px;height:36px;border:none;border-radius:6px;background:transparent;color:var(--primary);font-size:1.1rem;filter:drop-shadow(1px 1px 0 #000);cursor:pointer}.hud-btn:hover{background:#00000040}.audio-toggle .icon-off,.audio-toggle.off .icon-on{display:none}.audio-toggle.off .icon-off{display:inline-block}#game-wrapper{position:fixed;inset:0;overflow:hidden;z-index:10}.world{display:flex;height:100%;position:relative;z-index:2;will-change:transform}.scene{flex:0 0 100vw;height:100%;position:relative;z-index:25;display:flex;align-items:flex-start;padding-left:max(10vw,calc(var(--safe-left) + 16px));padding-top:calc(var(--panel-top) + var(--safe-top))}.scene .content{max-width:min(600px,58vw);max-height:calc(100vh - var(--panel-top) - var(--safe-top) - var(--reserve));max-height:calc(100dvh - var(--panel-top) - var(--safe-top) - var(--reserve));overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--primary) transparent;background-color:var(--panel-bg);padding:1.5rem;border-radius:12px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);box-shadow:0 4px 10px #0000004d}.scene .content.more-below{-webkit-mask-image:linear-gradient(to bottom,#000 calc(100% - 56px),rgba(0,0,0,.25));mask-image:linear-gradient(to bottom,#000 calc(100% - 56px),#00000040)}.scene h2{font-family:var(--pixel-font);font-weight:400;font-size:1.3rem;line-height:1.4;margin-bottom:1rem;color:var(--primary);text-shadow:2px 2px 0 #000}.scene h3{font-size:.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin:1.4rem 0 .7rem}.scene h2+h3{margin-top:.2rem}.scene p,.scene li{font-size:1rem;line-height:1.55;margin-bottom:.85rem}.scene p:last-child{margin-bottom:0}.scene ul{list-style:none}.highlight{color:var(--primary);font-weight:700}.tamil{color:var(--accent);font-weight:700}.scene .content-wide{width:100%}.timeline{list-style:none;display:grid;gap:.85rem}.scene .timeline li{position:relative;padding-left:1.1rem;border-left:3px solid var(--primary);line-height:1.45}.timeline-when{display:block;font-family:var(--pixel-font);font-size:.65rem;color:var(--primary);text-shadow:1px 1px 0 #000;margin-bottom:.2rem}.timeline-win{display:block;font-size:.9em;opacity:.8}@media(min-width:769px){.timeline{gap:.65rem}.timeline-when{display:inline;margin:0 .6rem 0 0}}.scene .timeline-also{margin-top:.9rem;font-size:.9em;opacity:.85}.scene .project-list{margin:.5rem 0 1.5rem}.scene .project-list:last-child{margin-bottom:0}.scene .project-list li{margin-bottom:.9rem}.project-list a{display:block}.project-name{display:block;font-family:var(--pixel-font);font-size:.8rem;line-height:1.5;color:var(--primary);text-shadow:1px 1px 0 #000}.project-desc{display:block;margin-top:.2rem;font-size:.95rem;line-height:1.45;color:var(--text-light);opacity:.85}.project-list a,.resume-link{color:var(--primary);text-decoration:none}.project-list a:hover .project-name,.resume-link:hover{text-decoration:underline}.resume-link{display:inline-block;margin-top:1rem;font-family:var(--pixel-font);font-size:.8rem;text-shadow:1px 1px 0 #000}.scene .skills-list li{margin-bottom:1.2rem}.skill-name{display:block;font-size:1rem;font-weight:600;line-height:1.4;margin-bottom:.3rem}.skill-stars{display:flex;align-items:center;gap:2px}.star-icon{width:24px;height:24px}.empty-star{font-size:1.2rem;line-height:24px;color:var(--primary)}.contact-links{display:flex;flex-wrap:wrap;gap:1rem;margin-top:1rem}.btn{display:inline-flex;align-items:center;gap:.5rem;padding:.6rem 1rem;border-radius:6px;font-weight:600;text-decoration:none;color:var(--dark-blue);background-color:var(--primary);box-shadow:0 3px #c5a200;transition:transform .1s}.btn:hover{transform:translateY(-2px)}#sky-layer,#environment-layer{position:absolute;inset:0;pointer-events:none}#sky-layer{z-index:20}#environment-layer{z-index:22}.cloud{position:absolute;height:auto;opacity:.9;animation:drift linear infinite;transition:opacity .6s ease}@keyframes drift{0%{transform:translate(0)}to{transform:translate(-20vw)}}.hill-small,.hill-tall,.grass-small,.grass-long,.end-pole{position:absolute;bottom:calc(var(--floor-y) - 4px);height:auto;pointer-events:none}.hill-small{width:15vw}.hill-tall{width:25vw}.grass-small{width:8vw}.grass-long{width:12vw}.end-pole{left:calc(var(--last-section-x, 600vw) + 75vw);z-index:50;width:auto;height:min(227px,30vh)}#floor{position:absolute;left:0;bottom:0;width:100%;height:var(--floor-y);background-image:url(/images/floor_new.png);background-repeat:repeat-x;background-size:auto 100%;z-index:100}.coin{position:absolute;bottom:calc(var(--floor-y) + 8vh);width:max(24px,3vw);height:auto;z-index:100;image-rendering:pixelated;filter:drop-shadow(0 0 5px rgba(255,215,0,.6));animation:coinFloat 3s ease-in-out infinite}.coin.collected{display:none}@keyframes coinFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}#character{position:absolute;bottom:var(--ground-y);left:12vw;width:var(--char-size);height:var(--char-size);z-index:600;transition:filter .5s ease}#character img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;visibility:hidden}#character[data-frame=stand] .frame-stand,#character[data-frame=step1] .frame-step1,#character[data-frame=step2] .frame-step2{visibility:visible}#character.face-left{transform:scaleX(-1)}.nav-hint{position:fixed;left:50%;bottom:calc(var(--ground-y) + var(--char-size) + 12px);transform:translate(-50%);display:none;align-items:center;gap:.5rem;white-space:nowrap;font-family:var(--pixel-font);font-size:.8rem;color:var(--primary);text-shadow:1px 1px 0 #000;z-index:700;animation:blink 1s infinite;pointer-events:none}.nav-hint.visible{display:flex}.nav-icon{display:inline-flex;filter:drop-shadow(1px 1px 0 #000)}.nav-icon .icon-left,.nav-icon.left .icon-right{display:none}.nav-icon.left .icon-left{display:inline-block}.nav-buttons{position:fixed;right:calc(16px + var(--safe-right));bottom:calc(var(--ground-y) + 12px);display:flex;gap:8px;z-index:700}.nav-btn{width:44px;height:44px;border-radius:50%;border:3px solid var(--primary);background:#000000b3;color:var(--primary);font-size:1rem;cursor:pointer;transition:transform .1s,opacity .2s}.nav-btn:hover:not(:disabled){transform:translateY(-2px)}.nav-btn:disabled{opacity:.35;cursor:default}.floating-score,.level-up-text{position:fixed;left:12vw;font-family:var(--pixel-font);color:var(--primary);pointer-events:none;z-index:1500}.floating-score{bottom:calc(var(--ground-y) + var(--char-size) + 8px);font-size:1rem;text-shadow:2px 2px 0 #000;animation:floatUp 1s forwards}@keyframes floatUp{0%{transform:translateY(0) scale(1);opacity:1}to{transform:translateY(-50px) scale(1.2);opacity:0}}.level-up-text{bottom:calc(var(--ground-y) + var(--char-size) + 40px);font-size:clamp(1.2rem,6vw,2.5rem);text-shadow:3px 3px 0 #000,0 0 20px var(--primary);animation:levelUpFloat 2s forwards}@keyframes levelUpFloat{0%{transform:translateY(0) scale(.5);opacity:0}20%{opacity:1;transform:translateY(-20px) scale(1)}80%{opacity:1;transform:translateY(-80px) scale(1.2)}to{transform:translateY(-120px) scale(1.3);opacity:0}}.moon{position:fixed;top:8vh;right:12vw;width:clamp(90px,14vw,200px);z-index:1;pointer-events:none;opacity:0;transition:opacity .6s ease}body.night .moon{opacity:1}body.night .cloud{opacity:0}body.night #character{filter:drop-shadow(0 0 10px #ffd700) drop-shadow(0 0 20px #ffaa00)}.dark-mode-decor{position:absolute;inset:0;pointer-events:none;z-index:1;opacity:0;visibility:hidden;transition:opacity .6s ease,visibility .6s ease}#dark-mode-stars-bg{z-index:0}body.night .dark-mode-decor{opacity:1;visibility:visible}.dark-mode-decor img{position:absolute;display:block;-webkit-user-select:none;user-select:none;transform-origin:center;animation-timing-function:linear;animation-iteration-count:infinite}.dark-mode-star{width:72px;height:auto;animation-name:drift-right-star}.dark-mode-plus{width:48px;height:auto;animation-name:drift-right-plus}.dark-mode-plus-bg{width:32px;opacity:.6}@keyframes drift-right-star{0%{transform:translate(-28vw) scale(var(--scale, 1))}to{transform:translate(110vw) scale(var(--scale, 1))}}@keyframes drift-right-plus{0%{transform:translate(-28vw) scale(var(--scale, .3))}to{transform:translate(120vw) scale(var(--scale, .3))}}@media(max-width:768px){:root{--char-size: 60px;--panel-top: 80px}.scene{padding-left:max(5vw,calc(var(--safe-left) + 12px))}.scene .content{max-width:90vw;padding:1rem}.scene h2{font-size:1rem}.project-name{font-size:.75rem}#character{left:10vw}.end-pole{left:calc(var(--last-section-x, 600vw) + 50vw)}.hud{--hud-pad-y: 8px;--hud-pad-x: 10px;gap:8px}.section-indicator{font-size:.65rem;padding-top:4px}.score-display{padding:8px 12px;gap:6px}.score-label{font-size:.625rem}.score-value{font-size:.65rem;min-width:36px}.score-item{gap:10px}.nav-hint{font-size:.6rem}}@media(max-height:520px){:root{--floor-h: 44px;--ground: 39px;--char-size: 44px;--panel-top: 64px;--reserve: calc(var(--ground-y) + var(--char-size) + 36px)}.scene .content{max-width:min(70vw,640px);padding:.9rem 1rem}.scene h2{font-size:.85rem;margin-bottom:.6rem}.scene p,.scene li{font-size:.9rem;margin-bottom:.6rem}.project-name{font-size:.65rem}.project-desc{font-size:.85rem}.hud{--hud-pad-y: 6px;--hud-pad-x: 10px}.score-display{flex-direction:row;gap:14px;padding:6px 10px}.nav-hint{font-size:.55rem;bottom:calc(var(--ground-y) + var(--char-size) + 8px)}.nav-buttons{bottom:calc(var(--ground-y) + 4px)}.nav-btn{width:36px;height:36px;font-size:.85rem}.coin{bottom:calc(var(--floor-y) + 6vh)}}@media(prefers-reduced-motion:reduce){.nav-hint,.cloud,.coin,.dark-mode-decor img,.floating-score,.level-up-text{animation:none}body.game,.case-study .cs-card,.case-study .cs-btn{transition:none}.case-study .cs-card:hover,.case-study .cs-card:focus-visible{transform:none}}.cs-not-found{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;min-height:100dvh;padding-top:0;padding-bottom:0;text-align:center}.cs-not-found .cs-pdf-actions{justify-content:center}.cs-not-found-character{width:96px;height:96px;margin-bottom:1.5rem;image-rendering:pixelated}html.lightbox-open{overflow:hidden}.lightbox{width:100vw;height:100vh;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;background:#050a0ff0;color:var(--text-light)}.lightbox::backdrop{background:transparent}.lightbox-figure{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;width:100%;height:100%;padding:calc(4rem + var(--safe-top)) calc(4.5rem + var(--safe-right)) calc(2rem + var(--safe-bottom)) calc(4.5rem + var(--safe-left))}.lightbox-img{max-width:100%;max-height:100%;min-height:0;object-fit:contain;border-radius:6px;box-shadow:0 10px 40px #0009;background:var(--cs-surface)}.lightbox-caption{font-size:.9rem;color:var(--cs-muted);text-align:center}.lightbox-bar{position:absolute;top:var(--safe-top);left:0;right:0;display:flex;align-items:center;justify-content:flex-end;gap:.5rem;padding:.75rem calc(.75rem + var(--safe-right)) .75rem calc(1.25rem + var(--safe-left))}.lightbox-count{margin-right:auto;font-family:var(--pixel-font);font-size:.7rem;color:var(--primary)}.lightbox-bar a,.lightbox-bar button,.lightbox-nav{display:grid;place-items:center;width:44px;height:44px;border:0;border-radius:50%;background:#ffffff1a;color:var(--text-light);font-size:1.1rem;cursor:pointer;text-decoration:none}.lightbox-bar a:hover,.lightbox-bar button:hover,.lightbox-nav:hover{background:#fff3}.lightbox :focus-visible{outline:2px solid var(--primary);outline-offset:2px}.lightbox-nav{position:absolute;top:50%;transform:translateY(-50%)}.lightbox-prev{left:calc(.75rem + var(--safe-left))}.lightbox-next{right:calc(.75rem + var(--safe-right))}.lightbox-nav[hidden],.lightbox-count[hidden],.lightbox-caption[hidden]{display:none}@media(max-width:768px){.lightbox-figure{padding:calc(4rem + var(--safe-top)) calc(.5rem + var(--safe-right)) calc(5rem + var(--safe-bottom)) calc(.5rem + var(--safe-left))}.lightbox-nav{top:auto;bottom:calc(1rem + var(--safe-bottom));transform:none}}.resume{padding-top:3rem}.resume-header .cs-title{font-size:clamp(1.1rem,4vw,1.8rem)}.resume-headline{margin-top:.8rem;font-size:1.1rem;font-weight:600;color:var(--text-light)}.resume-meta{margin-top:.3rem!important;color:var(--cs-muted)}.resume-links{justify-content:flex-start;margin-top:1.4rem}.resume-summary{margin-top:2rem!important;font-size:1.1rem}.resume h2{display:flex;align-items:center;gap:.6rem}.resume h2 .icon{color:var(--primary);font-size:.85em}.resume-job{padding:1.2rem 1.3rem;border:1px solid var(--cs-line);border-radius:12px;background:var(--cs-surface)}.resume-job h3{margin-top:0;font-size:1.1rem}.resume-job-meta{margin-top:.3rem}.resume-job-context{margin-top:.1rem;font-size:.9rem;color:var(--cs-muted)}.resume-job ul{margin-top:.8rem}.resume-skills{display:grid;gap:.8rem}.resume-skills dt{font-weight:700;color:var(--text-light)}.resume-list{list-style:none;padding-left:0!important}.resume-years{color:var(--cs-muted);white-space:nowrap}.resume-game{margin-top:3rem!important;margin-bottom:3rem;padding:1.5rem;border-radius:12px;background:var(--cs-surface);text-align:center}.resume-game p{margin-bottom:1rem}.print-only{display:none}@media print{@page{margin:14mm}html{font-size:11.5px}html,body,.case-study{background:#fff!important}.case-study,.case-study *{color:#000!important;text-shadow:none!important;box-shadow:none!important}.print-only{display:block}.skip-link,.cs-topbar,.cs-contact,.cs-footer,.cs-next,.resume-links,.resume-game,.lightbox,.cs-cards img{display:none!important}.case-study a{text-decoration:none}.case-study h2,.case-study h3{break-after:avoid}.resume-job,.cs-card,.cs-image,.cs-table,.cs-summary{break-inside:avoid}.cs-card{border:none!important;padding:0!important}.cs-cover{max-height:6cm}}
