.hero{text-align:center;word-break:keep-all;max-width:480px;margin:0 auto 36px}.hero-bar{background:var(--primary);border-radius:999px;width:56px;height:5px;margin:0 auto 28px;display:block}.hero-title{letter-spacing:-.02em;margin:0 0 20px;font-size:clamp(26px,7vw,34px);font-weight:700;line-height:1.3}.hero-lead{max-width:390px;margin:0 auto 22px;font-size:clamp(16px,4.4vw,19px);font-weight:700;line-height:1.65}.hero-desc{max-width:330px;color:var(--muted);margin:0 auto 10px;font-size:clamp(15px,4vw,17px);line-height:1.75}.hero-desc strong{color:var(--primary)}.main-tabs{flex-wrap:wrap;gap:10px;margin-bottom:36px;display:flex}.main-tab{border:1px solid var(--border);height:50px;color:var(--text);white-space:nowrap;background:var(--surface);border-radius:12px;flex:auto;justify-content:center;align-items:center;padding:0 18px;font-size:17px;font-weight:700;text-decoration:none;display:inline-flex}.main-tab.active{border-color:var(--dark);color:#fff;background:var(--dark)}.admin-stats{grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:16px;display:grid}.admin-stat{border:1px solid var(--border);background:var(--surface);border-radius:16px;flex-direction:column;align-items:flex-start;min-height:116px;padding:18px 16px;display:flex}.admin-stat-label{color:var(--muted);font-size:14px}.admin-stat-value{margin-top:2px;font-size:32px;font-weight:700;line-height:1.3}.admin-stat-link{font:inherit;color:var(--primary);cursor:pointer;background:0 0;border:none;margin-top:6px;padding:0;font-size:15px;font-weight:700}.admin-stat-link:disabled{color:var(--muted);cursor:default}.admin-users{flex-direction:column;gap:10px;display:flex}.admin-user{border:1px solid var(--border);background:var(--surface);border-radius:16px;padding:18px 20px}.admin-user summary{cursor:pointer;list-style:none}.admin-user summary::-webkit-details-marker{display:none}.admin-user-name{overflow-wrap:anywhere;align-items:center;gap:8px;font-size:19px;font-weight:700;display:flex}.admin-user-name:before{content:"";border-top:6px solid #0000;border-bottom:6px solid #0000;border-left:9px solid;flex:none;transition:transform .15s}.admin-user[open] .admin-user-name:before{transform:rotate(90deg)}.admin-user-info,.admin-user-meta{overflow-wrap:anywhere;padding-left:17px;font-size:15px}.admin-user-info{color:var(--muted);margin-top:2px}.admin-chunk{white-space:nowrap;text-overflow:ellipsis;vertical-align:bottom;max-width:100%;display:inline-block;overflow:hidden}.admin-user-meta{margin-top:6px}.admin-user-body{border-top:1px solid var(--border);flex-direction:column;gap:8px;margin-top:14px;padding-top:14px;display:flex}.admin-report{border:1px solid var(--border);background:var(--bg);border-radius:12px}.admin-report summary{cursor:pointer;flex-direction:column;gap:2px;padding:12px 14px;list-style:none;display:flex}.admin-report summary::-webkit-details-marker{display:none}.admin-report-title{overflow-wrap:anywhere;font-size:15px;font-weight:700}.admin-report-title:after{content:" ›";color:var(--muted)}.admin-report[open] .admin-report-title:after{content:" ˅"}.admin-report-meta{color:var(--muted);font-size:13px}.admin-report-body{padding:0 14px 14px}.admin-status,.admin-error{margin:0 0 12px;font-size:14px}.admin-status{color:var(--muted)}.admin-error{color:#d1242f}.rd{border-top:1px dashed var(--border);overflow-wrap:anywhere;flex-direction:column;gap:14px;padding-top:12px;font-size:14px;display:flex}.rd p{margin:0}.rd-title{color:var(--primary);margin:0 0 6px;font-size:13px;font-weight:700}.rd-list,.rd-students,.rd-plans{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.rd-list li{flex-wrap:wrap;justify-content:space-between;gap:2px 12px;display:flex}.rd-num,.rd-muted{color:var(--muted)}.rd-pre{white-space:pre-line}.rd-student{background:var(--surface);border-radius:10px;flex-direction:column;gap:4px;padding:10px 12px;display:flex}.rd-student-head{flex-wrap:wrap;justify-content:space-between;gap:2px 12px;display:flex}.rd-state{color:var(--muted);margin:0;padding-top:4px;font-size:14px}.rd-error{color:#d1242f}.re{--panel:var(--surface);--ink:var(--text);--line:var(--border);--field:var(--surface);--accent:var(--primary);--accent-ink:#fff;--soft:#f3f4f8;--danger:#a3341a;word-break:keep-all;overflow-wrap:anywhere;font-size:16px;line-height:1.6}.re .actions{flex-wrap:wrap;gap:8px;margin-top:16px;display:flex}.re .editor-actions{justify-content:center;margin-top:0}.re .save-state{text-align:center;min-height:21px;color:var(--muted);margin:10px 0 0;font-size:14px}.re .btn{border:1px solid var(--line);background:var(--panel);min-height:44px;color:var(--ink);font:inherit;cursor:pointer;border-radius:10px;align-items:center;padding:0 16px;font-size:15px;font-weight:500;text-decoration:none;display:inline-flex}.re .btn:hover{border-color:var(--muted)}.re .btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.re .btn:focus-visible,.re input:focus-visible,.re textarea:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.re-layout{grid-template-columns:minmax(0,1fr);gap:24px;margin-top:24px;display:grid}.re .group-label{color:var(--accent);margin:0 0 8px;font-size:14px;font-weight:700}.re .group+.group{margin-top:24px}.re .step{border:1px solid var(--line);background:var(--panel);border-radius:14px;padding:18px 16px}.re .step+.step{margin-top:12px}.re .step h2{margin:0;font-size:18px;font-weight:700;line-height:1.4}.re .hint{color:var(--muted);margin:4px 0 14px;font-size:14px}.re .step .actions{margin-top:14px}.re .field{margin-top:12px;display:block}.re .field>span{margin-bottom:4px;font-size:14px;font-weight:500;display:block}.re input[type=text],.re input[type=number],.re textarea{border:1px solid var(--line);background:var(--field);width:100%;min-height:44px;color:var(--ink);font:inherit;border-radius:10px;padding:9px 12px;font-size:16px}.re textarea{resize:vertical;line-height:1.5}.re .pair{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.re .pair.wide-first{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}.re .grid-head,.re .grid-row{grid-template-columns:minmax(0,1fr) 76px 76px;align-items:center;gap:8px;display:grid}.re .grid-row.single,.re .grid-head.single{grid-template-columns:minmax(0,1fr) 76px}.re .grid-head{color:var(--muted);text-align:center;margin-bottom:6px;font-size:13px}.re .grid-head span:first-child{text-align:left}.re .grid-row{margin-bottom:8px}.re .grid-row .name{font-size:15px}.re .grid-row input{text-align:center;padding:9px 4px}.re .cfg-head,.re .cfg-row{grid-template-columns:minmax(0,1fr) 60px 60px 40px;align-items:center;gap:8px;display:grid}.re .cfg-head.single,.re .cfg-row.single{grid-template-columns:minmax(0,1fr) 60px 64px 40px}.re .cfg-head.src,.re .cfg-row.src{grid-template-columns:minmax(0,1fr) 60px 40px}.re .cfg-head{color:var(--muted);text-align:center;margin:14px 0 6px;font-size:13px}.re .cfg-head span:first-child{text-align:left}.re .cfg-row{margin-bottom:8px}.re .cfg-row input[type=number]{text-align:center;padding:9px 4px}.re .plan-row{grid-template-columns:minmax(0,1fr) 40px;gap:8px;margin-bottom:14px;display:grid}.re .plan-row textarea{grid-column:1/-1}.re .check{cursor:pointer;justify-content:center;align-items:center;min-height:44px;display:inline-flex}.re .check input{width:22px;height:22px;accent-color:var(--accent);margin:0}.re .icon-btn{border:1px solid var(--line);background:var(--panel);width:40px;min-height:44px;color:var(--muted);font:inherit;cursor:pointer;border-radius:10px;font-size:18px;line-height:1}.re .icon-btn:hover{border-color:var(--muted);color:var(--ink)}.re .icon-btn:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.re .add-row{margin-top:4px}.re .subhead{margin:18px 0 8px;font-size:15px;font-weight:700}.re .warn{color:var(--danger);margin:8px 0 0;font-size:14px}.re .stu-bar{flex-wrap:wrap;gap:8px;display:flex}.re .stu-bar .btn[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.re .preview-label{color:var(--accent);margin:0 0 8px;font-size:14px;font-weight:700}.re .preview-tools{flex-wrap:wrap;align-items:center;gap:8px 12px;max-width:420px;margin:12px auto 0;display:flex}.re .to-report{margin-top:16px}.re .pdf-status{color:var(--muted);margin:0;font-size:14px}.re .toast{z-index:10;padding:12px 16px calc(12px + env(safe-area-inset-bottom,0px));pointer-events:none;justify-content:center;display:flex;position:fixed;bottom:0;left:0;right:0}.re .toast-box{color:#fff;pointer-events:auto;background:#1f2430;border-radius:12px;align-items:center;gap:12px;max-width:480px;padding:10px 12px 10px 16px;font-size:15px;display:flex}.re .toast-box .btn{color:#1f2430;background:#fff;border-color:#fff;flex:none}.report{color:#1f2430;word-break:keep-all;overflow-wrap:anywhere;background:#fff;border:1px solid #d7dbe5;border-radius:14px;width:100%;max-width:420px;margin:0 auto;padding:28px 24px;font-family:Noto Sans KR,Apple SD Gothic Neo,Malgun Gothic,sans-serif;font-size:16px;line-height:1.6;overflow:hidden}.r-top{color:#5b6270;justify-content:space-between;align-items:center;gap:12px;min-height:20px;margin-bottom:10px;font-size:13px;display:flex}.r-title{margin:0;font-size:24px;font-weight:700;line-height:32px}.r-sub{color:#5b6270;margin:4px 0 24px;font-size:14px;line-height:22px}.r-kicker{color:#1e3f7a;margin:0 0 4px;font-size:13px;font-weight:700;line-height:20px}.r-h{margin:0 0 8px;font-size:17px;font-weight:700;line-height:24px}.r-h.tight{margin-bottom:4px}.r-cap{color:#5b6270;margin:0 0 12px;font-size:13px;line-height:20px}.r-line{border-bottom:1px solid #e6e8ee;justify-content:space-between;align-items:center;gap:12px;padding:9px 0;font-size:15px;line-height:22px;display:flex}.r-line:last-child{border-bottom:0}.r-line .k{color:#5b6270;flex:none;font-size:14px}.r-line .v{text-align:right}.r-line .v.hot{color:#8a3508;font-weight:700}.r-text{white-space:pre-line;margin:12px 0 0;font-size:15px;line-height:24px}.r-key{background:#fce9dc;border-radius:12px;margin-top:12px;padding:14px 16px}.r-key .t{color:#8a3508;margin:0 0 6px;font-size:13px;font-weight:700;line-height:20px}.r-key .b{color:#5a2305;white-space:pre-line;margin:0;font-size:15px;line-height:24px}.r-band{background:#f3f4f8;height:8px;margin:28px -24px}.r-cards{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:12px 0 32px;display:grid}.r-card{background:#f3f4f8;border-radius:10px;padding:14px}.r-card .k{color:#5b6270;font-size:13px;line-height:18px}.r-card .v{font-size:28px;font-weight:700;line-height:36px}.r-card .v small{color:#5b6270;font-size:14px;font-weight:400}.r-matrix{flex-direction:column;gap:6px;margin-bottom:28px;display:flex}.r-mrow{grid-template-columns:minmax(0,1fr) 96px 96px;align-items:center;gap:6px;font-size:15px;line-height:22px;display:grid}.r-mrow.head{color:#5b6270;text-align:center;font-size:13px;line-height:20px}.r-cell{text-align:center;background:#f3f4f8;border-radius:8px;padding:9px 0}.r-cell.hot{color:#8a3508;background:#fce9dc;font-weight:700}.r-cell.none{color:#8a90a0}.r-legend{color:#5b6270;align-items:center;gap:8px;margin:-16px 0 28px;font-size:13px;line-height:20px;display:flex}.r-legend i{background:#fce9dc;border:1px solid #e9b48f;border-radius:4px;flex:none;width:14px;height:14px}.r-list{margin-bottom:20px}.r-sum{background:#1f2430;border-radius:12px;margin-bottom:32px;padding:16px}.r-sum .t{color:#b9c0d0;margin:0 0 6px;font-size:12px;line-height:18px}.r-sum .b{color:#fff;margin:0;font-size:15px;line-height:24px}.r-plans{flex-direction:column;gap:12px;margin:4px 0 16px;display:flex}.r-plan{align-items:flex-start;gap:10px;font-size:15px;line-height:24px;display:flex}.r-plan .tag{text-align:center;background:#f3f4f8;border-radius:6px;flex:none;min-width:56px;max-width:112px;padding:2px 8px;font-size:13px;font-weight:700;line-height:20px}.r-plan .txt{flex:1 1 0;min-width:0}.r-note{border:1px solid #c9ceda;border-radius:12px;padding:14px 16px}.r-note .t{color:#5b6270;margin:0 0 6px;font-size:13px;line-height:20px}.r-note .b{white-space:pre-line;margin:0;font-size:15px;line-height:24px}.pdf-stage{width:794px;position:absolute;top:0;left:-10000px}.report.a4{border:0;border-radius:0;width:794px;max-width:none;min-height:1123px;margin:0;padding:44px 48px}.a4 .r-sub{margin-bottom:18px}.a4 .r-exam-body{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:32px;display:grid}.a4 .r-exam-notes>:first-child{margin-top:0}.a4 .r-band{background:#d7dbe5;height:1px;margin:22px 0}.a4 .r-cards{margin:10px 0 24px}.a4 .r-card{padding:12px 14px}.a4 .r-cols{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);align-items:start;gap:36px;margin-bottom:26px;display:grid}.a4 .r-cell,.a4 .r-line{padding:7px 0}.a4 .r-matrix{margin-bottom:10px}.a4 .r-legend{margin:0}.a4 .r-list{margin-bottom:16px}.a4 .r-sum{margin-bottom:0}.a4 .r-plans{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 32px;margin-bottom:14px;display:grid}@media (width>=980px){.re-layout{grid-template-columns:minmax(0,1fr) 420px;align-items:start;gap:32px}.re .preview{border-radius:14px;max-height:calc(100vh - 48px);position:sticky;top:24px;overflow-y:auto}.re .to-report{display:none}}.re .saved-wrap{max-width:720px;margin:28px auto 0}.re .saved-wrap h2{margin:0 0 12px;font-size:20px;line-height:1.4}.re .saved-list{flex-direction:column;gap:12px;display:flex}.re .saved-item{border:1px solid var(--line);background:var(--panel);border-radius:14px;flex-wrap:wrap;align-items:center;gap:12px;padding:16px;display:flex}.re .saved-item .info{flex:220px;min-width:0}.re .saved-item .t{margin:0;font-size:17px;font-weight:700;line-height:1.4}.re .saved-item .m{color:var(--muted);margin:4px 0 0;font-size:14px}.re .saved-item .now{color:var(--accent);margin:4px 0 0;font-size:13px;font-weight:700}.re .saved-item .acts{gap:8px;display:flex}.auth-page{--auth-bg:#eff1f5;--auth-card:#fff;--auth-border:#d9dce3;--auth-primary:#253d73;--auth-primary-hover:#1d3160;--auth-text:#1f2328;--auth-muted:#6b7280;--auth-error:#d1242f;background:var(--auth-bg);color:var(--auth-text);flex-direction:column;flex:1;align-items:center;padding:48px 16px 40px;display:flex}.auth-card{background:var(--auth-card);border:1px solid var(--auth-border);border-radius:16px;width:100%;max-width:520px;padding:20px 18px 24px}.auth-tabs{grid-template-columns:1fr 1fr;gap:9px;margin-bottom:18px;display:grid}.auth-tab{border:1px solid var(--auth-border);height:48px;color:var(--auth-text);font:inherit;background:var(--auth-card);cursor:pointer;border-radius:10px;justify-content:center;align-items:center;font-size:17px;font-weight:700;text-decoration:none;display:flex}.auth-tab.is-active{background:var(--auth-primary);border-color:var(--auth-primary);color:#fff}.auth-form{flex-direction:column;gap:14px;display:flex}.auth-field{flex-direction:column;gap:8px;display:flex}.auth-label{font-size:15px;font-weight:700}.auth-optional{color:var(--auth-muted);font-weight:400}.auth-field input{border:1px solid var(--auth-border);height:50px;font:inherit;color:var(--auth-text);background:var(--auth-card);border-radius:10px;padding:0 14px;font-size:17px}.auth-field input::placeholder{color:#8a8f98}.auth-field input:focus{border-color:var(--auth-primary);outline:none;box-shadow:0 0 0 3px #253d7326}.auth-agree{word-break:keep-all;cursor:pointer;align-items:flex-start;gap:12px;margin-top:4px;font-size:15px;line-height:1.7;display:flex}.auth-agree input{width:24px;height:24px;accent-color:var(--auth-primary);cursor:pointer;flex:none;margin:1px 0 0}.auth-error{color:var(--auth-error);margin:0;font-size:14px}.auth-submit{height:50px;font:inherit;color:#fff;background:var(--auth-primary);cursor:pointer;border:none;border-radius:10px;margin-top:2px;font-size:17px;font-weight:700}.auth-submit:hover:not(:disabled){background:var(--auth-primary-hover)}.auth-submit:disabled{opacity:.6;cursor:default}.auth-submit--spaced{margin-top:6px}.auth-notice{color:var(--auth-primary);background:#e8edf7;border-radius:10px;margin:0 0 16px;padding:12px 14px;font-size:14px}.auth-links{text-align:center;margin:0;font-size:14px}.auth-links-sep{color:var(--auth-muted);margin:0 10px}.auth-links a{color:var(--auth-muted);text-underline-offset:3px;text-decoration:underline}.auth-heading{margin:4px 0;font-size:20px;font-weight:700}.auth-desc{color:var(--auth-muted);margin:0 0 18px;font-size:14px}.auth-result{color:var(--auth-primary);background:#e8edf7;border-radius:10px;margin:0 0 18px;padding:14px 16px}.auth-result-title{margin:0 0 6px;font-size:14px}.auth-result ul{overflow-wrap:anywhere;margin:0;padding:0;font-size:17px;font-weight:700;list-style:none}:root{--bg:#eff1f5;--surface:#fff;--text:#1f2328;--muted:#6b7280;--border:#d9dce3;--primary:#253d73;--primary-hover:#1d3160;--dark:#1f2330;--accent:#253d73;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;font-family:Noto Sans KR,system-ui,-apple-system,Apple SD Gothic Neo,sans-serif;line-height:1.5}*,:before,:after{box-sizing:border-box}body{min-height:100vh;margin:0}a{color:var(--accent)}.main{width:100%;max-width:960px;margin:0 auto;padding:24px}.layout{flex-direction:column;min-height:100vh;display:flex}.navbar{justify-content:space-between;align-items:center;gap:12px;width:100%;max-width:960px;height:76px;margin:0 auto;padding:0 20px;display:flex}.navbar-logo{color:inherit;white-space:nowrap;font-size:17px;font-weight:700;text-decoration:none}.navbar-actions{align-items:center;gap:8px;min-width:0;display:flex}.navbar-welcome{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:15px;overflow:hidden}.navbar-btn{border:1px solid var(--border);height:42px;font:inherit;color:inherit;white-space:nowrap;background:var(--surface);cursor:pointer;border-radius:12px;align-items:center;padding:0 16px;font-size:15px;font-weight:700;text-decoration:none;display:inline-flex}.navbar-btn--primary{border-color:var(--primary);color:#fff;background:var(--primary)}.navbar-btn--primary:hover{background:var(--primary-hover)}.page{word-break:keep-all;flex:1;width:100%;max-width:640px;margin:0 auto;padding:24px 16px 48px}.page-title{margin:0 0 16px;font-size:24px;font-weight:700}.page--wide{max-width:1120px}.page--wide .main-tabs{max-width:640px;margin-left:auto;margin-right:auto}
