/* Small reusable primitives. Native inputs retain submission and keyboard behavior. */
.ui-icon{display:inline-block;width:var(--icon-size);height:var(--icon-size);flex:none;vertical-align:middle;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}
.ui-icon--sm{--icon-size:var(--icon-size-sm)}.ui-icon--lg{--icon-size:var(--icon-size-lg)}
.ui-spinner{display:inline-block;box-sizing:border-box;width:var(--icon-size);height:var(--icon-size);flex:none;border:2px solid currentColor;border-inline-end-color:transparent;border-radius:var(--radius-pill);animation:ui-spin var(--motion-spin) linear infinite}
@keyframes ui-spin{to{transform:rotate(1turn)}}
.ui-breadcrumbs{color:var(--color-text-muted);font-size:var(--font-size-control);line-height:var(--line-height-control)}
.ui-breadcrumbs ol{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);list-style:none;padding:0;margin:0}
.ui-breadcrumbs li{display:flex;align-items:center;gap:var(--space-2);min-width:0;overflow-wrap:anywhere}
.ui-breadcrumbs li+li::before{content:'/';color:var(--color-text-faint)}
.ui-breadcrumbs [aria-current=page]{color:var(--color-text)}.ui-breadcrumbs a:hover{text-decoration:underline}
.ui-choice,.ui-switch{display:inline-flex;align-items:center;gap:var(--space-3);min-height:var(--control-height);font-size:var(--font-size-control);line-height:var(--line-height-control);cursor:pointer}
.ui-choice input{box-sizing:border-box;flex:none;width:var(--choice-size);height:var(--choice-size);margin:0;accent-color:var(--color-primary);cursor:inherit}
.ui-choice:has(input:disabled),.ui-switch:has(input:disabled){opacity:var(--disabled-opacity);cursor:not-allowed}
.ui-choice input:focus-visible,.ui-switch input:focus-visible{outline:none;box-shadow:none;border-color:var(--control-focus)}
.ui-choice:has(input:focus-visible)>span{text-decoration:underline;text-decoration-thickness:.125em;text-underline-offset:.2em}
.ui-choice input[aria-invalid=true],.ui-switch input[aria-invalid=true]{outline:none;box-shadow:none;border-color:var(--control-error)}
.ui-choice:has(input[aria-invalid=true])>span{color:var(--control-error)}
.ui-switch input{appearance:none;box-sizing:border-box;position:relative;flex:none;width:var(--switch-width);height:var(--switch-height);margin:0;border:1px solid var(--color-border-strong);border-radius:var(--radius-pill);background:var(--color-surface-control);cursor:inherit;transition:background var(--motion-fast) var(--motion-ease)}
.ui-switch input::before{content:'';position:absolute;top:50%;inset-inline-start:var(--space-1);width:var(--switch-thumb);height:var(--switch-thumb);border-radius:var(--radius-pill);background:var(--color-text-muted);transform:translateY(-50%);transition:transform var(--motion-fast) var(--motion-ease)}
.ui-switch input:checked{background:var(--color-primary);border-color:var(--color-primary)}
.ui-switch input:checked::before{transform:translate(calc(var(--switch-width) - var(--switch-thumb) - var(--space-2) - 2px),-50%);background:var(--color-on-primary)}
.ui-toast-region{position:fixed;inset:auto var(--space-4) max(var(--space-4),env(safe-area-inset-bottom)) auto;width:min(var(--toast-width),calc(100vw - var(--space-8)));display:grid;gap:var(--space-2);z-index:var(--toast-z);pointer-events:none}
.ui-toast{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border:1px solid var(--color-border-strong);border-radius:var(--radius-table);background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-floating);font-size:var(--font-size-control);line-height:var(--line-height-control);pointer-events:auto;overflow-wrap:anywhere}
.ui-toast--error{border-color:var(--control-error)}.ui-toast__message{flex:1;min-width:0}.ui-toast__close{flex:none}.ui-toast[hidden]{display:none!important}
@media(prefers-reduced-motion:reduce){.ui-spinner{animation:none}.ui-switch input,.ui-switch input::before{transition:none}}
@media(forced-colors:active){.ui-switch input{appearance:auto}.ui-switch input::before{display:none}}

