.chat-root{position:fixed;bottom:calc(18px + env(safe-area-inset-bottom));right:18px;z-index:60;font-family:JetBrains Mono,monospace;-webkit-tap-highlight-color:transparent}.chat-toggle{width:56px;height:56px;border-radius:50%;border:none;cursor:pointer;background:var(--accent);color:#000;box-shadow:0 8px 24px #00000040;transition:transform .15s ease,box-shadow .15s ease;-webkit-appearance:none;appearance:none;-webkit-tap-highlight-color:transparent}body.dark .chat-toggle{background:var(--accent-dark)}.chat-toggle:hover{transform:translateY(-2px);box-shadow:0 12px 32px #00000047}.chat-panel{position:absolute;bottom:76px;right:0;width:420px;height:620px;display:flex;flex-direction:column;background:var(--glass);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-radius:16px;border:1px solid rgba(0,0,0,.08);box-shadow:0 24px 64px #00000040;overflow:hidden;animation:panelIn .22s ease;z-index:61}body.dark .chat-panel{background:var(--glass-dark);border-color:#ffffff14}@keyframes panelIn{0%{opacity:0;transform:translateY(10px) scale(.985)}to{opacity:1;transform:none}}.chat-messages{flex:1;padding:14px;display:flex;flex-direction:column;gap:10px;overflow-y:auto;padding-bottom:calc(14px + env(safe-area-inset-bottom))}.msg{display:flex;animation:msgIn .18s ease forwards}@keyframes msgIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.msg.me{justify-content:flex-end}.msg.bot{justify-content:flex-start}.bubble{max-width:78%;padding:11px 14px;font-size:13.5px;line-height:1.45;border-radius:12px;word-break:break-word}.msg.bot .bubble{background:#fff;border:1px solid rgba(0,0,0,.08)}body.dark .msg.bot .bubble{background:#000;border-color:#ffffff14}.msg.me .bubble{background:var(--accent);color:#000;border-radius:14px 14px 6px}.chat-input{display:flex;gap:8px;padding:10px;border-top:1px solid rgba(0,0,0,.08);background:color-mix(in oklab,var(--glass) 92%,#fff 8%);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}body.dark .chat-input{background:color-mix(in oklab,var(--glass-dark) 92%,#000 8%)}.chat-input input{flex:1;padding:10px 12px;border-radius:10px;border:1px solid rgba(0,0,0,.08);font-family:inherit;font-size:16px;-webkit-appearance:none}.chat-input button{min-width:44px;border-radius:10px;border:none;cursor:pointer;background:var(--accent);-webkit-appearance:none;-webkit-tap-highlight-color:transparent}@media(max-width:600px){.chat-root{bottom:calc(14px + env(safe-area-inset-bottom));right:14px;z-index:60}.chat-toggle{width:52px;height:52px}.chat-panel{bottom:68px;width:calc(100vw - 28px);max-width:360px;height:48vh;max-height:460px;border-radius:14px;box-shadow:0 16px 48px #00000059}.chat-messages{padding:12px}.bubble{max-width:85%;font-size:13.5px}.chat-input{padding:8px}}:root{--bg: #f7f6f3;--bg-dark: #111111;--fg: #2a2a2a;--fg-dark: #e6e6e6;--accent: #c96a1b;--accent-dark: #8be28b;--glass: rgba(255, 255, 255, .35);--glass-dark: rgba(255, 255, 255, .08)}*{margin:0;padding:0;box-sizing:border-box;scroll-behavior:smooth}html{font-family:JetBrains Mono,monospace}body{background:var(--bg);color:var(--fg);transition:background .35s,color .35s}body.dark{background:var(--bg-dark);color:var(--fg-dark)}.block{padding:4.5rem 2rem 4rem}.glass{background:var(--glass);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-radius:16px;box-shadow:0 4px 16px #0002}body.dark .glass{background:var(--glass-dark);box-shadow:0 4px 18px #0006}.centre{display:flex;flex-direction:column;align-items:center;text-align:center}.block h2{font-size:1.8rem;margin-bottom:1rem;color:var(--accent)}body.dark .block h2{color:var(--accent-dark)}@media(max-width:750px){.navbar ul{display:none}.block{padding-top:5rem}}.navbar{position:fixed;inset:0 0 auto;height:56px;z-index:1000;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:0 1.3rem;background:var(--glass);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}body.dark .navbar{background:var(--glass-dark)}.nav-side{display:flex;align-items:center}.nav-side.left{justify-content:flex-start}.nav-side.right{justify-content:flex-end;gap:.8rem}.brand{font-weight:600;font-size:1.25rem;color:var(--accent);white-space:nowrap}body.dark .brand{color:var(--accent-dark)}.cursor-blink{display:inline-block;width:.5ch;animation:blinkBrand 1s steps(1) infinite;opacity:.65}@keyframes blinkBrand{50%{opacity:0}}.nav-links{justify-self:center}.navbar ul{display:flex;gap:1rem;list-style:none}.navbar a{text-decoration:none;color:inherit;font-weight:600;position:relative}.toggle input{display:none}.thumb{width:48px;height:24px;padding:3px;border-radius:24px;background:var(--glass);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;transition:.35s;position:relative}body.dark .thumb{background:var(--glass-dark)}.sun,.moon{font-size:.9rem;position:absolute;transition:.35s}.sun{left:6px}.moon{right:6px;opacity:0}input:checked+.thumb .sun{opacity:0}input:checked+.thumb .moon{opacity:1}.hamburger{display:none;width:36px;height:28px;border:0;background:transparent;cursor:pointer;position:relative;color:var(--accent)}body.dark .hamburger{color:var(--accent-dark)}.hamburger span{display:block;height:2px;width:100%;background:currentColor;border-radius:2px;position:absolute;left:0;transition:transform .25s,opacity .2s}.hamburger span:nth-child(1){top:5px}.hamburger span:nth-child(2){top:13px}.hamburger span:nth-child(3){top:21px}.hamburger.is-open span:nth-child(1){transform:translateY(8px) rotate(45deg)}.hamburger.is-open span:nth-child(2){opacity:0}.hamburger.is-open span:nth-child(3){transform:translateY(-8px) rotate(-45deg)}@media(max-width:780px){.navbar{grid-template-columns:auto auto}.hamburger{display:block}.nav-links{position:fixed;top:64px;left:50%;transform:translate(-50%,-10px);max-width:440px;width:92%;z-index:999;background:#fff;color:#111;border-radius:14px;border:1px solid rgba(0,0,0,.1);opacity:0;pointer-events:none;transition:opacity .25s ease,transform .25s ease}body.dark .nav-links{background:#050505;color:#f1f1f1;border-color:#ffffff24}.nav-links.open{opacity:1;transform:translate(-50%);pointer-events:auto}.nav-links ul{display:flex;flex-direction:column;gap:1.1rem;padding:1.4rem;text-align:center}}.hero{min-height:100vh;padding-top:56px;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;background:linear-gradient(135deg,#fff1d6,#ffd8a8,#ffcaa0)}body.dark .hero{background:linear-gradient(135deg,#001400,#001d0d)}.hero h1{font-size:clamp(2.4rem,6vw,4.1rem);font-weight:600}.hero span{color:var(--accent)}body.dark .hero span{color:var(--accent-dark)}.tagline{font-size:1.15rem;font-weight:600;height:26px;margin:.8rem 0;position:relative;white-space:nowrap;overflow:hidden}.tagline:after{content:"|";position:absolute;right:-.25em;animation:blink 1s steps(1) infinite;opacity:.6}@keyframes blink{50%{opacity:0}}.cta{margin-top:1.3rem;padding:.55rem 1.25rem;border:none;border-radius:9999px;background:var(--accent);color:#000;font-weight:600;text-decoration:none;display:inline-flex;gap:.4rem;align-items:center;box-shadow:0 0 8px #0001;transition:transform .25s,box-shadow .25s}body.dark .cta{background:var(--accent-dark);color:#000}.cta:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0002}.molebox{--crt-green: #9aff57;--crt-amber: #ffda7b;--crt-shadow: rgba(0, 0, 0, .35);margin:1.7rem 0;padding:1.2rem 1rem;width:308px;border-radius:12px;position:relative;background:var(--glass);box-shadow:0 10px 24px var(--crt-shadow),inset 0 0 0 2px #00000026,inset 0 0 0 4px #ffffff1f;display:flex;flex-direction:column;align-items:center;overflow:hidden}body.dark .molebox{background:var(--glass-dark);box-shadow:0 10px 28px #0000008c,inset 0 0 0 2px #131617,inset 0 0 0 4px #050607}.molebox:before,.molebox:after{content:"";position:absolute;inset:0;pointer-events:none}.molebox:before{background:repeating-linear-gradient(to bottom,rgba(255,255,255,.04) 0,rgba(255,255,255,.04) 1px,transparent 2px,transparent 3px);mix-blend-mode:overlay;opacity:.35;animation:flicker .9s linear infinite}.molebox:after{background:radial-gradient(120% 80% at 50% 60%,transparent 55%,rgba(0,0,0,.65) 100%)}@keyframes flicker{50%{opacity:.28}}.toprow,.midrow,.botrow{display:flex;gap:.7rem;margin:.22rem 0}.hole{width:82px;height:82px;border-radius:10px;position:relative;overflow:hidden;cursor:pointer;background:radial-gradient(60% 55% at 50% 45%,#f3f3f3,#d6d6d6 70%),repeating-linear-gradient(45deg,#0000000d 0 4px,#ffffff0d 4px 8px);box-shadow:0 0 0 2px #b0b0b0,inset 0 6px 14px #00000026,inset 0 -8px 14px #ffffff40;transition:transform .12s ease,filter .12s ease}.hole:hover{transform:translateY(-1px);filter:brightness(1.06) contrast(1.02)}.hole:active{transform:scale(.985)}body.dark .hole{background:radial-gradient(60% 55% at 50% 45%,#14191b,#0a0d0e 70%),repeating-linear-gradient(45deg,#ffffff05 0 4px,#00000005 4px 8px);box-shadow:0 0 0 2px #1c2022,inset 0 8px 16px #000000a6,inset 0 -8px 14px #ffffff0a}.hole:after{content:"";position:absolute;left:50%;top:50%;width:10px;height:10px;border-radius:50%;transform:translate(-50%,-50%) scale(0);background:radial-gradient(circle,rgba(154,255,87,.45),transparent 60%);filter:blur(1px);opacity:0}.hole:active:after{animation:phosphor .35s ease-out}@keyframes phosphor{0%{transform:translate(-50%,-50%) scale(.2);opacity:.9}to{transform:translate(-50%,-50%) scale(5.5);opacity:0}}.dog{position:absolute;left:50%;bottom:-78px;transform:translate(-50%);width:74px;height:74px;pointer-events:none;image-rendering:-webkit-optimize-contrast;filter:drop-shadow(0 0 6px rgba(154,255,87,.35)) drop-shadow(0 6px 14px rgba(0,0,0,.55));transition:bottom .18s ease}.dog.up{bottom:4px;animation:popCRT .22s ease-out}@keyframes popCRT{0%{transform:translate(-50%) translateY(3px) scale(.97)}60%{transform:translate(calc(-50% - .3px)) translateY(-1px) scale(1.01)}to{transform:translate(-50%) translateY(0) scale(1)}}.hole.hit .dog{animation:hitStutter .18s steps(2) both}@keyframes hitStutter{0%{transform:translate(-50%) scale(1)}50%{transform:translate(-49%) scale(.9)}to{transform:translate(-50%) scale(1)}}.meters{font-weight:800;letter-spacing:.3px;margin:.85rem 0 .6rem;text-align:center;color:#0b2e0b;text-shadow:0 0 6px rgba(154,255,87,.28),0 0 14px rgba(154,255,87,.18)}body.dark .meters{color:var(--fg-dark)}#startBtn,#restartBtn{font-family:inherit;font-weight:700;font-size:.95rem;padding:.55rem 1.6rem;border-radius:9999px;cursor:pointer;letter-spacing:.3px;border:2px solid transparent;transition:background .25s,color .25s,border-color .25s,transform .15s;box-shadow:0 2px 6px #0002}#startBtn{background:var(--accent);color:#000}body.dark #startBtn{background:var(--accent-dark);color:#000}#restartBtn{background:transparent;color:var(--accent);border-color:var(--accent)}body.dark #restartBtn{color:var(--accent-dark);border-color:var(--accent-dark)}#startBtn:hover,#restartBtn:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0003}#startBtn:active,#restartBtn:active{transform:translateY(0);box-shadow:0 2px 6px #0002 inset}.overlay{position:fixed;inset:0;display:flex;justify-content:center;align-items:center;background:#000000d1;z-index:999;overflow:hidden}.overlay.hide{display:none!important}.zoomdog{width:120px;height:120px;will-change:transform,opacity;filter:drop-shadow(0 0 10px rgba(154,255,87,.5)) drop-shadow(0 14px 30px rgba(0,0,0,.6));backface-visibility:hidden}.zoomdog.boom{animation:zoomout 1.6s cubic-bezier(.22,.86,.27,.98) forwards}@keyframes zoomout{0%{transform:scale(1) rotate(0);opacity:1;filter:drop-shadow(0 0 10px rgba(154,255,87,.55)) drop-shadow(0 14px 30px rgba(0,0,0,.6))}40%{transform:scale(4) rotate(-2deg);opacity:.95}70%{transform:scale(9) rotate(1deg);opacity:.85}to{transform:scale(12);opacity:0;filter:drop-shadow(0 0 0 rgba(0,0,0,0))}}@media(max-width:360px){.hole{width:74px;height:74px}.dog{width:66px;height:66px;bottom:-66px}.dog.up{bottom:4px}}.skills-comic .skill-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1.4rem;width:100%;max-width:1200px;padding:1rem}.skills-comic .skill-card{background:var(--glass);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:12px;padding:1.2rem 1rem;border:3px dashed var(--accent);box-shadow:6px 6px #000,inset 0 0 0 2px #fff3;transform:rotate(-.8deg);transition:transform .25s ease,box-shadow .25s ease;position:relative}body.dark .skills-comic .skill-card{background:var(--glass-dark);border-color:var(--accent-dark);box-shadow:6px 6px #111,inset 0 0 0 2px #ffffff1a}.skills-comic .skill-card:hover{transform:rotate(.9deg) scale(1.03);box-shadow:10px 10px 0 var(--accent),0 6px 14px #0000004d}body.dark .skills-comic .skill-card:hover{box-shadow:10px 10px 0 var(--accent-dark),0 6px 18px #00000080}.skills-comic .skill-title{display:flex;align-items:center;gap:.6rem;font-weight:900;font-size:1.05rem;text-transform:uppercase;letter-spacing:.5px;color:var(--accent);text-shadow:1px 1px 0 #000;margin-bottom:.6rem}body.dark .skills-comic .skill-title{color:var(--accent-dark)}.skills-comic .skill-title i{font-size:1.2rem;background:var(--accent);color:#000;padding:.4rem;border-radius:50%;box-shadow:2px 2px #000}body.dark .skills-comic .skill-title i{background:var(--accent-dark)}.skills-comic .title-text:after{content:"💥";margin-left:.4rem;font-size:.95rem;animation:wiggle 1.5s infinite}@keyframes wiggle{0%,to{transform:rotate(0)}25%{transform:rotate(-12deg)}75%{transform:rotate(12deg)}}.skills-comic .pill-list{display:flex;flex-wrap:wrap;gap:.5rem;list-style:none}.skills-comic .pill{background:#fff;border:2px solid #000;border-radius:6px;padding:.45rem .7rem;font-weight:800;font-size:.92rem;text-transform:uppercase;transform:rotate(-2deg);box-shadow:2px 2px #000;transition:transform .15s ease}body.dark .skills-comic .pill{background:#111;color:var(--fg-dark);border-color:var(--accent-dark)}.skills-comic .pill:hover{transform:rotate(2deg) scale(1.1);background:var(--accent);color:#000}body.dark .skills-comic .pill:hover{background:var(--accent-dark)}.skills-comic .pill:after{content:"⚡";margin-left:.25rem;opacity:.7;font-size:.8rem}@media(max-width:640px){.skills-comic .skill-card{transform:none}.skills-comic .skill-card:hover{transform:scale(1.02)}.skills-comic .pill{transform:none}}#experience{max-width:1400px;margin:0 auto;padding:2.5rem 2rem;position:relative;border-radius:22px;overflow:hidden}#experience.block.glass{background:color-mix(in oklab,var(--glass) 90%,#fff 10%);-webkit-backdrop-filter:blur(16px) saturate(1.05);backdrop-filter:blur(16px) saturate(1.05);box-shadow:0 10px 28px #00000024,inset 0 1px #ffffff26;border:2px solid rgba(0,0,0,.05);border-radius:22px}body.dark #experience.block.glass{background:color-mix(in oklab,var(--glass-dark) 90%,#0a0a0a 10%);box-shadow:0 14px 36px #0009,inset 0 1px #ffffff0f;border:2px solid rgba(255,255,255,.05);border-radius:22px}#experience h2{text-align:center;margin-top:1.5rem;margin-bottom:1.8rem;font-weight:900;letter-spacing:.3px;position:relative}#experience h2:after{content:"";position:absolute;left:50%;bottom:-10px;width:80px;height:3px;border-radius:2px;transform:translate(-50%);background:var(--accent)}body.dark #experience h2:after{background:var(--accent-dark)}#experience .timeline{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:1fr;gap:1rem}#experience .timeline>li{background:color-mix(in oklab,var(--glass) 92%,#fff 8%);border:2px solid color-mix(in oklab,var(--accent) 35%,transparent);border-radius:14px;padding:1rem 1.1rem;box-shadow:0 4px 14px #0000001a,inset 0 0 0 1px #ffffff2e;position:relative;transform:rotate(-.4deg);transition:transform .2s ease,box-shadow .2s ease}body.dark #experience .timeline>li{background:color-mix(in oklab,var(--glass-dark) 92%,#0b0b0b 8%);border-color:color-mix(in oklab,var(--accent-dark) 35%,transparent);box-shadow:0 6px 18px #00000059,inset 0 0 0 1px #ffffff1a}#experience .timeline>li:before{content:"✶";position:absolute;left:-10px;top:10px;font-size:.9rem;color:var(--accent);text-shadow:0 0 6px color-mix(in oklab,var(--accent) 60%,transparent)}body.dark #experience .timeline>li:before{color:var(--accent-dark);text-shadow:0 0 6px color-mix(in oklab,var(--accent-dark) 60%,transparent)}@media(hover:hover)and (pointer:fine){#experience .timeline>li:hover{transform:rotate(.25deg) translateY(-3px);box-shadow:0 12px 24px #0003,0 0 0 1px color-mix(in oklab,var(--accent) 22%,transparent) inset}body.dark #experience .timeline>li:hover{box-shadow:0 14px 30px #0009,0 0 0 1px color-mix(in oklab,var(--accent-dark) 22%,transparent) inset}}#experience .timeline>li>strong{display:block;font-size:1.06rem;font-weight:900;letter-spacing:.2px;text-transform:uppercase}#experience .timeline>li>em{display:block;margin-top:.2rem;font-size:.92rem;opacity:.8}#experience .timeline>li>ul{margin:.65rem 0 0;padding:0;list-style:none;display:grid;gap:.5rem}#experience .timeline>li>ul li{padding-left:1.15rem;position:relative;line-height:1.5;font-size:.96rem}#experience .timeline>li>ul li:before{content:"▸";position:absolute;left:0;top:0;color:var(--accent);font-weight:900}body.dark #experience .timeline>li>ul li:before{color:var(--accent-dark)}#experience .timeline>li>ul strong{color:var(--accent);font-weight:800}body.dark #experience .timeline>li>ul strong{color:var(--accent-dark)}#experience .timeline a{color:inherit;text-decoration:none;border-bottom:1px dashed currentColor}#experience .timeline a:hover{border-bottom-style:solid}@media(min-width:900px){#experience .timeline{display:block;column-count:2;column-gap:1.5rem;margin-top:1.25rem}#experience .timeline>li{display:inline-block;width:100%;margin:0 0 1.4rem;break-inside:avoid}#experience .timeline>li:before{left:-6px}}@media(min-width:1600px){#experience{max-width:1500px}}.card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.5rem;max-width:1100px;margin:0 auto;padding:1rem}.proj{padding:1.3rem 1.1rem;border-radius:12px;background:#fffef8;color:var(--fg);border:2px solid #000;box-shadow:6px 6px #0002,0 2px 10px #00000026;transform:rotate(-1.2deg);transition:transform .2s ease,box-shadow .2s ease;position:relative;display:flex;flex-direction:column;gap:.5rem;text-decoration:none;overflow:hidden}body.dark .proj{background:#111;color:var(--fg-dark);border-color:var(--accent-dark);box-shadow:6px 6px #0006}.proj:hover,.proj:focus-visible{transform:rotate(.8deg) scale(1.03);box-shadow:10px 10px 0 var(--accent),0 6px 18px #0000004d;z-index:2;outline:none}body.dark .proj:hover,body.dark .proj:focus-visible{box-shadow:10px 10px 0 var(--accent-dark),0 6px 20px #00000080}.proj:before{content:"📌";position:absolute;top:.5rem;right:.6rem;font-size:1.1rem;opacity:.8;pointer-events:none}.proj h3{font-size:1.1rem;font-weight:900;color:var(--accent);margin-bottom:.25rem;text-transform:uppercase;text-shadow:1px 1px 0 #0002}body.dark .proj h3{color:var(--accent-dark);text-shadow:none}.proj p{font-size:.9rem;line-height:1.4;opacity:.9}.proj:hover p{opacity:1}.proj:after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 20% 30%,rgba(0,0,0,.05) 1px,transparent 1px) repeat;background-size:6px 6px;opacity:.2;pointer-events:none;mix-blend-mode:multiply}body.dark .proj:after{background:radial-gradient(circle at 20% 30%,rgba(255,255,255,.07) 1px,transparent 1px) repeat}.proj .proj-cta{position:absolute;inset:auto 0 0;padding:.45rem .6rem;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.3px;background:#000000bf;color:#fff;display:flex;justify-content:center;align-items:center;opacity:0;transform:translateY(6px);transition:opacity .2s ease,transform .2s ease;pointer-events:none}body.dark .proj .proj-cta{background:#000000d9}.proj:hover .proj-cta,.proj:focus-visible .proj-cta{opacity:1;transform:translateY(0)}@media(max-width:640px){.card-grid{grid-template-columns:1fr;gap:1rem}.proj{transform:none;box-shadow:0 3px 10px #00000026}.proj:hover{transform:scale(1.02);box-shadow:0 6px 16px #00000040}.proj .proj-cta{display:none}.proj h3{font-size:1rem}.proj p{font-size:.85rem;line-height:1.35}}.cert-heading{font-size:1.8rem;margin-bottom:1.2rem;color:var(--accent)}body.dark .cert-heading{color:var(--accent-dark)}.cert-card{text-decoration:none;color:inherit;text-align:center;padding:1.6rem 1.2rem;display:flex;flex-direction:column;align-items:center;gap:.6rem;border-radius:14px;background:color-mix(in srgb,var(--glass) 88%,#fff 12%);border:2px dashed var(--accent);box-shadow:4px 6px #0002,0 4px 14px #0000001f;transition:transform .25s ease,box-shadow .25s ease;position:relative;overflow:hidden;cursor:pointer}body.dark .cert-card{background:color-mix(in srgb,var(--glass-dark) 88%,#111 12%);border-color:var(--accent-dark);box-shadow:4px 6px #0006,0 4px 18px #00000059}.cert-card:hover{transform:translateY(-6px) rotate(-1deg);box-shadow:8px 10px 0 var(--accent),0 8px 20px #00000040}body.dark .cert-card:hover{box-shadow:8px 10px 0 var(--accent-dark),0 8px 24px #00000080}.cert-img{width:120px;margin-bottom:.6rem;border-radius:0;border:none;padding:0;background:transparent;filter:drop-shadow(0 4px 10px rgba(0,0,0,.2));transition:transform .3s ease;image-rendering:-webkit-optimize-contrast}body.dark .cert-img{background:transparent}.cert-card:hover .cert-img{transform:scale(1.1) rotate(-3deg)}.cert-title{font-size:1rem;font-weight:800;text-transform:uppercase;margin-bottom:.25rem;color:var(--accent)}body.dark .cert-title{color:var(--accent-dark)}.cert-meta{font-size:.9rem;opacity:.9}.cert-overlay{position:absolute;bottom:0;left:0;width:100%;padding:.4rem;font-size:.8rem;font-weight:700;text-transform:uppercase;background:#0009;color:#fff;opacity:0;transition:opacity .3s ease}.cert-card:hover .cert-overlay{opacity:1}.cert-card:after{content:"✦";position:absolute;top:.6rem;left:.6rem;font-size:1rem;color:var(--accent);opacity:.7;animation:sparkle 2.5s infinite ease-in-out}body.dark .cert-card:after{color:var(--accent-dark)}@keyframes sparkle{0%,to{transform:scale(1) rotate(0);opacity:.7}50%{transform:scale(1.3) rotate(15deg);opacity:1}}@media(max-width:640px){.card-grid{grid-template-columns:1fr;gap:1rem}.cert-img{width:90px}.cert-title{font-size:.95rem}.cert-meta{font-size:.82rem}}.contact-links.sarcastic{display:flex;justify-content:center;flex-wrap:wrap;gap:1.2rem;margin-top:1.6rem}.contact-links.sarcastic a{display:inline-flex;align-items:center;gap:.55rem;font-size:1.05rem;font-weight:900;text-decoration:none;color:var(--fg);background:#fff;border:3px dashed var(--accent);border-radius:10px;padding:.7rem 1rem;transform:rotate(-1.2deg);box-shadow:4px 4px #000;transition:transform .2s ease,box-shadow .2s ease,background .2s ease}body.dark .contact-links.sarcastic a{background:#111;border-color:var(--accent-dark);color:var(--fg-dark);box-shadow:4px 4px #000}.contact-links.sarcastic a:hover{transform:rotate(1.2deg) scale(1.05);background:var(--accent);color:#000;box-shadow:6px 6px #000}body.dark .contact-links.sarcastic a:hover{background:var(--accent-dark);color:#000}.contact-links.sarcastic a:after{content:"⚡";margin-left:.3rem;font-size:.85rem;opacity:.7}@media(max-width:640px){.contact-links.sarcastic{flex-direction:column;align-items:center}.contact-links.sarcastic a{width:100%;justify-content:center}}.timeline-horz__progress{position:sticky;top:0;left:0;width:100%;height:4px;background:#111;z-index:5;overflow:hidden}.timeline-horz__progress-bar{height:100%;width:0%;background:linear-gradient(90deg,var(--accent),var(--accent-dark));transition:width .08s ease-out}.timeline-horz__wrapper{position:relative;overflow-x:auto;padding:1rem 0;scroll-snap-type:x mandatory;scroll-padding:1rem 2rem;-webkit-overflow-scrolling:touch}.timeline-horz{display:flex;gap:2rem;padding:1rem 2rem;list-style:none;min-width:max-content}.timeline-horz__item{scroll-snap-align:center;flex:0 0 auto;width:280px;min-height:200px;padding:1rem;background:var(--glass);border:2px solid var(--accent);border-radius:12px;position:relative;box-shadow:0 0 0 transparent;opacity:0;transform:translateY(24px) scale(.97);transition:opacity .6s ease-out,transform .6s ease-out,box-shadow .25s ease,background .25s ease,border-color .25s ease}.timeline-horz__item.visible{opacity:1;transform:translateY(0) scale(1);box-shadow:0 0 14px var(--accent),inset 0 0 6px var(--accent)}.timeline-horz__item:hover{transform:translateY(-4px) scale(1.02);box-shadow:0 0 16px var(--accent),inset 0 0 6px var(--accent)}.timeline-horz__dot{position:absolute;top:-14px;left:50%;transform:translate(-50%);width:12px;height:12px;background:var(--accent);border-radius:50%;box-shadow:0 0 6px var(--accent),inset 0 0 2px #000;animation:dot-pulse 2s infinite}@keyframes dot-pulse{0%,to{transform:translate(-50%) scale(1)}50%{transform:translate(-50%) scale(1.35)}}.timeline-horz__year{display:inline-block;font-size:.75rem;font-weight:700;background:#111;color:var(--accent);border:1px dashed var(--accent);padding:.2rem .5rem;border-radius:4px;margin-bottom:.5rem;box-shadow:inset 0 0 3px var(--accent);animation:year-glow 2s ease-in-out infinite alternate}@keyframes year-glow{0%{text-shadow:0 0 4px var(--accent)}to{text-shadow:0 0 8px var(--accent)}}.timeline-horz__title{font-size:1rem;font-weight:800;margin:.4rem 0}.timeline-horz__blurb{font-size:.9rem;opacity:.9;line-height:1.4}body.dark .timeline-horz__item{background:var(--glass-dark);border-color:var(--accent-dark);box-shadow:0 0 10px var(--accent-dark)}body.dark .timeline-horz__dot{background:var(--accent-dark);box-shadow:0 0 6px var(--accent-dark),inset 0 0 2px #000}body.dark .timeline-horz__year{color:var(--accent-dark);border-color:var(--accent-dark);box-shadow:inset 0 0 3px var(--accent-dark)}body.dark .timeline-horz__title,body.dark .timeline-horz__blurb{color:var(--fg-dark)}.timeline-horz__wrapper::-webkit-scrollbar{height:6px}.timeline-horz__wrapper::-webkit-scrollbar-thumb{background:var(--accent);border-radius:3px}body.dark .timeline-horz__wrapper::-webkit-scrollbar-thumb{background:var(--accent-dark)}@media(prefers-reduced-motion:reduce){.timeline-horz__item,.timeline-horz__item.visible{transition:none;animation:none;transform:none;opacity:1}.timeline-horz__dot,.timeline-horz__year{animation:none}}@media(max-width:480px){.timeline-horz__item{width:240px}.timeline-horz__title{font-size:.95rem}.timeline-horz__blurb{font-size:.85rem}}.hf-wrapper{padding:3rem 2rem;background:var(--bg-dark);color:var(--fg-dark);font-family:JetBrains Mono,monospace;border-top:2px solid var(--glass-dark);transition:background .35s ease,color .35s ease;box-shadow:0 0 20px #0f82;overflow:hidden}body:not(.dark) .hf-wrapper{background:var(--bg);color:var(--fg);border-top:2px solid var(--glass);box-shadow:0 0 20px #ff7a0033}.hf-footer-centre{display:flex;flex-direction:column;align-items:center;text-align:center}.hf-brand{margin-bottom:1.5rem}.hf-title{font-size:2rem;font-weight:700;color:var(--accent-dark);margin-bottom:.5rem;text-shadow:0 0 10px var(--accent-dark);animation:pulse-glow 2s infinite}body:not(.dark) .hf-title{color:var(--accent);text-shadow:0 0 10px var(--accent)}.hf-tagline{font-size:1rem;opacity:.9;color:var(--fg-dark)}body:not(.dark) .hf-tagline{color:var(--fg)}.hf-meta{margin:1.5rem 0;font-size:1rem;color:var(--fg-dark)}body:not(.dark) .hf-meta{color:var(--fg)}.hf-stack{line-height:1.6}.rainbow{position:relative;font-weight:700;color:var(--accent-dark);text-shadow:1px 0 #ff0080,-1px 0 #00ffee;animation:glitch 1s infinite}body:not(.dark) .rainbow{color:var(--fg);text-shadow:1px 0 var(--accent),-1px 0 #ff0080,2px 0 #00ffee}.hf-ticker{width:100%;overflow:hidden;white-space:nowrap;margin-top:2rem;background:var(--glass-dark);border-radius:8px;padding:.5rem 1rem}body:not(.dark) .hf-ticker{background:var(--glass)}.hf-ticker-text{display:inline-block;padding-left:100%;animation:scroll-left 15s linear infinite;color:var(--accent-dark)}body:not(.dark) .hf-ticker-text{color:var(--accent)}.hf-footer-date{margin-top:1.8rem;font-size:.9rem;color:var(--accent-dark);font-style:italic}body:not(.dark) .hf-footer-date{color:var(--accent)}.hf-footer-bottom{margin-top:.7rem;font-size:.8rem;color:var(--fg-dark);opacity:.65}body:not(.dark) .hf-footer-bottom{color:var(--fg);opacity:.75}@keyframes pulse-glow{0%,to{text-shadow:0 0 10px var(--accent-dark)}50%{text-shadow:0 0 25px var(--accent-dark)}}@keyframes scroll-left{0%{transform:translate(0)}to{transform:translate(-100%)}}@keyframes rainbow-glow{0%{background-position:0%}50%{background-position:100%}to{background-position:0%}}.flicker{animation:flicker 1.6s infinite alternate}@keyframes flicker{0%{opacity:1}30%{opacity:.85}60%{opacity:.95}to{opacity:1}}@media(max-width:768px){.hf-wrapper{padding:2rem 1.5rem}}
