:root{--color-primary: #1f5f8b;--color-primary-strong: #174a6d;--color-on-primary: #ffffff;--color-text: #1f2933;--color-text-muted: #52606d;--color-surface: #ffffff;--color-background: #f3f6f9;--color-border: #9aa5b1;--color-border-subtle: #d9e2ec;--color-error: #b3261e;--color-error-surface: #fbeceb;--color-success: #2e6b2e;--color-success-surface: #ecf3ec;--color-focus: #c2410c;--color-warning: #8a5a00;--color-warning-surface: #fff4d6;--color-box-1: #c0392b;--color-box-2: #d97706;--color-box-3: #ca8a04;--color-box-4: #4d7c0f;--color-box-5: #2e6b2e;--color-box-empty: #d9e2ec;--color-chart-1: #1f5f8b;--color-chart-2: #6b3fa0;--color-chart-3: #2e6b2e;--color-chart-4: #8a5a00;--color-chart-5: #a8326e;--color-chart-6: #0f6b6b;--color-chart-grid: #d9e2ec;--color-sheet-surface: #e8f0f7;--color-new-surface: #f1ebf8;--font-base: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-size-base: 1.125rem;--font-size-small: 1rem;--font-size-heading: 1.75rem;--font-size-subheading: 1.25rem;--font-size-brand: 1.375rem;--font-weight-regular: 400;--font-weight-bold: 700;--line-height-base: 1.6;--line-height-heading: 1.3;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--space-7: 3rem;--radius-medium: 8px;--radius-large: 16px;--border-width: 1px;--focus-ring-width: 3px;--shadow-card: 0 1px 3px rgb(31 41 51 / 12%), 0 6px 18px rgb(31 41 51 / 8%);--touch-target-min: 48px;--box-bar-height: .75rem;--thumb-size: 6rem;--qr-size: 14rem;--spinner-size: 1.5rem;--question-font-size: 1.75rem;--header-height: 3.5rem;--layout-max-width: 40rem;--layout-wide-width: 64rem;--status-panel-min-height: 7.5rem;--figure-max-width: 30rem;--swatch-size: 1rem}*,*:before,*:after{box-sizing:border-box}html{color-scheme:light}body{margin:0;background-color:var(--color-background);color:var(--color-text);font-family:var(--font-base);font-size:var(--font-size-base);line-height:var(--line-height-base)}:focus-visible{outline:var(--focus-ring-width) solid var(--color-focus);outline-offset:2px}img{max-width:100%;height:auto}h1,h2,h3{margin:0;color:var(--color-primary-strong);font-weight:var(--font-weight-bold);line-height:var(--line-height-heading)}h1{font-size:var(--font-size-heading)}h2,h3{font-size:var(--font-size-subheading)}p{margin:0}a{color:var(--color-primary)}a:hover{color:var(--color-primary-strong)}.app-shell{display:flex;flex-direction:column;min-height:100dvh}.app-shell__header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);min-height:var(--header-height);padding:0 var(--space-4);background-color:var(--color-primary)}.app-shell__brand{color:var(--color-on-primary);font-size:var(--font-size-brand);font-weight:var(--font-weight-bold);text-decoration:none}.app-shell__brand:hover{color:var(--color-on-primary);text-decoration:underline}.app-shell__menu-button{min-height:var(--touch-target-min);padding:var(--space-2) var(--space-4);border:var(--border-width) solid var(--color-on-primary);border-radius:var(--radius-medium);background:transparent;color:var(--color-on-primary);font:inherit;cursor:pointer}.app-shell__nav{display:none;background-color:var(--color-surface);box-shadow:var(--shadow-card)}.app-shell__nav--open{display:block}.app-shell__nav-list{display:flex;flex-direction:column;margin:0;padding:var(--space-2) var(--space-4);list-style:none}.app-shell__nav-link{display:flex;align-items:center;min-height:var(--touch-target-min);color:var(--color-text);text-decoration:none}.app-shell__nav-link--active{color:var(--color-primary-strong);font-weight:var(--font-weight-bold)}.app-shell__nav-user{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-3) 0;border-top:var(--border-width) solid var(--color-border-subtle)}.app-shell__user-name{color:var(--color-text-muted)}.app-shell__offline{margin:0;max-height:0;padding:0 var(--space-4);overflow:hidden;background-color:var(--color-warning-surface);color:var(--color-warning);font-weight:var(--font-weight-bold);transition:max-height .2s ease,padding .2s ease}.app-shell__offline--visible{max-height:4rem;padding:var(--space-2) var(--space-4)}.app-shell__main{flex:1;width:100%;max-width:var(--layout-wide-width);margin:0 auto;padding:var(--space-5) var(--space-4) var(--space-7)}.app-shell__footer{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--space-3);padding:var(--space-4);border-top:var(--border-width) solid var(--color-border-subtle);color:var(--color-text-muted)}.app-shell__release{font-size:var(--font-size-small)}@media(min-width:900px){.app-shell__menu-button{display:none}.app-shell__nav{display:block}.app-shell__nav-list{flex-direction:row;flex-wrap:wrap;align-items:center;gap:var(--space-5);max-width:var(--layout-wide-width);margin:0 auto}.app-shell__nav-user{margin-left:auto;padding:0;border-top:0}}@media print{.app-shell__header,.app-shell__nav,.app-shell__offline,.app-shell__footer{display:none}}.button{display:inline-flex;align-items:center;justify-content:center;min-height:var(--touch-target-min);padding:var(--space-2) var(--space-5);border:var(--border-width) solid var(--color-primary);border-radius:var(--radius-medium);background-color:var(--color-primary);color:var(--color-on-primary);font:inherit;font-weight:var(--font-weight-bold);text-align:center;text-decoration:none;cursor:pointer;transition:background-color .15s ease,border-color .15s ease}.button:hover{border-color:var(--color-primary-strong);background-color:var(--color-primary-strong);color:var(--color-on-primary)}.button:disabled,.button.button--disabled{border-color:var(--color-border);background-color:var(--color-border-subtle);color:var(--color-text-muted);cursor:not-allowed}.button--secondary{background-color:var(--color-surface);color:var(--color-primary-strong)}.button--secondary:hover{background-color:var(--color-background);color:var(--color-primary-strong)}.button--danger,.button--danger:hover{border-color:var(--color-error);background-color:var(--color-error)}.button--success,.button--success:hover{border-color:var(--color-success);background-color:var(--color-success)}.button--wide{width:100%}.button--small{padding:var(--space-1) var(--space-3);font-weight:var(--font-weight-regular)}.button-row{display:flex;flex-wrap:wrap;gap:var(--space-3)}.form{display:flex;flex-direction:column;gap:var(--space-4)}.form-field{display:flex;flex-direction:column;gap:var(--space-1);min-width:0;margin:0;padding:0;border:0}.form-field__label{display:flex;flex-direction:column;gap:var(--space-1);font-weight:var(--font-weight-bold)}.form-field__input{width:100%;min-width:0;min-height:var(--touch-target-min);padding:var(--space-2) var(--space-3);border:var(--border-width) solid var(--color-border);border-radius:var(--radius-medium);background-color:var(--color-surface);color:var(--color-text);font:inherit;font-weight:var(--font-weight-regular)}.form-field__input--short{max-width:8rem}.form-field__row{display:flex;gap:var(--space-2);align-items:stretch}.form-field__error{min-height:var(--line-height-base);margin:0;color:var(--color-error);font-size:var(--font-size-small)}.form-field__hint{color:var(--color-text-muted);font-size:var(--font-size-small)}.checkbox{display:flex;align-items:center;gap:var(--space-2);min-height:var(--touch-target-min)}.checkbox input{width:1.25rem;height:1.25rem;flex-shrink:0}.checkbox-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(10rem,1fr));gap:0 var(--space-4)}.form-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(14rem,1fr));gap:var(--space-4)}.form-grid--five{grid-template-columns:repeat(auto-fill,minmax(6rem,1fr))}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.alert{margin:0;padding:var(--space-3) var(--space-4);border-radius:var(--radius-medium)}.alert--error{background-color:var(--color-error-surface);color:var(--color-error)}.alert--success{background-color:var(--color-success-surface);color:var(--color-success)}.alert--warning{background-color:var(--color-warning-surface);color:var(--color-warning)}.alert--hidden{display:none}.badge{display:inline-block;margin-left:var(--space-2);padding:0 var(--space-2);border-radius:var(--radius-medium);background-color:var(--color-border-subtle);color:var(--color-text);font-size:var(--font-size-small);font-weight:var(--font-weight-regular)}.badge--warning{background-color:var(--color-warning-surface);color:var(--color-warning)}.load-state{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-3);min-height:var(--status-panel-min-height);padding:var(--space-4) var(--space-5);border-radius:var(--radius-large);background-color:var(--color-surface)}.load-state--error{border:var(--border-width) solid var(--color-error);color:var(--color-error)}.load-state--loading{flex-direction:row;align-items:center;color:var(--color-text-muted)}.load-state__spinner{display:inline-block;width:var(--spinner-size);height:var(--spinner-size);flex-shrink:0;border:3px solid var(--color-border-subtle);border-top-color:var(--color-primary);border-radius:50%;animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.load-state__spinner{animation:none}}.page{display:flex;flex-direction:column;gap:var(--space-5);max-width:var(--layout-max-width);margin:0 auto}.page--wide{max-width:var(--layout-wide-width)}.page__intro{color:var(--color-text-muted)}.card{display:flex;flex-direction:column;gap:var(--space-3);min-width:0;padding:var(--space-4) var(--space-5);border-radius:var(--radius-large);background-color:var(--color-surface);box-shadow:var(--shadow-card)}.card--danger{border:var(--border-width) solid var(--color-error)}.card--warning{border:var(--border-width) solid var(--color-warning)}.prose section{display:flex;flex-direction:column;gap:var(--space-3)}.prose code{padding:0 var(--space-1);border-radius:var(--radius-medium);background-color:var(--color-border-subtle);font-size:var(--font-size-base)}.error-page{align-items:flex-start}.auth-card{display:flex;flex-direction:column;gap:var(--space-4);max-width:28rem;margin:0 auto;padding:var(--space-5);border-radius:var(--radius-large);background-color:var(--color-surface);box-shadow:var(--shadow-card)}.auth-card__intro,.auth-card__hint{color:var(--color-text-muted)}.link-list,.pack-list,.result-list,.trouble-list,.subject-shares,.chip-list,.usage-list,.account-list,.subject-admin-list,.preview__items,.upload__photos,.preview__photos{display:flex;flex-direction:column;gap:var(--space-3);margin:0;padding:0;list-style:none}.link-list__item{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--space-2);min-height:var(--touch-target-min);align-items:center;color:var(--color-text);text-decoration:none}.link-list__item--warning{color:var(--color-error)}.link-list__meta,.pack-list__meta,.trouble-list__meta{color:var(--color-text-muted);font-size:var(--font-size-small)}.pack-list__item{display:flex;flex-direction:column;gap:var(--space-1)}.tab-bar{display:flex;flex-wrap:wrap;gap:var(--space-2);max-width:var(--layout-wide-width);margin:0 auto var(--space-5)}.tab-bar__tab{display:inline-flex;align-items:center;min-height:var(--touch-target-min);padding:0 var(--space-4);border-bottom:3px solid transparent;color:var(--color-text);text-decoration:none}.tab-bar__tab--active{border-bottom-color:var(--color-primary);color:var(--color-primary-strong);font-weight:var(--font-weight-bold)}.toolbar{display:flex;flex-wrap:wrap;gap:var(--space-4)}.table-scroll{max-width:100%;overflow-x:auto}.data-table{width:100%;border-collapse:collapse;background-color:var(--color-surface)}.data-table th,.data-table td{padding:var(--space-2) var(--space-3);border-bottom:var(--border-width) solid var(--color-border-subtle);text-align:left}@media(max-width:600px){.data-table{display:block}.data-table thead{display:none}.data-table tbody{display:block}.data-table tr{display:block;padding:var(--space-2) 0;border-bottom:var(--border-width) solid var(--color-border)}.data-table td{display:flex;justify-content:space-between;gap:var(--space-3);border-bottom:0}.data-table td[data-label]:before{content:attr(data-label);color:var(--color-text-muted)}}.pagination{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}.box-bar{display:flex;height:var(--box-bar-height);overflow:hidden;border-radius:var(--radius-medium);background-color:var(--color-box-empty)}.box-bar__segment{flex-basis:0}.box-bar__segment--1{background-color:var(--color-box-1)}.box-bar__segment--2{background-color:var(--color-box-2)}.box-bar__segment--3{background-color:var(--color-box-3)}.box-bar__segment--4{background-color:var(--color-box-4)}.box-bar__segment--5{background-color:var(--color-box-5)}.box-bar__legend{color:var(--color-text-muted);font-size:var(--font-size-small)}.upload__hint{padding:var(--space-3);border-left:4px solid var(--color-warning);background-color:var(--color-warning-surface)}.upload__pickers{display:flex;flex-wrap:wrap;gap:var(--space-3)}.upload__photos,.preview__photos{flex-direction:row;flex-wrap:wrap}.upload__photo{display:flex;flex-direction:column;gap:var(--space-1)}.upload__thumb,.preview__photo{width:var(--thumb-size);height:var(--thumb-size);object-fit:cover;border-radius:var(--radius-medium);background-color:var(--color-border-subtle)}.upload__figure{display:flex;flex-direction:column;gap:var(--space-1);margin:0}.upload__caption{color:var(--color-text-muted);font-size:var(--font-size-small)}.upload__empty{color:var(--color-text-muted)}.job-progress{align-items:flex-start}.job-progress__hint{color:var(--color-text-muted)}.item-editor{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3) var(--space-4);border:var(--border-width) solid var(--color-border-subtle);border-radius:var(--radius-medium);background-color:var(--color-surface)}.item-editor--uncertain{border-color:var(--color-warning);background-color:var(--color-warning-surface)}.item-editor--problem{border-color:var(--color-error)}.item-editor__flag{color:var(--color-warning);font-weight:var(--font-weight-bold)}.item-editor__main{overflow-wrap:anywhere}.item-editor__sub{color:var(--color-text-muted);font-size:var(--font-size-small)}.item-editor__sub--error{color:var(--color-error)}.item-editor__actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}.item-editor__form{display:flex;flex-direction:column;gap:var(--space-3)}.practice__progress{color:var(--color-text-muted)}.practice__card{gap:var(--space-4)}.practice__prompt{color:var(--color-text-muted)}.practice__question{font-size:var(--question-font-size);font-weight:var(--font-weight-bold);line-height:var(--line-height-heading);overflow-wrap:anywhere}.practice__example{font-style:italic}.practice__solution{padding:var(--space-3);border-radius:var(--radius-medium);background-color:var(--color-background);font-size:var(--font-size-subheading);font-weight:var(--font-weight-bold)}.practice__hints{display:flex;flex-wrap:wrap;gap:var(--space-2)}.practice__answer{display:flex;flex-direction:column;gap:var(--space-2)}.practice__result{padding:var(--space-3) var(--space-4);border-radius:var(--radius-medium)}.practice__result--right{background-color:var(--color-success-surface);color:var(--color-success)}.practice__result--wrong{background-color:var(--color-error-surface);color:var(--color-error)}.result-summary__headline,.home__due-count{font-size:var(--font-size-subheading)}.result-list__item{display:flex;flex-wrap:wrap;gap:var(--space-1) var(--space-3)}.result-list__question{font-weight:var(--font-weight-bold)}.result-list__due,.home__streak{width:100%;color:var(--color-text-muted);font-size:var(--font-size-small)}.home__due{gap:var(--space-4)}.facts{display:flex;flex-direction:column;gap:var(--space-1);margin:0}.facts__row{display:flex;justify-content:space-between;gap:var(--space-3)}.facts__row dd{margin:0;font-weight:var(--font-weight-bold)}.children-empty{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-3)}.children-empty p{margin:0}.child-card__consent{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-2)}.figure{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-2);margin:0}.figure__caption{font-weight:var(--font-weight-bold)}.figure__unit{color:var(--color-text-muted);font-weight:var(--font-weight-regular)}.figure__svg{display:block;width:100%;max-width:var(--figure-max-width);height:auto}.figure__svg--pickable{cursor:pointer}.figure__line{stroke:var(--color-chart-grid);stroke-width:1}.figure__line--axis{stroke:var(--color-text);stroke-width:2}.figure__line--boundary{stroke:var(--color-text);stroke-dasharray:3 3}.figure__text{fill:var(--color-text);font-family:var(--font-base);font-size:var(--font-size-small)}.figure__bar--1{fill:var(--color-chart-1);background-color:var(--color-chart-1)}.figure__bar--2{fill:var(--color-chart-2);background-color:var(--color-chart-2)}.figure__bar--3{fill:var(--color-chart-3);background-color:var(--color-chart-3)}.figure__bar--4{fill:var(--color-chart-4);background-color:var(--color-chart-4)}.figure__bar--5{fill:var(--color-chart-5);background-color:var(--color-chart-5)}.figure__bar--6{fill:var(--color-chart-6);background-color:var(--color-chart-6)}.figure__text--inverse{fill:var(--color-on-primary);font-weight:var(--font-weight-bold)}.figure__pointer{fill:var(--color-focus)}.figure__pointer--mark{fill:var(--color-primary)}.figure__legend{display:flex;flex-wrap:wrap;gap:var(--space-1) var(--space-4);margin:0;padding:0;list-style:none}.figure__legend-item{display:flex;align-items:center;gap:var(--space-2)}.figure__swatch{width:var(--swatch-size);height:var(--swatch-size);flex-shrink:0;border-radius:var(--radius-medium)}.figure__move{gap:var(--space-2)}.figure__status{min-height:calc(var(--font-size-base) * var(--line-height-base));color:var(--color-text-muted)}.item-editor__tags{display:flex;flex-wrap:wrap;gap:var(--space-2)}.item-editor__tags .badge{margin-left:0}.badge--sheet{background-color:var(--color-sheet-surface);color:var(--color-primary-strong)}.badge--new{background-color:var(--color-new-surface);color:var(--color-chart-2)}.item-editor__options{margin:0;padding-left:var(--space-5)}.item-editor__fieldset{display:flex;flex-direction:column;gap:var(--space-3);min-width:0;margin:0;padding:var(--space-3);border:var(--border-width) solid var(--color-border-subtle);border-radius:var(--radius-medium)}.practice__choices{display:flex;flex-direction:column;gap:var(--space-2)}.practice__choice{justify-content:flex-start;text-align:left}.draft-summary__topic{font-size:var(--font-size-subheading);font-weight:var(--font-weight-bold)}.draft-summary__form{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-2)}.draft-summary__form textarea{width:100%}.facts--stacked .facts__row{flex-direction:column;gap:0}.facts--stacked .facts__row dt{color:var(--color-text-muted)}.account-list__head{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--space-3)}.account-list__name{font-weight:var(--font-weight-bold)}.account-list__username,.account-list__meta{color:var(--color-text-muted);font-size:var(--font-size-small);font-weight:var(--font-weight-regular)}.account-list__badges .badge:first-child{margin-left:0}.account-actions{display:flex;flex-direction:column;gap:var(--space-4);padding-top:var(--space-3);border-top:var(--border-width) solid var(--color-border-subtle)}.account-actions__group{display:flex;flex-direction:column;gap:var(--space-2)}.account-actions__empty{color:var(--color-text-muted)}.chip-list{flex-direction:row;flex-wrap:wrap}.chip{display:inline-flex;align-items:center;gap:var(--space-1);padding-left:var(--space-3);border-radius:var(--radius-large);background-color:var(--color-border-subtle)}.chip__remove{min-width:var(--touch-target-min);min-height:var(--touch-target-min);border:0;background:transparent;color:var(--color-text);font:inherit;cursor:pointer}.invite-card__secret{font-family:ui-monospace,monospace;font-size:var(--font-size-subheading);letter-spacing:.1em}.invite-card__qr{width:var(--qr-size);height:var(--qr-size)}.invite-card__qr-background{fill:var(--color-surface)}.invite-card__qr-cell{fill:var(--color-text)}.invite-card__link{font-size:var(--font-size-small);overflow-wrap:anywhere}.usage-list__item{flex-direction:row;flex-wrap:wrap;justify-content:space-between}.subject-admin-list__item{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-2)}.subject-admin-list__inactive{color:var(--color-text-muted);text-decoration:line-through}.subject-admin-list__meta{color:var(--color-text-muted);font-size:var(--font-size-small)}@media print{.tab-bar,.toolbar,.account-list,.invite-card .button-row{display:none}.invite-card{box-shadow:none}}