[dir=rtl] .ui-switch input:checked::before{transform:translate(calc(-1 * (var(--switch-width) - var(--switch-thumb) - var(--space-2) - 2px)),-50%)}
/* Inline feedback: semantic role belongs to markup, visual state to variants. */
.ui-notice{--notice-ink:var(--color-text-secondary);--notice-border:var(--color-border);--notice-bg:var(--color-surface-sunken);display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-3) var(--space-4);border:1px solid var(--notice-border);border-radius:var(--control-radius);background:var(--notice-bg);color:var(--notice-ink);font-size:var(--font-size-control);line-height:var(--line-height-control)}
.ui-notice>.ui-icon{margin-block-start:var(--space-1);color:var(--notice-accent,var(--notice-ink))}
.ui-notice__content{flex:1;min-width:0}.ui-notice__title{display:block;margin:0;color:var(--color-text);font-size:inherit;font-weight:var(--font-weight-label);line-height:inherit}.ui-notice__body{margin:0;overflow-wrap:anywhere}.ui-notice__title+.ui-notice__body{margin-block-start:var(--space-1)}
.ui-notice--success{--notice-accent:var(--color-paid)}.ui-notice--warning{--notice-accent:var(--color-flag)}.ui-notice--error{--notice-accent:var(--color-rejected)}.ui-notice--info{--notice-accent:var(--color-pending)}
.ui-notice:is(.ui-notice--success,.ui-notice--warning,.ui-notice--error,.ui-notice--info){--notice-border:color-mix(in srgb,var(--notice-accent) 35%,var(--color-border));--notice-bg:color-mix(in srgb,var(--notice-accent) 6%,var(--color-surface-sunken));border-inline-start:var(--space-1) solid var(--notice-accent)}
.ui-save-status{display:inline-flex;align-items:center;gap:var(--space-2);min-height:var(--control-height-sm);font-size:var(--font-size-control);line-height:var(--line-height-control);color:var(--color-text-muted)}
.ui-save-status--saved{color:var(--color-paid)}.ui-save-status--error{color:var(--color-rejected)}.ui-save-status--pending{color:var(--color-flag)}
/* Back navigation is a separate row above the screen heading. */
.ui-back-row{margin-block-end:var(--space-6)}
/* Native details disclosure: shared compact header, no UA triangle or script. */
.ui-disclosure{min-width:0;border:1px solid var(--color-border);border-radius:var(--control-radius);background:var(--color-surface-sunken);font-size:var(--font-size-control);line-height:var(--line-height-control)}
.ui-disclosure>summary{box-sizing:border-box;display:flex;align-items:center;gap:var(--space-3);min-height:var(--control-height);padding:var(--space-3) var(--space-4);list-style:none;cursor:pointer;color:var(--color-text);font-weight:var(--font-weight-label)}
.ui-disclosure>summary::-webkit-details-marker{display:none}.ui-disclosure>summary::marker{content:''}
.ui-disclosure>summary::after{content:'';flex:none;margin-inline-start:auto;width:var(--control-icon-size);height:var(--control-icon-size);background:var(--color-text-muted);clip-path:polygon(20% 35%,50% 65%,80% 35%,88% 43%,50% 81%,12% 43%);transition:transform var(--motion-fast) var(--motion-ease)}
.ui-disclosure[open]>summary::after{transform:rotate(180deg)}
.ui-disclosure[open]{border-color:var(--color-border-strong)}.ui-disclosure:has(>summary:focus-visible){border-color:var(--control-focus)}
.ui-disclosure>summary:focus-visible{outline:none;box-shadow:none;text-decoration:none}
.ui-disclosure__content{padding:0 var(--space-4) var(--space-4);color:var(--color-text-secondary);overflow-wrap:anywhere}.ui-disclosure__content>:first-child{margin-block-start:0}.ui-disclosure__content>:last-child{margin-block-end:0}
@media(prefers-reduced-motion:reduce){.ui-disclosure>summary::after{transition:none}}
/* General entity surface: flat fill, no default border or decorative highlight. */
.ui-card{min-width:0;padding:var(--card-padding);border:0;border-radius:var(--card-radius);background:var(--card-background);box-shadow:var(--card-shadow);color:var(--color-text)}
.ui-card--bordered{border:1px solid var(--card-border)}
.ui-surface-raised{min-width:0;padding:var(--space-4);border:0;border-radius:var(--control-radius);background:var(--raised-surface-background);box-shadow:none;color:var(--color-text)}
/* Native form inputs retain their semantics; only their paint is normalized. */
.ui-choice input[type=checkbox],.ui-choice input[type=radio]{appearance:none;display:grid;place-content:center;border:1px solid var(--choice-border);background:var(--choice-background);color:var(--choice-glyph-ink)}
.ui-choice input[type=checkbox]{border-radius:calc(var(--choice-radius) / 2)}
.ui-choice input[type=radio]{border-radius:var(--radius-pill)}
.ui-choice input::before{content:'';width:var(--choice-glyph-size);height:var(--choice-glyph-size);background:currentColor;transform:scale(0)}
.ui-choice input[type=checkbox]::before{clip-path:polygon(8% 47%,25% 32%,43% 52%,76% 13%,94% 29%,44% 88%)}
.ui-choice input[type=checkbox]:checked,.ui-choice input[type=checkbox]:indeterminate{background:var(--choice-selected);border-color:var(--choice-selected)}
.ui-choice input:checked::before,.ui-choice input:indeterminate::before{transform:scale(1)}
.ui-choice input[type=checkbox]:indeterminate::before{clip-path:polygon(5% 40%,95% 40%,95% 60%,5% 60%)}
.ui-choice input[type=radio]:checked{border-color:var(--choice-selected);color:var(--choice-selected)}
.ui-choice input[type=radio]::before{border-radius:var(--radius-pill)}
.ui-choice input:focus-visible{border-color:var(--control-focus)}
.ui-choice input[aria-invalid=true]{border-color:var(--control-error)}
.ui-switch input::before{background:var(--switch-thumb-ink)}.ui-switch input:checked::before{background:var(--color-on-primary)}
@media(forced-colors:active){
 .ui-choice input[type=checkbox],.ui-choice input[type=radio]{appearance:auto;display:inline-block;background:revert;border:revert;color:revert;accent-color:auto}
 .ui-choice input::before{display:none}
}
/* Opt-in compositions for account and administrative content. No shell or
   business behavior is inferred from a layout class. */
