@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@400;500;600;700;800&display=swap');
:root{font-family:'Noto Sans KR',sans-serif;color:#183f50;background:#f8f9f6;font-synthesis:none;--line:#dce3e2;--muted:#64767b;--ink:#183f50;--blue:#e1eef2;--yellow:#f7f1c6}
*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}a{color:inherit}button,.button{display:inline-flex;align-items:center;justify-content:center;gap:16px;min-height:46px;border:1px solid transparent;border-radius:8px;background:#20566b;color:white;padding:11px 20px;font-size:14px;font-weight:600;line-height:1.5;text-decoration:none;cursor:pointer;transition:background .15s,border-color .15s}button:hover,.button:hover{background:#173f50}button:disabled{opacity:.55;cursor:default}button.secondary{background:#edf2f2;color:var(--ink)}button.secondary:hover{background:#e0e9e9}button.quiet{background:transparent;color:#627579;padding:10px 12px}button.quiet:hover{background:#edf2f2}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #ba963a;outline-offset:3px}[hidden]{display:none!important}
.site-header{background:#fff;border-bottom:1px solid var(--line)}.header-inner{max-width:1280px;min-height:86px;margin:auto;padding:16px 40px;display:flex;justify-content:space-between;align-items:center;gap:20px}.school-brand{display:inline-flex;align-items:center}.school-brand img{width:210px;height:auto;display:block}.header-inner nav{display:flex;align-items:center;gap:12px}.student-view{background:var(--blue);color:var(--ink)}.student-view:hover{background:#d2e5eb}
.teacher-wrap{max-width:1200px;margin:auto;padding:36px 40px 24px}.page-heading{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:26px}.eyebrow{font-size:12px;font-weight:600;color:var(--muted);letter-spacing:.03em}h1{font-size:32px;line-height:1.35;letter-spacing:-.055em;margin:8px 0 0;font-weight:800}h2{font-size:20px;letter-spacing:-.035em;line-height:1.5;margin:0;font-weight:700}p{line-height:1.65}.status,#message{font-size:14px;color:#9a4035;background:#fff4ee;padding:12px 16px;border-radius:8px;overflow-wrap:anywhere}.status:empty,#message:empty{display:none}.status{margin:0 0 20px}
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:24px}.stat{border-radius:10px;padding:22px 26px;background:#fff;border:1px solid var(--line)}.stat.pending{background:var(--yellow);border-color:transparent}.stat.approved{background:var(--blue);border-color:transparent}.stat>span{font-size:14px;font-weight:500}.stat p{margin:12px 0 0;display:flex;align-items:baseline;gap:8px;line-height:1}.stat strong{font-size:40px;font-weight:600;letter-spacing:-.06em;font-variant-numeric:tabular-nums}.stat p span{font-size:13px;color:var(--muted)}
.teacher-card{background:#fff;border:1px solid var(--line);border-radius:10px;margin-bottom:24px}.registration-card{padding:26px;display:grid;grid-template-columns:1fr 1.3fr;gap:20px 36px;align-items:center}.section-heading h2{margin-top:5px}.section-heading p{font-size:13px;color:var(--muted);margin:7px 0 0}.registration-card form{display:flex;align-items:end;gap:12px;min-width:0}.registration-card form label{flex:1;min-width:0}.registration-card form button{flex:none;min-height:48px;white-space:nowrap}.pin-display{grid-column:1/-1;background:#fbf5d7;border-radius:8px;padding:20px;overflow-wrap:anywhere}.pin-display strong{display:block;font-size:30px;letter-spacing:.14em;margin-top:8px}.pin-display p{font-size:13px;margin-bottom:0}
label{display:block;font-size:13px;font-weight:600}input{display:block;width:100%;min-height:48px;padding:12px 14px;margin-top:8px;border:1px solid #cbd7da;border-radius:7px;background:#fff;color:var(--ink);font-size:15px}input::placeholder{color:#829194;font-weight:400}.roster-heading{display:flex;justify-content:space-between;gap:16px;align-items:center;padding:24px 26px;border-bottom:1px solid var(--line)}.roster-heading>span{color:var(--muted);font-size:12px}.student-list{padding:0 26px}.student-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:20px;align-items:center;padding:20px 0;border-bottom:1px solid #e9edeb}.student-row:last-child{border-bottom:0}.student-identity{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.student-identity>strong{font-size:16px}.student-row small{display:block;font-size:11px;color:var(--muted);margin-top:7px;overflow-wrap:anywhere}.student-state{font-size:11px;font-weight:500;border-radius:5px;padding:5px 8px;background:#edf2f2;color:#5c7175}.student-state.pending{background:#faf1c8;color:#756124}.student-state.approved{background:#e5f0ef;color:#285d59}.student-state.blocked{background:#f4e9e5;color:#875a4b}.row-actions{display:flex;gap:8px;flex-wrap:wrap}.row-actions button{font-size:12px;min-height:38px;padding:8px 12px}.empty-state{padding:44px 16px 46px;text-align:center}.empty-state strong{font-size:15px;font-weight:500}.empty-state p{font-size:13px;color:var(--muted);margin:8px 0 0}.admin-footer{display:flex;justify-content:space-between;font-size:11px;color:#78888a;padding:2px 0 8px}
.auth-wrap{max-width:580px;margin:0 auto;padding:36px 24px 50px}.auth-wrap>header{margin-bottom:26px}.auth-wrap>header img{display:block;width:205px;margin-bottom:26px}.auth-wrap h1{font-size:28px}.auth-card{background:white;border:1px solid var(--line);border-radius:12px;padding:28px}.tabs{display:flex;gap:4px;padding:4px;border-radius:8px;background:#eef2f1;margin-bottom:28px}.tabs button{flex:1;background:transparent;color:#6b7c80;min-height:40px;padding:8px}.tabs button.active{background:white;color:var(--ink);box-shadow:0 1px 4px #173d5112}.auth-card h2{font-size:19px}.auth-card form p{font-size:13px;color:var(--muted);margin:8px 0 20px}.auth-card form>label{margin:16px 0 14px}.auth-card form>button{width:100%}.auth-card form+form{border-top:1px solid var(--line);margin-top:26px;padding-top:24px}.auth-card #admin-form{margin:0;border:0;padding:0}.auth-card form a{font-size:13px;line-height:1.8;text-underline-offset:4px}.auth-card #continue-student{display:block;text-align:center;margin-top:14px}.auth-card #registration-request>button{background:var(--blue);color:var(--ink)}.auth-card #change-form>button{background:#f0f3ef;color:#52666c}.auth-card #admin-form p:last-child{text-align:center;margin:16px 0 0}
.login-option{border-top:1px solid var(--line);margin-top:22px;padding-top:20px}.login-option summary{cursor:pointer;font-size:12px;color:var(--muted);line-height:1.8}.login-option summary span{font-size:13px;font-weight:600;color:var(--ink);margin-left:8px}.login-option summary:focus-visible{outline:3px solid #ba963a;outline-offset:4px}.login-option form{margin-top:18px}
@media(min-width:900px){.auth-wrap{max-width:1000px;display:grid;grid-template-columns:1fr 1.15fr;gap:64px;padding-top:64px;align-items:start}.auth-wrap>header{position:sticky;top:40px;padding-top:24px}.auth-wrap>header img{width:220px;margin-bottom:64px}.auth-wrap h1{font-size:38px;line-height:1.5;max-width:300px}.auth-card{padding:30px}}
@media(max-width:800px){.header-inner{padding:14px 24px;min-height:76px}.teacher-wrap{padding:28px 24px 20px}.registration-card{grid-template-columns:1fr;gap:20px}.student-row{grid-template-columns:1fr;gap:12px}.stat{padding:18px 20px}.stat strong{font-size:34px}}
@media(max-width:480px){.header-inner{padding:12px 16px;gap:8px}.school-brand img{width:155px}.header-inner nav{gap:2px}.header-inner .button,.header-inner button{font-size:11px;padding:9px 10px;min-height:38px;gap:6px}.teacher-wrap{padding:26px 16px 16px}h1{font-size:28px}.page-heading{margin-bottom:22px}.stats{gap:8px;margin-bottom:18px}.stat{padding:16px 12px}.stat>span{font-size:12px}.stat strong{font-size:30px}.stat p{gap:5px}.registration-card{padding:20px}.registration-card form{flex-direction:column;align-items:stretch}.registration-card form button{width:100%}.teacher-card{margin-bottom:18px}.roster-heading{padding:20px;align-items:start;flex-direction:column;gap:4px}.student-list{padding:0 20px}.auth-wrap{padding:28px 18px}.auth-card{padding:24px}.auth-wrap>header img{width:190px}}

.login-page{min-height:100vh;background:#faf9f5}
.login-mast,.login-spread{width:min(960px,calc(100% - 48px));margin-inline:auto}
.login-mast{padding:22px 0;border-bottom:1px solid #d8dfdd}
.login-mast img{width:195px;display:block}
.login-spread{display:grid;grid-template-columns:1fr 1fr;gap:clamp(20px,4vw,54px);align-items:start;padding-block:clamp(24px,6vh,64px)}
.login-cover{background:#f6efbd;border-radius:8px;overflow:hidden}
.login-cover h1{margin:0;padding:32px 36px;font-size:clamp(36px,4.5vw,56px);line-height:1.16;color:#173f4e}
.login-photo{aspect-ratio:1.65;background:#dce9eb url('./assets/editorial-study.png') center 62%/cover no-repeat}
.login-panel{padding:clamp(22px,3vw,34px);border-radius:8px}
.login-panel .tabs{background:transparent;border-bottom:1px solid #d5dedc;padding:0;border-radius:0;gap:0}
.login-panel .tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;background:transparent}
.login-panel .tabs button.active{box-shadow:none;border-color:#20566b}
.login-panel h2{font-size:24px}
.login-panel #registration-request>label{display:block;margin:20px 0 0;font-size:13px;line-height:1.5}
.login-panel #registration-request select,.login-panel #registration-request input{display:block;width:100%;height:52px;margin-top:9px;border:1px solid #bdcfd3;border-radius:7px;background-color:#fff;color:var(--ink);font:inherit;font-size:15px;padding:12px 14px;transition:border-color .15s,box-shadow .15s}
.login-panel #registration-request select{appearance:none;padding-right:42px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%23577078' stroke-width='1.7'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;cursor:pointer}
.login-panel #registration-request select:focus-visible,.login-panel #registration-request input:focus-visible{outline:none;border-color:#527d8b;box-shadow:0 0 0 3px #e7f0f2}
.login-panel #registration-request>button{margin-top:24px;min-height:50px}
.login-panel #returning p{color:#536871;font-size:14px}
.login-panel #continue-student,.login-panel #owner-signin{width:100%;text-decoration:none}
.login-panel #continue-student{display:flex}
.login-panel .login-text{background:transparent;color:#43616b;padding:8px 0;font-size:13px}
.login-panel .login-option{margin-top:15px;padding-top:13px}
.login-option select,.registration-card select{width:100%;min-height:46px;border:1px solid #b7cbd0;border-radius:6px;background:white;color:var(--ink);padding:0 12px}
.login-panel .login-option summary{font-size:13px}
.staff-codes{padding:18px 26px}
.staff-body{margin-top:16px;border-top:1px solid var(--line);padding-top:15px}
.staff-codes #staff-issue{display:grid;grid-template-columns:minmax(85px,120px) minmax(140px,280px) max-content;align-items:end;gap:12px;margin:0}
.staff-codes #staff-issue select,.staff-codes #staff-issue input,.staff-codes #staff-issue button{box-sizing:border-box;width:100%;height:46px;min-height:46px;margin:0}
.staff-codes select{padding:0 10px;border:1px solid var(--line);border-radius:6px;background:#fff}
.staff-codes #staff-hint{font-size:13px;color:var(--muted);margin:9px 0 0}
#code-receipt{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 15px;background:#f3f7f7;border-radius:6px;margin-top:14px}
#code-receipt output{margin:0;font-family:monospace;font-size:16px}.staff-member{border-top:1px solid var(--line);padding-top:8px}
@media(max-width:600px){.staff-codes #staff-issue{grid-template-columns:1fr 2fr}.staff-codes #staff-issue button{grid-column:1/-1}.staff-codes{padding:16px}}
.staff-codes>summary{cursor:pointer;font-weight:700}
.staff-codes form,.staff-member{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:14px}
.staff-member{justify-content:space-between}.staff-codes output{display:block;overflow-wrap:anywhere;user-select:all;margin-top:10px}
@media(max-width:680px){.login-mast,.login-spread{width:min(460px,calc(100% - 32px))}.login-mast{padding:14px 0}.login-mast img{width:162px}.login-spread{grid-template-columns:1fr;gap:16px;padding-block:20px}.login-cover{display:grid;grid-template-columns:1fr 44%}.login-cover h1{padding:20px;font-size:31px}.login-photo{aspect-ratio:auto}}
