:root{
  --bg:#F5F4EF; --surface:#FFFFFF; --ink:#0B1630; --text:#1B212C; --muted:#5B6476; --line:#DCDDE2;
  --gold:#B8901C; --gold-soft:#F6EDD2; --blue:#2F5FC4; --blue-soft:#E6EDFB;
  --ok:#2E7D5C; --ok-soft:#E3F2EA; --warn:#B23A3A; --warn-soft:#F8E6E5;
  --font:'Noto Sans KR','Apple SD Gothic Neo','Malgun Gothic',sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0}
body{background:var(--bg);color:var(--text);font-family:var(--font);font-size:15px;line-height:1.55;word-break:keep-all;overflow-wrap:anywhere}
button,input,select,textarea{font:inherit;color:inherit}
a{color:var(--blue)}
.top{position:sticky;top:0;z-index:10;background:var(--ink);color:#F7F7F4;display:flex;flex-wrap:wrap;gap:8px 20px;align-items:center;padding:10px 20px;border-bottom:4px solid #C9A227}
.top .brand{font-weight:900;font-size:17px;letter-spacing:.5px;cursor:pointer}
.top nav{display:flex;flex-wrap:wrap;gap:4px}
.top nav a{color:#C9D3E6;text-decoration:none;padding:6px 10px;border-radius:6px;font-size:14px;font-weight:500}
.top nav a.on,.top nav a:hover{background:rgba(255,255,255,.12);color:#fff}
.top .spacer{flex:1}
.top .save{font-size:13px;color:#C9A227}
.wrap{max-width:1180px;margin:0 auto;padding:24px 20px 80px;display:flex;flex-direction:column;gap:20px}
h1{font-size:26px;font-weight:900;margin:0;color:var(--ink)}
h2{font-size:19px;font-weight:800;margin:0;color:var(--ink)}
h3{font-size:16px;font-weight:800;margin:0;color:var(--ink)}
.sub{color:var(--muted);margin:0}
.row{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.row.between{justify-content:space-between}
.card{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:18px;display:flex;flex-direction:column;gap:12px;min-width:0}
.grid3{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}
.stat b{font-size:28px;font-weight:900;color:var(--ink);font-variant-numeric:tabular-nums}
.stat span{color:var(--muted);font-size:13px}
.btn{border:1px solid var(--line);background:var(--surface);border-radius:8px;padding:8px 14px;font-weight:700;cursor:pointer;font-size:14px;color:var(--ink)}
.btn:hover{border-color:var(--ink)}
.btn.primary{background:var(--ink);color:#fff;border-color:var(--ink)}
.btn.gold{background:#C9A227;border-color:#C9A227;color:var(--ink)}
.btn.danger{color:var(--warn);border-color:var(--warn-soft)}
.btn.small{padding:5px 10px;font-size:13px}
.btn:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.tag{display:inline-block;font-size:12px;font-weight:700;padding:2px 8px;border-radius:999px;background:var(--blue-soft);color:var(--blue);white-space:nowrap}
.tag.gold{background:var(--gold-soft);color:var(--gold)}
.tag.ok{background:var(--ok-soft);color:var(--ok)}
.tag.warn{background:var(--warn-soft);color:var(--warn)}
.tag.gray{background:#EEF0F4;color:var(--muted)}
.tablewrap{overflow-x:auto;border:1px solid var(--line);border-radius:10px;background:var(--surface)}
table{border-collapse:collapse;width:100%}
th,td{padding:9px 12px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top;font-size:14px}
thead th{background:#F0F1F4;font-size:12px;color:var(--muted);font-weight:700;white-space:nowrap}
tbody tr:last-child td{border-bottom:0}
tr.click{cursor:pointer}
tr.click:hover td{background:#F7F8FB}
.filters{display:flex;flex-wrap:wrap;gap:8px}
.filters select,.filters input{border:1px solid var(--line);border-radius:8px;padding:7px 10px;background:var(--surface)}
.progress{height:6px;border-radius:99px;background:#E8EAEE;overflow:hidden;min-width:80px}
.progress i{display:block;height:100%;background:#C9A227}
/* 양식 */
.form-head{display:flex;flex-direction:column;gap:6px}
.sec{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:20px;display:flex;flex-direction:column;gap:14px}
.sec>h2{border-bottom:2px solid var(--ink);padding-bottom:8px}
.sec .desc{color:var(--muted);margin:-6px 0 0;font-size:14px}
.fields{display:flex;flex-wrap:wrap;gap:14px}
.f{flex:1 1 100%;display:flex;flex-direction:column;gap:6px;min-width:0}
.f.half{flex:1 1 calc(50% - 7px);min-width:240px}
.f>label,.f>.lab{font-size:13px;font-weight:700;color:var(--ink)}
.f .help{font-size:12px;color:var(--muted)}
.f .internal{font-size:11px;color:var(--warn);font-weight:700;margin-left:6px}
.f input[type=text],.f input[type=date],.f input[type=number],.f select,.f textarea,.g input,.g select{border:1px solid var(--line);border-radius:8px;padding:8px 10px;background:#FCFCFA;width:100%;min-width:0}
.f textarea{min-height:76px;resize:vertical;line-height:1.5}
.opts{display:flex;flex-wrap:wrap;gap:6px}
.opts label{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:999px;padding:6px 12px;cursor:pointer;font-size:14px;background:#FCFCFA}
.opts input{margin:0;accent-color:var(--ink)}
.opts label.on{border-color:var(--ink);background:var(--ink);color:#fff}
.info{background:var(--blue-soft);color:#21407F;border-radius:8px;padding:10px 12px;font-size:14px;flex:1 1 100%}
.g{width:100%;border-collapse:collapse}
.g th,.g td{border:1px solid var(--line);padding:6px;font-size:13px}
.g th{background:#F0F1F4;white-space:nowrap;color:var(--muted)}
.g td.rh{background:#F7F7F4;font-weight:700;white-space:nowrap;color:var(--ink)}
.g td input,.g td select{padding:6px 8px;font-size:13px;border-color:transparent;background:transparent}
.g td input:focus,.g td select:focus{background:#fff;border-color:var(--blue)}
.schoolcard{border:1px solid var(--line);border-radius:10px;padding:12px 14px;background:#FAFAF7;display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:8px 16px;font-size:13px}
.schoolcard div b{display:block;font-size:11px;color:var(--muted);font-weight:700}
.calc{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.calc input{width:120px !important}
.calc output{font-weight:900;color:var(--ink)}
.fromprev{font-size:12px;color:var(--gold);font-weight:700}
.rounds{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}
.round{border:1px solid var(--line);border-radius:10px;padding:14px;display:flex;flex-direction:column;gap:8px;background:var(--surface)}
.round.done{border-color:var(--ok)}
.round h3{font-size:15px}
.round input{border:1px solid var(--line);border-radius:6px;padding:5px 8px;width:100%}
.modal{position:fixed;inset:0;background:rgba(11,22,48,.45);display:flex;align-items:flex-start;justify-content:center;padding:40px 16px;z-index:50;overflow:auto}
.modal .card{max-width:640px;width:100%}
.login{max-width:380px;margin:80px auto}
.login input{border:1px solid var(--line);border-radius:8px;padding:10px 12px;width:100%}
.err{color:var(--warn);font-size:14px;margin:0}
.empty{color:var(--muted);text-align:center;padding:30px}
/* 리포트 */
.report{width:100%;min-width:0;background:#fff;max-width:820px;margin:0 auto;padding:48px 56px;border-radius:4px;box-shadow:0 2px 14px rgba(11,22,48,.12);color:#1B212C}
.report .rhead{border-bottom:4px solid #C9A227;padding-bottom:16px;margin-bottom:24px;display:flex;flex-direction:column;gap:6px}
.report .rhead .eb{font-size:13px;font-weight:700;letter-spacing:2px;color:#8A6A1F}
.report h1{font-size:26px}
.report h2{font-size:18px;margin:26px 0 10px;padding-bottom:6px;border-bottom:1.5px solid #0B1630}
.report .kv{display:grid;grid-template-columns:180px 1fr;gap:6px 16px;font-size:14.5px;margin:0 0 6px}
.report .kv dt{font-weight:700;color:#0B1630}
.report .kv dd{margin:0;white-space:pre-wrap}
.report table{margin:6px 0 12px}
.report table th,.report table td{border:1px solid #C9CFDA;font-size:13px;padding:6px 8px}
.report .foot{margin-top:32px;padding-top:14px;border-top:1px solid #DCDDE2;font-size:12px;color:#5B6476}
.report .summary{background:#0B1630;color:#F7F7F4;border-radius:8px;padding:16px 18px;margin:0 0 10px}
.report .summary dt{color:#C9A227}
.noprint{}
@media print{
  .top,.noprint{display:none !important}
  body{background:#fff}
  .wrap{padding:0;max-width:none}
  .report{box-shadow:none;padding:0;max-width:none}
  .report h2{break-after:avoid}
  .report table{break-inside:auto}
  @page{size:A4;margin:16mm 14mm}
}
@media (max-width:640px){
  .wrap{padding:16px 12px 60px}
  .report{padding:24px 18px}
  .report .kv{grid-template-columns:1fr}
  .report table{display:block;overflow-x:auto;max-width:100%}
}
/* 페이지 */
.pager{display:flex;flex-wrap:wrap;gap:6px;align-items:center;justify-content:center;padding:10px 0 2px}
.pg{min-width:44px;min-height:44px;border:1px solid var(--line);background:var(--surface);border-radius:8px;font-weight:700;cursor:pointer;color:var(--ink)}
.pg.on{background:var(--ink);color:#fff;border-color:var(--ink)}
.pg:disabled{opacity:.35;cursor:default}
.pager-info{font-size:13px;color:var(--muted);margin:0 0 0 6px;text-align:center}
/* 자동 분석 */
.auto{border-color:#C9A227;background:#FFFDF5}
.auto-card{border-color:#C9A227}
.talk{margin:0;padding-left:22px;display:flex;flex-direction:column;gap:6px;font-size:14.5px}
.talk li::marker{color:var(--gold);font-weight:900}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px}
.kpis div{background:#F7F7F4;border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:2px}
.kpis span{font-size:12px;color:var(--muted);font-weight:700}
.kpis b{font-size:18px;color:var(--ink)}
.kpis em{font-style:normal;font-size:12px;color:var(--gold);font-weight:700}
.bar{height:6px;background:#E8EAEE;border-radius:99px;overflow:hidden;margin:4px 0;min-width:70px}
.bar i{display:block;height:100%;background:#C9A227}
.report.wide{max-width:1040px}
.talkcard{border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin:0 0 10px;display:flex;flex-direction:column;gap:8px;break-inside:avoid}
.talkcard.off{opacity:.55}
.applybox{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;background:#F7F7F4;border-radius:10px;padding:12px}
.applybox label{display:flex;flex-direction:column;font-size:12px;font-weight:700;color:var(--muted);gap:4px}
.applybox input{border:1px solid var(--line);border-radius:8px;padding:7px 9px;width:140px;background:#fff}
.applybox output{font-weight:700;color:var(--ink);font-size:14px;flex:1 1 260px}
.pickbox{display:flex;flex-direction:column;gap:8px;background:#fff;border:1px solid var(--line);border-radius:10px;padding:12px}
.pickbox select{border:1px solid var(--line);border-radius:8px;padding:8px}
.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
label.btn{display:inline-flex;align-items:center}
.steps{margin:0;padding-left:22px;display:flex;flex-direction:column;gap:6px}
.code{width:100%;min-height:260px;font-family:ui-monospace,Consolas,monospace;font-size:12px;border:1px solid var(--line);border-radius:8px;padding:10px;background:#0B1630;color:#E8ECF4;white-space:pre;overflow:auto}
@media print{.talkcard.off{display:none}.auto{display:none}}
/* 탭 */
.tabs{display:flex;flex-wrap:wrap;gap:6px;border-bottom:2px solid var(--ink);padding-bottom:10px}
.tab{min-height:44px;padding:8px 16px;border:1px solid var(--line);border-radius:999px;background:var(--surface);font-weight:700;cursor:pointer;color:var(--ink);font-size:14px}
.tab span{font-size:12px;color:var(--muted);font-weight:500;margin-left:2px}
.tab.on{background:var(--ink);color:#fff;border-color:var(--ink)}
.tab.on span{color:#C9A227}
td.src{font-size:12px;color:var(--muted);min-width:160px}