.ui-page-heading{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:var(--page-heading-gap);min-width:0;margin-block-end:var(--space-6)}
.ui-page-heading__content{flex:1 1 var(--form-column-min);min-width:0}
.ui-page-title{margin:0;color:var(--color-text);font-size:var(--workspace-title-size,var(--font-size-page));font-weight:var(--font-weight-action);line-height:1.2;letter-spacing:-.025em;overflow-wrap:anywhere}
.ui-page-subtitle{max-width:var(--layout-reading-width);margin:var(--space-2) 0 0;color:var(--color-text-muted);font-size:var(--font-size-control);line-height:var(--line-height-body);overflow-wrap:anywhere}
.ui-actions,.ui-form-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);min-width:0}
.ui-actions>.btn,.ui-form-actions>.btn{max-width:100%;white-space:normal;text-align:center}
.ui-actions>form,.ui-form-actions>form{min-width:0;margin:0}
.ui-form-actions{grid-column:1/-1;margin-block-start:var(--space-2)}
.ui-toolbar{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--space-3);min-width:0;margin-block-end:var(--space-5)}
.ui-toolbar__grow{flex:1 1 var(--form-column-min);min-width:0}.ui-toolbar>.ui-actions{margin-inline-start:auto}
.ui-toolbar>form{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--space-2);min-width:0;max-width:100%}
.ui-section{min-width:0;padding:0;border:0;background:transparent;box-shadow:none}
.ui-section--divided{padding-block-start:var(--space-6);border-block-start:1px solid var(--color-border)}
.ui-section__heading{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:var(--space-3);margin-block-end:var(--space-4);min-width:0}
.ui-section__title{margin:0;color:var(--color-text);font-size:var(--font-size-section);font-weight:var(--font-weight-label);line-height:var(--line-height-control);overflow-wrap:anywhere}
.ui-section__hint{max-width:var(--layout-reading-width);margin:var(--space-1) 0 0;color:var(--color-text-muted);font-size:var(--font-size-control);line-height:var(--line-height-body);overflow-wrap:anywhere}
.ui-stack{display:grid;gap:var(--space-6);min-width:0}.ui-stack--compact{gap:var(--space-3)}
.ui-grid,.ui-form-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-4);min-width:0}
.ui-grid>* , .ui-form-grid>*{min-width:0}.ui-form-grid__full{grid-column:1/-1}
.ui-form-grid{max-width:var(--layout-form-width)}
.ui-field-stack{display:grid;align-content:start;gap:var(--space-2);min-width:0}.ui-field-stack>.field-label{margin:0}
.ui-form-grid>label.field-label{display:grid;align-content:start;gap:var(--space-2);margin:0}
.ui-control-reason{display:block;max-width:var(--layout-reading-width);margin:var(--space-2) 0 0;color:var(--color-text-secondary);font-size:var(--font-size-caption);line-height:var(--line-height-control);overflow-wrap:anywhere}
.ui-control-reason a{text-decoration:underline;text-underline-offset:.2em}
.ui-table-region{min-width:0;max-width:100%;border:0;border-radius:0;background:transparent;box-shadow:none}.ui-table-region>.table-scroll{max-width:100%;overflow-x:auto}
.ui-entity-list{display:grid;gap:var(--space-4);list-style:none;margin:0;padding:0;min-width:0}
.ui-entity-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--entity-row-gap);width:100%;min-width:0;box-sizing:border-box}
.ui-entity-row__content{flex:1 1 12rem;min-width:0}.ui-entity-row__title{display:block;margin:0;color:var(--color-text);font-size:var(--font-size-body);font-weight:var(--font-weight-label);line-height:var(--line-height-control);overflow-wrap:anywhere}
.ui-entity-row__meta{display:block;margin:var(--space-1) 0 0;color:var(--color-text-muted);font-size:var(--font-size-caption);line-height:var(--line-height-control);overflow-wrap:anywhere}
.ui-entity-row__actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);margin-inline-start:auto;min-width:0;max-width:100%}
:is(.ui-entity-media,.ui-entity-row__media){position:relative;display:inline-flex;align-items:center;justify-content:center;flex:none;width:var(--entity-media-size);height:var(--entity-media-size);border-radius:var(--entity-media-radius);background:var(--color-surface-sunken);color:var(--color-text-muted);overflow:hidden}
:is(.ui-entity-media,.ui-entity-row__media)>img{width:100%;height:100%;object-fit:cover}:is(.ui-entity-media,.ui-entity-row__media)>img[hidden]{display:none!important}
.ui-entity-media__fallback{display:inline-flex;align-items:center;justify-content:center;width:100%;height:100%;font-size:var(--font-size-caption);line-height:var(--line-height-control)}
:is(.ui-entity-media,.ui-entity-row__media):has(>img:not([hidden]))>.ui-entity-media__fallback{display:none}
.ui-entity-row--selectable{padding:var(--space-3) var(--space-4);border:1px solid var(--color-border);border-radius:var(--control-radius);background:var(--color-surface-sunken);cursor:pointer}
.ui-entity-row--selectable:has(input:checked){border-color:var(--color-primary);background:var(--entity-selection-bg)}
.ui-entity-row--selectable:has(input:focus-visible){border-color:var(--control-focus)}
.ui-entity-row--selectable:has(input:focus-visible)>.ui-entity-row__content{text-decoration:none}
.ui-entity-row--selectable:has(input:disabled){cursor:not-allowed}
@media(min-width:768px){.ui-grid--2,.ui-form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.ui-grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:767px){.ui-page-heading>.ui-actions,.ui-section__heading>.ui-actions{flex-basis:100%}.ui-toolbar>.ui-actions{margin-inline-start:0}.ui-entity-row__actions{flex-basis:100%;margin-inline-start:0}.ui-entity-row__actions>.btn{flex:1;white-space:normal;text-align:center}.ui-entity-row__actions>form{flex:1;min-width:0}.ui-entity-row__actions>form>.btn{width:100%;white-space:normal}}

