:root,:root[data-theme=dark]{color-scheme:dark;--bg:#0a0a0e;--bg-elev:#101016;--bg-elev-2:#16161d;--fg:#d8d8d2;--fg-strong:#f2f2ee;--dim:#8a8a8a;--border:#232329;--amber:#e8a33d;--green:#3fb950;--red:#ff5f56;--yellow:#ffbd2e;--link:#e8a33d;--selection-bg:#e8a33d47;--aurora-1:#3fb95042;--aurora-2:#e8a33d3d;--aurora-3:#5e8eff38;--aurora-4:#c45ce82e;--grid-line:#ffffff06;--bg-photo-tint:#0a0a0e85;--bg-photo-filter:saturate(1.12) contrast(1.02);--bg-photo-opacity:.7;--font-mono:"JetBrains Mono", ui-monospace, "SF Mono", "Cascadia Code", Menlo, Consolas, monospace;--font-sans:"Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--maxw:1080px;--radius:8px;--nav-h:60px}:root[data-theme=light]{color-scheme:light;--bg:#f4f1ea;--bg-elev:#fbf9f3;--bg-elev-2:#ece7db;--fg:#26262b;--fg-strong:#111114;--dim:#6a675f;--border:#d8d2c4;--amber:#b26a10;--green:#1a7f37;--red:#d33a2c;--yellow:#b8860b;--link:#b26a10;--selection-bg:#b26a1038;--aurora-1:#1a7f3729;--aurora-2:#b26a1029;--aurora-3:#3c6ec824;--aurora-4:#963cbe1f;--grid-line:#00000008;--bg-photo-tint:#f4f1eaa8;--bg-photo-filter:saturate(.82) brightness(1.12);--bg-photo-opacity:.6}*,:before,:after{box-sizing:border-box}html{background-color:var(--bg);scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{color:var(--fg);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;background-color:#0000;flex-direction:column;min-height:100vh;margin:0;font-size:16px;line-height:1.65;display:flex}.site-bg{z-index:-3;pointer-events:none;background-image:linear-gradient(var(--bg-photo-tint), var(--bg-photo-tint)), url(/assets/images/aurora-photo.jpg);opacity:var(--bg-photo-opacity);filter:var(--bg-photo-filter);background-position:50%,50%;background-repeat:no-repeat,no-repeat;background-size:cover,cover;transition:filter .3s;position:fixed;inset:0}body:before{content:"";z-index:-2;pointer-events:none;background:radial-gradient(36% 32% at 16% 20%, var(--aurora-1), transparent 68%), radial-gradient(40% 36% at 86% 14%, var(--aurora-2), transparent 68%), radial-gradient(44% 40% at 74% 80%, var(--aurora-3), transparent 70%), radial-gradient(38% 34% at 24% 88%, var(--aurora-4), transparent 70%), radial-gradient(30% 28% at 52% 46%, var(--aurora-1), transparent 72%);filter:blur(28px)saturate(140%);will-change:transform, filter;animation:18s ease-in-out infinite alternate aurora-drift,13s ease-in-out infinite alternate aurora-shimmer;position:fixed;inset:-30%}body:after{content:"";z-index:-1;pointer-events:none;background-image:linear-gradient(var(--grid-line) 1px, transparent 1px), linear-gradient(90deg, var(--grid-line) 1px, transparent 1px);background-size:44px 44px;position:fixed;inset:0;-webkit-mask-image:radial-gradient(78% 72% at 50% 32%,#000,#0000 92%);mask-image:radial-gradient(78% 72% at 50% 32%,#000,#0000 92%)}@keyframes aurora-drift{0%{transform:translate(-5%,-3%)scale(1.02)rotate(-1.5deg)}50%{transform:translate(5%,4%)scale(1.16)rotate(2deg)}to{transform:translate(-2%,3%)scale(1.07)rotate(-.5deg)}}@keyframes aurora-shimmer{0%{filter:blur(26px)saturate(135%)hue-rotate(-18deg)}to{filter:blur(34px)saturate(170%)hue-rotate(24deg)}}::selection{background:var(--selection-bg);color:var(--fg-strong)}img{max-width:100%;height:auto;display:block}a{color:var(--link);text-decoration:none;transition:color .15s}a:hover{text-underline-offset:3px;text-decoration:underline}h1,h2,h3,h4{color:var(--fg-strong);font-weight:700;line-height:1.2}code,kbd,pre{font-family:var(--font-mono)}hr{border:none;border-top:1px dashed var(--border);margin:2rem 0}.container{width:100%;max-width:var(--maxw);margin-inline:auto;padding-inline:1.25rem}main{padding-top:var(--nav-h);flex:1 0 auto}.section{padding-block:3.5rem}.section-label{font-family:var(--font-mono);color:var(--amber);letter-spacing:.08em;text-transform:uppercase;margin:0 0 .75rem;font-size:.8rem}.section-label:before{content:"// ";color:var(--dim)}.section-title{font-family:var(--font-mono);margin:0 0 1.5rem;font-size:clamp(1.4rem,3.5vw,2rem)}.dim{color:var(--dim)}.amber{color:var(--amber)}.green{color:var(--green)}.mono{font-family:var(--font-mono)}.text-center{text-align:center}.ascii-rule{font-family:var(--font-mono);color:var(--border);white-space:nowrap;user-select:none;margin:1.5rem 0;overflow:hidden}.ascii-rule:before{content:"────────────────────────────────────────────────────────────────────────────────";color:var(--border)}.btn{font-family:var(--font-mono);border:1px solid var(--amber);color:var(--amber);cursor:pointer;background:0 0;border-radius:4px;align-items:center;gap:.4rem;padding:.55rem 1.05rem;font-size:.9rem;transition:background .15s,color .15s,transform 50ms;display:inline-flex}.btn:hover{background:var(--amber);color:var(--bg);text-decoration:none}.btn:active{transform:translateY(1px)}.btn-green{border-color:var(--green);color:var(--green)}.btn-green:hover{background:var(--green);color:var(--bg)}.btn-ghost{border-color:var(--border);color:var(--fg)}.btn-ghost:hover{background:var(--bg-elev-2);color:var(--fg-strong)}.terminal-window{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elev);overflow:hidden;box-shadow:0 10px 30px -18px #0009}.terminal-titlebar{background:var(--bg-elev-2);border-bottom:1px solid var(--border);align-items:center;gap:.6rem;padding:.55rem .85rem;display:flex}.terminal-dots{gap:.45rem;display:flex}.terminal-dot{border-radius:50%;width:12px;height:12px;display:inline-block}.terminal-dot.red{background:var(--red)}.terminal-dot.yellow{background:var(--yellow)}.terminal-dot.green{background:#27c93f}.terminal-path{font-family:var(--font-mono);color:var(--dim);margin-left:.35rem;font-size:.78rem}.terminal-body{padding:1.5rem 1.6rem}.prompt{font-family:var(--font-mono)}.prompt:before{content:"> ";color:var(--amber)}.cursor{background:var(--amber);vertical-align:-.15em;width:.55ch;height:1.05em;margin-left:2px;animation:1s step-end infinite cursor-blink;display:inline-block}@keyframes cursor-blink{50%{opacity:0}}label{font-family:var(--font-mono);color:var(--dim);margin-bottom:.35rem;font-size:.8rem;display:block}.field{margin-bottom:1.1rem}.input,.textarea,select{width:100%;font-family:var(--font-mono);color:var(--fg-strong);background:var(--bg);border:1px solid var(--border);border-radius:4px;padding:.6rem .75rem;font-size:.92rem;transition:border-color .15s,box-shadow .15s}.input:focus,.textarea:focus,select:focus{border-color:var(--amber);box-shadow:0 0 0 2px var(--selection-bg);outline:none}.textarea{resize:vertical;min-height:130px}::placeholder{color:var(--dim);opacity:.7}.alert{border:1px solid var(--border);font-family:var(--font-mono);border-radius:4px;margin-bottom:1rem;padding:.7rem .9rem;font-size:.85rem}.alert-success{border-color:var(--green);color:var(--green)}.alert-error{border-color:var(--red);color:var(--red)}.hidden{display:none!important}.grid{gap:1.25rem;display:grid}.grid-2{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}.card{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elev);flex-direction:column;transition:border-color .15s,transform .15s;display:flex;overflow:hidden}.card:hover{border-color:var(--amber);transform:translateY(-3px)}.card-img{aspect-ratio:16/9;object-fit:cover;border-bottom:1px solid var(--border);background:var(--bg-elev-2);width:100%}.card-body{flex-direction:column;flex:1;gap:.75rem;padding:1rem 1.1rem;display:flex}.card-title{font-family:var(--font-mono);color:var(--fg-strong);margin:0;font-size:.95rem;line-height:1.4}.card-clickable{cursor:pointer;transition:border-color .2s,transform .25s cubic-bezier(.2,.8,.2,1),box-shadow .25s;position:relative}.card-clickable:hover,.card-clickable:focus-within{border-color:var(--amber);box-shadow:0 14px 34px -18px var(--amber);transform:translateY(-4px)}.card-clickable .card-img{transition:transform .5s cubic-bezier(.2,.8,.2,1),filter .3s}.card-clickable:hover .card-img{filter:brightness(1.06);transform:scale(1.04)}.card-hit{all:unset;cursor:pointer}.card-hit:after{content:"";z-index:1;border-radius:inherit;position:absolute;inset:0}.card-hit:focus-visible:after{outline:2px solid var(--amber);outline-offset:2px;border-radius:var(--radius)}.card-clickable:hover .card-hit{color:var(--amber)}.card-open{color:var(--dim);margin-top:auto;font-size:.75rem;transition:color .2s,letter-spacing .25s}.card-clickable:hover .card-open,.card-clickable:focus-within .card-open{color:var(--green);letter-spacing:.04em}@media (prefers-reduced-motion:reduce){.card-clickable,.card-clickable .card-img{transition:none}.card-clickable:hover,.card-clickable:focus-within,.card-clickable:hover .card-img{transform:none}}.skill{margin-bottom:.9rem}.skill-head{font-family:var(--font-mono);justify-content:space-between;margin-bottom:.3rem;font-size:.85rem;display:flex}.skill-track{background:var(--bg-elev-2);border:1px solid var(--border);border-radius:999px;height:8px;overflow:hidden}.skill-fill{background:linear-gradient(90deg, var(--amber), var(--green));border-radius:999px;width:0;height:100%;transition:width 1s}.timeline{border-left:2px solid var(--border);margin-left:.5rem;padding-left:1.5rem}.tl-item{padding-bottom:2rem;position:relative}.tl-item:before{content:"";background:var(--amber);width:10px;height:10px;box-shadow:0 0 0 3px var(--bg);border-radius:50%;position:absolute;top:.35rem;left:calc(-1.5rem - 6px)}.tl-title{font-family:var(--font-mono);color:var(--fg-strong);margin:0;font-size:1.05rem}.tl-org{font-family:var(--font-mono);color:var(--fg);margin:.25rem 0 .1rem;font-size:.9rem}.tl-meta{font-family:var(--font-mono);color:var(--dim);margin:0 0 .6rem;font-size:.82rem}.tl-bullets{margin:0;padding-left:1.1rem}.tl-bullets li{margin-bottom:.35rem}.tl-bullets-sub{margin:.35rem 0 .15rem;list-style-type:circle}.tl-bullets-sub .tl-bullets-sub{list-style-type:square}.nav{height:var(--nav-h);z-index:100;background:color-mix(in srgb, var(--bg) 85%, transparent);backdrop-filter:blur(8px);border-bottom:1px solid var(--border);position:fixed;top:0;left:0;right:0}.nav-inner{justify-content:space-between;align-items:center;gap:1rem;height:100%;display:flex}.nav-brand{font-family:var(--font-mono);color:var(--fg-strong);align-items:center;gap:.4rem;font-weight:700;display:inline-flex}.nav-brand:hover{color:var(--amber);text-decoration:none}.nav-brand .prompt-char{color:var(--amber)}.nav-links{align-items:center;gap:.35rem;margin:0;padding:0;list-style:none;display:flex}.nav-links a{font-family:var(--font-mono);color:var(--fg);border-radius:4px;padding:.4rem .6rem;font-size:.88rem}.nav-links a:hover,.nav-links a[aria-current=page]{color:var(--amber);background:var(--bg-elev-2);text-decoration:none}.nav-toggle{border:1px solid var(--border);color:var(--fg);cursor:pointer;background:0 0;border-radius:4px;padding:.2rem .55rem;font-size:1.2rem;display:none}.theme-switch{flex:none;width:48px;height:26px;display:inline-block;position:relative}.theme-switch input{opacity:0;width:0;height:0}.theme-switch .slider{cursor:pointer;background:var(--bg-elev-2);border:1px solid var(--border);border-radius:999px;transition:all .2s;position:absolute;inset:0}.theme-switch .slider:before{content:"☀";background:var(--amber);width:20px;height:20px;color:var(--bg);border-radius:50%;justify-content:center;align-items:center;font-size:12px;transition:all .2s;display:flex;position:absolute;top:2px;left:2px}.theme-switch input:checked+.slider:before{content:"☽";transform:translate(22px)}.footer{border-top:1px solid var(--border);background:var(--bg-elev);flex-shrink:0;margin-top:3rem;padding-block:2rem}.footer-inner{font-family:var(--font-mono);color:var(--dim);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;font-size:.82rem;display:flex}.footer-socials{gap:.9rem;font-size:1.1rem;display:flex}.footer-socials a{color:var(--dim)}.footer-socials a:hover{color:var(--amber)}*{scrollbar-width:thin;scrollbar-color:var(--border) transparent}::-webkit-scrollbar{width:11px;height:11px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border:3px solid var(--bg);border-radius:999px}::-webkit-scrollbar-thumb:hover{background:var(--dim)}.chatbot-messages .message{flex-direction:column;gap:3px;max-width:85%;margin-bottom:14px;display:flex}.chatbot-messages .bot-message{align-items:flex-start;margin-right:auto}.chatbot-messages .user-message{align-items:flex-end;margin-left:auto}.chatbot-messages .message:before{font-family:var(--font-mono);letter-spacing:.02em;opacity:.9;font-size:.68rem}.chatbot-messages .bot-message:before{content:"jeba@assistant";color:var(--green)}.chatbot-messages .user-message:before{content:"you";color:var(--amber)}.chatbot-messages .message-content{border-radius:12px;max-width:100%;padding:8px 13px;font-size:.9rem;line-height:1.5}.chatbot-messages .bot-message .message-content{background:var(--bg-elev-2);color:var(--fg);border:1px solid var(--border);border-top-left-radius:3px}.chatbot-messages .user-message .message-content{background:var(--amber);color:var(--bg);border-top-right-radius:3px}.chatbot-messages .message-content p{white-space:pre-wrap;margin:0}.chatbot-messages .message-content.typing{align-items:center;gap:4px;display:inline-flex}.chatbot-messages .message-content.typing span{background:var(--fg);opacity:.5;border-radius:50%;width:7px;height:7px;animation:1.2s infinite both chat-blink}.chatbot-messages .message-content.typing span:nth-child(2){animation-delay:.2s}.chatbot-messages .message-content.typing span:nth-child(3){animation-delay:.4s}@keyframes chat-blink{0%,80%,to{opacity:.2}40%{opacity:.9}}.prose{color:var(--fg)}.prose h1,.prose h2,.prose h3,.prose h4{margin:1.75rem 0 .75rem}.prose h1:first-child,.prose h2:first-child,.prose h3:first-child{margin-top:0}.prose p{margin:0 0 1.1rem}.prose ul,.prose ol{margin:0 0 1.1rem;padding-left:1.4rem}.prose li{margin-bottom:.35rem}.prose blockquote{border-left:3px solid var(--amber);background:var(--bg-elev-2);color:var(--fg);margin:0 0 1.1rem;padding:.6rem 1rem}.prose code{background:var(--bg-elev-2);border:1px solid var(--border);border-radius:4px;padding:.1em .4em;font-size:.88em}.prose pre{background:var(--bg-elev-2);border:1px solid var(--border);border-radius:var(--radius);margin:0 0 1.1rem;padding:1rem 1.1rem;overflow-x:auto}.prose pre code{background:0 0;border:none;padding:0}.prose img{border-radius:var(--radius);border:1px solid var(--border);margin:1rem 0}.prose hr{margin:2rem 0}.prose table{border-collapse:collapse;width:100%;margin:0 0 1.1rem;font-size:.9rem}.prose th,.prose td{border:1px solid var(--border);text-align:left;padding:.5rem .7rem}.tag-pill{font-family:var(--font-mono);letter-spacing:.02em;color:var(--dim);border:1px solid var(--border);border-radius:999px;align-items:center;padding:.15rem .6rem;font-size:.72rem;display:inline-flex}.tag-pill-draft{color:var(--red);border-color:var(--red)}.oauth-buttons{flex-wrap:wrap;gap:.6rem;margin-bottom:1.25rem;display:flex}.comments-list .comment{border-bottom:1px dashed var(--border);gap:.75rem;padding:.9rem 0;display:flex}.comments-list .comment:last-child{border-bottom:none}.comments-list .comment-avatar{border:1px solid var(--border);object-fit:cover;border-radius:50%;flex-shrink:0;width:32px;height:32px}.comments-list .comment-body{flex:1;min-width:0}.comments-list .comment-head{align-items:baseline;gap:.5rem;margin-bottom:.2rem;display:flex}.comments-list .comment-author{font-family:var(--font-mono);color:var(--amber);font-size:.85rem}.comments-list .comment-time{font-family:var(--font-mono);color:var(--dim);font-size:.72rem}.comments-list .comment-text{white-space:pre-wrap;margin:0;font-size:.92rem}.comments-list .comment-delete{color:var(--dim);font-family:var(--font-mono);cursor:pointer;background:0 0;border:none;margin-top:.3rem;padding:0;font-size:.72rem}.comments-list .comment-delete:hover{color:var(--red)}#cf-turnstile-container{margin:1rem 0}@media (width<=820px){.grid-3{grid-template-columns:1fr 1fr}}@media (width<=680px){.nav-toggle{display:inline-block}.nav-links{top:var(--nav-h);background:var(--bg-elev);border-bottom:1px solid var(--border);flex-direction:column;align-items:stretch;gap:0;padding:.5rem 1.25rem 1rem;display:none;position:absolute;left:0;right:0}.nav-links.open{display:flex}.nav-links a{padding:.7rem .4rem}.grid-2,.grid-3{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}
