@layer components{.ui-button{--button-height: 44px;--button-padding-x: var(--space-5);--button-bg: var(--action-bg);--button-bg-hover: var(--action-bg-hover);--button-color: var(--color-on-accent);--button-border: transparent;--button-weight: var(--weight-bold);position:relative;display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:var(--button-height);margin:0;padding:0 var(--button-padding-x);border:1px solid var(--button-border);border-radius:var(--radius-ui-md);background:var(--button-bg);color:var(--button-color);font-family:var(--font-sans);font-size:var(--text-sm);font-weight:var(--button-weight);line-height:1.2;text-decoration:none;white-space:nowrap;cursor:pointer;user-select:none;transition:background var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out),transform var(--duration-instant) var(--ease-out)}.ui-button>svg,.ui-button>.lucide-icon{flex-shrink:0;width:1.25em;height:1.25em}@media(hover:hover)and (pointer:fine){.ui-button:hover{background:var(--button-bg-hover)}}.ui-button:active{transform:scale(0.98)}.ui-button:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px}.ui-button--secondary{--button-bg: var(--color-surface);--button-bg-hover: var(--color-surface-2);--button-color: var(--color-text);--button-border: var(--color-border-strong);--button-weight: var(--weight-medium)}.ui-button--secondary[aria-pressed=true]{--button-bg: var(--color-accent-soft);--button-bg-hover: var(--color-accent-soft);--button-color: var(--color-accent);--button-border: var(--color-accent)}.ui-button--ghost{--button-weight: var(--weight-medium);--button-bg: transparent;--button-bg-hover: var(--color-accent-soft);--button-color: var(--color-accent)}.ui-button--danger{--button-bg: var(--color-danger);--button-bg-hover: color-mix(in srgb, var(--color-danger) 85%, black);--button-color: var(--color-on-accent)}[data-theme=dark] .ui-button--danger{--button-color: var(--color-bg)}.ui-button--link{--button-weight: var(--weight-medium);--button-height: auto;--button-padding-x: 0;--button-bg: transparent;--button-bg-hover: transparent;--button-color: var(--color-accent);text-decoration:underline;text-underline-offset:0.2em}.ui-button--sm{--button-height: 36px;--button-padding-x: var(--space-3);font-size:0.8125rem;border-radius:var(--radius-ui-sm)}.ui-button--lg{--button-height: 48px;--button-padding-x: var(--space-6);font-size:var(--text-base)}.ui-button--icon{--button-padding-x: 0;width:var(--button-height)}.ui-button--block{display:flex;width:100%}.ui-button:disabled,.ui-button[aria-disabled=true]{opacity:0.5;cursor:not-allowed;transform:none}.ui-button:disabled:hover,.ui-button[aria-disabled=true]:hover{background:var(--button-bg)}.ui-button[aria-busy=true]{color:transparent;pointer-events:none}.ui-button[aria-busy=true]>*{visibility:hidden}.ui-button[aria-busy=true]::after{content:"";position:absolute;inset:0;margin:auto;width:1.1em;height:1.1em;border:2px solid var(--button-color);border-right-color:transparent;border-radius:50%;animation:ui-spin 0.7s linear infinite}.ui-button[data-state=done]{--button-bg: var(--color-success);--button-bg-hover: var(--color-success);--button-color: var(--color-on-accent)}[data-theme=dark] .ui-button[data-state=done]{--button-color: var(--color-bg)}}@layer components{.ui-field{display:grid;gap:var(--space-1);min-width:0}.ui-field__label{color:var(--color-text);font-size:var(--text-sm);font-weight:var(--weight-semibold)}.ui-field__control{width:100%;min-height:44px;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border-input);border-radius:var(--radius-ui-sm);background:var(--color-surface);color:var(--color-text);font:inherit;font-size:var(--text-base);caret-color:var(--color-accent);transition:border-color var(--duration-fast) var(--ease-out)}.ui-field__control::placeholder{color:var(--color-text-muted);opacity:1}@media(hover:hover)and (pointer:fine){.ui-field__control:hover:not(:disabled,[readonly]){border-color:var(--color-text-muted)}}.ui-field__control:focus{outline:none;border-color:var(--color-accent)}textarea.ui-field__control{min-height:6rem;resize:vertical;field-sizing:content}.ui-field__control:disabled{opacity:0.55;cursor:not-allowed}.ui-field__control[readonly]{background:var(--color-surface-2)}.ui-field__control:-webkit-autofill{-webkit-text-fill-color:var(--color-text);box-shadow:0 0 0 100px var(--color-surface) inset;caret-color:var(--color-accent)}.ui-field__control:-webkit-autofill:focus{box-shadow:0 0 0 100px var(--color-surface) inset}select.ui-field__control,.ui-select{appearance:none;padding-right:calc(var(--space-3) + 1.5rem);background-image:var(--ui-chevron);background-repeat:no-repeat;background-position:right var(--space-3) center;background-size:1rem 1rem;cursor:pointer;text-overflow:ellipsis}select.ui-field__control[multiple]{padding-right:var(--space-3);background-image:none}select.ui-field__control:disabled{cursor:not-allowed}select.ui-field__control option{background-color:var(--color-surface);color:var(--color-text)}input[type=date].ui-field__control,input[type=time].ui-field__control{color-scheme:light}[data-theme=dark] input[type=date].ui-field__control,[data-theme=dark] input[type=time].ui-field__control{color-scheme:dark}.ui-field__control::-webkit-calendar-picker-indicator{cursor:pointer;opacity:0.7}.ui-field__control--sm{min-height:36px;padding:var(--space-1) var(--space-2);font-size:var(--text-sm)}select.ui-field__control--sm{padding-right:calc(var(--space-2) + 1.25rem);background-position:right var(--space-2) center}.ui-field__wrap{position:relative;display:flex;align-items:center;min-width:0}.ui-field__icon{position:absolute;left:var(--space-3);display:inline-flex;width:1.125rem;height:1.125rem;color:var(--color-text-muted);pointer-events:none}.ui-field__wrap:has(.ui-field__icon) .ui-field__control{padding-left:calc(var(--space-3) + 1.125rem + var(--space-2))}.ui-field__wrap:has(.ui-field__action) .ui-field__control{padding-right:calc(var(--space-1) + 36px + var(--space-1))}.ui-field__action{position:absolute;right:var(--space-1)}.ui-field__action[hidden]{display:none}.ui-field--search .ui-field__control::-webkit-search-cancel-button,.ui-field--search .ui-field__control::-webkit-search-decoration{appearance:none}textarea.ui-field__control--composer{min-height:44px;max-height:10.5rem;field-sizing:content;resize:none;line-height:var(--leading-normal, 1.5)}.ui-field__hint{margin:0;color:var(--color-text-muted);font-size:var(--text-sm)}.ui-field__strength{display:grid;gap:var(--space-1);--strength-color: var(--color-danger)}.ui-field__strength[data-level="2"]{--strength-color: var(--color-warning)}.ui-field__strength[data-level="3"]{--strength-color: var(--color-success)}.ui-field__strength-bar{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-1)}.ui-field__strength-bar>span{height:4px;border-radius:var(--radius-full);background:var(--color-border)}.ui-field__strength[data-level="0"] .ui-field__strength-bar>span:nth-child(-n+1),.ui-field__strength[data-level="1"] .ui-field__strength-bar>span:nth-child(-n+2),.ui-field__strength[data-level="2"] .ui-field__strength-bar>span:nth-child(-n+3),.ui-field__strength[data-level="3"] .ui-field__strength-bar>span{background:var(--strength-color)}.ui-field__strength-text{margin:0;min-height:1lh;color:var(--color-text-muted);font-size:var(--text-sm)}.ui-field__strength-text strong{color:var(--strength-color);font-weight:var(--weight-semibold)}.ui-field__error{display:flex;gap:var(--space-1);align-items:flex-start;margin:0;color:var(--color-danger);font-size:var(--text-sm);font-weight:var(--weight-medium)}.ui-field__error::before{content:"!";display:inline-grid;place-items:center;flex-shrink:0;width:1.1em;height:1.1em;margin-top:0.15em;border-radius:50%;background:var(--color-danger);color:var(--color-surface);font-size:0.8em;font-weight:var(--weight-bold)}.ui-field__error[hidden]{display:none}.ui-field__control[aria-invalid=true]{border-color:var(--color-danger)}.ui-field__control[aria-invalid=true]:focus{border-color:var(--color-danger)}.ui-field__counter{justify-self:end;color:var(--color-text-muted);font-size:var(--text-xs);font-variant-numeric:tabular-nums}.ui-check{display:inline-flex;gap:var(--space-2);align-items:center;min-height:44px;color:var(--color-text);cursor:pointer}.ui-check input{appearance:none;flex-shrink:0;display:inline-grid;place-content:center;width:1.125rem;height:1.125rem;margin:0;border:1.5px solid var(--color-text-muted);border-radius:var(--radius-xs);background-color:var(--color-surface);background-position:center;background-repeat:no-repeat;background-size:0.8rem 0.8rem;cursor:pointer;transition:background-color var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out)}.ui-check input[type=radio]{border-radius:var(--radius-full)}@media(hover:hover)and (pointer:fine){.ui-check:hover input:not(:disabled,:checked){border-color:var(--color-accent)}}.ui-check input:checked,.ui-check input[type=checkbox]:indeterminate{border-color:var(--color-accent-solid);background-color:var(--color-accent-solid)}.ui-check input[type=checkbox]:checked{background-image:var(--ui-checkmark)}.ui-check input[type=checkbox]:indeterminate{background-image:var(--ui-checkmark-mixed)}.ui-check input[type=radio]:checked{background-color:var(--color-surface);box-shadow:inset 0 0 0 0.25rem var(--color-accent-solid)}.ui-check input:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px}.ui-check input:disabled{cursor:not-allowed}.ui-check:has(input:disabled){cursor:not-allowed;opacity:0.55}.ui-switch{position:relative;display:inline-flex;flex-shrink:0;width:44px;height:26px;margin:0;padding:0;border:0;border-radius:var(--radius-full);background:var(--color-text-muted);cursor:pointer;transition:background var(--duration-fast) var(--ease-out)}button.ui-switch::after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:var(--color-on-accent);box-shadow:var(--shadow-sm);transition:transform var(--duration-normal) var(--ease-spring)}.ui-switch[aria-checked=true]{background:var(--color-accent-solid)}.ui-switch[aria-checked=true]::after{transform:translateX(18px)}input.ui-switch{appearance:none;background-color:var(--color-text-muted);background-image:radial-gradient(circle,var(--color-on-accent) 9px,transparent 10px);background-repeat:no-repeat;background-size:26px 26px;background-position:left center;transition:background-color var(--duration-fast) var(--ease-out),background-position var(--duration-normal) var(--ease-spring)}input.ui-switch:checked{background-color:var(--color-accent-solid);background-position:right center}.ui-switch:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px}.ui-switch-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);min-height:44px;color:var(--color-text);cursor:pointer}.ui-switch-row:has(.ui-switch:disabled){cursor:not-allowed}.ui-switch:disabled{opacity:0.5;cursor:not-allowed}.ui-segmented{display:inline-flex;flex-wrap:wrap;gap:var(--space-1);padding:var(--space-1);border-radius:var(--radius-full);background:var(--color-surface-2)}.ui-segmented__option{position:relative;display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding-inline:var(--space-4);border-radius:var(--radius-full);color:var(--color-text-muted);font-size:var(--text-sm);font-weight:var(--weight-medium);cursor:pointer;transition:background-color var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out)}.ui-segmented__input{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;appearance:none}.ui-segmented__option:has(.ui-segmented__input:checked){background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-sm)}.ui-segmented__option:has(.ui-segmented__input:focus-visible){outline:2px solid var(--color-focus-ring);outline-offset:2px}.ui-segmented__option:has(.ui-segmented__input:disabled){opacity:0.5;cursor:not-allowed}.ui-segmented--squared{border-radius:var(--radius-ui-lg)}.ui-segmented--squared .ui-segmented__option{border-radius:var(--radius-ui-sm)}@media(hover:hover)and (pointer:fine){.ui-segmented__option:not(:has(.ui-segmented__input:checked,.ui-segmented__input:disabled)):hover{color:var(--color-text)}}}@layer components{.ui-card{--card-padding: var(--space-4);position:relative;display:flex;flex-direction:column;gap:var(--space-2);padding:var(--card-padding);border:1px solid var(--color-border);border-radius:var(--radius-ui-lg);background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-sm)}@media(width>=720px){.ui-card{--card-padding: var(--space-6)}}.ui-card__title{margin:0;font-size:var(--text-lg);font-weight:var(--weight-semibold);line-height:var(--leading-snug)}.ui-card__text{margin:0;color:var(--color-text-muted);font-size:var(--text-sm)}.ui-card--outlined{box-shadow:none}.ui-card--accent{border-color:color-mix(in srgb,var(--color-accent) 35%,transparent);background:linear-gradient(var(--color-accent-soft),var(--color-accent-soft)),var(--color-surface)}.ui-card--interactive{transition:box-shadow var(--duration-normal) var(--ease-out),border-color var(--duration-normal) var(--ease-out),transform var(--duration-normal) var(--ease-out)}@media(hover:hover)and (pointer:fine){.ui-card--interactive:hover{border-color:color-mix(in srgb,var(--color-accent) 35%,transparent);box-shadow:var(--shadow-md);transform:translateY(-2px)}}.ui-card__link{color:inherit;text-decoration:none}.ui-card__link::after{content:"";position:absolute;inset:0;border-radius:inherit}.ui-card__link:focus-visible{outline:none}.ui-card:has(.ui-card__link:focus-visible){outline:2px solid var(--color-focus-ring);outline-offset:2px}.ui-card[aria-selected=true],.ui-card[aria-pressed=true]{border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-soft)}[data-theme=dark] .ui-card{box-shadow:none}@media(prefers-reduced-motion:reduce){.ui-card--interactive:hover{transform:none}}}@layer components{.ui-badge{--badge-bg: var(--color-surface-2);--badge-color: var(--color-text-muted);display:inline-flex;gap:var(--space-1);align-items:center;min-height:22px;padding:0 var(--space-2);border-radius:var(--radius-full);background:var(--badge-bg);color:var(--badge-color);font-size:var(--text-xs);font-weight:var(--weight-semibold);line-height:1;white-space:nowrap;font-variant-numeric:tabular-nums}.ui-badge--accent{--badge-bg: var(--color-accent-soft);--badge-color: var(--color-accent)}.ui-badge--success{--badge-bg: var(--color-success-soft);--badge-color: var(--color-success-strong)}.ui-badge--warning{--badge-bg: var(--color-warning-soft);--badge-color: var(--color-warning-strong)}.ui-badge--danger{--badge-bg: var(--color-danger-soft);--badge-color: var(--color-danger)}.ui-badge--info{--badge-bg: var(--color-info-soft);--badge-color: var(--color-info)}.ui-badge--pro,.ui-badge--pro-plus{--badge-color: var(--color-on-accent);letter-spacing:var(--tracking-wide);text-transform:uppercase}.ui-badge--pro{--badge-bg: var(--color-accent-solid)}.ui-badge--pro-plus{--badge-bg: var(--gradient-indigo)}.ui-badge--squared{border-radius:var(--radius-ui-sm)}}@layer components{.ui-tabs{position:relative;display:flex;gap:var(--space-1);overflow-x:auto;border-bottom:1px solid var(--color-border);scrollbar-width:none}.ui-tabs__tab{position:relative;z-index:1;min-height:44px;padding:0 var(--space-4);border:0;background:transparent;color:var(--color-text-muted);font:inherit;font-size:var(--text-sm);font-weight:var(--weight-semibold);white-space:nowrap;cursor:pointer;transition:color var(--duration-fast) var(--ease-out)}@media(hover:hover)and (pointer:fine){.ui-tabs__tab:hover{color:var(--color-text)}}.ui-tabs__tab[aria-selected=true]{color:var(--color-accent)}.ui-tabs__tab:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:-2px;border-radius:var(--radius-ui-sm)}.ui-tabs__indicator{position:absolute;bottom:-1px;left:0;width:1px;height:2px;border-radius:2px;background:var(--color-accent);transform-origin:left center;transform:translateX(var(--tab-x, 0)) scaleX(var(--tab-w, 0));transition:transform var(--duration-normal) var(--ease-out)}.ui-tabs:not(:has(.ui-tabs__indicator[data-ready])) .ui-tabs__tab[aria-selected=true]{box-shadow:inset 0 -2px 0 var(--color-accent)}.ui-tabs--segmented{display:inline-flex;padding:var(--space-1);border:0;border-radius:var(--radius-full);background:var(--color-surface-2)}.ui-tabs--segmented .ui-tabs__tab{min-height:36px;border-radius:var(--radius-full)}.ui-tabs--segmented .ui-tabs__tab[aria-selected=true]{color:var(--color-text)}.ui-tabs--segmented .ui-tabs__indicator{top:var(--space-1);bottom:var(--space-1);height:auto;width:var(--tab-wpx, 0);border-radius:var(--radius-full);background:var(--color-surface);box-shadow:var(--shadow-sm);transform:translateX(var(--tab-x, 0));transition:transform var(--duration-normal) var(--ease-out),width var(--duration-normal) var(--ease-out)}.ui-tabs--segmented:not(:has(.ui-tabs__indicator[data-ready])) .ui-tabs__tab[aria-selected=true]{box-shadow:none;background:var(--color-surface)}.ui-tabs--segmented.ui-tabs--squared{border-radius:var(--radius-ui-lg)}.ui-tabs--squared .ui-tabs__tab,.ui-tabs--squared .ui-tabs__indicator{border-radius:var(--radius-ui-sm)}.ui-tabs--vertical{flex-direction:column;gap:0;overflow:visible;border-bottom:0;border-left:1px solid var(--color-border)}.ui-tabs--vertical .ui-tabs__tab{justify-content:flex-start;min-height:44px;padding:var(--space-2) var(--space-4);font-size:var(--text-base);text-align:left}.ui-tabs--vertical .ui-tabs__tab:focus-visible{outline-offset:-2px}.ui-tabs--vertical .ui-tabs__indicator{top:0;bottom:auto;left:-1px;width:2px;height:1px;transform-origin:center top;transform:translateY(var(--tab-y, 0)) scaleY(var(--tab-h, 0))}.ui-tabs--vertical:not(:has(.ui-tabs__indicator[data-ready])) .ui-tabs__tab[aria-selected=true]{box-shadow:inset 2px 0 0 var(--color-accent)}}@layer components{.ui-tooltip{position:fixed;z-index:calc(var(--z-splash) + 200);max-width:min(280px,calc(100vw - 2 * var(--space-4)));padding:var(--space-2) var(--space-3);border-radius:var(--radius-ui-sm);background:var(--color-text);color:var(--color-surface);font-size:var(--text-xs);font-weight:var(--weight-medium);line-height:var(--leading-snug);box-shadow:var(--shadow-md);pointer-events:none;opacity:0;transform:translateY(4px);transition:opacity var(--duration-fast) var(--ease-out),transform var(--duration-fast) var(--ease-out)}.ui-tooltip[data-side=bottom]{transform:translateY(-4px)}.ui-tooltip[data-open=true]{opacity:1;transform:none}}@layer components{@keyframes ui-spin{to{transform:rotate(360deg)}}@keyframes ui-shimmer{to{transform:translateX(100%)}}@keyframes ui-blink{50%{opacity:0.25}}.ui-spinner{display:inline-block;width:1.25rem;height:1.25rem;border:2px solid var(--color-accent);border-right-color:transparent;border-radius:50%;animation:ui-spin 0.7s linear infinite;vertical-align:middle}.ui-spinner--md{width:2rem;height:2rem;border-width:3px}.ui-skeleton{position:relative;display:block;overflow:hidden;min-height:1em;border-radius:var(--radius-ui-sm);background:var(--color-surface-2);color:transparent}.ui-skeleton::after{content:"";position:absolute;inset:0;transform:translateX(-100%);background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--color-surface) 70%,transparent),transparent);animation:ui-shimmer 1.4s ease-in-out infinite}.ui-skeleton--text{height:1em;margin:0.35em 0;border-radius:var(--radius-xs)}.ui-skeleton--circle{width:2.5rem;height:2.5rem;border-radius:50%}.ui-skeleton-group{display:grid;gap:var(--space-2);padding-block:var(--space-2)}.ui-skeleton-group>.ui-skeleton:last-of-type:not(:only-of-type){width:60%}[aria-busy=true] [data-skeleton]{position:relative;overflow:hidden;border-radius:var(--radius-xs);background:var(--color-surface-2);color:transparent;-webkit-text-fill-color:transparent;user-select:none;pointer-events:none}[aria-busy=true] [data-skeleton]>*{visibility:hidden}[aria-busy=true] [data-skeleton]::after{content:"";position:absolute;inset:0;transform:translateX(-100%);background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--color-surface) 70%,transparent),transparent);animation:ui-shimmer 1.4s ease-in-out infinite}form[aria-busy=true]{pointer-events:none}@media(prefers-reduced-motion:reduce){.ui-skeleton::after,[aria-busy=true] [data-skeleton]::after{animation:none;display:none}.ui-spinner,.ui-button[aria-busy=true]::after{border-color:var(--color-accent);animation:ui-blink 1.2s ease-in-out infinite}}}@layer components{.ui-empty{display:flex;flex-direction:column;gap:var(--space-2);align-items:center;padding:var(--space-10) var(--space-4);text-align:center}.ui-empty__icon{display:grid;place-items:center;width:64px;height:64px;margin-bottom:var(--space-2);border-radius:50%;background:var(--color-accent-soft);color:var(--color-accent)}.ui-empty__icon svg,.ui-empty__icon .lucide-icon{width:32px;height:32px}.ui-empty__title{margin:0;color:var(--color-text);font-size:var(--text-lg);font-weight:var(--weight-semibold)}.ui-empty__text{max-width:40ch;margin:0;color:var(--color-text-muted);font-size:var(--text-sm)}.ui-empty>.ui-button{margin-top:var(--space-3)}}@layer components{.full-exam-days{min-width:0;margin:0;padding:0;border:0}.full-exam-days__legend{margin-bottom:var(--space-3);padding:0;color:var(--color-text);font-size:var(--text-base);font-weight:var(--weight-semibold)}.full-exam-days__grid{display:grid;grid-template-columns:1fr;gap:var(--space-3)}@media(width>=720px){.full-exam-days__grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.full-exam-days__card{min-height:44px;gap:var(--space-1);cursor:pointer;text-align:left}.full-exam-days__areas{color:var(--color-text);font-size:var(--text-sm);font-weight:var(--weight-medium)}.full-exam-days__card:has(.full-exam-days__input:checked){border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-soft)}.full-exam-days__card:has(.full-exam-days__input:focus-visible){outline:2px solid var(--color-focus-ring);outline-offset:2px}}
