.avatar{background:var(--color-accent);color:var(--color-on-accent);font-family:var(--font-display);letter-spacing:.02em;border-radius:50%;flex-shrink:0;place-items:center;font-weight:700;display:inline-grid}.avatar--sm{width:28px;height:28px;font-size:var(--text-sm)}.avatar--md{width:36px;height:36px;font-size:var(--text-lg)}.avatar--lg{width:56px;height:56px;font-size:var(--text-2xl)}.badge{border-radius:var(--radius-pill);height:22px;font-size:var(--text-xs);letter-spacing:.02em;white-space:nowrap;align-items:center;gap:4px;padding:0 8px;font-weight:600;display:inline-flex}.badge svg{width:12px;height:12px}.badge--neutral{background:var(--color-surface-2);color:var(--color-text-2);box-shadow:inset 0 0 0 1px var(--color-border)}.badge--accent{background:var(--color-accent-soft);color:var(--color-accent)}.badge--marker{background:var(--color-marker);color:var(--color-on-marker)}.badge--positive{background:var(--color-positive-soft);color:var(--color-positive)}.badge--negative{background:var(--color-negative-soft);color:var(--color-negative)}.badge--highlight{background:var(--color-highlight-soft);color:var(--color-highlight-text)}.btn{--btn-h:38px;justify-content:center;align-items:center;gap:var(--space-2);height:var(--btn-h);padding:0 var(--space-4);border-radius:var(--radius-sm);font-family:var(--font-sans);font-size:var(--text-md);white-space:nowrap;cursor:pointer;transition:background-color var(--duration-fast) var(--ease-out), border-color var(--duration-fast) var(--ease-out), color var(--duration-fast) var(--ease-out), transform var(--duration-fast) var(--ease-out);border:1px solid #0000;font-weight:600;line-height:1;display:inline-flex}a.btn:hover{text-decoration:none}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn svg{flex-shrink:0;width:1.1em;height:1.1em}.btn--sm{--btn-h:30px;padding:0 var(--space-3);font-size:var(--text-sm)}.btn--lg{--btn-h:46px;padding:0 var(--space-6);font-size:var(--text-lg)}.btn--block{width:100%;display:flex}.btn--primary{background:var(--color-accent);color:var(--color-on-accent)}.btn--primary:hover:not(:disabled){background:var(--color-accent-hover)}.btn--secondary{background:var(--color-surface);border-color:var(--color-border-strong);color:var(--color-text)}.btn--secondary:hover:not(:disabled){border-color:var(--color-accent-border);background:var(--color-surface-2)}.btn--ghost{color:var(--color-text-2);background:0 0}.btn--ghost:hover:not(:disabled){background:var(--color-accent-soft);color:var(--color-text)}.btn--danger{background:var(--color-negative-soft);color:var(--color-negative);border-color:#0000}.btn--danger:hover:not(:disabled){background:var(--color-negative);color:var(--color-text-inverse)}.btn--icon{width:var(--btn-h);padding:0}.btn__spinner{animation:.8s linear infinite btn-spin}@keyframes btn-spin{to{transform:rotate(360deg)}}.ui-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-1);padding:var(--space-5);gap:var(--space-4);flex-direction:column;min-width:0;display:flex}.ui-card--flush{gap:0;padding:0;overflow:hidden}.ui-card--flush>.ui-card__header{padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--color-border)}.ui-card__header{justify-content:space-between;align-items:flex-start;gap:var(--space-3);display:flex}.ui-card__heading{flex-direction:column;gap:2px;min-width:0;display:flex}.ui-card__title{font-size:var(--text-xl)}.ui-card__actions{gap:var(--space-2);flex-shrink:0;display:flex}.ui-card section+section{padding-top:var(--space-5);border-top:1px solid var(--color-border)}.ui-card__hint{color:var(--color-text-2);font-size:var(--text-sm)}@media (width<=640px){.ui-card{padding:var(--space-4);border-radius:var(--radius-md)}}.dialog__overlay{z-index:100;background:var(--color-overlay);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:dialog-fade var(--duration-base) var(--ease-out);position:fixed;inset:0}.dialog{z-index:101;background:var(--color-surface);max-height:calc(100svh - 48px);color:var(--color-text);border:1px solid var(--color-border);box-shadow:var(--shadow-3);outline:none;flex-direction:column;display:flex;position:fixed}.dialog--dialog{border-radius:var(--radius-lg);width:calc(100vw - 32px);animation:dialog-pop var(--duration-base) var(--ease-out);top:50%;left:50%;transform:translate(-50%,-50%)}.dialog--sm{max-width:400px}.dialog--md{max-width:540px}.dialog--lg{max-width:780px}.dialog--sheet-right{border-radius:var(--radius-lg) 0 0 var(--radius-lg);width:min(440px,100vw);max-height:none;animation:sheet-in-right var(--duration-base) var(--ease-out);top:0;bottom:0;right:0}.dialog__header{align-items:flex-start;gap:var(--space-3);padding:var(--space-5) var(--space-5) var(--space-3);display:flex}.dialog__heading{gap:var(--space-1);flex-direction:column;flex:1;display:flex}.dialog__title{font-size:var(--text-2xl)}.dialog__description{font-size:var(--text-sm);color:var(--color-text-2)}.dialog__close{border-radius:var(--radius-sm);width:32px;height:32px;color:var(--color-text-2);background:0 0;border:0;place-items:center;margin:-4px -4px 0 0;display:grid}.dialog__close:hover{background:var(--color-surface-2);color:var(--color-text)}.dialog__close svg{width:18px;height:18px}.dialog__body{padding:var(--space-2) var(--space-5) var(--space-5);gap:var(--space-4);flex-direction:column;display:flex;overflow-y:auto}.dialog__footer{justify-content:flex-end;gap:var(--space-2);padding:var(--space-4) var(--space-5);border-top:1px solid var(--color-border);background:var(--color-surface-2);border-radius:0 0 var(--radius-lg) var(--radius-lg);display:flex}@media (width<=640px){.dialog--dialog{border-radius:var(--radius-xl) var(--radius-xl) 0 0;width:100vw;max-width:none;padding-bottom:env(safe-area-inset-bottom);animation:sheet-in-bottom var(--duration-base) var(--ease-out);top:auto;bottom:0;left:0;transform:none}.dialog--dialog:before{content:"";width:40px;height:4px;margin-top:var(--space-2);border-radius:var(--radius-pill);background:var(--color-border-strong);align-self:center}.dialog__footer{border-radius:0;flex-direction:column-reverse}.dialog__footer .btn{width:100%}}@keyframes dialog-fade{0%{opacity:0}}@keyframes dialog-pop{0%{opacity:0;transform:translate(-50%,-48%)scale(.97)}}@keyframes sheet-in-bottom{0%{transform:translateY(100%)}}@keyframes sheet-in-right{0%{transform:translate(100%)}}.data-table{max-height:var(--data-table-max-height,none);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);overflow:auto}.data-table table{border-collapse:separate;border-spacing:0;font-variant-numeric:tabular-nums;width:100%}.data-table__caption{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.data-table th,.data-table td{padding:10px var(--space-4);border-bottom:1px solid var(--color-border);white-space:nowrap}.data-table--dense th,.data-table--dense td{padding:6px var(--space-3)}.data-table thead th{z-index:1;background:var(--color-surface-2);font-family:var(--font-sans);font-size:var(--text-xs);letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-3);font-weight:600;position:sticky;top:0}.data-table tbody tr:last-child td{border-bottom:0}.data-table__cell--right{text-align:right}.data-table__cell--center{text-align:center}.data-table__sort{font:inherit;letter-spacing:inherit;text-transform:inherit;color:inherit;background:0 0;border:0;align-items:center;gap:4px;padding:0;display:inline-flex}.data-table__cell--right .data-table__sort{flex-direction:row-reverse}.data-table__sort:hover{color:var(--color-text)}.data-table__sort svg{width:13px;height:13px}.data-table__sort-idle{opacity:.4}.data-table__row--clickable{cursor:pointer}.data-table tbody .data-table__row:hover td{background:var(--color-surface-2)}.data-table__row:focus-visible{outline:2px solid var(--color-accent);outline-offset:-2px}.data-table__row--selected td,.data-table tbody .data-table__row--selected:hover td{background:var(--color-accent-soft)}.data-table__row--selected td:first-child{box-shadow:inset 3px 0 0 var(--color-accent)}.data-table__row--muted td{color:var(--color-text-3)}.data-table__row--marker td:first-child{box-shadow:inset 3px 0 0 var(--color-marker)}.data-table__row--highlight td{background:var(--color-highlight-soft)}.data-table__col--highlight{background:var(--color-accent-soft)}.data-table thead .data-table__col--highlight{color:var(--color-accent);background:color-mix(in srgb, var(--color-accent-soft), var(--color-surface-2))}.data-cards{gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.data-cards .data-table__row{padding:var(--space-3) var(--space-4);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md)}.data-cards .data-table__row--selected{border-color:var(--color-accent);box-shadow:inset 3px 0 0 var(--color-accent)}.data-cards .data-table__row--marker{box-shadow:inset 3px 0 0 var(--color-marker)}.data-cards .data-table__row--muted{opacity:.6}.data-cards__primary{margin-bottom:var(--space-2);font-weight:600}.data-cards__fields{gap:var(--space-2) var(--space-3);grid-template-columns:repeat(auto-fill,minmax(96px,1fr));margin:0;display:grid}.data-cards__field dt{letter-spacing:.05em;text-transform:uppercase;color:var(--color-text-3);font-size:11px;font-weight:600}.data-cards__field dd{font-variant-numeric:tabular-nums;margin:0}.data-cards__field--highlight dd{color:var(--color-accent);font-weight:600}.empty-state{text-align:center;align-items:center;gap:var(--space-2);padding:var(--space-10) var(--space-6);border:1px dashed var(--color-border-strong);border-radius:var(--radius-lg);flex-direction:column;display:flex}.empty-state--compact{padding:var(--space-6) var(--space-4);border:0}.empty-state__icon{width:52px;height:52px;margin-bottom:var(--space-2);background:var(--color-accent-soft);color:var(--color-accent);border-radius:50%;place-items:center;display:grid}.empty-state__icon svg{width:24px;height:24px}.empty-state__title{font-size:var(--text-xl)}.empty-state__description{max-width:420px;font-size:var(--text-sm);color:var(--color-text-2)}.empty-state__action{margin-top:var(--space-3)}.field{flex-direction:column;gap:6px;min-width:0;display:flex}.field__label{font-size:var(--text-sm);color:var(--color-text);font-weight:600}.field__control{width:100%;min-height:40px}.field__control--sm{min-height:32px;font-size:var(--text-sm);padding:5px 10px}select.field__control--sm{padding-right:30px}textarea.field__control{resize:vertical;min-height:96px;line-height:1.5}.field--invalid .field__control{border-color:var(--color-negative)}.field--invalid .field__control:focus{box-shadow:0 0 0 3px var(--color-negative-soft)}.field__hint{font-size:var(--text-xs);color:var(--color-text-3)}.field__error{font-size:var(--text-xs);color:var(--color-negative);font-weight:500}.field__affix{align-items:center;display:flex;position:relative}.field__affix .field__control{padding-right:52px}.field__suffix{font-size:var(--text-sm);color:var(--color-text-3);pointer-events:none;position:absolute;right:12px}.field-check{align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--color-text);cursor:pointer;flex-direction:row;font-weight:500;display:inline-flex}.menu{z-index:150;min-width:220px;padding:var(--space-1);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-2);animation:menu-in var(--duration-fast) var(--ease-out)}.menu__item{align-items:center;gap:var(--space-3);padding:8px var(--space-3);border-radius:var(--radius-sm);font-size:var(--text-md);color:var(--color-text);cursor:pointer;-webkit-user-select:none;user-select:none;outline:none;display:flex}.menu__item>span{flex:1}.menu__item svg{width:16px;height:16px;color:var(--color-text-3)}.menu__item[data-highlighted]{background:var(--color-accent-soft)}.menu__item[data-disabled]{opacity:.5;cursor:not-allowed}.menu__item--danger,.menu__item--danger svg{color:var(--color-negative)}.menu__item>.menu__indicator{flex:none;display:inline-flex}.menu__indicator svg{color:var(--color-accent)}.menu__label{padding:6px var(--space-3) 4px;font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--color-text-3);font-size:11px}.menu__separator{height:1px;margin:var(--space-1) 0;background:var(--color-border)}@keyframes menu-in{0%{opacity:0;transform:translateY(-4px)}}.page-header{gap:var(--space-2);margin-bottom:var(--space-6);flex-direction:column;display:flex}.page-header__back{font-size:var(--text-sm);color:var(--color-text-2);align-self:flex-start;align-items:center;gap:2px;margin-left:-4px;font-weight:600;display:inline-flex}.page-header__back:hover{color:var(--color-accent);text-decoration:none}.page-header__back svg{width:16px;height:16px}.page-header__row{justify-content:space-between;align-items:flex-end;gap:var(--space-4);flex-wrap:wrap;display:flex}.page-header__heading{gap:var(--space-1);flex-direction:column;min-width:0;display:flex}.page-header__title{font-size:var(--text-4xl);overflow-wrap:anywhere}.page-header__description{max-width:640px;color:var(--color-text-2)}.page-header__actions{gap:var(--space-2);flex-wrap:wrap;display:flex}@media (width<=640px){.page-header{margin-bottom:var(--space-5)}.page-header__title{font-size:var(--text-3xl)}}.progress{border-radius:var(--radius-pill);background:var(--color-surface-sunken);height:10px;overflow:hidden}.progress__fill{border-radius:inherit;background:var(--color-accent);height:100%;transition:width var(--duration-base) var(--ease-out)}.progress--goal .progress__fill{background:linear-gradient(90deg, var(--color-accent), var(--color-marker))}.progress--positive .progress__fill{background:var(--color-positive)}.segmented{background:var(--color-surface-sunken);border:1px solid var(--color-border);border-radius:var(--radius-sm);gap:2px;padding:3px;display:inline-flex}.segmented__item{height:30px;padding:0 var(--space-3);color:var(--color-text-2);font-size:var(--text-sm);transition:background-color var(--duration-fast) var(--ease-out), color var(--duration-fast) var(--ease-out);background:0 0;border:0;border-radius:4px;align-items:center;gap:6px;font-weight:600;display:inline-flex}.segmented--sm .segmented__item{height:24px;padding:0 var(--space-2);font-size:var(--text-xs)}.segmented__item svg{width:15px;height:15px}.segmented__item:hover{color:var(--color-text)}.segmented__item--active{background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-1)}.skeleton{background:linear-gradient(90deg, var(--color-surface-sunken) 0%, var(--color-surface-2) 50%, var(--color-surface-sunken) 100%);background-size:200% 100%;animation:1.4s ease-in-out infinite skeleton-shimmer;display:block}.skeleton-group{gap:var(--space-3);flex-direction:column;display:flex}@keyframes skeleton-shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.stat-tile{gap:var(--space-1);padding:var(--space-4);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);flex-direction:column;min-width:0;display:flex;position:relative}.stat-tile:before{content:"";left:0;top:var(--space-4);bottom:var(--space-4);background:0 0;border-radius:0 3px 3px 0;width:3px;position:absolute}.stat-tile--accent:before{background:var(--color-accent)}.stat-tile--marker:before{background:var(--color-marker)}.stat-tile--highlight:before{background:var(--color-highlight)}.stat-tile__label{align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--color-text-2);white-space:nowrap;text-overflow:ellipsis;font-weight:500;display:flex;overflow:hidden}.stat-tile__label svg{width:15px;height:15px;color:var(--color-text-3);flex-shrink:0}.stat-tile__value{align-items:baseline;gap:var(--space-1);color:var(--color-text);display:flex}.stat-tile__number{font-family:var(--font-display);font-weight:600;font-size:var(--text-3xl);font-variant-numeric:tabular-nums;letter-spacing:.01em;line-height:1}.stat-tile--lg .stat-tile__number{font-size:var(--text-5xl)}.stat-tile__unit{font-family:var(--font-display);font-size:var(--text-lg);color:var(--color-text-3);font-weight:500}.stat-tile__foot{align-items:center;gap:var(--space-2);font-size:var(--text-xs);color:var(--color-text-3);flex-wrap:wrap;display:flex}.stat-tile__delta{border-radius:var(--radius-pill);align-items:center;gap:2px;padding:1px 6px 1px 3px;font-weight:600;display:inline-flex}.stat-tile__delta svg{width:13px;height:13px}.stat-tile__delta--better{color:var(--color-positive);background:var(--color-positive-soft)}.stat-tile__delta--worse{color:var(--color-negative);background:var(--color-negative-soft)}.stat-tile__delta--neutral{color:var(--color-text-2);background:var(--color-surface-2)}@media (width<=640px){.stat-tile{padding:var(--space-3)}.stat-tile__number{font-size:var(--text-2xl)}.stat-tile--lg .stat-tile__number{font-size:var(--text-4xl)}}.tabs{gap:var(--space-5);flex-direction:column;min-width:0;display:flex}.tabs__list{gap:var(--space-1);border-bottom:1px solid var(--color-border);scrollbar-width:none;display:flex;overflow-x:auto}.tabs__list::-webkit-scrollbar{display:none}.tabs__trigger{align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-3);color:var(--color-text-2);font-size:var(--text-md);white-space:nowrap;transition:color var(--duration-fast) var(--ease-out), border-color var(--duration-fast) var(--ease-out);background:0 0;border:0;border-bottom:2px solid #0000;margin-bottom:-1px;font-weight:600;display:inline-flex}.tabs__trigger svg{width:16px;height:16px}.tabs__trigger:hover{color:var(--color-text)}.tabs__trigger[data-state=active]{color:var(--color-accent);border-bottom-color:var(--color-accent)}.tabs__count{border-radius:var(--radius-pill);background:var(--color-surface-2);min-width:20px;color:var(--color-text-2);font-size:var(--text-xs);text-align:center;padding:0 6px;line-height:18px}.tabs__panel{outline:none;min-width:0}.toast-viewport{z-index:200;gap:var(--space-2);width:min(400px,100vw);padding:var(--space-4);outline:none;flex-direction:column;margin:0;list-style:none;display:flex;position:fixed;bottom:0;right:0}@media (width<=899px){.toast-viewport{bottom:calc(var(--tabbar-height) + env(safe-area-inset-bottom))}}.toast{align-items:flex-start;gap:var(--space-3);padding:var(--space-3) var(--space-3) var(--space-3) var(--space-4);background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border);border-left:3px solid var(--color-accent);border-radius:var(--radius-md);box-shadow:var(--shadow-2);display:flex}.toast[data-state=open]{animation:toast-in var(--duration-base) var(--ease-out)}.toast[data-state=closed]{animation:toast-out var(--duration-fast) ease-in forwards}.toast[data-swipe=move]{transform:translateX(var(--radix-toast-swipe-move-x))}.toast[data-swipe=end]{animation:toast-out var(--duration-fast) ease-in forwards}.toast--success{border-left-color:var(--color-positive)}.toast--error{border-left-color:var(--color-negative)}.toast__icon{width:18px;height:18px;color:var(--color-accent);flex-shrink:0;margin-top:2px}.toast--success .toast__icon{color:var(--color-positive)}.toast--error .toast__icon{color:var(--color-negative)}.toast__text{flex:1;min-width:0}.toast__title{font-weight:600;font-size:var(--text-md)}.toast__description{font-size:var(--text-sm);color:var(--color-text-2)}.toast__close{border-radius:var(--radius-sm);width:26px;height:26px;color:var(--color-text-3);background:0 0;border:0;place-items:center;display:grid}.toast__close:hover{background:var(--color-surface-2);color:var(--color-text)}.toast__close svg{width:15px;height:15px}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}}@keyframes toast-out{to{opacity:0;transform:translate(24px)}}.tooltip{z-index:300;border-radius:var(--radius-sm);background:var(--color-text);max-width:260px;color:var(--color-bg);font-size:var(--text-xs);box-shadow:var(--shadow-2);animation:tooltip-in var(--duration-fast) var(--ease-out);padding:6px 10px;font-weight:500;line-height:1.4}.tooltip__arrow{fill:var(--color-text)}@keyframes tooltip-in{0%{opacity:0;transform:scale(.96)}}
