/* ─────────────────────────────────────────────────────────
   위트앤매쓰 — 화면 뼈대
   견적서(/quote)에서 쓰는 체계를 그대로 가져왔다. 가운데 탭이 있는 흰 머리띠,
   필터 칩 줄, 오른쪽 파란 만들기 단추, 표, 고른 것이 있으면 올라오는 어두운 막대.
   같은 회사 도구가 서로 달라 보이면 쓰는 사람이 매번 다시 배워야 한다.
   ───────────────────────────────────────────────────────── */
*,*::before,*::after{box-sizing:border-box}
:root{
  --blue:#1f8cff; --blue-d:#0f7ae8; --blue-soft:#eaf4ff; --blue-line:#b9dcff;
  --ink:#222; --ink-2:#555; --ink-3:#888; --ink-4:#aaa;
  --line:#e5e7eb; --line-2:#d8dce2; --bg:#fff; --panel:#f7f8fa;
  --amber:#ff9500; --red:#e5484d; --green:#12805c;
  --bar:#3c3f44;
}
[hidden]{display:none !important}
html,body{margin:0;min-height:100%}
body{background:var(--bg);color:var(--ink);
  font-family:'Pretendard Variable',Pretendard,-apple-system,BlinkMacSystemFont,system-ui,sans-serif;
  font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}
img,svg{display:block;max-width:100%}
h1,h2,h3,p{margin:0}
button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}
input,select,textarea{font:inherit;color:inherit}
a{color:inherit;text-decoration:none}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
:focus-visible{outline:2px solid var(--blue);outline-offset:2px}

