:root{--gray-0: #ffffff;--gray-50: #f8faf9;--gray-100: #f1f5f3;--gray-200: #e4ebe7;--gray-300: #cfdad4;--gray-400: #9fb0a6;--gray-500: #6b7a72;--gray-600: #4b574f;--gray-700: #34403a;--gray-800: #1f2b25;--gray-900: #14211a;--gray-950: #0c150f;--green-50: #ecf5ef;--green-100: #d6ebdd;--green-200: #aed8bc;--green-300: #7fbf94;--green-400: #57a570;--green-500: #377d4a;--green-600: #2c6a3d;--green-700: #245532;--green-800: #1d4329;--green-900: #163220;--rose-100: #fbe3e3;--rose-300: #ee9d9d;--rose-400: #e57e7e;--rose-500: #d65a5a;--rose-600: #c34646;--amber-100: #fbeccd;--amber-400: #e0ab3f;--amber-500: #d99a2b;--space-0: 0;--space-1: .25rem;--space-2: .5rem;--space-3: 1rem;--space-4: 1.5rem;--space-5: 2rem;--space-6: 3rem;--space-7: 4rem;--font-sans: system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.375rem;--font-size-2xl: 1.75rem;--font-size-3xl: 2.25rem;--font-size-4xl: 3rem;--leading-tight: 1.2;--leading-normal: 1.5;--leading-relaxed: 1.65;--weight-regular: 400;--weight-medium: 500;--weight-semibold: 600;--weight-bold: 700;--tracking-tight: -.01em;--tracking-wide: .02em;--radius-xs: 4px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px;--radius-full: 9999px;--shadow-color: 20 33 26;--shadow-sm: 0 1px 2px rgb(var(--shadow-color) / .06);--shadow-md: 0 2px 8px rgb(var(--shadow-color) / .08);--shadow-lg: 0 10px 28px rgb(var(--shadow-color) / .1);--transition-fast: .12s;--transition-base: .2s;--ease-standard: cubic-bezier(.2, 0, .2, 1);--color-bg: var(--gray-50);--color-surface: var(--gray-0);--color-surface-2: var(--gray-100);--color-text: var(--gray-900);--color-text-muted: var(--gray-500);--color-border: var(--gray-200);--color-border-strong: var(--gray-300);--color-primary: var(--green-500);--color-primary-hover: var(--green-600);--color-primary-active: var(--green-700);--color-primary-contrast: var(--gray-0);--color-link: var(--green-600);--color-link-hover: var(--green-700);--color-success: var(--green-600);--color-danger: var(--rose-500);--color-warning: var(--amber-500);--color-focus: var(--green-500);--focus-ring: 0 0 0 3px rgb(55 125 74 / .4);--chart-up: var(--green-500);--chart-down: var(--rose-500);--chart-other: var(--gray-400);--chart-grid: var(--color-border);--chart-axis: var(--color-text-muted);--chart-1: #377d4a;--chart-2: #2f8f86;--chart-3: #7a9b3f;--chart-4: #4f6d9c;--chart-5: #d99a2b;--chart-6: #c2613f;--chart-7: #8a6aa8}@media(prefers-color-scheme:dark){:root{--color-bg: var(--gray-950);--color-surface: var(--gray-900);--color-surface-2: var(--gray-800);--color-text: #e8efea;--color-text-muted: var(--gray-400);--color-border: #2a3a31;--color-border-strong: #3a4d42;--color-primary: #4fa468;--color-primary-hover: #5fb878;--color-primary-active: #6fc787;--color-primary-contrast: var(--gray-950);--color-link: #7fbf94;--color-link-hover: #9bd0ac;--color-success: #5fb878;--color-danger: var(--rose-400);--color-warning: var(--amber-400);--color-focus: #5fb878;--focus-ring: 0 0 0 3px rgb(95 184 120 / .45);--shadow-color: 0 0 0;--shadow-sm: 0 1px 2px rgb(0 0 0 / .4);--shadow-md: 0 2px 10px rgb(0 0 0 / .45);--shadow-lg: 0 12px 30px rgb(0 0 0 / .55);--chart-up: #5fb878;--chart-down: var(--rose-400);--chart-other: var(--gray-500);--chart-1: #5fb878;--chart-2: #45b3a8;--chart-3: #9bbf5c;--chart-4: #7290c4;--chart-5: #e7b755;--chart-6: #d77f5c;--chart-7: #a98ac4}}*,*:before,*:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{min-height:100vh;background-color:var(--color-bg);color:var(--color-text);font-family:var(--font-sans);font-size:var(--font-size-base);line-height:var(--leading-normal);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,h4,h5,h6{font-family:var(--font-mono);font-weight:var(--weight-semibold);line-height:var(--leading-tight);letter-spacing:var(--tracking-tight);color:var(--color-text)}h1{font-size:var(--font-size-3xl)}h2{font-size:var(--font-size-2xl)}h3{font-size:var(--font-size-xl)}h4{font-size:var(--font-size-lg)}p{line-height:var(--leading-relaxed)}.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}a{color:var(--color-link);text-decoration:none}a:hover{color:var(--color-link-hover);text-decoration:underline}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;background:none;border:none;padding:0}button:disabled{cursor:not-allowed}img,svg{display:block;max-width:100%}:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;border-radius:var(--radius-xs)}:focus:not(:focus-visible){outline:none}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}:root{--page-max: 1872px;--header-height: 3.5rem}#app{display:flex;flex-direction:column;min-height:100dvh}.page,.app-header__inner{width:100%;max-width:var(--page-max);margin-inline:auto;padding-inline:var(--space-3)}.page{flex:1;padding-block:var(--space-5);display:flex;flex-direction:column;gap:var(--space-4)}.app-header{position:sticky;top:0;z-index:10;background:var(--color-surface);border-bottom:1px solid var(--color-border)}.app-header__inner{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);min-height:var(--header-height)}.app-header__brand{font-weight:var(--weight-semibold);font-size:var(--font-size-lg);letter-spacing:var(--tracking-tight);color:var(--color-text)}.app-header__user{display:flex;align-items:center;gap:var(--space-3)}.app-header__login{color:var(--color-text-muted);font-size:var(--font-size-sm)}.section-grid{display:grid;grid-template-columns:1fr;gap:var(--space-4)}@media(min-width:768px){.section-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.section--full{grid-column:1 / -1}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border:1px solid transparent;border-radius:var(--radius-sm);font:inherit;font-weight:var(--weight-medium);line-height:1;cursor:pointer;transition:background-color var(--transition-fast) var(--ease-standard),border-color var(--transition-fast) var(--ease-standard),color var(--transition-fast) var(--ease-standard)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn--primary{background:var(--color-primary);color:var(--color-primary-contrast)}.btn--primary:hover:not(:disabled){background:var(--color-primary-hover)}.btn--primary:active:not(:disabled){background:var(--color-primary-active)}.btn--outline{background:transparent;border-color:var(--color-border-strong);color:var(--color-text)}.btn--outline:hover:not(:disabled){border-color:var(--color-primary);color:var(--color-primary)}.btn--ghost{background:transparent;color:var(--color-text-muted);padding-inline:var(--space-3)}.btn--ghost:hover:not(:disabled){background:var(--color-surface-2);color:var(--color-text)}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-3)}.card__title{font-size:var(--font-size-2xl);font-weight:var(--weight-semibold);color:var(--color-text)}.card__body{display:flex;flex-direction:column;gap:var(--space-3)}.stat-tile{display:flex;flex-direction:column;gap:var(--space-1)}.stat-tile__value{font-family:var(--font-mono);font-size:var(--font-size-2xl);font-weight:var(--weight-semibold);color:var(--color-text);letter-spacing:var(--tracking-tight)}.stat-tile__label{font-size:calc(var(--font-size-lg));color:var(--color-text-muted)}.identity-head{display:flex;align-items:center;gap:var(--space-3)}.identity-avatar{flex:none;width:3rem;height:3rem;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-full);background:var(--color-primary);color:var(--color-primary-contrast);font-family:var(--font-mono);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-wide)}.identity-head__text{display:flex;flex-direction:column;gap:var(--space-1);min-width:0}.identity-name{font-size:var(--font-size-lg);font-weight:var(--weight-semibold);color:var(--color-text)}.identity-login{font-size:var(--font-size-sm);color:var(--color-text-muted)}.identity-fields{display:flex;flex-direction:column;gap:var(--space-2)}.identity-field{display:flex;justify-content:space-between;gap:var(--space-3);font-size:calc(var(--font-size-lg))}.identity-field__label{color:var(--color-text-muted)}.identity-field__value{color:var(--color-text);font-family:var(--font-mono);text-align:right;word-break:break-word}.xp-summary{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-4) var(--space-6, 3rem)}.xp-stats{display:flex;flex-direction:column;gap:var(--space-2);margin-inline-start:auto}.xp-stat{display:flex;align-items:baseline;gap:var(--space-2);font-size:var(--font-size-lg)}.xp-stat__label{color:var(--color-text-muted)}.xp-stat__label:after{content:":"}.xp-stat__value{font-family:var(--font-mono);font-weight:var(--weight-medium);color:var(--color-text)}.xp-headline{display:flex;flex-direction:column;gap:var(--space-1)}.xp-headline__value{font-family:var(--font-mono);font-size:var(--font-size-3xl);font-weight:var(--weight-semibold);color:var(--color-text);letter-spacing:var(--tracking-tight)}.xp-headline__label{font-size:calc(var(--font-size-lg));color:var(--color-text-muted)}.xp-charts{display:grid;grid-template-columns:1fr;gap:var(--space-5);margin-block-start:var(--space-4)}@media(min-width:768px){.xp-charts{grid-template-columns:repeat(2,minmax(0,1fr));align-items:center;gap:var(--space-6, 3rem)}}.chart-container{display:flex;align-items:center;justify-content:center;min-height:9rem;padding:var(--space-3);border:1px dashed var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-surface-2)}.chart-container__label{font-size:var(--font-size-sm);color:var(--color-text-muted)}.chart-container--filled{display:block;min-height:0;padding:var(--space-3);border:none;background:transparent}.xp-chart{overflow:visible}.xp-chart .chart__hover{transition:opacity var(--transition-fast) var(--ease-standard)}@keyframes chart-line-draw{0%{stroke-dashoffset:1}to{stroke-dashoffset:0}}@keyframes chart-area-in{0%{opacity:0}to{opacity:1}}.xp-chart .chart__line--anim{animation:chart-line-draw .9s var(--ease-standard) both}.xp-chart .chart__area--anim{animation:chart-area-in .9s var(--ease-standard) both}@media(prefers-reduced-motion:reduce){.xp-chart .chart__line--anim,.xp-chart .chart__area--anim{animation:none}}.xp-bars .bar__rect{opacity:.85;transition:opacity var(--transition-fast) var(--ease-standard)}.xp-bars .bar{cursor:default}.xp-bars .bar:focus{outline:none}.xp-bars .bar--hover .bar__rect,.xp-bars .bar--focus .bar__rect{opacity:1}.xp-bars .bar--focus .bar__rect{stroke:var(--color-focus);stroke-width:2}.xp-bars .bar__value{transition:fill var(--transition-fast) var(--ease-standard)}.xp-bars .bar--hover .bar__value,.xp-bars .bar--focus .bar__value{fill:var(--color-text);font-weight:700}@keyframes chart-bar-grow{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.xp-bars .bar__rect--anim{animation:chart-bar-grow .7s var(--ease-standard) both}@media(prefers-reduced-motion:reduce){.xp-bars .bar__rect--anim{animation:none}}.audit-gauge{overflow:visible}.audit-gauge .seg{cursor:default}.audit-gauge .seg:focus{outline:none}.audit-gauge .seg__arc{opacity:.9;transition:opacity var(--transition-fast) var(--ease-standard)}.audit-gauge .seg--hover .seg__arc,.audit-gauge .seg--focus .seg__arc{opacity:1}.audit-gauge .seg--focus .seg__arc{stroke:var(--color-focus);stroke-width:2}@keyframes gauge-sweep{0%{transform:rotate(-90deg);opacity:0}to{transform:rotate(0);opacity:1}}.audit-gauge .gauge__wedges--anim{transform-box:fill-box;transform-origin:center;animation:gauge-sweep .8s var(--ease-standard) both}@media(prefers-reduced-motion:reduce){.audit-gauge .gauge__wedges--anim{animation:none}}.audit-headline{display:flex;flex-direction:column;gap:var(--space-1)}.audit-headline__label{font-size:calc(var(--font-size-lg));color:var(--color-text-muted)}.audit-headline__value{font-family:var(--font-mono);font-size:var(--font-size-3xl);font-weight:var(--weight-semibold);color:var(--color-text);letter-spacing:var(--tracking-tight)}.audit-stats{display:flex;flex-direction:column;gap:var(--space-2);flex:1 1 12rem}.audit-body{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-5)}.audit-chart{display:flex;justify-content:center;flex:1 1 14rem}.audit-chart .chart-container{width:100%;max-width:21.25rem}.section__empty{color:var(--color-text-muted);font-size:var(--font-size-sm)}.field{display:flex;flex-direction:column;gap:var(--space-2)}.field__label{font-size:var(--font-size-sm);font-weight:var(--weight-medium);color:var(--color-text)}.field__input{padding:var(--space-2) var(--space-3);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);font:inherit}.field__input:focus-visible{border-color:var(--color-primary)}.error-banner{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-3) var(--space-4);border:1px solid var(--color-danger);border-radius:var(--radius-md);background:color-mix(in srgb,var(--color-danger) 8%,var(--color-surface))}.error-banner__msg{color:var(--color-text);font-size:var(--font-size-sm)}.spinner{display:inline-flex;align-items:center;justify-content:center;padding:var(--space-4)}.spinner__ring{width:1.5rem;height:1.5rem;border:2px solid var(--color-border-strong);border-top-color:var(--color-primary);border-radius:var(--radius-full);animation:spinner-rotate .7s linear infinite}@keyframes spinner-rotate{to{transform:rotate(360deg)}}.login{align-items:center;justify-content:center}.login .card{width:100%;max-width:22rem}.login__form{display:flex;flex-direction:column;gap:var(--space-3)}.login__error:empty{display:none}.login__actions{display:flex}.login__actions .btn{flex:1}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
