:root{--g-green-50:#f5f9f7;--g-green-100:#e3efe9;--g-green-200:#c9e2d5;--g-green-300:#a4d0ba;--g-green-400:#75b999;--g-green-500:#39936e;--g-green-600:#006a46;--g-green-700:#00543a;--g-green-800:#04422c;--g-green-900:#043020;--g-green-950:#031f14;--g-warm-0:#fff;--g-warm-50:#f5f4ef;--g-warm-100:#f2f1eb;--g-warm-200:#e2e1d8;--g-warm-300:#ceccc4;--g-warm-400:#a09f96;--g-warm-500:#6e6e66;--g-warm-600:#56554f;--g-warm-700:#43433e;--g-warm-800:#31302e;--g-warm-900:#212121;--g-amber-100:#fdf3e7;--g-amber-200:#fdd5b7;--g-amber-300:#f0ad7f;--g-amber-600:#b45309;--g-amber-700:#923f00;--g-red-100:#fdebe8;--g-red-200:#fed2cb;--g-red-600:#b3261e;--g-red-700:#941711;--g-blue-100:#eef2fa;--g-blue-600:#3d6bb3;--g-kakao-500:#fee500;--g-kakao-600:#ebd400;--g-kakao-700:#d8c200;--g-kakao-ink:#191600;--g-tint:var(--g-green-50);--g-cream:var(--g-warm-100);--g-ivory:var(--g-warm-50);--g-paper:var(--g-warm-0);--g-ink:var(--g-warm-900);--g-sub:var(--g-warm-500);--g-line:var(--g-warm-200);--g-amber:var(--g-amber-600);--g-danger:var(--g-red-600);--g-white-a72:#ffffffb8;--g-white-a55:#ffffff8c;--g-ink-a08:#21212114;--g-ink-a15:#21212126;--g-ink-a24:#2121213d;--g-ink-a40:#21212166;--g-clay-50:#f5eae4;--g-clay-700:#925740;--chart-s1:#006a46;--chart-s2:#ce6a33;--chart-s3:#3d6bb3;--chart-s4:#a97f12;--chart-s5:#b5537c;--chart-axis:#c3c2b7;--font-display:"Playfair Display", "Noto Serif KR", serif;--font-body:"Pretendard Variable", Pretendard, "Noto Sans KR", system-ui, sans-serif;--font-mono:ui-monospace, "SF Mono", Menlo, Consolas, monospace;--fw-400:400;--fw-500:500;--fw-600:600;--fw-700:700;--fs-11:11px;--fs-12:12px;--fs-13:13px;--fs-14:14px;--fs-16:16px;--fs-20:20px;--lh-tight:1.25;--lh-body:1.5;--fs-24:24px;--lh-relaxed:1.6;--fs-28:28px;--lh-display:1.15;--r-4:4px;--r-6:6px;--r-8:8px;--r-12:12px;--r-16:16px;--r-pill:999px;--sp-2:2px;--sp-4:4px;--sp-6:6px;--sp-8:8px;--sp-12:12px;--sp-16:16px;--sp-20:20px;--sp-24:24px;--sp-32:32px;--sp-40:40px;--sp-48:48px;--pad-card:var(--sp-20);--pad-shell:var(--sp-24);--pad-cell-y:var(--sp-6);--pad-cell-x:var(--sp-8);--gap-card:var(--sp-16);--pad-mobile:16px;--safe-bottom:env(safe-area-inset-bottom,0px);--sh-1:0px 1px 2px 0px var(--g-ink-a08);--sh-2:0px 8px 24px 0px var(--g-ink-a15);--sh-3:0px 16px 48px 0px var(--g-ink-a24);--sh-glass:0px 0px 32px 0px var(--g-ink-a08);--blur-glass:20px;--blur-scrim:4px;--dur-fast:.15s;--dur-base:.25s;--dur-slow:.35s;--ease-standard:cubic-bezier(.2, 0, 0, 1);--ease-emphasis:cubic-bezier(.34, 1.2, .64, 1);--ease-exit:cubic-bezier(.4, 0, 1, 1);--g-mobile-w:430px;--side-w:224px;--chat-w:360px;--todaycol-w:340px;--modal-wide-w:960px;--z-dropdown:120;--topbar-h:52px;--tabbar-h:56px;--hit-min:44px;--ctl-h:32px;--ctl-h-mobile:44px;--z-sticky:20;--z-scrim:100;--z-sheet:130;--ring-w:2px;--text-body:var(--g-ink);--text-sub:var(--g-sub);--text-accent:var(--g-green-700);--surface-page:var(--g-cream);--surface-card:var(--g-paper);--surface-muted:var(--g-ivory);--surface-selected:var(--g-green-100);--surface-hover:var(--g-tint);--border-default:var(--g-line);--border-accent:var(--g-green-600);--action-primary:var(--g-green-600);--action-primary-hover:var(--g-green-700);--status-warn:var(--g-amber);--status-danger:var(--g-danger);--text-on-accent:var(--g-paper);--text-link:var(--g-green-700);--text-link-sky:#1a8fd6;--text-placeholder:var(--g-warm-400);--border-focus:var(--g-green-100);--surface-accent-strong:var(--g-green-700);--status-warn-soft:var(--g-amber-100);--overlay:var(--g-ink-a40);--surface-glass:var(--g-white-a72);--border-glass:var(--g-white-a55);--elevation-1:var(--sh-1);--elevation-2:var(--sh-2);--elevation-3:var(--sh-3);--glass-blur:var(--blur-glass);--motion-quick:var(--dur-fast);--motion-normal:var(--dur-base);--motion-enter:var(--dur-slow);--motion-ease:var(--ease-standard);--text-inverse:var(--g-warm-0);--text-disabled:var(--g-warm-400);--text-warn:var(--g-amber-700);--text-danger:var(--g-red-700);--surface-raised:var(--g-warm-0);--surface-brand:var(--g-green-700);--surface-warn:var(--g-amber-100);--surface-danger:var(--g-red-100);--surface-scrim:var(--g-ink-a40);--border-strong:var(--g-warm-300);--border-warn:var(--g-amber-200);--border-danger:var(--g-red-200);--action-primary-active:var(--g-green-800);--action-secondary:var(--g-warm-0);--action-secondary-hover:var(--g-warm-50);--action-disabled:var(--g-warm-200);--status-ok:var(--g-green-600);--icon-default:var(--g-warm-500);--icon-active:var(--g-green-700);--icon-inverse:var(--g-warm-0);--opacity-disabled:.45;--text-order:var(--g-amber-700);--surface-order:var(--g-amber-100);--surface-visit:var(--g-blue-100);--border-visit:var(--g-blue-600);--action-kakao:var(--g-kakao-500);--action-kakao-hover:var(--g-kakao-600);--action-kakao-active:var(--g-kakao-700);--text-on-kakao:var(--g-kakao-ink);--surface-recommendation:var(--g-clay-50);--text-recommendation:var(--g-clay-700);--btn-h:var(--ctl-h);--btn-h-mobile:var(--ctl-h-mobile);--btn-radius:var(--r-8);--btn-radius-mobile:var(--r-pill);--btn-fs:var(--fs-13);--btn-fw:var(--fw-500);--btn-bg:var(--action-secondary);--btn-bg-hover:var(--action-secondary-hover);--btn-fg:var(--text-body);--btn-border:var(--border-default);--btn-primary-bg:var(--action-primary);--btn-primary-bg-hover:var(--action-primary-hover);--btn-primary-bg-active:var(--action-primary-active);--btn-primary-fg:var(--text-inverse);--btn-kakao-bg:var(--action-kakao);--btn-kakao-bg-hover:var(--action-kakao-hover);--btn-kakao-bg-active:var(--action-kakao-active);--btn-kakao-fg:var(--text-on-kakao);--btn-disabled-opacity:var(--opacity-disabled);--input-h:var(--ctl-h);--input-h-mobile:var(--ctl-h-mobile);--input-radius:var(--r-8);--input-bg:var(--surface-card);--input-border:var(--border-default);--input-border-hover:var(--border-strong);--input-border-focus:var(--border-accent);--input-ring:var(--border-focus);--input-placeholder:var(--text-placeholder);--chip-h:var(--ctl-h);--chip-h-mobile:var(--ctl-h-mobile);--chip-radius:var(--r-pill);--chip-fs:var(--fs-12);--chip-bg:var(--surface-muted);--chip-border:var(--border-default);--chip-fg:var(--text-body);--chip-on-bg:var(--surface-selected);--chip-on-border:var(--border-accent);--chip-on-fg:var(--text-accent);--seg-h:var(--ctl-h);--seg-h-mobile:calc(var(--ctl-h-mobile) + var(--sp-4));--seg-radius:var(--r-pill);--seg-bg:var(--surface-muted);--seg-thumb-bg:var(--surface-card);--seg-thumb-shadow:var(--sh-1);--seg-fg:var(--text-sub);--seg-on-fg:var(--text-accent);--seg-dur:var(--dur-base);--card-bg:var(--surface-card);--card-border:var(--border-default);--card-radius:var(--r-12);--card-radius-mobile:var(--r-12);--card-pad:var(--pad-card);--card-off-bg:var(--surface-muted);--card-off-opacity:var(--opacity-disabled);--kpi-value-fs:var(--fs-20);--kpi-value-fg:var(--text-body);--kpi-warn-fg:var(--status-warn);--kpi-label-fs:var(--fs-12);--kpi-label-fg:var(--text-sub);--tbl-fs:var(--fs-13);--tbl-head-bg:var(--g-warm-100);--tbl-head-fg:var(--text-body);--tbl-head-fw:var(--fw-600);--tbl-line:var(--border-default);--tbl-row-hover:var(--surface-hover);--tbl-row-selected:var(--surface-selected);--tbl-cell-py:var(--pad-cell-y);--tbl-cell-px:var(--pad-cell-x);--tbl-radius:var(--r-6);--stepper-btn:var(--ctl-h);--stepper-btn-mobile:var(--ctl-h-mobile);--stepper-radius:var(--r-8);--stepper-hover-bg:var(--surface-selected);--badge-fs:var(--fs-11);--badge-radius:var(--r-4);--badge-bg:var(--surface-selected);--badge-fg:var(--text-accent);--badge-warn-bg:var(--surface-warn);--badge-warn-fg:var(--text-warn);--pop-bg:var(--surface-raised);--pop-border:var(--border-default);--pop-radius:var(--r-8);--pop-shadow:var(--sh-2);--pop-item-hover:var(--surface-selected);--pop-z:var(--z-dropdown);--sheet-bg:var(--surface-raised);--sheet-radius:var(--r-16);--sheet-shadow:var(--sh-3);--sheet-scrim:var(--surface-scrim);--sheet-dur:var(--dur-slow);--sheet-ease:var(--ease-emphasis);--sheet-z:var(--z-sheet);--sheet-grabber:var(--g-warm-300);--nav-item-h:var(--ctl-h-mobile);--nav-item-radius:var(--r-8);--nav-item-fg:var(--text-body);--nav-item-hover-bg:var(--surface-muted);--nav-item-on-bg:var(--surface-selected);--nav-item-on-fg:var(--text-accent);--nav-item-on-fw:var(--fw-700);--chat-me-bg:var(--surface-selected);--chat-me-fg:var(--text-body);--mtop-h:var(--topbar-h);--mtop-bg:var(--surface-glass);--mtop-blur:var(--blur-glass);--mtop-border:var(--border-default);--mtop-title-fs:var(--fs-28);--mtop-title-fs-inner:var(--fs-16);--mtop-title-fg:var(--text-body);--tab-h:var(--tabbar-h);--tab-bg:var(--surface-glass);--tab-blur:var(--blur-glass);--tab-border:var(--border-glass);--tab-shadow:var(--sh-glass);--tab-icon:var(--hit-min);--tab-fg:var(--icon-default);--tab-on-fg:var(--icon-active);--tab-label-fs:var(--fs-11);--tab-radius:var(--r-pill);--tab-inset:var(--sp-12);--list-row-h:var(--ctl-h-mobile);--list-group-radius:var(--r-12);--list-group-bg:var(--surface-card);--list-sep:var(--border-default);--tbl-row-order-bg:var(--surface-order);--tbl-row-order-fg:var(--text-order);--tbl-thumb:40px;--tbl-group-title-fs:var(--fs-16);--tbl-group-title-fw:var(--fw-700);--check-size:20px;--sel-h:var(--ctl-h);--sel-radius:var(--r-8);--sel-bg:var(--surface-card);--sel-border:var(--border-default);--sel-fg:var(--text-body);--sel-pre-fg:var(--text-sub);--sel-fs:var(--fs-13);--sel-caret:var(--text-sub);--sel-pad-x:var(--sp-12);--sel-caret-w:var(--sp-32);--schedule-shell-pad-x:var(--sp-16);--schedule-shell-pad-y:var(--sp-12);--schedule-shell-pad-mobile:var(--sp-12);--schedule-card-pad:var(--sp-12);--schedule-head-gap:var(--sp-8);--ev-bar-w:3px;--ev-pad-y:var(--sp-8);--ev-pad-x:var(--sp-8);--ev-gap:var(--sp-2);--ev-radius:var(--r-6);--ev-bg:var(--surface-hover);--ev-bg-hover:var(--surface-selected);--ev-bar:var(--border-accent);--ev-r2-bg:var(--surface-muted);--ev-r2-bg-hover:var(--surface-warn);--ev-r2-bar:var(--g-amber-600);--ev-visit-bg:var(--surface-visit);--ev-visit-bar:var(--border-visit);--ev-title-fs:var(--fs-12);--ev-title-fw:var(--fw-700);--ev-title-lh:var(--lh-tight);--ev-sub-fs:var(--fs-11);--ev-design-fg:var(--text-accent);--ev-meta-fg:var(--text-sub);--ev-context-fs:var(--fs-11);--ev-context-fg:var(--text-sub);--ev-suggest-bg:var(--surface-warn);--ev-suggest-border:var(--border-warn);--ev-suggest-fg:var(--text-warn);--curr-fs:var(--fs-12);--curr-n-fg:var(--text-sub);--curr-date-fg:var(--text-sub);--curr-design-fg:var(--text-accent);--curr-on-bg:var(--surface-selected);--curr-on-fw:var(--fw-600);--curr-row-py:var(--sp-4);--curr-row-px:var(--sp-6);--curr-row-radius:var(--r-4);--curr-gap:var(--sp-4);--curr-sep:var(--border-default);--course-overlay-bg:var(--surface-scrim);--course-sheet-bg:var(--surface-raised);--course-sheet-border:var(--border-default);--course-sheet-radius:var(--r-16);--course-sheet-shadow:var(--sh-3);--course-sheet-w:var(--modal-wide-w);--course-sheet-z:var(--z-sheet);--course-sheet-gutter:var(--sp-20);--course-head-bg:var(--surface-page);--course-head-py:var(--sp-20);--course-head-px:var(--sp-24);--course-body-pad:var(--sp-24);--course-title-fs:var(--fs-20);--course-label-fs:var(--fs-11);--course-value-fs:var(--fs-13);--course-table-fs:var(--fs-12);--course-row-py:var(--sp-8);--course-row-px:var(--sp-8);--course-current-bg:var(--surface-selected);--course-accent-fg:var(--text-accent);--course-touch-h:var(--hit-min);--material-draft-head-bg:var(--surface-selected);--material-draft-final-fg:var(--text-accent);--material-draft-thumb:var(--hit-min);--material-draft-mobile-gap:var(--sp-8);--photo-hero-viewport-h:46vh;--photo-hero-max-h:440px;--photo-hero-mobile-viewport-h:42dvh;--photo-hero-mobile-max-h:360px;--purchase-main-gap:var(--sp-16);--purchase-col-role-w:68px;--purchase-col-num-w:88px;--purchase-col-stock-w:88px;--purchase-col-final-w:88px;--purchase-stepper-btn-w:28px;--purchase-stepper-input-w:32px;--purchase-design-gap:var(--sp-24);--rolechip-min-w:42px;--rolechip-pad-x:var(--sp-6);--rolechip-radius:var(--r-pill);--rolechip-bg:var(--surface-muted);--rolechip-fg:var(--text-sub);--rolechip-fs:var(--fs-11);--rolechip-fw:var(--fw-600);--design-preview-size:144px;--design-preview-size-compact:96px;--design-preview-radius:var(--r-6);--design-preview-bg:var(--surface-muted);--design-preview-overlay:var(--surface-scrim);--design-preview-fg:var(--text-inverse);--design-preview-fs:var(--fs-12);--design-preview-fw:var(--fw-700);--history-nav-size:28px;--history-nav-radius:var(--r-pill);--history-nav-bg:var(--surface-card);--history-nav-border:var(--border-default);--history-nav-fg:var(--text-sub);--history-nav-border-hover:var(--border-accent);--history-nav-fg-hover:var(--text-accent);--history-card-w:200px;--material-options-max-h:240px;--history-card-h:84px;--history-card-radius:var(--r-8);--history-card-pad:var(--sp-8);--history-card-bg:var(--surface-card);--history-card-border:var(--border-default);--history-card-bg-selected:var(--surface-selected);--history-card-border-selected:var(--border-accent);--history-card-title-fs:var(--fs-12);--history-card-meta-fs:var(--fs-11);--history-card-meta-fg:var(--text-sub);--history-shoulder-bg:var(--surface-muted);--history-shoulder-fg:var(--text-accent);--dcard-w:900px;--dcard-media-w:360px;--dcard-media-h:420px;--dcard-mat-size:110px;--dcard-media-radius:var(--r-12);--dcard-mat-radius:var(--r-8);--dcard-media-bg:var(--surface-muted);--dcard-media-border:var(--border-default);--dcard-close-size:var(--ctl-h);--dcard-scrim-pad:var(--sp-24);--dcard-head-gap:var(--sp-12);--dcard-head-py:var(--sp-16);--dcard-head-px:var(--sp-20);--dcard-body-pad:var(--sp-20);--dcard-body-gap:var(--sp-20);--mk-row-h:var(--hit-min);--mk-thumb:var(--hit-min);--mk-check:var(--hit-min);--mk-name-fs:var(--fs-16);--mk-sub-fs:var(--fs-12);--mk-sub-fg:var(--text-sub);--mk-qty-fs:var(--fs-20);--mk-qty-fw:var(--fw-700);--mk-order-fg:var(--g-amber-700);--mk-sec-fs:var(--fs-12);--mk-sec-fg:var(--text-accent);--mk-done-opacity:.45;--mk-bar-bg:var(--surface-glass);--mk-bar-blur:var(--blur-glass);--mk-bar-shadow:var(--sh-glass);--mk-bar-h:var(--tabbar-h);--history-photo-size:64px;--purchase-status-size:24px;--purchase-status-border:var(--text-sub);--purchase-status-bg:var(--surface-card);--purchase-status-on-bg:var(--action-primary);--purchase-status-on-fg:var(--text-inverse);--material-options-w:400px;--material-option-photo-size:48px;--preview-panel-gap:var(--sp-20);--preview-header-pad:var(--sp-20);--preview-row-pad:var(--sp-8);--preview-outline:var(--border-accent);--preview-soft-bg:var(--surface-hover);--purchase-suggestion-bg:var(--surface-recommendation);--purchase-suggestion-fg:var(--text-recommendation)}
*{box-sizing:border-box}html,body{height:100%;margin:0}body{background:var(--surface-page);color:var(--text-body);font:var(--fs-13)/var(--lh-relaxed) var(--font-body)}button,input,select,textarea{font:inherit}a{color:var(--text-link);text-decoration:none}a:hover{text-decoration:underline}button{cursor:pointer}:focus-visible{outline:var(--ring-w) solid var(--border-accent);outline-offset:var(--sp-2)}[hidden]{display:none!important}*{scrollbar-width:thin;scrollbar-color:var(--border-default) transparent}.app-shell{height:100dvh;display:flex;overflow:hidden}.sidebar{flex:0 0 var(--side-w);min-width:0;padding:var(--sp-16) var(--sp-8);background:var(--surface-page);border-right:1px solid var(--border-default);flex-direction:column;display:flex;position:relative;overflow:auto}.brand{align-items:center;gap:var(--sp-8);min-height:var(--hit-min);padding:0 var(--sp-12);margin-bottom:var(--sp-20);color:var(--text-body);font:var(--fw-700) var(--fs-16)/var(--lh-tight) var(--font-display);letter-spacing:.02em;display:flex}.brand:hover{text-decoration:none}.brand small{margin-top:var(--sp-2);color:var(--text-sub);font:var(--fw-400) var(--fs-11)/var(--lh-body) var(--font-body);letter-spacing:0;display:block}.brand-mark{flex:0 0 var(--sp-32);height:var(--sp-32);border:1px solid var(--border-accent);border-radius:var(--r-6);color:var(--text-accent);font:var(--fw-400) var(--fs-20)/1 var(--font-display);place-items:center;display:grid}.nav-caption{padding:0 var(--sp-12) var(--sp-8);color:var(--text-sub);font-size:var(--fs-11);font-weight:var(--fw-600)}.sidebar nav{gap:var(--sp-2);display:grid}.mode-toggle{gap:var(--sp-2);margin:0 var(--sp-4) var(--sp-12);padding:var(--sp-2);border:1px solid var(--border-default);border-radius:var(--r-pill);background:var(--surface-card);grid-template-columns:1fr 1fr;display:grid}.mode-tab{min-height:calc(var(--ctl-h) - var(--sp-4));padding:0 var(--sp-8);border-radius:var(--r-pill);color:var(--text-sub);font-size:var(--fs-12);font-weight:var(--fw-500);white-space:nowrap;justify-content:center;align-items:center;text-decoration:none;display:inline-flex}.mode-tab:hover{background:var(--surface-hover);color:var(--text-body);text-decoration:none}.mode-tab.active{background:var(--surface-brand);color:var(--text-inverse);font-weight:var(--fw-700)}.ops-date{align-items:center;gap:var(--sp-8);white-space:nowrap;color:var(--text-sub);font-size:var(--fs-12);font-weight:var(--fw-500);display:inline-flex}.ops-date select{min-height:var(--ctl-h);padding:0 var(--sp-8);border:1px solid var(--border-default);border-radius:var(--r-8);background:var(--surface-card);color:var(--text-body);font:inherit;font-size:var(--fs-13)}.ops-actions{margin-bottom:var(--sp-12);align-items:center}.ops-sheet-state{color:var(--text-sub);font-size:var(--fs-12);margin-right:auto}.cell-input{width:100%;min-width:calc(var(--sp-48) + var(--sp-40));min-height:var(--ctl-h);padding:0 var(--sp-8);border:1px solid var(--border-default);border-radius:var(--r-6);background:var(--surface-card);color:var(--text-body);font:inherit;font-size:var(--fs-13)}.cell-input:focus-visible{outline:2px solid var(--border-accent);outline-offset:1px}.cell-error{margin-top:var(--sp-4);color:var(--text-danger);font-size:var(--fs-11);display:block}.ops-loading,.ops-foot{margin:var(--sp-16) 0 0;color:var(--text-sub);font-size:var(--fs-12)}.stat-card.warn strong{color:var(--text-danger)}.row-muted td{color:var(--text-sub)}.row-warn td:nth-child(5){color:var(--text-danger)}.ops-nav{align-items:center;gap:var(--sp-8);margin-bottom:var(--sp-12);flex-wrap:wrap;display:inline-flex}.page-header .ops-nav{margin-bottom:0}.ops-window{margin:0 0 var(--sp-8);color:var(--text-sub);font-size:var(--fs-12)}.ops-missing{color:var(--text-warn)}.ops-ai{color:var(--text-recommendation)}.ops-src{color:var(--text-sub);font-size:var(--fs-11)}.ops-classes{color:var(--text-sub);font-size:var(--fs-12);min-width:12rem}.side-resize{width:var(--sp-4);cursor:col-resize;touch-action:none;transition:background var(--dur-fast);position:absolute;top:0;bottom:0;right:0}.side-resize:hover{background:var(--border-accent)}.nav-link{min-width:0}.nav-link>span,.nav-link{white-space:nowrap}.nav-icon{width:var(--sp-16);height:var(--sp-16);color:var(--icon-default);flex:none}.nav-link.active .nav-icon{color:var(--icon-active)}.nav-group{gap:var(--sp-2);display:grid}.nav-group-title{padding:var(--sp-8) var(--sp-12) var(--sp-2);color:var(--text-sub);font-size:var(--fs-11);font-weight:var(--fw-700)}.nav-link{align-items:center;gap:var(--sp-8);min-height:var(--ctl-h);padding:var(--sp-4) var(--sp-12);border-left:var(--ring-w) solid transparent;border-radius:var(--nav-item-radius);color:var(--nav-item-fg);font-size:var(--fs-13);font-weight:var(--fw-500);transition:background var(--dur-fast);display:flex}.nav-link:hover{background:var(--nav-item-hover-bg);text-decoration:none}.nav-link.active{background:var(--nav-item-on-bg);border-left-color:var(--border-accent);color:var(--nav-item-on-fg);font-weight:var(--nav-item-on-fw)}.sidebar-foot{padding:var(--sp-20) var(--sp-12) var(--sp-4);color:var(--text-sub);font-size:var(--fs-11);margin-top:auto}.main-area{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.topbar{flex:0 0 var(--topbar-h);padding:0 var(--pad-shell);border-bottom:1px solid var(--border-default);background:var(--surface-card);font-size:var(--fs-13);font-weight:var(--fw-600);justify-content:space-between;align-items:center;display:flex}.topbar span{margin-left:var(--sp-8);color:var(--text-sub);font-weight:var(--fw-400)}.topbar-state{color:var(--text-sub);font-weight:var(--fw-500)}.status-dot{width:var(--sp-8);height:var(--sp-8);border-radius:var(--r-pill);background:var(--border-accent);display:inline-block;margin:0 var(--sp-4) 0 0!important}.subnav{gap:var(--sp-4);padding:var(--sp-8) var(--pad-shell);border-bottom:1px solid var(--border-default);background:var(--surface-card);scrollbar-width:thin;flex:none;display:flex;overflow-x:auto}.subnav-link{min-height:var(--hit-min);padding:var(--sp-8) var(--sp-12);border-radius:var(--r-8);color:var(--text-sub);font-size:var(--fs-13);font-weight:var(--fw-500);white-space:nowrap;transition:background var(--dur-fast);border:1px solid #0000;flex:none;align-items:center;display:inline-flex}.subnav-link:hover{background:var(--surface-hover);color:var(--text-body);text-decoration:none}.subnav-link.active{border-color:var(--border-accent);background:var(--surface-selected);color:var(--text-accent);font-weight:var(--fw-700)}@media (max-width:960px){.subnav{padding:var(--sp-8) var(--sp-16)}}.content{width:100%;min-width:0;min-height:0;padding:var(--pad-shell);flex:1;overflow:auto}.page-header{justify-content:space-between;align-items:end;gap:var(--sp-16);margin-bottom:var(--sp-20);display:flex}.page-header h1{font-size:var(--fs-20);font-weight:var(--fw-700);line-height:var(--lh-tight);margin:0}.eyebrow{margin:0 0 var(--sp-6);color:var(--text-sub);font-size:var(--fs-11);font-weight:var(--fw-600)}.back-link{margin-bottom:var(--sp-8);font-size:var(--fs-12);display:inline-block}.button{justify-content:center;align-items:center;gap:var(--sp-4);min-height:var(--btn-h);padding:var(--sp-6) var(--sp-12);border:1px solid var(--btn-border);border-radius:var(--r-6);background:var(--btn-bg);color:var(--btn-fg);font-size:var(--btn-fs);font-weight:var(--btn-fw);line-height:var(--lh-tight);white-space:nowrap;transition:background var(--dur-fast);display:inline-flex}.button:hover,.button.subtle:hover{background:var(--btn-bg-hover);text-decoration:none}.button:active{background:var(--btn-bg-hover)}.button.primary{border-color:var(--btn-primary-bg);background:var(--btn-primary-bg);color:var(--btn-primary-fg)}.button.primary:hover{border-color:var(--btn-primary-bg-hover);background:var(--btn-primary-bg-hover)}.button.primary:active{border-color:var(--btn-primary-bg-active);background:var(--btn-primary-bg-active)}.button.subtle{background:var(--btn-bg)}.button:disabled,.text-button:disabled{opacity:var(--opacity-disabled);cursor:not-allowed}.panel{margin-bottom:var(--sp-20);border:1px solid var(--card-border);border-radius:var(--r-8);background:var(--card-bg);overflow:hidden}.panel-title{justify-content:space-between;align-items:center;gap:var(--sp-12);min-height:var(--sp-40);padding:var(--sp-12) var(--sp-20);border-bottom:1px solid var(--border-default);display:flex}.panel-title h2,.subform h2,.subform h3{font-size:var(--fs-16);font-weight:var(--fw-600);margin:0}.panel-title a{font-size:var(--fs-12)}.stats-grid{margin-bottom:var(--sp-20);border:1px solid var(--border-default);border-radius:var(--r-8);background:var(--surface-card);grid-template-columns:repeat(3,minmax(0,1fr));display:grid;overflow:hidden}.stat-card{min-width:0;padding:var(--sp-16) var(--sp-20);border-right:1px solid var(--border-default);color:var(--text-body);flex-direction:column;display:flex}.stat-card:last-child{border-right:0}.stat-card:hover{background:var(--surface-hover);text-decoration:none}.stat-card span{color:var(--text-sub);font-size:var(--kpi-label-fs)}.stat-card strong{margin:var(--sp-4) 0;color:var(--text-accent);font-size:var(--kpi-value-fs);line-height:var(--lh-tight);font-variant-numeric:tabular-nums}.stat-card small{color:var(--text-link);font-size:var(--fs-12)}.quick-grid{gap:var(--gap-card);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.quick-grid a{min-height:var(--btn-h);padding:var(--sp-8) var(--sp-12);border:1px solid var(--btn-border);border-radius:var(--r-6);background:var(--btn-bg);color:var(--btn-fg);font-size:var(--btn-fs);font-weight:var(--btn-fw);align-items:center;display:flex}.quick-grid a:hover{background:var(--btn-bg-hover);text-decoration:none}.toolbar{align-items:center;gap:var(--sp-8);padding:var(--sp-12) var(--sp-20);border-bottom:1px solid var(--border-default);display:flex}.search{width:min(320px,100%)}.search input{width:100%}.result-count{color:var(--text-sub);font-size:var(--fs-12);font-variant-numeric:tabular-nums;margin-left:auto}.table-wrap{width:100%;overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:var(--tbl-fs)}thead th{padding:var(--tbl-cell-py) var(--tbl-cell-px);border-bottom:1px solid var(--tbl-line);background:var(--tbl-head-bg);color:var(--tbl-head-fg);font-weight:var(--tbl-head-fw);text-align:left;white-space:nowrap}tbody td{padding:var(--tbl-cell-py) var(--tbl-cell-px);border-bottom:1px solid var(--tbl-line);vertical-align:middle;white-space:nowrap}tbody tr:last-child td{border-bottom:0}tbody tr:hover{background:var(--tbl-row-hover)}tbody td a{font-weight:var(--fw-600)}.actions{gap:var(--sp-12);display:flex}.empty-cell{padding:var(--sp-32) var(--sp-12);color:var(--text-sub);text-align:center}.form-panel{padding:var(--pad-card)}.form-grid{gap:var(--sp-16);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.field{gap:var(--sp-6);min-width:0;color:var(--text-body);font-size:var(--fs-13);font-weight:var(--fw-500);flex-direction:column;display:flex}.field em{color:var(--text-danger);font-style:normal}.field small{color:var(--text-sub);font-size:var(--fs-11);font-weight:var(--fw-400)}input:not([type=checkbox]),select,textarea{width:100%;min-height:var(--input-h);padding:var(--sp-6) var(--sp-8);border:1px solid var(--input-border);border-radius:var(--r-6);background:var(--input-bg);color:var(--text-body);outline:none}input:not([type=checkbox]):hover,select:hover,textarea:hover{border-color:var(--input-border-hover)}input:not([type=checkbox]):focus-visible,select:focus-visible,textarea:focus-visible{border-color:var(--input-border-focus);box-shadow:0 0 0 var(--ring-w) var(--input-ring);outline:none}input::placeholder,textarea::placeholder{color:var(--input-placeholder)}input[type=file]::file-selector-button{margin-right:var(--sp-8);padding:var(--sp-4) var(--sp-8);border:1px solid var(--btn-border);border-radius:var(--r-4);background:var(--btn-bg);color:var(--btn-fg);font:inherit}textarea{resize:vertical}.field:has(textarea){grid-column:span 2}.field.multi{border:0;grid-column:1/-1;margin:0;padding:0}.field.multi legend{padding:0 0 var(--sp-8)}.choice-row{gap:var(--sp-8) var(--sp-16);flex-wrap:wrap;display:flex}.choice-row label,.check-field{align-items:center;gap:var(--sp-6);color:var(--text-body);font-weight:var(--fw-400);display:flex}.check-field{padding-top:var(--sp-20)}.check-field input,.choice-row input{accent-color:var(--action-primary)}.form-actions{justify-content:flex-end;gap:var(--sp-8);margin-top:var(--sp-20);padding-top:var(--sp-16);border-top:1px solid var(--border-default);display:flex}.identity{margin-bottom:var(--sp-16);padding:var(--sp-8) var(--sp-12);border-radius:var(--r-6);background:var(--surface-muted);color:var(--text-sub)}.identity strong{margin-left:var(--sp-8);color:var(--text-body)}.notice{margin-bottom:var(--sp-16);padding:var(--sp-8) var(--sp-12);border:1px solid var(--border-default);border-radius:var(--r-6);font-size:var(--fs-12);line-height:var(--lh-body)}.notice.error{border-color:var(--border-danger);background:var(--surface-danger);color:var(--text-danger)}.notice.success{border-color:var(--border-accent);background:var(--surface-selected);color:var(--text-accent)}.notice.info{border-color:var(--border-default);background:var(--surface-muted);color:var(--text-sub)}.badge{padding:var(--sp-2) var(--sp-6);border-radius:var(--badge-radius);background:var(--badge-bg);color:var(--badge-fg);font-size:var(--badge-fs);font-weight:var(--fw-600);white-space:nowrap;align-items:center;display:inline-flex}.badge.danger{background:var(--surface-danger);color:var(--text-danger)}.detail-grid{gap:var(--sp-20);padding:var(--pad-card);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.detail-grid>div{gap:var(--sp-4);flex-direction:column;min-width:0;display:flex}.detail-grid small{color:var(--text-sub);font-size:var(--fs-11)}.detail-grid strong{overflow-wrap:anywhere;font-size:var(--fs-13);font-weight:var(--fw-600)}.inline-form{align-items:flex-end;gap:var(--sp-12);padding:var(--sp-16) var(--sp-20);border-bottom:1px solid var(--border-default);flex-wrap:wrap;display:flex}.inline-form label{gap:var(--sp-4);min-width:140px;color:var(--text-sub);font-size:var(--fs-12);font-weight:var(--fw-500);flex-direction:column;flex:1;display:flex}.muted{padding:0 var(--sp-20) var(--sp-16);color:var(--text-sub);font-size:var(--fs-12);margin:0}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.subform{padding:var(--pad-card);border-top:1px solid var(--border-default)}.subform h2,.subform h3{margin-bottom:var(--sp-16)}.subform .form-actions{margin-top:var(--sp-16)}.text-button{padding:var(--sp-4);border-radius:var(--r-4);color:var(--text-link);font-size:var(--fs-13);font-weight:var(--fw-500);background:0 0;border:0}.text-button:hover{background:var(--surface-hover);text-decoration:underline}.filter-field{max-width:180px}.memo-text{min-width:250px;max-width:650px;line-height:var(--lh-body);white-space:normal}.panel>.notice{margin:var(--sp-16) var(--sp-20)}.header-actions{gap:var(--sp-8);flex-wrap:wrap;display:flex}.import-body{padding:var(--pad-card)}.import-body .notice{margin:0 0 var(--sp-16)}.import-hint{margin:0 0 var(--sp-16);padding:0}.import-form{align-items:end;gap:var(--sp-12);max-width:750px;display:flex}.import-form .field{flex:1}.preview-stats{border-bottom:1px solid var(--border-default);grid-template-columns:repeat(3,1fr);display:grid}.preview-stats>div{gap:var(--sp-4);padding:var(--sp-16) var(--sp-20);border-right:1px solid var(--border-default);flex-direction:column;display:flex}.preview-stats>div:last-child{border-right:0}.preview-stats small{color:var(--text-sub);font-size:var(--fs-12)}.preview-stats strong{color:var(--text-accent);font-size:var(--fs-20);font-variant-numeric:tabular-nums}.preview-empty{padding:var(--sp-20);color:var(--text-sub);font-size:var(--fs-12)}@media (max-width:1000px){.form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.field.multi{grid-column:1/-1}.detail-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:760px){.app-shell{flex-direction:column}.sidebar{gap:var(--sp-8);padding:var(--sp-8) var(--sp-12);border-right:0;border-bottom:1px solid var(--border-default);flex:none;overflow:visible}.brand{min-height:var(--sp-32);padding:0 var(--sp-4);margin:0}.sidebar nav{gap:var(--sp-4);display:flex;overflow-x:auto}.nav-group{display:contents}.nav-group-title{display:none}.nav-link{min-height:var(--hit-min);white-space:nowrap;flex:none}.nav-caption,.sidebar-foot,.mode-toggle{gap:var(--sp-2);margin:0 var(--sp-4) var(--sp-12);padding:var(--sp-2);border:1px solid var(--border-default);border-radius:var(--r-pill);background:var(--surface-card);grid-template-columns:1fr 1fr;display:grid}.mode-tab{min-height:calc(var(--ctl-h) - var(--sp-4));padding:0 var(--sp-8);border-radius:var(--r-pill);color:var(--text-sub);font-size:var(--fs-12);font-weight:var(--fw-500);white-space:nowrap;justify-content:center;align-items:center;text-decoration:none;display:inline-flex}.mode-tab:hover{background:var(--surface-hover);color:var(--text-body);text-decoration:none}.mode-tab.active{background:var(--surface-brand);color:var(--text-inverse);font-weight:var(--fw-700)}.ops-date{align-items:center;gap:var(--sp-8);white-space:nowrap;color:var(--text-sub);font-size:var(--fs-12);font-weight:var(--fw-500);display:inline-flex}.ops-date select{min-height:var(--ctl-h);padding:0 var(--sp-8);border:1px solid var(--border-default);border-radius:var(--r-8);background:var(--surface-card);color:var(--text-body);font:inherit;font-size:var(--fs-13)}.ops-actions{margin-bottom:var(--sp-12);align-items:center}.ops-sheet-state{color:var(--text-sub);font-size:var(--fs-12);margin-right:auto}.cell-input{width:100%;min-width:calc(var(--sp-48) + var(--sp-40));min-height:var(--ctl-h);padding:0 var(--sp-8);border:1px solid var(--border-default);border-radius:var(--r-6);background:var(--surface-card);color:var(--text-body);font:inherit;font-size:var(--fs-13)}.cell-input:focus-visible{outline:2px solid var(--border-accent);outline-offset:1px}.cell-error{margin-top:var(--sp-4);color:var(--text-danger);font-size:var(--fs-11);display:block}.ops-loading,.ops-foot{margin:var(--sp-16) 0 0;color:var(--text-sub);font-size:var(--fs-12)}.stat-card.warn strong{color:var(--text-danger)}.row-muted td{color:var(--text-sub)}.side-resize{display:none}.topbar{flex-basis:var(--topbar-h);padding:0 var(--sp-16)}.topbar-state{display:none}.content{padding:var(--pad-mobile)}.page-header{align-items:flex-start;gap:var(--sp-8);flex-direction:column}.page-header h1{font-size:var(--fs-20)}.panel{border-radius:var(--r-12);box-shadow:var(--sh-1)}.stats-grid{margin-bottom:var(--sp-16)}.stat-card{padding:var(--sp-12)}.quick-grid{gap:var(--sp-8);grid-template-columns:1fr}.button,.quick-grid a{min-height:var(--btn-h-mobile);border-radius:var(--btn-radius-mobile)}input:not([type=checkbox]),select,textarea{min-height:var(--input-h-mobile)}.form-grid{grid-template-columns:1fr}.field.multi{grid-column:1}.field:has(textarea){grid-column:1}.detail-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.form-panel,.subform,.import-body{padding:var(--sp-16)}.inline-form label{min-width:100%}.inline-form .button,.header-actions{width:100%}.header-actions .button{flex:1}.import-form{display:block}.import-form .button{width:100%;margin-top:var(--sp-12)}.preview-stats>div{padding:var(--sp-12)}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:0s!important;animation-duration:0s!important}}.bulk-course{margin:var(--sp-6) 0 0;color:var(--text-sub);font-size:var(--fs-12)}.bulk-intro{padding:var(--sp-12) var(--sp-20);color:var(--text-sub);font-size:var(--fs-12);margin:0}.bulk-notice{margin:0 var(--sp-20) var(--sp-12)}.bulk-notice ul{margin:var(--sp-6) 0 0;padding-left:var(--sp-20)}.bulk-table{table-layout:fixed;min-width:840px}.bulk-table th:first-child,.bulk-table td:first-child{width:var(--sp-40);text-align:center}.bulk-table th:nth-child(2){width:22%}.bulk-table th:nth-child(3){width:15%}.bulk-table th:nth-child(4),.bulk-table th:nth-child(5){width:18%}.bulk-table th:nth-child(6){width:22%}.bulk-table td{padding:var(--sp-4) var(--sp-6)}.bulk-table input,.bulk-table select{width:100%;min-width:0}.bulk-number{color:var(--text-sub);font-variant-numeric:tabular-nums}.bulk-table tr.bulk-row-error{background:var(--surface-danger)}.bulk-table [aria-invalid=true]{border-color:var(--border-danger)}.bulk-tools{justify-content:space-between;gap:var(--sp-12);padding:var(--sp-16) var(--sp-20);border-top:1px solid var(--border-default);display:flex}.bulk-row-actions,.bulk-submit{gap:var(--sp-8);flex-wrap:wrap;display:flex}@media (max-width:760px){.bulk-intro{padding:var(--sp-12) var(--sp-16)}.bulk-notice{margin:0 var(--sp-16) var(--sp-12)}.bulk-tools{padding:var(--sp-16);flex-direction:column}.bulk-row-actions,.bulk-submit{grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.bulk-table input,.bulk-table select{min-height:var(--input-h-mobile)}}.bulk-mobile-hint{padding:0 var(--sp-20) var(--sp-12);color:var(--text-sub);font-size:var(--fs-12);margin:0;display:none}@media (max-width:760px){.bulk-mobile-hint{padding:0 var(--sp-16) var(--sp-12);display:block}}.attendance-backdrop{z-index:130;padding:var(--sp-20);background:var(--surface-scrim);place-items:center;display:grid;position:fixed;inset:0}.attendance-dialog{border:1px solid var(--border-default);border-radius:var(--sheet-radius);background:var(--sheet-bg);width:min(760px,100%);max-height:85dvh;box-shadow:var(--sheet-shadow);flex-direction:column;display:flex;overflow:hidden}.attendance-dialog-header{justify-content:space-between;align-items:flex-start;gap:var(--sp-16);padding:var(--sp-16) var(--sp-20);border-bottom:1px solid var(--border-default);display:flex}.attendance-dialog-header h2{font-size:var(--fs-20);line-height:var(--lh-tight);margin:0}.attendance-course{margin:var(--sp-6) 0 0;color:var(--text-sub);font-size:var(--fs-12)}.attendance-dialog-form{flex-direction:column;flex:1;min-height:0;display:flex}.attendance-dialog-body{min-height:0;padding:var(--sp-16) var(--sp-20);flex:1;overflow-y:auto}.attendance-date{max-width:220px}.attendance-note{margin:var(--sp-12) 0;color:var(--text-sub);font-size:var(--fs-12)}.attendance-empty{padding:var(--sp-32) var(--sp-12);color:var(--text-sub);text-align:center}.attendance-table td{vertical-align:top}.attendance-table th:first-child,.attendance-table td:first-child{width:var(--sp-40);text-align:center}.attendance-table select,.attendance-table input{min-width:110px}.attendance-table .attendance-row-error{background:var(--surface-danger)}.attendance-table [aria-invalid=true]{border-color:var(--border-danger)}.attendance-row-message{margin-top:var(--sp-4);color:var(--text-danger);font-size:var(--fs-11);white-space:normal;display:block}.attendance-dialog-footer{justify-content:flex-end;gap:var(--sp-8);padding:var(--sp-12) var(--sp-20);border-top:1px solid var(--border-default);background:var(--surface-card);display:flex}@media (max-width:600px){.attendance-backdrop{padding:var(--sp-12)}.attendance-dialog{width:100%;max-height:85dvh}.attendance-dialog-header{padding:var(--sp-12) var(--sp-16)}.attendance-dialog-header h2{font-size:var(--fs-16)}.attendance-dialog-body{padding:var(--sp-12) var(--sp-16)}.attendance-date{max-width:none}.attendance-table,.attendance-table tbody,.attendance-table tr,.attendance-table td{width:100%;display:block}.attendance-table thead{display:none}.attendance-table tr{padding:var(--sp-8) 0;border-bottom:1px solid var(--border-default)}.attendance-table td{justify-content:space-between;align-items:center;gap:var(--sp-8);padding:var(--sp-4) 0;white-space:normal;border:0;display:flex;text-align:right!important}.attendance-table td:before{content:attr(data-label);color:var(--text-sub);font-size:var(--fs-12);white-space:nowrap}.attendance-table td select,.attendance-table td input{max-width:180px}.attendance-dialog-footer{padding:var(--sp-12) var(--sp-16)}.attendance-dialog-footer .button{min-height:var(--btn-h-mobile);flex:1}}.enrollment-bulk-bar{align-items:flex-end;gap:var(--sp-12);padding:var(--sp-12) var(--sp-20);border-bottom:1px solid var(--border-default);background:var(--surface-muted);flex-wrap:wrap;display:flex}.enrollment-bulk-bar label{gap:var(--sp-4);min-width:180px;color:var(--text-sub);font-size:var(--fs-12);font-weight:var(--fw-500);flex-direction:column;display:flex}.enrollment-bulk-bar .result-count{margin-left:auto}.enrollment-bulk-error{margin:var(--sp-12) var(--sp-20)}.selection-cell{width:var(--sp-32);text-align:center}.selection-cell input{accent-color:var(--action-primary)}@media (max-width:760px){.enrollment-bulk-bar{padding:var(--sp-12) var(--sp-16)}.enrollment-bulk-bar label{flex:1;min-width:160px}.enrollment-bulk-bar .button{flex:1}.enrollment-bulk-error{margin:var(--sp-12) var(--sp-16)}}
