@import "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap";
@font-face{font-family:Playfair Display;font-style:italic;font-weight:400;font-display:swap;src:url(../media/35161b7740c25d33-s.c0314740.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Playfair Display;font-style:italic;font-weight:400;font-display:swap;src:url(../media/391e53907fa6d8ec-s.1942ea8f.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Playfair Display;font-style:italic;font-weight:400;font-display:swap;src:url(../media/ae8872c8a32e309c-s.bd3beac6.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:Playfair Display;font-style:italic;font-weight:400;font-display:swap;src:url(../media/70e3db2de7f94926-s.p.347f98aa.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:Playfair Display;font-style:italic;font-weight:500;font-display:swap;src:url(../media/35161b7740c25d33-s.c0314740.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Playfair Display;font-style:italic;font-weight:500;font-display:swap;src:url(../media/391e53907fa6d8ec-s.1942ea8f.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Playfair Display;font-style:italic;font-weight:500;font-display:swap;src:url(../media/ae8872c8a32e309c-s.bd3beac6.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:Playfair Display;font-style:italic;font-weight:500;font-display:swap;src:url(../media/70e3db2de7f94926-s.p.347f98aa.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:Playfair Display;font-style:italic;font-weight:700;font-display:swap;src:url(../media/35161b7740c25d33-s.c0314740.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Playfair Display;font-style:italic;font-weight:700;font-display:swap;src:url(../media/391e53907fa6d8ec-s.1942ea8f.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Playfair Display;font-style:italic;font-weight:700;font-display:swap;src:url(../media/ae8872c8a32e309c-s.bd3beac6.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:Playfair Display;font-style:italic;font-weight:700;font-display:swap;src:url(../media/70e3db2de7f94926-s.p.347f98aa.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:Playfair Display;font-style:italic;font-weight:900;font-display:swap;src:url(../media/35161b7740c25d33-s.c0314740.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Playfair Display;font-style:italic;font-weight:900;font-display:swap;src:url(../media/391e53907fa6d8ec-s.1942ea8f.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Playfair Display;font-style:italic;font-weight:900;font-display:swap;src:url(../media/ae8872c8a32e309c-s.bd3beac6.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:Playfair Display;font-style:italic;font-weight:900;font-display:swap;src:url(../media/70e3db2de7f94926-s.p.347f98aa.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:Playfair Display;font-style:normal;font-weight:400;font-display:swap;src:url(../media/65c558afe41e89d6-s.e2c8389a.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Playfair Display;font-style:normal;font-weight:400;font-display:swap;src:url(../media/14e23f9b59180572-s.9c448f3c.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Playfair Display;font-style:normal;font-weight:400;font-display:swap;src:url(../media/b49b0d9b851e4899-s.4f3fa681.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:Playfair Display;font-style:normal;font-weight:400;font-display:swap;src:url(../media/2a65768255d6b625-s.p.d19752fb.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:Playfair Display;font-style:normal;font-weight:500;font-display:swap;src:url(../media/65c558afe41e89d6-s.e2c8389a.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Playfair Display;font-style:normal;font-weight:500;font-display:swap;src:url(../media/14e23f9b59180572-s.9c448f3c.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Playfair Display;font-style:normal;font-weight:500;font-display:swap;src:url(../media/b49b0d9b851e4899-s.4f3fa681.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:Playfair Display;font-style:normal;font-weight:500;font-display:swap;src:url(../media/2a65768255d6b625-s.p.d19752fb.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:Playfair Display;font-style:normal;font-weight:700;font-display:swap;src:url(../media/65c558afe41e89d6-s.e2c8389a.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Playfair Display;font-style:normal;font-weight:700;font-display:swap;src:url(../media/14e23f9b59180572-s.9c448f3c.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Playfair Display;font-style:normal;font-weight:700;font-display:swap;src:url(../media/b49b0d9b851e4899-s.4f3fa681.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:Playfair Display;font-style:normal;font-weight:700;font-display:swap;src:url(../media/2a65768255d6b625-s.p.d19752fb.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:Playfair Display;font-style:normal;font-weight:900;font-display:swap;src:url(../media/65c558afe41e89d6-s.e2c8389a.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Playfair Display;font-style:normal;font-weight:900;font-display:swap;src:url(../media/14e23f9b59180572-s.9c448f3c.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Playfair Display;font-style:normal;font-weight:900;font-display:swap;src:url(../media/b49b0d9b851e4899-s.4f3fa681.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:Playfair Display;font-style:normal;font-weight:900;font-display:swap;src:url(../media/2a65768255d6b625-s.p.d19752fb.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:Playfair Display Fallback;src:local(Times New Roman);ascent-override:97.25%;descent-override:22.56%;line-gap-override:0.0%;size-adjust:111.26%}.playfair_display_f8614625-module__AughCa__className{font-family:Playfair Display,Playfair Display Fallback}.playfair_display_f8614625-module__AughCa__variable{--font-display:"Playfair Display","Playfair Display Fallback"}
@font-face{font-family:Space Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/4ba802ed8e67eac5-s.e45fea2b.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/d7a0600e467cf0bd-s.20ecb425.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:Space Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/dc0d9adbac686440-s.p.3b382e45.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:Space Mono;font-style:normal;font-weight:700;font-display:swap;src:url(../media/b8f2b92a9960dd69-s.12167c5a.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Mono;font-style:normal;font-weight:700;font-display:swap;src:url(../media/28e60ca39c9ae554-s.7a4e9fcc.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:Space Mono;font-style:normal;font-weight:700;font-display:swap;src:url(../media/8d05cfa5faa8406c-s.p.4adea45d.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:Space Mono Fallback;src:local(Arial);ascent-override:81.58%;descent-override:26.3%;line-gap-override:0.0%;size-adjust:137.28%}.space_mono_d8eecc30-module__bEIZiG__className{font-family:Space Mono,Space Mono Fallback;font-style:normal}.space_mono_d8eecc30-module__bEIZiG__variable{--font-mono:"Space Mono","Space Mono Fallback"}
:root{--campus-accent:#e63946;--campus-accent-hover:#ff4d5a;--campus-accent-glow:#e6394640;--campus-accent-subtle:#e639461f;--color-bg-primary:#0a0a0f;--color-bg-secondary:#12121a;--color-bg-elevated:#1a1a26;--color-bg-card:#ffffff0a;--color-bg-card-hover:#ffffff12;--color-bg-glass:#ffffff0f;--color-bg-glass-border:#ffffff14;--color-accent:var(--campus-accent);--color-accent-hover:var(--campus-accent-hover);--color-accent-glow:var(--campus-accent-glow);--color-accent-subtle:var(--campus-accent-subtle);--color-secondary:#f4a261;--color-secondary-glow:#f4a26133;--color-text-primary:#f0f0f5;--color-text-secondary:#8b8b9e;--color-text-muted:#5a5a6e;--color-text-accent:var(--color-accent);--color-text-inverse:#0a0a0f;--color-border:#ffffff0f;--color-border-hover:#ffffff1f;--color-border-accent:var(--color-accent);--color-success:#2ecc71;--color-success-subtle:#2ecc711f;--color-warning:#f39c12;--color-warning-subtle:#f39c121f;--color-danger:#e74c3c;--color-danger-subtle:#e74c3c1f}.campus-rpi{--campus-accent:#e63946;--campus-accent-hover:#ff4d5a;--campus-accent-glow:#e6394640;--campus-accent-subtle:#e639461f}[data-theme=light]{--color-bg-primary:#f5f5f7;--color-bg-secondary:#fff;--color-bg-elevated:#fff;--color-bg-card:#00000008;--color-bg-card-hover:#0000000f;--color-bg-glass:#ffffffb3;--color-bg-glass-border:#00000014;--color-text-primary:#1a1a2e;--color-text-secondary:#5a5349;--color-text-muted:#9b9bae;--color-text-inverse:#f0f0f5;--color-border:#00000014;--color-border-hover:#00000026;--shadow-sm:0 1px 2px #0000000f;--shadow-md:0 4px 12px #00000014;--shadow-lg:0 8px 32px #0000001f;--color-success-subtle:#2ecc711a;--color-warning-subtle:#f39c121a;--color-danger-subtle:#e74c3c1a}:root{--font-sans:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--font-display:"Playfair Display",Georgia,serif;--font-serif:"Cormorant Garamond","Playfair Display",Georgia,serif;--font-mono:"Space Mono","JetBrains Mono","Fira Code",monospace;--weight-light:300;--weight-regular:400;--weight-medium:500;--weight-semibold:600;--weight-bold:700;--weight-extrabold:800;--text-xs:clamp(.7rem,.65rem + .25vw,.75rem);--leading-xs:1rem;--text-sm:clamp(.75rem,.7rem + .25vw,.8125rem);--leading-sm:1.125rem;--text-base:clamp(.875rem,.8rem + .35vw,.9375rem);--leading-base:1.5rem;--text-md:clamp(.9375rem,.85rem + .4vw,1rem);--leading-md:1.5rem;--text-lg:clamp(1rem,.9rem + .5vw,1.125rem);--leading-lg:1.625rem;--text-xl:clamp(1.125rem,1rem + .6vw,1.25rem);--leading-xl:1.75rem;--text-2xl:clamp(1.25rem,1.1rem + 1vw,1.5rem);--leading-2xl:2rem;--text-3xl:clamp(1.5rem,1.2rem + 1.5vw,2rem);--leading-3xl:2.375rem;--tracking-tight:-.02em;--tracking-normal:0;--tracking-wide:.01em;--space-2xs:2px;--space-xs:4px;--space-sm:8px;--space-md:16px;--space-lg:24px;--space-xl:32px;--space-2xl:48px;--space-3xl:64px;--space-4xl:96px;--touch-min:48px;--radius-sm:6px;--radius-md:12px;--radius-lg:16px;--radius-xl:24px;--radius-full:9999px;--shadow-sm:0 1px 2px #0000004d;--shadow-md:0 4px 12px #0006;--shadow-lg:0 8px 32px #00000080;--shadow-glow:0 0 40px var(--color-accent-glow);--transition-fast:.15s cubic-bezier(.4,0,.2,1);--transition-base:.25s cubic-bezier(.4,0,.2,1);--transition-slow:.4s cubic-bezier(.4,0,.2,1);--transition-spring:.5s cubic-bezier(.34,1.56,.64,1);--z-base:1;--z-dropdown:10;--z-sticky:50;--z-modal:100;--z-toast:1000;--container-max:480px;--container-padding:var(--space-lg)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;-webkit-tap-highlight-color:transparent;font-size:16px}body{font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-base);background:var(--color-bg-primary);color:var(--color-text-primary);min-height:100dvh;overflow-x:hidden}@media (display-mode:standalone){html,body{scrollbar-width:none;-ms-overflow-style:none}body::-webkit-scrollbar{width:0;height:0;display:none}body,body *{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}}img,.no-select{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}a{color:inherit;text-decoration:none}button{cursor:pointer;font-family:inherit;font-size:inherit;color:inherit;-webkit-tap-highlight-color:transparent;background:0 0;border:none}input,textarea,select{font-family:inherit;font-size:inherit;color:inherit}ul,ol{list-style:none}.screen{min-height:100dvh;padding-bottom:env(safe-area-inset-bottom,0);flex-direction:column;display:flex}.container{max-width:var(--container-max);padding:0 var(--container-padding);width:100%;margin:0 auto}.stack{gap:var(--space-md);flex-direction:column;display:flex}.stack-xs{gap:var(--space-xs)}.stack-sm{gap:var(--space-sm)}.stack-lg{gap:var(--space-lg)}.stack-xl{gap:var(--space-xl)}.row{align-items:center;gap:var(--space-md);display:flex}.row-sm{gap:var(--space-sm)}.row-lg{gap:var(--space-lg)}.row-spread{justify-content:space-between;align-items:center;display:flex}.center{justify-content:center;align-items:center;display:flex}.heading-3xl{font-family:var(--font-display);font-size:var(--text-3xl);line-height:var(--leading-3xl);font-weight:var(--weight-bold);letter-spacing:var(--tracking-tight)}.heading-2xl{font-family:var(--font-display);font-size:var(--text-2xl);line-height:var(--leading-2xl);font-weight:var(--weight-bold);letter-spacing:var(--tracking-tight)}.heading-xl{font-family:var(--font-display);font-size:var(--text-xl);line-height:var(--leading-xl);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-tight)}.heading-lg{font-family:var(--font-display);font-size:var(--text-lg);line-height:var(--leading-lg);font-weight:var(--weight-semibold)}.text-base{font-size:var(--text-base);line-height:var(--leading-base)}.text-sm{font-size:var(--text-sm);line-height:var(--leading-sm)}.text-xs{font-size:var(--text-xs);line-height:var(--leading-xs)}.text-muted{color:var(--color-text-secondary)}.text-accent{color:var(--color-accent)}.btn{justify-content:center;align-items:center;gap:var(--space-sm);min-height:var(--touch-min);padding:0 var(--space-lg);border-radius:var(--radius-full);font-weight:var(--weight-semibold);font-size:var(--text-base);letter-spacing:var(--tracking-wide);transition:all var(--transition-base);white-space:nowrap;-webkit-tap-highlight-color:transparent;cursor:pointer;display:inline-flex;position:relative;overflow:hidden}.btn-primary{background:var(--color-accent);color:#fff;box-shadow:0 4px 16px var(--color-accent-glow)}.btn-primary:hover{background:var(--color-accent-hover);box-shadow:0 6px 24px var(--color-accent-glow);transform:translateY(-1px)}.btn-primary:active{box-shadow:0 2px 8px var(--color-accent-glow);transform:translateY(0)}.btn-secondary{background:var(--color-bg-card);color:var(--color-text-primary);border:1px solid var(--color-border)}.btn-secondary:hover{background:var(--color-bg-card-hover);border-color:var(--color-border-hover)}.btn-secondary:active{background:var(--color-bg-card)}.btn-outline{color:var(--color-accent);border:1.5px solid var(--color-accent);background:0 0}.btn-outline:hover,.btn-outline:active{background:var(--color-accent-subtle)}.btn-ghost{color:var(--color-text-secondary);padding:0 var(--space-md)}.btn-ghost:hover{color:var(--color-text-primary);background:var(--color-bg-card)}.btn-ghost:active{background:var(--color-bg-card)}.btn-danger{background:var(--color-danger);color:#fff}.btn-danger:hover{opacity:.9;transform:translateY(-1px)}.btn-danger:active{transform:translateY(0)}.btn-sm{min-height:36px;padding:0 var(--space-md);font-size:var(--text-sm)}.btn-lg{min-height:56px;padding:0 var(--space-xl);font-size:var(--text-md)}.btn-full{width:100%}.btn-icon{width:var(--touch-min);padding:0}.btn:disabled{opacity:.4;cursor:not-allowed;pointer-events:none;transform:none!important}.input-group{gap:var(--space-xs);flex-direction:column;display:flex}.input-label{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text-secondary);display:block}.input-field{width:100%;min-height:var(--touch-min);padding:0 var(--space-md);background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text-primary);font-size:var(--text-base);transition:border-color var(--transition-fast),box-shadow var(--transition-fast);outline:none}.input-field::placeholder{color:var(--color-text-muted)}.input-field:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-subtle)}.input-field:invalid:not(:placeholder-shown){border-color:var(--color-danger)}.input-hint{font-size:var(--text-xs);color:var(--color-text-muted)}.input-error{font-size:var(--text-xs);color:var(--color-danger)}.textarea-field{width:100%;padding:var(--space-sm)var(--space-md);background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-md);min-height:120px;color:var(--color-text-primary);font-size:var(--text-base);line-height:var(--leading-base);resize:vertical;transition:border-color var(--transition-fast),box-shadow var(--transition-fast);outline:none}.textarea-field:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-subtle)}.chip{align-items:center;gap:var(--space-xs);min-height:32px;padding:0 var(--space-md);border-radius:var(--radius-full);font-size:var(--text-sm);font-weight:var(--weight-medium);background:var(--color-bg-card);border:1px solid var(--color-border);color:var(--color-text-primary);white-space:nowrap;transition:all var(--transition-fast);display:inline-flex}button.chip,a.chip{min-height:var(--touch-min);cursor:pointer;-webkit-tap-highlight-color:transparent}button.chip:hover,a.chip:hover{background:var(--color-bg-card-hover);border-color:var(--color-border-hover)}.chip-active,.chip[aria-selected=true]{background:var(--color-accent-subtle);border-color:var(--color-accent);color:var(--color-accent)}.chip-accent{background:var(--color-accent);border-color:var(--color-accent);color:#fff}.badge{border-radius:var(--radius-full);min-width:20px;height:20px;font-size:var(--text-xs);font-weight:var(--weight-semibold);justify-content:center;align-items:center;padding:0 6px;line-height:1;display:inline-flex}.badge-accent{background:var(--color-accent);color:#fff}.badge-success{background:var(--color-success-subtle);color:var(--color-success)}.badge-warning{background:var(--color-warning-subtle);color:var(--color-warning)}.badge-danger{background:var(--color-danger-subtle);color:var(--color-danger)}.badge-muted{background:var(--color-bg-card);color:var(--color-text-secondary)}.card{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-lg);transition:all var(--transition-base)}.card-interactive{cursor:pointer;-webkit-tap-highlight-color:transparent}.card-interactive:hover{background:var(--color-bg-card-hover);border-color:var(--color-border-hover)}.card-interactive:active{transform:scale(.98)}.card-glass{background:var(--color-bg-glass);-webkit-backdrop-filter:blur(12px);border:1px solid var(--color-bg-glass-border);border-radius:var(--radius-lg);padding:var(--space-lg)}.avatar{border-radius:var(--radius-full);background:var(--color-bg-elevated);color:var(--color-text-muted);font-weight:var(--weight-semibold);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex;overflow:hidden}.avatar img{object-fit:cover;width:100%;height:100%}.avatar-sm{width:32px;height:32px;font-size:var(--text-xs)}.avatar-md{width:48px;height:48px;font-size:var(--text-base)}.avatar-lg{width:64px;height:64px;font-size:var(--text-lg)}.avatar-xl{width:96px;height:96px;font-size:var(--text-2xl)}.avatar-ring{box-shadow:0 0 0 3px var(--color-accent)}.divider{background:var(--color-border);border:none;width:100%;height:1px}.divider-spaced{margin:var(--space-lg)0}.bottom-bar{height:calc(60px + env(safe-area-inset-bottom,0px));padding-bottom:env(safe-area-inset-bottom,0px);background:var(--color-bg-secondary);border-top:1px solid var(--color-border);z-index:var(--z-sticky);justify-content:space-around;align-items:center;display:flex;position:fixed;bottom:0;left:0;right:0}.bottom-bar-item{min-width:var(--touch-min);min-height:var(--touch-min);padding:var(--space-xs);color:var(--color-text-muted);font-size:var(--text-xs);font-weight:var(--weight-medium);transition:color var(--transition-fast);-webkit-tap-highlight-color:transparent;cursor:pointer;background:0 0;border:none;flex-direction:column;justify-content:center;align-items:center;gap:2px;display:flex}.bottom-bar-item:hover,.bottom-bar-item-active{color:var(--color-accent)}.skeleton{background:linear-gradient(90deg,var(--color-bg-card)25%,var(--color-bg-card-hover)50%,var(--color-bg-card)75%);border-radius:var(--radius-md);background-size:200% 100%;animation:1.5s ease-in-out infinite shimmer}.skeleton-text{border-radius:var(--radius-sm);height:1em}.skeleton-circle{border-radius:var(--radius-full)}.glass{background:var(--color-bg-glass);-webkit-backdrop-filter:blur(12px);border:1px solid var(--color-bg-glass-border);border-radius:var(--radius-lg)}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.no-scrollbar::-webkit-scrollbar{display:none}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInUp{0%{opacity:0;transform:translateY(40px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInBottom{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.6}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes scaleIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.animate-fadeIn{animation:fadeIn var(--transition-base)ease-out}.animate-fadeInUp{animation:fadeInUp var(--transition-slow)ease-out}.animate-slideInUp{animation:.6s cubic-bezier(.16,1,.3,1) slideInUp}.animate-scaleIn{animation:scaleIn var(--transition-base)ease-out}@media (max-width:480px){:root{--container-padding:var(--space-md)}}@media (prefers-reduced-motion:reduce){:not(.force-animations):not(.force-animations *),:not(.force-animations):not(.force-animations *):before,:not(.force-animations):not(.force-animations *):after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
