@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',system-ui,-apple-system,sans-serif;color:#1b2a43;background:#f3f6fb;font-size:14px}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{opacity:.45;cursor:not-allowed}a{color:inherit;text-decoration:none}.app{display:flex;min-height:100vh}.sidebar{width:250px;background:#11294b;color:#d4dff0;position:fixed;top:0;bottom:0;left:0;overflow:auto;z-index:15}.brand{display:flex;gap:12px;align-items:center;padding:27px 21px 25px;border-bottom:1px solid #29405f}.brand-mark{width:40px;height:40px;border-radius:12px;background:linear-gradient(145deg,#5aafff,#2764cc);display:grid;place-items:center;color:white;font-weight:900;font-size:22px}.brand b{color:white;font-size:15px;display:block}.brand small{font-size:10px;letter-spacing:1px;color:#94b4da}.navgroup{padding:19px 12px 4px}.navlabel{font-size:10px;letter-spacing:1px;color:#7595bc;font-weight:700;margin:0 11px 9px}.navitem{display:flex;align-items:center;gap:11px;padding:11px 13px;border-radius:9px;font-size:12.5px;margin:2px 0;color:#c6d5e8;transition:.15s}.navitem:hover,.navitem.active{background:#264a78;color:white}.navitem.active{box-shadow:inset 3px 0 #56b6ff}.navicon{width:19px;height:19px;display:inline-grid;place-items:center;font-size:16px}.sidebar-bottom{padding:22px 15px;color:#9cb1cd;font-size:11px}.main{margin-left:250px;min-width:0;width:calc(100% - 250px)}.topbar{height:74px;background:#fff;border-bottom:1px solid #e4eaf2;display:flex;align-items:center;justify-content:space-between;padding:0 33px;gap:15px;position:sticky;top:0;z-index:10}.top-title{font-weight:800;font-size:17px;color:#182e4e}.top-actions{display:flex;gap:10px;align-items:center}.search-top{width:245px;background:#f3f6fb;border:1px solid #e6ebf3;padding:10px 13px;border-radius:9px;color:#64758b}.avatar{height:35px;width:35px;border-radius:50%;background:#e3efff;color:#3473c7;display:grid;place-items:center;font-weight:800}.page{padding:28px 33px 48px;max-width:1680px;margin:auto}.eyebrow{font-size:11px;color:#6e86a6;font-weight:700;letter-spacing:.6px}.page-title{font-size:25px;font-weight:800;margin:5px 0 7px;letter-spacing:-.8px}.subtitle{color:#7b8aa0;font-size:12px;margin:0 0 24px}.heading-row{display:flex;align-items:center;justify-content:space-between;gap:15px;flex-wrap:wrap}.card{background:white;border:1px solid #e6edf5;border-radius:14px;box-shadow:0 3px 14px rgba(23,47,86,.035);padding:21px}.card h3{margin:0 0 16px;font-size:15px;letter-spacing:-.3px}.grid{display:grid;gap:16px}.grid4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid2{grid-template-columns:repeat(2,minmax(0,1fr))}.span2{grid-column:span 2}.stat{display:flex;justify-content:space-between;align-items:flex-start}.stat-label{font-size:12px;color:#71839c}.stat-value{font-size:28px;font-weight:800;letter-spacing:-1.2px;margin:7px 0 5px}.stat-foot{font-size:11px;color:#7392b7}.stat-icon{height:45px;width:45px;border-radius:12px;display:grid;place-items:center;font-size:21px}.blue{background:#eaf3ff;color:#2c77d3}.green{background:#e5f7ef;color:#1c9a67}.orange{background:#fff1e0;color:#e3902d}.purple{background:#f0edff;color:#7e65cc}.btn{border:1px solid #dbe4f0;background:#fff;color:#405675;padding:10px 14px;border-radius:9px;font-size:12px;font-weight:700;white-space:nowrap}.btn:hover{background:#f0f5ff}.btn.primary{background:#3079d8;color:#fff;border-color:#3079d8}.btn.primary:hover{background:#2467bf}.btn.danger{color:#d44d5d;border-color:#f4cfd4}.btn.sm{padding:7px 10px;font-size:11px}.btn.ghost{border:0;background:transparent}.controls{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin:0 0 16px}.field{border:1px solid #dde6f0;background:#fff;padding:10px 12px;border-radius:9px;color:#263b59;min-width:0}.field:focus{outline:2px solid #a6ceff;border-color:#579be7}.controls .field{min-width:135px}.controls input.field{width:240px}.muted{color:#8090a5}.tiny{font-size:11px}.tablewrap{overflow:auto}.table{border-collapse:collapse;width:100%;font-size:12px;text-align:left;white-space:nowrap}.table th{background:#f7f9fd;color:#6f829d;font-size:11px;font-weight:700;padding:13px 12px;border-bottom:1px solid #e8edf4}.table td{padding:13px 12px;border-bottom:1px solid #edf1f6;color:#41536c}.table tbody tr:hover{background:#f9fbff}.table tbody tr:last-child td{border-bottom:0}.clickable{cursor:pointer}.badge{display:inline-flex;align-items:center;gap:4px;border-radius:20px;padding:5px 9px;font-size:10.5px;font-weight:700;background:#edf2f9;color:#63738b}.badge.success{background:#e6f7ef;color:#168d5c}.badge.warn{background:#fff2df;color:#b67a18}.badge.info{background:#e8f2ff;color:#2774c9}.badge.danger{background:#ffecef;color:#c85065}.badge.purple{background:#f0ecff;color:#7c63c9}.pagination{display:flex;align-items:center;justify-content:flex-end;gap:10px;margin-top:16px;color:#8290a3;font-size:11px}.progress{height:8px;background:#e9eef6;border-radius:30px;overflow:hidden}.progress>span{display:block;height:100%;background:linear-gradient(90deg,#3885e2,#6aaff8);border-radius:30px}.barrow{display:grid;grid-template-columns:105px 1fr 43px;align-items:center;gap:10px;margin:13px 0;font-size:11px;color:#536783}.bartrack{height:11px;background:#edf2f8;border-radius:30px;overflow:hidden}.barfill{height:100%;background:#4b8fe2;border-radius:30px}.split{display:grid;grid-template-columns:1.2fr .8fr;gap:17px}.section{margin-top:18px}.profile-top{display:flex;align-items:center;gap:15px}.profile-avatar{height:65px;width:65px;border-radius:18px;background:linear-gradient(135deg,#e2f0ff,#b9d8ff);color:#3776c8;display:grid;place-items:center;font-size:28px;font-weight:800}.kv{display:grid;grid-template-columns:110px 1fr;gap:13px;font-size:12px;margin:11px 0}.kv label{color:#8594a8}.kv strong{font-weight:600}.tabs{display:flex;gap:5px;border-bottom:1px solid #e5ebf3;margin:17px 0}.tab{border:0;background:transparent;color:#7e8ca1;padding:11px 14px;border-bottom:2px solid transparent;font-size:12px}.tab.active{color:#2874d0;border-color:#2874d0;font-weight:800}.timeline{border-left:2px solid #e0eafa;padding-left:20px;margin-left:8px}.timeline-item{position:relative;margin:0 0 19px;font-size:12px}.timeline-item:before{content:'';position:absolute;left:-27px;top:3px;width:11px;height:11px;background:#4a91e6;border:3px solid white;border-radius:50%;box-shadow:0 0 0 1px #c8ddf6}.metric-row{display:flex;justify-content:space-between;gap:8px;align-items:center;margin:10px 0;font-size:12px}.chart-area{height:225px;display:flex;align-items:end;gap:13px;padding:20px 7px 5px;border-bottom:1px solid #e6edf6}.chart-col{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:end;gap:6px;height:100%}.chart-col .bars{display:flex;align-items:end;gap:3px;width:100%;height:100%;justify-content:center}.chart-col .bar{width:24%;max-width:25px;border-radius:5px 5px 0 0;background:#4d91e2;min-height:3px}.chart-col .bar.alt{background:#9ac7f6}.chart-col small{font-size:10px;color:#8190a3;white-space:nowrap}.legend{display:flex;gap:15px;color:#77879d;font-size:11px;margin-top:15px}.dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#4d91e2;margin-right:5px}.dot.alt{background:#9ac7f6}.modal-back{position:fixed;inset:0;background:rgba(15,30,54,.48);z-index:40;display:flex;justify-content:center;align-items:center;padding:20px}.modal{width:min(650px,100%);max-height:90vh;overflow:auto;background:white;border-radius:18px;box-shadow:0 20px 70px #14243e50}.modal-head{padding:20px 24px;border-bottom:1px solid #e9eef6;display:flex;justify-content:space-between;align-items:center}.modal-head h3{margin:0}.modal-body{padding:22px 24px}.modal-foot{display:flex;justify-content:flex-end;gap:9px;padding:15px 24px;border-top:1px solid #edf1f6}.formgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.formrow{display:flex;flex-direction:column;gap:6px}.formrow label{font-size:11px;color:#6f819b;font-weight:700}.formrow .field{width:100%}.formrow.full{grid-column:1/-1}.alert{background:#eef6ff;color:#32669f;border:1px solid #d6e9ff;padding:12px 14px;border-radius:10px;font-size:12px}.alert.warn{background:#fff8e9;color:#9a721c;border-color:#f7e9c8}.alert.success{background:#eaf9f0;color:#168454;border-color:#c8ebd6}.empty{padding:45px;text-align:center;color:#8b99ac}.phone{width:315px;max-width:100%;margin:auto;background:#fff;border:8px solid #172b47;border-radius:35px;box-shadow:0 16px 36px #102c5330;overflow:hidden;min-height:550px}.phone-notch{width:90px;height:17px;background:#172b47;border-radius:0 0 15px 15px;margin:auto}.phone-head{padding:19px 18px 14px;background:#eff6ff;border-bottom:1px solid #e3ebf7}.phone-content{padding:18px;min-height:410px}.phone-nav{display:flex;justify-content:space-around;padding:13px 8px;border-top:1px solid #edf0f5;color:#8b9ab0;font-size:10px}.phone-nav .selected{color:#2c79d6;font-weight:800}.phone-card{background:#fff;border:1px solid #e6edf5;border-radius:13px;padding:14px;margin-bottom:12px;box-shadow:0 3px 12px #12335a08}.signature-pad{border:2px dashed #c4d8ee;border-radius:12px;width:100%;height:170px;touch-action:none;background:#fbfdff;display:block}.preview-box{background:#f6f9fe;border:1px solid #e5ecf6;border-radius:12px;padding:18px;font-size:12px;line-height:2}.mini-stat{border-radius:12px;background:#f5f8fd;padding:15px}.mini-stat strong{font-size:20px;display:block}.feature-list{display:flex;flex-wrap:wrap;gap:8px}.feature-list span{padding:7px 10px;border-radius:8px;background:#f1f6fd;color:#4b729f;font-size:11px}.toast{position:fixed;bottom:24px;right:25px;z-index:100;background:#183554;color:white;padding:13px 18px;border-radius:10px;box-shadow:0 8px 24px #19365a55;font-size:12px}.role-switch{display:flex;align-items:center;gap:7px;background:#edf4ff;padding:7px 10px;border-radius:9px;color:#2b72c9;font-size:11px}.mobile-only{display:none}.hero{background:linear-gradient(120deg,#1b4d8b,#327cce);color:#fff;padding:26px;border-radius:15px;position:relative;overflow:hidden}.hero:after{content:'✦';position:absolute;font-size:170px;right:40px;top:-45px;opacity:.09}.hero h2{margin:5px 0 8px;font-size:23px}.hero p{opacity:.8;font-size:12px;max-width:550px}.student-shell{max-width:460px;margin:0 auto;background:#f4f7fc;min-height:calc(100vh - 74px);border-radius:18px;overflow:hidden}.student-hero{background:linear-gradient(145deg,#347ed6,#5a9ce7);color:white;padding:28px 24px 30px;border-radius:0 0 26px 26px}.student-card{background:white;border:1px solid #e4ebf5;border-radius:15px;padding:18px;margin:14px}.student-bottom{position:sticky;bottom:0;background:#fff;border-top:1px solid #e6edf6;padding:15px;display:flex;justify-content:space-around}.student-bottom button{border:0;background:none;color:#8190a5;font-size:11px}.student-bottom button.active{color:#2774c9;font-weight:800}.hamburger{display:none}.close-side{display:none}.table-actions{display:flex;gap:5px}.report-sheet{background:white;border:1px solid #e3eaf3;padding:27px;border-radius:12px}.kakao{background:#fee500;color:#3a3216;border-radius:12px;padding:13px;font-size:12px}.kakao-message{background:#fffdf1;border:1px solid #f3e4a5;border-radius:11px;padding:15px;margin-top:11px}.report-top{display:flex;justify-content:space-between;align-items:center;border-bottom:2px solid #214d83;padding-bottom:15px;margin-bottom:20px}.footer-note{font-size:10px;color:#8b9aaf;margin-top:20px}.notice-demo{font-size:10px;color:#6b88ac;background:#eaf2fc;border-radius:30px;padding:6px 10px}.stepper{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.step{border-radius:30px;padding:7px 12px;background:#edf2f9;color:#77879e;font-size:11px}.step.done{background:#e5f7ef;color:#168c59}.step.current{background:#e8f2ff;color:#2875ca;font-weight:800}@media(max-width:1200px){.grid4{grid-template-columns:repeat(2,1fr)}.split{grid-template-columns:1fr}.page{padding:24px}.topbar{padding:0 24px}}@media(max-width:850px){.sidebar{transform:translateX(-100%);transition:transform .2s}.sidebar.open{transform:translateX(0)}.main{margin-left:0;width:100%}.hamburger{display:inline-flex}.close-side{display:block;margin-left:auto;background:transparent;border:0;color:white;font-size:24px}.topbar{height:66px;padding:0 16px}.search-top{display:none}.page{padding:20px 14px 40px}.grid3,.grid2{grid-template-columns:1fr}.span2{grid-column:span 1}.formgrid{grid-template-columns:1fr}.page-title{font-size:22px}.student-shell{min-height:calc(100vh - 66px)}.mobile-only{display:block}}@media(max-width:520px){.grid4{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.card{padding:15px}.stat-value{font-size:22px}.stat-icon{height:35px;width:35px;font-size:17px}.top-title{font-size:13px}.role-switch{display:none}.controls input.field{width:100%}.controls .field{flex:1}.chart-area{gap:4px}.chart-col small{font-size:8px}.chart-col .bar{width:35%}.page-title{font-size:21px}.modal-back{padding:8px}.modal-body{padding:15px}.modal-head{padding:15px}.modal-foot{padding:13px}.kv{grid-template-columns:90px 1fr}}@media print{.sidebar,.topbar,.btn,.controls,.notice-demo,.pagination{display:none!important}.main{margin:0;width:100%}.page{padding:0}.card{box-shadow:none;break-inside:avoid}.report-sheet{border:0}}


