@import"https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@200;300;400;600&family=Pixelify+Sans&family=VT323&display=swap";html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:"";content:none}table{border-collapse:collapse;border-spacing:0}:root{font-family:IBM Plex Mono,monospace;font-weight:200;--font-size-base: clamp(15px, .35vw + 14px, 18px);--terminal-line-height: clamp(1.25rem, 1.45vw, 1.55rem);--ascii-line-height: clamp(.72rem, 1.05vw, 1.25rem);--container-input-width: clamp(280px, 50vw, 820px);--bg: #0D1117;--border: #30363D;--text: #E6EDF3;--prompt-default: #8B949E;--prompt-user: #7EE787;--prompt-host: #79C0FF;--explorer-hover-bg: rgba(88, 166, 255, .1);--explorer-hover-border: rgba(88, 166, 255, .34);--explorer-hover-glow: rgba(88, 166, 255, .2);--explorer-focus-ring: rgba(88, 166, 255, .62);--wallpaper-image: none;--wallpaper-opacity: 0;--panel-surface: transparent;--panel-surface-strong: transparent;--panel-border-soft: rgba(255, 255, 255, .08);--control-bg: transparent;--control-bg-hover: rgba(255, 255, 255, .04);--control-border: rgba(255, 255, 255, .14);--control-text: var(--prompt-default);--control-hover-text: var(--text)}@keyframes typing{0%{width:0}to{width:100%}}html,body{color:var(--text);background-color:var(--bg);height:100%;display:block;font-size:var(--font-size-base)}html{overflow:auto}body{padding:clamp(10px,1.2vw,16px);box-sizing:border-box;background-color:transparent}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;background-image:var(--wallpaper-image);background-size:cover;background-position:center;background-repeat:no-repeat;filter:blur(3px);opacity:var(--wallpaper-opacity);pointer-events:none}body:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;background:repeating-linear-gradient(0deg,rgba(0,0,0,.1),rgba(0,0,0,.1) 1px,transparent 1px,transparent 2px);pointer-events:none;z-index:3;opacity:.14}main{display:flex;flex-direction:column;box-sizing:border-box;height:100%;border:2px solid var(--border);border-radius:2px;overflow:hidden}p{display:block;line-height:var(--terminal-line-height);animation:typing .5s steps(30,end);white-space:nowrap;overflow:hidden}#terminal>div,#input-line,#password-input{line-height:var(--terminal-line-height)}@font-face{font-family:ascii;src:url(/assets/IBMPlexMono-Thin-23n5SbSi.ttf)}pre{margin:0;padding:0;line-height:var(--ascii-line-height)!important;color:#ff9951;font-family:ascii,monospace}input{font-family:IBM Plex Mono,monospace;padding:0;margin:0;border:none;resize:none;outline:none;font-size:clamp(16px,.2vw + 15px,18px);color:#ff7685;caret-color:var(--prompt-default);width:100%;background:transparent}#ghost-input{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;font-family:IBM Plex Mono,monospace;font-size:clamp(16px,.2vw + 15px,18px);color:var(--text);white-space:pre;z-index:1}#user-input{position:relative;z-index:2;color:transparent;caret-color:transparent;background:transparent}.ghost-text{opacity:.25;filter:grayscale(1)}.cursor-block{display:inline-block;background-color:var(--text, #E6EDF3);color:var(--bg, #0D1117);animation:blink 1s step-end infinite}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}a{color:#b6aaee}a:not(.certificate-window-link):hover{background-color:var(--border);color:var(--bg)}#bars{font-family:Pixelify Sans,sans-serif;font-size:clamp(1rem,1.2vw,1.25rem);width:100%;flex-shrink:0;position:relative;background-color:var(--bg);z-index:10}#bar-1{height:clamp(32px,3vw,36px);background-color:var(--border);color:var(--bar-title-color, var(--bg));display:flex;align-items:center;gap:8px;padding:0 10px;font-weight:500}#bar-logo{width:clamp(16px,1.2vw,20px);height:clamp(16px,1.2vw,20px);object-fit:contain;flex-shrink:0;filter:drop-shadow(0 0 2px rgba(0,0,0,.35))}#bar-2{height:4px;background-color:var(--border);margin-top:1px}#bar-3{height:3px;background-color:var(--border);margin-top:2px}#bar-4{height:2px;background-color:var(--border);margin-top:3px}#bar-5{height:1px;background-color:var(--border);margin-top:4px}.lower-main{display:flex;flex:1;flex-direction:row;min-height:0;overflow:hidden}#terminal-layout{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden;padding:clamp(8px,1vw,12px) clamp(8px,1vw,12px) 0 clamp(10px,1.6vw,20px)}#content-wrapper{flex:0 1 auto;display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden;height:auto;min-height:0;padding:4px 6px 8px 0;min-width:0;scrollbar-width:thin;scrollbar-color:rgba(139,148,158,.55) transparent}#content-wrapper::-webkit-scrollbar{width:8px}#content-wrapper::-webkit-scrollbar-track{background:transparent}#content-wrapper::-webkit-scrollbar-thumb{background:rgba(139,148,158,.5);border-radius:999px;border:2px solid transparent;background-clip:content-box}#content-wrapper::-webkit-scrollbar-thumb:hover{background:rgba(126,231,135,.7);background-clip:content-box}#terminal{margin-left:0;padding-left:0;padding-right:4px;display:flex;flex-direction:column;gap:0}#write-lines{display:block}#input-line{margin-left:0;overflow-x:hidden;width:100%;flex-shrink:0;padding:10px 0 12px}#input-hidden{display:flex;align-items:center;gap:10px;width:100%;min-width:0}#container-input{display:inline-block;flex:1 1 auto;position:relative;width:min(var(--container-input-width),100%);max-width:100%;min-width:0}.command{color:#fd9bdb}.output{font-weight:400!important}.keys{color:#ff9951;font-weight:400}#sidebar{width:clamp(170px,17vw,210px);padding:14px 10px 14px 0;display:flex;flex-direction:column;gap:10px;background:transparent;flex-shrink:0}.sidebar-spacer{flex-grow:1}.action-btn{display:flex;align-items:center;justify-content:center;min-height:40px;background:var(--control-bg);border:1px solid var(--control-border);color:var(--control-text);padding:8px 10px;cursor:pointer;font-family:IBM Plex Mono,monospace;transition:background-color .2s,color .2s,border-color .2s,transform .12s ease;text-align:center;text-transform:uppercase;font-weight:600;font-size:11px;letter-spacing:.08em;border-style:dashed}.action-btn:hover{background-color:var(--control-bg-hover);color:var(--control-hover-text);transform:translate(1px);border-style:solid}.clickable{cursor:pointer;border-bottom:1px dashed var(--prompt-default)}.clickable:hover{color:var(--prompt-user);border-bottom-style:solid}.small-btn{width:42px;height:42px;min-height:42px;padding:0;font-size:14px;opacity:.7;border-style:dashed;align-self:flex-end;display:flex;align-items:center;justify-content:center;margin-top:12px}.small-btn:hover{opacity:1;border-style:solid;color:#ff7b72;border-color:#ff7b72}.action-btn:focus-visible,.small-btn:focus-visible,.clickable:focus-visible,a:focus-visible{outline:2px solid var(--prompt-host);outline-offset:2px}#password-input{animation:none;white-space:nowrap;overflow:visible;display:flex;align-items:center;margin-left:0}#password-input input{color:#ff7685}#password-field{width:auto;flex:1;margin-left:10px;color:#ff7685;background:transparent}@media (max-width: 600px){body{padding-top:max(10px,env(safe-area-inset-top));padding-right:max(10px,env(safe-area-inset-right));padding-bottom:max(10px,env(safe-area-inset-bottom));padding-left:max(10px,env(safe-area-inset-left));font-weight:300}input,#ghost-input{font-size:16px;margin-top:2px}a{word-break:break-all}p{line-height:1.35rem;white-space:normal;animation:none}#terminal,#terminal p,#terminal div{overflow-wrap:anywhere;word-break:break-word}pre{line-height:.78rem!important;font-size:.56rem}main{border-width:1px}#terminal,#input-line{margin-left:8px}#input-line{padding-bottom:max(4px,env(safe-area-inset-bottom))}#terminal-layout{padding:0}.lower-main{flex-direction:column}#container-input{width:100%;max-width:none}#sidebar{width:100%;border-left:none;border-top:1px dashed var(--panel-border-soft);padding:10px;height:auto;background:var(--bg);box-sizing:border-box;display:grid;grid-template-columns:repeat(4,1fr);gap:8px;position:sticky;bottom:0;z-index:12;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}#sidebar>.sidebar-spacer{display:none}.action-btn{width:100%;padding:0 6px;font-size:11px;min-height:44px;display:flex;align-items:center;justify-content:center;text-align:center}.small-btn{width:44px;height:44px;margin:0 auto;align-self:center}#password-input{margin-left:8px}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}p,.cursor-block{animation:none!important}}#window-container{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none;z-index:1000}.desktop-window{position:absolute;width:700px;height:480px;background:var(--win-bg, rgba(13, 17, 23, .95));backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);border:1px solid var(--win-border, #30363D);border-radius:0;box-shadow:0 10px 30px #000c;display:flex;flex-direction:column;pointer-events:auto;font-family:IBM Plex Mono,monospace;overflow:hidden;-webkit-user-select:none;user-select:none;animation:openWindow .3s cubic-bezier(.175,.885,.32,1.275);will-change:transform,opacity;transition:border-color .15s ease,box-shadow .15s ease}.desktop-window.is-active{border-color:var(--win-active-border-soft, rgba(88, 166, 255, .45));box-shadow:0 0 0 1px var(--win-active-border-soft, rgba(88, 166, 255, .45)),0 0 0 3px var(--win-active-glow, rgba(88, 166, 255, .16)),0 10px 26px #000000d1;z-index:1001}@keyframes openWindow{0%{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}.window-title-bar{height:36px;background:rgba(255,255,255,.03);border-bottom:1px solid rgba(255,255,255,.05);display:flex;align-items:center;justify-content:space-between;padding:0 12px;cursor:grab;-webkit-user-select:none;user-select:none;color:var(--win-title-color, rgba(255, 255, 255, .9));font-size:13px;font-weight:600;letter-spacing:.5px}.window-title-bar:active{cursor:grabbing;background:rgba(255,255,255,.05)}.window-controls{display:flex;gap:8px}.win-btn{border:none;background:none;color:#8b949e;font-family:inherit;font-weight:700;cursor:pointer;padding:2px 6px;border-radius:2px}.win-btn:hover{background:var(--win-controls-hover, #30363D);color:var(--win-bg, #ffffff)}.win-btn:focus-visible{outline:2px solid var(--win-active-border, #58A6FF);outline-offset:1px}.close-btn:hover{background:#DA3633;color:#fff}.window-content{flex:1;padding:0;overflow:hidden;background:rgba(0,0,0,.2);color:#e6edf3;position:relative;-webkit-user-select:text;user-select:text}.window-content iframe{width:100%;height:100%;border:none}.pdf-viewer-shell{position:relative;width:100%;height:100%;overflow:hidden;background:#ffffff}.pdf-viewer-frame{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;border:none;background:#ffffff}.window-content::-webkit-scrollbar{width:8px}.window-content::-webkit-scrollbar-track{background:#0d1117}.window-content::-webkit-scrollbar-thumb{background:var(--win-scrollbar-thumb, #30363D);border-radius:4px}.window-content::-webkit-scrollbar-thumb:hover{background:var(--win-scrollbar-thumb-hover, #58A6FF)}@media (max-width: 600px){#window-container{display:none}}.resize-handle{position:absolute;bottom:0;right:0;width:20px;height:20px;cursor:nwse-resize;z-index:10}.resize-handle:after{content:"";position:absolute;bottom:4px;right:4px;width:0;height:0;border-style:solid;border-width:0 0 10px 10px;border-color:transparent transparent rgba(255,255,255,.3) transparent}.resize-handle:hover:after{border-color:transparent transparent rgba(255,255,255,.6) transparent}@media (prefers-reduced-motion: reduce){.desktop-window{animation:none}}.explorer-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:16px;padding:18px;height:100%;overflow-y:auto;align-content:start;background:rgba(0,0,0,.2);backdrop-filter:none;-webkit-backdrop-filter:none;border:none}.certificate-grid{grid-template-columns:repeat(auto-fill,minmax(238px,1fr));gap:18px;padding:20px}.gallery-container{width:100%;height:100%;position:relative;display:flex;align-items:center;justify-content:center;background:#000;touch-action:pan-y;outline:none}.gallery-slide{width:100%;height:100%;object-fit:contain;display:none}.gallery-slide.active{display:block;animation:fadeIn .3s ease}.gallery-counter{position:absolute;top:12px;right:12px;z-index:15;background:rgba(0,0,0,.6);color:#ffffffe6;border:1px solid rgba(255,255,255,.2);font-size:12px;padding:4px 8px;border-radius:999px}.gallery-hint{position:absolute;bottom:12px;left:50%;transform:translate(-50%);z-index:15;font-size:12px;color:#ffffffb8;background:rgba(0,0,0,.45);border:1px solid rgba(255,255,255,.14);padding:4px 8px;border-radius:6px}.gallery-nav{position:absolute;top:50%;transform:translateY(-50%);background:rgba(0,0,0,.5);color:#fff;border:1px solid rgba(255,255,255,.22);width:44px;height:44px;cursor:pointer;font-size:24px;line-height:1;z-index:10;transition:background .2s,border-color .2s}.gallery-nav:hover{background:rgba(0,0,0,.8);border-color:#fff6}.gallery-nav:focus-visible,.gallery-container:focus-visible{outline:2px solid var(--prompt-host, #79C0FF);outline-offset:2px}.gallery-prev{left:10px}.gallery-next{right:10px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.explorer-item{display:flex;flex-direction:column;align-items:stretch;gap:8px;cursor:pointer;padding:14px;min-height:184px;border-radius:0;transition:background .12s ease,border-color .12s ease,box-shadow .14s ease,transform .12s ease;color:var(--text);text-align:left;background:linear-gradient(180deg,rgba(255,255,255,.02),rgba(255,255,255,0)),rgba(255,255,255,.015);border:1px solid rgba(255,255,255,.06);outline:none}.explorer-item:hover{background:var(--explorer-hover-bg, rgba(88, 166, 255, .1));border-color:var(--explorer-hover-border, rgba(88, 166, 255, .34));box-shadow:0 0 0 1px var(--explorer-hover-border, rgba(88, 166, 255, .34)),0 0 16px var(--explorer-hover-glow, rgba(88, 166, 255, .2));transform:translateY(-1px)}.explorer-item:focus-visible{background:var(--explorer-hover-bg, rgba(88, 166, 255, .1));border-color:var(--explorer-focus-ring, rgba(88, 166, 255, .62));box-shadow:0 0 0 1px var(--explorer-focus-ring, rgba(88, 166, 255, .62)),0 0 0 3px var(--explorer-hover-glow, rgba(88, 166, 255, .2))}.explorer-icon{width:60px;height:60px;object-fit:cover;margin-bottom:8px;align-self:center;border-radius:0;background-color:var(--folder-color, #58A6FF);border:none;transition:background-color .3s ease;-webkit-mask-image:url(/projects/folder.png);mask-image:url(/projects/folder.png);-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center}.explorer-item:hover .explorer-icon{filter:brightness(1.07) saturate(1.08)}.explorer-label{font-size:14px;line-height:1.4;font-weight:600;color:#ffffffed;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;width:100%;text-shadow:0 1px 2px rgba(0,0,0,.45)}.explorer-description{font-size:12px;line-height:1.45;color:#e6edf3b8;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.explorer-stack{font-size:11px;color:#7ee787f2;text-transform:uppercase;letter-spacing:.06em}.explorer-badges{display:flex;flex-wrap:wrap;gap:6px;margin-top:auto;padding-top:4px}.explorer-badge{font-size:10.5px;line-height:1;padding:5px 7px;border:1px solid rgba(255,255,255,.18);color:#ffffffd1;background:rgba(255,255,255,.04)}.explorer-badge.status-completed{border-color:#7ee7875c;color:#7ee787fa}.explorer-badge.status-in-progress,.explorer-badge.status-inprogress{border-color:#ffd5665c;color:#ffd566fa}.explorer-badge.status-archived{border-color:#8b949e6b;color:#8b949e}.certificate-card{gap:8px;min-height:286px;padding:14px}.certificate-card-preview{aspect-ratio:4 / 3;overflow:hidden;border:1px solid rgba(255,255,255,.08);background:linear-gradient(180deg,rgba(255,255,255,.03),rgba(255,255,255,0)),rgba(255,255,255,.015)}.certificate-card-thumb{width:100%;height:100%;object-fit:cover;object-position:top center;background:rgba(255,255,255,.03)}.certificate-card-fallback{display:grid;place-items:center;color:#e6edf3b8;font-size:12px;letter-spacing:.04em;text-transform:uppercase}.certificate-card-body{display:flex;flex:1;flex-direction:column;gap:8px;padding:0;min-height:0}.certificate-card-kicker,.certificate-card-meta{font-size:11px;line-height:1.35;text-transform:uppercase;letter-spacing:.08em}.certificate-card-kicker{color:#7ee787f0}.certificate-card-meta{color:#e6edf38f}.certificate-window{display:flex;flex-direction:column;height:100%;background:radial-gradient(circle at top left,rgba(88,166,255,.1),transparent 25%),rgba(0,0,0,.18)}.certificate-window-header{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;padding:16px 18px;border-bottom:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.02)}.certificate-window-copy{display:flex;flex-direction:column;gap:4px;min-width:0}.certificate-window-eyebrow{font-size:11px;line-height:1.2;color:#7ee787f0;text-transform:uppercase;letter-spacing:.1em}.certificate-window-title,.certificate-window-meta{margin:0}.certificate-window-title{font-size:20px;line-height:1.2;color:#e6edf3fa}.certificate-window-meta{color:#e6edf3b8;font-size:12px}.certificate-window-actions{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:10px}.certificate-window-link{display:inline-flex;align-items:center;justify-content:center;min-height:32px;padding:0 11px;color:var(--control-text);text-decoration:none;border:1px solid var(--control-border);background:var(--control-bg);font-size:12px;text-transform:uppercase;letter-spacing:.08em;transition:background-color .2s,color .2s,border-color .2s,transform .12s ease;border-style:dashed}.certificate-window-link:hover{background:var(--control-bg-hover);color:var(--control-hover-text);transform:translate(1px);border-style:solid}.certificate-window-media{flex:1;min-height:0;overflow:auto;padding:20px;display:flex;align-items:center;justify-content:center;background:linear-gradient(180deg,rgba(255,255,255,.02),transparent 20%),rgba(0,0,0,.1)}.certificate-window-frame{width:min(100%,840px);padding:12px;border:1px solid rgba(255,255,255,.08);background:linear-gradient(180deg,rgba(255,255,255,.04),rgba(255,255,255,0)),rgba(8,12,17,.6);box-shadow:0 16px 34px #00000052}.certificate-window-image{display:block;width:100%;height:auto;max-width:100%;border:1px solid rgba(255,255,255,.06);background:#ffffff}.certificate-window-empty{display:grid;place-items:center;min-height:220px;width:100%;border:1px dashed rgba(255,255,255,.14);background:rgba(255,255,255,.02);color:#e6edf3b8;font-size:14px}@media (pointer: coarse){.gallery-nav{width:56px;height:56px;font-size:28px}.gallery-hint{font-size:13px}}@media (max-width: 700px){.explorer-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.certificate-grid{grid-template-columns:1fr}.certificate-window-header{flex-direction:column}.certificate-window-actions{justify-content:flex-start}.gallery-hint{display:block}}@media (prefers-reduced-motion: reduce){.gallery-slide.active{animation:none}}
