@font-face{font-family:Poppins;font-style:normal;font-weight:400;font-display:swap;src:url(../media/41e95f694c5c4549-s.3xzwb88tucl-q.woff2)format("woff2");unicode-range:U+900-97F,U+1CD0-1CF9,U+200C-200D,U+20A8,U+20B9,U+20F0,U+25CC,U+A830-A839,U+A8E0-A8FF,U+11B00-11B09}@font-face{font-family:Poppins;font-style:normal;font-weight:400;font-display:swap;src:url(../media/6c55a692938ebbbc-s.20csvlgbb63y1.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Poppins;font-style:normal;font-weight:400;font-display:swap;src:url(../media/a218039a3287bcfd-s.p.17e3l4txdrufi.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Poppins;font-style:normal;font-weight:500;font-display:swap;src:url(../media/bdc7e24a509eb931-s.0ewdtdf6ai7o-.woff2)format("woff2");unicode-range:U+900-97F,U+1CD0-1CF9,U+200C-200D,U+20A8,U+20B9,U+20F0,U+25CC,U+A830-A839,U+A8E0-A8FF,U+11B00-11B09}@font-face{font-family:Poppins;font-style:normal;font-weight:500;font-display:swap;src:url(../media/0da9c7f357bd9d4d-s.03ilua6xb7p2f.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Poppins;font-style:normal;font-weight:500;font-display:swap;src:url(../media/8e6fa89aa22d24ec-s.p.1bg6trwi21i5q.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Poppins;font-style:normal;font-weight:600;font-display:swap;src:url(../media/0a7740363b4d4863-s.2bakuypqc5dou.woff2)format("woff2");unicode-range:U+900-97F,U+1CD0-1CF9,U+200C-200D,U+20A8,U+20B9,U+20F0,U+25CC,U+A830-A839,U+A8E0-A8FF,U+11B00-11B09}@font-face{font-family:Poppins;font-style:normal;font-weight:600;font-display:swap;src:url(../media/5f9d24ebef5d5292-s.0fg7ryy-bp2x_.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Poppins;font-style:normal;font-weight:600;font-display:swap;src:url(../media/e2334d715941921e-s.p.2g9xiodaln20i.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Poppins;font-style:normal;font-weight:700;font-display:swap;src:url(../media/b53057dbf91a7acf-s.3a_7qwcscqi0t.woff2)format("woff2");unicode-range:U+900-97F,U+1CD0-1CF9,U+200C-200D,U+20A8,U+20B9,U+20F0,U+25CC,U+A830-A839,U+A8E0-A8FF,U+11B00-11B09}@font-face{font-family:Poppins;font-style:normal;font-weight:700;font-display:swap;src:url(../media/798ea22d9983e047-s.22w-t0ek6hrfw.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Poppins;font-style:normal;font-weight:700;font-display:swap;src:url(../media/47fe1b7cd6e6ed85-s.p.1n2oi-d4a-xww.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Poppins;font-style:normal;font-weight:800;font-display:swap;src:url(../media/99ce71e74c11bc20-s.43k37qsrz1u-w.woff2)format("woff2");unicode-range:U+900-97F,U+1CD0-1CF9,U+200C-200D,U+20A8,U+20B9,U+20F0,U+25CC,U+A830-A839,U+A8E0-A8FF,U+11B00-11B09}@font-face{font-family:Poppins;font-style:normal;font-weight:800;font-display:swap;src:url(../media/8cf1ea7b03cdeb83-s.3epu2aock-7p_.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Poppins;font-style:normal;font-weight:800;font-display:swap;src:url(../media/829ba4228c966254-s.p.0zvxjg5nywxta.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Poppins Fallback;src:local(Arial);ascent-override:93.62%;descent-override:31.21%;line-gap-override:8.92%;size-adjust:112.16%}.poppins_f91be8b-module__pOuvOq__className{font-family:Poppins,Poppins Fallback;font-style:normal}.poppins_f91be8b-module__pOuvOq__variable{--font-poppins:"Poppins", "Poppins Fallback"}
@theme inline{@keyframes accordion-down { from { height: 0; } to { height: var(--radix-accordion-content-height,var(--accordion-panel-height,auto)); } } @keyframes accordion-up { from { height: var(--radix-accordion-content-height,var(--accordion-panel-height,auto)); } to { height: 0; } }}@custom-variant data-open{&:where([data-state="open"]), &:where([data-open]:not([data-open="false"])) { @slot; }}@custom-variant data-closed{&:where([data-state="closed"]), &:where([data-closed]:not([data-closed="false"])) { @slot; }}@custom-variant data-checked{&:where([data-state="checked"]), &:where([data-checked]:not([data-checked="false"])) { @slot; }}@custom-variant data-unchecked{&:where([data-state="unchecked"]), &:where([data-unchecked]:not([data-unchecked="false"])) { @slot; }}@custom-variant data-selected{&:where([data-selected="true"]) { @slot; }}@custom-variant data-disabled{&:where([data-disabled="true"]), &:where([data-disabled]:not([data-disabled="false"])) { @slot; }}@custom-variant data-active{&:where([data-state="active"]), &:where([data-active]:not([data-active="false"])) { @slot; }}@custom-variant data-horizontal{&:where([data-orientation="horizontal"]) { @slot; }}@custom-variant data-vertical{&:where([data-orientation="vertical"]) { @slot; }}@utility no-scrollbar{-ms-overflow-style: none; scrollbar-width: none; &::-webkit-scrollbar { display: none; }}@property --scroll-fade-t{syntax:"<length-percentage>";inherits:false;initial-value:0}@property --scroll-fade-b{syntax:"<length-percentage>";inherits:false;initial-value:0}@property --scroll-fade-s{syntax:"<length-percentage>";inherits:false;initial-value:0}@property --scroll-fade-e{syntax:"<length-percentage>";inherits:false;initial-value:0}@property --scroll-fade-mask{syntax:"*";inherits:false}@theme inline{@keyframes scroll-fade-reveal-t { from { --scroll-fade-t: 0px; } to { --scroll-fade-t: var(--_scroll-fade-size-t,var(--scroll-fade-size,min(12%, calc(var(--spacing) * 10)))); } } @keyframes scroll-fade-reveal-b { from { --scroll-fade-b: var(--_scroll-fade-size-b,var(--scroll-fade-size,min(12%, calc(var(--spacing) * 10)))); } to { --scroll-fade-b: 0px; } } @keyframes scroll-fade-reveal-s { from { --scroll-fade-s: 0px; } to { --scroll-fade-s: var(--_scroll-fade-size-s,var(--scroll-fade-size,min(12%, calc(var(--spacing) * 10)))); } } @keyframes scroll-fade-reveal-e { from { --scroll-fade-e: var(--_scroll-fade-size-e,var(--scroll-fade-size,min(12%, calc(var(--spacing) * 10)))); } to { --scroll-fade-e: 0px; } }}@utility scroll-fade{--_scroll-fade-size-t: var(--scroll-fade-t-size,var(--scroll-fade-size,min(12%, calc(var(--spacing) * 10)))); --_scroll-fade-size-b: var(--scroll-fade-b-size,var(--scroll-fade-size,min(12%, calc(var(--spacing) * 10)))); --scroll-fade-block: linear-gradient(to bottom, transparent 0, #000 var(--scroll-fade-t,0px), #000 calc(100% - var(--scroll-fade-b,0px)), transparent 100%); -webkit-mask-image: var(--scroll-fade-mask,var(--scroll-fade-block)); mask-image: var(--scroll-fade-mask,var(--scroll-fade-block)); -webkit-mask-composite: source-in; mask-composite: intersect; -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; @supports (animation-timeline: scroll()) { animation: scroll-fade-reveal-t 1ms ease-in-out, scroll-fade-reveal-b 1ms ease-in-out; animation-timeline: scroll(self y), scroll(self y); animation-range: 0 var(--scroll-fade-reveal,calc(var(--spacing) * 24)), calc(100% - var(--scroll-fade-reveal,calc(var(--spacing) * 24))) 100%; animation-fill-mode: both; } @supports not (animation-timeline: scroll()) { --scroll-fade-t: var(--_scroll-fade-size-t); --scroll-fade-b: var(--_scroll-fade-size-b); }}@utility scroll-fade-y{--_scroll-fade-size-t: var(--scroll-fade-t-size,var(--scroll-fade-size,min(12%, calc(var(--spacing) * 10)))); --_scroll-fade-size-b: var(--scroll-fade-b-size,var(--scroll-fade-size,min(12%, calc(var(--spacing) * 10)))); --scroll-fade-block: linear-gradient(to bottom, transparent 0, #000 var(--scroll-fade-t,0px), #000 calc(100% - var(--scroll-fade-b,0px)), transparent 100%); -webkit-mask-image: var(--scroll-fade-mask,var(--scroll-fade-block)); mask-image: var(--scroll-fade-mask,var(--scroll-fade-block)); -webkit-mask-composite: source-in; mask-composite: intersect; -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; @supports (animation-timeline: scroll()) { animation: scroll-fade-reveal-t 1ms ease-in-out, scroll-fade-reveal-b 1ms ease-in-out; animation-timeline: scroll(self y), scroll(self y); animation-range: 0 var(--scroll-fade-reveal,calc(var(--spacing) * 24)), calc(100% - var(--scroll-fade-reveal,calc(var(--spacing) * 24))) 100%; animation-fill-mode: both; } @supports not (animation-timeline: scroll()) { --scroll-fade-t: var(--_scroll-fade-size-t); --scroll-fade-b: var(--_scroll-fade-size-b); }}@utility scroll-fade-x{--_scroll-fade-size-s: var(--scroll-fade-s-size,var(--scroll-fade-size,min(12%, calc(var(--spacing) * 10)))); --_scroll-fade-size-e: var(--scroll-fade-e-size,var(--scroll-fade-size,min(12%, calc(var(--spacing) * 10)))); --scroll-fade-inline: linear-gradient(to right, transparent 0, #000 var(--scroll-fade-s,0px), #000 calc(100% - var(--scroll-fade-e,0px)), transparent 100%); &:where([dir="rtl"], [dir="rtl"] *) { --scroll-fade-inline: linear-gradient(to left, transparent 0, #000 var(--scroll-fade-s,0px), #000 calc(100% - var(--scroll-fade-e,0px)), transparent 100%); } -webkit-mask-image: var(--scroll-fade-mask,var(--scroll-fade-inline)); mask-image: var(--scroll-fade-mask,var(--scroll-fade-inline)); -webkit-mask-composite: source-in; mask-composite: intersect; -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; @supports (animation-timeline: scroll()) { animation: scroll-fade-reveal-s 1ms ease-in-out, scroll-fade-reveal-e 1ms ease-in-out; animation-timeline: scroll(self inline), scroll(self inline); animation-range: 0 var(--scroll-fade-reveal,calc(var(--spacing) * 24)), calc(100% - var(--scroll-fade-reveal,calc(var(--spacing) * 24))) 100%; animation-fill-mode: both; } @supports not (animation-timeline: scroll()) { --scroll-fade-s: var(--_scroll-fade-size-s); --scroll-fade-e: var(--_scroll-fade-size-e); }}@utility scroll-fade-t{--_scroll-fade-size-t: var(--scroll-fade-t-size,var(--scroll-fade-size,min(12%, calc(var(--spacing) * 10)))); --scroll-fade-mask: linear-gradient(to bottom, transparent 0, #000 var(--scroll-fade-t,0px), #000 100%); -webkit-mask-image: var(--scroll-fade-mask); mask-image: var(--scroll-fade-mask); -webkit-mask-composite: source-in; mask-composite: intersect; -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; @supports (animation-timeline: scroll()) { animation: scroll-fade-reveal-t 1ms ease-in-out; animation-timeline: scroll(self y); animation-range: 0 var(--scroll-fade-reveal,calc(var(--spacing) * 24)); animation-fill-mode: both; } @supports not (animation-timeline: scroll()) { --scroll-fade-t: var(--_scroll-fade-size-t); }}@utility scroll-fade-b{--_scroll-fade-size-b: var(--scroll-fade-b-size,var(--scroll-fade-size,min(12%, calc(var(--spacing) * 10)))); --scroll-fade-mask: linear-gradient(to bottom, #000 0, #000 calc(100% - var(--scroll-fade-b,0px)), transparent 100%); -webkit-mask-image: var(--scroll-fade-mask); mask-image: var(--scroll-fade-mask); -webkit-mask-composite: source-in; mask-composite: intersect; -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; @supports (animation-timeline: scroll()) { animation: scroll-fade-reveal-b 1ms ease-in-out; animation-timeline: scroll(self y); animation-range: calc(100% - var(--scroll-fade-reveal,calc(var(--spacing) * 24))) 100%; animation-fill-mode: both; } @supports not (animation-timeline: scroll()) { --scroll-fade-b: var(--_scroll-fade-size-b); }}@utility scroll-fade-l{--_scroll-fade-size-s: var(--scroll-fade-s-size,var(--scroll-fade-size,min(12%, calc(var(--spacing) * 10)))); --scroll-fade-mask: linear-gradient(to right, transparent 0, #000 var(--scroll-fade-s,0px), #000 100%); -webkit-mask-image: var(--scroll-fade-mask); mask-image: var(--scroll-fade-mask); -webkit-mask-composite: source-in; mask-composite: intersect; -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; @supports (animation-timeline: scroll()) { animation: scroll-fade-reveal-s 1ms ease-in-out; animation-timeline: scroll(self x); animation-range: 0 var(--scroll-fade-reveal,calc(var(--spacing) * 24)); animation-fill-mode: both; } @supports not (animation-timeline: scroll()) { --scroll-fade-s: var(--_scroll-fade-size-s); }}@utility scroll-fade-r{--_scroll-fade-size-e: var(--scroll-fade-e-size,var(--scroll-fade-size,min(12%, calc(var(--spacing) * 10)))); --scroll-fade-mask: linear-gradient(to right, #000 0, #000 calc(100% - var(--scroll-fade-e,0px)), transparent 100%); -webkit-mask-image: var(--scroll-fade-mask); mask-image: var(--scroll-fade-mask); -webkit-mask-composite: source-in; mask-composite: intersect; -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; @supports (animation-timeline: scroll()) { animation: scroll-fade-reveal-e 1ms ease-in-out; animation-timeline: scroll(self x); animation-range: calc(100% - var(--scroll-fade-reveal,calc(var(--spacing) * 24))) 100%; animation-fill-mode: both; } @supports not (animation-timeline: scroll()) { --scroll-fade-e: var(--_scroll-fade-size-e); }}@utility scroll-fade-s{--_scroll-fade-size-s: var(--scroll-fade-s-size,var(--scroll-fade-size,min(12%, calc(var(--spacing) * 10)))); --scroll-fade-mask: linear-gradient(to right, transparent 0, #000 var(--scroll-fade-s,0px), #000 100%); &:where([dir="rtl"], [dir="rtl"] *) { --scroll-fade-mask: linear-gradient(to left, transparent 0, #000 var(--scroll-fade-s,0px), #000 100%); } -webkit-mask-image: var(--scroll-fade-mask); mask-image: var(--scroll-fade-mask); -webkit-mask-composite: source-in; mask-composite: intersect; -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; @supports (animation-timeline: scroll()) { animation: scroll-fade-reveal-s 1ms ease-in-out; animation-timeline: scroll(self inline); animation-range: 0 var(--scroll-fade-reveal,calc(var(--spacing) * 24)); animation-fill-mode: both; } @supports not (animation-timeline: scroll()) { --scroll-fade-s: var(--_scroll-fade-size-s); }}@utility scroll-fade-e{--_scroll-fade-size-e: var(--scroll-fade-e-size,var(--scroll-fade-size,min(12%, calc(var(--spacing) * 10)))); --scroll-fade-mask: linear-gradient(to right, #000 0, #000 calc(100% - var(--scroll-fade-e,0px)), transparent 100%); &:where([dir="rtl"], [dir="rtl"] *) { --scroll-fade-mask: linear-gradient(to left, #000 0, #000 calc(100% - var(--scroll-fade-e,0px)), transparent 100%); } -webkit-mask-image: var(--scroll-fade-mask); mask-image: var(--scroll-fade-mask); -webkit-mask-composite: source-in; mask-composite: intersect; -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; @supports (animation-timeline: scroll()) { animation: scroll-fade-reveal-e 1ms ease-in-out; animation-timeline: scroll(self inline); animation-range: calc(100% - var(--scroll-fade-reveal,calc(var(--spacing) * 24))) 100%; animation-fill-mode: both; } @supports not (animation-timeline: scroll()) { --scroll-fade-e: var(--_scroll-fade-size-e); }}@utility scroll-fade-*{--scroll-fade-size: calc(var(--spacing) * --value(integer)); --scroll-fade-size: --value([length], [percentage]);}@utility scroll-fade-t-*{--scroll-fade-t-size: calc(var(--spacing) * --value(integer)); --scroll-fade-t-size: --value([length], [percentage]);}@utility scroll-fade-b-*{--scroll-fade-b-size: calc(var(--spacing) * --value(integer)); --scroll-fade-b-size: --value([length], [percentage]);}@utility scroll-fade-s-*{--scroll-fade-s-size: calc(var(--spacing) * --value(integer)); --scroll-fade-s-size: --value([length], [percentage]);}@utility scroll-fade-e-*{--scroll-fade-e-size: calc(var(--spacing) * --value(integer)); --scroll-fade-e-size: --value([length], [percentage]);}@utility scroll-fade-none{--scroll-fade-mask: none;}@property --shimmer-angle{syntax:"<angle>";inherits:true;initial-value:20deg}@property --shimmer-image{syntax:"*";inherits:false}@property --shimmer-text-fill{syntax:"*";inherits:false}@theme inline{@keyframes tw-shimmer { from { background-position: 100% 0; } to { background-position: 0 0; } }}@utility shimmer{--_spread: var(--shimmer-spread,calc(3ch + 40px)); --_base: currentColor; --_highlight: var(--shimmer-color,oklch(from currentColor l c h / calc(alpha* .2))); background-image: var(--shimmer-image,linear-gradient(calc(90deg + var(--shimmer-angle)), var(--_base) calc(50% - var(--_spread)), color-mix(in oklch, var(--_highlight), var(--_base) 50%) calc(50% - var(--_spread) * .5), var(--_highlight) 50%, color-mix(in oklch, var(--_highlight), var(--_base) 50%) calc(50% + var(--_spread) * .5), var(--_base) calc(50% + var(--_spread)))); background-repeat: no-repeat; background-size: calc(200% + var(--_spread) * 2) 100%; background-position: 0 0; background-clip: text; -webkit-background-clip: text; -webkit-text-fill-color: var(--shimmer-text-fill,transparent); animation: tw-shimmer var(--shimmer-duration,2s) linear infinite; @variant dark { --_highlight: var(--shimmer-color,oklch(from currentColor max(.8, calc(l + .4)) c h / calc(alpha + .4))); } &:where([dir="rtl"], [dir="rtl"] *) { animation-direction: reverse; }}@utility shimmer-once{animation-iteration-count: 1;}@utility shimmer-reverse{animation-direction: reverse;}@utility shimmer-none{--shimmer-image: none; --shimmer-text-fill: currentColor;}@utility shimmer-color-*{--shimmer-color: --value(--color, [color]); --shimmer-color: color-mix(in oklch, --value(--color, [color]) calc(--modifier(integer) * 1%), transparent);}@utility shimmer-duration-*{--shimmer-duration: calc(--value(integer) * 1ms);}@utility shimmer-spread-*{--shimmer-spread: calc(var(--spacing) * --value(integer)); --shimmer-spread: --value([length], [percentage]);}@utility shimmer-angle-*{--shimmer-angle: calc(--value(integer) * 1deg);}@media (prefers-reduced-motion:reduce){.shimmer{-webkit-text-fill-color:currentColor;background-image:none;animation:none}}
:root{--cream:#f5f4f0;--white:#fff;--ink:#090909;--charcoal:#454540;--line:#c9c8c1;--mint:#9fc;--sky:#7bbbff;--pink:#f9c;--peach:#fc9;--background:var(--cream);--foreground:var(--ink);--card:var(--white);--card-foreground:var(--ink);--popover:var(--white);--popover-foreground:var(--ink);--primary:var(--mint);--primary-foreground:var(--ink);--secondary:var(--sky);--secondary-foreground:var(--ink);--muted:#efeeea;--muted-foreground:var(--charcoal);--accent:var(--pink);--accent-foreground:var(--ink);--destructive:#ba1a1a;--border:var(--ink);--input:var(--line);--ring:var(--sky);--radius:.8rem;--sidebar:var(--cream);--sidebar-foreground:var(--ink);--sidebar-primary:var(--mint);--sidebar-primary-foreground:var(--ink);--sidebar-accent:var(--sky);--sidebar-accent-foreground:var(--ink);--sidebar-border:var(--ink);--sidebar-ring:var(--sky)}.dark,.portfolio-page[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--cream:#11110f;--white:#20201d;--ink:#f5f4f0;--charcoal:#c9c8c1;--line:#55554f;--background:var(--cream);--foreground:var(--ink);--card:var(--white);--card-foreground:var(--ink);--popover:var(--white);--popover-foreground:var(--ink);--primary:#9fc;--primary-foreground:#090909;--secondary:#7bbbff;--secondary-foreground:#090909;--muted:#32322e;--muted-foreground:#d3d2cc;--accent:#f9c;--accent-foreground:#090909;--destructive:#ff6b63;--border:var(--ink);--input:var(--line);--ring:#7bbbff;--sidebar:var(--white);--sidebar-foreground:var(--ink);--sidebar-primary:#9fc;--sidebar-primary-foreground:#090909;--sidebar-accent:#7bbbff;--sidebar-accent-foreground:#090909;--sidebar-border:var(--ink);--sidebar-ring:#7bbbff}*{box-sizing:border-box}html{scroll-behavior:smooth}body{color:var(--ink);background:var(--cream);font-family:var(--font-poppins), Arial, sans-serif;margin:0;font-size:16px}button,input,textarea{font:inherit}.portfolio-page{min-height:100vh;color:var(--ink);background:var(--cream);padding:36px;position:relative;overflow:hidden}.portfolio-shell{grid-template-columns:280px 1fr;align-items:stretch;gap:24px;width:min(1180px,100%);min-height:calc(100vh - 72px);margin:auto;display:grid}.skip-link{z-index:100;border:1px solid var(--ink);background:var(--mint);border-radius:10px;padding:10px 14px;font-weight:700;position:fixed;top:-100px;left:24px}.skip-link:focus{top:20px}.confetti{border:1px solid var(--ink);border-radius:50%;width:10px;height:10px;position:absolute}.dot-a{background:var(--pink);top:22px;left:9%}.dot-b{background:var(--peach);top:18%;right:2%}.dot-c{background:var(--sky);bottom:4%;left:2%}.profile-sidebar,.content-panel{border:1px solid var(--ink);background:var(--white);border-radius:20px}.profile-sidebar{text-align:center;height:100%;padding:24px}.avatar-wrap{width:166px;height:190px;margin:0 auto 22px;position:relative}.avatar-wrap img{object-fit:cover;object-position:50% 42%;filter:grayscale()contrast(1.08);border:1px solid var(--ink);border-radius:16px;width:100%;height:100%}.availability{border:1px solid var(--ink);background:var(--white);border-radius:999px;width:max-content;padding:4px 9px;font-size:.58rem;font-weight:700;position:absolute;bottom:8px;left:50%;transform:translate(-50%)}.availability i{background:var(--mint);border-radius:50%;width:6px;height:6px;margin-right:5px;display:inline-block}.profile-sidebar h1{letter-spacing:-.04em;margin:0;font-size:1.65rem;font-weight:700;line-height:1.08}.role{border:1px solid var(--ink);background:var(--sky);text-transform:uppercase;border-radius:999px;width:max-content;max-width:100%;margin:14px auto 24px;padding:7px 12px;font-size:.66rem;font-weight:700}.sidebar-details{border-block:1px solid var(--line);text-align:left;gap:13px;padding-block:20px;display:grid}.sidebar-details>div{grid-template-columns:40px 1fr;align-items:center;gap:10px;display:grid}.detail-icon{border:1px solid var(--ink);border-radius:10px;place-items:center;width:38px;height:38px;display:grid}.peach{background:var(--peach)}.sky{background:var(--sky)}.mint{background:var(--mint)}.pink{background:var(--pink)}.sidebar-details p{min-width:0;margin:0}.sidebar-details small,.sidebar-details strong{display:block}.sidebar-details small{color:var(--charcoal);text-transform:uppercase;font-size:.58rem;font-weight:700}.sidebar-details strong{text-overflow:ellipsis;white-space:nowrap;font-size:.72rem;overflow:hidden}.social-row{justify-content:center;gap:9px;margin-top:20px;display:flex}.social-row button,.social-row a{border:1px solid var(--ink);background:var(--cream);width:34px;height:34px;color:var(--ink);cursor:pointer;border-radius:50%;place-items:center;display:grid}.sidebar-note{color:var(--charcoal);margin:16px 0 0;font-size:.62rem;line-height:1.5}.theme-toggle{position:relative;overflow:hidden}.theme-toggle svg{transition:opacity .35s,transform .48s cubic-bezier(.2,.8,.25,1);position:absolute}.theme-moon{opacity:1;transform:rotate(0)scale(1)}.theme-sun{opacity:0;transform:rotate(-100deg)scale(.55)}.dark .theme-moon,[data-theme=dark] .theme-moon{opacity:0;transform:rotate(100deg)scale(.55)}.dark .theme-sun,[data-theme=dark] .theme-sun{opacity:1;transform:rotate(0)scale(1)}.content-panel{min-width:0;overflow:hidden}.site-tabs{display:block}.tab-bar{border-bottom:1px solid var(--ink);background:var(--cream);border-radius:0;justify-content:flex-end;gap:5px;width:100%;height:72px;padding:0 28px;display:flex}.tab-bar button{--tab-accent:var(--mint);height:calc(100% - 16px);color:var(--charcoal);background:0 0;border:2px solid #0000;border-radius:12px;margin-block:8px;padding:0 17px;font-size:.78rem;font-weight:600;transition:color .28s,border-color .38s,background-color .38s,box-shadow .38s,transform .28s}.tab-bar button:nth-child(2){--tab-accent:var(--sky)}.tab-bar button:nth-child(3){--tab-accent:var(--pink)}.tab-bar button:nth-child(4){--tab-accent:var(--peach)}.tab-bar button[data-state=active],.tab-bar button[data-active]{color:var(--ink);border-color:var(--tab-accent);background:color-mix(in srgb, var(--tab-accent) 14%, transparent);box-shadow:0 0 0 3px color-mix(in srgb, var(--tab-accent) 22%, transparent);transform:translateY(-1px)}.tab-content{outline:none;margin:0;padding:36px}.section-title{margin-bottom:25px}.section-title h2{letter-spacing:-.05em;margin:0;font-size:clamp(2.2rem,4vw,3.3rem);font-weight:700}.section-title i{background:var(--mint);border-radius:99px;width:42px;height:5px;margin-top:12px;display:block}.about-copy{max-width:760px;color:var(--charcoal);line-height:1.75}.about-copy p{margin:0 0 16px}.subheading{margin:40px 0 18px;font-size:1.45rem}.service-grid{grid-template-columns:1fr 1fr;gap:16px;display:grid}.service-grid article{border:1px solid var(--ink);background:var(--cream);border-radius:16px;grid-template-columns:50px 1fr;gap:15px;padding:20px;display:grid}.service-icon{border:1px solid var(--ink);border-radius:12px;place-items:center;width:48px;height:48px;display:grid}.service-grid h4{margin:0 0 6px;font-size:.95rem}.service-grid p{color:var(--charcoal);margin:0;font-size:.77rem;line-height:1.6}.skill-cloud{flex-wrap:wrap;gap:10px;display:flex}.skill-cloud span{border:1px solid var(--ink);border-radius:999px;padding:9px 13px;font-size:.72rem;font-weight:700}.skill-0{background:var(--mint)}.skill-1{background:var(--sky)}.skill-2{background:var(--peach)}.skill-3{background:var(--pink)}.timeline-title{align-items:center;gap:10px;margin:34px 0 18px;font-size:1.25rem;display:flex}.timeline-title span{border:1px solid var(--ink);background:var(--sky);border-radius:10px;place-items:center;width:38px;height:38px;display:grid}.timeline{border-left:1px solid var(--ink);margin-left:18px;padding-left:34px;position:relative}.timeline article{padding:0 0 27px;position:relative}.timeline article>i{border:1px solid var(--ink);background:var(--mint);border-radius:50%;width:13px;height:13px;position:absolute;top:5px;left:-41px}.timeline span{color:#55664d;font-size:.7rem;font-weight:700}.timeline h4{margin:4px 0;font-size:1rem}.timeline p{color:var(--charcoal);margin:0;font-size:.8rem;line-height:1.6}.cv-button{border-color:var(--ink);background:var(--cream);margin-top:8px}.portfolio-grid,.blog-grid{grid-template-columns:1fr 1fr;gap:20px;display:grid}.portfolio-card,.blog-grid article{border:1px solid var(--ink);background:var(--cream);border-radius:16px;overflow:hidden}.project-preview{background:var(--sky);height:210px;padding:24px}.preview-1{background:var(--peach)}.window-bar{background:var(--ink);gap:4px;height:25px;padding:8px;display:flex}.window-bar i{border:1px solid var(--white);border-radius:50%;width:6px;height:6px}.window-content{background:var(--white);height:calc(100% - 25px);padding:22px}.window-content small,.window-content strong{display:block}.window-content small{margin-bottom:17px;font-size:.56rem;font-weight:700}.window-content strong{font-size:1.25rem}.window-content span{background:var(--line);width:80%;height:3px;margin-top:22px;display:block}.window-content span:last-child{width:55%;margin-top:7px}.project-info{padding:20px}.project-info>p{color:var(--charcoal);text-transform:uppercase;margin:0;font-size:.66rem;font-weight:700}.project-info h3{margin:9px 0;font-size:1.2rem}.project-info>span{color:var(--charcoal);font-size:.78rem;line-height:1.55}.project-info ul{gap:7px;margin:17px 0 0;padding:0;list-style:none;display:flex}.project-info li{border:1px solid var(--ink);background:var(--white);border-radius:999px;padding:4px 8px;font-size:.57rem;font-weight:700}.project-image-wrap{border-bottom:1px solid var(--ink);background:var(--cream);padding:0;overflow:hidden}.project-image-wrap img{object-fit:cover;object-position:top center;width:100%;height:100%;display:block}.project-image-wrap img.logo-preview{object-fit:contain;object-position:center;background:var(--white);padding:14px}.blog-grid article{background:var(--white);padding-bottom:22px}.note-cover{border-bottom:1px solid var(--ink);background:var(--pink);justify-content:space-between;align-items:flex-end;height:190px;padding:25px;display:flex}.cover-1{background:var(--sky)}.note-cover span{font-size:.67rem;font-weight:700}.blog-grid article>p,.blog-grid article>h3,.blog-grid article>span{margin-inline:22px}.blog-grid article>p{color:var(--charcoal);margin-top:19px;margin-bottom:6px;font-size:.65rem}.blog-grid article>h3{margin-top:0;margin-bottom:10px;font-size:1.1rem}.blog-grid article>span{color:var(--charcoal);font-size:.77rem;line-height:1.6}.contact-layout{max-width:680px}.contact-layout form{border:1px solid var(--ink);background:var(--white);border-radius:16px;gap:13px;padding:30px;display:grid}.contact-layout form h3{margin:0 0 7px;font-size:1.25rem}.form-row{grid-template-columns:1fr 1fr;gap:13px;display:grid}.contact-layout input,.contact-layout textarea{border-color:var(--ink);background:var(--cream)}.contact-layout textarea{resize:vertical}.send-button{background:var(--mint);width:max-content;color:var(--ink)}@media (max-width:900px){.portfolio-page{padding:18px}.portfolio-shell{grid-template-columns:1fr}.profile-sidebar{text-align:left;grid-template-columns:auto 1fr;column-gap:22px;display:grid;position:static}.avatar-wrap{grid-row:1/4;margin:0}.profile-sidebar h1{align-self:end}.role{margin:10px 0 15px}.sidebar-details,.social-row,.sidebar-note{grid-column:1/-1}.social-row{justify-content:flex-start}.sidebar-note{text-align:left}}@media (max-width:650px){.portfolio-page{padding:10px}.profile-sidebar{padding:18px}.avatar-wrap{width:112px;height:135px}.profile-sidebar h1{font-size:1.25rem}.role{font-size:.56rem}.tab-bar{justify-content:flex-start;height:auto;padding:8px;overflow-x:auto}.tab-bar button{min-width:max-content;height:48px;margin-block:0;padding:0 13px}.tab-content{padding:24px 18px 30px}.service-grid,.portfolio-grid,.blog-grid,.contact-layout{grid-template-columns:1fr}.service-grid article{grid-template-columns:44px 1fr}.service-icon{width:42px;height:42px}.form-row{grid-template-columns:1fr}.section-title h2{font-size:2.25rem}}@media (max-width:420px){.profile-sidebar{text-align:center;display:block}.avatar-wrap{width:145px;height:165px;margin:0 auto 18px}.role{margin-inline:auto}.sidebar-details{margin-top:20px}.social-row{justify-content:center}.sidebar-note{text-align:center}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}.admin-page{background:var(--cream);min-height:100vh;padding:32px}.admin-shell{border:1px solid var(--ink);background:var(--white);border-radius:20px;width:min(1100px,100%);margin:0 auto;overflow:hidden}.admin-header{border-bottom:1px solid var(--ink);background:var(--cream);justify-content:space-between;align-items:center;min-height:68px;padding:14px 24px;display:flex}.admin-back{color:var(--ink);align-items:center;gap:8px;font-size:.85rem;font-weight:700;text-decoration:none;display:inline-flex}.admin-badge{border:1px solid var(--ink);background:var(--mint);text-transform:uppercase;border-radius:999px;padding:7px 11px;font-size:.7rem;font-weight:700}.admin-intro{border-bottom:1px solid var(--line);padding:42px 42px 30px}.admin-intro>p{color:var(--charcoal);letter-spacing:.08em;text-transform:uppercase;margin:0 0 8px;font-size:.74rem;font-weight:700}.admin-intro h1{letter-spacing:-.06em;margin:0;font-size:clamp(2.3rem,5vw,4.4rem);line-height:1}.admin-intro>span{color:var(--charcoal);margin-top:15px;line-height:1.6;display:block}.admin-form{grid-template-columns:minmax(0,1.15fr) minmax(280px,.85fr);gap:36px;padding:34px 42px 42px;display:grid}.admin-fields{gap:24px;display:grid}.admin-field{gap:9px;display:grid}.admin-label-row{justify-content:space-between;gap:16px;display:flex}.admin-label-row>span{color:var(--charcoal);font-size:.72rem}.admin-field input,.admin-field textarea{border-color:var(--ink);background:var(--cream);min-height:48px;font-size:1rem}.admin-field textarea{resize:vertical;min-height:180px;padding-block:13px}.admin-image-field{flex-direction:column;gap:9px;display:flex}.admin-dropzone{border:1px dashed var(--ink);background:var(--sky);cursor:pointer;text-align:center;border-radius:16px;flex-direction:column;justify-content:center;align-items:center;gap:10px;min-height:340px;padding:24px;display:flex;overflow:hidden}.admin-dropzone strong{font-size:1rem}.admin-dropzone>span{font-size:.75rem}.admin-dropzone.has-image{background:var(--ink);border-style:solid;padding:0;position:relative}.admin-dropzone img{object-fit:cover;width:100%;height:100%;min-height:340px}.admin-change-image{border:1px solid var(--ink);background:var(--white);border-radius:999px;padding:8px 11px;font-weight:700;position:absolute;bottom:12px;right:12px}.admin-file-input{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.admin-file-name{color:var(--charcoal);text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:.75rem;overflow:hidden}.admin-actions{align-items:center;gap:16px;display:flex}.admin-actions p{color:var(--charcoal);margin:0;font-size:.72rem;line-height:1.5}.admin-submit{border:1px solid var(--ink);background:var(--mint);min-height:46px;color:var(--ink);padding-inline:18px;font-weight:700}.admin-spinner{animation:.8s linear infinite admin-spin}.admin-message{border:1px solid var(--ink);border-radius:12px;align-items:center;gap:9px;padding:13px 15px;font-size:.85rem;font-weight:600;display:flex}.admin-message.success{background:var(--mint)}.admin-message.error{background:#ffd3cf}@keyframes admin-spin{to{transform:rotate(360deg)}}@media (max-width:760px){.admin-page{padding:10px}.admin-intro{padding:30px 20px 24px}.admin-form{grid-template-columns:1fr;padding:24px 20px 30px}.admin-image-field{grid-row:1}.admin-dropzone,.admin-dropzone img{min-height:260px}.admin-actions{flex-direction:column;align-items:flex-start}}.cv-button{border:1px solid var(--ink);width:max-content;min-height:40px;color:var(--ink);border-radius:8px;align-items:center;gap:8px;padding:0 14px;font-size:.78rem;font-weight:700;text-decoration:none;display:inline-flex}.project-story{gap:10px;margin:16px 0 0;display:grid}.project-story div{grid-template-columns:58px 1fr;gap:9px;display:grid}.project-story dt{color:var(--ink);text-transform:uppercase;padding-top:2px;font-size:.62rem;font-weight:800}.project-story dd{color:var(--charcoal);margin:0;font-size:.76rem;line-height:1.55}.project-info ul{flex-wrap:wrap}.project-links{flex-wrap:wrap;gap:8px;margin-top:18px;display:flex}.project-links a,.project-links span{border:1px solid var(--ink);border-radius:8px;align-items:center;gap:7px;min-height:36px;padding:0 11px;font-size:.7rem;font-weight:800;text-decoration:none;display:inline-flex}.project-links a{background:var(--mint);color:var(--ink)}.project-links span{border-color:var(--line);color:#72756e;background:#f3f1e9}.contact-honeypot{width:1px!important;height:1px!important;position:absolute!important;left:-10000px!important}.contact-status{border:1px solid var(--ink);border-radius:9px;align-items:center;gap:8px;margin:4px 0 0;padding:12px;font-size:.78rem;font-weight:700;display:flex}.contact-status.success{background:var(--mint)}.contact-status.error{background:#ffd3cf}.admin-field-grid{grid-template-columns:1fr 1fr;gap:16px;display:grid}.admin-library{border-top:1px solid var(--ink);padding:34px 42px 42px}.admin-section-heading{justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:20px;display:flex}.admin-section-heading p{color:var(--charcoal);letter-spacing:.08em;text-transform:uppercase;margin:0 0 4px;font-size:.68rem;font-weight:800}.admin-section-heading h2{margin:0;font-size:1.8rem}.admin-section-heading>span{color:var(--charcoal);font-size:.72rem}.admin-project-list{gap:10px;display:grid}.admin-project-list article{border:1px solid var(--ink);background:var(--cream);border-radius:12px;grid-template-columns:76px 1fr auto;align-items:center;gap:14px;padding:10px;display:grid}.admin-project-list img{border:1px solid var(--ink);object-fit:cover;border-radius:8px;width:76px;height:58px}.admin-project-list small,.admin-project-list strong{display:block}.admin-project-list small{color:var(--charcoal);text-transform:uppercase;margin-bottom:4px;font-size:.64rem}.admin-project-actions{gap:6px;display:flex}.admin-project-actions button{border-color:var(--ink)}.admin-project-actions svg{width:16px;height:16px}.admin-message-list{gap:12px;display:grid}.admin-message-list article{border:1px solid var(--ink);background:var(--cream);border-radius:12px;padding:18px}.admin-message-list article>div{justify-content:space-between;gap:14px;display:flex}.admin-message-list span,.admin-message-list time{color:var(--charcoal);font-size:.7rem}.admin-message-list p{white-space:pre-wrap;margin:12px 0;font-size:.8rem;line-height:1.6}.admin-empty{color:var(--charcoal)}.admin-delete-confirm{color:#fff;background:#d93b32}@media (max-width:650px){.profile-sidebar{text-align:left;grid-template-columns:72px 1fr;column-gap:13px;padding:13px}.avatar-wrap{border-radius:12px;grid-row:1/4;width:72px;height:88px;margin:0}.profile-sidebar h1{align-self:end;font-size:1.08rem;line-height:1.02}.role{margin:6px 0;padding:5px 8px;font-size:.48rem}.sidebar-details{display:none}.social-row{grid-column:2;justify-content:flex-start;gap:6px;margin:0}.social-row a{width:29px;height:29px}.content-panel{margin-top:8px}.project-story div{grid-template-columns:52px 1fr}}@media (max-width:420px){.profile-sidebar{text-align:left;grid-template-columns:72px 1fr;display:grid}.avatar-wrap{width:72px;height:88px;margin:0}.role{margin:6px 0}.social-row{justify-content:flex-start}.admin-field-grid{grid-template-columns:1fr}.admin-library{padding:26px 18px}.admin-project-list article{grid-template-columns:56px 1fr}.admin-project-list img{width:56px;height:48px}.admin-project-actions{grid-column:1/-1;justify-content:flex-end}.admin-message-list article>div{flex-direction:column}}@keyframes opening-rise{0%{opacity:0;transform:translateY(16px)scale(.985)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes tab-enter{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes confetti-drift{0%,to{transform:translate(0,0)rotate(0)}50%{transform:translateY(-8px)rotate(10deg)}}@keyframes success-pop{0%{opacity:0;transform:scale(.72)}55%{transform:scale(1.12)}to{opacity:1;transform:scale(1)}}.avatar-wrap{animation:.62s cubic-bezier(.2,.75,.25,1) both opening-rise}.profile-sidebar h1{animation:.58s cubic-bezier(.2,.75,.25,1) 80ms both opening-rise}.profile-sidebar .role{animation:.58s cubic-bezier(.2,.75,.25,1) .14s both opening-rise}.sidebar-details{animation:.58s cubic-bezier(.2,.75,.25,1) .2s both opening-rise}.social-row{animation:.58s cubic-bezier(.2,.75,.25,1) .28s both opening-rise}.tab-bar{animation:.55s cubic-bezier(.2,.75,.25,1) .12s both opening-rise}.tab-content[data-state=active]{animation:.42s cubic-bezier(.2,.72,.25,1) both tab-enter}.tab-bar button{position:relative}.tab-bar button:after{content:"";background:var(--tab-accent);transform-origin:50%;border-radius:999px;height:3px;transition:transform .35s cubic-bezier(.2,.75,.25,1),background-color .35s;position:absolute;bottom:5px;left:16px;right:16px;transform:scaleX(0)}.tab-bar button[data-state=active]:after,.tab-bar button[data-active]:after{transform:scaleX(.42)}.reveal-on-scroll{opacity:1;transition:opacity .55s,transform .55s cubic-bezier(.2,.75,.25,1);transform:translateY(0)}.reveal-on-scroll.is-visible,.tab-content[data-state=active] .reveal-on-scroll{opacity:1;transform:translateY(0)}.portfolio-card{will-change:transform;transition-property:opacity,transform,box-shadow;transition-duration:.55s,.55s,.28s;transition-timing-function:ease,cubic-bezier(.2,.75,.25,1),ease}.portfolio-card.is-visible:hover{transform:translateY(-6px);box-shadow:7px 9px #1f1f1d21}.project-image-wrap img{transition:transform .55s cubic-bezier(.2,.75,.25,1)}.portfolio-card:hover .project-image-wrap img{transform:scale(1.035)}.portfolio-card .project-info li{opacity:1;transition:opacity .3s,transform .3s;transform:translateY(0)}.portfolio-card.is-visible .project-info li,.tab-content[data-state=active] .portfolio-card .project-info li{opacity:1;transform:translateY(0)}.portfolio-card.is-visible .project-info li:first-child,.tab-content[data-state=active] .portfolio-card .project-info li:first-child{transition-delay:.22s}.portfolio-card.is-visible .project-info li:nth-child(2),.tab-content[data-state=active] .portfolio-card .project-info li:nth-child(2){transition-delay:.28s}.portfolio-card.is-visible .project-info li:nth-child(3),.tab-content[data-state=active] .portfolio-card .project-info li:nth-child(3){transition-delay:.34s}.portfolio-card.is-visible .project-info li:nth-child(4),.tab-content[data-state=active] .portfolio-card .project-info li:nth-child(4){transition-delay:.4s}.project-links a svg{transition:transform .22s}.project-links a:hover svg{transform:translate(2px,-2px)}.motion-timeline{border-left:0}.motion-timeline:before{content:"";background:var(--ink);transform-origin:top;width:1px;transition:transform .75s cubic-bezier(.2,.75,.25,1) .15s;position:absolute;top:0;bottom:0;left:0;transform:scaleY(1)}.motion-timeline.is-visible:before,.tab-content[data-state=active] .motion-timeline:before{transform:scaleY(1)}.motion-timeline article{opacity:1;transition:opacity .42s,transform .42s;transform:translate(0)}.motion-timeline.is-visible article,.tab-content[data-state=active] .motion-timeline article{opacity:1;transform:translate(0)}.motion-timeline.is-visible article:first-child,.tab-content[data-state=active] .motion-timeline article:first-child{transition-delay:.2s}.motion-timeline.is-visible article:nth-child(2),.tab-content[data-state=active] .motion-timeline article:nth-child(2){transition-delay:.3s}.motion-timeline.is-visible article:nth-child(3),.tab-content[data-state=active] .motion-timeline article:nth-child(3){transition-delay:.4s}.motion-timeline.is-visible article:nth-child(4),.tab-content[data-state=active] .motion-timeline article:nth-child(4){transition-delay:.5s}.contact-status.success svg{animation:.48s cubic-bezier(.2,.8,.25,1) both success-pop}.contact-status.success svg path,.contact-status.success svg polyline{stroke-dasharray:32;stroke-dashoffset:32px;animation:.65s .18s forwards contact-check-draw}@keyframes contact-check-draw{to{stroke-dashoffset:0}}.confetti{animation:4.8s ease-in-out infinite confetti-drift}.dot-b{animation-delay:-1.6s}.dot-c{animation-delay:-3.2s}.theme-switching *,.theme-switching :before,.theme-switching :after{transition-property:color,background-color,border-color,box-shadow,fill,stroke!important;transition-duration:.55s!important;transition-timing-function:cubic-bezier(.2,.75,.25,1)!important}.dark .project-links span,[data-theme=dark] .project-links span{border-color:var(--line);color:var(--charcoal);background:#2a2a26}.dark .admin-message.error,.dark .contact-status.error,[data-theme=dark] .contact-status.error{background:#572a27}.admin-header-actions{align-items:center;gap:10px;display:flex}.admin-logout{border:1px solid var(--ink);color:inherit;font:inherit;cursor:pointer;background:0 0;border-radius:999px;padding:8px 13px;font-size:.72rem;font-weight:700}.admin-login-page{background:var(--cream);min-height:100vh;color:var(--ink);place-items:center;padding:24px;display:grid}.admin-login-card{border:1px solid var(--ink);background:var(--paper);border-radius:22px;width:min(430px,100%);padding:34px;box-shadow:8px 10px #1f1f1d24}.admin-login-kicker{color:var(--blue);letter-spacing:.12em;text-transform:uppercase;margin:34px 0 4px;font-size:.72rem;font-weight:800}.admin-login-card h1{margin:0 0 24px;font-size:clamp(2rem,8vw,3rem);line-height:1}.admin-login-form{gap:12px;display:grid}.admin-login-form label{font-size:.78rem;font-weight:700}.admin-login-form input{border:1px solid var(--ink);background:var(--paper);width:100%;color:var(--ink);font:inherit;border-radius:10px;padding:12px 14px}.admin-login-form button{border:1px solid var(--ink);background:var(--blue);color:#fff;font:inherit;cursor:pointer;border-radius:10px;padding:12px 14px;font-weight:800}.admin-login-error{color:#8a211b;background:#ffe4e1;border-radius:8px;padding:10px 12px;font-size:.78rem;line-height:1.5}@media (hover:none){.portfolio-card.is-visible:hover{box-shadow:none;transform:translateY(0)}.portfolio-card:hover .project-image-wrap img{transform:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;transition-delay:0s!important;animation-duration:.01ms!important;animation-iteration-count:1!important;animation-delay:0s!important}.reveal-on-scroll,.motion-timeline article{opacity:1;transform:none}.motion-timeline:before{transform:scaleY(1)}}