.ui-grid--4{grid-template-columns:repeat(2,minmax(0,1fr))}
.ui-stat{display:grid;align-content:start;gap:var(--space-1);min-width:0}.ui-stat__value{margin:0;color:var(--color-text);font-size:var(--font-size-section);font-weight:var(--font-weight-action);line-height:var(--line-height-control);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.ui-stat__label{margin:0;color:var(--color-text-muted);font-size:var(--font-size-caption);line-height:var(--line-height-control);overflow-wrap:anywhere}
.ui-file-trigger{box-sizing:border-box;border:1px solid transparent;border-radius:var(--control-radius);cursor:pointer}.ui-file-trigger:focus-within{border-color:var(--control-focus);outline:none;box-shadow:none}
@media(min-width:1200px){.ui-grid--4{grid-template-columns:repeat(4,minmax(0,1fr))}}
/* Small native controls/media keep the same targets without a second widget. */
.ui-color-well{box-sizing:border-box;display:inline-block;min-width:var(--control-height);width:var(--control-height);height:var(--control-height);padding:var(--space-1);border:1px solid var(--control-border);border-radius:var(--control-radius);background:var(--control-bg);cursor:pointer}
.ui-color-well:focus-visible{border-color:var(--control-focus);outline:none;box-shadow:none}.ui-color-well:disabled{opacity:var(--disabled-opacity);cursor:not-allowed}
.ui-code-value{display:block;max-width:100%;padding:var(--space-3);border:0;border-radius:var(--control-radius);background:var(--color-surface-sunken);color:var(--color-text-secondary);font-family:var(--font-mono);font-size:var(--font-size-control);line-height:var(--line-height-control);white-space:pre-wrap;overflow-wrap:anywhere;word-break:normal}
.ui-media-placeholder{display:grid;place-content:center;justify-items:center;gap:var(--space-2);min-height:var(--space-12);padding:var(--space-6);border:1px dashed var(--color-border-strong);border-radius:var(--radius-card);background:var(--color-surface-sunken);color:var(--color-text-muted);text-align:center;overflow-wrap:anywhere}
.ui-media-preview{display:block;width:100%;max-height:45dvh;aspect-ratio:4/3;object-fit:cover;border-radius:var(--radius-card)}
.ui-table-region .table-data,.table-scroll.ui-table-region>.table-data{table-layout:auto;min-width:var(--table-min-width,40rem)}
.ui-table-region--compact{--table-min-width:100%}
.ui-table-region .table-data :is(th,td){overflow-wrap:anywhere;white-space:normal}
.ui-table-region .table-data :is(th,td)>:is(.ui-actions,.ui-entity-row){min-width:0}

@media(min-width:768px){.ui-mobile-only{display:none!important}}
@media(max-width:767px){.ui-desktop-only{display:none!important}}
/* Grid children and long workspace actions must shrink to the available page. */
.ui-field-stack{grid-template-columns:minmax(0,1fr)}.ui-field-stack>*{min-width:0;max-width:100%}
.workspace .btn{max-width:100%;white-space:normal;overflow-wrap:anywhere;text-align:center}

/* Checklist: a stable icon column for both complete and pending steps. */
.ui-checklist-step{display:grid;grid-template-columns:var(--space-8) minmax(0,1fr) auto;align-items:start;gap:var(--space-3);padding-block:var(--space-3)}
.ui-checklist-step__icon{display:flex;align-items:center;justify-content:center;width:var(--space-8);height:var(--space-8);border-radius:var(--radius-pill);background:var(--color-surface-sunken);color:var(--color-text-muted)}
.ui-checklist-step__icon--done{color:var(--color-paid)}.ui-checklist-step__icon .ui-icon{width:var(--space-5);height:var(--space-5);flex:none}
.ui-checklist-step__content{min-width:0}.ui-checklist-step__action{align-self:center}
@media(max-width:479px){.ui-checklist-step{grid-template-columns:var(--space-8) minmax(0,1fr)}.ui-checklist-step__action{grid-column:2;justify-self:start}}
