@import "https://fonts.googleapis.com/css2?family=Cinzel:wght@500;600;700&family=DM+Sans:opsz,wght@9..40,400;9..40,500;9..40,600;9..40,700&family=JetBrains+Mono:wght@400;500&display=swap";@layer components;@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--shadow-lg:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer utilities{.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.resize{resize:both}.border{border-style:var(--tw-border-style);border-width:1px}.uppercase{text-transform:uppercase}.italic{font-style:italic}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}}:root,[data-theme=light]{--bg:#f8f4ec;--bg-alt:#efe8db;--surface:#fffdf8;--surface-hover:#faf6ee;--border:#7400011a;--border-strong:#74000133;--gryffindor:#740001;--gryffindor-l:#ae0001;--gold:#c9a227;--gold-l:#d4af37;--ink:#1a0a0a;--teal:var(--gryffindor);--teal-l:var(--gryffindor-l);--indigo:var(--gold);--indigo-l:var(--gold-l);--coral:#b45309;--t1:var(--ink);--t2:#4a3f35;--t3:#8a7f72;--primary:var(--gryffindor);--accent:var(--gold);--grad:linear-gradient(135deg, #740001, #ae0001);--shadow:0 4px 24px #1a0a0a0f;--shadow-lg:0 16px 48px #1a0a0a1a;--nav-bg:#f8f4ecf0;--chart:#7400012e;--radius:12px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}[data-theme=dark]{--bg:#050202;--bg-alt:#0e0606;--surface:#160a0a;--surface-hover:#221010;--border:#d4af3724;--border-strong:#d4af3747;--gryffindor:#8b0000;--gryffindor-l:#c41e1e;--gold:#d4af37;--gold-l:#f5d76e;--ink:#faf3e8;--teal:var(--gryffindor-l);--teal-l:#e84545;--indigo:var(--gold);--indigo-l:var(--gold-l);--coral:#fb923c;--t1:#faf3e8;--t2:#d4c4b0;--t3:#8a7d72;--primary:#e84545;--accent:var(--gold);--grad:linear-gradient(135deg, #5c0000 0%, #9b0000 40%, #1a0808 100%);--shadow:0 4px 32px #0000008c;--shadow-lg:0 20px 60px #8b000038;--nav-bg:#050202f5;--chart:#c8282847;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;overflow-x:hidden}body{background:var(--bg);color:var(--t1);-webkit-font-smoothing:antialiased;max-width:100vw;font-family:DM Sans,system-ui,sans-serif;font-size:15px;line-height:1.55;transition:background .35s,color .35s;position:relative;overflow-x:hidden}.marauders-map{z-index:0;pointer-events:none;opacity:.16;color:#c9a227;mix-blend-mode:soft-light;position:fixed;inset:0}[data-theme=light] .marauders-map{opacity:.14;color:#740001;mix-blend-mode:multiply}.marauders-parchment{background:radial-gradient(at 30% 20%,#c9a22714,#0000 50%),radial-gradient(at 70% 80%,#7400010f,#0000 55%),linear-gradient(#f8f4ec08,#0000);position:absolute;inset:0}.marauders-map-svg{width:100%;height:100%}.map-footprints{animation:12s ease-in-out infinite map-shimmer}@keyframes map-shimmer{0%,to{opacity:.25}50%{opacity:.45}}main,.nav,.spell-dock,.jarvis-btn{z-index:1;position:relative}[data-theme=dark] body{background-color:var(--bg);background-image:radial-gradient(90% 55% at 50% -15%,#9b00002e,#0000 55%),radial-gradient(50% 45% at 0 80%,#8b00001a,#0000),radial-gradient(45% 40% at 100% 60%,#d4af370f,#0000),linear-gradient(#0a0404 0%,#050202 40%,#080303 100%)}.label{color:var(--primary);letter-spacing:.14em;text-transform:uppercase;margin-bottom:6px;font-family:JetBrains Mono,monospace;font-size:10px}.hp-accent{color:var(--gold)}.heading-sm{letter-spacing:.02em;color:var(--t1);margin-bottom:10px;font-family:Cinzel,Georgia,serif;font-size:clamp(22px,3.5vw,30px);font-weight:600}.body-text{color:var(--t2);font-size:14px;line-height:1.7}.subtle{color:var(--t3);font-size:13px}.accent-text{color:var(--primary)}.container-narrow{max-width:920px;margin:0 auto;padding:0 20px}.section-compact{padding:36px 0}.section-tight{padding:28px 0}.section-sub{margin-bottom:8px}section[id]{scroll-margin-top:72px}.section-alt{background:var(--bg-alt)}.page-wrap{max-width:920px;margin:0 auto;padding:100px 20px 60px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);transition:border-color .2s,box-shadow .2s,transform .2s}.card:hover{border-color:var(--border-strong)}.btn-primary{background:var(--grad);color:#fff;cursor:pointer;border:none;border-radius:8px;justify-content:center;align-items:center;padding:10px 22px;font-size:13px;font-weight:600;text-decoration:none;transition:opacity .2s,transform .2s,box-shadow .2s;display:inline-flex;box-shadow:0 2px 12px #74000140}.btn-primary:hover{opacity:.92;transform:translateY(-1px)}.btn-outline{color:var(--t1);border:1.5px solid var(--border-strong);cursor:pointer;background:0 0;border-radius:8px;justify-content:center;align-items:center;padding:9px 20px;font-size:13px;font-weight:600;text-decoration:none;transition:all .2s;display:inline-flex}.btn-outline:hover{border-color:var(--gold);color:var(--gold)}.nav{z-index:1000;justify-content:space-between;align-items:center;height:56px;padding:0 20px;transition:all .25s;display:flex;position:fixed;top:0;left:0;right:0}.nav-scrolled{background:var(--nav-bg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border)}.nav-logo{color:var(--t1);align-items:center;gap:8px;font-family:Cinzel,serif;font-size:15px;font-weight:700;text-decoration:none;display:flex}.nav-logo-icon{background:var(--grad);color:#fff;border-radius:7px;justify-content:center;align-items:center;width:28px;height:28px;font-size:12px;font-weight:800;display:flex}.nav-links{gap:24px;list-style:none;display:flex}.nav-link-btn{color:var(--t2);cursor:pointer;background:0 0;border:none;padding:0;font-family:inherit;font-size:13px;font-weight:500;transition:color .2s}.nav-link-btn:hover{color:var(--gold)}.nav-mobile-link{color:var(--t1);cursor:pointer;text-align:left;background:0 0;border:none;padding:0;font-family:Cinzel,serif;font-size:22px;font-weight:700}.nav-actions{align-items:center;gap:8px;display:flex}.nav-hire{background:var(--grad);color:#fff;border-radius:8px;padding:7px 16px;font-size:12px;font-weight:600;text-decoration:none}.nav-burger{background:var(--surface);border:1px solid var(--border);cursor:pointer;width:36px;height:36px;color:var(--t1);border-radius:8px;justify-content:center;align-items:center;display:none}.nav-mobile{z-index:999;background:var(--bg);flex-direction:column;gap:16px;padding:80px 24px;display:flex;position:fixed;inset:0}.nav-mobile a{color:var(--t1);font-family:Cinzel,serif;font-size:22px;font-weight:700;text-decoration:none}.theme-toggle{background:var(--surface);border:1px solid var(--border);cursor:pointer;width:36px;height:36px;color:var(--t2);border-radius:8px;justify-content:center;align-items:center;transition:all .2s;display:flex}.theme-toggle:hover{color:var(--gold);border-color:var(--gold)}.hero-compact{align-items:center;min-height:88vh;padding:80px 0 48px;display:flex;position:relative;overflow:hidden}.hero-compact-inner{z-index:2;justify-content:space-between;align-items:flex-end;width:100%;display:flex;position:relative}.hero-compact-text{max-width:480px;padding-bottom:20px}.hero-hi{color:var(--gold);margin-bottom:10px;font-family:JetBrains Mono,monospace;font-size:12px}.hero-compact h1{letter-spacing:.01em;margin-bottom:6px;font-family:Cinzel,Georgia,serif;font-size:clamp(28px,4.5vw,42px);font-weight:700;line-height:1.15}.hero-loc{color:var(--t3);margin-bottom:14px;font-size:13px}.hero-type{color:var(--t2);min-height:20px;margin-bottom:20px;font-family:JetBrains Mono,monospace;font-size:13px}.hero-actions{flex-wrap:wrap;gap:10px;display:flex}.hero-avatar-desktop{pointer-events:none;flex-shrink:0;width:min(48vw,480px);height:min(78vh,580px)}.hero-avatar-mobile{width:260px;height:320px;margin:16px auto;display:none}.hero-avatar{justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:relative}.avatar-blob-glow{pointer-events:none;background:radial-gradient(at 60% 40%,#ae000133,#0000 65%),radial-gradient(at 30% 70%,#c9a2271f,#0000 60%);border-radius:60% 40% 50% 50%/50% 60% 40% 50%;animation:8s ease-in-out infinite blob-morph;position:absolute;inset:10% 5%}.avatar-blob-frame{z-index:1;border:3px solid var(--gold);width:96%;height:98%;box-shadow:var(--shadow-lg), 0 0 40px #c9a22726;border-radius:58% 42% 52% 48%/48% 55% 45% 52%;animation:10s ease-in-out infinite reverse blob-morph;position:relative;overflow:hidden}.avatar-blob-img{object-fit:cover;object-position:center 18%;width:100%;height:100%;display:block}.avatar-wave-badge{z-index:3;background:var(--surface);border:2px solid var(--gold);width:48px;height:48px;box-shadow:var(--shadow);border-radius:50%;justify-content:center;align-items:center;font-size:26px;display:flex;position:absolute;top:6%;right:14%}@keyframes blob-morph{0%,to{border-radius:58% 42% 52% 48%/48% 55% 45% 52%}33%{border-radius:45% 55% 48% 52%/55% 42% 58% 45%}66%{border-radius:52% 48% 42% 58%/42% 58% 48% 52%}}.data-bg{z-index:0;pointer-events:none;color:var(--chart);position:absolute;inset:0;overflow:hidden}.data-bg-chart{opacity:.5;width:100%;height:100px;position:absolute;bottom:0;left:0}.data-dot{background:var(--primary);border-radius:50%;position:absolute}.data-star{color:var(--gold);pointer-events:none;font-family:Cinzel,serif;font-size:10px;position:absolute}.about-overview{max-width:680px;margin-bottom:12px;font-size:15px;line-height:1.7}.about-dl{margin-bottom:14px;padding:14px 18px}.about-dl-row{border-bottom:1px solid var(--border);grid-template-columns:140px 1fr;gap:12px;padding:10px 0;display:grid}.about-dl-row:last-child{border-bottom:none;padding-bottom:0}.about-dl-row:first-child{padding-top:0}.about-dl dt{color:var(--gold);letter-spacing:.02em;font-family:Cinzel,serif;font-size:11px;font-weight:600}.about-dl dd{color:var(--t2);margin:0;font-size:13px;line-height:1.5}[data-theme=dark] .card{background:linear-gradient(160deg,#1c0e0e 0%,#140909 100%);border-color:#d4af371f;box-shadow:0 4px 24px #0006,inset 0 1px #d4af370f}[data-theme=dark] .section-alt{background:#0a0404}.hobbies-grid{flex-wrap:wrap;gap:10px;display:flex}.hobby-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;flex-direction:column;align-items:center;gap:4px;min-width:100px;padding:14px 18px;transition:transform .2s,border-color .2s;display:flex}.hobby-card:hover{border-color:var(--gold);transform:translateY(-3px)}.hobby-emoji{filter:drop-shadow(0 2px 6px #00000026);font-size:32px;line-height:1}.hobby-label{color:var(--t1);font-size:13px;font-weight:600}.hobby-sub{color:var(--t3);font-family:JetBrains Mono,monospace;font-size:10px}.edu-list{flex-direction:column;gap:10px;margin-top:8px;display:flex}.edu-card{padding:20px 24px;position:relative}.edu-card:before{content:"✦";color:var(--gold);opacity:.6;font-size:12px;position:absolute;top:20px;right:20px}.edu-period{color:var(--t3);margin-bottom:6px;font-family:JetBrains Mono,monospace;font-size:11px}.edu-card h3{color:var(--t1);margin-bottom:4px;font-family:Cinzel,serif;font-size:17px;font-weight:600}.edu-school{color:var(--primary);margin-top:4px;font-size:15px;font-weight:600}.work-list{flex-direction:column;gap:10px;margin-top:8px;display:flex}.work-row{grid-template-columns:110px 1fr;gap:20px;padding:18px 22px;display:grid}.work-meta{flex-direction:column;gap:4px;display:flex}.work-period{color:var(--t3);font-family:JetBrains Mono,monospace;font-size:11px}.work-loc{color:var(--t3);font-size:11px}.work-role{margin-bottom:2px;font-family:Cinzel,serif;font-size:15px;font-weight:700}.work-company{color:var(--primary);margin-bottom:10px;font-size:12px;font-weight:500}.stack-row{flex-wrap:wrap;gap:6px;display:flex}.stack-chip{color:var(--t2);background:var(--bg-alt);border:1px solid var(--border);border-radius:6px;padding:4px 10px;font-family:JetBrains Mono,monospace;font-size:11px;font-weight:500;transition:border-color .2s,color .2s}.work-row:hover .stack-chip{border-color:var(--border-strong)}.stack-chip:hover{border-color:var(--gold);color:var(--gold)}.skill-sphere-wrap{grid-template-columns:1fr 1fr;align-items:center;gap:24px;margin:24px 0 20px;display:grid}.skill-orbit{width:280px;height:280px;margin:0 auto;position:relative}.quidditch-ball{z-index:2;cursor:pointer;border:none;border-radius:50%;justify-content:center;align-items:center;width:78px;height:78px;padding:0;transition:transform .35s,box-shadow .35s;display:flex;position:absolute;overflow:visible}.ball-label{z-index:2;color:#fff;text-shadow:0 1px 3px #0009;text-align:center;padding:4px;font-family:JetBrains Mono,monospace;font-size:9px;font-weight:800;line-height:1.2;position:relative}.quidditch-quaffle{background:radial-gradient(circle at 32% 28%,#f06b7a,#c41e3a 45%,#7a1520);box-shadow:inset -5px -8px 14px #00000059,0 6px 20px #c41e3a73}.quidditch-quaffle:before,.quidditch-quaffle:after{content:"";background:#0003;border-radius:2px;height:2px;position:absolute;left:12%;right:12%}.quidditch-quaffle:before{top:38%}.quidditch-quaffle:after{bottom:38%}.quidditch-bludger{background:radial-gradient(circle at 30% 25%,#4a4a4a,#1a1a1a 55%,#000);box-shadow:inset -4px -6px 10px #ffffff14,0 6px 18px #00000080}.quidditch-bludger .ball-label{color:#e4e4e7}.quidditch-snitch{background:radial-gradient(circle at 35% 30%,#fff4c4,#d4af37 50%,#a67c00);animation:2s ease-in-out infinite snitch-shimmer;box-shadow:0 0 28px #d4af3799,0 6px 16px #d4af3759}.quidditch-snitch .ball-label{color:#3d2e00;text-shadow:0 1px 2px #ffffff80}.snitch-wings{pointer-events:none;border:2px solid #ffffff80;border-radius:50% 10%;animation:.35s ease-in-out infinite alternate snitch-wing-flap;position:absolute;inset:-8px}@keyframes snitch-shimmer{0%,to{box-shadow:0 0 28px #d4af3780}50%{box-shadow:0 0 40px #ffdc64cc}}@keyframes snitch-wing-flap{0%{opacity:.7;transform:scaleX(1)rotate(-8deg)}to{opacity:1;transform:scaleX(1.15)rotate(8deg)}}.quidditch-ball:first-child{top:0;left:50%;transform:translate(-50%)}.quidditch-ball:nth-child(2){top:50%;right:0;transform:translateY(-50%)}.quidditch-ball:nth-child(3){bottom:0;left:50%;transform:translate(-50%)}.quidditch-ball:nth-child(4){top:50%;left:0;transform:translateY(-50%)}.quidditch-ball:hover,.quidditch-ball.active{z-index:3}.quidditch-ball:first-child:hover,.quidditch-ball:first-child.active{transform:translate(-50%)scale(1.12)}.quidditch-ball:nth-child(2):hover,.quidditch-ball:nth-child(2).active{transform:translateY(-50%)scale(1.12)}.quidditch-ball:nth-child(3):hover,.quidditch-ball:nth-child(3).active{transform:translate(-50%)scale(1.12)}.quidditch-ball:nth-child(4):hover,.quidditch-ball:nth-child(4).active{transform:translateY(-50%)scale(1.12)}.quidditch-hoop{background:0 0!important;border-style:dashed!important}.orbit-core{background:var(--surface);border:2px solid;border-radius:50%;justify-content:center;align-items:center;width:110px;height:110px;transition:box-shadow .4s,border-color .4s;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.orbit-core-label{text-align:center;color:var(--t1);padding:8px;font-family:Cinzel,serif;font-size:11px;font-weight:600;line-height:1.3}.skill-tags-panel{min-height:200px;padding:22px}.skill-tags-panel h3{margin-bottom:14px;font-family:Cinzel,serif;font-size:16px;font-weight:600}.skill-tags-cloud{flex-wrap:wrap;gap:8px;display:flex}.skill-float-tag{color:var(--t1);background:var(--bg-alt);border:1px solid;border-radius:8px;padding:6px 12px;font-size:12px;font-weight:500;transition:transform .2s;animation:.5s backwards tag-float}.skill-float-tag:hover{transform:translateY(-2px)}@keyframes tag-float{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.skill-marquee-wrap{border-top:1px solid var(--border);padding:12px 0;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#0000,#000 8% 92%,#0000);mask-image:linear-gradient(90deg,#0000,#000 8% 92%,#0000)}.skill-marquee{gap:12px;width:max-content;animation:40s linear infinite skill-scroll;display:flex}.skill-marquee-item{color:var(--t3);background:var(--surface);border:1px solid var(--border);white-space:nowrap;border-radius:6px;flex-shrink:0;padding:5px 12px;font-family:JetBrains Mono,monospace;font-size:11px}@keyframes skill-scroll{0%{transform:translate(0)}to{transform:translate(-50%)}}.folder-rail-wrap{margin-top:8px;position:relative;-webkit-mask-image:linear-gradient(90deg,#0000,#000 4% 96%,#0000);mask-image:linear-gradient(90deg,#0000,#000 4% 96%,#0000)}.folder-rail{scroll-behavior:auto;scrollbar-width:none;gap:12px;padding:6px max(20px,50vw - 440px) 14px;display:flex;overflow:auto hidden}.folder-rail::-webkit-scrollbar{display:none}.folder-rail-card{scroll-snap-align:start;color:inherit;flex:0 0 200px;padding:18px 16px;text-decoration:none;transition:transform .2s,box-shadow .2s;display:block}.folder-rail-card:hover{box-shadow:var(--shadow-lg);border-color:var(--gold);transform:translateY(-3px)}.folder-card{color:inherit;padding:18px 16px;text-decoration:none;transition:transform .2s,box-shadow .2s;display:block}.folder-card:hover{box-shadow:var(--shadow-lg);border-color:var(--gold);transform:translateY(-3px)}.folder-icon{margin-bottom:8px;font-size:24px;display:block}.folder-card h3{margin-bottom:4px;font-family:Cinzel,serif;font-size:14px;font-weight:700}.folder-card p{color:var(--t3);margin-bottom:10px;font-size:12px;line-height:1.45}.folder-count{color:var(--gold);font-family:JetBrains Mono,monospace;font-size:10px}.back-link{color:var(--t3);margin-bottom:20px;font-size:13px;text-decoration:none;display:inline-block}.back-link:hover{color:var(--gold)}.cat-page-icon{margin-bottom:8px;font-size:36px;display:block}.cat-page-title{margin-bottom:6px;font-family:Cinzel,serif;font-size:28px;font-weight:600}.cat-page-summary{color:var(--t2);margin-bottom:4px;font-size:14px}.cat-page-count{color:var(--t3);margin-bottom:24px;font-family:JetBrains Mono,monospace;font-size:11px}.repo-list{flex-direction:column;gap:8px;display:flex}.repo-item{color:inherit;padding:16px 18px;text-decoration:none;display:block}.repo-item:hover{border-color:var(--gold);transform:translate(4px)}.repo-item-head{justify-content:space-between;margin-bottom:4px;display:flex}.repo-name{color:var(--t1);font-family:JetBrains Mono,monospace;font-size:13px;font-weight:500}.repo-ext{color:var(--t3);font-size:12px}.repo-desc{color:var(--t2);font-size:13px}.showcase-rail-wrap{margin-top:12px;position:relative;-webkit-mask-image:linear-gradient(90deg,#0000,#000 4% 96%,#0000);mask-image:linear-gradient(90deg,#0000,#000 4% 96%,#0000)}.showcase-rail,.auto-scroll-rail{scroll-behavior:auto;scrollbar-width:none;-ms-overflow-style:none;gap:14px;padding:8px max(20px,50vw - 440px) 20px;display:flex;overflow:auto hidden}.showcase-rail::-webkit-scrollbar{display:none}.auto-scroll-rail::-webkit-scrollbar{display:none}.showcase-card{scroll-snap-align:start;color:inherit;flex:0 0 280px;text-decoration:none;display:block;position:relative;overflow:hidden}.showcase-card:hover{box-shadow:var(--shadow-lg);transform:translateY(-3px)}.deploy-card{color:inherit;text-decoration:none;display:block;position:relative;overflow:hidden}.deploy-card:hover{box-shadow:var(--shadow-lg);transform:translateY(-2px)}.deploy-badge-wrap{z-index:2;position:absolute;top:10px;right:10px}.showcase-badge{letter-spacing:.06em;text-transform:uppercase;border-radius:4px;padding:4px 8px;font-family:JetBrains Mono,monospace;font-size:9px;font-weight:600}.badge-live{color:#fff;background:#ae0001e6}.badge-notebook{color:#fff;background:#4f46e5e6}.badge-analysis{color:#1a0a0a;background:#c9a227e6}.deploy-img{aspect-ratio:16/10;object-fit:cover;width:100%;display:block}.deploy-placeholder{aspect-ratio:16/10;background:var(--bg-alt);color:var(--t3);justify-content:center;align-items:center;font-family:JetBrains Mono,monospace;font-size:11px;display:flex}.deploy-info{flex-direction:column;gap:2px;padding:12px 14px;display:flex}.deploy-info strong{color:var(--t1);font-family:Cinzel,serif;font-size:14px}.deploy-info span{color:var(--t3);font-size:12px}.contact-compact{padding:22px 26px}.contact-row{flex-wrap:wrap;gap:20px;margin-bottom:16px;display:flex}.contact-link{color:var(--primary);font-size:14px;font-weight:600;text-decoration:none}.contact-link:hover{color:var(--gold);text-decoration:underline}.services-inline{flex-wrap:wrap;gap:8px;margin-bottom:20px;display:flex}.service-pill{color:var(--t2);background:var(--bg-alt);border:1px solid var(--border);border-radius:99px;padding:4px 12px;font-family:JetBrains Mono,monospace;font-size:11px}.contact-actions{flex-wrap:wrap;align-items:center;gap:10px;margin-top:16px;display:flex}.support-block{border-top:1px solid var(--border);flex-direction:column;align-items:flex-start;gap:12px;margin-top:20px;padding-top:16px;display:flex}.support-copy{max-width:42ch;margin:0;line-height:1.5}.support-btn{border-color:var(--gold);color:var(--gold)}.support-btn:hover{background:var(--gold)}@supports (color:color-mix(in lab, red, red)){.support-btn:hover{background:color-mix(in srgb, var(--gold) 12%, transparent)}}.support-btn:hover{border-color:var(--gold);color:var(--gold)}.contact-form{border-top:1px solid var(--border);flex-direction:column;gap:12px;margin:8px 0 4px;padding-top:8px;display:flex}.contact-form-row{grid-template-columns:1fr 1fr;gap:12px;display:grid}.contact-form label{color:var(--t3);flex-direction:column;gap:4px;font-size:12px;font-weight:600;display:flex}.contact-form input,.contact-form textarea{font:inherit;color:var(--t1);background:var(--bg-alt);border:1px solid var(--border);border-radius:8px;padding:10px 12px;font-size:14px;font-weight:400}.contact-form input:focus,.contact-form textarea:focus{border-color:var(--border-strong);outline:none}.contact-form-message{width:100%}.contact-form-hint{margin:0}.about-interests{margin:0 0 14px;font-size:13.5px}.work-earlier{margin-top:16px}.work-earlier-summary{cursor:pointer;color:var(--t3);padding:8px 0;font-size:13px;font-weight:600;list-style:none}.work-earlier-summary::-webkit-details-marker{display:none}.work-list-earlier{opacity:.92;margin-top:8px}.work-row-early{border-style:dashed}.case-grid{grid-template-columns:repeat(2,1fr);gap:14px;margin-top:12px;display:grid}.case-card{flex-direction:column;display:flex;overflow:hidden}.case-img-wrap{border-bottom:1px solid var(--border);display:block}.case-img{aspect-ratio:16/10;object-fit:cover;width:100%;display:block}.case-body{flex-direction:column;flex:1;gap:8px;padding:14px 16px 16px;display:flex}.case-top{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.case-title{color:var(--t1);margin:0;font-family:Cinzel,Georgia,serif;font-size:16px;font-weight:600}.case-year{color:var(--t3);flex-shrink:0;font-family:JetBrains Mono,monospace;font-size:11px}.case-tech{margin-top:0}.case-toggle{cursor:pointer;color:var(--primary);background:0 0;border:none;align-self:flex-start;padding:0;font-family:inherit;font-size:12px;font-weight:600}.case-toggle:hover{color:var(--gold)}.case-details{flex-direction:column;gap:10px;margin-top:4px;display:flex}.case-block h4{letter-spacing:.08em;text-transform:uppercase;color:var(--gold);margin:0 0 4px;font-family:JetBrains Mono,monospace;font-size:11px}.case-block p,.case-block ul{color:var(--t2);margin:0;font-size:13px;line-height:1.55}.case-block ul{padding-left:18px}.case-links{flex-wrap:wrap;gap:14px;margin-top:4px;display:flex}.link-mono{color:var(--primary);font-family:JetBrains Mono,monospace;font-size:12px;text-decoration:none}.link-mono:hover{color:var(--gold);text-decoration:underline}.faq-list{flex-direction:column;gap:8px;margin-top:8px;display:flex}.faq-item{padding:0;overflow:hidden}.faq-q{text-align:left;cursor:pointer;width:100%;font:inherit;color:var(--t1);background:0 0;border:none;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;font-size:14px;font-weight:600;display:flex}.faq-icon{color:var(--gold);flex-shrink:0;font-size:18px;line-height:1}.faq-a{margin:0;padding:0 16px 14px;font-size:13.5px}.refs-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;margin-top:10px;display:grid}.ref-card{margin:0;padding:16px 18px}.ref-quote{color:var(--t2);margin:0 0 12px;font-size:13.5px;font-style:italic;line-height:1.55}.ref-meta{color:var(--t3);flex-direction:column;gap:2px;font-size:12px;display:flex}.ref-meta strong{color:var(--t1);font-size:13px;font-style:normal}.nav-resume{color:var(--t2);font-size:13px;font-weight:600;text-decoration:none}.nav-resume:hover{color:var(--primary)}.footer-compact{border-top:1px solid var(--border);color:var(--t3);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding:20px;font-size:12px;display:flex}.reveal{opacity:0;transition:opacity .5s,transform .5s;transform:translateY(16px)}.reveal.visible{opacity:1;transform:none}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.blink{animation:1s step-end infinite blink}@keyframes waveEmoji{0%,to{transform:rotate(0)}25%{transform:rotate(18deg)}75%{transform:rotate(-8deg)}}.wave-emoji{transform-origin:70% 70%;animation:2s ease-in-out infinite waveEmoji;display:inline-block}.jarvis-btn{bottom:calc(20px + env(safe-area-inset-bottom,0px));right:calc(20px + env(safe-area-inset-right,0px));z-index:9990;background:var(--grad);cursor:pointer;color:#fff;width:50px;height:50px;box-shadow:var(--shadow-lg);border:none;border-radius:50%;font-size:18px;animation:2.5s ease-in-out infinite jarvis-pulse;position:fixed}@keyframes jarvis-pulse{0%{box-shadow:0 0 #ae000173}70%{box-shadow:0 0 0 12px #ae000100}to{box-shadow:0 0 #ae000100}}.jarvis-panel{bottom:calc(80px + env(safe-area-inset-bottom,0px));right:calc(20px + env(safe-area-inset-right,0px));z-index:9989;background:var(--surface);border:1px solid var(--border);width:min(320px,100vw - 40px);max-height:min(420px,100vh - 140px);box-shadow:var(--shadow-lg);border-radius:12px;flex-direction:column;display:flex;position:fixed;overflow:hidden}.jarvis-panel-head{border-bottom:1px solid var(--border);flex-shrink:0;padding:12px 14px;font-size:13px;font-weight:600}.jarvis-panel-msgs{-webkit-overflow-scrolling:touch;flex-direction:column;flex:1;gap:8px;padding:12px;font-size:13px;display:flex;overflow-y:auto}.jarvis-msg{word-break:break-word;border-radius:10px;max-width:88%;padding:8px 11px;line-height:1.5}.jarvis-msg-user{background:var(--grad);color:#fff;align-self:flex-end}.jarvis-msg-bot{background:var(--bg-alt);color:var(--t1);align-self:flex-start}.jarvis-quick{flex-wrap:wrap;flex-shrink:0;gap:6px;padding:0 12px 8px;display:flex}.jarvis-quick-btn{border:1px solid var(--border);background:var(--bg-alt);color:var(--t2);cursor:pointer;border-radius:99px;padding:4px 10px;font-size:10px}.jarvis-input-row{border-top:1px solid var(--border);flex-shrink:0;gap:6px;padding:10px;display:flex}.jarvis-input{border:1px solid var(--border);background:var(--bg);min-width:0;color:var(--t1);border-radius:8px;outline:none;flex:1;padding:8px 12px;font-size:13px}.slide-up{animation:.25s forwards slideUp}@keyframes slideUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@media (width<=1024px){.nav-links,.nav-hire{display:none}.nav-burger{display:flex}}@media (width<=900px){.hero-avatar-desktop{display:none}.hero-avatar-mobile{display:block}.hero-compact-inner{text-align:center;flex-direction:column;align-items:center}.hero-compact-text{max-width:100%;padding-bottom:0}.hero-actions{justify-content:center}.skill-sphere-wrap{grid-template-columns:1fr;gap:20px}.skill-orbit{width:min(72vw,260px);height:min(72vw,260px)}.work-row{grid-template-columns:1fr;gap:8px}.page-wrap{padding:80px 20px 48px}}@media (width<=768px){.section-compact{padding:28px 0}.case-grid,.refs-grid,.contact-form-row{grid-template-columns:1fr}.section-tight{padding:22px 0}.container-narrow{padding:0 16px}.hero-compact{min-height:auto;padding:72px 0 32px}.hero-avatar-mobile{width:min(72vw,240px);height:min(88vw,300px)}.hero-compact h1{font-size:clamp(24px,7vw,34px)}.hero-type{font-size:12px}.folder-rail-card{flex:0 0 min(75vw,200px)}.folder-rail,.showcase-rail{-webkit-overflow-scrolling:touch;padding-left:16px;padding-right:16px}.about-dl-row{grid-template-columns:1fr;gap:4px}.showcase-card{flex:0 0 min(82vw,280px)}.edu-card{padding:16px 18px}.work-row{padding:14px 16px}.contact-compact{padding:18px 16px}.contact-row{flex-direction:column;align-items:flex-start;gap:10px}.contact-actions{flex-direction:column;width:100%}.contact-actions .btn-primary,.contact-actions .btn-outline{justify-content:center;width:100%}.support-block{align-items:stretch}.support-btn{justify-content:center;width:100%}.footer-compact{text-align:center;padding:20px 16px calc(20px + env(safe-area-inset-bottom,0px));flex-direction:column;align-items:center;gap:10px}.page-wrap{padding:72px 16px 40px}.cat-page-title{font-size:clamp(22px,6vw,28px)}.repo-name{word-break:break-word}.repo-item-head{flex-wrap:wrap;gap:4px}.quidditch-ball{width:64px;height:64px}.ball-label{font-size:8px}.orbit-core{width:92px;height:92px}.orbit-core-label{font-size:10px}.jarvis-btn{bottom:calc(16px + env(safe-area-inset-bottom,0px));right:16px}.jarvis-panel{width:auto;left:16px;right:16px;bottom:calc(76px + env(safe-area-inset-bottom,0px));max-height:min(50vh,380px)}.hobbies-grid{justify-content:center}}@media (width<=480px){.nav{padding:0 12px}.hero-actions{width:100%}.hero-actions .btn-primary,.hero-actions .btn-outline{flex:calc(50% - 5px);min-width:120px}.hobby-card{flex:calc(50% - 8px);min-width:0}.services-inline{justify-content:center}.skill-tags-panel{padding:16px}}body.hp-wand-cursor,body.hp-wand-cursor a,body.hp-wand-cursor button,body.hp-wand-cursor [role=button]{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28' viewBox='0 0 28 28'%3E%3Cline x1='3' y1='25' x2='22' y2='6' stroke='%231a0a0a' stroke-width='2'/%3E%3Cline x1='3' y1='25' x2='22' y2='6' stroke='%23d4af37' stroke-width='1'/%3E%3Ccircle cx='23' cy='5' r='4' fill='%23f0c75e' stroke='%23c9a227' stroke-width='1'/%3E%3C/svg%3E") 2 24,pointer}.spell-dock{z-index:1001;background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-lg);border-radius:12px;max-width:220px;position:fixed;bottom:20px;left:20px;overflow:hidden}.spell-dock-toggle{width:100%;color:var(--gold);cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:8px;padding:10px 14px;font-family:Cinzel,serif;font-size:12px;font-weight:600;display:flex}.spell-dock-toggle:hover{background:var(--bg-alt)}.spell-dock-list{flex-direction:column;gap:4px;max-height:360px;padding:0 8px 10px;display:flex;overflow-y:auto}.spell-btn{background:var(--bg-alt);border:1px solid var(--border);color:var(--t1);cursor:pointer;text-align:left;border-radius:8px;align-items:center;gap:8px;width:100%;padding:7px 10px;font-family:DM Sans,sans-serif;transition:all .2s;display:flex}.spell-btn:hover{border-color:var(--gold);background:var(--gold)}@supports (color:color-mix(in lab, red, red)){.spell-btn:hover{background:color-mix(in srgb, var(--gold) 12%, var(--bg-alt))}}.spell-btn.active{border-color:var(--gold);box-shadow:0 0 16px #d4af3740}.spell-icon{flex-shrink:0;font-size:16px}.spell-info{flex-direction:column;gap:1px;min-width:0;display:flex}.spell-name{font-family:Cinzel,serif;font-size:10px;line-height:1.2}.spell-hint{color:var(--t3);font-size:9px}.spell-lumos-flash{z-index:10000;pointer-events:none;background:radial-gradient(circle,#fffae6f2,#ffffffb3);animation:.9s forwards lumos-flash;position:fixed;inset:0}@keyframes lumos-flash{0%{opacity:0}15%{opacity:1}to{opacity:0}}.spell-nox-flash{z-index:10000;pointer-events:none;background:radial-gradient(circle,#0a0505e6,#000000f2);animation:.9s forwards nox-flash;position:fixed;inset:0}@keyframes nox-flash{0%{opacity:0}20%{opacity:1}to{opacity:0}}.spell-protego{z-index:9998;pointer-events:none;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.protego-shield{opacity:0;filter:drop-shadow(0 0 60px #d4af37cc);font-size:160px;animation:2s forwards protego-pop}@keyframes protego-pop{0%{opacity:0;transform:scale(.3)}25%{opacity:.7;transform:scale(1.1)}to{opacity:0;transform:scale(1.4)}}.spell-revelio{z-index:9996;pointer-events:none;background:radial-gradient(circle,#d4af3726,#0000 70%);animation:2.5s forwards revelio-pulse;position:fixed;inset:0}@keyframes revelio-pulse{0%{opacity:0}30%{opacity:1}to{opacity:0}}.broom-rider{z-index:9997;pointer-events:none;position:fixed;inset:0;overflow:hidden}.broom-track{filter:drop-shadow(0 6px 16px #00000073);align-items:center;gap:2px;font-size:32px;animation:16s linear infinite broom-orbit,2.2s ease-in-out infinite leviosa-bob;display:flex;position:absolute}.broom-sprite{animation:2.2s ease-in-out infinite wizard-tilt}.broom-stick{margin-left:-8px;font-size:28px;transform:rotate(-25deg)}@keyframes broom-orbit{0%{top:6%;left:1%}25%{top:6%;left:calc(100% - 80px)}50%{top:calc(100% - 80px);left:calc(100% - 80px)}75%{top:calc(100% - 80px);left:1%}to{top:6%;left:1%}}@keyframes leviosa-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-14px)}}@keyframes wizard-tilt{0%,to{transform:rotate(-5deg)}50%{transform:rotate(8deg)}}.spell-patronus{z-index:9999;pointer-events:none;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.patronus-mist{background:radial-gradient(#c8dcff59,#0000 65%);animation:4.5s forwards patronus-fade;position:absolute;inset:0}.patronus-stag{z-index:2;filter:drop-shadow(0 0 40px #c8e6ffe6)brightness(1.4);font-size:120px;animation:4.5s forwards patronus-gallop}.patronus-ring{border:2px solid #c8dcff66;border-radius:50%;animation:4.5s forwards patronus-ring-expand;position:absolute}.patronus-ring-1{width:200px;height:200px}.patronus-ring-2{width:200px;height:200px;animation-delay:.3s}@keyframes patronus-fade{0%{opacity:0}10%{opacity:1}80%{opacity:.6}to{opacity:0}}@keyframes patronus-gallop{0%{opacity:0;transform:scale(.3)translate(-40vw)}20%{opacity:1;transform:scale(1)translate(0)}70%{opacity:.8;transform:scale(1.1)translate(20vw)}to{opacity:0;transform:scale(.6)translate(50vw)}}@keyframes patronus-ring-expand{0%{opacity:0;transform:scale(.5)}30%{opacity:.8;transform:scale(1.5)}to{opacity:0;transform:scale(3)}}.poof-smoke{z-index:10002;pointer-events:none;position:fixed;transform:translate(-50%,-50%)}.poof-puff{width:14px;height:14px;animation:.65s ease-out forwards poof-burst;animation-delay:calc(var(--i) * 40ms);--angle:calc(var(--i) * 45deg);transform:rotate(var(--angle)) translateX(0);background:radial-gradient(circle,#b4b4b4e6,#6464644d);border-radius:50%;position:absolute}@keyframes poof-burst{0%{opacity:1;transform:rotate(var(--angle)) translateX(0) scale(1)}to{opacity:0;transform:rotate(var(--angle)) translateX(36px) scale(2.2)}}@media (width<=768px){.spell-dock{bottom:calc(72px + env(safe-area-inset-bottom,0px));max-width:min(180px,46vw);left:12px;right:auto}.spell-hint{display:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}.broom-rider,.spell-patronus,.spell-lumos-flash{display:none}.skill-marquee{animation:none}.auto-scroll-rail{scroll-behavior:auto}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}
