html{--mat-sys-background: light-dark(#fff8f5, #181210);--mat-sys-error: light-dark(#ba1a1a, #ffb4ab);--mat-sys-error-container: light-dark(#ffdad6, #93000a);--mat-sys-inverse-on-surface: light-dark(#fbeee8, #362f2b);--mat-sys-inverse-primary: light-dark(#ffb787, #964900);--mat-sys-inverse-surface: light-dark(#362f2b, #ece0da);--mat-sys-on-background: light-dark(#201a17, #ece0da);--mat-sys-on-error: light-dark(#ffffff, #690005);--mat-sys-on-error-container: light-dark(#93000a, #ffdad6);--mat-sys-on-primary: light-dark(#ffffff, #502400);--mat-sys-on-primary-container: light-dark(#723600, #ffdcc7);--mat-sys-on-primary-fixed: light-dark(#311300, #311300);--mat-sys-on-primary-fixed-variant: light-dark(#723600, #723600);--mat-sys-on-secondary: light-dark(#ffffff, #422b1b);--mat-sys-on-secondary-container: light-dark(#5b4130, #ffdcc7);--mat-sys-on-secondary-fixed: light-dark(#2b1708, #2b1708);--mat-sys-on-secondary-fixed-variant: light-dark(#5b4130, #5b4130);--mat-sys-on-surface: light-dark(#201a17, #ece0da);--mat-sys-on-surface-variant: light-dark(#52443c, #f4ded3);--mat-sys-on-tertiary: light-dark(#ffffff, #65002f);--mat-sys-on-tertiary-container: light-dark(#8f0045, #ffd9e1);--mat-sys-on-tertiary-fixed: light-dark(#3f001b, #3f001b);--mat-sys-on-tertiary-fixed-variant: light-dark(#8f0045, #8f0045);--mat-sys-outline: light-dark(#84746a, #9f8d83);--mat-sys-outline-variant: light-dark(#d7c3b8, #52443c);--mat-sys-primary: light-dark(#964900, #ffb787);--mat-sys-primary-container: light-dark(#ffdcc7, #723600);--mat-sys-primary-fixed: light-dark(#ffdcc7, #ffdcc7);--mat-sys-primary-fixed-dim: light-dark(#ffb787, #ffb787);--mat-sys-scrim: light-dark(#000000, #000000);--mat-sys-secondary: light-dark(#755846, #e5bfa8);--mat-sys-secondary-container: light-dark(#ffdcc7, #5b4130);--mat-sys-secondary-fixed: light-dark(#ffdcc7, #ffdcc7);--mat-sys-secondary-fixed-dim: light-dark(#e5bfa8, #e5bfa8);--mat-sys-shadow: light-dark(#000000, #000000);--mat-sys-surface: light-dark(#fff8f5, #181210);--mat-sys-surface-bright: light-dark(#fff8f5, #3f3834);--mat-sys-surface-container: light-dark(#f8ebe6, #241e1b);--mat-sys-surface-container-high: light-dark(#f2e6e1, #2f2926);--mat-sys-surface-container-highest: light-dark(#ece0da, #3a3330);--mat-sys-surface-container-low: light-dark(#fef1ec, #201a17);--mat-sys-surface-container-lowest: light-dark(#ffffff, #120d0b);--mat-sys-surface-dim: light-dark(#e3d8d3, #181210);--mat-sys-surface-tint: light-dark(#964900, #ffb787);--mat-sys-surface-variant: light-dark(#f4ded3, #52443c);--mat-sys-tertiary: light-dark(#ba005c, #ffb1c5);--mat-sys-tertiary-container: light-dark(#ffd9e1, #8f0045);--mat-sys-tertiary-fixed: light-dark(#ffd9e1, #ffd9e1);--mat-sys-tertiary-fixed-dim: light-dark(#ffb1c5, #ffb1c5);--mat-sys-neutral-variant20: #3a2e26;--mat-sys-neutral10: #201a17;--mat-sys-level0: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mat-sys-level1: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mat-sys-level2: 0px 3px 3px -2px rgba(0, 0, 0, .2), 0px 3px 4px 0px rgba(0, 0, 0, .14), 0px 1px 8px 0px rgba(0, 0, 0, .12);--mat-sys-level3: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mat-sys-level4: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mat-sys-level5: 0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12);--mat-sys-body-large: 400 1rem / 1.5rem Inter, system-ui, sans-serif;--mat-sys-body-large-font: Inter, system-ui, sans-serif;--mat-sys-body-large-line-height: 1.5rem;--mat-sys-body-large-size: 1rem;--mat-sys-body-large-tracking: .031rem;--mat-sys-body-large-weight: 400;--mat-sys-body-medium: 400 .875rem / 1.25rem Inter, system-ui, sans-serif;--mat-sys-body-medium-font: Inter, system-ui, sans-serif;--mat-sys-body-medium-line-height: 1.25rem;--mat-sys-body-medium-size: .875rem;--mat-sys-body-medium-tracking: .016rem;--mat-sys-body-medium-weight: 400;--mat-sys-body-small: 400 .75rem / 1rem Inter, system-ui, sans-serif;--mat-sys-body-small-font: Inter, system-ui, sans-serif;--mat-sys-body-small-line-height: 1rem;--mat-sys-body-small-size: .75rem;--mat-sys-body-small-tracking: .025rem;--mat-sys-body-small-weight: 400;--mat-sys-display-large: 400 3.562rem / 4rem Fraunces, Georgia, serif;--mat-sys-display-large-font: Fraunces, Georgia, serif;--mat-sys-display-large-line-height: 4rem;--mat-sys-display-large-size: 3.562rem;--mat-sys-display-large-tracking: -.016rem;--mat-sys-display-large-weight: 400;--mat-sys-display-medium: 400 2.812rem / 3.25rem Fraunces, Georgia, serif;--mat-sys-display-medium-font: Fraunces, Georgia, serif;--mat-sys-display-medium-line-height: 3.25rem;--mat-sys-display-medium-size: 2.812rem;--mat-sys-display-medium-tracking: 0;--mat-sys-display-medium-weight: 400;--mat-sys-display-small: 400 2.25rem / 2.75rem Fraunces, Georgia, serif;--mat-sys-display-small-font: Fraunces, Georgia, serif;--mat-sys-display-small-line-height: 2.75rem;--mat-sys-display-small-size: 2.25rem;--mat-sys-display-small-tracking: 0;--mat-sys-display-small-weight: 400;--mat-sys-headline-large: 400 2rem / 2.5rem Fraunces, Georgia, serif;--mat-sys-headline-large-font: Fraunces, Georgia, serif;--mat-sys-headline-large-line-height: 2.5rem;--mat-sys-headline-large-size: 2rem;--mat-sys-headline-large-tracking: 0;--mat-sys-headline-large-weight: 400;--mat-sys-headline-medium: 400 1.75rem / 2.25rem Fraunces, Georgia, serif;--mat-sys-headline-medium-font: Fraunces, Georgia, serif;--mat-sys-headline-medium-line-height: 2.25rem;--mat-sys-headline-medium-size: 1.75rem;--mat-sys-headline-medium-tracking: 0;--mat-sys-headline-medium-weight: 400;--mat-sys-headline-small: 400 1.5rem / 2rem Fraunces, Georgia, serif;--mat-sys-headline-small-font: Fraunces, Georgia, serif;--mat-sys-headline-small-line-height: 2rem;--mat-sys-headline-small-size: 1.5rem;--mat-sys-headline-small-tracking: 0;--mat-sys-headline-small-weight: 400;--mat-sys-label-large: 500 .875rem / 1.25rem Inter, system-ui, sans-serif;--mat-sys-label-large-font: Inter, system-ui, sans-serif;--mat-sys-label-large-line-height: 1.25rem;--mat-sys-label-large-size: .875rem;--mat-sys-label-large-tracking: .006rem;--mat-sys-label-large-weight: 500;--mat-sys-label-large-weight-prominent: 600;--mat-sys-label-medium: 500 .75rem / 1rem Inter, system-ui, sans-serif;--mat-sys-label-medium-font: Inter, system-ui, sans-serif;--mat-sys-label-medium-line-height: 1rem;--mat-sys-label-medium-size: .75rem;--mat-sys-label-medium-tracking: .031rem;--mat-sys-label-medium-weight: 500;--mat-sys-label-medium-weight-prominent: 600;--mat-sys-label-small: 500 .688rem / 1rem Inter, system-ui, sans-serif;--mat-sys-label-small-font: Inter, system-ui, sans-serif;--mat-sys-label-small-line-height: 1rem;--mat-sys-label-small-size: .688rem;--mat-sys-label-small-tracking: .031rem;--mat-sys-label-small-weight: 500;--mat-sys-title-large: 400 1.375rem / 1.75rem Fraunces, Georgia, serif;--mat-sys-title-large-font: Fraunces, Georgia, serif;--mat-sys-title-large-line-height: 1.75rem;--mat-sys-title-large-size: 1.375rem;--mat-sys-title-large-tracking: 0;--mat-sys-title-large-weight: 400;--mat-sys-title-medium: 500 1rem / 1.5rem Inter, system-ui, sans-serif;--mat-sys-title-medium-font: Inter, system-ui, sans-serif;--mat-sys-title-medium-line-height: 1.5rem;--mat-sys-title-medium-size: 1rem;--mat-sys-title-medium-tracking: .009rem;--mat-sys-title-medium-weight: 500;--mat-sys-title-small: 500 .875rem / 1.25rem Inter, system-ui, sans-serif;--mat-sys-title-small-font: Inter, system-ui, sans-serif;--mat-sys-title-small-line-height: 1.25rem;--mat-sys-title-small-size: .875rem;--mat-sys-title-small-tracking: .006rem;--mat-sys-title-small-weight: 500;--mat-sys-corner-extra-large: 28px;--mat-sys-corner-extra-large-top: 28px 28px 0 0;--mat-sys-corner-extra-small: 4px;--mat-sys-corner-extra-small-top: 4px 4px 0 0;--mat-sys-corner-full: 9999px;--mat-sys-corner-large: 16px;--mat-sys-corner-large-end: 0 16px 16px 0;--mat-sys-corner-large-start: 16px 0 0 16px;--mat-sys-corner-large-top: 16px 16px 0 0;--mat-sys-corner-medium: 12px;--mat-sys-corner-none: 0;--mat-sys-corner-small: 8px;--mat-sys-dragged-state-layer-opacity: .16;--mat-sys-focus-state-layer-opacity: .12;--mat-sys-hover-state-layer-opacity: .08;--mat-sys-pressed-state-layer-opacity: .12;--mat-sys-primary: #b05a3c;--mat-sys-on-primary: #fffdf9;--mat-sys-primary-container: #f3dccf;--mat-sys-on-primary-container: #5a2716;--mat-sys-surface: #fbfaf7;--mat-sys-on-surface: #1c1917;--mat-sys-surface-container-lowest: #ffffff;--mat-sys-surface-container-low: #f5f2ec;--mat-sys-surface-container: #ece7dd;--mat-sys-surface-container-high: #e6e0d4;--mat-sys-surface-variant: #ece7dd;--mat-sys-on-surface-variant: #78716c;--mat-sys-outline: #cfc7ba;--mat-sys-outline-variant: #e7e2d8;--mat-sys-background: #fbfaf7;--mat-sys-on-background: #1c1917;--mat-sys-error: #b3261e}:root{--ds-bg: #fbfaf7;--ds-surface: #f5f2ec;--ds-surface-2: #ece7dd;--ds-line: #e7e2d8;--ds-line-strong: #d8d1c4;--ds-ink-900: #1c1917;--ds-ink-700: #44403c;--ds-ink-500: #78716c;--ds-ink-300: #a8a29e;--ds-accent: #b05a3c;--ds-accent-dark: #8a4329;--ds-accent-soft: rgba(176, 90, 60, .09);--ds-accent-contrast: #fffdf9;--ds-font-serif: "Fraunces", Georgia, "Times New Roman", serif;--ds-font-sans: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--ds-font-mono: "JetBrains Mono", "SFMono-Regular", ui-monospace, monospace;--ds-text-xs: .78rem;--ds-text-sm: .875rem;--ds-text-base: 1rem;--ds-text-lg: 1.125rem;--ds-text-xl: clamp(1.2rem, 1.05rem + .6vw, 1.5rem);--ds-text-2xl: clamp(1.55rem, 1.25rem + 1.3vw, 2.1rem);--ds-text-3xl: clamp(2rem, 1.5rem + 2.2vw, 3rem);--ds-text-display: clamp(2.6rem, 1.7rem + 3.9vw, 4.5rem);--ds-container: 1120px;--ds-container-narrow: 760px;--ds-gutter: clamp(1.25rem, 4vw, 2rem);--ds-section-y: clamp(4rem, 8vw, 7rem);--ds-radius-sm: 8px;--ds-radius-md: 12px;--ds-radius-lg: 16px;--ds-radius-xl: 24px;--ds-radius-pill: 999px;--ds-shadow-sm: 0 1px 2px rgba(28, 25, 23, .05);--ds-shadow-soft: 0 2px 15px -3px rgba(28, 25, 23, .07), 0 10px 20px -2px rgba(28, 25, 23, .04);--ds-shadow-elevated: 0 14px 40px -14px rgba(28, 25, 23, .16);--ds-shadow-dramatic: 0 26px 60px -20px rgba(28, 25, 23, .22);--ds-ease-brush: cubic-bezier(.22, 1, .36, 1);--ds-ease-smooth: cubic-bezier(.25, .46, .45, .94);--ds-ease-ink: cubic-bezier(.65, 0, .35, 1);--ds-dur-fast: .2s;--ds-dur: .3s;--ds-dur-slow: .5s;--ds-dur-slower: .7s;--ds-header-h: 72px}body{font-family:var(--ds-font-sans);font-size:var(--ds-text-base);line-height:1.65;color:var(--ds-ink-700);background-color:var(--ds-bg);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,h4{font-family:var(--ds-font-serif);color:var(--ds-ink-900);font-weight:500;line-height:1.12;letter-spacing:-.015em;margin:0;text-wrap:balance}h1{font-size:var(--ds-text-3xl)}h2{font-size:var(--ds-text-2xl)}h3{font-size:var(--ds-text-xl)}p{margin:0}a{color:inherit;text-decoration:none}strong{color:var(--ds-ink-900);font-weight:600}.ds-kicker{display:inline-block;font-family:var(--ds-font-mono);font-size:var(--ds-text-xs);font-weight:500;letter-spacing:.2em;text-transform:uppercase;color:var(--ds-accent)}@keyframes ds-page-enter{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}:is(app-home-page,app-projects-list-page,app-project-detail-page,app-skills-page,app-timeline-page,app-about-page,app-contact-page,app-not-found-page){display:block;animation:ds-page-enter .45s var(--ds-ease-brush) both}@media(prefers-reduced-motion:reduce){:is(app-home-page,app-projects-list-page,app-project-detail-page,app-skills-page,app-timeline-page,app-about-page,app-contact-page,app-not-found-page){animation:none}}.ds-container{width:100%;max-width:var(--ds-container);margin-inline:auto;padding-inline:var(--ds-gutter)}.ds-section{padding-block:var(--ds-section-y)}.ds-btn{display:inline-flex;align-items:center;gap:.5rem;padding:.7rem 1.4rem;border-radius:var(--ds-radius-sm);font-family:var(--ds-font-sans);font-size:var(--ds-text-sm);font-weight:600;letter-spacing:.01em;cursor:pointer;border:1px solid transparent;transition:background var(--ds-dur) var(--ds-ease-smooth),color var(--ds-dur) var(--ds-ease-smooth),border-color var(--ds-dur) var(--ds-ease-smooth),transform var(--ds-dur) var(--ds-ease-brush)}.ds-btn .material-icons,.ds-btn mat-icon{font-size:1.15rem;width:1.15rem;height:1.15rem}.ds-btn:hover{transform:translateY(-2px)}.ds-btn:focus-visible{outline:2px solid var(--ds-accent);outline-offset:3px;border-radius:4px}.ds-btn--primary{background:var(--ds-ink-900);color:var(--ds-bg)}.ds-btn--primary:hover{background:var(--ds-accent)}.ds-btn--ghost{background:transparent;color:var(--ds-ink-900);border-color:var(--ds-line-strong)}.ds-btn--ghost:hover{border-color:var(--ds-ink-900);background:var(--ds-surface)}.ds-chip{display:inline-flex;align-items:center;gap:.4rem;padding:.32rem .75rem;border-radius:var(--ds-radius-pill);background:var(--ds-surface);border:1px solid var(--ds-line);font-size:var(--ds-text-xs);font-weight:500;color:var(--ds-ink-700);white-space:nowrap}.ds-chip img{width:1rem;height:1rem;object-fit:contain}.ds-chip--toggle{cursor:pointer;transition:background var(--ds-dur) var(--ds-ease-smooth),color var(--ds-dur) var(--ds-ease-smooth),border-color var(--ds-dur) var(--ds-ease-smooth)}.ds-chip--toggle:hover{border-color:var(--ds-ink-300)}.ds-chip--toggle.is-active{background:var(--ds-ink-900);border-color:var(--ds-ink-900);color:var(--ds-bg)}.ds-link{display:inline-flex;align-items:center;gap:.35rem;font-weight:600;font-size:var(--ds-text-sm);color:var(--ds-ink-900);position:relative}.ds-link:after{content:"";position:absolute;left:0;bottom:-2px;width:100%;height:1.5px;background:var(--ds-accent);transform:scaleX(0);transform-origin:left;transition:transform var(--ds-dur) var(--ds-ease-brush)}.ds-link:hover:after,.ds-link.active:after{transform:scaleX(1)}.ds-link mat-icon{font-size:1.1rem;width:1.1rem;height:1.1rem;transition:transform var(--ds-dur) var(--ds-ease-brush)}.ds-link:hover mat-icon{transform:translate(3px)}.ds-reveal{opacity:0;transform:translateY(24px);transition:opacity var(--ds-dur-slow) var(--ds-ease-smooth),transform var(--ds-dur-slow) var(--ds-ease-smooth);will-change:opacity,transform}.ds-reveal.is-visible{opacity:1;transform:none}@media(prefers-reduced-motion:reduce){.ds-reveal{opacity:1!important;transform:none!important;transition:none!important}}*,*:before,*:after{box-sizing:border-box}html{height:100%;scroll-behavior:smooth}body{margin:0;min-height:100%;color-scheme:light}img{max-width:100%;display:block}::selection{background:var(--ds-accent-soft);color:var(--ds-ink-900)}*{scrollbar-width:thin;scrollbar-color:var(--ds-line-strong) transparent}::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-thumb{background:var(--ds-line-strong);border-radius:var(--ds-radius-pill)}::-webkit-scrollbar-thumb:hover{background:var(--ds-ink-300)}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.001ms!important;transition-duration:.001ms!important}}
