@import"https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&display=swap";@import"https://fonts.googleapis.com/css2?family=Inter+Tight:wght@400;500;600&display=swap";*{box-sizing:border-box}body{margin:0}.plinko-shell{--plinko-font-sans: "Space Grotesk", "Segoe UI", sans-serif;--plinko-font-display: "Space Grotesk", "Segoe UI", sans-serif;--plinko-bg: #dde3ea;--plinko-bg-2: #c9d3dc;--plinko-ink: #0d1620;--plinko-ink-soft: rgba(13, 22, 32, .62);--plinko-panel: rgba(246, 248, 250, .88);--plinko-panel-border: rgba(7, 13, 19, .1);--plinko-surface: rgba(245, 247, 250, .9);--plinko-shadow: 0 18px 40px rgba(5, 10, 14, .18);--plinko-accent: #f3b54a;--plinko-board: #132434;--plinko-board-2: #162b3d;--plinko-board-border: rgba(255, 255, 255, .12);--plinko-board-glow: rgba(110, 190, 255, .12);--plinko-board-width: min(900px, 92vw);--plinko-link: #a8660a;color-scheme:light;font-family:var(--plinko-font-sans);width:100%;height:100vh;height:100dvh;position:relative;display:flex;flex-direction:column;align-items:center;gap:clamp(12px,2vh,20px);padding:clamp(14px,3vh,32px) 0;overflow-x:hidden;overflow-y:auto;background:radial-gradient(circle at 12% 10%,rgba(103,163,199,.35),transparent 55%),radial-gradient(circle at 88% 20%,rgba(252,201,115,.35),transparent 55%),linear-gradient(150deg,var(--plinko-bg),var(--plinko-bg-2));color:var(--plinko-ink);transition:background .4s ease,color .3s ease}.plinko-shell:before,.plinko-shell:after{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;transition:opacity .4s ease,background .4s ease}.plinko-shell:before{background:radial-gradient(circle at 30% 20%,rgba(255,255,255,.45),transparent 55%),radial-gradient(circle at 70% 80%,rgba(255,255,255,.25),transparent 60%);opacity:.6}.plinko-shell:after{background-image:radial-gradient(rgba(255,255,255,.14) 1px,transparent 1px);background-size:18px 18px;opacity:.25}.plinko-shell[data-theme=dark]{--plinko-bg: #0b121a;--plinko-bg-2: #0f1822;--plinko-ink: #eef4fb;--plinko-ink-soft: rgba(238, 244, 251, .6);--plinko-panel: rgba(12, 17, 24, .82);--plinko-panel-border: rgba(255, 255, 255, .08);--plinko-surface: rgba(12, 18, 26, .9);--plinko-shadow: 0 20px 40px rgba(0, 0, 0, .55);--plinko-accent: #f5c24b;--plinko-link: #f5c24b;--plinko-board: #0f1b26;--plinko-board-2: #102534;--plinko-board-border: rgba(255, 255, 255, .08);--plinko-board-glow: rgba(80, 200, 255, .12);color-scheme:dark;background:radial-gradient(circle at 12% 10%,rgba(52,105,148,.35),transparent 50%),radial-gradient(circle at 85% 15%,rgba(245,194,75,.25),transparent 55%),linear-gradient(150deg,var(--plinko-bg),var(--plinko-bg-2))}.plinko-shell[data-theme=dark]:before{opacity:.4}.plinko-shell[data-theme=dark]:after{background-image:radial-gradient(rgba(255,255,255,.1) 1px,transparent 1px);opacity:.18}.plinko-board{position:relative;flex:1 1 auto;min-height:340px;max-height:720px;width:var(--plinko-board-width);border-radius:22px;background:radial-gradient(circle at 20% 10%,var(--plinko-board-glow),transparent 60%),linear-gradient(180deg,var(--plinko-board),var(--plinko-board-2));border:1px solid var(--plinko-board-border);box-shadow:0 24px 60px #03080c73;overflow:hidden;z-index:2;transition:background .4s ease,border-color .3s ease,box-shadow .3s ease}.plinko-board:before{content:"";position:absolute;inset:0;border-radius:inherit;box-shadow:inset 0 0 40px #00000059;pointer-events:none;z-index:2}.plinko-board:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,255,255,.04),transparent 45%,rgba(0,0,0,.25));pointer-events:none;z-index:2}.plinko-canvas{position:absolute;inset:0;z-index:1}.plinko-canvas canvas{width:100%;height:100%;display:block;cursor:pointer;touch-action:none}.plinko-header{position:relative;flex:0 0 auto;width:var(--plinko-board-width);display:flex;z-index:5}.plinko-title-card{pointer-events:auto;max-width:min(520px,74vw);text-align:left;background:var(--plinko-panel);border-radius:16px;padding:14px 60px 14px 18px;border:1px solid var(--plinko-panel-border);box-shadow:var(--plinko-shadow);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);transition:background .3s ease,border-color .3s ease,box-shadow .3s ease;position:relative}.plinko-kicker{display:inline-flex;align-items:center;gap:.35rem;font-size:.64rem;letter-spacing:.28rem;text-transform:uppercase;color:var(--plinko-ink-soft);transition:color .3s ease}.plinko-title{font-family:var(--plinko-font-display);font-weight:600;font-size:clamp(1.5rem,1.6vw + 1.1rem,2.4rem);line-height:1.15;margin:0 0 .35rem;transition:color .3s ease}.plinko-subtitle{margin:0;color:var(--plinko-ink-soft);font-size:clamp(.85rem,.5vw + .75rem,1rem);transition:color .3s ease}.plinko-normal-link{display:inline-block;margin-top:.6rem;font-size:.85rem;color:var(--plinko-link);text-decoration:none;font-weight:600;transition:all .2s ease;opacity:.9}.plinko-normal-link:hover{opacity:1;transform:translate(2px)}.plinko-toggle{position:absolute;top:14px;right:14px;display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:none;background:transparent;border-radius:8px;color:var(--plinko-ink-soft);cursor:pointer;transition:all .2s ease}.plinko-toggle svg{color:var(--plinko-accent);transition:transform .2s ease}.plinko-toggle:hover{background:#0000000d;color:var(--plinko-ink)}.plinko-toggle:hover svg{transform:rotate(15deg) scale(1.05)}.plinko-shell[data-theme=dark] .plinko-toggle:hover{background:#ffffff14}.plinko-hint{position:absolute;top:16px;left:50%;transform:translate(-50%);white-space:nowrap;padding:.4rem .75rem;background:#060a0e8c;border-radius:10px;font-size:.7rem;text-transform:uppercase;letter-spacing:.16rem;color:#f8fbffbf;border:1px solid rgba(255,255,255,.08);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:3;box-shadow:0 16px 30px #00000059;pointer-events:none}.plinko-zones{position:absolute;left:12px;right:12px;bottom:12px;height:var(--plinko-zone-height, 72px);display:grid;grid-template-columns:repeat(4,1fr);gap:8px;z-index:3;pointer-events:none}.plinko-zone{display:grid;place-items:center;min-width:0;text-align:center;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.18rem;color:#0d1117;padding:0 .25rem;border-radius:12px;background:linear-gradient(180deg,#ffffff59,#00000026),var(--zone-color);border:1px solid rgba(255,255,255,.35);box-shadow:0 8px 16px #0000004d;opacity:.95;transition:transform .2s ease,opacity .2s ease,box-shadow .2s ease,color .3s ease,border-color .3s ease}.plinko-shell[data-theme=dark] .plinko-zone{color:#0b1016;border-color:#0003;box-shadow:0 8px 18px #00000073}.plinko-zone.is-active{transform:translateY(-4px) scale(1.02);box-shadow:0 18px 30px #00000080;opacity:1}@media(max-width:720px){.plinko-shell{--plinko-board-width: min(94vw, 560px)}.plinko-title-card{max-width:100%;padding:12px 48px 12px 14px}.plinko-toggle{width:32px;height:32px;top:12px;right:12px}.plinko-toggle svg{width:18px;height:18px}.plinko-board{border-radius:18px}.plinko-hint{top:12px;font-size:.62rem;letter-spacing:.12rem}.plinko-zones{gap:5px}.plinko-zone{font-size:.58rem;letter-spacing:.08rem;border-radius:10px}}@media(prefers-reduced-motion:reduce){.plinko-toggle,.plinko-zone,.plinko-modal,.plinko-modal-overlay{transition:none;animation:none}}.plinko-modal-overlay{position:fixed;inset:0;z-index:9;display:grid;place-items:center;padding:16px;background:#090c1066;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);animation:plinko-fade-in .25s ease}.plinko-shell[data-theme=dark] .plinko-modal-overlay{background:#05080ca6}.plinko-modal{position:relative;width:min(440px,100%);z-index:10;animation:plinko-slide-up .35s cubic-bezier(.16,1,.3,1);outline:none}@keyframes plinko-fade-in{0%{opacity:0}to{opacity:1}}@keyframes plinko-slide-up{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.plinko-close{position:absolute;top:1.35rem;right:1.35rem;width:34px;height:34px;display:grid;place-items:center;background:transparent;border:1px solid var(--plinko-panel-border);border-radius:50%;color:var(--plinko-ink-soft);cursor:pointer;transition:background .2s ease,color .2s ease,border-color .2s ease,transform .2s ease;z-index:15}.plinko-close:hover{background:var(--plinko-row-hover);color:var(--plinko-ink);transform:rotate(90deg)}.plinko-close:focus-visible,.plinko-link:focus-visible,.plinko-resume-preview:focus-visible{outline:2px solid var(--plinko-content-accent, var(--plinko-accent));outline-offset:2px}.plinko-content{--plinko-content-accent: #e5484d;--plinko-content-accent-ink: #c0353a;--plinko-row-hover: rgba(13, 22, 32, .045);position:relative;width:100%;max-height:calc(100dvh - 32px);overflow-y:auto;background:#fbfcfd;border:1px solid var(--plinko-panel-border);border-radius:22px;padding:2rem 2rem 1.25rem;box-shadow:0 1px #fff9 inset,0 30px 70px #050a0e47}.plinko-content:before{content:"";position:absolute;top:0;left:2rem;right:2rem;height:2px;border-radius:0 0 2px 2px;background:linear-gradient(90deg,var(--plinko-content-accent),transparent 85%)}.plinko-shell[data-theme=dark] .plinko-content{--plinko-row-hover: rgba(255, 255, 255, .05);background:#0e151d;box-shadow:0 1px #ffffff0d inset,0 30px 70px #0009}.plinko-content-resume{--plinko-content-accent: #e3a92c;--plinko-content-accent-ink: #8f6200}.plinko-content-socials{--plinko-content-accent: #46a758;--plinko-content-accent-ink: #2b7d42}.plinko-content-contact{--plinko-content-accent: #f0773b;--plinko-content-accent-ink: #b84d17}.plinko-shell[data-theme=dark] .plinko-content-projects{--plinko-content-accent: #f2605e;--plinko-content-accent-ink: #f58a88}.plinko-shell[data-theme=dark] .plinko-content-resume{--plinko-content-accent: #f6c24a;--plinko-content-accent-ink: #f6c24a}.plinko-shell[data-theme=dark] .plinko-content-socials{--plinko-content-accent: #5fbf78;--plinko-content-accent-ink: #7fd596}.plinko-shell[data-theme=dark] .plinko-content-contact{--plinko-content-accent: #f2793e;--plinko-content-accent-ink: #f79a68}.plinko-content-header{padding-right:3rem;margin-bottom:1.1rem}.plinko-content-eyebrow{margin:0 0 .45rem;font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.2em;color:var(--plinko-content-accent-ink)}.plinko-content-title{margin:0;font-size:1.9rem;font-weight:600;line-height:1.1;letter-spacing:-.02em;color:var(--plinko-ink)}.plinko-content-list{display:flex;flex-direction:column;border-top:1px solid var(--plinko-panel-border)}.plinko-content-foot{margin:1.1rem 0 0;font-size:.72rem;color:var(--plinko-ink-soft);text-align:center}.plinko-content-foot kbd{display:inline-block;padding:.1rem .4rem;margin-right:.15rem;font-family:inherit;font-size:.68rem;font-weight:500;border:1px solid var(--plinko-panel-border);border-bottom-width:2px;border-radius:5px}@media(hover:none){.plinko-content-foot{display:none}}.plinko-link{display:flex;align-items:center;gap:.9rem;margin:0 -.75rem;padding:.8rem .75rem;border-radius:12px;color:var(--plinko-ink);text-decoration:none;position:relative;transition:background .2s ease}.plinko-link+.plinko-link:before{content:"";position:absolute;top:0;left:.75rem;right:.75rem;border-top:1px solid var(--plinko-panel-border)}.plinko-link:hover{background:var(--plinko-row-hover)}.plinko-link:hover:before,.plinko-link:hover+.plinko-link:before{border-color:transparent}.plinko-link-mark{flex-shrink:0;width:42px;height:42px;display:grid;place-items:center;overflow:hidden;border:1px solid var(--plinko-panel-border);border-radius:11px;color:var(--plinko-ink-soft);transition:color .2s ease,border-color .2s ease}.plinko-link:hover .plinko-link-mark{color:var(--plinko-content-accent-ink);border-color:color-mix(in srgb,var(--plinko-content-accent) 45%,transparent)}.plinko-link-thumb{width:100%;height:100%;object-fit:cover}.plinko-webring-icon{display:block;filter:brightness(0);opacity:.6}.plinko-shell[data-theme=dark] .plinko-webring-icon{filter:brightness(0) invert(1)}.plinko-link-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:.1rem}.plinko-link-label{font-size:1rem;font-weight:500;letter-spacing:-.01em}.plinko-link-detail{font-size:.8rem;color:var(--plinko-ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.plinko-link-arrow{flex-shrink:0;color:var(--plinko-ink-soft);opacity:.45;transition:transform .2s ease,opacity .2s ease,color .2s ease}.plinko-link:hover .plinko-link-arrow{opacity:1;color:var(--plinko-content-accent-ink);transform:translate(2px,-2px)}.plinko-resume-preview{display:block;height:min(34vh,280px);margin:1rem 0 .35rem;overflow:hidden;border-radius:12px;background:#fff;border:1px solid var(--plinko-panel-border);box-shadow:0 6px 18px #050a0e1f}.plinko-resume-screenshot{width:100%;height:100%;object-fit:cover;object-position:top;transition:transform .4s ease}.plinko-resume-preview:hover .plinko-resume-screenshot{transform:scale(1.02)}.plinko-resume-preview+.plinko-link:before{display:none}@media(max-width:720px){.plinko-content{padding:1.6rem 1.35rem 1.1rem}.plinko-content:before{left:1.35rem;right:1.35rem}.plinko-content-title{font-size:1.65rem}.plinko-close{top:1.1rem;right:1.1rem}}@media(prefers-reduced-motion:reduce){.plinko-close,.plinko-link,.plinko-link-arrow,.plinko-resume-screenshot{transition:none}.plinko-close:hover{transform:none}}@layer components;@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;--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;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}.block{display:block}.hidden{display:none}}.portfolio-container{--page-bg:#f5f5f5;--surface:#fff;--ink:#111;--muted:#666;--line:#00000012;--chip:#f0f0f0;--chip-ink:#5c5c5c;--place:#e8f5e8;--place-ink:#2e7d32;--veil-top:#fffc;--veil-bottom:#ffffffe6;--veil-top-hover:#ffffffad;--veil-bottom-hover:#fffc;--soft-shadow:0 2px 8px #00000014;--lift-shadow:0 8px 20px #0000001a;--column:48rem;background-color:var(--page-bg);min-height:100dvh;color:var(--ink);padding:1.25rem 1rem 2.5rem;font-family:Inter Tight,system-ui,-apple-system,Segoe UI,sans-serif;transition:background-color .3s,color .3s}.portfolio-container[data-theme=dark]{--page-bg:#1a1a1a;--surface:#2a2a2a;--ink:#e5e5e5;--muted:#a0a0a0;--line:#ffffff1a;--chip:#3a3a3a;--chip-ink:#b4b4b4;--place:#1a3a1a;--place-ink:#7cb87c;--veil-top:#2a2a2abf;--veil-bottom:#2a2a2ad9;--veil-top-hover:#2a2a2a9e;--veil-bottom-hover:#2a2a2abd;--soft-shadow:0 2px 8px #0000004d;--lift-shadow:0 8px 20px #0006}@media(min-width:768px){.portfolio-container{padding:2rem 2rem 3rem}}.portfolio-container a:focus-visible,.portfolio-container button:focus-visible{outline-offset:3px;outline:2px solid #7659cf}.top-bar{max-width:var(--column);justify-content:space-between;align-items:center;gap:1rem;margin:0 auto;display:flex}.top-link,.theme-toggle{border:1px solid var(--line);background:var(--surface);height:44px;color:var(--muted);cursor:pointer;box-shadow:var(--soft-shadow);border-radius:12px;justify-content:center;align-items:center;transition:transform .25s,box-shadow .25s,background .3s,color .3s,border-color .3s;display:inline-flex}.top-link{gap:.45rem;padding:0 1rem 0 .8rem;font-size:.95rem;font-weight:500;text-decoration:none}.theme-toggle{width:44px}.portfolio-container[data-theme=dark] .theme-toggle{color:#f5c24b}.top-link:hover,.theme-toggle:hover{box-shadow:var(--lift-shadow);color:var(--ink);transform:translateY(-2px)}.portfolio-container[data-theme=dark] .theme-toggle:hover{color:#f5c24b}.top-link svg,.theme-toggle svg{transition:transform .3s}.top-link:hover svg{transform:translate(-3px)}.theme-toggle:hover svg{transform:rotate(15deg)scale(1.05)}.hero-section{max-width:var(--column);text-align:center;margin:0 auto;padding:2.5rem .5rem 2.75rem}@media(min-width:768px){.hero-section{padding:3rem 1rem 3.25rem}}.hero-status{background:var(--surface);border:1px solid var(--line);color:var(--muted);box-shadow:var(--soft-shadow);border-radius:999px;align-items:center;gap:.55rem;margin-bottom:1.25rem;padding:.4rem .95rem .4rem .8rem;font-size:.875rem;font-weight:500;transition:background .3s,color .3s,border-color .3s;display:inline-flex}.hero-status-dot{background:#6cc24a;border-radius:50%;width:.5rem;height:.5rem;box-shadow:0 0 0 4px #6cc24a38}.hero-title{letter-spacing:-.02em;text-wrap:balance;margin-bottom:1rem;font-size:2.1rem;font-weight:500;line-height:1.15}@media(min-width:768px){.hero-title{font-size:3rem}}.description-text{max-width:44rem;color:var(--muted);text-wrap:pretty;margin:0 auto;font-size:1rem;line-height:1.6;transition:color .3s}@media(min-width:768px){.description-text{font-size:1.125rem}}.university-link{text-underline-offset:3px;color:var(--ink);font-weight:500;text-decoration:underline;transition:color .3s}.hero-actions{flex-wrap:wrap;justify-content:center;gap:.75rem;margin-top:1.75rem;display:flex}.hero-button{background:var(--surface);border:1px solid var(--line);color:var(--ink);box-shadow:var(--soft-shadow);border-radius:.85rem;align-items:center;gap:.5rem;padding:.7rem 1.25rem;font-size:1rem;font-weight:500;text-decoration:none;transition:transform .2s,box-shadow .2s,background .3s,color .3s,border-color .3s;display:inline-flex}.hero-button:hover{box-shadow:var(--lift-shadow);transform:translateY(-2px)}.hero-button-primary{color:#5d3f06;background:linear-gradient(#ffe9a3,#f2c35b);border-color:#d7992873}.cards-container{max-width:var(--column);grid-template-columns:1fr;gap:1.5rem;margin:0 auto 3rem;display:grid}@media(min-width:768px){.cards-container{grid-template-columns:1fr 1fr}}.card{--card-primary:#c1f2a0;--card-accent:#9fe168;--card-title-color:#0009;--file-step:4.1rem;background:linear-gradient(180deg,var(--card-primary)0%,var(--card-accent)100%);isolation:isolate;border:1px solid #ffffff59;border-radius:1.9rem;height:27rem;padding:3rem 1.4rem 0;transition:box-shadow .25s,transform .25s;position:relative;overflow:hidden;box-shadow:0 18px 34px #00000024}.card:hover{transform:translateY(-2px);box-shadow:0 22px 42px #0000002e}.portfolio-container[data-theme=dark] .card{border-color:#ffffff2e}.card-purple{--card-primary:#c9b8ff;--card-accent:#a789f6;--card-title-color:#472d84d1}.card-yellow{--card-primary:#ffe9a3;--card-accent:#f2c35b;--card-title-color:#805608d1}.card-green{--card-primary:#c1f2a0;--card-accent:#9ee06b;--card-title-color:#2a5626d1}.card-coral{--card-primary:#ffc0ae;--card-accent:#ff8f7b;--card-title-color:#803625d6}.card-files{z-index:1;clip-path:inset(-1.5rem -.5rem 0);height:calc(100% - 1.5rem);position:relative}.card-item{background:linear-gradient(var(--veil-top),var(--veil-bottom)),var(--item-image,none)center/cover no-repeat,var(--surface);border:1px solid var(--line);height:14rem;color:var(--ink);border-radius:.75rem;align-items:flex-start;gap:.75rem;padding:.95rem 1.25rem;font-size:1.05rem;text-decoration:none;transition:transform .22s,box-shadow .22s,color .3s,border-color .3s;display:flex;position:absolute;top:0;left:0;right:0;box-shadow:0 -2px 6px #0000000f,0 2px 4px #00000014}.card-item:nth-child(2){top:var(--file-step)}.card-item:nth-child(3){top:calc(var(--file-step)*2)}.card-item:hover,.card-item:focus-visible{background:linear-gradient(var(--veil-top-hover),var(--veil-bottom-hover)),var(--item-image,none)center/cover no-repeat,var(--surface);transform:translateY(-10px);box-shadow:0 -4px 10px #0000001a,0 4px 8px #0000001f}.card-item-text{flex-direction:column;flex:1;gap:.15rem;min-width:0;display:flex}.card-item-label{font-weight:500;line-height:1.3}.card-item-detail{color:var(--muted);font-size:.82rem;line-height:1.3}.card-item-icon{color:var(--ink);opacity:.5;flex-shrink:0;margin-top:.1rem;transition:opacity .2s}.card-item:hover .card-item-icon{opacity:.8}.webring-icon{filter:brightness(0)}.portfolio-container[data-theme=dark] .webring-icon{filter:brightness(0)invert()}.card-paper{background:#fff;border-radius:.4rem;transition:transform .25s,box-shadow .25s;display:block;position:absolute;inset:0;overflow:hidden;box-shadow:0 2px 10px #00000024}.card-paper:hover,.card-paper:focus-visible{transform:translateY(-10px)rotate(-.6deg);box-shadow:0 8px 18px #0000002e}.resume-screenshot{object-fit:cover;object-position:top;width:100%;height:100%}.portfolio-container[data-theme=dark] .resume-screenshot{filter:brightness(.92)}.card-pocket{background:linear-gradient(180deg,#ffffff1f,#fff0 30%),var(--card-accent);clip-path:polygon(0 0,58% 0,70% 18%,100% 18%,100% 100%,0 100%);z-index:3;pointer-events:none;border-radius:1.5rem;height:42%;position:absolute;bottom:.65rem;left:.65rem;right:.65rem}.card-title{letter-spacing:-.01em;color:var(--card-title-color);z-index:4;pointer-events:none;margin:0;font-size:1.7rem;font-weight:600;line-height:1.1;position:absolute;bottom:1.5rem;left:1.6rem}.card-meta{color:var(--card-title-color);opacity:.85;z-index:4;pointer-events:none;font-size:.875rem;font-weight:500;position:absolute;bottom:1.65rem;right:1.6rem}.apps-section{max-width:var(--column);margin:0 auto 3rem}.apps-title{letter-spacing:-.015em;margin-bottom:1.25rem;padding:0 .5rem;font-size:2rem;font-weight:500}.app-item{background:var(--surface);color:var(--ink);border:1px solid #0000;border-radius:1rem;align-items:flex-start;gap:1rem;margin-bottom:1rem;padding:1.25rem 1.5rem;text-decoration:none;transition:transform .2s,box-shadow .2s,background .3s,color .3s;display:flex}.app-item:hover{box-shadow:var(--lift-shadow);transform:translateY(-2px)}.app-icon{flex-shrink:0;justify-content:center;align-items:center;width:3rem;height:3rem;display:flex}.app-logo{object-fit:contain;border-radius:.3rem;width:72%;height:72%}.app-body{flex:1;min-width:0}.app-info{flex-wrap:wrap;align-items:center;gap:.5rem .75rem;min-height:3rem;display:flex}.app-name{font-size:1.125rem;font-weight:500}.app-tag,.app-location,.app-badge{white-space:nowrap;border-radius:1rem;padding:.375rem .875rem;font-size:.875rem;transition:background .3s,color .3s}.app-tag{background:var(--chip);color:var(--chip-ink)}.app-location{background:var(--place);color:var(--place-ink)}.app-badge{background:var(--chip);color:var(--chip-ink);margin-left:auto;font-weight:500}.app-description{color:var(--muted);text-wrap:pretty;margin-top:.5rem;font-size:.9rem;line-height:1.5;transition:color .3s}.app-stack{color:var(--chip-ink);flex-wrap:wrap;gap:.3rem .9rem;margin-top:.7rem;font-size:.8rem;font-weight:500;display:flex}.app-stack li{align-items:center;gap:.4rem;display:inline-flex}.app-stack li:before{content:"";background:#a789f6;border-radius:50%;width:.35rem;height:.35rem}.app-stack li:nth-child(4n+2):before{background:#f2c35b}.app-stack li:nth-child(4n+3):before{background:#9ee06b}.app-stack li:nth-child(4n+4):before{background:#ff8f7b}@media(max-width:640px){.app-item{gap:.85rem;padding:1.1rem}.app-icon{width:2.5rem;height:2.5rem}.app-info{gap:.4rem .5rem;min-height:2.5rem}.app-name{flex-basis:100%;line-height:2.5rem}.app-tag,.app-location,.app-badge{padding:.3rem .7rem;font-size:.8rem}.app-badge{margin-left:0}.app-description,.app-stack{margin-left:-3.35rem}.app-description{margin-top:.85rem}}.skills-panel{background:var(--surface);border-radius:1rem;padding:.5rem 1.5rem;transition:background .3s}.skills-row{grid-template-columns:1fr;gap:.75rem;padding:1.1rem 0;display:grid}.skills-row+.skills-row{border-top:1px solid var(--line)}@media(min-width:640px){.skills-row{grid-template-columns:9rem 1fr;align-items:baseline;gap:1rem}}.skills-label{font-size:1rem;font-weight:500}.skills-list{flex-wrap:wrap;gap:.5rem;display:flex}.skills-list li{background:var(--chip);color:var(--chip-ink);border-radius:1rem;padding:.375rem .875rem;font-size:.875rem;transition:background .3s,color .3s}.skills-row:last-child .skills-list li{background:var(--place);color:var(--place-ink)}.site-footer{max-width:var(--column);color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:.5rem 1rem;margin:0 auto;padding:0 .5rem;font-size:.9rem;display:flex}.footer-link{color:var(--ink);font-weight:500;text-decoration:none}.footer-link:hover{text-underline-offset:3px;text-decoration:underline}@media(prefers-reduced-motion:no-preference){.hero-section,.portfolio-container main>:not(.hero-section){animation:.55s cubic-bezier(.16,1,.3,1) both portfolio-rise}.portfolio-container main>:nth-child(2){animation-delay:80ms}.portfolio-container main>:nth-child(n+3){animation-delay:.16s}}@keyframes portfolio-rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){.portfolio-container *,.portfolio-container :before{transition:none!important}}@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;--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;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 components;@layer utilities{.visible{visibility:visible}.block{display:block}.hidden{display:none}}.notfound-container{background-color:#f5f5f5;justify-content:center;align-items:center;min-height:100vh;padding:2rem;transition:background-color .3s;display:flex;position:relative}.notfound-container[data-theme=dark]{background-color:#1a1a1a}.notfound-content{text-align:center;color:#000;transition:color .3s}.notfound-container[data-theme=dark] .notfound-content{color:#e5e5e5}.notfound-title{-webkit-text-fill-color:transparent;background:linear-gradient(135deg,#c1f2a0,#9fe168,#c9b8ff,#a789f6);-webkit-background-clip:text;background-clip:text;margin:0;font-size:8rem;font-weight:700;line-height:1}@media(min-width:768px){.notfound-title{font-size:12rem}}.notfound-message{color:#666;margin:1rem 0 2rem;font-size:1.5rem;font-weight:400;transition:color .3s}.notfound-container[data-theme=dark] .notfound-message{color:#a0a0a0}@media(min-width:768px){.notfound-message{font-size:2rem}}.notfound-link{color:#1a1a1a;background:#fff;border:1px solid #0000000a;border-radius:.75rem;align-items:center;gap:.5rem;padding:.875rem 1.75rem;font-size:1.125rem;font-weight:500;text-decoration:none;transition:transform .2s,box-shadow .2s,background .3s,color .3s;display:inline-flex;box-shadow:0 2px 8px #0000001a}.notfound-container[data-theme=dark] .notfound-link{color:#e5e5e5;background:#2a2a2a;border-color:#ffffff1a}.notfound-link:hover{transform:translateY(-2px);box-shadow:0 4px 12px #00000026}.notfound-toggle{color:#666;cursor:pointer;z-index:1000;background:#fff;border:1px solid #0000001a;border-radius:12px;justify-content:center;align-items:center;width:44px;height:44px;transition:all .3s;display:flex;position:fixed;top:2rem;right:2rem;box-shadow:0 2px 8px #0000001a}.notfound-container[data-theme=dark] .notfound-toggle{color:#f5c24b;background:#2a2a2a;border-color:#ffffff1a}.notfound-toggle:hover{transform:translateY(-2px);box-shadow:0 4px 12px #00000026}.notfound-toggle svg{transition:transform .3s}.notfound-toggle:hover svg{transform:rotate(15deg)scale(1.05)}