/* V2 interface refinement — consistent readable enterprise GUI */
:root{--brand:#2563c7;--ink:#172b49;--line:#e4ebf5;--surface:#fff;--canvas:#f4f7fc;font-size:14px}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{font-feature-settings:"palt" 1;letter-spacing:-.025em}
button,select,input,textarea{line-height:1.5}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #72adff;outline-offset:2px}
button{transition:background .16s,border-color .16s,box-shadow .16s,transform .16s}
button:active:not(:disabled){transform:translateY(1px)}
.ui-icon{width:21px;height:21px;display:block;flex:none}
.navicon .ui-icon{width:19px;height:19px}.stat-icon .ui-icon{width:24px;height:24px}
.sidebar{box-shadow:5px 0 24px rgba(12,32,66,.055)}
.brand{min-height:92px}.brand b{font-size:14px;letter-spacing:-.4px}.brand small{font-size:9px;white-space:nowrap}
.navgroup{padding-top:17px}.navitem{font-size:13px;min-height:42px;line-height:1.4}
.navitem.active{background:#234f86;box-shadow:inset 3px 0 #73c7ff,0 4px 15px #071c3418}
.topbar{box-shadow:0 1px 0 #e9eef6}.top-title{font-size:16px;letter-spacing:-.45px}
.page{padding-top:32px}.page-title{line-height:1.35;overflow-wrap:anywhere}.subtitle{font-size:13px;line-height:1.65;margin-bottom:23px}
.card{border-color:#e2eaf5;box-shadow:0 6px 26px rgba(25,51,90,.045);min-width:0}
.card h3{font-size:15px;line-height:1.55}.stat-label{font-size:13px}.stat-value{font-size:29px;line-height:1.28;font-variant-numeric:tabular-nums}.stat-foot{line-height:1.5;font-size:11.5px}
.btn{font-size:12.5px;min-height:38px}.btn.primary{box-shadow:0 3px 10px #3079d825}
.field{min-height:40px;font-size:13px}.formrow label{font-size:12px}.controls{gap:10px}
.table{font-size:12.5px}.table th{font-size:12px;letter-spacing:0;padding:14px 13px}.table td{padding:14px 13px;line-height:1.6}
.tablewrap{max-width:100%;border-radius:9px;scrollbar-color:#c4d5eb transparent}
.table tbody tr{transition:background .12s}.table tbody tr:hover{background:#f2f7ff}
.badge{font-size:11px;white-space:nowrap}.kv{font-size:13px;line-height:1.65}.kv strong{overflow-wrap:anywhere}
.chart-area{height:235px}.barrow{font-size:12px}.legend{font-size:12px}
.modal{border:1px solid #e4ebf6}.modal-head h3{font-size:17px}.modal-body{line-height:1.65}
.phone{box-shadow:0 24px 48px #102c5330}.phone-content{font-size:12.5px;line-height:1.7}
.phone-card{line-height:1.7}.student-card{line-height:1.65}.student-bottom{z-index:2}
.alert{font-size:12.5px;line-height:1.7}.hero h2{line-height:1.4}.hero p{line-height:1.7}
.notice-demo{white-space:nowrap}.footer-note{line-height:1.7}
@media(max-width:1150px){.search-top{display:none}.topbar{gap:8px}}
@media(max-width:850px){.sidebar{width:min(290px,88vw);box-shadow:12px 0 45px #071d3750}.page{padding-top:22px}.topbar{gap:8px}.top-actions{gap:6px}.top-actions .tiny.muted{display:none}.notice-demo{font-size:9px}}
@media(max-width:650px){.heading-row{align-items:flex-start}.heading-row>div:last-child{display:flex;gap:7px;flex-wrap:wrap}.grid4{gap:11px}.stat{gap:8px}.stat-value{font-size:23px}.stat-label{font-size:11.5px}.stat-foot{font-size:10.5px}.stat-icon{height:35px;width:35px;border-radius:9px}.stat-icon .ui-icon{width:19px;height:19px}.card{padding:15px}.topbar{height:62px}.top-title{font-size:13px;max-width:155px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.top-actions .avatar{display:none}.page{padding:19px 12px 38px}.page-title{font-size:21px}.subtitle{font-size:12px}.controls{align-items:stretch}.controls .field,.controls input.field{width:100%;min-width:0}.controls .btn{flex:1}.chart-area{height:195px}.chart-col small{font-size:9px}.tabs{overflow-x:auto;white-space:nowrap}.tab{flex-shrink:0}.modal-back{align-items:flex-end;padding:0}.modal{width:100%;max-height:92dvh;border-radius:18px 18px 0 0}.modal-foot{position:sticky;bottom:0;background:white}.formgrid{gap:12px}.report-sheet{padding:17px}.report-top{gap:10px}.phone{width:min(315px,100%)}.role-switch{display:none}}
@media(max-width:380px){.stat{flex-direction:column-reverse;gap:5px}.stat-value{font-size:22px}.topbar{padding:0 10px}.notice-demo{display:none}.grid4{gap:8px}.card{padding:12px}.btn{padding:9px 10px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
@media print{.modal-back,.toast{display:none!important}.report-sheet{box-shadow:none}.page{max-width:none}.grid{break-inside:avoid}}
