*{box-sizing:border-box}body,html{background-color:#fff;color:#000;font-family:Inter,sans-serif;margin:0;overflow:hidden;padding:0;touch-action:manipulation;-webkit-user-select:none;user-select:none}#root,body,html{height:100%;width:100%}.preview-backdrop{align-items:center;background:#00000040;display:flex;inset:0;justify-content:center;padding:24px;position:fixed;z-index:9998}.preview-card{background:#fff;background:var(--peek-bg,#fff);border:1px solid #0000001f;border:1px solid var(--peek-border,#0000001f);border-radius:20px;box-shadow:0 20px 60px #0000002e,0 8px 20px #00000014,0 0 0 1px #0000000a;cursor:grab;max-height:min(80vh,600px);outline:none;overflow-y:auto;padding:1.75rem;-webkit-user-select:none;user-select:none;width:min(480px,calc(100vw - 32px));z-index:9999}.preview-card:active{cursor:grabbing}.preview-card-content{pointer-events:none}.preview-card-content a,.preview-card-content button{pointer-events:auto}.preview-header{flex-wrap:wrap;justify-content:space-between;margin-bottom:.75rem}.preview-header,.preview-title{align-items:center;display:flex;gap:.5rem}.preview-title{color:#111;color:var(--peek-title,#111);font-size:1.4rem;font-weight:700}.preview-meta{align-items:center;color:#666;color:var(--peek-meta,#666);display:flex;font-size:.85rem;gap:.75rem}.preview-kind{background:#6a0dad1f;border:1px solid #6a0dad33;border-radius:999px;color:#6a0dad;font-size:.7rem;font-weight:600;letter-spacing:.03em;padding:2px 10px;text-transform:uppercase}.preview-tags{display:flex;flex-wrap:wrap;gap:.4rem;margin:.75rem 0}.preview-tag{align-items:center;background:#f0f0f0;background:var(--peek-tag-bg,#f0f0f0);border:1px solid #ddd;border:1px solid var(--peek-tag-border,#ddd);border-radius:10px;color:#444;color:var(--peek-tag-color,#444);display:flex;font-size:.75rem;gap:.3rem;padding:.2rem .65rem}.preview-desc{margin:.75rem 0}.preview-desc ul{margin:0;padding-left:1.1rem}.preview-desc li{color:#444;color:var(--peek-desc,#444);font-size:.92rem;line-height:1.55;margin-bottom:.35rem}.preview-link{align-items:center;background:#6a0dad;border-radius:10px;color:#fff;display:inline-flex;font-size:.85rem;font-weight:600;gap:.4rem;margin-top:1rem;padding:.5rem 1rem;text-decoration:none;transition:background .2s ease}.preview-link:hover{background:#5510a0}.preview-dismiss-hint{color:#999;color:var(--peek-meta,#999);font-size:.72rem;margin-top:1rem;opacity:.7;text-align:center}@media (max-width:520px){.preview-card{border-radius:16px;max-height:70vh;padding:1.25rem;width:calc(100vw - 24px)}.preview-title{font-size:1.2rem}.preview-desc li{font-size:.85rem}}body.dark-mode .preview-backdrop{background:#0000008c}body.dark-mode .preview-card{box-shadow:0 20px 60px #0006,0 8px 20px #0003,0 0 0 1px #ffffff0a}.dark-mode-toggle{align-items:center;background:#f0f0f0;background:var(--toggle-bg,#f0f0f0);border:none;border-radius:50%;box-shadow:0 2px 10px #0003;color:#333;color:var(--toggle-color,#333);cursor:pointer;display:flex;font-size:1.2rem;height:50px;justify-content:center;position:fixed;right:20px;top:20px;transition:all .3s ease;width:50px;z-index:1000}.dark-mode-toggle:hover{box-shadow:0 4px 15px #0000004d;transform:scale(1.1)}.light{--toggle-bg:#f0f0f0;--toggle-color:#333}.dark{--toggle-bg:#333;--toggle-color:#f0f0f0}@keyframes flickerFlash{0%,to{opacity:0}10%{opacity:1}20%{opacity:0}30%{opacity:1}40%{opacity:0}60%{opacity:.8}70%{opacity:0}}@keyframes crtFlicker{0%{opacity:.97}5%{opacity:1}10%{opacity:.94}15%{opacity:1}50%{opacity:.98}80%{opacity:1}90%{opacity:.92}to{opacity:1}}@keyframes glitchRGB{0%{filter:none;text-shadow:none}15%{filter:hue-rotate(10deg);text-shadow:2px 0 0 #ff0000b3,-2px 0 0 #00ffffb3}30%{filter:hue-rotate(-5deg);text-shadow:4px 0 0 #ff0000e6,-4px 0 0 #00ffffe6}45%{filter:hue-rotate(0deg);text-shadow:-3px 0 0 #f009,3px 0 0 #0ff9}60%{filter:hue-rotate(-10deg);text-shadow:5px 0 0 #f00c,-5px 0 0 #0ffc}75%{filter:hue-rotate(5deg);text-shadow:1px 0 0 #ff000080,-1px 0 0 #00ffff80}to{filter:none;text-shadow:none}}.glitch-overlay{inset:0;pointer-events:none;position:fixed;z-index:9999}.glitch-overlay--flicker{animation:flickerFlash .2s ease-out forwards}.glitch-overlay--flicker:before{background:#fff;content:"";inset:0;position:absolute}.glitch-overlay--content{align-items:center;animation:glitchRGB .5s ease-out forwards;display:flex;inset:0;justify-content:center;pointer-events:none;position:absolute}.glitch-overlay--content:after{animation:scanlines .1s linear infinite;background:repeating-linear-gradient(0deg,var(--term-bg) 0,var(--term-bg) 2px,#0000 2px,#0000 4px);content:"";inset:0;opacity:.15;pointer-events:none;position:absolute}@keyframes scanlines{0%{background-position:0 0}to{background-position:0 4px}}.terminal-overlay{align-items:center;background:var(--term-bg);color:var(--term-fg);display:flex;flex-direction:column;font-family:var(--term-font);inset:0;justify-content:center;overflow:hidden;position:fixed;z-index:10000}.terminal-overlay:before{animation:scanlines .08s linear infinite;background:repeating-linear-gradient(0deg,#00000026,#00000026 2px,#0000 0,#0000 4px)}.terminal-overlay:after,.terminal-overlay:before{content:"";inset:0;pointer-events:none;position:absolute}.terminal-overlay:after{background:radial-gradient(ellipse at center,#0000 60%,#0009 100%)}.terminal-overlay__content{max-width:700px;padding:2rem;position:relative;width:90%;z-index:1}.terminal-overlay__line{animation:crtFlicker .15s infinite;color:var(--term-fg);font-size:1rem;line-height:1.8;margin:0;white-space:pre-wrap}.terminal-overlay__line--active:after{animation:blink .8s step-end infinite;content:"_"}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}@media (prefers-reduced-motion:reduce){.terminal-overlay{animation:simpleFadeIn .2s ease forwards}@keyframes simpleFadeIn{0%{opacity:0}to{opacity:1}}}.secret-blog{-webkit-overflow-scrolling:touch;align-items:center;background:var(--term-bg);color:var(--term-fg);display:flex;flex-direction:column;font-family:var(--term-font);inset:0;overflow-y:auto;padding:env(safe-area-inset-top,0) env(safe-area-inset-right,0) env(safe-area-inset-bottom,0) env(safe-area-inset-left,0);position:fixed;z-index:10000}.secret-blog:before{animation:sb-scanlines .08s linear infinite;background:repeating-linear-gradient(0deg,#00000014,#00000014 2px,#0000 0,#0000 4px)}.secret-blog:after,.secret-blog:before{content:"";inset:0;pointer-events:none;position:fixed;z-index:1}.secret-blog:after{background:radial-gradient(ellipse at center,#0000 60%,#000000b3 100%)}@keyframes sb-scanlines{0%{background-position:0 0}to{background-position:0 4px}}.secret-blog__header{max-width:65ch;padding:2rem 0 2.5rem;position:relative;width:90%;z-index:2}.secret-blog__title{align-items:center;color:var(--term-fg);display:flex;font-size:1.1rem;font-weight:400;gap:.3rem;margin:0}.secret-blog__cursor{animation:blink-cursor .8s step-end infinite;background:var(--term-fg);display:inline-block;height:1.1em;margin-left:2px;vertical-align:middle;width:.6em}@keyframes blink-cursor{0%,to{opacity:1}50%{opacity:0}}.secret-blog__list{display:flex;flex-direction:column;max-width:65ch;padding-bottom:6rem;position:relative;width:90%;z-index:2}.secret-blog__post-item{-webkit-tap-highlight-color:transparent;align-items:baseline;background:none;border:none;border-bottom:1px solid var(--term-border);color:inherit;cursor:pointer;display:flex;font-family:inherit;font-size:1rem;justify-content:space-between;min-height:44px;padding:.8rem 0;text-align:left;-webkit-user-select:none;user-select:none;width:100%}.secret-blog__post-item:last-of-type{border-bottom:none}.secret-blog__post-item:hover{color:var(--term-fg-dim)}.secret-blog__post-item:focus-visible{outline:2px solid var(--term-accent);outline-offset:2px}.secret-blog__post-item-title{font-size:1rem;font-weight:400}.secret-blog__post-item-date{color:var(--term-fg-dim);flex-shrink:0;font-size:.8rem;margin-left:1rem;white-space:nowrap}.secret-blog__post-detail{border-bottom:1px solid var(--term-border);max-width:65ch;padding:1.5rem 0}.secret-blog__post-detail-title{color:var(--term-fg);font-size:1rem;font-weight:600;margin:0 0 .4rem}.secret-blog__post-detail-date{color:var(--term-fg-dim);font-size:.8rem;margin-bottom:1.2rem}.secret-blog .secret-blog__post-detail-body{color:var(--term-fg-dim);font-size:1rem;line-height:1.75;margin:0}.secret-blog__exit-header{-webkit-tap-highlight-color:transparent;align-items:center;background:none;border:1px solid var(--term-fg-faint);color:var(--term-fg-dim);cursor:pointer;display:flex;font-family:inherit;font-size:.8rem;justify-content:center;min-height:44px;min-width:44px;padding:.35rem .7rem;white-space:nowrap}.secret-blog__exit-header:hover{border-color:var(--term-fg-dim);color:var(--term-fg)}.secret-blog__exit-header:focus-visible{outline:2px solid var(--term-accent);outline-offset:2px}.secret-blog__exit-mobile{-webkit-tap-highlight-color:transparent;align-items:center;background:var(--term-bg);border:1px solid var(--term-fg-faint);bottom:max(1rem,env(safe-area-inset-bottom,1rem));color:var(--term-fg-dim);cursor:pointer;display:flex;font-family:inherit;font-size:.85rem;justify-content:center;min-height:44px;min-width:44px;padding:.5rem .9rem;position:fixed;right:max(1rem,env(safe-area-inset-right,1rem));white-space:nowrap;z-index:3}.secret-blog__exit-mobile:hover{border-color:var(--term-fg-dim);color:var(--term-fg)}.secret-blog__exit-mobile:focus-visible{outline:2px solid var(--term-accent);outline-offset:2px}.secret-blog .secret-blog__empty{color:var(--term-fg-dim);font-size:1rem;padding:4rem 2rem;position:relative;text-align:center;z-index:2}.secret-blog__aria-announce{clip:rect(0,0,0,0);height:1px;overflow:hidden;position:fixed;width:1px;z-index:10001}@media (prefers-reduced-motion:reduce){.secret-blog:before{animation:none}.secret-blog__cursor{animation:none;opacity:1}}@media (min-width:768px){.secret-blog__exit-mobile{display:none}}:root{--term-bg:#0a0a0a;--term-fg:#00ff41;--term-accent:#00ff41;--term-font:"JetBrains Mono","Fira Code","Courier New",ui-monospace,monospace;--term-fg-dim:#00ff4180;--term-fg-faint:#00ff4133;--term-border:#00ff4126}.section{display:flex;flex-direction:column;justify-content:center;margin-bottom:100px;min-height:100vh;padding-left:10%;padding-right:10%}#canvas-container{height:100vh;left:0;pointer-events:none;position:fixed;top:0;width:100vw}#canvas-container,#canvas-container canvas{touch-action:pan-y}.interface{position:relative;width:100%;z-index:10}h1{font-size:5rem;margin:0}h1,h2{color:#000}h2{font-size:3rem;margin-bottom:1rem}p{color:#333;font-size:1.2rem;line-height:1.5;max-width:500px}.skill-list{display:flex;flex-wrap:wrap;gap:1rem;max-width:600px}.skill-badge{align-items:center;background:#fff;border:1px solid #000;border-radius:10px;box-shadow:0 2px 5px #0000001a;cursor:default;display:flex;font-weight:700;gap:.5rem;padding:.75rem 1.25rem;transition:all .3s ease-in-out}.skill-badge:hover{background:#f0f0f0;box-shadow:0 5px 15px #0003;transform:translateY(-3px)}.skill-badge span.logo{align-items:center;color:#000;display:flex;font-size:1.2rem;line-height:1}.project-card{background:#fff;border:1px solid #000;border-radius:16px;box-shadow:0 4px 8px #0000001a;margin-bottom:1.5rem;max-width:700px;padding:1.5rem;transition:all .3s ease}.project-card:hover{background:#fafafa;border-color:#333;box-shadow:0 10px 25px #00000026;transform:translateY(-5px)}.project-header{align-items:baseline;display:flex;flex-wrap:wrap;gap:.5rem;justify-content:space-between;margin-bottom:.5rem}.project-title{color:#000;font-size:1.5rem;font-weight:700;gap:.5rem}.project-date,.project-title{align-items:center;display:flex}.project-date{color:#666;font-size:.9rem;gap:.3rem}.project-tags{display:flex;flex-wrap:wrap;gap:.5rem;margin:.8rem 0}.project-tag{background:#f0f0f0;border:1px solid #ccc;border-radius:12px;color:#333;font-size:.8rem;padding:.2rem .6rem}.project-desc ul{color:#333;margin:.5rem 0;padding-left:1.2rem}.project-desc li{margin-bottom:.4rem}@media (max-width:1200px){.section{padding-left:5%;padding-right:5%}h1{font-size:4rem}h2{font-size:2.5rem}p{font-size:1.1rem}.project-card,p{max-width:100%}}@media (max-width:768px){.section{min-height:auto;padding:100px 5% 50px}h1{font-size:3rem}h2{font-size:2rem}p{font-size:1rem}.skill-list{max-width:100%}.project-header{align-items:flex-start;flex-direction:column;gap:.5rem}.project-title{font-size:1.3rem}.skill-badge{font-size:.9rem;padding:.5rem .8rem}}@media (max-width:480px){h1{font-size:2.5rem}h2{font-size:1.8rem}.skill-badge{font-size:.8rem;padding:.4rem .6rem}.project-card{padding:1rem}.project-title{font-size:1.2rem}}@media (hover:none) and (pointer:coarse){.project-card:hover,.skill-badge:hover{box-shadow:0 4px 8px #0000001a;transform:none}}:root{--bg-color:#fff;--text-color:#000;--section-bg:#0000;--skill-bg:#ffffffd9;--skill-border:#000;--skill-color:#000;--project-bg:#ffffffd9;--project-border:#000;--project-color:#333;--project-tag-bg:#f0f0f0e6;--project-tag-color:#333;--project-tag-border:#ccc;--project-date-color:#666;--peek-bg:#fff;--peek-border:#0000001f;--peek-title:#111;--peek-meta:#666;--peek-tag-bg:#f0f0f0;--peek-tag-color:#444;--peek-tag-border:#ddd;--peek-desc:#444}body.dark-mode{--bg-color:#121212;--text-color:#e0e0e0;--section-bg:#0000;--skill-bg:#1e1e1ed9;--skill-border:#444;--skill-color:#e0e0e0;--project-bg:#1e1e1ed9;--project-border:#444;--project-color:#e0e0e0;--project-tag-bg:#2a2a2ae6;--project-tag-color:#e0e0e0;--project-tag-border:#555;--project-date-color:#999;--peek-bg:#1c1c1efa;--peek-border:#ffffff1a;--peek-title:#f0f0f0;--peek-meta:#aaa;--peek-tag-bg:#3c3c3ccc;--peek-tag-color:#ccc;--peek-tag-border:#ffffff14;--peek-desc:#ccc}body{background-color:#fff;background-color:var(--bg-color);color:#000;color:var(--text-color);transition:background-color .3s ease,color .3s ease}body.dark-mode .section{background-color:initial;background-color:var(--section-bg)}body.dark-mode h1,body.dark-mode h2{color:#000;color:var(--text-color)}body.dark-mode p{color:#333;color:var(--project-color)}body.dark-mode .project-title{color:#000;color:var(--text-color)}body.dark-mode .skill-badge{background:#ffffffd9;background:var(--skill-bg);border-color:#000;border-color:var(--skill-border);color:#000;color:var(--skill-color)}body.dark-mode .skill-badge:hover{background:#2a2a2ae6}body.dark-mode .project-card{background:#ffffffd9;background:var(--project-bg);border-color:#000;border-color:var(--project-border);color:#333;color:var(--project-color)}body.dark-mode .project-card:hover{background:#2a2a2ae6;border-color:#666}body.dark-mode .project-tag{background:#f0f0f0e6;background:var(--project-tag-bg);border-color:#ccc;border-color:var(--project-tag-border);color:#333;color:var(--project-tag-color)}body.dark-mode .project-date{color:#666;color:var(--project-date-color)}body.dark-mode .project-desc,body.dark-mode .project-desc li{color:#fff}.contact-link{transition:all .3s ease}.contact-link:hover{box-shadow:0 5px 15px #0000001a;transform:translateY(-3px)}::-webkit-scrollbar{display:none}html{scrollbar-width:none}body{-ms-overflow-style:none}.project-link{border-bottom:1px dashed;color:inherit;text-decoration:none;transition:opacity .2s}.project-link:hover{opacity:.7}@media (prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}html{scroll-behavior:auto}}