/* ── 머리띠 ── */
.gnb{border-bottom:1px solid var(--line);background:#fff;position:sticky;top:0;z-index:20}
.gnb .row1{height:64px;display:flex;align-items:center;padding:0 28px;position:relative}
.gnb .brand{display:flex;align-items:center;gap:9px;font-size:19px;font-weight:800;letter-spacing:-.03em}
.gnb .brand .mk{width:24px;height:24px;border-radius:7px;background:linear-gradient(140deg,#3f9bff,#0f5fc4);
  display:grid;place-items:center;color:#fff;font-size:12px;font-weight:800}
.gnb .tabs{position:absolute;left:50%;transform:translateX(-50%);display:flex;gap:34px}
.gnb .tabs button{font-size:15.5px;font-weight:600;color:var(--ink-2);padding:6px 0;white-space:nowrap}
.gnb .tabs button[aria-current="true"]{color:var(--blue);box-shadow:inset 0 -2px 0 var(--blue)}
.gnb .me{margin-left:auto;display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line-2);
  border-radius:999px;padding:7px 15px;font-size:13.5px;color:var(--ink-2)}
.gnb .me .dot{width:15px;height:15px;border-radius:50%;background:var(--ink-3)}
.gnb .me b{font-weight:700;color:var(--ink)}

.wrap{max-width:1320px;margin:0 auto;padding:0 28px 120px}
.pagehead{display:flex;align-items:flex-end;gap:12px;padding:24px 0 4px}
.pagehead h2{font-size:21px;font-weight:800;letter-spacing:-.03em}
.pagehead p{font-size:13px;color:var(--ink-3);margin-bottom:3px}
.pagehead .grow{margin-left:auto;display:flex;gap:8px;align-items:center}

/* ── 칩 · 검색 · 단추 ── */
.bar{display:flex;align-items:center;gap:8px;padding:14px 0;flex-wrap:wrap}
.chip{height:32px;padding:0 14px;border:1px solid var(--line-2);border-radius:5px;
  font-size:13.5px;color:var(--ink-2);display:inline-flex;align-items:center;background:#fff}
.chip[aria-pressed="true"]{background:var(--blue-soft);border-color:var(--blue);color:var(--blue);font-weight:600}
select.chip{padding-right:26px;appearance:none;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%23888' fill='none' stroke-width='1.4'/%3E%3C/svg%3E") right 10px center/10px no-repeat}
.bar .grow{margin-left:auto;display:flex;align-items:center;gap:8px}
.search{display:flex;align-items:center;height:36px;border:1px solid var(--line-2);border-radius:5px;
  padding:0 10px;width:250px;background:#fff}
.search input{border:0;outline:0;width:100%;font-size:13.5px;background:none}
.search input::placeholder{color:var(--ink-4)}
.mk-btn{height:36px;padding:0 18px;border-radius:5px;background:var(--blue);color:#fff;
  font-size:14px;font-weight:700;display:inline-flex;align-items:center;gap:7px}
.mk-btn:hover{background:var(--blue-d)}
.mk-btn:disabled{background:var(--line-2);cursor:not-allowed}
.btn{height:40px;padding:0 22px;border-radius:5px;font-size:14.5px;font-weight:700}
.btn-b{background:var(--blue);color:#fff}
.btn-b:hover{background:var(--blue-d)}
.btn-b:disabled{background:var(--line-2);cursor:not-allowed}
.btn-o{border:1px solid var(--line-2);color:var(--ink-2);background:#fff}
.btn-o:hover{border-color:var(--ink-3)}
.btn-s{height:32px;padding:0 13px;border:1px solid var(--line-2);border-radius:5px;font-size:13px;
  font-weight:600;color:var(--ink-2);background:#fff}
.btn-s:hover{border-color:var(--blue);color:var(--blue)}
.btn-s.warn:hover{border-color:var(--red);color:var(--red)}

/* ── 상태 ── */
.st{display:inline-block;font-size:12px;font-weight:700;padding:3px 9px;border-radius:99px;letter-spacing:-.01em}
.st.ok{background:#e6f6ef;color:var(--green)}
.st.no{background:#fdeceb;color:var(--red)}
.st.wait{background:#f2f4f7;color:var(--ink-3)}
.st.warn{background:#fff5e6;color:#b45309}

/* ── 표 ── */
table.list{width:100%;border-collapse:collapse;table-layout:fixed}
table.list th{font-size:13px;font-weight:600;color:var(--ink-3);text-align:center;
  padding:11px 8px;border-top:1px solid var(--line-2);border-bottom:1px solid var(--line)}
table.list td{padding:13px 8px;border-bottom:1px solid var(--line);font-size:13.5px;
  text-align:center;vertical-align:middle}
table.list tbody tr{cursor:pointer}
table.list tr:hover td{background:#fafbfc}
table.list tr.on td{background:var(--blue-soft)}
table.list tr.on:hover td{background:#dcecff}
table.list td:first-child{cursor:default}
table.list .l{text-align:left}
.qtext{font-size:13.5px;line-height:1.55;max-height:44px;overflow:hidden;color:var(--ink)}
.qsub{font-size:12px;color:var(--ink-3);margin-top:3px;display:flex;gap:8px;flex-wrap:wrap}
.empty{padding:74px 0;text-align:center;color:var(--ink-3);font-size:14px}
.empty b{display:block;color:var(--ink-2);font-size:15px;font-weight:700;margin-bottom:6px}

/* ── 아래 막대 ── */
.dock{position:fixed;left:0;right:0;bottom:0;z-index:40;background:var(--bar);color:#fff;
  display:flex;align-items:center;gap:6px;padding:0 24px;height:62px;
  transform:translateY(100%);transition:transform .22s cubic-bezier(.2,0,0,1)}
.dock.on{transform:none}
.dock .count{font-size:14px;font-weight:600;margin-right:auto}
.dock button{display:inline-flex;align-items:center;gap:6px;padding:9px 15px;border-radius:5px;
  font-size:13px;color:#fff}
.dock button:hover{background:rgba(255,255,255,.12)}
.dock button.warn:hover{background:rgba(229,72,77,.3)}
.dock .x{margin-left:6px;font-size:20px;padding:6px 12px}

/* ── 전체 화면 마법사 ── */
.modal{position:fixed;inset:0;z-index:60;background:#fff;display:none}
.modal.on{display:block}
.sheet{background:#fff;height:100%;display:flex;flex-direction:column;overflow:hidden}
.sheet .head{display:flex;align-items:center;gap:14px;padding:15px 26px;border-bottom:1px solid var(--line);flex:none}
.sheet .head h2{font-size:17px;font-weight:800;letter-spacing:-.02em}
.sheet .head .step{font-size:12px;font-weight:800;color:var(--ink-3);letter-spacing:.04em}
.sheet .head .flow{margin-left:auto;display:flex;align-items:center;gap:15px;font-size:13px;color:var(--ink-4)}
.sheet .head .flow b{display:inline-flex;align-items:center;gap:6px;font-weight:600}
.sheet .head .flow b i{width:17px;height:17px;border-radius:50%;background:var(--line-2);color:#fff;
  font-style:normal;font-size:11px;display:grid;place-items:center;font-weight:700}
.sheet .head .flow b.on{color:var(--ink)}
.sheet .head .flow b.on i{background:var(--blue)}
.sheet .head .close{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line-2);
  border-radius:5px;height:34px;padding:0 14px;font-size:13.5px;color:var(--ink-2)}
.sheet .body{flex:1;padding:18px 26px 22px;overflow:auto;max-width:1500px;width:100%;margin:0 auto}
.sheet .body.split{display:grid;grid-template-columns:1fr 400px;gap:16px;overflow:hidden}
.sheet .body.split>*{overflow:auto}
.sheet .foot{border-top:1px solid var(--line);padding:12px 26px;display:flex;gap:8px;
  justify-content:flex-end;align-items:center;flex:none}
.sheet .foot .note{margin-right:auto;font-size:12.5px;color:var(--ink-3)}
.pane{border:1px solid var(--line);border-radius:8px;background:#fff}
.pane h3{font-size:14px;font-weight:800;padding:13px 17px;border-bottom:1px solid var(--line)}
.pane .in{padding:16px 17px}

/* ── 입력 ── */
.f{display:block;margin-bottom:14px}
.f>span{display:block;font-size:12px;font-weight:800;color:var(--ink-3);margin-bottom:5px}
.f input,.f select,.f textarea{width:100%;height:38px;border:1px solid var(--line-2);border-radius:5px;
  padding:0 11px;font-size:14px;outline:0;background:#fff}
.f textarea{height:auto;min-height:120px;padding:10px 11px;line-height:1.6;resize:vertical;font-family:inherit}
.f input:focus,.f select:focus,.f textarea:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(31,140,255,.14)}
.f .hint{font-size:11.5px;color:var(--ink-4);margin-top:5px;line-height:1.5}
.seg{display:flex;gap:6px;flex-wrap:wrap}
.seg button{height:34px;padding:0 14px;border:1px solid var(--line-2);border-radius:5px;font-size:13.5px;color:var(--ink-2);background:#fff}
.seg button[aria-pressed="true"]{background:var(--blue-soft);border-color:var(--blue);color:var(--blue);font-weight:700}

/* ── 문항 카드 ── */
.qcard{border:1px solid var(--line);border-radius:9px;padding:16px 18px;background:#fff;margin-bottom:12px}
.qcard.bad{border-color:#f3c9c7;background:#fffbfb}
.qcard .qh{display:flex;align-items:center;gap:8px;margin-bottom:9px}
.qcard .qh .n{width:22px;height:22px;border-radius:50%;background:var(--ink);color:#fff;font-size:12px;
  font-weight:700;display:grid;place-items:center;flex:none}
.qcard .qh .grow{margin-left:auto;display:flex;gap:6px;align-items:center}
.qcard .stem{font-size:14.5px;line-height:1.7}
.qcard .fig{margin:12px 0 4px}
.qcard .fig svg{border:1px solid var(--line);border-radius:6px}
.qcard .ch{list-style:none;margin:11px 0 0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:6px 18px;font-size:14px}
.qcard .ch li{display:flex;gap:6px}
.qcard .ch .cn{color:var(--ink-3)}
.qcard .ans{margin-top:12px;padding-top:10px;border-top:1px dashed var(--line-2);font-size:13.5px}
.qcard .ans b{color:var(--blue)}
.qcard .sol{margin-top:10px;font-size:13px;color:var(--ink-2);line-height:1.7}
.qcard .sol ol{margin:6px 0 0;padding-left:18px}
.qcard .why{margin-top:10px;font-size:12.5px;color:#b45309;background:#fff8ee;border-radius:6px;padding:8px 10px;line-height:1.6}

/* ── 실시간 퀴즈(교사 조종석) ── */
.hostgrid{display:grid;grid-template-columns:1fr 340px;gap:16px;align-items:start}
.pinbox{border:1px solid var(--line);border-radius:12px;padding:20px;text-align:center;background:#fff}
.pinbox .k{font-size:12px;font-weight:800;color:var(--ink-3);letter-spacing:.08em}
.pinbox .pin{font-size:44px;font-weight:800;letter-spacing:.12em;font-variant-numeric:tabular-nums;margin:4px 0 2px}
.pinbox .url{font-size:12.5px;color:var(--ink-3);word-break:break-all}
.pinbox svg{margin:12px auto 0}
.people{display:flex;flex-wrap:wrap;gap:7px;margin-top:12px}
.people span{border:1px solid var(--line-2);border-radius:99px;padding:5px 12px;font-size:13px;background:#fff}
.people span i{font-style:normal;color:var(--ink-4);margin-right:5px}
.tally{display:grid;gap:8px;margin-top:12px}
.tally .rowt{display:grid;grid-template-columns:26px 1fr 46px;gap:9px;align-items:center;font-size:13.5px}
.tally .b{height:22px;border-radius:4px;background:var(--blue-soft);position:relative;overflow:hidden}
.tally .b i{position:absolute;inset:0;width:0;background:var(--blue);display:block;transition:width .3s}
.tally .rowt.right .b i{background:var(--green)}
.lead{border:1px solid var(--line);border-radius:10px;overflow:hidden}
.lead .r{display:grid;grid-template-columns:34px 1fr auto;gap:10px;padding:10px 14px;border-bottom:1px solid var(--line);
  align-items:center;font-size:14px}
.lead .r:last-child{border-bottom:0}
.lead .r .rk{font-weight:800;color:var(--ink-3);font-variant-numeric:tabular-nums}
.lead .r.top1{background:#fffaf0}
.lead .r .sc{font-weight:800;font-variant-numeric:tabular-nums}
.teamgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}
.teamcard{border:1px solid var(--line);border-radius:10px;padding:13px 14px;background:#fff}
.teamcard .tn{font-size:12px;font-weight:800;color:var(--ink-3)}
.teamcard .ts{font-size:22px;font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:-.03em}
.teamcard .run{margin-top:6px;font-size:12.5px;color:var(--blue);font-weight:700}
.teamcard .mem{margin-top:5px;font-size:11.5px;color:var(--ink-4);line-height:1.5}

/* ── 대화창 ── */
#dlg{position:fixed;inset:0;z-index:85;background:rgba(20,22,26,.45);display:none;
  align-items:center;justify-content:center;padding:24px;backdrop-filter:blur(2px)}
#dlg.on{display:flex}
#dlg .box{background:#fff;border-radius:12px;width:100%;max-width:440px;box-shadow:0 20px 60px rgba(16,20,28,.28);overflow:hidden}
#dlg h3{font-size:16.5px;font-weight:800;letter-spacing:-.02em;padding:22px 24px 0}
#dlg .desc{padding:8px 24px 0;font-size:13.5px;color:var(--ink-2);line-height:1.65;white-space:pre-wrap}
#dlg .fields{padding:16px 24px 0;display:grid;gap:12px}
#dlg .acts{display:flex;justify-content:flex-end;gap:8px;padding:20px 24px 22px}
#dlg .acts button{height:40px;padding:0 20px;border-radius:6px;font-size:14.5px;font-weight:700}
#dlg .acts .ghost{border:1px solid var(--line-2);color:var(--ink-2)}
#dlg .acts .primary{background:var(--blue);color:#fff}
#toast{position:fixed;left:50%;bottom:92px;transform:translateX(-50%);z-index:90;background:#222;color:#fff;
  border-radius:6px;padding:11px 18px;font-size:13.5px;display:none;max-width:80vw;text-align:center}
#toast.on{display:block}
#busy{position:fixed;inset:0;z-index:95;background:rgba(255,255,255,.72);display:none;place-items:center}
#busy.on{display:grid}
#busy .c{text-align:center}
#busy .sp{width:34px;height:34px;border:3px solid var(--line-2);border-top-color:var(--blue);border-radius:50%;
  margin:0 auto 12px;animation:spin .8s linear infinite}
#busy .t{font-size:14px;font-weight:700}
#busy .s{font-size:12.5px;color:var(--ink-3);margin-top:4px}
@keyframes spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){*{animation:none !important;transition:none !important}}

/* ── 로그인 ── */
#gate{position:fixed;inset:0;z-index:80;background:#fff;display:grid;place-items:center;padding:24px}
#gate .box{width:360px;max-width:100%}
#gate .lg{display:flex;align-items:center;gap:9px;font-size:21px;font-weight:800;letter-spacing:-.03em;margin-bottom:6px}
#gate .lg .mk{width:26px;height:26px;border-radius:8px;background:linear-gradient(140deg,#3f9bff,#0f5fc4);
  display:grid;place-items:center;color:#fff;font-size:13px;font-weight:800}
#gate p.sub{font-size:13.5px;color:var(--ink-3);margin-bottom:20px;line-height:1.6}
#gate .tabsw{display:flex;gap:16px;margin-bottom:16px;border-bottom:1px solid var(--line)}
#gate .tabsw button{padding:9px 2px;font-size:14px;font-weight:700;color:var(--ink-3)}
#gate .tabsw button[aria-current="true"]{color:var(--blue);box-shadow:inset 0 -2px 0 var(--blue)}
#gate .err{font-size:13px;color:var(--red);margin-bottom:10px;min-height:18px}

@media (max-width:900px){
  .gnb .row1{height:auto;padding:10px 16px;flex-wrap:wrap;gap:8px}
  .gnb .tabs{position:static;transform:none;order:3;width:100%;overflow:auto;gap:20px;padding-bottom:4px}
  .gnb .me{margin-left:auto}
  .wrap{padding:0 16px 110px}
  .sheet .body.split{grid-template-columns:1fr;overflow:auto}
  .hostgrid{grid-template-columns:1fr}
  .qcard .ch{grid-template-columns:1fr}
}
