:root{--plim-primitive-neutral-50: #f4f5f7;--plim-primitive-neutral-100: #eceef2;--plim-primitive-neutral-200: #e1e4e8;--plim-primitive-neutral-300: #c7ccd3;--plim-primitive-neutral-400: #a3a9b5;--plim-primitive-neutral-500: #8b919c;--plim-primitive-neutral-540: #7f8591;--plim-primitive-neutral-560: #7e8692;--plim-primitive-neutral-600: #7a828f;--plim-primitive-neutral-630: #696f7c;--plim-primitive-neutral-640: #636b78;--plim-primitive-neutral-650: #4f5663;--plim-primitive-neutral-700: #3a414f;--plim-primitive-neutral-800: #292e39;--plim-primitive-neutral-900: #181c24;--plim-primitive-neutral-950: #11141b;--plim-primitive-neutral-975: #17191d;--plim-primitive-neutral-1000: #0a0c10;--plim-primitive-violet-300: #c4b5fd;--plim-primitive-violet-400: #a78bfa;--plim-primitive-violet-450: #946bf7;--plim-primitive-violet-500: #8b5cf6;--plim-primitive-violet-600: #7c3aed;--plim-primitive-violet-700: #6d28d9;--plim-primitive-violet-750: #5b21b6;--plim-primitive-violet-strong: #8048f2;--plim-primitive-violet-strong-hover: #7240e8;--plim-primitive-green-400: #55d187;--plim-primitive-green-600: #16a34a;--plim-primitive-green-700: #147a3e;--plim-primitive-amber-400: #e8b85c;--plim-primitive-amber-600: #d97706;--plim-primitive-amber-700: #ad4f0a;--plim-primitive-red-400: #ed6a7a;--plim-primitive-red-600: #dc2626;--plim-primitive-red-700: #c81e1e;--plim-primitive-white: #ffffff;--plim-primitive-scrim: rgb(0 0 0 / .45)}:root{--plim-color-background: var(--plim-primitive-neutral-1000);--plim-color-surface: var(--plim-primitive-neutral-950);--plim-color-surface-raised: var(--plim-primitive-neutral-900);--plim-color-border: var(--plim-primitive-neutral-800);--plim-color-border-strong: var(--plim-primitive-neutral-640);--plim-color-text: var(--plim-primitive-neutral-50);--plim-color-text-muted: var(--plim-primitive-neutral-400);--plim-color-text-subtle: var(--plim-primitive-neutral-560);--plim-color-primary: var(--plim-primitive-violet-500);--plim-color-primary-text: var(--plim-primitive-violet-450);--plim-color-primary-hover: var(--plim-primitive-violet-400);--plim-color-primary-strong: var(--plim-primitive-violet-strong);--plim-color-primary-strong-hover: var(--plim-primitive-violet-strong-hover);--plim-color-on-primary: var(--plim-primitive-white);--plim-color-link: var(--plim-primitive-violet-400);--plim-color-link-hover: var(--plim-primitive-violet-300);--plim-color-success: var(--plim-primitive-green-400);--plim-color-warning: var(--plim-primitive-amber-400);--plim-color-danger: var(--plim-primitive-red-400);--plim-color-scrim: var(--plim-primitive-scrim);--plim-color-backdrop: var(--plim-color-scrim);--plim-color-overlay-hover: color-mix(in srgb, currentColor 8%, transparent);--plim-color-primary-surface: color-mix(in srgb, var(--plim-color-primary) 12%, var(--plim-color-surface));--plim-color-primary-surface-border: color-mix(in srgb, var(--plim-color-primary) 28%, transparent);--plim-color-primary-surface-text: color-mix( in srgb, var(--plim-color-text) 72%, var(--plim-color-primary) 28% );--plim-color-success-surface: color-mix(in srgb, var(--plim-color-success) 10%, var(--plim-color-surface));--plim-color-success-surface-border: color-mix(in srgb, var(--plim-color-success) 26%, transparent);--plim-color-success-surface-text: color-mix( in srgb, var(--plim-color-text) 78%, var(--plim-color-success) 22% );--plim-color-success-surface-icon: color-mix(in srgb, var(--plim-color-success) 18%, transparent);--plim-color-warning-surface: color-mix(in srgb, var(--plim-color-warning) 12%, var(--plim-color-surface));--plim-color-warning-surface-border: color-mix(in srgb, var(--plim-color-warning) 28%, transparent);--plim-color-warning-surface-text: color-mix( in srgb, var(--plim-color-text) 78%, var(--plim-color-warning) 22% );--plim-color-danger-surface: color-mix(in srgb, var(--plim-color-danger) 12%, var(--plim-color-surface));--plim-color-danger-surface-border: color-mix(in srgb, var(--plim-color-danger) 28%, transparent);--plim-color-danger-surface-text: color-mix( in srgb, var(--plim-color-text) 78%, var(--plim-color-danger) 22% );--plim-color-icon: var(--plim-color-text-muted);--plim-color-icon-muted: var(--plim-color-text-subtle);--plim-color-icon-primary: var(--plim-color-primary);--plim-color-icon-success: var(--plim-color-success);--plim-color-icon-warning: var(--plim-color-warning);--plim-color-icon-danger: var(--plim-color-danger)}:root{--plim-header-height: 4rem;--plim-sidebar-width: 16rem;--plim-button-height: 2.5rem;--plim-progress-bar-height: .25rem;--plim-input-height: 2.5rem;--plim-input-padding-x: var(--plim-space-3);--plim-input-font-size: var(--plim-font-size-sm);--plim-textarea-min-height: 5rem;--plim-checkbox-size: 1rem;--plim-radio-size: 1rem;--plim-switch-width: 2.5rem;--plim-switch-height: 1.25rem;--plim-slider-thumb-size: 1.125rem;--plim-form-field-gap: var(--plim-space-2);--plim-color-field-background: var(--plim-color-background);--plim-color-field-border: var(--plim-color-border-strong);--plim-color-field-border-focus: var(--plim-color-primary);--plim-color-field-border-invalid: var(--plim-color-danger);--plim-color-placeholder: var(--plim-color-text-subtle);--plim-shadow-field-inset: inset 0 1px 2px color-mix(in srgb, var(--plim-color-text) 6%, transparent);--plim-overlay-max-width: var(--plim-sidebar-width);--plim-dialog-max-width: 28rem;--plim-bottom-sheet-max-height: 32rem;--plim-chat-panel-max-width: 24rem;--plim-chat-panel-min-height: 24rem;--plim-chat-panel-max-height: calc(100vh - var(--plim-chat-widget-offset-bottom) - var(--plim-space-6));--plim-chat-panel-messages-min-height: 10rem;--plim-chat-panel-messages-max-height: 20rem;--plim-chat-launcher-size: 3rem;--plim-chat-widget-offset-bottom: calc(var(--plim-space-6) + var(--plim-chat-launcher-size) + var(--plim-space-3));--plim-timeline-marker-size: .75rem;--plim-sticky-note-rotation: -1.5deg;--plim-select-panel-max-height: 16rem;--plim-color-select-option-highlight: var(--plim-color-surface);--plim-color-select-option-active: color-mix(in srgb, var(--plim-color-primary) 16%, transparent);--plim-color-select-option-selected: var(--plim-color-primary);--plim-datepicker-nav-size: var(--plim-space-8);--plim-datepicker-day-size: var(--plim-space-10);--plim-datepicker-cell-width: 4.5rem;--plim-datepicker-weekday-height: var(--plim-icon-size-xl);--plim-density-table-cell-padding-y: var(--plim-space-3);--plim-density-table-cell-padding-x: var(--plim-space-4);--plim-density-table-cell-padding-y-compact: var(--plim-space-2);--plim-density-table-cell-padding-x-compact: var(--plim-space-3);--plim-density-list-item-padding-y: var(--plim-space-3);--plim-density-list-item-padding-y-compact: var(--plim-space-2);--plim-snackbar-stack-gap: 3.5rem;--plim-color-skeleton-base: var(--plim-color-surface);--plim-color-skeleton-highlight: color-mix(in srgb, var(--plim-color-surface-raised) 72%, white 28%)}:root{--plim-font-family: Inter, ui-sans-serif, system-ui, sans-serif;--plim-font-family-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;--plim-font-size-xs: .75rem;--plim-font-size-sm: .875rem;--plim-font-size-md: 1rem;--plim-font-size-lg: 1.125rem;--plim-font-size-subheading: 1.25rem;--plim-font-size-xl: 1.5rem;--plim-font-size-2xl: 2.25rem;--plim-font-weight-normal: 400;--plim-font-weight-medium: 500;--plim-font-weight-semibold: 600;--plim-line-height-tight: 1.2;--plim-line-height-normal: 1.5;--plim-space-1: .25rem;--plim-space-2: .5rem;--plim-space-3: .75rem;--plim-space-4: 1rem;--plim-space-5: 1.25rem;--plim-space-6: 1.5rem;--plim-space-8: 2rem;--plim-space-10: 2.5rem;--plim-space-12: 3rem;--plim-radius-sm: 4px;--plim-radius-md: 6px;--plim-radius-lg: 10px;--plim-radius-full: 9999px;--plim-shadow-sm: 0 1px 2px rgb(0 0 0 / .24);--plim-shadow-md: 0 4px 12px rgb(0 0 0 / .32);--plim-shadow-lg: 0 8px 24px rgb(0 0 0 / .4);--plim-elevation-none: none;--plim-elevation-raised: var(--plim-shadow-sm);--plim-elevation-overlay: var(--plim-shadow-md);--plim-elevation-modal: var(--plim-shadow-lg);--plim-focus-ring-color: var(--plim-color-primary);--plim-focus-ring-width: 2px;--plim-focus-ring-offset: 2px;--plim-duration-fast: .1s;--plim-duration-normal: .15s;--plim-duration-slow: .25s;--plim-duration-enter: .2s;--plim-duration-exit: .13s;--plim-duration-spin: 1s;--plim-ease-default: cubic-bezier(.4, 0, .2, 1);--plim-ease-enter: cubic-bezier(0, 0, .2, 1);--plim-ease-exit: cubic-bezier(.4, 0, 1, 1);--plim-font-variant-numeric-tabular: tabular-nums;--plim-opacity-disabled: .5;--plim-opacity-muted: .7;--plim-icon-size-sm: 1rem;--plim-icon-size-md: 1.25rem;--plim-icon-size-lg: 1.5rem;--plim-icon-size-xl: 1.75rem;--plim-chevron-size: .4rem;--plim-chevron-offset: .15rem;--plim-chevron-indent: .35rem;--plim-z-base: 0;--plim-z-raised: 10;--plim-z-sidebar: 50;--plim-z-toolbar: 90;--plim-z-header: 100;--plim-z-chat-launcher: 120;--plim-z-sidebar-overlay: 150;--plim-z-overlay: 200;--plim-z-modal: 300}:root{color-scheme:dark}[data-theme=light]{color-scheme:light;--plim-color-background: var(--plim-primitive-neutral-50);--plim-color-surface: var(--plim-primitive-neutral-100);--plim-color-surface-raised: var(--plim-primitive-white);--plim-color-border: var(--plim-primitive-neutral-200);--plim-color-border-strong: var(--plim-primitive-neutral-540);--plim-color-text: var(--plim-primitive-neutral-975);--plim-color-text-muted: var(--plim-primitive-neutral-650);--plim-color-text-subtle: var(--plim-primitive-neutral-630);--plim-color-primary: var(--plim-primitive-violet-600);--plim-color-primary-text: var(--plim-color-primary);--plim-color-primary-hover: var(--plim-primitive-violet-700);--plim-color-primary-strong: var(--plim-color-primary);--plim-color-primary-strong-hover: var(--plim-color-primary-hover);--plim-color-link: var(--plim-primitive-violet-700);--plim-color-link-hover: var(--plim-primitive-violet-750);--plim-color-success: var(--plim-primitive-green-700);--plim-color-warning: var(--plim-primitive-amber-700);--plim-color-danger: var(--plim-primitive-red-700);--plim-color-scrim: color-mix(in srgb, var(--plim-primitive-neutral-1000) 40%, transparent);--plim-color-primary-surface: color-mix( in srgb, var(--plim-color-primary) 10%, var(--plim-color-surface-raised) );--plim-color-primary-surface-border: color-mix(in srgb, var(--plim-color-primary) 22%, transparent);--plim-color-primary-surface-text: color-mix( in srgb, var(--plim-color-text) 82%, var(--plim-color-primary) 18% );--plim-color-success-surface: color-mix( in srgb, var(--plim-color-success) 8%, var(--plim-color-surface-raised) );--plim-color-success-surface-border: color-mix(in srgb, var(--plim-color-success) 20%, transparent);--plim-color-success-surface-text: color-mix( in srgb, var(--plim-color-text) 84%, var(--plim-color-success) 16% );--plim-color-warning-surface: color-mix( in srgb, var(--plim-color-warning) 10%, var(--plim-color-surface-raised) );--plim-color-warning-surface-border: color-mix(in srgb, var(--plim-color-warning) 22%, transparent);--plim-color-warning-surface-text: color-mix( in srgb, var(--plim-color-text) 84%, var(--plim-color-warning) 16% );--plim-color-danger-surface: color-mix( in srgb, var(--plim-color-danger) 10%, var(--plim-color-surface-raised) );--plim-color-danger-surface-border: color-mix(in srgb, var(--plim-color-danger) 22%, transparent);--plim-color-danger-surface-text: color-mix( in srgb, var(--plim-color-text) 84%, var(--plim-color-danger) 16% );--plim-shadow-sm: 0 1px 2px rgb(0 0 0 / .06);--plim-shadow-md: 0 4px 12px rgb(0 0 0 / .08);--plim-shadow-lg: 0 8px 24px rgb(0 0 0 / .12)}.plim-table{width:100%;border-collapse:collapse;color:var(--plim-color-text);font-size:var(--plim-font-size-sm);line-height:var(--plim-line-height-normal);text-align:start}.plim-table th,.plim-table td{box-sizing:border-box;padding:var(--plim-density-table-cell-padding-y) var(--plim-density-table-cell-padding-x);border-bottom:1px solid var(--plim-color-border);vertical-align:middle;text-align:left;font-variant-numeric:var(--plim-font-variant-numeric-tabular)}.plim-table.plim-table--compact th,.plim-table.plim-table--compact td{padding:var(--plim-density-table-cell-padding-y-compact) var(--plim-density-table-cell-padding-x-compact)}.plim-table thead th{color:var(--plim-color-text-muted);font-size:var(--plim-font-size-xs);font-weight:var(--plim-font-weight-medium);letter-spacing:.01em}.plim-table th.plim-sort-header{padding:0}.plim-table tbody tr:last-child td{border-bottom:0}.plim-table tbody tr:hover td{background:var(--plim-color-surface)}html{scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--plim-color-border) 70%,transparent) transparent}.plim-kbd{display:inline-flex;align-items:center;justify-content:center;min-width:1.25rem;padding:0 var(--plim-space-1);border:1px solid var(--plim-color-border);border-radius:var(--plim-radius-sm);background:var(--plim-color-surface);color:var(--plim-color-text-muted);font-family:var(--plim-font-family-mono);font-size:.6875rem;line-height:1.4}.plim-icon{display:inline-flex;align-items:center;justify-content:center;width:1em;height:1em;font-size:var(--plim-icon-size-md);line-height:1;color:var(--plim-color-icon);font-variation-settings:"FILL" 0,"wght" 400,"GRAD" 0,"opsz" 24}.plim-icon--sm{font-size:var(--plim-icon-size-sm)}.plim-icon--lg{font-size:var(--plim-icon-size-lg)}.plim-icon--primary{color:var(--plim-color-icon-primary)}.plim-icon--success{color:var(--plim-color-icon-success)}.plim-icon--warning{color:var(--plim-color-icon-warning)}.plim-icon--danger{color:var(--plim-color-icon-danger)}.plim-select__backdrop,.plim-autocomplete__backdrop,.plim-datepicker__backdrop,.plim-timepicker__backdrop{background:transparent}.plim-dialog__backdrop,.plim-bottom-sheet__backdrop,.plim-command-palette__backdrop{background:var(--plim-color-backdrop);animation:plim-backdrop-enter var(--plim-duration-enter) var(--plim-ease-enter)}.plim-command-palette-overlay .plim-command-palette{animation:plim-overlay-enter var(--plim-duration-enter) var(--plim-ease-enter);transform-origin:top center}.plim-dialog-overlay .plim-dialog{animation:plim-overlay-enter var(--plim-duration-enter) var(--plim-ease-enter);transform-origin:center center}.plim-bottom-sheet-overlay .plim-bottom-sheet{animation:plim-bottom-sheet-enter var(--plim-duration-enter) var(--plim-ease-enter)}.cdk-overlay-pane .plim-menu__panel,.cdk-overlay-pane .plim-select__panel,.cdk-overlay-pane .plim-autocomplete__panel{animation:plim-overlay-enter var(--plim-duration-enter) var(--plim-ease-enter);transform-origin:top left}.cdk-overlay-pane .plim-tooltip{animation:plim-overlay-enter var(--plim-duration-fast) var(--plim-ease-enter)}@keyframes plim-backdrop-enter{0%{opacity:0}to{opacity:1}}@keyframes plim-overlay-enter{0%{opacity:0;transform:translateY(calc(var(--plim-space-2) * -1)) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes plim-bottom-sheet-enter{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}.plim-snackbar-overlay{pointer-events:none}.plim-chat-widget-overlay{z-index:var(--plim-z-chat-launcher)}.plim-chat-widget-overlay .plim-chat-widget{animation:plim-chat-widget-enter var(--plim-duration-normal) var(--plim-ease-default);transform-origin:bottom right}.plim-chat-widget-overlay .plim-chat-widget.plim-chat-widget--closing{animation:plim-chat-widget-exit var(--plim-duration-normal) var(--plim-ease-default) forwards}@keyframes plim-chat-widget-enter{0%{opacity:0;transform:translateY(var(--plim-space-3)) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes plim-chat-widget-exit{0%{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(var(--plim-space-3)) scale(.96)}}@media(prefers-reduced-motion:reduce){.plim-dialog__backdrop,.plim-bottom-sheet__backdrop,.plim-command-palette__backdrop,.plim-command-palette-overlay .plim-command-palette,.plim-dialog-overlay .plim-dialog,.plim-bottom-sheet-overlay .plim-bottom-sheet,.cdk-overlay-pane .plim-menu__panel,.cdk-overlay-pane .plim-tooltip,.cdk-overlay-pane .plim-select__panel,.cdk-overlay-pane .plim-autocomplete__panel,.plim-chat-widget-overlay .plim-chat-widget,.plim-chat-widget-overlay .plim-chat-widget.plim-chat-widget--closing{animation:none}}:root{--portfolio-accent-soft: #c4b5fd;--portfolio-accent-warm: #d4c4f7;--plim-color-primary: var(--plim-primitive-violet-500);--plim-color-primary-text: var(--plim-primitive-violet-450);--plim-color-primary-hover: var(--plim-primitive-violet-400);--plim-color-primary-strong: var(--plim-primitive-violet-strong);--plim-color-primary-strong-hover: var(--plim-primitive-violet-strong-hover);--plim-color-link: var(--plim-primitive-violet-400);--plim-color-link-hover: var(--plim-primitive-violet-300);--plim-color-primary-surface: color-mix(in srgb, var(--plim-color-primary) 14%, var(--plim-color-surface));--plim-color-primary-surface-border: color-mix(in srgb, var(--plim-color-primary) 30%, transparent);--plim-color-primary-surface-text: color-mix( in srgb, var(--plim-color-text) 74%, var(--plim-color-primary) 26% );--plim-focus-ring-color: var(--plim-primitive-violet-400);--plim-radius-sm: 5px;--plim-radius-md: 8px;--plim-radius-lg: 12px;--portfolio-section-gap: var(--plim-space-8);--portfolio-page-gap: var(--plim-space-6)}body{background:radial-gradient(ellipse 70rem 28rem at 8% -4rem,color-mix(in srgb,var(--plim-color-primary) 22%,transparent),transparent 68%),var(--plim-color-background);background-attachment:fixed}.page{gap:var(--portfolio-page-gap)}.page:not(.admin-page):not(.admin-edit)>h1{max-width:40rem}.page:not(.admin-page):not(.admin-edit)>.page__lead{max-width:42rem}.landing{gap:var(--portfolio-section-gap)}.page h1{font-size:clamp(1.85rem,3.2vw,2.35rem);font-weight:var(--plim-font-weight-semibold);letter-spacing:-.035em;line-height:1.1}.page-section plim-card,.landing plim-card:not(.admin-page__card){--plim-card-border-color: color-mix(in srgb, var(--plim-color-border) 88%, var(--plim-color-primary) 12%)}.page-section__lead,.page__lead{max-width:42rem}.page-section{display:flex;flex-direction:column;gap:var(--plim-space-4);min-width:0;max-width:100%}.page-section__header{align-items:baseline;display:flex;flex-wrap:wrap;gap:var(--plim-space-3);justify-content:space-between}.page-section__header>div{display:flex;flex:1 1 16rem;flex-direction:column;gap:var(--plim-space-2);min-width:0}.page-section__header h2,.page-section>h2{font-size:clamp(1.45rem,2.2vw,1.75rem);font-weight:var(--plim-font-weight-semibold);letter-spacing:-.03em;line-height:1.15;margin:0}.page-section__lead{color:var(--plim-color-text-muted);font-size:var(--plim-font-size-md);line-height:var(--plim-line-height-normal);margin:0}.card-grid{display:grid;gap:var(--plim-space-4);grid-template-columns:minmax(0,1fr);min-width:0}@media(width>=40rem){.card-grid--2{grid-template-columns:repeat(2,minmax(0,1fr))}.card-grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}}.project-card__header{align-items:flex-start;display:flex;flex-wrap:wrap;gap:var(--plim-space-3);justify-content:space-between}.project-card__header h2,.project-card__header h3{font-size:var(--plim-font-size-lg);font-weight:var(--plim-font-weight-semibold);line-height:var(--plim-line-height-tight);margin:0}.project-card__summary{color:var(--plim-color-text-muted);line-height:var(--plim-line-height-normal);margin:0 0 var(--plim-space-3)}.project-card__footer{margin-top:auto;padding-top:var(--plim-space-3)}.app-scrollbar{scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--plim-color-border) 70%,transparent) transparent}.app-scrollbar::-webkit-scrollbar{width:.375rem}.app-scrollbar::-webkit-scrollbar-track{background:transparent}.app-scrollbar::-webkit-scrollbar-thumb{border-radius:var(--plim-radius-full);background:color-mix(in srgb,var(--plim-color-border) 70%,transparent)}.app-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--plim-color-border)}.app-shell{min-height:100%;overflow-x:clip;max-width:100%}.app-shell__header{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:color-mix(in srgb,var(--plim-color-surface) 90%,transparent);box-shadow:0 1px color-mix(in srgb,var(--plim-color-primary) 22%,transparent);z-index:calc(var(--plim-z-sidebar-overlay) + 1)}.app-shell__end{gap:var(--plim-space-3)}.app-shell__auth{flex:0 0 auto}@media(width>=64rem){.app-shell__auth{border-left:1px solid color-mix(in srgb,var(--plim-color-border) 65%,transparent);margin-left:var(--plim-space-1);padding-left:var(--plim-space-4);padding-right:var(--plim-space-1)}}.app-shell__start,.app-shell__end{align-items:center;display:flex;gap:var(--plim-space-4);min-width:0}.app-shell__end{justify-content:flex-end}.app-shell__brand{align-items:center;border-radius:var(--plim-radius-md);color:inherit;display:inline-flex;flex:0 0 auto;gap:var(--plim-space-2);text-decoration:none}.app-shell__brand:focus-visible{outline:var(--plim-focus-ring-width) solid var(--plim-focus-ring-color);outline-offset:var(--plim-focus-ring-offset)}.app-shell__logo-mark{display:block;height:1.75rem;width:1.75rem}.app-shell__brand-name{color:var(--plim-color-primary-text);font-size:var(--plim-font-size-md);font-weight:var(--plim-font-weight-semibold);letter-spacing:-.03em}.app-shell__menu-toggle-wrap{display:block;flex-shrink:0}.app-shell__menu-toggle{padding:0;width:var(--plim-button-height)}.app-shell__menu-icon{background:currentColor;border-radius:var(--plim-radius-full);display:block;height:2px;margin:0 auto;position:relative;transition:background-color var(--plim-duration-normal) var(--plim-ease-default);width:1.125rem}.app-shell__menu-icon:before,.app-shell__menu-icon:after{background:currentColor;border-radius:var(--plim-radius-full);content:"";height:2px;left:0;position:absolute;transition:transform var(--plim-duration-normal) var(--plim-ease-default);width:100%}.app-shell__menu-icon:before{top:-6px}.app-shell__menu-icon:after{top:6px}@media(prefers-reduced-motion:reduce){.app-shell__menu-icon{transition:none}.app-shell__menu-icon:before,.app-shell__menu-icon:after{transition:none}}.app-shell__menu-icon--open{background:transparent}.app-shell__menu-icon--open:before{top:0;transform:rotate(45deg)}.app-shell__menu-icon--open:after{top:0;transform:rotate(-45deg)}.app-shell__backdrop{background:var(--plim-color-backdrop);border:0;cursor:pointer;inset:var(--plim-header-height) 0 0;position:fixed;z-index:var(--plim-z-sidebar-overlay)}.app-shell__sidebar{display:flex;flex-direction:column;gap:var(--plim-space-2)}.app-shell__main{box-sizing:border-box;margin:0 auto;max-width:72rem;min-height:calc(100dvh - var(--plim-header-height));min-width:0;padding:var(--plim-space-8) var(--plim-space-6) var(--plim-space-8);width:100%}.app-shell__footer{align-items:center;border-top:1px solid color-mix(in srgb,var(--plim-color-primary) 28%,var(--plim-color-border));box-sizing:border-box;display:flex;flex-wrap:wrap;gap:var(--plim-space-3) var(--plim-space-6);justify-content:space-between;margin:0 auto;max-width:72rem;min-width:0;padding:var(--plim-space-5) var(--plim-space-6) var(--plim-space-8);width:100%}.app-shell__footer-copy{color:var(--plim-color-text-muted);font-size:var(--plim-font-size-sm);margin:0}.app-shell__footer-nav{display:flex;flex-wrap:wrap;gap:var(--plim-space-3);min-width:0}.app-shell__footer-link{color:var(--plim-color-text-muted);font-size:var(--plim-font-size-sm);text-decoration:none}.app-shell__footer-link:hover{color:var(--plim-color-link)}@media(width>=64rem){.app-shell__end{flex:1;gap:var(--plim-space-3);min-width:0}.app-shell__menu-toggle-wrap,.app-shell__backdrop,.app-shell__mobile-nav{display:none}}@media(width<40rem){.app-shell__brand-name{display:none}.app-shell__main,.app-shell__footer{padding-inline:var(--plim-space-4)}.app-shell__start{gap:var(--plim-space-2)}app-shell ::ng-deep .plim-chat-widget-host--fixed{right:var(--plim-space-4);max-width:calc(100vw - 2 * var(--plim-space-4))}}.admin-ai-layout{display:grid;gap:var(--plim-space-5)}@media(min-width:960px){.admin-ai-layout{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);align-items:start}}@media(min-width:960px){.admin-ai-layout--analysis-first{grid-template-columns:minmax(0,1fr) minmax(0,1.2fr)}}.admin-ai-panel{display:flex;flex-direction:column;gap:var(--plim-space-4)}.admin-ai-panel h2,.admin-ai-panel h3{margin:0;font-size:var(--plim-font-size-lg)}.admin-ai-panel h3{font-size:var(--plim-font-size-md);margin-block-end:var(--plim-space-2)}.admin-ai-section-header{display:flex;align-items:center;justify-content:space-between;gap:var(--plim-space-3)}.admin-ai-section-header h2{font-size:var(--plim-font-size-lg);margin:0}.admin-ai-field{display:flex;flex-direction:column;gap:var(--plim-space-2)}.admin-ai-field span{font-weight:600}.admin-ai-chat{min-height:24rem;border:1px solid var(--plim-color-border);border-radius:var(--plim-radius-md)}.admin-ai-loading{display:flex;justify-content:center;padding:var(--plim-space-3)}.admin-ai-actions{display:flex;gap:var(--plim-space-3);margin-block-start:var(--plim-space-5);padding-block-start:var(--plim-space-4);border-top:1px solid var(--plim-color-border)}.admin-ai-empty,.admin-ai-muted{color:var(--plim-color-text-muted);margin:0}.admin-ai-error{color:var(--plim-color-danger);margin:0 0 var(--plim-space-4)}.admin-ai-help{padding:var(--plim-space-3);margin-block-end:var(--plim-space-3);border:1px solid var(--plim-color-border);border-radius:var(--plim-radius-md);background:color-mix(in srgb,var(--plim-color-primary) 6%,transparent)}.admin-ai-help p{margin:0;white-space:pre-wrap}.admin-ai-composer-actions{display:flex;gap:var(--plim-space-3);margin-block-end:var(--plim-space-3)}.admin-ai-sync{display:flex;flex-direction:column;gap:var(--plim-space-3);margin-bottom:var(--plim-space-6)}.admin-ai-sync h2{font-size:var(--plim-font-size-lg);margin:0}.admin-ai-sync p{color:var(--plim-color-text-muted);margin:0}.admin-ai-sync-actions{align-items:center;display:flex;flex-wrap:wrap;gap:var(--plim-space-3)}.admin-ai-sync-result{display:grid;gap:var(--plim-space-3);grid-template-columns:repeat(2,minmax(0,1fr));margin:0}@media(width>=40rem){.admin-ai-sync-result{grid-template-columns:repeat(4,minmax(0,1fr))}}.admin-ai-sync-result dt{color:var(--plim-color-text-muted);font-size:var(--plim-font-size-xs);margin:0}.admin-ai-sync-result dd{font-size:var(--plim-font-size-lg);font-weight:var(--plim-font-weight-semibold);margin:0}.admin-ai-sync-error{color:var(--plim-color-danger, #d14343);margin:0}.admin-ai-results{display:flex;flex-direction:column;gap:var(--plim-space-4);padding-block-start:var(--plim-space-3);border-top:1px solid var(--plim-color-border)}.admin-ai-results ul{margin:0;padding-inline-start:var(--plim-space-5)}.admin-ai-score{display:flex;align-items:center;gap:var(--plim-space-3)}.admin-ai-score-label{font-weight:600}.admin-ai-review-queue{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--plim-space-2)}.admin-ai-review-item{width:100%;text-align:left;padding:var(--plim-space-3);border:1px solid var(--plim-color-border);border-radius:var(--plim-radius-md);background:transparent;cursor:pointer;display:flex;flex-direction:column;gap:var(--plim-space-1)}.admin-ai-review-item strong{font-size:var(--plim-font-size-md)}.admin-ai-review-item span{color:var(--plim-color-text-muted);font-size:var(--plim-font-size-sm)}.admin-ai-review-item--selected{border-color:var(--plim-color-primary);background:color-mix(in srgb,var(--plim-color-primary) 8%,transparent)}.admin-ai-review-detail{display:flex;flex-direction:column;gap:var(--plim-space-3);padding-top:var(--plim-space-3);border-top:1px solid var(--plim-color-border)}.admin-ai-review-detail h3,.admin-ai-review-detail p{margin:0}.admin-ai-review-content{white-space:pre-wrap}.admin-ai-review-actions{display:flex;gap:var(--plim-space-3)}html{height:100%;scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--plim-color-border) 70%,transparent) transparent}html::-webkit-scrollbar{width:.375rem}html::-webkit-scrollbar-track{background:transparent}html::-webkit-scrollbar-thumb{border-radius:var(--plim-radius-full);background:color-mix(in srgb,var(--plim-color-border) 70%,transparent)}html::-webkit-scrollbar-thumb:hover{background:var(--plim-color-border)}html{--mat-sys-background: light-dark(#faf9fd, #121316);--mat-sys-error: light-dark(#ba1a1a, #ffb4ab);--mat-sys-error-container: light-dark(#ffdad6, #93000a);--mat-sys-inverse-on-surface: light-dark(#f2f0f4, #2f3033);--mat-sys-inverse-primary: light-dark(#abc7ff, #005cbb);--mat-sys-inverse-surface: light-dark(#2f3033, #e3e2e6);--mat-sys-on-background: light-dark(#1a1b1f, #e3e2e6);--mat-sys-on-error: light-dark(#ffffff, #690005);--mat-sys-on-error-container: light-dark(#93000a, #ffdad6);--mat-sys-on-primary: light-dark(#ffffff, #002f65);--mat-sys-on-primary-container: light-dark(#00458f, #d7e3ff);--mat-sys-on-primary-fixed: light-dark(#001b3f, #001b3f);--mat-sys-on-primary-fixed-variant: light-dark(#00458f, #00458f);--mat-sys-on-secondary: light-dark(#ffffff, #283041);--mat-sys-on-secondary-container: light-dark(#3e4759, #dae2f9);--mat-sys-on-secondary-fixed: light-dark(#131c2b, #131c2b);--mat-sys-on-secondary-fixed-variant: light-dark(#3e4759, #3e4759);--mat-sys-on-surface: light-dark(#1a1b1f, #e3e2e6);--mat-sys-on-surface-variant: light-dark(#44474e, #e0e2ec);--mat-sys-on-tertiary: light-dark(#ffffff, #0001ac);--mat-sys-on-tertiary-container: light-dark(#0000ef, #e0e0ff);--mat-sys-on-tertiary-fixed: light-dark(#00006e, #00006e);--mat-sys-on-tertiary-fixed-variant: light-dark(#0000ef, #0000ef);--mat-sys-outline: light-dark(#74777f, #8e9099);--mat-sys-outline-variant: light-dark(#c4c6d0, #44474e);--mat-sys-primary: light-dark(#005cbb, #abc7ff);--mat-sys-primary-container: light-dark(#d7e3ff, #00458f);--mat-sys-primary-fixed: light-dark(#d7e3ff, #d7e3ff);--mat-sys-primary-fixed-dim: light-dark(#abc7ff, #abc7ff);--mat-sys-scrim: light-dark(#000000, #000000);--mat-sys-secondary: light-dark(#565e71, #bec6dc);--mat-sys-secondary-container: light-dark(#dae2f9, #3e4759);--mat-sys-secondary-fixed: light-dark(#dae2f9, #dae2f9);--mat-sys-secondary-fixed-dim: light-dark(#bec6dc, #bec6dc);--mat-sys-shadow: light-dark(#000000, #000000);--mat-sys-surface: light-dark(#faf9fd, #121316);--mat-sys-surface-bright: light-dark(#faf9fd, #38393c);--mat-sys-surface-container: light-dark(#efedf0, #1f2022);--mat-sys-surface-container-high: light-dark(#e9e7eb, #292a2c);--mat-sys-surface-container-highest: light-dark(#e3e2e6, #343537);--mat-sys-surface-container-low: light-dark(#f4f3f6, #1a1b1f);--mat-sys-surface-container-lowest: light-dark(#ffffff, #0d0e11);--mat-sys-surface-dim: light-dark(#dbd9dd, #121316);--mat-sys-surface-tint: light-dark(#005cbb, #abc7ff);--mat-sys-surface-variant: light-dark(#e0e2ec, #44474e);--mat-sys-tertiary: light-dark(#343dff, #bec2ff);--mat-sys-tertiary-container: light-dark(#e0e0ff, #0000ef);--mat-sys-tertiary-fixed: light-dark(#e0e0ff, #e0e0ff);--mat-sys-tertiary-fixed-dim: light-dark(#bec2ff, #bec2ff);--mat-sys-neutral-variant20: #2d3038;--mat-sys-neutral10: #1a1b1f;--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 Roboto;--mat-sys-body-large-font: Roboto;--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 Roboto;--mat-sys-body-medium-font: Roboto;--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 Roboto;--mat-sys-body-small-font: Roboto;--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 Roboto;--mat-sys-display-large-font: Roboto;--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 Roboto;--mat-sys-display-medium-font: Roboto;--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 Roboto;--mat-sys-display-small-font: Roboto;--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 Roboto;--mat-sys-headline-large-font: Roboto;--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 Roboto;--mat-sys-headline-medium-font: Roboto;--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 Roboto;--mat-sys-headline-small-font: Roboto;--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 Roboto;--mat-sys-label-large-font: Roboto;--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: 700;--mat-sys-label-medium: 500 .75rem / 1rem Roboto;--mat-sys-label-medium-font: Roboto;--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: 700;--mat-sys-label-small: 500 .688rem / 1rem Roboto;--mat-sys-label-small-font: Roboto;--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 Roboto;--mat-sys-title-large-font: Roboto;--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 Roboto;--mat-sys-title-medium-font: Roboto;--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 Roboto;--mat-sys-title-small-font: Roboto;--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}body{color-scheme:dark;background-color:var(--plim-color-background);color:var(--plim-color-text);font-family:var(--plim-font-family);margin:0;height:100%;overflow-x:clip}.page{display:flex;flex-direction:column;gap:var(--plim-space-4);padding-block-start:var(--plim-space-2);min-width:0;max-width:100%}.page h1{margin:0;font-size:clamp(1.85rem,3.2vw,2.35rem);font-weight:var(--plim-font-weight-semibold);letter-spacing:-.035em;line-height:1.1}.page__lead{margin:0;color:var(--plim-color-text-muted);font-size:var(--plim-font-size-md);line-height:var(--plim-line-height-normal)}.page__note{margin:0;color:var(--plim-color-text-muted)}.material-symbols-outlined{font-size:var(--plim-icon-size-md);font-variation-settings:"FILL" 0,"wght" 400,"GRAD" 0,"opsz" 24;-webkit-user-select:none;user-select:none}.page__empty{display:flex;flex-direction:column;gap:var(--plim-space-2)}.page__empty-icon{font-size:var(--plim-icon-size-lg);color:var(--plim-color-text-muted)}.tech-chips{flex-wrap:wrap}
