@layer reset{*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}html,body{min-height:100%}::selection{background:var(--amber);color:var(--bg)}}@layer base{:root{--amber:#ffb000;--amber-bright:gold;--amber-dim:#8a5e00;--amber-mid:#c98700;--amber-ghost:#ffb0001f;--bg:#0a0700;--bg-2:#1a0e00;--bg-soft:#ffb0000a;--green:#3fff8e;--green-d:#1aa050;--red:#ff4040;--cyan:#00d4ff;--font-mono:"IBM Plex Mono", ui-monospace, SFMono-Regular, monospace;--font-pixel:"VT323", monospace;--max-width:1100px;--header-h:92px;--mx:50%;--my:50%}body{font-family:var(--font-mono);background:var(--bg);color:var(--amber);cursor:auto;-webkit-font-smoothing:antialiased;font-size:15px;line-height:1.65}body.has-custom-cursor,body.has-custom-cursor a,body.has-custom-cursor button{cursor:none}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:var(--bg-2)}::-webkit-scrollbar-thumb{background:var(--amber-dim);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--amber)}a{color:inherit;text-decoration:none}button{font:inherit}}@layer layout{.crt-bg{z-index:0;background:radial-gradient(ellipse at center, var(--bg-2) 0%, var(--bg) 80%);position:fixed;inset:0}.crt-glow{z-index:1;pointer-events:none;will-change:transform;contain:layout paint size;background:radial-gradient(350px 250px,#ffb0001a 0%,#0000 65%);width:700px;height:500px;margin-top:-250px;margin-left:-350px;position:fixed;top:0;left:0;transform:translate(50vw,50vh)}.scanlines{z-index:60;pointer-events:none;background:repeating-linear-gradient(0deg,#00000029 0 1px,#0000 1px 3px);position:fixed;inset:0}.beam{z-index:61;pointer-events:none;will-change:transform;background:linear-gradient(#0000 0%,#ffb00014 50%,#0000 100%);height:280px;animation:8s linear infinite beam-move;position:fixed;inset:0;transform:translateY(-100vh)}@keyframes beam-move{0%{transform:translateY(-100vh)}to{transform:translateY(100vh)}}.vignette{z-index:62;pointer-events:none;background:radial-gradient(#0000 35%,#000000b3 100%),radial-gradient(#0000 70%,#2800004d 100%);position:fixed;inset:0}.crt-power{z-index:9999;pointer-events:none;background:var(--bg);animation:1.2s cubic-bezier(.65,0,.35,1) forwards crt-power;position:fixed;inset:0}.crt-power:before{content:"";background:var(--amber-bright);opacity:0;animation:.5s ease-out forwards crt-flash;position:absolute;inset:0}.crt-power:after{content:"";background:var(--amber-bright);height:2px;box-shadow:0 0 18px var(--amber-bright), 0 0 36px var(--amber);animation:1.2s cubic-bezier(.7,0,.3,1) forwards crt-line;position:absolute;top:50%;left:0;right:0;transform:translateY(-50%)scaleY(1)}@keyframes crt-power{0%{background:var(--bg)}20%{background:#0a0700d9}50%{background:#0a070066}to{visibility:hidden;background:0 0}}@keyframes crt-flash{0%{opacity:0}10%{opacity:.9}20%{opacity:0}30%{opacity:.3}40%{opacity:0}to{opacity:0}}@keyframes crt-line{0%{opacity:0;transform:translateY(-50%)scaleX(.001)}15%{opacity:1;transform:translateY(-50%)scaleX(.001)}35%{opacity:1;height:2px;transform:translateY(-50%)scaleX(1)}65%{opacity:1;height:100vh;transform:translateY(-50%)scaleX(1)}to{opacity:0;height:100vh}}.read-progress{background:linear-gradient(90deg, var(--amber-dim), var(--amber-bright));width:0%;height:2px;box-shadow:0 0 8px var(--amber-bright);pointer-events:none;transition:width 50ms linear;position:absolute;bottom:-1px;left:0}.spark{pointer-events:none;z-index:1000;font-family:var(--font-mono);color:var(--amber-bright);text-shadow:0 0 6px var(--amber-bright), 0 0 12px var(--amber);user-select:none;will-change:transform, opacity;font-size:13px;position:fixed}.term-cursor.is-text{width:2px;height:22px}.term-cursor.is-link{border:2px solid var(--amber-bright);width:22px;height:22px;box-shadow:0 0 12px var(--amber-bright);background:0 0;border-radius:50%}.term-cursor.is-button{background:var(--amber-bright);opacity:.6;border-radius:2px;width:28px;height:18px}}@layer components{.head{z-index:50;background:var(--bg);border-bottom:1px solid var(--amber-dim);position:sticky;top:0;box-shadow:0 4px 24px #0009}.head-top{letter-spacing:.08em;border-bottom:1px solid var(--amber-ghost);color:var(--amber-mid);text-shadow:0 0 4px #ffb0004d;justify-content:space-between;align-items:center;padding:7px clamp(14px,3vw,32px);font-size:12px;display:flex}.head-top .left,.head-top .right{align-items:center;gap:14px;display:flex}.head-top strong{color:var(--amber-bright);text-shadow:0 0 6px var(--amber-bright);font-weight:600}.head-top .led{background:var(--green);width:7px;height:7px;box-shadow:0 0 8px var(--green);border-radius:50%;animation:1.4s ease-in-out infinite led-blink;display:inline-block}@keyframes led-blink{0%,to{opacity:1}50%{opacity:.4}}.head-top .sep{color:var(--amber-dim)}.lang-switch{border:1px solid var(--amber);display:inline-flex;overflow:hidden}.lang-switch a{color:var(--amber);cursor:pointer;letter-spacing:.08em;text-shadow:0 0 4px var(--amber);background:0 0;border:none;padding:2px 8px;font-family:inherit;font-size:11px;text-decoration:none}.lang-switch a.active{background:var(--amber);color:var(--bg);text-shadow:none}.lang-switch a:hover:not(.active){background:var(--amber-ghost)}.head-back{color:var(--amber-mid);letter-spacing:.08em;font-size:11px;text-decoration:none}.head-back:hover{color:var(--amber-bright);text-shadow:0 0 4px var(--amber-bright)}.nav{scrollbar-width:none;gap:0;padding:0 clamp(14px,3vw,32px);display:flex;overflow-x:auto}.nav::-webkit-scrollbar{display:none}.nav a{color:var(--amber-mid);letter-spacing:.04em;white-space:nowrap;text-shadow:0 0 4px #ffb0004d;will-change:transform;border-bottom:2px solid #0000;align-items:center;gap:7px;padding:9px 14px;font-size:12.5px;text-decoration:none;transition:color .15s,background .15s,border-color .15s,text-shadow .15s;display:flex}.nav a:hover{color:var(--amber-bright);background:var(--amber-ghost);text-shadow:0 0 6px var(--amber-bright)}.nav a.active{color:var(--amber-bright);border-bottom-color:var(--green);text-shadow:0 0 8px var(--amber-bright)}.nav a .num{color:var(--green);text-shadow:0 0 4px var(--green);font-size:11px;font-weight:600}main{z-index:5;max-width:var(--max-width);margin:0 auto;padding:24px clamp(16px,3vw,32px) 80px;position:relative}main>*{text-shadow:0 0 8px #ffb0004d}.boot{margin-bottom:36px}.boot-line{white-space:pre-wrap;color:var(--amber);min-height:1.65em}.boot-line.dim{color:var(--amber-dim);text-shadow:0 0 4px #8a5e0080}.boot-line.bright{color:var(--amber-bright)}.boot-line.ok{color:var(--green);text-shadow:0 0 6px #3fff8e99}.progress{border:1px solid var(--amber);vertical-align:-2px;background:var(--amber-ghost);width:260px;height:11px;margin:0 8px;display:inline-block;position:relative;overflow:hidden}.progress-fill{background:var(--amber);height:100%;box-shadow:0 0 8px var(--amber-bright);width:0}.section{scroll-margin-top:calc(var(--header-h) + 8px);margin-bottom:56px}.js .section,.js .final{opacity:0}.section-head{border-bottom:1px dashed var(--amber-dim);top:var(--header-h);z-index:30;background:var(--bg);align-items:center;gap:14px;margin-bottom:18px;padding:10px 0;display:flex;position:sticky}.section-head .marker{color:var(--green);text-shadow:0 0 6px var(--green);letter-spacing:.08em;flex-shrink:0;font-size:13px;font-weight:700}.section-head .title{color:var(--amber-bright);letter-spacing:.2em;text-transform:uppercase;text-shadow:0 0 8px var(--amber-bright);font-size:14px;font-weight:600}.section-head .rule{background:linear-gradient(90deg, var(--amber), transparent);opacity:.4;flex:1;height:1px}.section-head .meta{color:var(--amber-dim);letter-spacing:.08em;font-size:11px}.prompt{color:var(--amber-bright);margin-bottom:14px;font-size:14.5px}.prompt:before{content:"charles@cv:~$ ";color:var(--green);text-shadow:0 0 6px #3fff8eb3}.whoami{border:1px solid var(--amber);background:var(--bg-soft);grid-template-columns:auto 1fr;align-items:center;gap:28px;padding:20px;display:grid;position:relative;box-shadow:inset 0 0 24px #ffb00014,0 0 20px #ffb00026}.whoami:before,.whoami:after{content:"";pointer-events:none;border-color:var(--amber-bright);width:14px;height:14px;filter:drop-shadow(0 0 4px var(--amber));position:absolute}.whoami:before{border-top:2px solid;border-left:2px solid;top:-8px;left:-8px}.whoami:after{border-bottom:2px solid;border-right:2px solid;bottom:-8px;right:-8px}.portrait{border:1px solid var(--amber);background:var(--bg);flex-shrink:0;width:168px;height:168px;padding:6px;transition:border-color .5s,box-shadow .5s;position:relative;box-shadow:0 0 18px #ffb00059,inset 0 0 12px #ffb00026}.portrait:hover{border-color:var(--amber-bright);box-shadow:0 0 28px #ffd70080,inset 0 0 8px #ffd70033}.portrait-frame{width:100%;height:100%;position:relative;overflow:hidden}.portrait-img{object-fit:cover;width:100%;height:100%;transition:opacity .55s,filter .55s,transform .7s;display:block;position:absolute;inset:0;transform:scale(1)}.portrait-img--crt{filter:grayscale()sepia()hue-rotate(-15deg)saturate(2.5)brightness(.85)contrast(1.3)blur(.6px);mix-blend-mode:screen;opacity:.92;z-index:1}.portrait-img--raw{filter:contrast(1.02)saturate(1.05);opacity:0;z-index:2}.portrait:hover .portrait-img--crt{opacity:0;filter:grayscale(0)sepia(0)hue-rotate()saturate()brightness()contrast()blur()}.portrait:hover .portrait-img--raw{opacity:1;transform:scale(1.04)}.portrait:after{content:"";pointer-events:none;z-index:3;opacity:1;background:repeating-linear-gradient(0deg,#0000 0 2px,#0006 2px 3px);transition:opacity .55s;position:absolute;inset:6px}.portrait:hover:after{opacity:0}.portrait .tag{z-index:4;background:var(--bg);border:1px solid var(--amber-bright);color:var(--amber-bright);letter-spacing:.1em;text-shadow:0 0 4px var(--amber-bright);white-space:nowrap;padding:1px 7px;font-size:10px;position:absolute;bottom:-12px;left:50%;transform:translate(-50%)}.who-info{flex-direction:column;gap:4px;display:flex}.who-name{color:var(--amber-bright);letter-spacing:.01em;text-shadow:0 0 12px var(--amber-bright), 0 0 24px #ffd70066;cursor:pointer;font-size:clamp(28px,4vw,40px);font-weight:700;line-height:1.05;display:inline-block;position:relative}.who-name .gsap-char{will-change:transform, opacity;display:inline-block}.who-name[data-text]:before,.who-name[data-text]:after{content:attr(data-text);pointer-events:none;opacity:0;z-index:-1;transition:opacity .18s;position:absolute;inset:0}.who-name[data-text]:before{color:#ff2e88;text-shadow:0 0 8px #ff2e88}.who-name[data-text]:after{color:var(--cyan);text-shadow:0 0 8px var(--cyan)}.who-name.glitch:before{opacity:.85;animation:.18s steps(2,end) infinite glitch-x;transform:translate(-3px)}.who-name.glitch:after{opacity:.85;animation:.18s steps(2,end) infinite glitch-y;transform:translate(3px)}@keyframes glitch-x{0%,to{transform:translate(-3px,1px)}50%{transform:translate(2px,-1px)}}@keyframes glitch-y{0%,to{transform:translate(3px,-1px)}50%{transform:translate(-2px,1px)}}.who-role{color:var(--amber);letter-spacing:.04em;margin-top:4px;font-size:17px}.who-role .acc{color:var(--green);text-shadow:0 0 6px var(--green)}.who-role .sep{color:var(--amber-dim)}.who-meta{color:var(--amber-mid);flex-wrap:wrap;gap:12px;margin-top:8px;font-size:13.5px;display:flex}.who-meta .sep{color:var(--amber-dim)}.who-status{color:var(--green);text-shadow:0 0 6px #3fff8e99;letter-spacing:.05em;align-items:center;gap:8px;margin-top:8px;font-size:13.5px;font-weight:600;display:flex}.who-status .pulse{background:var(--green);width:8px;height:8px;box-shadow:0 0 8px var(--green);border-radius:50%;flex-shrink:0;animation:1.6s ease-in-out infinite led-blink}.who-links{flex-wrap:wrap;gap:16px;margin-top:12px;font-size:13px;display:flex}.who-links a{color:var(--amber-bright);text-decoration:underline;text-decoration-color:var(--amber-dim);text-underline-offset:3px;transition:text-shadow .15s}.who-links a:hover{text-shadow:0 0 10px var(--amber-bright);text-decoration-color:var(--amber)}.who-links a:before{content:"▸ ";color:var(--amber-dim)}.who-stats{flex-wrap:wrap;gap:18px;margin-top:16px;display:flex}.who-stat{border:1px solid var(--amber-dim);background:#ffb0000a;flex-direction:column;align-items:flex-start;min-width:78px;padding:6px 14px;display:flex}.who-stat .num{color:var(--amber-bright);text-shadow:0 0 8px var(--amber-bright);letter-spacing:-.01em;font-size:22px;font-weight:700;line-height:1.1}.who-stat .lbl{letter-spacing:.16em;color:var(--amber-dim);text-transform:uppercase;margin-top:2px;font-size:9px}.contact-val[data-decrypt]{cursor:none;user-select:text}.portrait-frame{clip-path:inset(0 0 100%);width:100%;height:100%;animation:1.6s cubic-bezier(.65,0,.35,1) .4s forwards photo-decode;position:relative;overflow:hidden}@keyframes photo-decode{to{clip-path:inset(0 0 0%)}}.portrait .scan-line{background:var(--amber-bright);height:2px;box-shadow:0 0 12px var(--amber-bright), 0 0 24px var(--amber);z-index:5;pointer-events:none;opacity:0;animation:1.6s cubic-bezier(.65,0,.35,1) .4s forwards scan-down;position:absolute;top:6px;left:6px;right:6px}@keyframes scan-down{0%{opacity:0;top:6px}10%{opacity:1}90%{opacity:1;top:calc(100% - 8px)}to{opacity:0;top:calc(100% - 8px)}}.about-box{border-left:2px solid var(--amber-dim);color:var(--amber);max-width:70ch;padding:4px 0 4px 18px;font-size:15.5px;line-height:1.7}.about-box p{margin-bottom:12px}.about-box p:last-child{margin-bottom:0}.about-box .hl{color:var(--amber-bright);font-weight:600}.about-box .green{color:var(--green);text-shadow:0 0 6px #3fff8e80}.skills-block{border-left:2px solid var(--amber-dim);padding-left:18px}.skills-row{border-bottom:1px dotted #ffb0002e;grid-template-columns:130px 1fr;align-items:baseline;gap:18px;padding:9px 0;display:grid}.skills-row:last-child{border-bottom:none}.skills-cat{color:var(--amber-dim);letter-spacing:.08em;text-transform:uppercase;font-size:12.5px}.skills-cat:after{content:" :";color:var(--amber-mid)}.skills-list{color:var(--amber-bright);flex-wrap:wrap;gap:14px;font-size:14.5px;display:flex}.skills-list span:not(:last-child):after{content:" ·";color:var(--amber-dim);margin-left:4px}.exp-block{flex-direction:column;gap:28px;display:flex}.exp{padding-left:18px;transition:filter .2s;position:relative}.exp-line{background:var(--amber);transform-origin:top;will-change:transform;width:2px;position:absolute;top:0;bottom:0;left:0;transform:scaleY(0)}.exp:hover .exp-line{background:var(--green)}.exp:before{content:"";background:var(--amber-bright);width:8px;height:8px;box-shadow:0 0 8px var(--amber-bright), 0 0 14px #ffd70066;position:absolute;top:6px;left:-3px;transform:rotate(45deg)}.exp:hover:before{background:var(--green);box-shadow:0 0 8px var(--green), 0 0 14px #3fff8e66}.exp-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:6px;display:flex}.exp-title{color:var(--amber-bright);letter-spacing:.01em;text-shadow:0 0 6px var(--amber-bright);font-size:17px;font-weight:600}.exp-title .at{color:var(--amber-mid);font-weight:400}.exp-title .co{color:var(--green);text-shadow:0 0 6px #3fff8e80}.exp-dates{color:var(--amber-mid);letter-spacing:.06em;background:var(--amber-ghost);border:1px solid var(--amber-dim);white-space:nowrap;padding:2px 8px;font-size:12.5px}.exp-dates .now{color:var(--green)}.exp-tag{color:var(--amber-dim);letter-spacing:.06em;text-transform:uppercase;margin-bottom:8px;font-size:11.5px}.exp-list{color:var(--amber);font-size:14px;line-height:1.6;list-style:none}.exp-list li{padding:2px 0 2px 22px;position:relative}.exp-list li:before{content:"├";color:var(--amber-dim);position:absolute;left:0}.exp-list li:last-child:before{content:"└"}.exp-list li .client{color:var(--amber-bright)}.exp-list li .proj{color:var(--green);text-shadow:0 0 4px #3fff8e66}.exp-list li .sub-dates{color:var(--amber-mid);letter-spacing:.04em;font-size:.92em}.proj-block{perspective:1200px;flex-direction:column;gap:24px;display:flex}.proj-subhead{align-items:center;gap:10px;margin:8px 0 -8px;padding-top:6px;display:flex}.proj-subhead:first-child{margin-top:0;padding-top:0}.proj-subhead-marker{color:var(--green);text-shadow:0 0 6px var(--green);flex-shrink:0;font-size:14px}.proj-subhead-label{color:var(--amber-bright);letter-spacing:.22em;text-transform:uppercase;text-shadow:0 0 6px var(--amber-bright);flex-shrink:0;font-size:11px;font-weight:600}.proj-subhead-rule{background:linear-gradient(90deg, var(--amber-dim), transparent);opacity:.5;flex:1;height:1px}.proj-block .proj{border:1px solid var(--amber-dim);background:var(--bg-soft);transform-style:preserve-3d;will-change:transform;padding:16px 18px 14px;transition:border-color .25s,box-shadow .25s;position:relative}.proj-block .proj:hover{border-color:var(--amber-bright);box-shadow:0 0 20px #ffb00033,0 0 40px #ffb00014}.proj-block .proj:before{content:"";pointer-events:none;background:radial-gradient(circle 220px at var(--px,50%) var(--py,50%), #ffd7001f, transparent 70%);opacity:0;transition:opacity .25s;position:absolute;inset:0}.proj-block .proj:hover:before{opacity:1}.proj-block .proj>*{position:relative}.proj-cmd-tag{font-family:var(--font-mono);color:var(--green);opacity:0;pointer-events:none;text-shadow:0 0 6px var(--green);z-index:5;letter-spacing:.02em;white-space:nowrap;font-size:11px;transition:opacity .3s,transform .3s;position:absolute;top:-22px;left:4px;transform:translateY(6px)}.proj-cmd-tag:before{content:"$ ";color:var(--green);opacity:.8}.proj-block .proj:hover .proj-cmd-tag{opacity:1;transform:translateY(0)}.proj-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:6px;display:flex}.proj-title{color:var(--amber-bright);text-shadow:0 0 6px var(--amber-bright);letter-spacing:.01em;font-size:16.5px;font-weight:600}.proj-title .num{color:var(--green);text-shadow:0 0 4px var(--green);margin-right:8px}.proj-meta{color:var(--amber-mid);letter-spacing:.05em;font-size:12px}.proj-meta .stack{color:var(--amber)}.proj-meta .sep{color:var(--amber-dim);margin:0 5px}.proj-desc{color:var(--amber);margin-bottom:8px;font-size:14px;line-height:1.6}.proj-feats{color:var(--amber);margin-bottom:8px;font-size:13px;list-style:none}.proj-feats li{padding-left:16px;position:relative}.proj-feats li:before{content:"›";color:var(--green);position:absolute;left:0}.proj-link{color:var(--green);text-decoration:underline;text-decoration-color:var(--green-d);text-underline-offset:3px;text-shadow:0 0 4px #3fff8e66;align-items:center;gap:6px;font-size:13px;display:inline-flex}.proj-link:hover{text-shadow:0 0 10px var(--green)}.proj-link:before{content:"→"}.edu-block{flex-direction:column;gap:14px;display:flex}.edu{border-bottom:1px dotted #ffb00033;grid-template-columns:160px 1fr;gap:18px;padding:8px 0;display:grid}.edu:last-child{border-bottom:none}.edu-date{color:var(--amber-mid);letter-spacing:.04em;padding-top:1px;font-size:13px}.edu-name{color:var(--amber-bright);text-shadow:0 0 4px var(--amber-bright);margin-bottom:2px;font-size:15px;font-weight:600}.edu-degree{color:var(--amber);font-size:13.5px}.edu-degree em{color:var(--green);text-shadow:0 0 4px #3fff8e66;font-style:normal}.contact-box{border:1px solid var(--amber);background:var(--bg-soft);padding:18px 20px;box-shadow:inset 0 0 16px #ffb00014}.contact-row{grid-template-columns:110px 1fr;align-items:baseline;gap:18px;padding:6px 0;font-size:14.5px;display:grid}.contact-key{color:var(--amber-dim);letter-spacing:.08em}.contact-val{color:var(--amber-bright);text-decoration:underline;text-decoration-color:var(--amber-dim);text-underline-offset:3px;transition:text-shadow .15s}.contact-val:hover{text-shadow:0 0 10px var(--amber-bright);text-decoration-color:var(--green)}.contact-val.plain{color:var(--amber);text-decoration:none}.contact-status{border-top:1px dashed var(--amber-dim);color:var(--green);text-shadow:0 0 6px #3fff8e66;align-items:center;gap:10px;margin-top:12px;padding-top:12px;font-size:14px;display:flex}.contact-status .pulse{background:var(--green);width:8px;height:8px;box-shadow:0 0 8px var(--green);border-radius:50%;flex-shrink:0;animation:1.6s ease-in-out infinite led-blink}.cv-dl-btn{border:1px solid var(--amber);color:var(--amber-bright);letter-spacing:.08em;cursor:pointer;text-shadow:0 0 6px var(--amber-bright);background:0 0;align-items:center;gap:10px;margin-top:16px;padding:10px 18px;font-family:inherit;font-size:13.5px;transition:background .18s,transform .18s,box-shadow .18s;display:inline-flex}.cv-dl-btn:hover{background:var(--amber);color:var(--bg);text-shadow:none;box-shadow:0 0 16px var(--amber-bright);transform:translateY(-1px)}.cv-dl-icon{font-size:16px;line-height:1;animation:2s ease-in-out infinite led-blink}.cv-dl-btn:hover .cv-dl-icon{animation:none}.final{border-top:1px dashed var(--amber-dim);margin-top:48px;padding-top:24px}.final-prompt{color:var(--amber-bright);font-size:16px}.final-prompt:before{content:"charles@cv:~$ ";color:var(--green);text-shadow:0 0 6px #3fff8eb3}.cursor{background:var(--amber-bright);vertical-align:-3px;width:10px;height:1.05em;box-shadow:0 0 8px var(--amber-bright), 0 0 16px #ffd70080;animation:1.05s steps(2,end) infinite blink;display:inline-block}@keyframes blink{0%,50%{opacity:1}51%,to{opacity:0}}.term-cursor{background:var(--amber-bright);width:14px;height:24px;box-shadow:0 0 8px var(--amber-bright);pointer-events:none;z-index:200;opacity:0;will-change:transform;contain:layout paint size;transition:opacity .25s;position:fixed;top:0;left:0;transform:translate(-100px,-100px)}.term-cursor.ready{opacity:.9}.term-cursor.click{animation:.35s ease-out cursor-click}@keyframes cursor-click{0%{transform-origin:50%}50%{filter:brightness(2)}to{filter:brightness()}}.keyhint{z-index:70;color:var(--amber-dim);letter-spacing:.05em;background:var(--bg);border:1px solid var(--amber-dim);padding:4px 9px;font-size:10.5px;position:fixed;bottom:14px;left:18px}.keyhint kbd{border:1px solid var(--amber-dim);color:var(--amber);background:0 0;margin:0 2px;padding:1px 5px;font-family:inherit;font-size:9.5px}.cmd-overlay,.sudo-overlay,.cvd-overlay{z-index:500;-webkit-backdrop-filter:blur(6px);background:#0a0700b3;justify-content:center;align-items:flex-start;padding-top:14vh;animation:.18s ease-out modal-in;display:flex;position:fixed;inset:0}@keyframes modal-in{0%{opacity:0;backdrop-filter:blur()}to{opacity:1;backdrop-filter:blur(6px)}}.cmd-panel,.sudo-panel,.cvd-panel{background:var(--bg);border:1px solid var(--amber);color:var(--amber);font-family:var(--font-mono);width:min(620px,92vw);animation:.25s cubic-bezier(.16,1,.3,1) panel-in;box-shadow:0 30px 80px #000c,0 0 30px #ffb00040}@keyframes panel-in{0%{opacity:0;transform:translateY(-12px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.cmd-input-row{border-bottom:1px solid var(--amber-dim);align-items:center;gap:10px;padding:12px 16px;display:flex}.cmd-prompt{color:var(--green);text-shadow:0 0 6px var(--green);flex-shrink:0;font-size:13px}.cmd-input{color:var(--amber-bright);caret-color:var(--amber-bright);background:0 0;border:none;outline:none;flex:1;font-family:inherit;font-size:14px}.cmd-list{max-height:60vh;padding:6px 0;list-style:none;overflow-y:auto}.cmd-item{cursor:pointer;color:var(--amber);border-left:2px solid #0000;justify-content:space-between;gap:12px;padding:8px 16px;font-size:13px;display:flex}.cmd-item.active{color:var(--amber-bright);border-left-color:var(--green);text-shadow:0 0 6px var(--amber-bright);background:#ffb00014}.cmd-label{flex:1}.cmd-hint{color:var(--amber-dim);text-transform:uppercase;letter-spacing:.1em;align-self:center;font-size:10.5px}.cmd-empty{color:var(--amber-dim);text-align:center;padding:18px 16px;font-size:13px;font-style:italic}.cmd-foot,.sudo-foot,.cvd-foot{border-top:1px solid var(--amber-dim);color:var(--amber-dim);letter-spacing:.05em;gap:16px;padding:8px 16px;font-size:10.5px;display:flex}.cmd-foot kbd,.sudo-foot kbd,.cvd-foot kbd{border:1px solid var(--amber-dim);color:var(--amber);background:0 0;margin-right:4px;padding:1px 5px;font-family:inherit;font-size:10px}.sudo-panel{padding:18px 18px 12px}.sudo-line{color:var(--amber);font-size:14px;line-height:1.5}.sudo-line.dim{color:var(--amber-dim)}.sudo-line.ok{color:var(--green);text-shadow:0 0 6px var(--green);margin-top:10px}.sudo-form{align-items:center;gap:6px;margin-top:8px;display:flex}.sudo-input{color:#0000;caret-color:#0000;background:0 0;border:none;outline:none;flex:0 0 2px;width:2px;font-family:inherit;font-size:14px}.sudo-cursor{background:var(--amber-bright);width:10px;height:16px;box-shadow:0 0 8px var(--amber-bright);animation:1.05s steps(2,end) infinite blink}.sudo-hint{color:var(--amber-dim);margin-left:14px;font-size:11px;font-style:italic}.sudo-foot{margin-top:10px}.cvd-head{border-bottom:1px solid var(--amber-dim);align-items:center;gap:10px;padding:12px 18px;display:flex}.cvd-dot{background:var(--green);width:8px;height:8px;box-shadow:0 0 8px var(--green);border-radius:50%;animation:1.4s ease-in-out infinite led-blink}.cvd-title{color:var(--amber-bright);letter-spacing:.06em;text-shadow:0 0 6px var(--amber-bright);font-size:13px}.cvd-body{padding:14px 18px;font-size:13px;line-height:1.65}.cvd-line{color:var(--amber);opacity:0;animation:.2s ease-out forwards cvd-line-in}@keyframes cvd-line-in{0%{opacity:0;transform:translate(-4px)}to{opacity:1;transform:translate(0)}}.cvd-line.ok{color:var(--green);text-shadow:0 0 6px var(--green);margin-top:6px}.cvd-ok{color:var(--green);text-shadow:0 0 6px var(--green);font-weight:600}.cvd-bar{border:1px solid var(--amber);background:#ffb0000f;height:14px;margin-top:14px;position:relative}.cvd-bar-fill{background:var(--amber);height:100%;box-shadow:0 0 8px var(--amber-bright);transition:width .15s linear}.cvd-pct{color:var(--bg);mix-blend-mode:difference;font-size:10px;font-weight:700;position:absolute;top:50%;right:6px;transform:translateY(-50%)}.cvd-done{flex-direction:column;gap:10px;padding:0 18px 14px;display:flex}.cvd-btn{background:var(--amber-bright);color:var(--bg);letter-spacing:.08em;cursor:pointer;box-shadow:0 0 12px var(--amber-bright);border:none;align-self:flex-start;padding:8px 18px;font-family:inherit;font-size:13px;font-weight:700;transition:transform .15s,box-shadow .15s}.cvd-btn:hover{box-shadow:0 0 20px var(--amber-bright);transform:translateY(-1px)}}@layer utilities{body.hacker-mode{--amber:#0f6;--amber-bright:#afa;--amber-dim:#063;--amber-mid:#0c4;--amber-ghost:#00ff661f;--bg-2:#010;--bg-soft:#00ff660a;--green:#afa;--green-d:#0c5;transition:color .4s}body.hacker-mode .scanlines{background:repeating-linear-gradient(0deg,#00000038 0 1px,#0000 1px 2px)}body.hacker-mode:before{content:"⌬ HACKER MODE — type the Konami again to disable ⌬";z-index:100;font-family:var(--font-mono);color:var(--amber-bright);text-shadow:0 0 8px var(--amber-bright);border:1px solid var(--amber-bright);letter-spacing:.08em;background:#001100d9;padding:6px 12px;font-size:11px;animation:.6s ease-out hacker-banner;position:fixed;bottom:60px;left:50%;transform:translate(-50%)}@keyframes hacker-banner{0%{opacity:0;transform:translate(-50%,10px)}to{opacity:1;transform:translate(-50%)}}@media (width<=760px){body{cursor:auto;font-size:14px}.term-cursor{display:none}main{padding:16px 14px 60px}.head-top{flex-wrap:wrap;gap:8px;padding:6px 12px;font-size:10.5px}.head-top .left,.head-top .right{gap:8px}.nav{padding:0 12px}.nav a{padding:8px 10px;font-size:11.5px}.whoami{text-align:center;grid-template-columns:1fr;gap:18px}.portrait{margin:0 auto}.who-meta,.who-links{justify-content:center}.skills-row{grid-template-columns:1fr;gap:4px}.exp-head{gap:6px}.edu{grid-template-columns:1fr;gap:4px}.contact-row{grid-template-columns:1fr;gap:2px}.keyhint{display:none}.progress{width:160px}}}.astro-route-announcer{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;top:0;left:0;overflow:hidden}@keyframes astroFadeInOut{0%{opacity:1}to{opacity:0}}@keyframes astroFadeIn{0%{opacity:0;mix-blend-mode:plus-lighter}to{opacity:1;mix-blend-mode:plus-lighter}}@keyframes astroFadeOut{0%{opacity:1;mix-blend-mode:plus-lighter}to{opacity:0;mix-blend-mode:plus-lighter}}@keyframes astroSlideFromRight{0%{transform:translate(100%)}}@keyframes astroSlideFromLeft{0%{transform:translate(-100%)}}@keyframes astroSlideToRight{to{transform:translate(100%)}}@keyframes astroSlideToLeft{to{transform:translate(-100%)}}@media (prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*),[data-astro-transition-scope]{animation:none!important}}
