:root{--dobok:#fffefa;--paper:#f4f6f2;--ink:#171c1b;--ink-soft:#4c5653;--dancheong:#087f78;--dancheong-deep:#075a57;--belt:#c53b32;--gold-belt:#d5a419;--line:#cad2ce;--focus:#006ee6;--success:#26734d;--error:#a92821;--radius:14px;--shadow:0 14px 36px rgb(20 34 31/9%);color-scheme:light;font-family:Pretendard Variable,Pretendard,Noto Sans KR,Apple SD Gothic Neo,system-ui,sans-serif;background:var(--paper);color:var(--ink);font-synthesis:none}*{box-sizing:border-box}html{min-width:320px;background:var(--paper)}body{min-height:100vh;margin:0}a{color:var(--dancheong-deep);text-underline-offset:.18em}button,select{font:inherit}:focus-visible{outline:3px solid var(--focus);outline-offset:3px}.skip-link{position:fixed;z-index:10;top:8px;left:8px;padding:12px 16px;background:var(--ink);color:white;transform:translateY(-150%)}.skip-link:focus{transform:translateY(0)}.app-frame{display:grid;min-height:100vh;grid-template-rows:auto auto 1fr auto}.site-header{display:flex;min-height:76px;align-items:center;justify-content:space-between;gap:16px;padding:12px clamp(16px,4vw,56px);background:var(--dobok)}.brand{display:inline-flex;min-height:48px;align-items:center;gap:12px;color:var(--ink);text-decoration:none}.brand-mark{display:grid;width:48px;height:48px;place-items:center;border:2px solid var(--ink);border-radius:50%;font-size:12px;font-weight:900;letter-spacing:-.08em}.brand small,.brand strong{display:block}.brand strong{font-size:17px}.brand small{margin-top:2px;color:var(--ink-soft);font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}nav{display:flex;gap:4px}nav a{display:inline-flex;min-width:48px;min-height:44px;align-items:center;justify-content:center;padding:0 12px;border-radius:10px;color:var(--ink);font-weight:700;text-decoration:none}nav a[aria-current=page]{background:var(--ink);color:white}.belt-line{position:relative;height:7px;background:var(--ink)}.belt-line span{position:absolute;right:clamp(24px,10vw,180px);width:clamp(90px,20vw,220px);height:7px;background:var(--belt);transform:skewX(-28deg)}main{width:100%}h1,h2,p{margin-top:0}h1{max-width:14ch;margin-bottom:14px;font-family:"Noto Serif KR",Nanum Myeongjo,Georgia,serif;font-size:clamp(34px,7vw,64px);font-weight:800;letter-spacing:-.055em;line-height:1.08}h2{margin-bottom:10px;font-size:clamp(22px,3vw,28px);letter-spacing:-.025em}p{line-height:1.65}.eyebrow{margin-bottom:10px;color:var(--dancheong-deep);font-size:13px;font-weight:900;letter-spacing:.1em;text-transform:uppercase}.supporting{color:var(--ink-soft)}.panel{border:1px solid var(--line);border-radius:var(--radius);background:var(--dobok);box-shadow:var(--shadow)}.auth-layout{display:grid;min-height:min(720px,calc(100vh - 150px));align-items:center;grid-gap:clamp(28px,7vw,96px);gap:clamp(28px,7vw,96px);padding:clamp(44px,9vw,120px) clamp(18px,7vw,96px)}.auth-intro>p:last-child{max-width:46ch;color:var(--ink-soft)}.auth-panel{width:100%;max-width:440px;padding:clamp(24px,5vw,40px)}.button{display:inline-flex;min-height:48px;align-items:center;justify-content:center;padding:10px 18px;border:2px solid transparent;border-radius:11px;font-weight:850;text-decoration:none;cursor:pointer}.button-primary{background:var(--dancheong-deep);color:white}.button-primary:hover{background:var(--ink)}.button-secondary{border-color:var(--ink);background:transparent;color:var(--ink)}.fine-print{margin:18px 0 0;color:var(--ink-soft);font-size:12px}.dashboard,.narrow-section{width:min(1120px,calc(100% - 36px));margin:0 auto;padding:clamp(44px,8vw,92px) 0}.narrow-section{max-width:720px}.scope-form{display:grid;grid-gap:10px;gap:10px;margin-top:28px;padding:clamp(22px,5vw,38px)}.scope-form label{margin-top:8px;font-size:14px;font-weight:800}.scope-form select{width:100%;min-height:48px;padding:8px 38px 8px 12px;border:1px solid #7d8985;border-radius:9px;background:white;color:var(--ink)}.scope-form .button{margin-top:14px}.dashboard-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:34px}.dashboard-heading h1{margin-bottom:8px}.dashboard-heading p:last-child{max-width:54ch;margin-bottom:0;color:var(--ink-soft)}.state-card{display:grid;min-height:330px;place-items:center;align-content:center;padding:36px 24px;text-align:center}.state-card p{max-width:54ch;color:var(--ink-soft)}.state-symbol{display:grid;width:62px;height:62px;margin-bottom:18px;place-items:center;border:2px solid var(--dancheong);border-radius:50%;color:var(--dancheong-deep);font-size:28px;font-weight:900}.state-symbol.success{border-color:var(--success);color:var(--success)}.error-card{border-top:5px solid var(--error)}.error-card .state-symbol{border-color:var(--error);color:var(--error)}.loading-mark{width:62px;height:62px;margin-bottom:18px;border:6px solid var(--line);border-top-color:var(--dancheong);border-radius:50%;animation:turn .9s linear infinite}.button-row{justify-content:center;gap:10px}.button-row,.preview-links{display:flex;flex-wrap:wrap}.preview-links{align-items:center;gap:8px 16px;padding-top:18px;color:var(--ink-soft);font-size:13px}.preview-links a{display:inline-flex;min-width:44px;min-height:44px;align-items:center;justify-content:center}.status-list{overflow:hidden}.status-list>div{display:flex;min-height:76px;align-items:center;gap:14px;padding:14px 20px}.status-list>div+div{border-top:1px solid var(--line)}.status-list small,.status-list strong{display:block}.status-list small{margin-top:3px;color:var(--ink-soft)}.status-dot{width:12px;height:12px;border-radius:50%;background:var(--success)}.status-dot.muted{background:var(--gold-belt)}footer{display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px;padding:24px clamp(18px,5vw,56px);border-top:1px solid var(--line);color:var(--ink-soft);font-size:12px}@keyframes turn{to{transform:rotate(1turn)}}@media (min-width:760px){.auth-layout{grid-template-columns:minmax(0,1fr) minmax(340px,440px)}}@media (max-width:620px){.site-header{align-items:flex-start}.brand small{max-width:15ch}.dashboard-heading{align-items:flex-start;flex-direction:column}.dashboard-heading .button{width:100%}}@media (prefers-reduced-motion:reduce){*,:after,:before{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (prefers-contrast:more){:root{--paper:#fff;--ink:#000;--ink-soft:#202020;--dancheong:#005f59;--dancheong-deep:#004c48;--line:#222}.button,.panel,nav a[aria-current=page]{border-width:2px}}.erp-workspace{--erp-navy:#102f4f;--erp-navy-deep:#071d33;--erp-blue-wash:#eaf0f5;--erp-red:#9e2c2c;--erp-paper:#fcfcf8;--erp-grid:#b9c4ce;width:min(1240px,calc(100% - 32px));margin:0 auto;padding:24px 0 88px}.erp-workspace h1{max-width:18ch;font-size:clamp(38px,6vw,68px)}.erp-workspace h2,.erp-workspace h3{color:var(--ink)}.erp-workspace button,.erp-workspace input,.erp-workspace select,.erp-workspace textarea{font:inherit}.preview-banner{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;grid-gap:12px;gap:12px;padding:12px 14px;border:1px solid var(--erp-grid);background:linear-gradient(90deg,var(--erp-navy) 0 8px,transparent 8px),var(--erp-paper);color:#314254;font-size:13px}.preview-banner strong{padding-left:8px;color:var(--erp-navy);font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12px;letter-spacing:.08em}.erp-workspace[data-mode=supabase-local] .preview-banner{background:linear-gradient(90deg,#087f78 0 8px,transparent 8px),var(--erp-paper)}.erp-workspace[data-mode=supabase-local] .preview-banner strong{color:#075a57}.erp-workspace[data-mode=blocked] .preview-banner{border-color:#c98f8f;background:linear-gradient(90deg,var(--erp-red) 0 8px,transparent 8px),#fff7f7}.erp-workspace[data-mode=blocked] .preview-banner strong{color:var(--erp-red)}.preview-banner button{min-height:44px;padding:8px 12px;border:1px solid var(--erp-navy);border-radius:4px;background:transparent;color:var(--erp-navy);font-weight:800;cursor:pointer}.preview-banner button:disabled{border-color:#9aa6b2;color:#687684;cursor:not-allowed}.workspace-controls{min-width:0;margin:0;padding:0;border:0}.workspace-controls:disabled{opacity:.82}.runtime-blocked{display:grid;grid-template-columns:auto minmax(0,1fr);grid-gap:24px;gap:24px;margin-top:40px;padding:clamp(24px,5vw,46px);border:1px solid #c98f8f;border-top:6px solid var(--erp-red);background:#fffafa}.runtime-blocked>span{display:grid;width:76px;height:76px;place-items:center;border:3px solid var(--erp-red);border-radius:50%;color:var(--erp-red);font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:13px;font-weight:900}.runtime-blocked h1{margin-bottom:12px;font-size:clamp(30px,5vw,48px)}.runtime-blocked p{max-width:68ch;color:#536273}.runtime-blocked code{overflow-wrap:anywhere;color:var(--erp-navy-deep)}.local-login{display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,420px);grid-gap:clamp(28px,7vw,84px);gap:clamp(28px,7vw,84px);margin-top:40px;padding:clamp(24px,5vw,46px);border:1px solid var(--erp-grid);border-top:6px solid #087f78;background:var(--erp-paper)}.local-login h1{margin-bottom:12px;font-size:clamp(30px,5vw,48px)}.local-login>div>p:last-child{max-width:56ch;color:#536273}.local-login form{padding:20px;background:#fff}.audit-review,.local-login form{border:1px solid var(--erp-grid)}.audit-review{margin-top:24px;padding:clamp(20px,3vw,30px);border-top:5px solid var(--erp-red);background:var(--erp-paper)}.audit-review>header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.audit-review h2{margin:0}.audit-review header>span{padding:7px 9px;background:#f7e3e3;color:var(--erp-red);font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12px;font-weight:900}.audit-review ol{margin:20px 0;padding:0;border-top:1px solid var(--erp-grid);list-style:none}.audit-review li{display:grid;grid-template-columns:minmax(0,1fr) minmax(150px,.6fr) auto;grid-gap:14px;gap:14px;padding:13px 0;border-bottom:1px solid var(--erp-grid)}.audit-review li span,.audit-review small,.audit-review time{color:#536273;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:11px}.module-nav{position:-webkit-sticky;position:sticky;z-index:5;top:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));grid-gap:2px;gap:2px;margin-top:16px;padding:5px;background:var(--erp-navy-deep);box-shadow:0 8px 24px rgb(7 29 51/14%)}.module-nav a{display:flex;min-height:48px;align-items:center;justify-content:center;padding:8px 10px;color:#edf4f9;font-size:14px;font-weight:800;text-align:center;text-decoration:none}.module-nav a:hover{background:#1b476f}.module-nav a[aria-current=page]{background:var(--erp-paper);color:var(--erp-navy-deep)}.workspace-status{min-height:44px;padding:12px 4px 8px;color:#536273;font-size:13px}.workspace-heading{display:grid;max-width:820px;margin:clamp(38px,7vw,82px) 0 34px}.workspace-heading h1{margin-bottom:12px;color:var(--erp-navy-deep)}.workspace-heading>p:last-child{max-width:58ch;margin:0;color:#536273;font-size:17px}.erp-kicker{margin-bottom:9px;color:var(--erp-red);font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12px;font-weight:900;letter-spacing:.12em}.scoreboard{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-top:5px solid var(--erp-navy);border-right:1px solid var(--erp-grid);border-bottom:1px solid var(--erp-grid);background:var(--erp-paper)}.scoreboard a{display:grid;min-width:0;min-height:210px;align-content:space-between;padding:22px;border-left:1px solid var(--erp-grid);color:var(--erp-navy-deep);text-decoration:none}.scoreboard a:hover{background:var(--erp-blue-wash)}.scoreboard span{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12px;font-weight:800;letter-spacing:.08em}.scoreboard strong{font-family:Arial Narrow,Noto Sans KR,sans-serif;font-size:clamp(58px,8vw,92px);font-stretch:condensed;line-height:.9}.scoreboard small{color:#536273;font-size:13px}.workflow-strip{display:grid;grid-template-columns:minmax(240px,.8fr) minmax(0,1.6fr);grid-gap:32px;gap:32px;margin-top:24px;padding:26px;border:1px solid var(--erp-grid)}.workflow-strip h2{margin:0}.workflow-strip ol{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));margin:0;padding:0;counter-reset:workflow;list-style:none}.workflow-strip li{position:relative;display:grid;min-height:86px;align-content:end;padding:28px 12px 10px;border-bottom:3px solid var(--erp-navy);counter-increment:workflow;font-size:13px;font-weight:800}.workflow-strip li:before{position:absolute;top:0;left:12px;color:var(--erp-red);content:counter(workflow,decimal-leading-zero);font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12px}.work-grid{display:grid;grid-template-columns:minmax(300px,.72fr) minmax(0,1.28fr);align-items:flex-start;grid-gap:24px;gap:24px}.work-grid.equal{grid-template-columns:repeat(2,minmax(0,1fr))}.attendance-sheet,.class-board,.work-card{padding:clamp(20px,3vw,30px);border:1px solid var(--erp-grid);border-top:5px solid var(--erp-navy);border-radius:2px;background:var(--erp-paper);box-shadow:0 10px 28px rgb(7 29 51/7%)}.work-form{display:grid;grid-gap:9px;gap:9px}.card-heading,.section-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:12px}.card-heading h2,.section-heading h2{margin:0}.card-heading>span,.section-heading>span{display:grid;min-width:44px;min-height:44px;place-items:center;padding:7px;background:var(--erp-blue-wash);color:var(--erp-navy);font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12px;font-weight:900}.attendance-filter label,.time-row label,.work-form>label{margin-top:8px;color:#314254;font-size:13px;font-weight:850}.attendance-filter input,.attendance-filter select,.work-form input,.work-form select,.work-form textarea{width:100%;min-width:0;min-height:48px;padding:10px 12px;border:1px solid #78899a;border-radius:3px;background:#fff;color:var(--erp-navy-deep)}.work-form textarea{min-height:94px;resize:vertical}.field-help{margin:2px 0 8px;color:#536273;font-size:12px}.attendance-sheet fieldset,.work-form fieldset{min-width:0;margin:12px 0 0;padding:14px;border:1px solid var(--erp-grid)}.attendance-sheet legend,.work-form legend{padding:0 5px;color:#314254;font-size:13px;font-weight:850}.weekday-row{display:grid;grid-template-columns:repeat(6,1fr);grid-gap:5px;gap:5px}.attendance-options label,.weekday-row label{position:relative}.attendance-options input,.weekday-row input{position:absolute;width:1px;height:1px;opacity:0}.attendance-options span,.weekday-row span{display:grid;min-width:44px;min-height:44px;place-items:center;border:1px solid #78899a;background:#fff;color:var(--erp-navy-deep);font-weight:800;cursor:pointer}.attendance-options input:checked+span,.weekday-row input:checked+span{border-color:var(--erp-navy);background:var(--erp-navy);color:#fff}.attendance-options input:focus-visible+span,.weekday-row input:focus-visible+span{outline:3px solid var(--focus);outline-offset:2px}.time-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:10px;gap:10px}.time-row label{display:grid;grid-gap:7px;gap:7px}.erp-button{display:inline-flex;min-width:44px;min-height:48px;align-items:center;justify-content:center;padding:10px 16px;border:1px solid var(--erp-navy);border-radius:3px;background:#fff;color:var(--erp-navy);font-weight:850;text-align:center;text-decoration:none;cursor:pointer}.erp-button:hover{background:var(--erp-blue-wash)}.erp-button-primary{margin-top:10px;background:var(--erp-navy);color:#fff}.erp-button-primary:hover{background:var(--erp-navy-deep)}.erp-button-danger{border-color:var(--erp-red);background:var(--erp-red);color:#fff}.erp-button:disabled{border-color:#9aa6b2;background:#dde3e8;color:#5c6874;cursor:not-allowed}.record-stack{display:grid;min-width:0;grid-gap:12px;gap:12px}.record-card{min-width:0;padding:20px;border:1px solid var(--erp-grid);border-left:5px solid var(--erp-navy);background:var(--erp-paper)}.record-card header{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.record-card h3{margin:7px 0 0;font-size:24px}.record-card header>small{color:#536273;text-align:right}.record-card>p{margin:14px 0 0;color:#536273;overflow-wrap:anywhere}.correction-badge,.record-status{display:inline-flex;min-height:28px;align-items:center;padding:4px 8px;background:var(--erp-blue-wash);color:var(--erp-navy);font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:11px;font-weight:900}.status-active,.status-converted{background:#e4f1e9;color:#14552e}.status-trial_completed{background:#f7efd5;color:#694d00}.correction-badge{background:#f7e3e3;color:var(--erp-red)}.record-meta{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12px}.record-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}.record-actions .erp-button-primary{margin-top:0}.success-note{margin:0;padding:14px;border-left:4px solid #247147;background:#e7f3eb;color:#16482e;font-weight:800}.student-card dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));margin:18px 0 0;border-top:1px solid var(--erp-grid)}.student-card dl>div{padding-top:12px}.student-card dt{color:#536273;font-size:12px}.student-card dd{margin:5px 0 0;font-weight:800}.class-board{margin-top:24px}.class-board>article{display:grid;grid-template-columns:1fr 1fr minmax(180px,1fr);align-items:center;grid-gap:18px;gap:18px;padding:18px 0;border-top:1px solid var(--erp-grid)}.class-board article header{display:flex;align-items:center;justify-content:space-between;gap:10px}.class-board article h3,.class-board article p,.class-board article ul{margin:0}.class-board article strong{color:var(--erp-red)}.class-board article p,.class-board article strong{font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.class-board article p{color:#536273;font-size:13px}.class-board article ul{display:flex;flex-wrap:wrap;gap:6px;padding:0;list-style:none}.class-board article li{padding:5px 8px;background:var(--erp-blue-wash);font-size:12px}.attendance-filter{display:grid;grid-template-columns:auto minmax(160px,220px) auto minmax(180px,1fr);align-items:center;grid-gap:10px;gap:10px;margin-bottom:18px;padding:14px;background:var(--erp-navy-deep)}.attendance-filter label{margin:0;color:#fff}.attendance-sheet{margin-bottom:24px}.attendance-sheet fieldset{display:grid;grid-template-columns:minmax(120px,.4fr) minmax(0,1fr) auto;align-items:center;grid-gap:18px;gap:18px;margin-top:8px}.attendance-options{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:6px;gap:6px}.inline-empty{padding:24px;border:1px dashed var(--erp-grid);color:#536273;text-align:center}.erp-state{display:grid;min-height:420px;place-items:center;align-content:center;margin-top:40px;padding:30px;border:1px solid var(--erp-grid);border-top:5px solid var(--erp-navy);background:var(--erp-paper);text-align:center}.erp-state>span{display:grid;width:64px;height:64px;margin-bottom:20px;place-items:center;border:2px solid var(--erp-navy);border-radius:50%;color:var(--erp-navy);font-size:30px;font-weight:900}.erp-state h1{margin-bottom:10px;font-size:clamp(28px,5vw,46px)}.erp-state p{max-width:56ch;color:#536273}.erp-state-error{border-top-color:var(--erp-red)}.erp-state-error>span{border-color:var(--erp-red);color:var(--erp-red)}@media (max-width:860px){.scoreboard{grid-template-columns:repeat(2,minmax(0,1fr))}.class-board>article,.work-grid,.work-grid.equal,.workflow-strip{grid-template-columns:1fr}}@media (max-width:620px){.erp-workspace{width:min(100% - 20px,1240px);padding-top:10px}.preview-banner{grid-template-columns:1fr}.preview-banner button{width:100%}.module-nav{position:static;grid-template-columns:repeat(2,minmax(0,1fr))}.module-nav a:first-child{grid-column:1/-1}.scoreboard{grid-template-columns:1fr}.scoreboard a{min-height:150px}.workflow-strip ol{grid-template-columns:1fr}.workflow-strip li{min-height:58px;padding-left:52px}.attendance-filter{grid-template-columns:1fr}.attendance-filter input,.attendance-filter select{width:100%}.attendance-sheet fieldset{grid-template-columns:1fr}.attendance-options{grid-template-columns:repeat(2,minmax(0,1fr))}.weekday-row{grid-template-columns:repeat(3,1fr)}.record-card header{align-items:flex-start;flex-direction:column}.record-card header>small{text-align:left}.record-actions,.record-actions .erp-button{width:100%}.audit-review li,.local-login,.runtime-blocked{grid-template-columns:1fr}.audit-review li{gap:4px}}@media (prefers-contrast:more){.erp-workspace{--erp-grid:#243746}.attendance-sheet,.class-board,.record-card,.work-card{border-width:2px}}