:root{--background: #f6f7f4;--foreground: #111513;--muted: #eceee9;--muted-foreground: #545c57;--card: #ffffff;--border: #e1e5df;--input: #cdd3cc;--primary: #111513;--primary-foreground: #f6f7f4;--accent: #0b7a52;--accent-soft: #e3f3ea;--ring: #0b7a52;--success: #0b7a52;--destructive: #c62828;--mint: #bfeedd;--lime: #d9f39a;--sky: #a9dcf3;--deck-ember: #e0662f;--deck-lime: #7da21c;--deck-sky: #2f8fc4;--deck-gold: #c99a2e;--deck-shadow: rgba(17, 21, 19, .28);--roguedream-fundo: url(/images/projects/roguedream-cena-fundo-dia.webp);--roguedream-fundo-carta: url(/images/projects/roguedream-carta-fundo-dia.webp);--font-sans: "Geist", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono: "Geist Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.25rem;--text-2xl: 1.5rem;--text-3xl: 2rem;--text-display: clamp(2.75rem, 7vw, 5rem);--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-6: 1.5rem;--space-8: 2rem;--space-12: 3rem;--space-16: 4rem;--space-24: 6rem;--radius-sm: 8px;--radius: 12px;--radius-lg: 18px;--radius-full: 999px;--shadow-sm: 0 1px 2px rgba(17, 21, 19, .05);--shadow-md: 0 8px 24px -8px rgba(17, 21, 19, .14);--shadow-lg: 0 24px 48px -24px rgba(17, 21, 19, .28);--ease: cubic-bezier(.2, 0, 0, 1);--ease-out: cubic-bezier(.2, .7, 0, 1);--duration: .18s;--duration-slow: .35s;--duration-reveal: .6s;--stagger: 80ms;--tap: 44px;--container-width: 1120px;--header-height: 64px;color-scheme:light}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--background: #131715;--foreground: #edf1ee;--muted: #1f2522;--muted-foreground: #a3aca6;--card: #1a1f1c;--border: #2b322e;--input: #3a423d;--primary: #edf1ee;--primary-foreground: #131715;--accent: #4fdc9e;--accent-soft: rgba(79, 220, 158, .12);--ring: #4fdc9e;--success: #4fdc9e;--destructive: #f87171;--mint: #1d5a43;--lime: #3b4f1c;--sky: #1d4a60;--deck-ember: #f08a4b;--deck-lime: #b8dc5a;--deck-sky: #6cc0ec;--deck-gold: #e5be5c;--deck-shadow: rgba(0, 0, 0, .6);--roguedream-fundo: url(/images/projects/roguedream-cena-fundo-noite.webp);--roguedream-fundo-carta: url(/images/projects/roguedream-carta-fundo-noite.webp);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .35);--shadow-md: 0 8px 24px -8px rgba(0, 0, 0, .5);--shadow-lg: 0 24px 48px -24px rgba(0, 0, 0, .7);color-scheme:dark}}:root[data-theme=dark]{--background: #131715;--foreground: #edf1ee;--muted: #1f2522;--muted-foreground: #a3aca6;--card: #1a1f1c;--border: #2b322e;--input: #3a423d;--primary: #edf1ee;--primary-foreground: #131715;--accent: #4fdc9e;--accent-soft: rgba(79, 220, 158, .12);--ring: #4fdc9e;--success: #4fdc9e;--destructive: #f87171;--mint: #1d5a43;--lime: #3b4f1c;--sky: #1d4a60;--deck-ember: #f08a4b;--deck-lime: #b8dc5a;--deck-sky: #6cc0ec;--deck-gold: #e5be5c;--deck-shadow: rgba(0, 0, 0, .6);--roguedream-fundo: url(/images/projects/roguedream-cena-fundo-noite.webp);--roguedream-fundo-carta: url(/images/projects/roguedream-carta-fundo-noite.webp);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .35);--shadow-md: 0 8px 24px -8px rgba(0, 0, 0, .5);--shadow-lg: 0 24px 48px -24px rgba(0, 0, 0, .7);color-scheme:dark}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--header-height) + var(--space-4))}body{font-family:var(--font-sans);font-size:var(--text-base);line-height:1.6;background-color:var(--background);color:var(--foreground);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}a{color:inherit;text-decoration:none}h1,h2,h3{font-weight:600;line-height:1.1;letter-spacing:-.025em;text-wrap:balance}h1{font-size:var(--text-display);letter-spacing:-.04em}h2{font-size:var(--text-2xl)}:focus-visible{outline:2px solid var(--ring);outline-offset:2px;border-radius:var(--radius-sm)}::selection{background:var(--accent-soft);color:var(--foreground)}.container{max-width:var(--container-width);margin:0 auto;padding:0 var(--space-6)}.muted{color:var(--muted-foreground)}.label,.eyebrow{font-family:var(--font-mono);font-size:var(--text-xs);font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--muted-foreground)}.skip-link{position:absolute;left:var(--space-4);top:-100px;z-index:100;background:var(--primary);color:var(--primary-foreground);padding:var(--space-2) var(--space-4);border-radius:var(--radius)}.skip-link:focus{top:var(--space-4)}.site-header{position:sticky;top:0;z-index:50;height:var(--header-height);border-bottom:1px solid color-mix(in srgb,var(--border) 70%,transparent);background:color-mix(in srgb,var(--background) 72%,transparent);backdrop-filter:saturate(180%) blur(8px);-webkit-backdrop-filter:saturate(180%) blur(8px)}.header-inner{height:100%;display:flex;align-items:center;gap:var(--space-6)}.brand{display:inline-flex;align-items:center;gap:var(--space-2);min-height:var(--tap);font-weight:600;letter-spacing:-.01em;margin-right:auto}.brand:before{content:"";width:22px;height:22px;border-radius:7px;background:conic-gradient(from 200deg,var(--accent),var(--lime),var(--sky),var(--accent))}.site-nav{display:flex;gap:var(--space-1)}.site-nav a{font-size:var(--text-sm);color:var(--muted-foreground);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);transition:color var(--duration) var(--ease)}.site-nav a:hover{color:var(--foreground)}.language-switcher{display:flex;gap:2px;padding:3px;border:1px solid var(--border);border-radius:var(--radius-full);background:var(--card)}.lang-btn{font-family:var(--font-mono);font-size:var(--text-sm);font-weight:600;min-width:var(--tap);height:var(--tap);padding:0 var(--space-3);border:0;border-radius:var(--radius-full);background:transparent;color:var(--muted-foreground);cursor:pointer;transition:color var(--duration) var(--ease),background-color var(--duration) var(--ease)}.lang-btn:hover{color:var(--foreground)}.lang-btn.active{background:var(--primary);color:var(--primary-foreground)}.header-actions{display:flex;align-items:center;gap:var(--space-2)}.theme-switcher{display:flex;padding:3px;border:1px solid var(--border);border-radius:var(--radius-full);background:var(--card)}.theme-btn{display:inline-flex;align-items:center;justify-content:center;width:var(--tap);height:var(--tap);border:0;border-radius:var(--radius-full);background:transparent;color:var(--muted-foreground);cursor:pointer;transition:color var(--duration) var(--ease),background-color var(--duration) var(--ease)}.theme-btn:hover{color:var(--foreground);background:var(--muted)}.theme-btn:focus-visible{border-radius:var(--radius-full)}.theme-btn svg{width:18px;height:18px}.theme-btn .icon-moon{display:none}:root[data-theme=dark] .theme-btn .icon-sun{display:none}:root[data-theme=dark] .theme-btn .icon-moon{display:block}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .theme-btn .icon-sun{display:none}:root:not([data-theme=light]) .theme-btn .icon-moon{display:block}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);height:var(--tap);padding:0 var(--space-6);border:1px solid transparent;border-radius:var(--radius-full);font-family:var(--font-sans);font-size:var(--text-sm);font-weight:500;white-space:nowrap;cursor:pointer;transition:background-color var(--duration) var(--ease),border-color var(--duration) var(--ease),color var(--duration) var(--ease),opacity var(--duration) var(--ease),transform var(--duration) var(--ease)}.btn:active:not(:disabled){transform:scale(.97)}.btn-primary{background:var(--primary);color:var(--primary-foreground)}.btn-primary:hover{opacity:.88}.btn-outline{background:color-mix(in srgb,var(--card) 80%,transparent);border-color:var(--border);color:var(--foreground);box-shadow:var(--shadow-sm)}.btn-outline:hover,.btn-ghost:hover{background:var(--muted)}.btn-ghost{background:transparent;color:var(--foreground)}.btn-block{width:100%}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.is-loading{cursor:progress}.btn.is-loading:before{content:"";width:1em;height:1em;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:btn-spin .7s linear infinite}@keyframes btn-spin{to{transform:rotate(360deg)}}.tag{display:inline-flex;align-items:center;height:24px;padding:0 var(--space-2);border:1px solid var(--border);border-radius:var(--radius-full);background:var(--muted);font-family:var(--font-mono);font-size:var(--text-xs);color:var(--foreground);white-space:nowrap}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-6)}.hero{position:relative;isolation:isolate;overflow:hidden;padding:var(--space-12) 0 var(--space-8);background:radial-gradient(45% 70% at 78% 45%,color-mix(in srgb,var(--accent) 10%,transparent),transparent 70%),var(--background)}.hero-content{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.25fr);align-items:center;gap:var(--space-8)}.hero-text{position:relative;z-index:2;display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-6);min-width:0;transition:opacity var(--duration-slow) var(--ease)}.hero.deck-is-open .hero-text{opacity:.35}.hero-hint{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--muted-foreground)}.hero h1{letter-spacing:-.05em;line-height:.98}.hero .eyebrow{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border:1px solid var(--border);border-radius:var(--radius-full);background:color-mix(in srgb,var(--card) 70%,transparent);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);text-transform:none;letter-spacing:0;color:var(--foreground)}.hero .eyebrow:before{content:"";width:7px;height:7px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)}.js .hero-text>*{animation:intro .9s var(--ease-out) both}.js .hero-text>:nth-child(2){animation-delay:calc(var(--stagger) * 1)}.js .hero-text>:nth-child(3){animation-delay:calc(var(--stagger) * 2)}.js .hero-text>:nth-child(4){animation-delay:calc(var(--stagger) * 3)}.js .hero-text>:nth-child(5){animation-delay:calc(var(--stagger) * 4)}@keyframes intro{0%{opacity:0;transform:translateY(16px);filter:blur(8px)}}.lead{font-size:var(--text-xl);color:var(--muted-foreground);max-width:46ch;text-wrap:pretty}.actions{display:flex;flex-wrap:wrap;gap:var(--space-3)}.hero-links{display:flex;gap:var(--space-1);margin-left:calc(-1 * var(--space-4))}.hero-links .btn{padding:0 var(--space-4)}.hint-touch{display:none}@media(hover:none)and (pointer:coarse){.hint-pointer{display:none}.hint-touch{display:inline}}.deck-table{position:relative;height:600px;touch-action:pan-y}.deck{position:absolute;left:50%;top:56%;width:0;height:0;transform-style:flat;perspective:1000px}.deck-shuffle{position:absolute;top:var(--space-4);right:var(--space-4);z-index:5;transition:opacity var(--duration-slow) var(--ease)}.hero.deck-is-open .deck-shuffle{opacity:0;pointer-events:none}.deck-card{--w: 300px;--h: 430px;--frame: var(--accent);position:absolute;left:calc(var(--w) / -2);top:calc(var(--h) / -2);width:var(--w);height:var(--h);transform-style:preserve-3d;transition:transform .65s cubic-bezier(.2,.8,.2,1),opacity .4s;cursor:pointer;outline:none;will-change:transform}.deck-card.dealing{transition-duration:.9s}.deck.shuffling .deck-card{transition-duration:.26s,.2s;transition-timing-function:cubic-bezier(.3,.7,.2,1)}.deck-card:focus-visible .deck-front,.deck-card:focus-visible .deck-back{outline:2px solid var(--ring);outline-offset:3px}.deck-face{position:absolute;inset:0;overflow:hidden;border:1px solid var(--border);border-radius:22px;background:var(--card);box-shadow:0 30px 50px -28px var(--deck-shadow),0 2px 6px -2px var(--deck-shadow);backface-visibility:hidden;-webkit-backface-visibility:hidden}.deck-front{display:grid;grid-template-rows:auto auto 1fr auto;gap:10px;padding:12px}.deck-front:before{content:"";position:absolute;inset:6px;border:2px solid var(--frame);border-radius:17px;opacity:.55;pointer-events:none}.deck-top{display:flex;align-items:center;gap:10px;padding:6px 8px 0}.deck-top .gem{display:grid;flex:none;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--frame);color:var(--card);font-family:var(--font-mono);font-size:.85rem;font-weight:700;box-shadow:inset 0 -3px #0000002e}.deck-top h3{font-size:1.35rem;font-weight:650;letter-spacing:-.03em}.deck-art{position:relative;overflow:hidden;aspect-ratio:16 / 10;border:1px solid var(--border);border-radius:12px;background:var(--muted)}.deck-art img{display:block;width:100%;height:100%;object-fit:cover}.deck-text{align-self:start;padding:0 8px;font-size:.93rem;line-height:1.5}.deck-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 8px 6px}.deck-tags{display:flex;flex-wrap:wrap;gap:5px}.deck-tags span{padding:2px 7px;border-radius:var(--radius-full);background:color-mix(in srgb,var(--frame) 14%,transparent);font-family:var(--font-mono);font-size:.66rem}.deck-foot .rar{color:var(--frame);font-family:var(--font-mono);font-size:.62rem;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap}.deck-front:after{content:"";position:absolute;inset:0;border-radius:inherit;background:radial-gradient(circle at var(--px, 50%) var(--py, 50%),rgba(255,255,255,.4),transparent 22%),linear-gradient(115deg,transparent 30%,rgba(255,120,200,.16) 42%,rgba(120,220,255,.16) 50%,rgba(160,255,140,.16) 58%,transparent 70%);background-position:center,var(--px, 50%) var(--py, 50%);background-size:100% 100%,300% 300%;mix-blend-mode:soft-light;opacity:0;pointer-events:none;transition:opacity .3s}.deck-card.hot .deck-front:after{opacity:1}.deck-card.legend.hot .deck-front:after{mix-blend-mode:color-dodge;opacity:.3}.deck-veil{position:absolute;inset:0;overflow:hidden;border:1px solid var(--border);border-radius:22px;background:radial-gradient(circle at 50% 50%,var(--card) 0 17%,transparent 17.5%),repeating-linear-gradient(45deg,color-mix(in srgb,var(--accent) 22%,var(--card)) 0 8px,color-mix(in srgb,var(--accent) 10%,var(--card)) 8px 16px);opacity:0;pointer-events:none;transform:translateZ(1px);transition:opacity .14s;backface-visibility:hidden;-webkit-backface-visibility:hidden}.deck-veil:before{content:"";position:absolute;inset:10px;border:2px solid color-mix(in srgb,var(--accent) 45%,transparent);border-radius:16px}.deck-veil:after{content:"✦";position:absolute;inset:0;display:grid;place-items:center;color:var(--accent);font-size:3.2rem}.deck-card.down .deck-veil{opacity:1}.deck-back{display:flex;flex-direction:column;align-items:flex-start;gap:12px;padding:26px 24px;background:linear-gradient(160deg,color-mix(in srgb,var(--frame) 16%,var(--card)),var(--card) 60%);transform:rotateY(180deg);pointer-events:none}.deck-card.open .deck-back{pointer-events:auto}.deck-back .k{color:var(--frame);font-family:var(--font-mono);font-size:.7rem;letter-spacing:.08em;text-transform:uppercase}.deck-back h3{font-size:1.6rem;font-weight:650}.deck-back p{color:var(--muted-foreground);font-size:.92rem;line-height:1.55}.deck-links{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:auto}.deck-links .btn{padding:0 var(--space-4)}.deck-back .deck-tags+.note{margin-top:auto}.deck-back .note{color:var(--muted-foreground);font-family:var(--font-mono);font-size:.72rem}.deck-cover{position:absolute;inset:0;display:grid;place-items:center}.deck-cover .dom{position:relative;z-index:1;padding:6px 12px;border:1px solid var(--border);border-radius:var(--radius-full);background:color-mix(in srgb,var(--card) 85%,transparent);font-family:var(--font-mono);font-size:.8rem}.cv-site{padding:12px;place-items:stretch}.cv-site .mini{display:grid;grid-template-rows:10px 1fr;overflow:hidden;border:1px solid var(--border);border-radius:8px;background:var(--background)}.cv-site .mini>span{background:var(--border)}.cv-site .mini>div{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:8px}.cv-site .t{width:80%;height:8px;border-radius:4px;background:var(--foreground);opacity:.7}.cv-site .t2{width:90%;height:5px;margin-top:4px;border-radius:3px;background:var(--muted-foreground);opacity:.35}.cv-site .c{border:1px solid var(--border);border-radius:6px;background:var(--card)}.cv-joker{background:repeating-conic-gradient(from 0deg,color-mix(in srgb,var(--deck-gold) 25%,transparent) 0 10deg,transparent 10deg 20deg),var(--muted)}.cv-joker b{color:var(--deck-gold);font-size:4.5rem;font-weight:800;line-height:1;text-shadow:0 4px 0 color-mix(in srgb,var(--foreground) 20%,transparent)}.toasty{position:fixed;right:max(12px,env(safe-area-inset-right,0px));bottom:max(12px,env(safe-area-inset-bottom,0px));z-index:60;display:flex;align-items:flex-end;gap:8px;pointer-events:none;transform:translate(130%,60%) rotate(-14deg);transform-origin:bottom right}.toasty img{display:block;width:132px;height:132px;object-fit:cover;border:4px solid var(--card);border-radius:28px;box-shadow:0 20px 40px -16px var(--deck-shadow)}.toasty .say{order:-1;margin-bottom:96px;padding:6px 12px;border-radius:12px 12px 2px;background:var(--primary);color:var(--primary-foreground);font-family:var(--font-mono);font-size:.95rem;font-weight:700;white-space:nowrap}.toasty.go{animation:toasty 1.25s cubic-bezier(.2,.8,.2,1) both}@keyframes toasty{0%,to{transform:translate(130%,60%) rotate(-14deg)}18%,70%{transform:translate(0) rotate(-8deg)}}@keyframes toasty-fade{0%,to{opacity:0}15%,75%{opacity:1}}.text-swap{--tint: color-mix(in srgb, var(--accent) 9%, transparent);--tint-strong: color-mix(in srgb, var(--accent) 16%, transparent);--blur: clamp(4px, .3em, 10px);--spread: clamp(2px, .18em, 6px);border-radius:clamp(4px,.35em,10px);-webkit-box-decoration-break:clone;box-decoration-break:clone;animation:text-swap .7s ease-in-out both}@keyframes text-swap{0%,to{background-color:transparent;box-shadow:0 0 0 0 transparent}14%,46%,80%{background-color:var(--tint-strong);box-shadow:0 0 var(--blur) var(--spread) var(--tint-strong)}30%,62%{background-color:var(--tint);box-shadow:0 0 var(--blur) var(--spread) var(--tint)}}.section{padding:var(--space-24) 0;border-top:1px solid var(--border)}.hero+.section{border-top:0;padding-top:var(--space-8)}.section-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2.6fr);gap:var(--space-12);align-items:start}.section-head h2{font-size:var(--text-3xl);letter-spacing:-.035em}.section-head{position:sticky;top:calc(var(--header-height) + var(--space-8));display:grid;gap:var(--space-3)}.section-head p{font-size:var(--text-sm)}.section-body{display:grid;gap:var(--space-12);min-width:0}.prose{color:var(--muted-foreground);font-size:var(--text-lg);max-width:65ch;text-wrap:pretty}.stack{display:grid;gap:var(--space-4)}.stack-list{border-top:1px solid var(--border)}.stack-row{display:grid;grid-template-columns:140px minmax(0,1fr);gap:var(--space-4);padding:var(--space-3) 0;border-bottom:1px solid var(--border)}.stack-row dt{font-size:var(--text-sm);color:var(--muted-foreground);padding-top:2px}.stack-row dd{display:flex;flex-wrap:wrap;gap:var(--space-2)}.timeline{list-style:none;display:grid;border-top:1px solid var(--border)}.timeline-item{display:grid;grid-template-columns:140px minmax(0,1fr);gap:var(--space-4);padding:var(--space-6) 0;border-bottom:1px solid var(--border)}.timeline-period{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--muted-foreground);padding-top:var(--space-1)}.timeline-body{display:grid;gap:var(--space-2)}.timeline-body h3{font-size:var(--text-lg)}.timeline-org{color:var(--accent);white-space:nowrap}.timeline-org:before{content:"· ";color:var(--muted-foreground)}.timeline-body p{font-size:var(--text-sm);color:var(--muted-foreground);max-width:65ch;text-wrap:pretty}.project-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-4)}.project-card{position:relative;display:flex;flex-direction:column;padding:0;overflow:hidden;min-width:0;transition:border-color var(--duration-slow) var(--ease-out),box-shadow var(--duration-slow) var(--ease-out),transform var(--duration-slow) var(--ease-out)}.project-card--featured,.project-card--compact{grid-column:1 / -1}a.project-card:hover{border-color:var(--input);box-shadow:var(--shadow-lg);transform:translateY(-4px)}.project-card:after{content:"";position:absolute;inset:0;border-radius:inherit;background:radial-gradient(280px circle at var(--mx, 50%) var(--my, 50%),color-mix(in srgb,var(--accent) 14%,transparent),transparent 70%);opacity:0;transition:opacity var(--duration-slow) var(--ease);pointer-events:none}a.project-card:hover:after{opacity:1}.project-media{position:relative;aspect-ratio:16 / 10;overflow:hidden;border-bottom:1px solid var(--border);background:var(--muted)}.project-media img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .6s var(--ease-out)}.project-media img.pixelated{image-rendering:pixelated}img.roguedream-art{background:var(--roguedream-fundo) center / cover no-repeat}img.roguedream-carta{background-image:var(--roguedream-fundo-carta)}a.project-card:hover .project-media img{transform:scale(1.04)}.project-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;image-rendering:pixelated;opacity:0;transition:opacity var(--duration-slow) var(--ease-out)}.project-video.playing{opacity:1}.project-cover{display:grid;place-items:center;background:radial-gradient(70% 90% at 20% 10%,var(--mint),transparent 70%),radial-gradient(60% 80% at 90% 90%,var(--sky),transparent 70%),radial-gradient(50% 60% at 80% 20%,var(--lime),transparent 70%),var(--card)}.project-cover span{font-family:var(--font-mono);font-size:var(--text-lg);font-weight:500;letter-spacing:-.02em;padding:var(--space-2) var(--space-4);border:1px solid var(--border);border-radius:var(--radius-full);background:color-mix(in srgb,var(--card) 75%,transparent);transition:transform var(--duration-slow) var(--ease-out)}a.project-card:hover .project-cover span{transform:scale(1.05)}.project-body{display:flex;flex:1;flex-direction:column;gap:var(--space-3);padding:var(--space-6)}.project-card--featured .project-body h3{font-size:var(--text-2xl)}.project-meta{display:flex;justify-content:space-between;gap:var(--space-2);font-family:var(--font-mono);font-size:var(--text-xs);color:var(--muted-foreground)}.project-arrow{transition:transform var(--duration) var(--ease)}.project-card:hover .project-arrow{color:var(--accent);transform:translate(2px,-2px)}.project-card h3{font-size:var(--text-lg)}.project-card p{font-size:var(--text-sm);color:var(--muted-foreground)}.project-tags{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:auto;padding-top:var(--space-2)}.project-card.wiggle{animation:wiggle .4s var(--ease)}@keyframes wiggle{25%{transform:rotate(-1.5deg)}75%{transform:rotate(1.5deg)}}.toast{position:fixed;left:50%;bottom:var(--space-6);z-index:100;max-width:calc(100vw - var(--space-8));padding:var(--space-3) var(--space-4);border-radius:var(--radius);background:var(--primary);color:var(--primary-foreground);font-size:var(--text-sm);box-shadow:var(--shadow-md);opacity:0;pointer-events:none;transform:translate(-50%,var(--space-2));transition:opacity var(--duration) var(--ease),transform var(--duration) var(--ease)}.toast.visible{opacity:1;transform:translate(-50%)}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.contact-card{position:relative;display:grid;gap:var(--space-4)}.contact-card[aria-busy=true]:after{content:"";position:absolute;inset:0;z-index:1;border-radius:inherit;background:color-mix(in srgb,var(--card) 55%,transparent);cursor:progress}.field-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-4)}.form-group{display:grid;gap:var(--space-2)}label{font-size:var(--text-sm);font-weight:500}input,textarea{width:100%;min-height:40px;padding:var(--space-2) var(--space-3);border:1px solid var(--input);border-radius:var(--radius);background:var(--background);color:var(--foreground);font-family:var(--font-sans);font-size:var(--text-base);box-shadow:var(--shadow-sm);transition:border-color var(--duration) var(--ease),box-shadow var(--duration) var(--ease)}input:focus-visible,textarea:focus-visible{outline:none;border-color:var(--ring);box-shadow:0 0 0 3px color-mix(in srgb,var(--ring) 25%,transparent)}textarea{resize:vertical;min-height:128px}.form-status{min-height:1.5em;font-size:var(--text-sm);text-align:center;opacity:0;transition:opacity var(--duration) var(--ease)}.form-status.active{opacity:1}.form-status.success{color:var(--success)}.form-status.error{color:var(--destructive)}.hp-field{position:absolute!important;left:-10000px!important;top:auto!important;width:1px!important;height:1px!important;overflow:hidden!important;opacity:0!important;pointer-events:none!important}.turnstile-container{display:flex;justify-content:center}.site-footer{padding:var(--space-8) 0}.footer-inner{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--space-4);font-size:var(--text-sm);color:var(--muted-foreground)}.footer-links{display:flex;gap:var(--space-4)}.footer-inner a{display:inline-block;padding:var(--space-1) 0}.footer-inner a:hover{color:var(--foreground)}.js .fade-up{opacity:0;transform:translateY(12px);transition:opacity .5s var(--ease),transform .5s var(--ease)}.js .fade-up.visible{opacity:1;transform:none}.js .reveal{opacity:0;transform:translateY(24px);transition:opacity var(--duration-reveal) var(--ease-out) calc(var(--i, 0) * var(--stagger)),transform var(--duration-reveal) var(--ease-out) calc(var(--i, 0) * var(--stagger)),border-color var(--duration-slow) var(--ease-out),box-shadow var(--duration-slow) var(--ease-out)}.js .reveal.visible{opacity:1;transform:none}.js a.reveal.visible:hover{transform:translateY(-4px);transition-delay:0s}@media(max-width:768px){.container{padding:0 var(--space-4)}:root{--header-height: 96px}.header-inner{flex-wrap:wrap;align-content:center;column-gap:var(--space-4);row-gap:var(--space-1)}.site-nav{order:3;width:100%;margin-left:calc(-1 * var(--space-3))}.hero{padding:var(--space-12) 0 var(--space-16)}.hero-content{grid-template-columns:minmax(0,1fr);gap:0}.deck-table{z-index:3;height:300px}.deck{top:58%}.deck-card{--w: 260px;--h: 372px}.deck-front{gap:8px}.deck-top h3{font-size:1.15rem}.deck-text{font-size:.85rem}.project-grid{grid-template-columns:minmax(0,1fr)}.section{padding:var(--space-16) 0}.section-grid{grid-template-columns:minmax(0,1fr);gap:var(--space-6)}.section-head{position:static}.stack-row,.timeline-item,.field-row{grid-template-columns:minmax(0,1fr)}.stack-row{gap:var(--space-2)}}@media(max-width:360px){.header-inner{column-gap:var(--space-2)}.header-actions{gap:var(--space-1)}.site-nav{gap:0;margin-left:calc(-1 * var(--space-2))}.site-nav a{padding:var(--space-2)}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition-duration:.01ms!important;animation-duration:.01ms!important}.js .fade-up,.js .reveal{opacity:1;transform:none}.js .hero-text>*{animation:none}.toasty{opacity:0;transform:none}.project-video{display:none}.toasty.go{animation:toasty-fade 1.4s both}.text-swap{animation:none}}
