/* 오늘판(ONULPAN) v1.5 — 앱 스타일 (2026-10-22 전면 개편: 전문가용 밀도·SVG 아이콘·한 화면 대시보드). 에디션: body.ed-pro / .ed-kids / .ed-senior
   토큰은 웹런 디자인 시스템(글꼴·크기·모서리·그림자)을 따르고 색은 오늘판 고유 파랑. 글자 14.5px 기본, 카드 10px, 입력칸 8px, 알약 999px */
:root{
  --font:'NSN','NanumSquare Neo','Apple SD Gothic Neo','Malgun Gothic',sans-serif;
  /* v1.6 테마(2026-10-22): 흰 캔버스 + 머리카락 선, 그림자 거의 없음. 사이드는 네이비(--nb*) */
  --p:#2f54eb; --p2:#2341c9; --pl:#edf1ff; --pl2:#dbe4ff; --acc:#e9a400; --accl:#fff5d8; --acct:#7a5300;
  --bg:#ffffff; --sf:#ffffff; --sf2:#f6f7f9; --sf3:#eef0f4; --line:#e6e8ee; --line2:#d8dbe3; --tx:#171c28; --mu:#5d6676; --mu2:#8d95a6;
  --ok:#188f5a; --okl:#e6f6ee; --warn:#c27300; --warnl:#fff3dc; --bad:#d8363f; --badl:#fdecec;
  --r:12px; --r2:16px; --rc:8px; --fs:14.5px; --pad:14px;
  --sh:0 1px 2px rgba(18,24,40,.04);
  --side:232px; --top:54px;
  --nb:#161d33; --ntx:#b3bcd3; --nic:#8792b0; --nline:rgba(255,255,255,.09); --nhov:rgba(255,255,255,.06); --nact:rgba(255,255,255,.11); --nacc:#8fa6ff;
}
body.ed-kids{ --p:#ff7a59; --p2:#f0603f; --pl:#ffeae3; --pl2:#ffd9cc; --bg:#fff8ec; --sf2:#fffaf2; --sf3:#fff2e0; --line:#f3e3cf; --tx:#3b2f2a; --mu:#8a7266; --r:16px; --r2:22px; --rc:12px; --fs:16px; --pad:16px; }
body.ed-senior{ --p:#1f5fbf; --p2:#174a96; --pl:#e3ecfa; --pl2:#cfddf5; --bg:#ffffff; --sf2:#f3f5f9; --sf3:#e9edf4; --line:#c9d0dc; --line2:#aeb7c6; --tx:#111418; --mu:#3f4753; --mu2:#6b7380; --fs:18px; --pad:16px; }
*{box-sizing:border-box} html,body{margin:0;height:100%}
body{font-family:var(--font);font-size:var(--fs);color:var(--tx);background:var(--bg);-webkit-font-smoothing:antialiased;line-height:1.5;word-break:keep-all;overflow-wrap:anywhere}
a{color:inherit;text-decoration:none} button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer;border:0;background:none;padding:0}
input,select,textarea{border:1px solid var(--line2);border-radius:var(--rc);background:var(--sf);padding:8px 11px;outline:none;width:100%;min-height:38px}
input:focus,select:focus,textarea:focus{border-color:var(--p);box-shadow:0 0 0 3px var(--pl)}
textarea{resize:vertical;min-height:80px}
:focus-visible{outline:2px solid var(--p);outline-offset:2px}
.boot{padding:60px 20px;text-align:center;color:var(--mu)}
svg.i{width:1.15em;height:1.15em;flex:none;vertical-align:-.22em}
.btn{display:inline-flex;align-items:center;gap:6px;border-radius:var(--rc);padding:8px 13px;font-weight:700;background:var(--sf);border:1px solid var(--line2);white-space:nowrap;transition:.12s;line-height:1.2;min-height:36px}
.btn:hover{background:var(--pl);border-color:var(--p);color:var(--p)}
.btn.p{background:var(--p);color:#fff;border-color:var(--p)} .btn.p:hover{background:var(--p2);color:#fff}
.btn.sm{padding:5px 9px;font-size:.88em;min-height:30px} .btn.ghost{background:transparent;border-color:transparent;color:var(--mu)} .btn.ghost:hover{color:var(--p);background:var(--pl);border-color:transparent}
.btn.bad{color:var(--bad)} .btn.bad:hover{background:var(--badl);border-color:var(--bad);color:var(--bad)}
.btn.full{width:100%;justify-content:center;padding:11px}
.btn.ic{padding:0;width:36px;justify-content:center} .btn.ic.sm{width:30px}
.btn:disabled{opacity:.5;cursor:default}
.ed-senior .btn{padding:11px 16px} .ed-kids .btn{border-radius:999px}
.chip{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 8px;font-size:.78em;font-weight:800;background:var(--sf3);color:var(--mu);border:1px solid transparent;line-height:1.5;white-space:nowrap}
.chip.p{background:var(--pl);color:var(--p)} .chip.acc{background:var(--accl);color:var(--acct)}
.chip.bad{background:var(--badl);color:var(--bad)} .chip.warn{background:var(--warnl);color:var(--warn)} .chip.ok{background:var(--okl);color:var(--ok)}
.avatar{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;color:#fff;font-weight:800;font-size:.72em;flex:none}
.avatar.lg{width:40px;height:40px;font-size:.95em}
.mu{color:var(--mu)} .sm{font-size:.86em} .b{font-weight:800} .row{display:flex;align-items:center;gap:8px} .grow{flex:1;min-width:0} .wrap{flex-wrap:wrap} .right{margin-left:auto}
.hide{display:none!important} .num{font-variant-numeric:tabular-nums}
/* ───── 인증 ───── */
.auth{min-height:100%;display:flex;align-items:center;justify-content:center;padding:24px}
.auth .card{width:100%;max-width:440px;background:var(--sf);border-radius:var(--r2);box-shadow:var(--sh);padding:28px}
.auth .logo{font-size:1.6em;font-weight:900;text-align:center;margin-bottom:4px} .auth .logo b{color:var(--p)}
.auth .sub{text-align:center;color:var(--mu);margin-bottom:20px}
.tabs{display:flex;gap:4px;background:var(--sf3);border-radius:var(--rc);padding:3px;margin-bottom:16px}
.tabs button{flex:1;padding:8px;border-radius:6px;font-weight:700;color:var(--mu);white-space:nowrap} .tabs button.on{background:var(--sf);color:var(--p);box-shadow:var(--sh)}
.field{margin-bottom:12px} .field label{display:block;font-weight:700;font-size:.86em;margin-bottom:5px;color:var(--mu)}
.err{background:var(--badl);color:var(--bad);border-radius:var(--rc);padding:9px 12px;margin-bottom:12px;font-size:.92em}
.edpick{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:14px}
.edpick label{border:2px solid var(--line);border-radius:var(--r);padding:10px 8px;text-align:center;cursor:pointer;background:var(--sf)}
.edpick input{display:none} .edpick input:checked+div{color:var(--p)} .edpick label:has(input:checked){border-color:var(--p);background:var(--pl)}
.edpick .nm{font-weight:800;font-size:.9em} .edpick .ds{font-size:.72em;color:var(--mu)}
.edpick.two{grid-template-columns:1fr 1fr}
/* ───── 셸 (v1.5): 왼쪽 메뉴 + 위 막대 + 본문. 본문만 스크롤 ───── */
.shell{display:grid;grid-template-columns:var(--side) 1fr;grid-template-rows:var(--top) 1fr;height:100vh;height:100dvh;overflow:hidden}
.side{grid-row:1/3;background:var(--sf);border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0}
.side-top{height:var(--top);display:flex;align-items:center;padding:0 16px;border-bottom:1px solid var(--line)}
.brand{font-weight:900;font-size:1.12em;display:flex;align-items:center;gap:7px;white-space:nowrap;flex:none} .brand b{color:var(--p)}
.ws-pick{display:flex;align-items:center;gap:8px;margin:10px 10px 4px;padding:8px 10px;border-radius:var(--r);background:var(--sf2);border:1px solid var(--line);text-align:left;width:calc(100% - 20px);min-height:44px}
.ws-pick:hover{border-color:var(--p);background:var(--pl)}
.ws-pick .ws-ic{width:28px;height:28px;border-radius:8px;background:var(--pl);color:var(--p);display:inline-flex;align-items:center;justify-content:center;flex:none}
.ws-pick .ws-t{flex:1;min-width:0;line-height:1.2} .ws-pick .ws-co{display:block;font-size:.72em;color:var(--mu);font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ws-pick .ws-nm{display:block;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap} .ws-pick .i{color:var(--mu2)}
.nav{flex:1;overflow:auto;padding:4px 10px 12px;min-height:0}
.nav a,.nav .nav-h{display:flex;align-items:center;gap:9px;padding:7px 10px;border-radius:var(--rc);font-weight:700;color:var(--mu);position:relative;line-height:1.3}
.nav a{min-height:36px} .nav a .i{color:var(--mu2)} .nav a:hover{background:var(--sf2);color:var(--tx)} .nav a:hover .i{color:var(--tx)}
.nav a.on{background:var(--pl);color:var(--p)} .nav a.on .i{color:var(--p)} .nav a.on::before{content:'';position:absolute;left:-10px;top:8px;bottom:8px;width:3px;border-radius:0 3px 3px 0;background:var(--p)}
.nav .nav-h{margin-top:12px;font-size:.74em;color:var(--mu2);letter-spacing:.02em;padding-bottom:3px}
.nav .nav-h button{margin-left:auto;color:var(--mu);width:22px;height:22px;border-radius:6px;display:inline-flex;align-items:center;justify-content:center} .nav .nav-h button:hover{background:var(--pl);color:var(--p)}
.nav .dot{width:9px;height:9px;border-radius:50%;flex:none;margin:0 2px} .nav .cnt{margin-left:auto;font-size:.74em;background:var(--sf3);border-radius:999px;padding:0 7px;color:var(--mu);font-variant-numeric:tabular-nums}
.nav .nav-bot{margin-top:auto;padding-top:8px;border-top:1px solid var(--line)}
.nav .pj{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.top{display:flex;align-items:center;gap:10px;padding:0 18px;background:var(--sf);border-bottom:1px solid var(--line);min-width:0}
.search{position:relative} .search input{padding:7px 12px 7px 36px;background:var(--sf2);border-color:transparent;min-height:36px} .search input:focus{background:var(--sf);border-color:var(--p)}
.search .i{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:var(--mu2);pointer-events:none}
.top .search{flex:1;max-width:520px}
.top .edbadge{font-size:.72em;font-weight:800;color:var(--p);background:var(--pl);border-radius:999px;padding:3px 9px}
.top .me{display:inline-flex;align-items:center;gap:8px;padding:3px 8px 3px 3px;border-radius:999px;border:1px solid transparent} .top .me:hover{border-color:var(--line);background:var(--sf2)} .top .me .nm{font-weight:800;font-size:.9em;max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.main{overflow:auto;padding:18px 22px 40px;min-width:0;scroll-behavior:smooth}
.page-h{display:flex;align-items:center;gap:10px;margin-bottom:14px;flex-wrap:wrap} .page-h h1{margin:0;font-size:1.42em;font-weight:800;display:flex;align-items:center;gap:8px;letter-spacing:-.01em}
.page-h h1 .i{color:var(--p)} .page-h .sub{color:var(--mu);width:100%;margin-top:-4px;font-size:.92em}
.bottom,.fab,.m-only{display:none}
.bell{position:relative;width:36px;height:36px;border-radius:50%;border:1px solid var(--line);background:var(--sf);display:inline-flex;align-items:center;justify-content:center;flex:none;cursor:pointer;color:var(--mu)}
.bell:hover{background:var(--pl);color:var(--p);border-color:var(--p)}
.bell .bdg{position:absolute;top:-5px;right:-5px;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:var(--bad);color:#fff;font-size:.62em;font-weight:800;display:flex;align-items:center;justify-content:center;box-shadow:0 0 0 2px var(--sf)}
.bell .bdg[hidden]{display:none}
@media (max-width:860px){
  .shell{grid-template-columns:1fr;grid-template-rows:var(--top) 1fr}
  .side{display:none} .top{padding:0 10px;gap:8px} .top .search,.top .edbadge,.top .me .nm,.top .quick-btn{display:none}
  .top .m-only{display:inline-flex} .top .ws-pick{margin:0;width:auto;flex:1;min-height:38px;padding:4px 8px;background:transparent;border-color:transparent} .top .ws-pick .ws-ic{width:26px;height:26px}
  .main{padding:12px 12px calc(84px + var(--sab))}
  .bottom{display:flex;position:fixed;bottom:0;left:0;right:0;background:var(--sf);border-top:1px solid var(--line);z-index:6;padding:4px 2px calc(4px + var(--sab));height:calc(60px + var(--sab))}
  .bottom a{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:.68em;font-weight:700;color:var(--mu);padding:2px;min-width:0} .bottom a .i{width:22px;height:22px;color:var(--mu2)} .bottom a.on{color:var(--p)} .bottom a.on .i{color:var(--p)}
  .bottom a.fab-slot{flex:0 0 72px}
  .fab{display:flex;position:fixed;left:50%;transform:translateX(-50%);bottom:calc(22px + var(--sab));width:54px;height:54px;border-radius:50%;background:var(--p);color:#fff;align-items:center;justify-content:center;box-shadow:0 8px 22px rgba(59,92,228,.38);z-index:7} .fab .i{width:26px;height:26px}
  .fab:active{transform:translateX(-50%) scale(.96)}
  .ed-kids .bottom a,.ed-senior .bottom a{font-size:.78em}
  .page-h h1{font-size:1.25em}
}
/* ───── 카드·그리드 ───── */
.card{background:var(--sf);border:1px solid var(--line);border-radius:var(--r);padding:var(--pad);box-shadow:var(--sh);min-width:0}
.card h3{margin:0 0 10px;font-size:1em;display:flex;align-items:center;gap:8px;font-weight:800} .card h3 .right{font-weight:600;color:var(--mu);font-size:.85em}
.grid{display:grid;gap:12px} .grid.c2{grid-template-columns:1fr 1fr} .grid.c3{grid-template-columns:repeat(3,1fr)} .grid.c4{grid-template-columns:repeat(4,1fr)}
@media (max-width:860px){.grid.c2,.grid.c3,.grid.c4{grid-template-columns:1fr 1fr}} @media (max-width:640px){.grid.c2{grid-template-columns:1fr}}
.stat{background:var(--sf);border:1px solid var(--line);border-radius:var(--r);padding:12px 14px;box-shadow:var(--sh);cursor:pointer;min-width:0}
.stat .n{font-size:1.75em;font-weight:800;line-height:1.1;font-variant-numeric:tabular-nums;letter-spacing:-.02em} .stat .l{color:var(--mu);font-size:.82em;font-weight:700} .stat.bad .n{color:var(--bad)} .stat.ok .n{color:var(--ok)} .stat.p .n{color:var(--p)}
.ed-kids .stat .n,.ed-senior .stat .n{font-size:2.1em}
.quick{display:flex;gap:8px;margin-bottom:14px} .quick input{padding:10px 13px;font-size:1em}
/* ───── 할 일 목록 ───── */
.tl{display:flex;flex-direction:column;gap:5px}
.ti{display:flex;align-items:center;gap:9px;background:var(--sf);border:1px solid var(--line);border-radius:var(--rc);padding:8px 10px;cursor:pointer;transition:border-color .12s;min-height:42px}
.ti:hover{border-color:var(--p)} .ti.done{opacity:.6} .ti.done .tt{text-decoration:line-through}
.ti .tt{flex:1;font-weight:700;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap} .ti .meta{display:flex;align-items:center;gap:6px;flex-wrap:wrap;color:var(--mu);font-size:.8em;justify-content:flex-end}
.ti .meta .mi{display:inline-flex;align-items:center;gap:2px} .ti .meta .mi .i{width:1em;height:1em}
.ed-kids .ti,.ed-senior .ti{padding:12px 12px} .ed-kids .ti .tt{white-space:normal}
.chk{width:22px;height:22px;border-radius:50%;border:2px solid var(--line2);display:inline-flex;align-items:center;justify-content:center;flex:none;background:var(--sf);color:#fff;font-size:.78em;transition:.12s}
.chk:hover{border-color:var(--ok)} .chk.on{background:var(--ok);border-color:var(--ok)}
.ed-kids .chk,.ed-senior .chk{width:28px;height:28px;font-size:1em} .ed-kids .chk{border-radius:8px}
.pin-btn{color:var(--mu2);width:28px;height:28px;border-radius:6px;display:inline-flex;align-items:center;justify-content:center;flex:none} .pin-btn:hover{background:var(--accl);color:var(--acc)} .pin-btn.on{color:var(--acc)}
.pdot{width:8px;height:8px;border-radius:50%;display:inline-block;flex:none}
.due{font-weight:700;white-space:nowrap} .due.over{color:var(--bad)} .due.today{color:var(--warn)} .due.soon{color:var(--p)}
.pr-urgent{color:var(--bad);font-weight:800} .pr-high{color:#d4641c;font-weight:800} .pr-low{color:var(--mu2)}
.empty{text-align:center;color:var(--mu);padding:22px 12px;background:var(--sf2);border-radius:var(--r);border:1px dashed var(--line2);font-size:.95em}
.sec-t{font-weight:800;margin:16px 0 8px;display:flex;align-items:center;gap:8px} .sec-t .cnt{color:var(--mu);font-weight:700;font-size:.85em}
/* ───── 칸반 ───── */
.board{display:flex;gap:12px;overflow-x:auto;padding-bottom:12px;align-items:flex-start;min-height:60vh}
.col{flex:0 0 288px;background:var(--sf2);border:1px solid var(--line);border-radius:var(--r);padding:10px;display:flex;flex-direction:column;max-height:calc(100dvh - 190px)}
.col.over{outline:2px dashed var(--p);outline-offset:-2px}
.col-h{display:flex;align-items:center;gap:6px;padding:2px 4px 10px;font-weight:800} .col-h .cnt{color:var(--mu);font-weight:700;font-size:.85em} .col-h .menu{margin-left:auto;color:var(--mu2);font-weight:900;border-radius:6px;padding:0 6px} .col-h .menu:hover{background:var(--pl);color:var(--p)}
.col-b{flex:1;overflow:auto;display:flex;flex-direction:column;gap:8px;min-height:40px}
.kc{background:var(--sf);border:1px solid var(--line);border-radius:var(--rc);padding:9px 11px;cursor:grab;box-shadow:0 1px 2px rgba(16,32,54,.05)}
.kc:hover{border-color:var(--p)} .kc.drag{opacity:.4} .kc.done{opacity:.65} .kc.done .tt{text-decoration:line-through}
.kc .tt{font-weight:700;margin-bottom:6px;line-height:1.35} .kc .meta{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:.78em;color:var(--mu)} .kc .meta .mi{display:inline-flex;align-items:center;gap:2px} .kc .meta .i{width:1em;height:1em}
.col-add{margin-top:8px} .col-add input{padding:7px 10px;background:var(--sf);min-height:34px}
.add-col{flex:0 0 220px;background:transparent;border:1px dashed var(--line2);border-radius:var(--r);padding:14px;color:var(--mu);font-weight:700;text-align:center;cursor:pointer} .add-col:hover{border-color:var(--p);color:var(--p)}
/* ───── 리스트 테이블 ───── */
.tbl{width:100%;border-collapse:collapse;background:var(--sf);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.tbl th,.tbl td{padding:9px 12px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle;font-size:.94em} .tbl th{background:var(--sf2);font-size:.78em;color:var(--mu);font-weight:800}
.tbl tr:last-child td{border-bottom:0} .tbl tr.rowc{cursor:pointer} .tbl tr.rowc:hover td{background:var(--sf2)}
.tbl-wrap{overflow:auto;border-radius:var(--r)}
/* ───── 캘린더 ───── */
.cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.cal .dow{text-align:center;font-size:.78em;font-weight:800;color:var(--mu);padding:4px} .cal .dow.sun{color:var(--bad)} .cal .dow.sat{color:var(--p)}
.cal .day{min-height:96px;min-width:0;background:var(--sf);border:1px solid var(--line);border-radius:var(--rc);padding:5px;cursor:pointer;display:flex;flex-direction:column;gap:3px}
.cal .day:hover{border-color:var(--p)} .cal .day.dim{opacity:.45} .cal .day.today{border-color:var(--p);box-shadow:0 0 0 2px var(--pl)}
.cal .dn{font-size:.78em;font-weight:800;color:var(--mu)} .cal .day.today .dn{color:var(--p)} .cal .day.sun .dn{color:var(--bad)}
.cal .ev{font-size:.72em;font-weight:700;border-radius:5px;padding:2px 5px;background:var(--pl);color:var(--p);overflow:hidden;text-overflow:ellipsis;white-space:nowrap} .cal .ev.done{opacity:.55;text-decoration:line-through} .cal .ev.over{background:var(--badl);color:var(--bad)}
.cal .more{font-size:.7em;color:var(--mu)}
@media (max-width:860px){.cal .day{min-height:64px;padding:3px} .cal .ev{font-size:.6em;padding:1px 3px}}
.ev.k-leave{background:#f1e4ff;color:#7a3fd1} .ev.k-meeting{background:var(--pl);color:var(--p2)} .ev.k-holiday{background:var(--badl);color:var(--bad)} .ev.k-dday{background:var(--warnl);color:var(--warn)} .ev.k-etc{background:var(--sf3);color:var(--mu)}
.cal .ev.cont{border-top-left-radius:0;border-bottom-left-radius:0;margin-left:-5px;opacity:.85}
.cal .day.hday .dn{color:var(--bad)} .cal .dn .hol{font-weight:700;font-size:.82em;margin-left:4px;color:var(--bad);white-space:nowrap}
.cal-legend{display:flex;gap:6px;flex-wrap:wrap;margin:-4px 0 10px} .cal-legend .ev{font-size:.74em;font-weight:700;border-radius:5px;padding:2px 8px;background:var(--pl);color:var(--p);display:inline-block}
@media (max-width:860px){.cal .dn .hol{display:none} .cal-legend{display:none}}
.ev.sc-co{box-shadow:inset 3px 0 0 var(--nb);padding-left:7px}
.up-row{display:flex;align-items:center;gap:10px;padding:7px 4px;border-bottom:1px solid var(--line);flex-wrap:wrap} .up-row:last-child{border-bottom:0} .up-row.clk{cursor:pointer} .up-row.clk:hover{background:var(--sf2)}
.up-d{width:72px;font-weight:800;font-size:.82em;color:var(--mu);flex:none} .up-row .ev{font-size:.84em;font-weight:700;border-radius:6px;padding:3px 8px;display:inline-block}
/* ───── 메모 ───── */
.memos{columns:3;column-gap:12px} @media (max-width:1100px){.memos{columns:2}} @media (max-width:600px){.memos{columns:1}}
.memo{break-inside:avoid;margin-bottom:12px;border-radius:var(--r);padding:14px;border:1px solid rgba(0,0,0,.06);cursor:pointer;position:relative;color:#2a2a2a}
.memo .mt{font-weight:800;margin-bottom:4px} .memo .mb{white-space:pre-wrap;word-break:break-word;font-size:.95em} .memo .pin{position:absolute;top:8px;right:10px;color:var(--acc)}
.memo-new{background:var(--sf);border:1px solid var(--line);border-radius:var(--r);padding:12px;margin-bottom:14px;box-shadow:var(--sh)}
.colors{display:flex;gap:6px} .colors span{width:22px;height:22px;border-radius:50%;border:2px solid transparent;cursor:pointer} .colors span.on{border-color:var(--tx)}
/* ───── 레이어(모달·시트) ───── */
#layer:empty{display:none} #layer{position:fixed;inset:0;z-index:50;background:rgba(16,22,40,.48);display:flex;align-items:flex-start;justify-content:center;padding:34px 14px;overflow:auto;backdrop-filter:blur(1px)}
.modal{background:var(--sf);border-radius:var(--r2);width:100%;max-width:680px;box-shadow:0 20px 60px rgba(0,0,0,.25);padding:20px;animation:pop .15s ease-out}
.modal.sm{max-width:420px} .modal.md{max-width:560px}
@keyframes pop{from{transform:translateY(8px);opacity:0}to{transform:none;opacity:1}}
@media (prefers-reduced-motion:reduce){.modal,#toast div,.kids-cheer{animation:none}}
.modal-h{display:flex;align-items:flex-start;gap:10px;margin-bottom:12px} .modal-h .x{margin-left:auto;color:var(--mu);width:32px;height:32px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;flex:none} .modal-h .x:hover{background:var(--sf2);color:var(--tx)}
.ttitle{font-size:1.18em;font-weight:800;border:0;padding:4px 6px;background:transparent;border-radius:8px;min-height:0} .ttitle:focus{background:var(--sf2);box-shadow:none}
.props{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:10px 0} @media (max-width:600px){.props{grid-template-columns:1fr}}
.props label{display:block;font-size:.76em;font-weight:800;color:var(--mu);margin-bottom:3px}
.props select,.props input{padding:7px 10px;min-height:34px}
.cl{display:flex;flex-direction:column;gap:3px} .cl .it{display:flex;align-items:center;gap:8px;padding:4px 6px;border-radius:8px} .cl .it:hover{background:var(--sf2)} .cl .it.on span.t{text-decoration:line-through;color:var(--mu)} .cl .it .del{margin-left:auto;color:var(--mu2);width:24px;height:24px;border-radius:6px;display:inline-flex;align-items:center;justify-content:center} .cl .it .del:hover{color:var(--bad);background:var(--badl)}
.cmt{display:flex;gap:8px;margin-bottom:10px} .cmt .body{background:var(--sf2);border-radius:10px;padding:8px 12px;flex:1;white-space:pre-wrap;word-break:break-word} .cmt .who{font-size:.78em;color:var(--mu);margin-bottom:2px}
.prog{height:6px;background:var(--sf3);border-radius:999px;overflow:hidden} .prog i{display:block;height:100%;background:var(--ok)}
.dangerzone{border-top:1px solid var(--line);margin-top:16px;padding-top:12px;display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.menu-pop{position:absolute;background:var(--sf);border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 30px rgba(0,0,0,.15);padding:6px;z-index:60;min-width:160px}
.menu-pop button{display:block;width:100%;text-align:left;padding:8px 12px;border-radius:8px;font-weight:700} .menu-pop button:hover{background:var(--sf2)} .menu-pop button.bad{color:var(--bad)}
/* 시트(폰에서는 아래에서 올라오는 창) */
.modal.sheet{max-width:520px}
@media (max-width:640px){#layer{padding:0;align-items:flex-end} #layer .modal{border-radius:16px 16px 0 0;max-height:92dvh;overflow:auto;padding:16px 14px calc(16px + var(--sab));animation:up .18s ease-out} @keyframes up{from{transform:translateY(24px);opacity:0}to{transform:none;opacity:1}}}
.sheet-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.sheet-grid button,.sheet-grid a,.sheet-grid label{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:14px 6px;border:1px solid var(--line);border-radius:var(--r);background:var(--sf);font-weight:800;font-size:.86em;color:var(--tx);min-height:84px;text-align:center;cursor:pointer;position:relative;margin:0}
.sheet-grid button:hover,.sheet-grid a:hover,.sheet-grid label:hover{border-color:var(--p);background:var(--pl);color:var(--p)}
.sheet-grid .i{width:24px;height:24px;color:var(--p)} .sheet-grid .sub{font-size:.78em;color:var(--mu);font-weight:600;line-height:1.3}
.sheet-grid .cnt{position:absolute;top:6px;right:8px}
/* ───── 설정·팀 ───── */
.member{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--line)} .member:last-child{border-bottom:0}
.code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:1.25em;font-weight:900;letter-spacing:.12em;background:var(--sf2);border-radius:8px;padding:9px 14px;display:inline-block}
.act{display:flex;gap:8px;padding:6px 0;border-bottom:1px solid var(--line);font-size:.88em;align-items:flex-start} .act:last-child{border-bottom:0} .act .t{color:var(--mu2);font-size:.8em;white-space:nowrap;margin-left:auto}
.act .vb{color:var(--mu)} .act a{color:var(--p);font-weight:700}
#toast{position:fixed;left:50%;bottom:28px;transform:translateX(-50%);z-index:99;display:flex;flex-direction:column;gap:6px;align-items:center;pointer-events:none}
#toast div{background:#1b2130;color:#fff;border-radius:999px;padding:9px 16px;font-weight:700;box-shadow:0 8px 30px rgba(0,0,0,.25);animation:pop .15s;font-size:.92em;max-width:92vw} #toast div.bad{background:var(--bad)} #toast div.ok{background:var(--ok)}
@media (max-width:860px){#toast{bottom:calc(76px + var(--sab))}}
.brand-img{width:24px;height:24px} .auth-logo{width:40px;height:40px;vertical-align:-10px;margin-right:6px}
.kids-cheer{font-size:2.6em;text-align:center;animation:cheer .9s ease-out forwards} @keyframes cheer{0%{transform:scale(.6);opacity:0}30%{transform:scale(1.15);opacity:1}100%{transform:scale(1);opacity:0}}
.ed-kids .ti .meta,.ed-senior .ti .meta{font-size:.9em}
.ed-senior input,.ed-senior select,.ed-senior textarea{border-width:2px}
.hint{font-size:.82em;color:var(--mu);margin-top:4px;line-height:1.5}
.pill-row{display:flex;gap:6px;flex-wrap:wrap;margin:-4px 0 12px} .pill-row button{border-radius:999px;padding:5px 11px;font-weight:700;background:var(--sf);border:1px solid var(--line2);color:var(--mu)} .pill-row button.on{background:var(--p);color:#fff;border-color:var(--p)}
.pill-row button .cnt{opacity:.75;font-size:.85em;margin-left:2px}
@media (max-width:560px){.pill-row{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:4px;scrollbar-width:none} .pill-row::-webkit-scrollbar{display:none} .pill-row button{flex:none;white-space:nowrap}}
.sw{position:relative;display:inline-block;width:40px;height:22px;flex:none;cursor:pointer} .sw input{position:absolute;opacity:0;width:0;height:0} .sw i{position:absolute;inset:0;background:var(--line2);border-radius:999px;transition:.15s} .sw i::after{content:'';position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;transition:.15s;box-shadow:0 1px 2px rgba(0,0,0,.2)}
.sw input:checked+i{background:var(--p)} .sw input:checked+i::after{left:21px} .sw input:focus-visible+i{outline:2px solid var(--p);outline-offset:2px} .sw.off i{opacity:.5}
/* ───── 소셜 로그인 · 동의 ───── */
.soc-row{display:flex;flex-direction:column;gap:8px;margin-bottom:14px}
.btn.soc{justify-content:center;padding:11px;font-size:1em;border-radius:var(--rc)}
.btn.soc.kakao{background:#fee500;border-color:#fee500;color:#191919} .btn.soc.kakao:hover{background:#f7dc00;color:#191919}
.btn.soc.google{background:#fff;border-color:var(--line2);color:var(--tx)} .btn.soc.google:hover{background:var(--sf2);border-color:var(--mu2);color:var(--tx)}
.or{display:flex;align-items:center;gap:10px;color:var(--mu2);font-size:.8em;margin-top:6px} .or::before,.or::after{content:'';flex:1;height:1px;background:var(--line)}
.agree{display:flex;gap:8px;align-items:flex-start;font-size:.92em;margin:-4px 0 12px;cursor:pointer} .agree input{width:18px;height:18px;margin-top:2px;flex:none;min-height:0} .agree a{color:var(--p);font-weight:700;text-decoration:underline} .req{color:var(--bad)}
.legal-note{font-size:.78em;color:var(--mu2);text-align:center;margin-top:10px} .legal-note a{color:var(--mu);text-decoration:underline}
.legal-links{text-align:center;margin-top:14px} .legal-links a{color:var(--p);font-weight:700}
/* ───── 검토 ───── */
.rv-card{border:1px solid var(--warn);background:#fffaf0;margin-bottom:14px} .rv-card h3 .rv-n{background:var(--warn);color:#fff;border-radius:999px;padding:1px 9px;font-size:.85em} .rv-card h3 .right a{color:var(--p);font-weight:700}
.rv-card .ti .meta{gap:6px;flex-wrap:wrap;align-items:center} .rv-card .btn.sm{padding:3px 9px}
.rv-banner{display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:var(--warnl);border:1px solid #f0cd8a;border-radius:var(--rc);padding:9px 12px;margin:0 0 12px} .rv-banner.ok{background:var(--okl);border-color:#9fd9bd}
.rv-ask select{max-width:220px}
.flag-stopped{opacity:.55} a.chip{text-decoration:none;cursor:pointer} a.chip:hover{filter:brightness(.95)}
.props .row input{flex:1;min-width:0} .props .row .btn.sm{padding:6px 9px}
.fbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:12px} .fbar select,.fbar input{width:auto;padding:7px 10px}
/* ───── 로드맵 ───── */
.rm-sum{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.rm{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;align-items:start} @media (max-width:1100px){.rm{grid-template-columns:repeat(2,minmax(0,1fr))}} @media (max-width:560px){.rm{grid-template-columns:1fr}}
.qcol{background:var(--sf2);border:1px solid var(--line);border-radius:var(--r);padding:10px;min-height:240px;display:flex;flex-direction:column;gap:8px}
.qcol.now{border-color:var(--p);box-shadow:0 0 0 2px var(--pl)} .qcol.over{outline:2px dashed var(--p);outline-offset:-2px}
.qcol-h{display:flex;align-items:center;gap:6px;padding:2px 4px;font-weight:900} .qcol-h small{font-weight:700;color:var(--mu)} .qcol-h .now-b{font-size:.7em;background:var(--p);color:#fff;border-radius:999px;padding:1px 8px}
.qcol-h .add{margin-left:auto;font-weight:900;color:var(--mu);width:28px;height:28px;border-radius:8px;font-size:1.1em} .qcol-h .add:hover{background:var(--pl);color:var(--p)}
.rc{background:var(--sf);border:1px solid var(--line);border-left:4px solid var(--line2);border-radius:var(--rc);padding:10px 12px;cursor:grab}
.rc:hover{border-color:var(--p)} .rc.drag{opacity:.4} .rc.st-doing{border-left-color:var(--p)} .rc.st-done{border-left-color:var(--ok)} .rc.st-hold{border-left-color:var(--warn)}
.rc .tt{font-weight:800;margin-bottom:4px} .rc.st-done .tt{color:var(--mu)} .rc .ds{color:var(--mu);font-size:.85em;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;margin-bottom:6px}
.rc .meta{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:.78em}
.more-grid{grid-template-columns:repeat(3,1fr)!important;margin-top:4px} .more-i{display:flex;flex-direction:column;align-items:center;gap:6px;padding:14px 6px;font-weight:800;text-align:center;font-size:.9em} .more-i .i{width:24px;height:24px;color:var(--p)}
@media (max-width:560px){.qcol{min-height:0} .qcol.now{order:-1}}
.co-tabs{max-width:560px} .co-tabs button{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* ───── 타임라인 ───── */
.gt-tools{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:0 0 10px}
.gt-tools .tabs{margin:0;padding:3px} .gt-tools .tabs button{padding:6px 14px;flex:none}
.gt-tools .hint{margin-left:auto;color:var(--mu);font-size:.82em}
.gt-scroll{position:relative;overflow:auto;background:var(--sf);border:1px solid var(--line);border-radius:var(--r);max-height:calc(100dvh - 290px);min-height:200px;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
.gt-inner{position:relative}
.gt-head{position:sticky;top:0;z-index:6;display:flex;background:var(--sf);border-bottom:1px solid var(--line)}
.gt-corner{position:sticky;left:0;z-index:7;flex:none;width:var(--lw);background:var(--sf);border-right:1px solid var(--line);display:flex;align-items:flex-end;padding:0 12px 8px;color:var(--mu);font-weight:800;font-size:.82em}
.gt-hd{position:relative;flex:none;height:54px}
.gt-mos{position:relative;height:26px;border-bottom:1px solid var(--line)}
.gt-mo{position:absolute;top:0;height:26px;font-weight:900;font-size:.82em;border-left:1px solid var(--line);white-space:nowrap}
.gt-mo em{position:sticky;left:calc(var(--lw) + 8px);display:inline-block;font-style:normal;line-height:26px;padding:0 8px}
.gt-tks{position:relative;height:28px}
.gt-tk{position:absolute;top:0;height:28px;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:.74em;color:var(--mu);line-height:1.1}
.gt-tk small{font-size:.8em;color:var(--mu2)} .gt-tk.sun{color:var(--bad)} .gt-tk.sat{color:var(--p)}
.gt-tk.td{background:var(--p);color:#fff;border-radius:7px;font-weight:900} .gt-tk.td small{color:#fff}
.gt-tk.wk{align-items:flex-start;padding-left:3px;border-left:1px solid var(--line)}
.gt-body{position:relative}
.gt-bg{position:absolute;top:0;bottom:0;z-index:0;pointer-events:none}
.gt-sh{position:absolute;top:0;bottom:0;background:rgba(20,30,60,.035)} .gt-sh.hol{background:rgba(217,57,66,.07)}
.gt-today{position:absolute;top:0;bottom:0;width:2px;margin-left:-1px;background:var(--p);opacity:.55}
.gt-row{position:relative;z-index:1;display:flex;height:42px;border-bottom:1px solid var(--line)}
.gt-row:hover .gt-track{background:rgba(59,92,228,.045)}
.gt-name{position:sticky;left:0;z-index:4;flex:none;width:var(--lw);display:flex;align-items:center;gap:6px;padding:0 10px 0 12px;background:var(--sf);border-right:1px solid var(--line);cursor:pointer;font-weight:700;font-size:.9em;min-width:0}
.gt-name:hover{background:var(--pl)}
.gt-nt{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap} .gt-nt.done{text-decoration:line-through;color:var(--mu)}
.gt-name .avatar{width:20px;height:20px;font-size:.62em}
.gt-row.sec{height:34px} .gt-row.sec .gt-name{background:var(--sf2);cursor:default;font-weight:900} .gt-row.sec .gt-name:hover{background:var(--sf2)}
.gt-row.sec .gt-name .cnt{margin-left:auto;color:var(--mu);font-weight:700;font-size:.85em} .gt-row.sec .gt-track{background:rgba(248,249,252,.7)}
.gt-track{position:relative;flex:none}
.gt-track.nd{cursor:copy} .gt-ph{position:absolute;top:50%;transform:translateY(-50%);color:var(--mu2);font-size:.78em;white-space:nowrap;pointer-events:none}
.gt-bar{position:absolute;top:9px;height:24px;min-width:12px;border-radius:7px;background:var(--sf2);background:color-mix(in srgb,var(--c) 24%,#fff);border:1.5px solid var(--c);cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none;z-index:2;overflow:hidden}
.gt-pg{position:absolute;left:0;top:0;bottom:0;background:var(--c);opacity:.5;pointer-events:none}
.gt-h{position:absolute;top:0;bottom:0;width:9px;cursor:ew-resize;z-index:3} .gt-h.l{left:0} .gt-h.r{right:0}
.gt-bar:hover .gt-h::after{content:'';position:absolute;top:6px;bottom:6px;left:3px;width:2px;border-radius:2px;background:var(--c)}
.gt-bar.done{--c:var(--ok)!important;opacity:.78} .gt-bar.over{border-color:var(--bad);box-shadow:0 0 0 2px rgba(217,57,66,.16)}
.gt-bar.fl-hold{background-image:repeating-linear-gradient(135deg,rgba(0,0,0,.07) 0 6px,transparent 6px 12px)} .gt-bar.fl-stopped{opacity:.5;filter:grayscale(1)}
.gt-bar.drag{cursor:grabbing;box-shadow:var(--sh);z-index:5} .gt-bar:focus-visible{outline:2px solid var(--p);outline-offset:1px}
.gt-lb{position:absolute;top:0;height:42px;display:flex;align-items:center;font-size:.76em;color:var(--mu);white-space:nowrap;pointer-events:none} .gt-lb.over{color:var(--bad);font-weight:800}
@media (pointer:coarse){.gt-h{width:16px}}
@media (max-width:560px){
  .gt-scroll{max-height:calc(100dvh - 330px);min-height:260px}
  .gt-tools .hint{display:none} .gt-row{height:46px} .gt-bar{top:11px} .gt-lb{height:46px}
  .gt-name{font-size:.8em;padding:0 6px 0 8px;gap:4px} .gt-name .avatar{display:none}
}
/* ───── 첨부 (v1.5: 파일·사진·동영상·음성·링크) ───── */
.att-tools{display:flex;gap:6px;flex-wrap:wrap;margin:4px 0 8px}
.att-tools .btn{padding:6px 10px;font-size:.86em;min-height:32px} .att-tools .btn .i{color:var(--p)} .att-tools .btn.rec{background:var(--badl);border-color:var(--bad);color:var(--bad)} .att-tools .btn.rec .i{color:var(--bad)}
.att-tools label.btn{cursor:pointer}
.att-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;margin:6px 0}
.att-card{border:1px solid var(--line);border-radius:var(--rc);background:var(--sf);overflow:hidden;display:flex;flex-direction:column;min-width:0;position:relative}
.att-card .th{display:block;aspect-ratio:4/3;background:var(--sf3);position:relative;overflow:hidden} .att-card .th img{width:100%;height:100%;object-fit:cover;display:block}
.att-card .th .pl{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#fff;background:rgba(0,0,0,.18)} .att-card .th .pl .i{width:34px;height:34px;filter:drop-shadow(0 2px 4px rgba(0,0,0,.4))}
.att-card .th .dur{position:absolute;right:6px;bottom:6px;background:rgba(0,0,0,.6);color:#fff;font-size:.7em;font-weight:800;border-radius:4px;padding:1px 5px;font-variant-numeric:tabular-nums}
.att-card .th.doc{background:var(--sf2);border-bottom:1px solid var(--line)} .att-card .th.doc img{object-position:50% 0}
.att-card .ico{aspect-ratio:4/3;background:var(--sf2);display:flex;align-items:center;justify-content:center;color:var(--p)} .att-card .ico .i{width:30px;height:30px}
.att-card .ico.link{background:var(--pl)} .att-card .ico.audio{background:var(--accl);color:var(--acct)} .att-card .ico.audio .i{width:26px;height:26px}
.att-card .nm{padding:6px 8px 2px;font-weight:700;font-size:.84em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap} .att-card .nm a:hover{color:var(--p)}
.att-card small{display:block;padding:0 8px 6px;color:var(--mu);font-size:.74em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.att-card .del{position:absolute;top:4px;right:4px;width:26px;height:26px;border-radius:6px;background:rgba(255,255,255,.9);color:var(--mu);display:inline-flex;align-items:center;justify-content:center;opacity:0} .att-card:hover .del,.att-card:focus-within .del{opacity:1} .att-card .del:hover{color:var(--bad);background:#fff}
@media (pointer:coarse){.att-card .del{opacity:1}}
.att-card .acts{display:flex;gap:4px;padding:0 6px 6px} .att-card .acts .btn{flex:1;justify-content:center;padding:4px 6px;font-size:.78em;min-height:28px}
.att-player{grid-column:1/-1;background:var(--sf2);border:1px solid var(--line);border-radius:var(--rc);padding:8px} .att-player video,.att-player audio{width:100%;display:block;border-radius:6px;background:#000} .att-player audio{background:transparent}
.att-player .tr{margin-top:8px;background:var(--sf);border:1px solid var(--line);border-radius:6px;padding:8px 10px;font-size:.92em;white-space:pre-wrap;max-height:200px;overflow:auto}
.att-drop{border:2px dashed var(--line2);border-radius:var(--rc);padding:10px;text-align:center;color:var(--mu);font-size:.82em;margin-top:4px} .att-drop.over{border-color:var(--p);background:var(--pl);color:var(--p)}
.att-prog{height:24px;border-radius:999px;background:var(--sf2);position:relative;overflow:hidden;margin-top:6px} .att-prog i{position:absolute;left:0;top:0;bottom:0;width:0;background:var(--p);opacity:.3;transition:width .15s}
.att-prog span{position:relative;display:block;text-align:center;font-size:.8em;line-height:24px;font-weight:800}
.att-pick{cursor:pointer}
.rec-box{display:flex;align-items:center;gap:10px;background:var(--badl);border:1px solid #f3b4b8;border-radius:var(--rc);padding:8px 12px;margin:6px 0} .rec-box .dot{width:10px;height:10px;border-radius:50%;background:var(--bad);animation:blink 1s infinite} @keyframes blink{50%{opacity:.25}}
.rec-box .tm{font-weight:900;font-variant-numeric:tabular-nums;font-size:1.1em}
/* ───── 외부 공유 ───── */
.modal.share{max-width:560px}
.shl{border:1px solid var(--line);border-radius:var(--rc);padding:12px;margin-bottom:10px;background:var(--sf2);display:grid;gap:8px}
.shl.off{opacity:.72}
.shl-url{display:flex;gap:6px;align-items:center} .shl-url input{flex:1;min-width:0;font-size:.86em;padding:7px 10px;background:var(--sf)}
.shl-opts{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:.88em}
.shl-opts label{display:inline-flex;align-items:center;gap:5px;font-weight:700;color:var(--tx);margin:0;cursor:pointer}
.shl-opts input[type=checkbox]{width:auto;padding:0;accent-color:var(--p);min-height:0}
.shl-opts .exp select{width:auto;padding:3px 8px;font-size:.95em;min-height:0}
.sh-empty{text-align:center;color:var(--mu);padding:18px 8px;border:1px dashed var(--line2);border-radius:var(--rc);margin-bottom:10px}
.field.ext{border:1px solid var(--line);border-radius:var(--rc);padding:10px 12px;background:var(--sf2)}
.ext-th{margin-top:10px;border-top:1px dashed var(--line);padding-top:8px}
.cmt.guest .body{background:var(--warnl)} .cmt.team .body{background:var(--pl)}
@media (max-width:560px){.shl-url .btn{padding:6px 9px}}
@media (max-width:700px){
 .tbl-wrap:has(>.tbl-tasks){overflow:visible}
 .tbl-tasks,.tbl-tasks tbody{display:block;border:0;box-shadow:none;background:transparent;border-radius:0}
 .tbl-tasks thead{display:none}
 .tbl-tasks tbody{display:flex;flex-direction:column;gap:6px}
 .tbl-tasks tr.rowc{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;position:relative;background:var(--sf);border:1px solid var(--line);border-radius:var(--rc);padding:10px 12px 10px 44px}
 .tbl-tasks tr.rowc td{display:block;padding:0;border:0;font-size:.82em;min-width:0;background:transparent}
 .tbl-tasks tr.rowc:hover td{background:transparent}
 .tbl-tasks tr.rowc td.e{display:none}
 .tbl-tasks td:first-child{position:absolute;left:12px;top:10px}
 .tbl-tasks td.b{flex:1 1 100%;font-size:.98em;line-height:1.4}
 .tbl-tasks td.c-cf::before{content:attr(data-l) " ";color:var(--mu2);font-weight:700}
}
/* ───── 알림 ───── */
.modal.ntm{max-width:460px}
.nt-list{display:flex;flex-direction:column;gap:6px;max-height:min(60vh,520px);overflow:auto;margin-top:4px}
.nt-i{display:flex;gap:10px;align-items:flex-start;text-align:left;width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:var(--rc);background:var(--sf);cursor:pointer;font:inherit;color:inherit}
.nt-i:hover{background:var(--sf2)} .nt-i.un{background:var(--pl);border-color:var(--pl2)}
.nt-t{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1} .nt-b{word-break:break-word;line-height:1.45} .nt-go{font-size:.78em;font-weight:800;color:var(--p)}
.np-tbl{width:100%;border-collapse:collapse;font-size:.92em} .np-tbl th,.np-tbl td{padding:8px 6px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle} .np-tbl th{color:var(--mu);font-size:.8em;font-weight:800} .np-tbl th.c,.np-tbl td.c{text-align:center;width:64px}
.np-tbl tr:last-child td{border-bottom:0} .np-tbl .d{color:var(--mu);font-size:.82em;display:block;font-weight:400}
.np-tbl.off{opacity:.45;pointer-events:none}
.np-dev{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 12px;border-radius:var(--rc);background:var(--sf2);border:1px solid var(--line);margin:8px 0}
.np-dev .st{font-weight:800} .np-dev .st.on{color:var(--ok)}
.alim-top{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:10px}
.alim-pv{background:#fee500;color:#3a1d1d;border-radius:12px;padding:12px 14px;line-height:1.6;max-width:360px;font-size:.92em;word-break:keep-all;overflow-wrap:anywhere}
.alim-need{margin:12px 0 8px} .alim-need ol{margin:6px 0 0;padding-left:20px;line-height:1.7}
.alim-n{width:92px;padding:6px 8px;text-align:right}
.alim-log{width:100%;border-collapse:collapse;font-size:.88em} .alim-log th,.alim-log td{padding:7px 8px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top} .alim-log th{color:var(--mu);font-size:.82em}
@media (max-width:700px){ .alim-log thead{display:none} .alim-log,.alim-log tbody,.alim-log tr{display:block} .alim-log tr{padding:8px 0;border-bottom:1px solid var(--line)} .alim-log td{display:inline-block;border:0;padding:2px 8px 2px 0} }
.tok-row{display:flex;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid var(--line);font-size:.92em} .tok-row:last-child{border-bottom:0} .tok-row code{font-family:ui-monospace,Menlo,monospace;background:var(--sf3);border-radius:4px;padding:1px 6px}
/* ───── 통계 · 안내 · 샘플 ───── */
.demo-bar{display:flex;align-items:center;gap:6px 10px;flex-wrap:wrap;background:#fff7e0;border:1px solid #f1dc9c;color:#6b4e00;border-radius:var(--rc);padding:7px 12px;margin:-4px 0 12px;font-size:.86em;line-height:1.45}
.demo-bar .grow{flex:1 1 240px} .demo-bar b{color:#4a3500}
.demo-bar .btn{padding:4px 10px;font-size:.92em;background:#fff;border-color:#e6cd86;color:#4a3500;min-height:0} .demo-bar .btn:hover{background:#fff1c7;border-color:#d8b44a}
.seg{display:inline-flex;background:var(--sf3);border:1px solid transparent;border-radius:var(--rc);padding:3px;gap:2px;max-width:100%;overflow:auto;scrollbar-width:none}
.seg button{padding:5px 11px;border-radius:6px;font-weight:700;color:var(--mu);white-space:nowrap;display:inline-flex;align-items:center;gap:5px} .seg button.on{background:var(--sf);color:var(--p);box-shadow:var(--sh)} .seg button .cnt{font-size:.8em;background:var(--sf3);border-radius:999px;padding:0 6px;color:var(--mu)} .seg button.on .cnt{background:var(--pl);color:var(--p)}
.st-kpis{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-bottom:14px}
.st-kpi{background:var(--sf);border:1px solid var(--line);border-radius:var(--r);padding:12px 14px;box-shadow:var(--sh);min-width:0}
.st-kpi .l{color:var(--mu);font-size:.82em;font-weight:700}
.st-kpi .n{font-size:1.9em;font-weight:800;line-height:1.15;margin-top:2px;font-variant-numeric:tabular-nums}
.st-kpi .n small{font-size:.45em;font-weight:700;color:var(--mu);margin-left:3px}
.st-kpi .d{color:var(--mu);font-size:.8em;margin-top:3px;line-height:1.4}
.st-kpi.bad .n{color:var(--bad)} .st-kpi.ok .n{color:var(--ok)}
.st-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px} .st-wide{grid-column:1/-1} .st-card{min-width:0}
.st-card h3{flex-wrap:wrap} .st-card h3 .right{font-weight:600;color:var(--mu);font-size:.82em}
.st-c{position:relative;width:100%}
.st-tbl th:not(:first-child),.st-tbl td.num{text-align:right} .st-tbl td.num{font-variant-numeric:tabular-nums}
@media (max-width:860px){.st-kpis{grid-template-columns:1fr 1fr}.st-kpis .st-kpi:last-child{grid-column:1/-1}.st-grid{grid-template-columns:1fr}}
.gd-sum{margin-bottom:6px} .gd-sum .stat{cursor:default}
.gd-list{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.gd-item{background:var(--sf);border:1px solid var(--line);border-radius:var(--r);padding:12px 14px;display:flex;flex-direction:column;gap:6px;min-width:0}
.gd-top{display:flex;align-items:flex-start;gap:8px} .gd-top .chip{flex:none;margin-top:2px}
.gd-req{font-weight:800;line-height:1.4} .gd-res{color:var(--mu);font-size:.92em;line-height:1.55}
.gd-item .btn{align-self:flex-start;margin-top:auto}
.gd-how ol{margin:4px 0 0;padding-left:20px;line-height:1.7;color:var(--tx)} .gd-how li{margin-bottom:2px}
@media (max-width:860px){.gd-list{grid-template-columns:1fr}}
.grid.c3.gd-sum{grid-template-columns:repeat(3,1fr);gap:10px} .gd-sum .stat{padding:12px 14px;min-width:0} .stat .s{color:var(--mu2);font-size:.75em;margin-top:2px;line-height:1.35}
@media (max-width:520px){.gd-sum .stat .n{font-size:1.6em}.gd-sum .stat .l{font-size:.8em}.gd-sum .stat{padding:10px 12px}}
/* ───── 회사 층 ───── */
.co-tag{font-size:.9em}
.co-bar{display:flex;align-items:center;gap:6px 10px;flex-wrap:wrap;background:#eef2ff;border:1px solid #c9d3fb;color:#2f3f8f;border-radius:var(--rc);padding:7px 12px;margin:-4px 0 12px;font-size:.86em;line-height:1.45}
.co-bar .grow{flex:1;min-width:200px}
.co-ic{width:32px;height:32px;border-radius:8px;background:var(--pl);color:var(--p);display:inline-flex;align-items:center;justify-content:center;flex:none}
.co-chips{display:flex;gap:4px;flex-wrap:wrap;margin-top:4px}
.member.co-m{flex-wrap:wrap} .member.co-m select{min-width:0}
.co-crumb a{color:var(--p);font-weight:800}
.co-pend{border-color:#f1dc9c;background:#fffaf0}
.co-bdg{background:var(--bad)!important;color:#fff!important;font-weight:800}
.more-i .co-bdg{margin-left:6px;vertical-align:middle}
/* ───── 대시보드 (v1.5): 한 화면 ───── */
.dash{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:12px}
.dash > *{min-width:0}
.kpis{grid-column:1/-1;display:grid;grid-template-columns:repeat(6,1fr);background:var(--sf);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;box-shadow:var(--sh)}
.kpi{padding:10px 14px;border-right:1px solid var(--line);display:flex;flex-direction:column;gap:1px;min-width:0;cursor:pointer;text-align:left;position:relative}
.kpi:last-child{border-right:0} .kpi:hover{background:var(--sf2)}
.kpi .n{font-size:1.65em;font-weight:800;line-height:1.1;font-variant-numeric:tabular-nums;letter-spacing:-.02em} .kpi .l{color:var(--mu);font-size:.78em;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kpi.bad .n{color:var(--bad)} .kpi.warn .n{color:var(--warn)} .kpi.ok .n{color:var(--ok)} .kpi.p .n{color:var(--p)} .kpi.acc .n{color:var(--acct)}
.kpi.on{background:var(--pl)} .kpi.on::after{content:'';position:absolute;left:0;right:0;bottom:0;height:3px;background:var(--p)}
.pn{background:var(--sf);border:1px solid var(--line);border-radius:var(--r);display:flex;flex-direction:column;min-height:0;box-shadow:var(--sh)}
.pn-h{display:flex;align-items:center;gap:8px;padding:9px 12px;border-bottom:1px solid var(--line);font-weight:800;min-height:42px}
.pn-h .i{color:var(--p)} .pn-h .cnt{color:var(--mu);font-weight:700;font-size:.85em} .pn-h .right{display:flex;gap:4px;align-items:center}
.pn-h a.lnk{font-size:.82em;color:var(--p);font-weight:700}
.pn-b{padding:8px 10px;overflow:auto;flex:1;min-height:0;max-height:var(--pnh,380px)}
.pn-tabs{display:flex;gap:2px;padding:6px 8px 0;border-bottom:1px solid var(--line)}
.pn-tabs button{padding:6px 10px;font-weight:700;color:var(--mu);border-bottom:2px solid transparent;margin-bottom:-1px;font-size:.9em;display:inline-flex;align-items:center;gap:5px;white-space:nowrap} .pn-tabs button.on{color:var(--p);border-color:var(--p)}
.pn-tabs button .cnt{font-size:.8em;background:var(--sf3);border-radius:999px;padding:0 6px;color:var(--mu)} .pn-tabs button.on .cnt{background:var(--pl);color:var(--p)}
.pn .tl{gap:4px} .pn .ti{padding:6px 8px;min-height:38px;border-color:transparent;background:transparent} .pn .ti:hover{background:var(--sf2);border-color:var(--line)}
.pn .empty{padding:16px 10px;border:0;background:transparent}
.pn.pins{grid-column:span 5} .pn.my{grid-column:span 4} .pn.today{grid-column:span 3} .pn.team{grid-column:span 6} .pn.acts{grid-column:span 6} .pn.wide{grid-column:1/-1}
.pn.pins{border-top:3px solid var(--acc)} .pn.pins .pn-h .i{color:var(--acc)}
.pin-it{display:flex;align-items:center;gap:8px;padding:7px 8px;border-radius:var(--rc);cursor:pointer;border-left:3px solid var(--line2);margin-bottom:4px;background:var(--sf2)}
.pin-it:hover{background:var(--pl)} .pin-it.over{border-left-color:var(--bad)} .pin-it.today{border-left-color:var(--warn)} .pin-it.done,.pin-it.past{opacity:.6;border-left-color:var(--ok)}
.pin-it .t{flex:1;min-width:0} .pin-it .t b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:700} .pin-it .t small{display:block;color:var(--mu);font-size:.78em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pin-it .k{font-size:.72em;font-weight:800;color:var(--mu2);flex:none;width:34px;text-align:center;border:1px solid var(--line);border-radius:5px;padding:1px 0}
.pin-it .due{font-size:.8em;flex:none}
.pin-it .pin-btn{width:24px;height:24px}
.ev-row{display:flex;align-items:center;gap:8px;padding:6px 6px;border-radius:var(--rc);font-size:.9em;cursor:pointer} .ev-row:hover{background:var(--sf2)}
.ev-row .when{width:58px;flex:none;font-weight:800;font-size:.82em;color:var(--mu);font-variant-numeric:tabular-nums} .ev-row .when.now{color:var(--p)}
.ev-row .ev{font-size:.84em;font-weight:700;border-radius:6px;padding:2px 8px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}
.mrow{display:grid;grid-template-columns:1fr auto auto auto;gap:10px;align-items:center;padding:6px 6px;border-bottom:1px solid var(--line);font-size:.9em} .mrow:last-child{border-bottom:0}
.mrow .nm{display:flex;align-items:center;gap:8px;min-width:0;font-weight:700} .mrow .nm span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mrow .v{font-variant-numeric:tabular-nums;color:var(--mu);font-weight:700;min-width:36px;text-align:right} .mrow .v.bad{color:var(--bad)} .mrow .v.ok{color:var(--ok)} .mrow .v b{color:var(--tx)}
.mhead{display:grid;grid-template-columns:1fr auto auto auto;gap:10px;padding:2px 6px 6px;font-size:.74em;color:var(--mu2);font-weight:800} .mhead span:not(:first-child){min-width:36px;text-align:right}
.prow{padding:6px 6px;border-bottom:1px solid var(--line)} .prow:last-child{border-bottom:0} .prow .row{font-size:.9em} .prow .prog{margin-top:4px;height:5px}
.quick-sheet .seg{margin-bottom:10px}
@media (max-width:1180px){.pn.pins{grid-column:span 6} .pn.my{grid-column:span 6} .pn.today{grid-column:span 6} .pn.team{grid-column:span 6} .pn.acts{grid-column:span 6}}
@media (max-width:860px){
  .dash{display:flex;flex-direction:column;gap:10px} .pn-b{max-height:none}
  .kpis{grid-template-columns:repeat(3,1fr)} .kpi{padding:8px 10px;border-bottom:1px solid var(--line)} .kpi:nth-child(3n){border-right:0} .kpi:nth-child(n+4){border-bottom:0} .kpi .n{font-size:1.4em}
  .pn.my .pn-b{max-height:50dvh}
}
/* 회사 전체 현황 */
.ov-teams{width:100%;border-collapse:collapse;font-size:.9em} .ov-teams th,.ov-teams td{padding:7px 8px;border-bottom:1px solid var(--line);text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap} .ov-teams th{color:var(--mu);font-size:.78em;font-weight:800}
.ov-teams th:first-child,.ov-teams td:first-child{text-align:left} .ov-teams tr:last-child td{border-bottom:0} .ov-teams tr.clk{cursor:pointer} .ov-teams tr.clk:hover td{background:var(--sf2)}
.ov-teams td.tn{font-weight:800;max-width:200px;overflow:hidden;text-overflow:ellipsis} .ov-teams .hb{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px;vertical-align:-1px} .hb.ok{background:var(--ok)} .hb.warn{background:var(--acc)} .hb.bad{background:var(--bad)}
.ov-teams td.bad{color:var(--bad);font-weight:800}
.ov-card{display:flex;flex-direction:column;gap:4px;padding:9px 10px;border:1px solid var(--line);border-radius:var(--rc);margin-bottom:6px;cursor:pointer} .ov-card:hover{border-color:var(--p)}
.ov-card .nm{font-weight:800;display:flex;align-items:center;gap:6px} .ov-card .nums{display:flex;gap:10px;font-size:.82em;color:var(--mu);flex-wrap:wrap} .ov-card .nums b{color:var(--tx)} .ov-card .nums .bad{color:var(--bad)}
/* 할 일 상세(v1.5): PC 2열(본문 | 속성), 폰 탭 */
.modal.task{max-width:960px;padding:0;overflow:hidden}
.tk-h{display:flex;align-items:flex-start;gap:8px;padding:14px 16px 8px}
.tk-h .chk{width:28px;height:28px;margin-top:3px} .tk-h .ttitle{flex:1;min-width:0}
.tk-body{display:grid;grid-template-columns:1fr 296px;min-height:0}
.tk-main{padding:0 16px 16px;min-width:0;border-right:1px solid var(--line)}
.tk-side{padding:10px 14px 16px;background:var(--sf2);min-width:0}
.tk-tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);margin:0 0 12px;overflow:auto;scrollbar-width:none}
.tk-tabs button{padding:8px 11px;font-weight:700;color:var(--mu);border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap;display:inline-flex;align-items:center;gap:5px} .tk-tabs button.on{color:var(--p);border-color:var(--p)} .tk-tabs button .cnt{font-size:.78em;background:var(--sf3);border-radius:999px;padding:0 6px;color:var(--mu)} .tk-tabs button.on .cnt{background:var(--pl);color:var(--p)}
.tk-pane{display:none} .tk-pane.on{display:block}
.tk-side .prop{display:grid;grid-template-columns:72px 1fr;gap:6px;align-items:center;margin-bottom:7px} .tk-side .prop label{font-size:.78em;font-weight:800;color:var(--mu);margin:0}
.tk-side .prop select,.tk-side .prop input{padding:6px 9px;min-height:34px;font-size:.94em;background:var(--sf)} .tk-side .prop .row{gap:4px}
.tk-side .sum{display:none}
.tk-meta{color:var(--mu);font-size:.8em;margin-top:10px;line-height:1.5}
.tk-acts{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px;padding-top:10px;border-top:1px solid var(--line)}
.tk-rv{margin-bottom:10px}
@media (max-width:860px){
  .modal.task{max-width:none} .tk-body{grid-template-columns:1fr} .tk-main{border-right:0;padding:0 12px 12px} .tk-side{padding:4px 12px 12px;background:var(--sf)}
  .tk-side{display:none} .tk-side.on{display:block} .tk-h{padding:12px 12px 6px}
  .tk-sum{display:flex;gap:6px;flex-wrap:wrap;padding:0 12px 8px} .tk-sum .chip{font-size:.74em}
}
@media (min-width:861px){.tk-sum{display:none} .tk-tabs .m-tab{display:none}}
.tk-h .pin-btn{margin-top:3px}
/* 큰 글씨 모드 · 아이들 모드 보정 */
.ed-senior .kpi .n{font-size:1.9em} .ed-senior .nav a{min-height:42px} .ed-kids .pn,.ed-kids .card{border-radius:var(--r)}

/* ───── v1.5b(2026-10-22): PC «오늘» 한 화면(.dash.fit) · 회사 현황 2열 · 잔손질 ───── */
@media (min-width:861px){
  .main:has(> .dash.fit){display:flex;flex-direction:column;overflow:hidden;padding-bottom:16px}
  .main:has(> .dash.fit) > :not(.dash){flex:none}
  .main:has(> .dash.fit) > .page-h{margin-bottom:10px}
  .main:has(> .dash.fit) > .dash.fit{flex:1 1 auto;min-height:0;grid-template-rows:auto minmax(0,1fr) minmax(0,1fr);grid-auto-rows:minmax(0,1fr)}
  .main:has(> .dash.fit) > .dash.fit.one{grid-template-rows:auto minmax(0,1fr)}
  .dash.fit .pn-b{max-height:none}
}
.nav .cnt{flex:none;white-space:nowrap}
.pn-tabs{overflow-x:auto;scrollbar-width:none} .pn-tabs::-webkit-scrollbar{display:none} .pn-tabs button{flex:none;padding:6px 8px;font-size:.86em}
.pn .ti .tt{flex:1 1 40%}
.pn .ti .meta .pj{display:inline-flex;align-items:center;gap:4px;max-width:96px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tk-side .prop input[type=date]{flex:1;min-width:0} .tk-side .prop input[type=time]{flex:none;width:92px;max-width:92px;padding:6px 4px}
.ov-col{display:flex;flex-direction:column;gap:12px;min-width:0} .ov-col .pn{flex:none}
.ov-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.np-tbl td{padding:7px 8px}
@media (pointer:coarse){.att-drop{display:none}}
@media (max-width:860px){
  .m-hide{display:none!important}
  .demo-bar .grow{flex:1 1 100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .page-h{margin-bottom:10px} .page-h .sub{font-size:.85em}
  .pn .ti .meta .pj,.pn .ti .meta .pr-high,.pn .ti .meta .pr-low,.pn .ti .meta .rv-who{display:none}
}

/* ───── v1.5c(2026-10-22): 패널 행 2줄(제목 줄 + 정보 줄) · 마감 시간 칸 줄바꿈 ───── */
.pn .ti{flex-wrap:wrap;row-gap:2px;padding:6px 8px 7px}
.pn .ti .tt{flex:1 1 0;white-space:normal;overflow:visible;text-overflow:clip;line-height:1.3}
.pn .ti .meta{flex:1 1 100%;order:1;justify-content:flex-start;flex-wrap:nowrap;overflow:hidden;white-space:nowrap;font-size:.76em} .pn .ti .chk ~ .meta{padding-left:31px}
.pn .ti .meta > *{flex:none} .pn .ti .meta .btn{font-size:1.15em;padding:3px 9px} .att-card .ico{position:relative} .pn .ti .meta .av{width:18px;height:18px;font-size:.62em} .pn .ti .meta .pj{max-width:150px}
.tk-side .prop .row{flex-wrap:wrap} .tk-side .prop input[type=date]{flex:1 1 100%} .tk-side .prop input[type=time]{flex:0 0 auto;width:auto;max-width:none}
@media (max-width:860px){.pn .ti .meta .pj{display:inline-flex} .pn .ti .meta .pr-high,.pn .ti .meta .pr-low,.pn .ti .meta .rv-who{display:inline}}

/* ───── v1.6 테마(2026-10-22 20:44 진백 «배경색을 바꾸어 깔끔하게»): 클린 화이트 캔버스 + 네이비 사이드. 구조는 v1.5 그대로 ───── */
.side{background:var(--nb);border-right:0;color:var(--ntx)}
.side .side-top{border-bottom:1px solid var(--nline)}
.side .brand{color:#fff} .side .brand b{color:var(--nacc)}
.side .ws-pick{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);color:#fff}
.side .ws-pick:hover{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.22)}
.side .ws-pick .ws-ic{background:rgba(255,255,255,.12);color:#fff} .side .ws-pick .ws-co{color:var(--ntx)} .side .ws-pick .i{color:var(--nic)}
.side .nav a,.side .nav .nav-h{color:var(--ntx)} .side .nav a .i{color:var(--nic)}
.side .nav a:hover{background:var(--nhov);color:#fff} .side .nav a:hover .i{color:#fff}
.side .nav a.on{background:var(--nact);color:#fff} .side .nav a.on .i{color:#fff} .side .nav a.on::before{background:var(--nacc)}
.side .nav .nav-h{color:var(--nic)} .side .nav .nav-h button{color:var(--ntx)} .side .nav .nav-h button:hover{background:var(--nhov);color:#fff}
.side .nav .cnt{background:rgba(255,255,255,.1);color:var(--ntx)} .side .nav .co-bdg{background:var(--bad)!important;color:#fff!important}
.side .nav .nav-bot{border-top:1px solid var(--nline)} .side .nav .mu{color:var(--nic)}
.side .nav{scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.18) transparent}
.auth{background:var(--sf2)} .auth .card{border:1px solid var(--line)}
.tabs button.on,.seg button.on{box-shadow:0 1px 2px rgba(18,24,40,.08)}
.kpis,.pn,.card,.stat,.st-kpi,.memo-new{box-shadow:none}
.pn.pins{border-top:2px solid var(--acc)}
.demo-bar{background:#fffbec;border-color:#efe1b0;color:#6a5200} .demo-bar .btn{border-color:#e4d090;background:#fff}
.co-bar{background:#f3f6ff;border-color:#d6dfff;color:#2b3c8f}
.fab{box-shadow:0 8px 22px rgba(47,84,235,.32)}
.rv-banner{border-color:#efd9a8} .rec-box{border-color:#f2b9bd}
.auth{min-height:100vh;min-height:100dvh}
.side .nav .nav-bot{position:sticky;bottom:0;background:var(--nb);padding-bottom:6px;margin-top:auto}
.side .nav a{min-height:34px;padding:6px 10px} .side .nav .nav-h{margin-top:10px}

/* ───── v1.6b 모바일 메인(2026-10-22 21:08 진백 «모바일에서 짤리고, 모바일 메인은 하나도 안잡힌것같다»): 네이비 상단바 + 인사 띠, 탭은 알약 줄바꿈, 360px·큰 글씨에서도 안 잘리게 ───── */
@media (max-width:860px){
  .top{background:var(--nb);border-bottom:0;color:#fff}
  .top .ws-pick .ws-nm{color:#fff} .top .ws-pick .ws-co{color:var(--ntx)} .top .ws-pick .ws-ic{background:rgba(255,255,255,.14);color:#fff} .top .ws-pick .i{color:var(--ntx)}
  .top .bell{border-color:rgba(255,255,255,.22);background:transparent;color:#fff} .top .bell .bdg{box-shadow:0 0 0 2px var(--nb)}
  .main:has(> .dash.fit){padding-top:0}
  .main:has(> .dash.fit) > .demo-bar,.main:has(> .dash.fit) > .co-bar{margin:0 -12px;border-radius:0;border:0;background:#222b47;color:#ffe3a3;padding:8px 14px 4px}
  .main:has(> .dash.fit) > .demo-bar b,.main:has(> .dash.fit) > .co-bar b{color:#ffd166} .main:has(> .dash.fit) > .demo-bar .btn,.main:has(> .dash.fit) > .co-bar .btn{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.22);color:#fff}
  .main:has(> .dash.fit) > .page-h{background:var(--nb);color:#fff;margin:0 -12px 0;padding:14px 16px 28px;border-radius:0 0 18px 18px}
  .main:has(> .dash.fit) > .page-h h1{font-size:1.2em;color:#fff} .main:has(> .dash.fit) > .page-h .sub{color:var(--ntx);margin-top:0;font-size:.84em}
  .main:has(> .dash.fit) > .dash{margin-top:-16px}
  .kpi{padding:8px 10px} .kpi .n{font-size:1.3em} .kpi .l{font-size:.74em;white-space:normal;line-height:1.2}
  .pn-h{padding:9px 12px;font-size:.98em;min-height:40px}
  .pn .ti .meta{white-space:normal;flex-wrap:wrap;row-gap:2px;overflow:visible}
  .page-h .sub{font-size:.84em}
}
@media (max-width:600px){
  .pn-tabs{flex-wrap:wrap;gap:6px;padding:8px 10px;overflow:visible;border-bottom:1px solid var(--line)}
  .pn-tabs button{padding:3px 10px;border:1px solid var(--line);border-radius:999px;font-size:.84em;margin:0;background:var(--sf);min-height:28px}
  .pn-tabs button.on{background:var(--pl);border-color:var(--p);color:var(--p)} .pn-tabs button .cnt{padding:0 5px}
  .tk-tabs{flex-wrap:wrap;gap:6px;overflow:visible;padding-bottom:8px}
  .tk-tabs button{padding:3px 10px;border:1px solid var(--line);border-radius:999px;font-size:.88em;margin:0;min-height:28px} .tk-tabs button.on{background:var(--pl);border-color:var(--p)}
  .pin-it{flex-wrap:wrap} .pin-it .t{flex:1 1 60%}
  .mrow{grid-template-columns:1fr auto auto auto;gap:6px} .mrow .v{min-width:30px}
}

/* ───── v1.7 다듬기(2026-10-22 22:53 진백 «전체적으로 아마추어 느낌»): 굵기 절제·색 절제·모서리 통일·폼 컨트롤 통일·탭 한 줄 ───── */
body{font-weight:400}
.b,.chip,.btn,.due,.pr-urgent,.pr-high,.pin-it .t b,.ev-row .when,.act b,.nt-i b,.cmt .who b,.ov-card .nm,.att-card .nm,.tabs button.on,.seg button.on,.field label,.tk-side .prop label,.mhead,.ov-teams th,.np-tbl th,.col-h,.qcol-h,.sec-t,.edpick .nm,.ws-pick .ws-nm,.ttitle,.pn-h,.card h3,.modal-h .b,.nav .nav-h{font-weight:700}
.page-h h1,.kpi .n,.stat .n,.st-kpi .n,.brand,.auth .logo{font-weight:800}
.ti .tt,.kc .tt,.mrow .nm,.ev-row .ev,.pin-it .t small,.tabs button,.seg button,.pill-row button,.sheet-grid button,.sheet-grid a,.sheet-grid label,.member .grow,.rc .tt{font-weight:400}
.side .nav a{font-weight:400} .side .nav a.on{font-weight:700} .nav .cnt{font-weight:400;font-size:.72em}
.pn-tabs button,.tk-tabs button{font-weight:400} .pn-tabs button.on,.tk-tabs button.on{font-weight:700}
.pn-h .cnt,.card h3 .right,.pn-tabs button .cnt,.tk-tabs button .cnt,.kpi .l,.page-h .sub{font-weight:400}
.kpi .l{color:var(--mu)} .kpi.p .n,.kpi.ok .n{color:var(--tx)}
.pn.pins{border-top:1px solid var(--line)} .pn.pins .pn-h .i{color:var(--acc)}
.chip,.nav .cnt,.pn-tabs button .cnt,.tk-tabs button .cnt,.seg button .cnt,.pill-row button .cnt,.pin-it .k{border-radius:6px}
.chip{padding:1px 7px;font-size:.76em}
select{appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238d95a6' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='m6 9 6 6 6-6'/></svg>");background-repeat:no-repeat;background-position:right 9px center;background-size:16px;padding-right:30px}
input,select,textarea{min-height:36px;padding:7px 10px}
.btn{min-height:36px} .btn.sm{min-height:30px} .btn.ic{width:36px} .btn.ic.sm{width:30px}
.tk-side .prop select,.tk-side .prop input{min-height:34px}
.rv-ask .row select{flex:1}
.pn-tabs button .t-s,.tk-tabs button .t-s{display:none}
.pn .ti .meta .acts{display:inline-flex;gap:6px;margin-left:auto;white-space:nowrap}
.pn-h{font-size:.98em} .pn-h .cnt{font-size:.84em}
.kpi .n{letter-spacing:-.01em}
.demo-bar{font-size:.84em}
.ws-pick .ws-co{font-weight:400}
.demo-bar{background:var(--sf2);border-color:var(--line);color:var(--mu)} .demo-bar b{color:var(--tx)} .demo-bar .btn{background:var(--sf);border-color:var(--line2);color:var(--tx)} .demo-bar .btn:hover{color:var(--p);border-color:var(--p)}
.co-bar{background:var(--sf2);border-color:var(--line);color:var(--mu)} .co-bar b{color:var(--tx)}
.act a{color:var(--tx)} .act a:hover{color:var(--p)} .act .vb{color:var(--mu)}
@media (max-width:860px){.main:has(> .dash.fit) > .demo-bar,.main:has(> .dash.fit) > .co-bar{color:var(--ntx)} .main:has(> .dash.fit) > .demo-bar b,.main:has(> .dash.fit) > .co-bar b{color:#fff} .main:has(> .dash.fit) > .demo-bar .btn,.main:has(> .dash.fit) > .co-bar .btn{color:#fff;background:none;border:0}}
@media (max-width:860px){
  .main:has(> .dash.fit) > .page-h{padding:12px 16px 24px} .main:has(> .dash.fit) > .page-h h1{font-size:1.08em;font-weight:700}
  .main:has(> .dash.fit) > .demo-bar,.main:has(> .dash.fit) > .co-bar{padding:6px 14px 2px;font-size:.8em;gap:2px 12px}
  .main:has(> .dash.fit) > .demo-bar .btn,.main:has(> .dash.fit) > .co-bar .btn{background:none;border:0;padding:0;color:#fff;text-decoration:underline;text-underline-offset:3px;text-decoration-color:rgba(255,255,255,.45);min-height:0;font-size:1em}
  .kpi .n{font-size:1.25em} .kpi .l{font-size:.72em}
}
@media (max-width:600px){
  .pn-tabs{flex-wrap:nowrap;gap:0;padding:2px 6px 0;overflow-x:auto;scrollbar-width:none;border-bottom:1px solid var(--line)}
  .pn-tabs button{padding:8px 8px;border:0;border-bottom:2px solid transparent;border-radius:0;font-size:.88em;margin:0 0 -1px;background:transparent;min-height:36px}
  .pn-tabs button.on{background:transparent;border-color:var(--p);color:var(--p)}
  .pn-tabs button .t-l{display:none} .pn-tabs button .t-s{display:inline}
  .tk-tabs{flex-wrap:nowrap;gap:0;overflow-x:auto;padding-bottom:0}
  .tk-tabs button{padding:8px 10px;border:0;border-bottom:2px solid transparent;border-radius:0;font-size:.92em;margin:0 0 -1px;min-height:38px;background:transparent} .tk-tabs button.on{background:transparent;border-color:var(--p)}
}

/* ───── v1.12 일정 보드(내 공간) · 터치 끌기 (2026-10-25 진백 «개인 일정관리를 트렐로 카드처럼») — 클래스는 pb-/pd- 로만(유틸 클래스 함정 #115·#118) ───── */
.ev.k-appt{background:var(--okl);color:var(--ok)}
.pb-board{display:flex;gap:12px;overflow-x:auto;align-items:flex-start;padding:2px 2px 14px;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}
.pb-col{flex:1 0 248px;max-width:330px;background:var(--sf2);border:1px solid var(--line);border-radius:var(--r);display:flex;flex-direction:column;max-height:calc(100dvh - 196px);scroll-snap-align:start;transition:background .12s}
.pb-col.pd-over{outline:2px dashed var(--p);outline-offset:-2px;background:var(--pl)}
.pb-h{display:flex;align-items:baseline;gap:6px;padding:10px 12px 8px;min-width:0}
.pb-nm{font-weight:700;flex:none}
.pb-sub{color:var(--mu);font-size:.78em;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pb-n{margin-left:auto;flex:none;color:var(--mu);font-size:.76em;background:var(--sf);border:1px solid var(--line);border-radius:6px;padding:0 6px;font-variant-numeric:tabular-nums}
.pb-today{border-color:var(--p)} .pb-today .pb-nm{color:var(--p)}
.pb-over .pb-nm{color:var(--bad)} .pb-over{border-color:#f3c6c9}
.pb-list{flex:1;overflow:auto;display:flex;flex-direction:column;gap:7px;padding:0 10px 4px;min-height:46px}
.pb-empty{color:var(--mu2);font-size:.8em;text-align:center;padding:12px 6px;border:1px dashed var(--line2);border-radius:var(--rc)}
.pb-card{background:var(--sf);border:1px solid var(--line);border-radius:var(--rc);padding:8px 10px;cursor:grab;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;position:relative}
.pb-card:hover{border-color:var(--p)}
.pb-card.ev{border-left:3px solid var(--pb-c,var(--p));padding-left:9px}
.pb-card.done{opacity:.5} .pb-card.done .pb-tt{text-decoration:line-through}
.pb-card.pb-hl{box-shadow:0 0 0 3px var(--pl2);border-color:var(--p)}
.pb-top{display:flex;align-items:flex-start;gap:8px}
.pb-top .chk{margin-top:1px}
.pb-tt{flex:1;min-width:0;line-height:1.4;overflow-wrap:anywhere}
.pb-k{flex:none;font-size:.7em;font-weight:700;border-radius:6px;padding:1px 6px;margin-top:2px;white-space:nowrap}
.pb-meta{display:flex;flex-wrap:wrap;align-items:center;gap:3px 8px;margin-top:5px;padding-left:30px;font-size:.76em;color:var(--mu)}
.pb-card.ev .pb-meta{padding-left:0}
.pb-meta .pb-time{font-weight:700;color:var(--tx);font-variant-numeric:tabular-nums}
.pb-meta .pb-late{color:var(--bad);font-weight:700}
.pb-meta .mi{display:inline-flex;align-items:center;gap:2px} .pb-meta .i{width:1em;height:1em}
.pb-pj{display:inline-flex;align-items:center;gap:4px;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap} .pb-pj i{width:7px;height:7px;border-radius:50%;flex:none}
.pb-add{display:flex;gap:6px;align-items:center;padding:6px 10px 10px}
.pb-add input{min-height:34px;padding:6px 10px;background:var(--sf);font-size:.88em}
.pb-add input:disabled{opacity:.6}
.pb-evbtn{flex:none;width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--rc);border:1px solid var(--line2);background:var(--sf);color:var(--mu)}
.pb-evbtn:hover{color:var(--p);border-color:var(--p)}
.pb-dot{color:var(--mu2);margin:0 1px}
.pd-ghost{position:fixed;left:0;top:0;z-index:80;pointer-events:none;margin:0;box-shadow:0 14px 30px rgba(18,24,40,.24);opacity:.96;will-change:transform}
.pd-lift{opacity:.35}
.col.pd-over{outline:2px dashed var(--p);outline-offset:-2px}
body.pd-on,body.pd-on *{cursor:grabbing!important}
body.pd-on .main{overscroll-behavior:contain}
body.pd-on .pb-board{scroll-snap-type:none}
@media (pointer:coarse){.kc{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}}
@media (max-width:860px){
  .pb-board{margin:0 -12px;padding:2px 12px 14px;scroll-padding:0 12px;gap:10px}
  .pb-col{flex:0 0 84vw;max-width:none;max-height:none}
  .pb-list{overflow:visible}
  .pb-add input{font-size:16px}
}

/* ───── v1.13 공지 · 고르기 (2026-10-25 — 팀 공지 + 웹런 지도 연결 고르기) — 클래스는 an- 으로만(유틸 클래스 함정 #115·#118) ───── */
.side .nav .an-bdg{background:var(--p)!important;color:#fff!important;font-weight:800}
.an-band{width:100%;display:flex;align-items:center;gap:8px;margin-top:6px;padding:8px 12px;border:1px solid var(--line);border-radius:var(--rc);background:var(--sf);color:var(--tx);font-size:.9em;min-width:0}
.an-band:hover{border-color:var(--p)}
.an-band .i{width:18px;height:18px;color:var(--p);flex:none}
.an-band.un{border-color:var(--p);background:var(--pl)}
.an-b-k{flex:none;font-weight:700;color:var(--p)}
.an-b-t{flex:1;min-width:0;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.an-b-meta{flex:none;color:var(--mu);font-size:.92em}
.an-b-more{flex:none;font-size:.78em;font-weight:700;color:#fff;background:var(--p);border-radius:999px;padding:1px 8px}
.an-b-go{flex:none;color:var(--mu2);font-size:1.25em;line-height:1}
.an-list{display:flex;flex-direction:column;gap:10px;max-width:880px}
.an-card{display:block;padding:14px 16px;border:1px solid var(--line);border-radius:var(--r);background:var(--sf);color:var(--tx)}
.an-card:hover{border-color:var(--p)}
.an-card.un{border-left:3px solid var(--p);padding-left:14px}
.an-c-top{display:flex;align-items:center;gap:8px;min-width:0}
.an-c-t{font-weight:700;font-size:1.03em;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.an-new{flex:none;font-size:.72em;font-weight:700;color:var(--p);background:var(--pl);border-radius:6px;padding:1px 6px}
.an-pin{display:inline-flex;align-items:center;gap:2px;flex:none;font-size:.74em;font-weight:700;color:var(--warn)}
.an-pin .i{width:14px;height:14px}
.an-c-x{margin-top:6px;color:var(--mu);font-size:.9em;line-height:1.55;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.an-c-m{display:flex;flex-wrap:wrap;gap:4px 12px;margin-top:8px;color:var(--mu2);font-size:.8em}
.an-c-pk{color:var(--p);font-weight:700}
.page-h h1 .an-h-t{min-width:0;overflow-wrap:anywhere}
.page-h h1 .an-pin-h{display:inline-flex;color:var(--warn)} .page-h h1 .an-pin-h .i{color:var(--warn)}
.an-reads{cursor:help;text-decoration:underline dotted;text-underline-offset:3px}
.an-body{max-width:880px;padding:16px 18px;border:1px solid var(--line);border-radius:var(--r);background:var(--sf);line-height:1.75;overflow-wrap:anywhere;margin-bottom:14px}
.an-body a{color:var(--p);text-decoration:underline;text-underline-offset:2px}
.an-pick{max-width:880px;border:1px solid var(--line);border-radius:var(--r);background:var(--sf);padding:14px 16px 16px}
.an-p-h{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;margin-bottom:6px}
.an-p-t{font-weight:800;font-size:1.05em;margin-right:2px}
.an-chip{font-size:.78em;color:var(--mu);background:var(--sf2);border:1px solid var(--line);border-radius:999px;padding:2px 9px;white-space:nowrap}
.an-mine{font-size:.86em;color:var(--mu);white-space:nowrap} .an-mine b{color:var(--p)}
.an-tabs{margin-left:auto;display:inline-flex;border:1px solid var(--line2);border-radius:8px;overflow:hidden;flex:none}
.an-tabs button{padding:5px 11px;font-size:.82em;background:var(--sf);color:var(--mu);border:0;cursor:pointer}
.an-tabs button.on{background:var(--p);color:#fff}
.an-src{font-size:.8em;color:var(--mu2);margin:2px 0 6px;line-height:1.5} .an-src a{color:var(--mu);text-decoration:underline;text-underline-offset:2px}
.an-closed{font-size:.85em;color:var(--warn);background:var(--warnl);border-radius:var(--rc);padding:6px 10px;margin:4px 0 6px}
.an-lnk{border:0;background:none;padding:0;min-height:0;width:auto;color:var(--p);text-decoration:underline;text-underline-offset:2px;cursor:pointer;font:inherit}
.an-g{margin:14px 0 6px;font-size:.82em;font-weight:700;color:var(--mu)} .an-g span{font-weight:400;color:var(--mu2)}
.an-opts{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:var(--rc);overflow:hidden}
.an-opt{display:flex;align-items:center;gap:10px;padding:9px 12px;border-top:1px solid var(--line);background:var(--sf)}
.an-opt:first-child{border-top:0}
.an-opt.on{background:var(--pl)}
.an-ck{flex:none;position:relative;width:22px;height:22px;cursor:pointer;margin:0}
.an-ck input{position:absolute;inset:0;width:100%;height:100%;min-height:0;margin:0;padding:0;opacity:0;cursor:pointer;z-index:1}
.an-box{position:absolute;inset:0;border:2px solid var(--line2);border-radius:6px;background:var(--sf);transition:background .1s,border-color .1s}
.an-ck input:checked + .an-box{background:var(--p);border-color:var(--p)}
.an-ck input:checked + .an-box::after{content:'';position:absolute;left:6px;top:2px;width:6px;height:11px;border:solid #fff;border-width:0 2.5px 2.5px 0;transform:rotate(45deg)}
.an-ck input:disabled{cursor:not-allowed} .an-ck input:disabled + .an-box{opacity:.45}
.an-ck input:focus-visible + .an-box{outline:2px solid var(--p);outline-offset:2px}
.an-o-tx{flex:1;min-width:0}
.an-o-nm{font-weight:700;display:flex;flex-wrap:wrap;align-items:center;gap:3px 6px;line-height:1.4}
.an-o-ln{color:var(--mu);font-size:.85em;margin-top:2px;line-height:1.45}
.an-tag{font-size:.7em;font-weight:700;border-radius:5px;padding:1px 6px;white-space:nowrap}
.an-t-yt{background:#ffe7e7;color:#c62828} .an-t-sd{background:#e3f4e9;color:#1d7a3a} .an-t-ad{background:#e8eefc;color:#2f4fd1} .an-t-x{background:var(--sf2);color:var(--mu)}
.an-st{font-size:.7em;font-weight:700;color:var(--warn);background:var(--warnl);border-radius:5px;padding:1px 6px}
.an-o-who{flex:none;display:flex;align-items:center;min-width:28px;justify-content:flex-end}
.an-o-who .avatar.an-av{width:22px;height:22px;font-size:.64em;margin-left:-6px;border:2px solid var(--sf)} .an-o-who .avatar.an-av:first-child{margin-left:0}
.an-opt.on .an-o-who .avatar.an-av{border-color:var(--pl)}
.an-n{min-width:14px;margin-left:6px;font-weight:800;color:var(--p);font-size:.85em;text-align:right}
.an-more{font-size:.7em;color:var(--mu);margin-left:3px}
.an-go{flex:none;font-size:.8em;color:var(--mu);border:1px solid var(--line2);border-radius:7px;padding:3px 9px;white-space:nowrap;background:var(--sf)}
.an-go:hover{color:var(--p);border-color:var(--p)}
.an-go-x{flex:none;width:52px}
.an-hide{flex:none;width:26px;height:26px;min-height:0;padding:0;border:0;border-radius:50%;background:none;color:var(--mu2);font-size:1.1em;line-height:1;cursor:pointer}
.an-hide:hover{background:var(--badl);color:var(--bad)}
.an-hidden{margin-top:10px;font-size:.8em;color:var(--mu2);line-height:1.7} .an-hidden span{white-space:nowrap}
.an-rank{display:flex;flex-direction:column;gap:8px;margin-top:10px}
.an-rk{display:grid;grid-template-columns:minmax(120px,240px) 1fr 30px;align-items:center;gap:2px 10px;font-size:.9em}
.an-rk-nm{font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.an-rk.on .an-rk-nm{color:var(--p)}
.an-rk-bar{height:10px;background:var(--sf2);border-radius:999px;overflow:hidden} .an-rk-bar i{display:block;height:100%;background:var(--p);border-radius:999px;min-width:2px}
.an-rk-n{font-weight:800;color:var(--p);text-align:right}
.an-rk-who{grid-column:1 / -1;color:var(--mu2);font-size:.82em}
.an-rk.z{opacity:.5} .an-rk.z .an-rk-bar i{display:none}
.modal.an-modal{max-width:640px}
.an-ed .field textarea{min-height:120px}
.an-ed-h{font-weight:400;color:var(--mu2);font-size:.88em;margin-left:4px}
.an-ed-row{display:flex;flex-wrap:wrap;gap:8px 18px;align-items:center;margin:2px 0 12px;font-size:.92em}
.an-ed-row[hidden],.an-ed-map[hidden],.an-ed-man[hidden]{display:none}
.an-ed-row input[type=number]{width:70px;display:inline-block;margin:0 4px;min-height:32px;padding:4px 8px}
.an-ed-row input[type=date]{width:auto;display:inline-block;margin-left:6px;min-height:32px;padding:4px 8px}
.an-cb{display:inline-flex;align-items:center;gap:6px;cursor:pointer}
.an-ed input[type=checkbox],.an-ed input[type=radio]{width:auto;min-height:0;margin:0;accent-color:var(--p)}
.an-seg{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:.92em} .an-seg label{display:inline-flex;align-items:center;gap:5px;cursor:pointer;font-weight:400}
.an-ed-map{border:1px solid var(--line);border-radius:var(--rc);padding:8px 10px 10px;margin:-4px 0 12px;max-height:min(44vh,380px);overflow:auto;background:var(--sf2)}
.an-ed-st{font-size:.84em;color:var(--mu);margin-bottom:2px;line-height:1.6}
.an-ed-list .an-g{margin:10px 0 4px}
.an-ed-it{display:flex;align-items:baseline;gap:8px;padding:3px 2px;font-size:.9em;cursor:pointer;min-width:0}
.an-ed-it input{flex:none;transform:translateY(2px)}
.an-ed-it b{flex:none} .an-ed-it span{color:var(--mu);font-size:.88em;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.an-ed-man{margin:-4px 0 12px}
.an-scope{margin:0 0 8px;padding:0 0 8px;border-bottom:1px dashed var(--line)}
.an-scope[hidden]{display:none}
.an-ed-pk-i{flex:none;font-style:normal;font-size:.68em;font-weight:700;color:var(--ok);background:var(--okl);border-radius:5px;padding:0 5px;transform:translateY(-1px)}
.an-scope-sel{width:auto;min-height:0;display:inline-block;padding:0 2px;font:inherit;color:var(--p);background:none;border:0;border-bottom:1px solid var(--line2);border-radius:0;cursor:pointer}
@media (max-width:860px){
  .main:has(> .dash.fit) > .page-h .an-band{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.2);color:#fff;margin-top:10px}
  .main:has(> .dash.fit) > .page-h .an-band .i,.main:has(> .dash.fit) > .page-h .an-b-k{color:#ffd166}
  .main:has(> .dash.fit) > .page-h .an-b-meta,.main:has(> .dash.fit) > .page-h .an-b-go{color:var(--ntx)}
  .main:has(> .dash.fit) > .page-h .an-band.un{background:rgba(255,209,102,.14);border-color:rgba(255,209,102,.55)}
  .an-b-more{display:none}
  .an-band{flex-wrap:wrap;row-gap:2px}
  .an-b-meta{order:5;flex-basis:100%;padding-left:26px;font-size:.84em}
  .an-body,.an-pick{padding-left:12px;padding-right:12px}
  .an-opt{flex-wrap:wrap;gap:6px 10px;padding:10px}
  .an-o-tx{flex:1 1 calc(100% - 34px)}
  .an-o-who{margin-left:32px;justify-content:flex-start}
  .an-go{margin-left:auto} .an-go-x{display:none}
  .an-hide{position:absolute;right:6px;top:6px} .an-opt{position:relative}
  .an-opt .an-o-nm{padding-right:22px}
  .an-tabs{margin-left:0}
  .an-rk{grid-template-columns:minmax(0,1fr) 34% 24px}
}

/* ───────── v1.15 보드 — 트렐로 느낌 (2026-10-28) ───────── */
.main.pj-bgm{background:var(--pbg);background-color:#0c66e4}
.main.pj-bgm .page-h{background:rgba(0,0,0,.24);color:#fff;border-radius:12px;padding:10px 14px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.main.pj-bgm .page-h h1,.main.pj-bgm .page-h .sub{color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.25)}
.main.pj-bgm .page-h .chip{background:rgba(255,255,255,.22);color:#fff;border-color:transparent}
.main.pj-bgm .page-h .btn{background:rgba(255,255,255,.2);color:#fff;border-color:transparent;box-shadow:none}
.main.pj-bgm .page-h .btn:hover{background:rgba(255,255,255,.34)}
.main.pj-bgm .page-h .tabs{background:rgba(0,0,0,.2);border-color:transparent}
.main.pj-bgm .page-h .tabs button{color:#fff}
.main.pj-bgm .page-h .tabs button.on{background:#fff;color:var(--tx)}
.main.pj-bgm .pill-row button{background:rgba(255,255,255,.2);color:#fff;border-color:transparent}
.main.pj-bgm .pill-row button.on{background:#fff;color:var(--tx)}
.main.pj-bgm .col{background:#f1f2f4;border:none;border-radius:12px;box-shadow:0 1px 1px rgba(9,30,66,.25)}
.main.pj-bgm .add-col{background:rgba(255,255,255,.24);border:none;color:#fff}
.main.pj-bgm .add-col:hover{background:rgba(255,255,255,.36);color:#fff}
.main.pj-bgm .add-col.on{background:#f1f2f4;color:var(--tx)}
.main.pj-bgm .kc{border:none;box-shadow:0 1px 1px rgba(9,30,66,.25),0 0 1px rgba(9,30,66,.31)}
.main.pj-bgm .kc:hover{box-shadow:inset 0 0 0 2px var(--p)}
.kc .cover{display:block;width:calc(100% + 22px);max-width:none;margin:-9px -11px 8px;max-height:150px;object-fit:cover;border-radius:var(--rc) var(--rc) 0 0;background:var(--sf2)}
.kc .lbls{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:6px}
.lbl{display:inline-block;min-width:36px;max-width:100%;padding:1px 8px;border-radius:4px;font-size:.72em;font-weight:700;line-height:1.5;color:#172b4d;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lbl.pr-urgent{background:#c9372c;color:#fff} .lbl.pr-high{background:#e56910;color:#fff} .lbl.pr-low{background:#dcdfe4;color:#44546f}
.kc.file-over{box-shadow:inset 0 0 0 2px var(--p) !important;background:var(--pl)}
.kc.file-over::after{content:'여기에 놓으면 첨부돼요';display:block;font-size:.76em;font-weight:800;color:var(--p);margin-top:6px}
.kc.uploading{opacity:.55;pointer-events:none}
.col-add-btn{display:flex;align-items:center;gap:6px;width:100%;margin-top:8px;padding:7px 8px;border-radius:8px;color:var(--mu);font-weight:700;text-align:left;background:transparent}
.col-add-btn:hover{background:rgba(9,30,66,.08);color:var(--tx)}
.col-add-btn .i,.add-col .i{width:1.05em;height:1.05em}
.col-add.on{margin-top:8px}
.col-add.on textarea{width:100%;resize:none;border:none;border-radius:8px;padding:8px 10px;box-shadow:0 1px 1px rgba(9,30,66,.25),0 0 1px rgba(9,30,66,.31);background:var(--sf);font:inherit;min-height:58px;line-height:1.4}
.col-add.on textarea:focus{outline:2px solid var(--p);outline-offset:0}
.ca-a{display:flex;align-items:center;gap:6px;margin-top:6px}
.ca-x{width:32px;height:32px;border-radius:8px;display:grid;place-items:center;color:var(--mu);background:transparent} .ca-x:hover{background:rgba(9,30,66,.08);color:var(--tx)}
.add-col{display:flex;align-items:center;justify-content:center;gap:6px}
.add-col.on{display:block;text-align:left;background:var(--sf2);border:1px solid var(--line);border-radius:12px;padding:10px;cursor:default;color:var(--tx)}
.add-col.on input{width:100%}
.pj-mem{display:inline-flex;align-items:center;padding-left:6px;text-decoration:none}
.pj-mem .avatar{margin-left:-6px;box-shadow:0 0 0 2px #fff}
.pj-mem .more{margin-left:6px;font-size:.8em;font-weight:800;color:var(--mu)}
.main.pj-bgm .pj-mem .more{color:#fff}
.bg-pop{width:240px;padding:10px}
.bg-pop .bg-h{font-weight:800;font-size:.85em;margin:2px 2px 8px;color:var(--mu)}
.bg-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.bg-grid button{height:38px;border-radius:8px;border:2px solid transparent;font-size:.74em;font-weight:800;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.35);background:var(--sf2);padding:0}
.bg-grid button[data-bg="none"]{color:var(--mu);text-shadow:none;border:1px dashed var(--line2)}
.bg-grid button.on{border-color:var(--tx);box-shadow:inset 0 0 0 2px #fff}
.bg-pop .bg-f{font-size:.74em;color:var(--mu2);margin:8px 2px 0}
.bd-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:12px}
.bd{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--sf2);display:flex;flex-direction:column;min-width:0}
.bd-h{display:block;padding:10px 12px 9px;color:#fff;text-decoration:none}
.bd-h .nm{display:block;font-weight:800;text-shadow:0 1px 2px rgba(0,0,0,.25);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bd-h .st{display:block;font-size:.78em;opacity:.95;margin-top:2px;text-shadow:0 1px 2px rgba(0,0,0,.2)}
.bd-h .st b{background:rgba(0,0,0,.28);border-radius:4px;padding:0 5px}
.bd-h .pg{display:block;height:4px;border-radius:2px;background:rgba(255,255,255,.3);margin-top:7px;overflow:hidden}
.bd-h .pg i{display:block;height:100%;background:#fff}
.bd-cols{display:flex;gap:8px;padding:8px;overflow-x:auto;scrollbar-width:thin}
.bd-col{flex:1 0 132px;max-width:200px;background:#f1f2f4;border-radius:8px;padding:6px;display:flex;flex-direction:column;gap:5px;min-width:0}
.bd-ch{display:flex;justify-content:space-between;gap:6px;font-size:.78em;font-weight:800;color:var(--mu);padding:0 2px}
.bd-ch .i{width:1em;height:1em;vertical-align:-2px;margin-right:2px}
.bd-c{background:var(--sf);border-radius:6px;padding:5px 7px;font-size:.8em;box-shadow:0 1px 1px rgba(9,30,66,.2);cursor:pointer;display:flex;align-items:center;gap:5px;min-width:0}
.bd-c .bt{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
.bd-c.done .bt{text-decoration:line-through;color:var(--mu)}
.bd-c .due{font-size:.86em;flex:none}
.bd-c .avatar{width:18px;height:18px;font-size:.62em;flex:none}
.bd-c:hover{box-shadow:inset 0 0 0 1.5px var(--p)}
.bd-more{font-size:.74em;font-weight:700;color:var(--mu);padding:0 2px;text-decoration:none} .bd-more:hover{color:var(--p)}
.bd-e{font-size:.75em;color:var(--mu2);padding:2px}
@media (max-width:860px){.bd-grid{grid-template-columns:1fr} .main.pj-bgm .page-h{padding:8px 10px} .bd-col{flex-basis:140px}}
/* v1.15b 오늘 화면 자리 — 3번째 줄 = «프로젝트 한눈에»(8칸) + 팀 현황(4칸, 최근 활동은 탭). 한 화면(.dash.fit) 2줄을 지킨다(2026-10-28) */
.pn.boards{grid-column:span 8} .dash.one .pn.boards{grid-column:1/-1}
.pn.team{grid-column:span 4} .dash:not(.has-bd) .pn.team{grid-column:1/-1}
.pn.boards .bd-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:10px}
.bd-h{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:0 8px;padding:8px 10px 0}
.bd-h .nm{font-size:.92em}
.bd-h .st{margin-top:0;font-size:.74em;white-space:nowrap}
.bd-h .pg{grid-column:1/-1;margin:7px -10px 0;height:3px;border-radius:0}
.bd-cols{gap:6px;padding:6px}
.bd-col{flex:1 0 104px;padding:5px;gap:4px}
@media (max-width:1180px){.dash{grid-auto-flow:row dense} .pn.boards{grid-column:1/-1} .pn.team{grid-column:span 6}}
@media (max-width:860px){
  .dash > .kpis{order:-2} .pn.boards{order:-1}
  .pn.boards .bd-grid{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:10px;padding-bottom:4px;scrollbar-width:none}
  .pn.boards .bd-grid::-webkit-scrollbar{display:none}
  .pn.boards .bd{flex:0 0 88%;scroll-snap-align:start} .pn.boards .bd:only-child{flex-basis:100%}
}
/* v1.15c «프로젝트 한눈에» 작은 카드 — 제목 2줄 · 기한 색 띠 */
.bd-c{padding:4px 6px;border-left:3px solid transparent}
.bd-c .bt{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.3;overflow:hidden;word-break:keep-all;overflow-wrap:anywhere}
.bd-c.du-over{border-left-color:var(--bad)} .bd-c.du-today{border-left-color:var(--warn)} .bd-c.du-soon{border-left-color:var(--p)}
.bd-c .avatar{width:16px;height:16px;font-size:.6em}
@media (max-width:860px){.pn.boards .bd-grid{align-items:flex-start}}   /* 폰 넘기기 — 타일마다 제 높이(빈 칸이 늘어나지 않게) */
/* v1.15.1 «프로젝트 한눈에» 타일 — 흰 바탕 · 섹션 개수 한 줄 · 급한 할 일 목록(가로 스크롤 없음) */
.pn.boards .pn-b{scrollbar-width:thin}
.bd{background:var(--sf)}
.bd-s{display:flex;flex-wrap:wrap;gap:3px 12px;padding:7px 10px 6px;font-size:.74em;color:var(--mu);border-bottom:1px solid var(--line)}
.bd-s span{white-space:nowrap;display:inline-flex;align-items:center;gap:3px}
.bd-s b{color:var(--tx);font-weight:800} .bd-s .z{opacity:.45} .bd-s .dn b{color:var(--ok)} .bd-s .i{width:1em;height:1em}
.bd-l{display:flex;flex-direction:column;gap:1px;padding:5px 5px 6px}
.bd-l .bd-c{display:flex;align-items:center;gap:6px;padding:5px 6px 5px 7px;border-radius:6px;background:transparent;box-shadow:none;border-left:3px solid transparent;font-size:.82em}
.bd-l .bd-c:hover{background:var(--sf2);box-shadow:none}
.bd-l .bd-c .bt{display:block;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600}
.bd-l .bd-c .due{flex:none;font-size:.88em}
.bd-l .bd-c .avatar{width:18px;height:18px;font-size:.62em;flex:none}
.bd-l .bd-more{padding:3px 9px 0;font-size:.76em}
.bd-l .bd-e{padding:8px 9px;font-size:.8em;color:var(--mu2)}
/* v1.15.1 숫자 칸 → 패널 반짝 */
.pn.flash{animation:pnflash 1s ease-out}
@keyframes pnflash{0%{box-shadow:0 0 0 3px var(--p)}100%{box-shadow:0 0 0 0 rgba(47,84,235,0)}}
/* v1.15.2 오늘 «일정» — 글씨를 내 할 일과 같은 크기로, 시간·장소는 아래 줄 */
.pn.today .ev-row{font-size:1em;padding:6px 8px;gap:10px}
.pn.today .ev-row .when{width:62px;font-size:.84em}
.pn.today .ev-row .ev{font-size:.94em;padding:6px 10px;border-radius:8px;display:flex;flex-direction:column;gap:1px;white-space:normal}
.pn.today .ev-row .ev b{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pn.today .ev-row .ev small{font-size:.82em;font-weight:500;opacity:.85;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* v1.15.2 «프로젝트 한눈에» 할 일 줄 — 제목 | 기한 | 담당 열 맞춤 */
.bd-l .bd-c{display:grid;grid-template-columns:minmax(0,1fr) 66px 18px;gap:8px;align-items:center}
.bd-l .bd-c .due{text-align:right;white-space:nowrap}
.bd-l .bd-c .av-x{width:18px;height:18px}
/* v1.15.2 시간 고르기 창(마우스 화면) */
.tp-pop{position:fixed;z-index:60;background:var(--sf);border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 32px rgba(16,24,40,.18);padding:8px;width:236px;font-size:14px}
.tp-cols{display:flex;gap:4px}
.tp-col{position:relative;flex:1;height:232px;overflow-y:auto;display:flex;flex-direction:column;gap:2px;padding:2px;scrollbar-width:thin}
.tp-col.ap{flex:0 0 62px;height:auto;overflow:visible}
.tp-col button{flex:none;height:32px;border-radius:7px;font-variant-numeric:tabular-nums;color:var(--tx);font-weight:600;background:transparent}
.tp-col button:hover{background:var(--sf2)}
.tp-col button.on{background:var(--p);color:#fff}
.tp-f{display:flex;align-items:center;gap:6px;margin-top:8px;padding-top:8px;border-top:1px solid var(--line);font-size:.78em;color:var(--mu2)}
.tp-f span{flex:1;text-align:center}
.tp-f button{padding:5px 10px;border-radius:7px;font-weight:700;color:var(--mu)}
.tp-f button:hover{background:var(--sf2)}
.tp-f button.ok{background:var(--p);color:#fff}
/* v1.15.2 오른쪽 위 이름 메뉴 — 설정 · 로그아웃 */
.top button.me{background:none;font:inherit;color:inherit;cursor:pointer}
.me-pop{min-width:230px}
.me-pop .me-h{display:flex;align-items:center;gap:10px;padding:8px 10px 10px;margin-bottom:4px;border-bottom:1px solid var(--line)}
.me-pop .me-h b{display:block;font-weight:800} .me-pop .me-h small{display:block;color:var(--mu);font-size:.78em}
.me-pop .mi{display:flex;align-items:center;gap:8px;width:100%;padding:8px 12px;border-radius:8px;text-decoration:none;color:var(--tx);font-weight:700;font-size:.92em}
.me-pop a.mi:hover{background:var(--sf2)} .me-pop .mi .i{width:16px;height:16px;flex:none}
@media (hover:hover) and (pointer:fine){
  input[type=time]::-webkit-calendar-picker-indicator{display:none}
  input[type=time]{cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238a94a6' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 7v5l3 2'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 9px center;background-size:15px;padding-right:30px}
  .tk-side .prop input[type=time]{background-image:none;padding-right:4px}
}
.pn.today .ev-row .ev{font-size:1em}   /* 일정 제목 = 내 할 일 제목과 같은 크기, 좁으면 두 줄 */
.pn.today .ev-row .ev b{font-weight:500;white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;word-break:keep-all;overflow-wrap:anywhere;line-height:1.35}

/* 2026-10-29 개인·팀·회사 색 구분 (10/28 회의) — 개인 = 앰버(메모와 같은 계열) · 팀 = 기본 파랑 · 회사 = 네이비. 색만이 아니라 글자(개인·팀 이름·회사)로도 보인다 */
.sc-tag{display:inline-block;font-style:normal;font-size:.72em;font-weight:800;line-height:1.55;border-radius:4px;padding:0 5px;margin-right:5px;vertical-align:1px;white-space:nowrap}
.sc-tag.me{background:var(--accl);color:var(--acct)} .sc-tag.tm{background:var(--pl);color:var(--p2)} .sc-tag.co{background:var(--nb);color:#fff}
.page-h .sc-tag{font-size:.8em;margin-left:2px}
.pin-it.sc-me .k{background:var(--accl);color:var(--acct);border-color:var(--acc)}
.pin-it.sc-tm .k{background:var(--pl);color:var(--p2);border-color:var(--pl2)}
.pin-it.sc-co .k{background:var(--nb);color:#fff;border-color:var(--nb)}
.pin-it .scw{font-weight:800} .pin-it.sc-me .scw{color:var(--acct)} .pin-it.sc-tm .scw{color:var(--p2)} .pin-it.sc-co .scw{color:var(--nb)}

/* ───── v1.17 (2026-10-29 «이지훈미팅») 오늘 꼭 할 일 · 반복 업무 · 반복 일정 · 문서함 ───── */
.field[hidden],.rr [hidden],.rr-days[hidden]{display:none!important}
.dlg-sub{margin:-6px 0 12px}
.ck{display:flex!important;align-items:center;gap:8px;font-weight:400!important;color:var(--tx)!important;font-size:.95em!important;cursor:pointer;margin:0!important;line-height:1.4}
.ck input{width:18px;height:18px;min-height:0;flex:none;accent-color:var(--p);margin:0}
.rr{display:flex;flex-direction:column;gap:8px}
.rr-days{display:flex;gap:4px;flex-wrap:wrap}
.rr-days button{width:38px;height:34px;border-radius:8px;border:1px solid var(--line2);background:var(--sf);font-weight:700;color:var(--mu)}
.rr-days button.we{color:var(--bad)} .rr-days button:hover{border-color:var(--p)}
.rr-days button.on{background:var(--p);border-color:var(--p);color:#fff}
.rr-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap} .rr-row select{width:auto;min-width:110px}
.rr-sum{color:var(--p2);font-weight:700;font-size:.86em;min-height:1.2em}
/* 오늘 꼭 — 주요 사항 첫 탭 */
.pn.pins.is-must{border-top-color:var(--p)} .pn.pins.is-must .pn-h .i{color:var(--p)}
.pn.pins .pn-h .right .btn{gap:4px;padding:4px 8px;min-height:28px}
.mu-prog{height:4px;border-radius:999px;background:var(--sf3);overflow:hidden;margin:2px 2px 8px} .mu-prog i{display:block;height:100%;background:var(--ok);border-radius:999px;transition:width .3s}
.ti.mu-it .mu-x{color:var(--mu2);width:24px;height:24px;border-radius:6px;display:inline-flex;align-items:center;justify-content:center;flex:none;opacity:.5}
.ti.mu-it .mu-x:hover{opacity:1;background:var(--sf3);color:var(--bad)} .ti.mu-it .mu-x .i{width:14px;height:14px}
.chip.rt{background:var(--pl);color:var(--p2);gap:3px} .chip.rt .i{width:12px;height:12px}
.mi.rt,.mi.must{color:var(--p);display:inline-flex;align-items:center} .mi.rt .i,.mi.must .i{width:1.05em;height:1.05em}
.must-btn{display:inline-flex;align-items:center;gap:4px;height:30px;padding:0 10px;border-radius:999px;border:1px solid var(--line2);color:var(--mu);font-size:.8em;font-weight:700;flex:none;white-space:nowrap;background:var(--sf)}
.must-btn .i{width:15px;height:15px} .must-btn:hover{border-color:var(--p);color:var(--p)}
.must-btn.on{background:var(--pl);border-color:var(--p);color:var(--p2)}
.mhead.m5,.mrow.m5{grid-template-columns:1fr auto auto auto auto}
.mrow .v.mu5{min-width:44px} .mrow .mu2{color:var(--mu2)}
.mp-it{display:flex;align-items:center;gap:10px;padding:8px 6px;border-bottom:1px solid var(--line);cursor:pointer;margin:0} .mp-it:hover{background:var(--sf2)}
.mp-it input{width:18px;height:18px;min-height:0;flex:none;accent-color:var(--p);margin:0}
.mp-it .tt{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mp-it .meta{display:flex;gap:6px;align-items:center;font-size:.8em;color:var(--mu);flex:none}
.mp-dlg .sec-t{margin:12px 0 4px}
.mp-bar{position:sticky;bottom:0;background:var(--sf);padding:10px 0 2px;margin-top:8px;justify-content:flex-end;gap:8px;border-top:1px solid var(--line)} .mp-bar #mpN{margin-right:auto}
/* 반복 업무 목록 */
.rt-row{display:flex;align-items:center;gap:10px;padding:9px 10px;border:1px solid var(--line);border-radius:var(--r);margin-bottom:6px;cursor:pointer;background:var(--sf)}
.rt-row:hover{border-color:var(--p);background:var(--pl)} .rt-row.off{opacity:.55}
.rt-row .rt-ic{width:30px;height:30px;border-radius:8px;background:var(--pl);color:var(--p);display:inline-flex;align-items:center;justify-content:center;flex:none} .rt-row .rt-ic .i{width:16px;height:16px}
.rt-row b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap} .rt-row small{display:block;color:var(--mu);font-size:.8em} .rt-row small.nx{color:var(--mu2)}
/* 문서함 */
.doc-tabs{display:flex;gap:6px;margin:2px 0 10px;flex-wrap:wrap}
.doc-tabs a{display:inline-flex;align-items:center;gap:6px;padding:7px 12px;border-radius:999px;border:1px solid var(--line);background:var(--sf);font-weight:700;color:var(--mu);font-size:.92em}
.doc-tabs a.on{border-color:var(--p);background:var(--pl);color:var(--p2)} .doc-tabs .sc-tag{margin:0}
.doc-q{display:flex;align-items:center;gap:10px;font-size:.8em;color:var(--mu);margin:0 0 14px;max-width:420px} .doc-q .prog{flex:1;height:5px}
.doc-folders{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:8px;margin-bottom:14px}
.doc-fd{display:flex;align-items:center;gap:8px;padding:12px;border:1px solid var(--line);border-radius:var(--r);background:var(--sf);font-weight:700;color:var(--tx);min-width:0;text-align:left;min-height:48px}
.doc-fd:hover{border-color:var(--p);background:var(--pl)} .doc-fd .i{color:var(--acc);flex:none} .doc-fd.tk .i{color:var(--p)}
.doc-fd.add{border-style:dashed;color:var(--mu);background:transparent} .doc-fd.add .i{color:var(--mu2)}
.doc-fd .nm{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap} .doc-fd .cnt{font-size:.78em;color:var(--mu);background:var(--sf3);border-radius:6px;padding:0 6px;font-weight:400}
.doc-crumb{display:flex;align-items:center;gap:6px;margin:4px 0 12px;font-size:.95em;flex-wrap:wrap} .doc-crumb a{color:var(--p);font-weight:700}
.doc-crumb > .i{width:14px;height:14px;color:var(--mu2)} .doc-crumb b .i{color:var(--acc);width:16px;height:16px;vertical-align:-3px} .doc-crumb .cnt{color:var(--mu);font-size:.85em}
.doc-drop{border-radius:var(--r);min-height:60px} .doc-drop.over{outline:2px dashed var(--p);outline-offset:4px;background:var(--pl)}
.doc-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}
.doc-card .del.dm{opacity:.75} .doc-card .del.dm .i{width:16px;height:16px}
.doc-card .doc-tk{display:flex;align-items:center;gap:4px;font-size:.76em;color:var(--p);font-weight:700;padding:0 8px 7px;min-width:0}
.doc-card .doc-tk .i{width:13px;height:13px;flex:none} .doc-card .doc-tk span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media (max-width:600px){
  .pn.pins .pn-h .right .bt-l{display:none} .must-btn span{display:none} .must-btn{padding:0 8px}
  .doc-folders{grid-template-columns:1fr 1fr} .doc-grid{grid-template-columns:1fr 1fr}
  .mrow.m5{grid-template-columns:1fr auto auto auto auto;gap:6px} .mrow .v.mu5{min-width:36px}
}
@media (max-width:860px){.dash > .pn.pins{order:-1}}   /* v1.17 폰 — «오늘 꼭 할 일»을 «프로젝트 한눈에»보다 위에(10/28 회의 #1) */

/* ───── v1.18 (2026-10-29 «이지훈미팅») 거래처 · 메시지 · 전자계약 ───── */
.ct-row .ct-k{flex:none;margin-right:2px} .ct-row .ct-no{flex:none;font-size:.82em;color:var(--mu);font-variant-numeric:tabular-nums;margin-right:8px}
.ct-info{display:grid;grid-template-columns:1fr 1fr;gap:6px 14px;margin:8px 0 2px;font-size:.92em}
.ct-info > div{display:flex;gap:8px;min-width:0;align-items:baseline} .ct-info label{flex:none;width:74px;font-size:.8em;color:var(--mu);font-weight:700}
.ct-info span{min-width:0;overflow-wrap:anywhere;white-space:pre-wrap}
.ct-title{font-size:1.02em;margin:0 0 4px;color:var(--mu)} .ct-title b{color:var(--tx)}
.ct-body{white-space:pre-wrap;font-size:.9em;line-height:1.65;background:var(--sf2);border:1px solid var(--line);border-radius:var(--r);padding:12px 14px;max-height:46vh;overflow:auto;word-break:keep-all;overflow-wrap:anywhere}
.msg-row{display:flex;gap:8px;align-items:flex-start;padding:7px 4px;border-bottom:1px solid var(--line);font-size:.9em} .msg-row:last-child{border-bottom:0}
.msg-row .chip{flex:none;margin-top:2px} .msg-row .bad{color:var(--bad)} .msg-t{white-space:pre-wrap;color:var(--mu);font-size:.9em;margin-top:2px;max-height:4.6em;overflow:hidden}
.field input[type=file]{width:100%;border:1.5px dashed var(--line2);background:var(--sf2);padding:10px 12px;font-size:.92em;border-radius:var(--rc)}
.modal.ct{max-width:960px;max-height:94vh;overflow:auto}
@media (max-width:600px){.ct-info{grid-template-columns:1fr} .ct-row .ct-no{display:none}}

/* ───── v1.19 (2026-10-29 «이지훈미팅») 오른쪽 서랍 · 올리기 칸 · 문서함 탐색기 ───── */
.modal [hidden],.fx [hidden],.dz [hidden]{display:none!important}
#layer.dw{justify-content:flex-end;align-items:stretch;padding:0;overflow:hidden}
#layer.dw .modal.dw{max-width:min(600px,100vw);width:100%;height:100%;max-height:none;margin:0;border-radius:16px 0 0 16px;padding:0 22px;overflow:auto;animation:dwin .2s ease-out;box-shadow:-14px 0 40px rgba(15,23,42,.2)}
#layer.dw .modal.dw.wide{max-width:min(880px,100vw)}
#layer.dw .modal.dw{display:flex;flex-direction:column} .modal.dw>form{flex:1 0 auto;display:flex;flex-direction:column} .modal.dw .dlg-f,.modal.dw>.dw-f{margin-top:auto!important} .modal.dw>.dw-f{margin-top:auto} .modal.dw>*{flex-shrink:0}
#layer.dw .modal.dw.noanim{animation:none}
@keyframes dwin{from{transform:translateX(40px);opacity:.4}to{transform:none;opacity:1}}
.modal.dw>.modal-h{position:sticky;top:0;z-index:5;background:var(--sf);margin:0 -22px 14px;padding:16px 22px 12px;border-bottom:1px solid var(--line);align-items:center}
.modal.dw .dlg-f,.modal.dw .dw-f{position:sticky;bottom:0;z-index:5;background:var(--sf);margin:18px -22px 0;padding:12px 22px calc(12px + var(--sab));border-top:1px solid var(--line);display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.modal.dw .dw-f .right{margin-left:auto}
.modal.dw form textarea{width:100%}
.dw-tabs{margin:-4px 0 14px}
.modal.dw .ct-body{max-height:none}
@media (max-width:640px){#layer.dw .modal.dw,#layer.dw .modal.dw.wide{max-width:100vw;border-radius:0;height:100dvh;padding:0 14px;animation:dwin .18s ease-out} .modal.dw>.modal-h{margin:0 -14px 12px;padding:12px 14px 10px} .modal.dw .dlg-f,.modal.dw .dw-f{margin:14px -14px 0;padding:10px 14px calc(10px + var(--sab))} .dw-tabs button{font-size:.86em;padding:7px 4px}}
/* 올리기 칸 — 눌러서 고르기 · 끌어 놓기 · Ctrl+V · 카메라 */
.dz{display:flex;gap:14px;align-items:center;border:2px dashed var(--line2);border-radius:var(--r);padding:12px;background:var(--sf2);cursor:pointer;transition:border-color .12s,background .12s;outline:none}
.dz:hover,.dz:focus-visible{border-color:var(--p)} .dz.over{border-color:var(--p);background:var(--pl)}
.dz-pv{flex:none;width:96px;height:96px;border-radius:8px;display:flex;align-items:center;justify-content:center;background:repeating-conic-gradient(#eef1f6 0 25%,#fff 0 50%) 50%/16px 16px;border:1px solid var(--line);overflow:hidden}
.dz-pv img{max-width:92px;max-height:92px;object-fit:contain}
.dz-ph{color:var(--mu2);display:flex} .dz-ph .i{width:28px;height:28px} .dz-ok{font-size:.8em;color:var(--ok);display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center;padding:4px;font-weight:700}
.dz-t{min-width:0;display:flex;flex-direction:column;gap:3px} .dz-t b{font-size:.92em} .dz-t>span{font-size:.8em;color:var(--mu);line-height:1.45}
.dz-b{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}
.dz-cam{display:none!important} @media (pointer:coarse){.dz-cam{display:inline-flex!important}}
@media (max-width:480px){.dz{flex-direction:column;align-items:stretch;text-align:center} .dz-pv{margin:0 auto} .dz-b{justify-content:center}}
.addr-row{display:flex;gap:6px} .addr-row input{flex:1;min-width:0}
.addr-pc{height:440px;border:1px solid var(--line2);border-radius:var(--rc);margin-top:6px;overflow:hidden} .addr-pc:empty{display:none}
.sms-cnt{text-align:right}
/* 전자계약 진행 단계 */
.ct-steps{display:flex;margin:2px 0 16px;overflow-x:auto;padding-top:2px}
.ct-steps span{flex:1;display:flex;flex-direction:column;align-items:center;gap:5px;font-size:.78em;color:var(--mu);position:relative;min-width:62px;text-align:center}
.ct-steps span::before{content:'';position:absolute;top:13px;left:-50%;width:100%;height:2px;background:var(--line2)} .ct-steps span:first-child::before{display:none}
.ct-steps i{width:27px;height:27px;border-radius:50%;background:var(--sf3);display:flex;align-items:center;justify-content:center;font-style:normal;font-weight:800;position:relative;font-size:.95em}
.ct-steps .done i{background:var(--ok);color:#fff} .ct-steps .done::before,.ct-steps .cur::before{background:var(--ok)} .ct-steps .cur i{background:var(--p);color:#fff;box-shadow:0 0 0 4px var(--pl)} .ct-steps .cur{color:var(--tx);font-weight:700} .ct-steps i .i{width:14px;height:14px}
.ct-steps.void{display:block;text-align:center;padding:10px;background:var(--sf2);border-radius:var(--rc);color:var(--mu);font-size:.9em}
@media (max-width:600px){.ct-row{flex-wrap:wrap;row-gap:4px} .ct-row .tt{flex:1 1 calc(100% - 64px);white-space:normal} .ct-row .meta{flex:1 1 100%;justify-content:flex-start} .page-h .row.right{flex-wrap:wrap}}
#toast .fx-toast{display:flex;align-items:center;gap:12px;pointer-events:auto} #toast .fx-toast button{color:#9db4ff;font-weight:800}
/* ── 문서함 탐색기 */
.fx-ph{margin-bottom:8px} .fx-ph .fx-tip{margin-left:auto;font-size:.78em;color:var(--mu)}
.fx{display:flex;flex-direction:column;background:var(--sf);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;outline:none;min-height:440px}
.fx-addr{display:flex;align-items:center;gap:4px;padding:8px 10px;border-bottom:1px solid var(--line)}
.fx-nb{width:32px;height:32px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;color:var(--tx);flex:none} .fx-nb .i{width:18px;height:18px}
.fx-nb:hover:not(:disabled){background:var(--sf2)} .fx-nb:disabled{color:var(--line2);cursor:default}
.fx-crumb{flex:1;min-width:0;display:flex;align-items:center;height:34px;border:1px solid var(--line2);border-radius:8px;padding:0 6px;overflow-x:auto;scrollbar-width:none;margin-left:4px} .fx-crumb::-webkit-scrollbar{display:none}
.fx-root{display:inline-flex;align-items:center;gap:5px;color:var(--mu);font-size:.86em;padding:0 4px;flex:none} .fx-root .i{width:16px;height:16px}
.fx-sep{display:inline-flex;color:var(--mu2);flex:none} .fx-sep .i{width:13px;height:13px}
.fx-cb{display:inline-flex;align-items:center;gap:5px;padding:3px 7px;border-radius:6px;font-size:.9em;white-space:nowrap;flex:none;color:var(--tx)} .fx-cb:hover{background:var(--sf2)} .fx-cb:last-child{font-weight:800}
.fx-cb .fxi{width:16px;height:16px}
.fx-search{display:flex;align-items:center;gap:6px;width:250px;height:34px;border:1px solid var(--line2);border-radius:8px;padding:0 10px;color:var(--mu);flex:none;margin-left:4px} .fx-search input{border:0;outline:0;background:transparent;flex:1;min-width:0;font:inherit;font-size:.9em;padding:0;color:var(--tx);box-shadow:none} .fx-search:focus-within{border-color:var(--p);box-shadow:0 0 0 3px var(--pl)} .fx-search .i{width:16px;height:16px;flex:none}
.fx-cmd{display:flex;align-items:center;gap:2px;padding:6px 8px;border-bottom:1px solid var(--line);background:var(--sf2);overflow-x:auto;scrollbar-width:none} .fx-cmd::-webkit-scrollbar{display:none}
.fx-cmdb{display:inline-flex;align-items:center;gap:5px;padding:6px 9px;border-radius:7px;font-size:.86em;font-weight:700;color:var(--tx);white-space:nowrap;flex:none} .fx-cmdb .i{width:17px;height:17px} .fx-cmdb .i+span+.i{width:12px;height:12px;opacity:.6}
.fx-cmdb:hover:not(:disabled){background:var(--sf)} .fx-cmdb:disabled{opacity:.35;cursor:default} .fx-cmdb.on{background:var(--pl);color:var(--p)}
.fx-cmdb.p{background:var(--p);color:#fff} .fx-cmdb.p:hover:not(:disabled){background:var(--p2)}
.fx-vsep{width:1px;height:22px;background:var(--line2);margin:0 5px;flex:none}
.fx-cmdb.ic{padding:6px 8px} .fx-cmdb.ic span{display:none}
.fx-scs{display:none}
.fx-body{flex:1;min-height:0;display:grid;grid-template-columns:236px minmax(0,1fr)} .fx.pane-on .fx-body{grid-template-columns:236px minmax(0,1fr) 280px}
.fx-tree{border-right:1px solid var(--line);overflow:auto;padding:6px 4px 14px;font-size:.88em;user-select:none}
.fx-tn{display:flex;align-items:center;gap:5px;height:30px;padding:0 8px 0 calc(4px + var(--d) * 14px);border-radius:6px;cursor:pointer;white-space:nowrap;color:var(--tx)} .fx-tn:hover{background:var(--sf2)} .fx-tn.on{background:var(--pl);color:var(--p);font-weight:800}
.fx-tn .fxi{width:18px;height:18px;flex:none} .fx-tl{overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}
.fx-tw{width:16px;height:16px;display:inline-flex;align-items:center;justify-content:center;color:var(--mu);flex:none;border-radius:4px} .fx-tw .i{width:13px;height:13px} .fx-tw[data-fxtog]:hover{background:var(--line)}
.fx-tc{font-size:.78em;color:var(--mu);background:var(--sf3);border-radius:999px;padding:0 7px}
.fx-tsep{height:1px;background:var(--line);margin:8px 6px}
.fx-main{position:relative;overflow:auto;user-select:none;-webkit-user-select:none;padding:4px 0 28px;outline:none}
.fx-empty{padding:64px 16px;text-align:center;color:var(--mu)} .fx-empty small{display:block;margin-top:6px;font-size:.84em;color:var(--mu2)}
.fx-grid{min-width:max-content;font-size:.88em}
.fx-hd{display:grid;grid-template-columns:var(--cols);position:sticky;top:-4px;z-index:2;background:var(--sf);border-bottom:1px solid var(--line);margin:0 0 2px;padding:0 5px}
.fx-th{position:relative;padding:7px 10px;font-size:.92em;color:var(--mu);font-weight:700;white-space:nowrap;cursor:pointer;display:flex;align-items:center;gap:4px;min-width:0} .fx-th>span{overflow:hidden;text-overflow:ellipsis} .fx-th.fill{cursor:default} .fx-th.fill:hover{background:transparent}
.fx-rs{position:absolute;right:-4px;top:0;bottom:0;width:9px;cursor:col-resize;z-index:3} .fx-rs::after{content:'';position:absolute;left:4px;top:22%;bottom:22%;width:1px;background:var(--line2)} .fx-rs:hover::after{background:var(--p);top:0;bottom:0}
body.fx-resizing,body.fx-resizing *{cursor:col-resize!important;user-select:none!important} .fx-th.r{justify-content:flex-end} .fx-th:hover{background:var(--sf2)} .fx-th.on{color:var(--tx)} .fx-ar{font-style:normal;font-size:.68em;color:var(--p)}
.fx-grid .fx-it{display:grid;grid-template-columns:var(--cols);margin:0 4px;border:1px solid transparent;border-radius:5px}
.fx-td{padding:0 10px;height:32px;display:flex;align-items:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--mu);min-width:0} .fx-td.r{justify-content:flex-end;font-variant-numeric:tabular-nums}
.fx-td.nm{color:var(--tx);gap:8px} .fx-td.nm .fxi{flex:none} .fx-nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.fx-tk{color:var(--p)}
.fx-it:hover{background:var(--sf2)} .fx-it.on{background:var(--pl);border-color:#c5d2ff} .fx-it.on:hover{background:var(--pl2)} .fx-it.cur{outline:1px dotted var(--p);outline-offset:-3px}
.fx-it.cut .fxi,.fx-it.cut img,.fx-it.cut .fx-nm{opacity:.45}
.fx-tiles{display:grid;gap:4px;padding:8px}
.fx-tiles.big{grid-template-columns:repeat(auto-fill,minmax(122px,1fr))} .fx-tiles.small{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:2px}
.fx-tiles .fx-it{position:relative;border:1px solid transparent;border-radius:8px;min-width:0}
.fx-tiles.big .fx-it{display:flex;flex-direction:column;align-items:center;padding:10px 6px 8px;text-align:center}
.fx-tiles.big .fx-ic{width:84px;height:74px;display:flex;align-items:center;justify-content:center;position:relative}
.fx-tiles.big .fx-ic .fxi{width:64px;height:64px} .fx-tiles.big .fx-ic img{max-width:84px;max-height:74px;border-radius:4px;box-shadow:0 1px 4px rgba(0,0,0,.2);object-fit:cover}
.fx-tiles.big .fx-tt{margin-top:6px;font-size:.84em;width:100%} .fx-tiles.big .fx-nm{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;white-space:normal;word-break:break-all;overflow:hidden}
.fx-tiles small{display:none}
.fx-tiles.small .fx-it{display:flex;align-items:center;gap:8px;padding:5px 8px;font-size:.88em} .fx-tiles.small .fx-ic{display:flex} .fx-tiles.small .fx-ic .fxi{width:20px;height:20px} .fx-tiles.small .fx-tt{min-width:0;display:flex}
.fx-play{position:absolute;display:flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;background:rgba(0,0,0,.55);color:#fff} .fx-play .i{width:13px;height:13px}
.fx-badge{font-size:.75em;background:var(--sf3);color:var(--mu);border-radius:999px;padding:0 7px;margin-left:6px;font-weight:700}
.fx-tiles.big .fx-badge{position:absolute;top:8px;right:10px;margin:0}
.fx-status{display:flex;align-items:center;gap:14px;padding:5px 12px;border-top:1px solid var(--line);font-size:.8em;color:var(--mu);min-height:32px;flex-wrap:wrap}
.fx-clip{color:var(--p);font-weight:700}
.fx-cap{display:inline-flex;align-items:center;gap:6px} .fx-cap i{width:80px;height:5px;border-radius:3px;background:var(--sf3);overflow:hidden;display:inline-block} .fx-cap b{display:block;height:100%;background:var(--p)}
.fx-vb{display:inline-flex;gap:2px} .fx-vb button{width:26px;height:24px;border-radius:5px;display:inline-flex;align-items:center;justify-content:center;color:var(--mu)} .fx-vb button.on{background:var(--pl);color:var(--p)} .fx-vb .i{width:15px;height:15px}
.fx-prog{margin:0 12px 8px}
.fx-pane{border-left:1px solid var(--line);overflow:auto;padding:16px 14px;font-size:.86em}
.fx-pv{display:flex;align-items:center;justify-content:center;min-height:120px;background:var(--sf2);border-radius:8px;margin-bottom:10px;padding:8px} .fx-pv .fxi{width:72px;height:72px} .fx-pv.img img{max-width:100%;max-height:240px;border-radius:6px}
.fx-pn{font-weight:800;font-size:1.05em;word-break:break-all;margin-bottom:10px}
.fx-pp>div{display:flex;gap:8px;padding:6px 0;border-bottom:1px solid var(--line)} .fx-pp label{flex:none;width:86px;color:var(--mu)} .fx-pp span{min-width:0;word-break:break-all}
.fx-pa{display:flex;gap:6px;margin-top:12px;flex-wrap:wrap}
.fx-props{font-size:.92em} .fx-props .fx-pv{min-height:150px}
.fx-menu{position:fixed;z-index:200;min-width:232px;max-width:330px;background:var(--sf);border:1px solid var(--line2);border-radius:10px;box-shadow:0 12px 34px rgba(15,23,42,.22);padding:5px;font-size:.88em;animation:pop .1s ease-out}
.fx-mi{display:flex;align-items:center;gap:9px;width:100%;padding:7px 10px;border-radius:6px;text-align:left;color:var(--tx)} .fx-mi:hover:not(:disabled){background:var(--sf2)} .fx-mi:disabled{opacity:.38;cursor:default} .fx-mi.b .fx-ml{font-weight:800}
.fx-mic{width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;flex:none;color:var(--mu)} .fx-mic .i{width:16px;height:16px}
.fx-ml{flex:1;white-space:nowrap} .fx-mk{color:var(--mu2);font-size:.86em;white-space:nowrap;display:inline-flex;align-items:center} .fx-mk .i{width:13px;height:13px}
.fx-msep{height:1px;background:var(--line);margin:4px 6px}
.fx-menu.sheet{left:0!important;right:0;bottom:0;top:auto!important;max-width:none;border-radius:16px 16px 0 0;padding:8px 8px calc(10px + var(--sab));font-size:1em;max-height:75dvh;overflow:auto;animation:up .16s ease-out}
.fx-menu.sheet .fx-mi{padding:12px}
.fx-mbk{position:fixed;inset:0;z-index:199;background:rgba(16,22,40,.36)}
.fx-marq{position:absolute;border:1px solid var(--p);background:rgba(47,84,235,.1);pointer-events:none;z-index:3}
.fx-ren{font:inherit;font-size:1em;padding:2px 6px;border:1px solid var(--p);border-radius:4px;outline:0;min-width:120px;width:100%;background:var(--sf);color:var(--tx);user-select:text;-webkit-user-select:text}
.fx-tiles.big .fx-ren{text-align:center}
.fx-ghost{position:fixed;top:-100px;left:-100px;padding:6px 10px;background:var(--p);color:#fff;border-radius:8px;font-weight:800;font-size:13px}
#fx .drop-on{background:var(--pl)!important;outline:2px solid var(--p)!important;outline-offset:-2px}
#fx .fx-main.drop-on{outline:2px dashed var(--p)!important;outline-offset:-6px;background:#f5f7ff!important}
@media (max-width:760px){
  .fx{border-radius:12px;min-height:0}
  .fx-addr{padding:6px;flex-wrap:wrap} .fx-search{width:auto;flex:1 1 120px;margin:0} .fx-crumb{flex:1 1 100%;order:3;margin:2px 0 0}
  .fx-cmdb span{display:none} .fx-cmdb{padding:8px} .fx-cmdb.p span,.fx-cmdb.xs span{display:inline}
  .fx-scs{display:flex;gap:6px;padding:8px;overflow-x:auto;border-bottom:1px solid var(--line);scrollbar-width:none} .fx-scs::-webkit-scrollbar{display:none}
  .fx-scs button{flex:none;display:inline-flex;align-items:center;gap:6px;padding:6px 11px;border-radius:999px;border:1px solid var(--line2);font-weight:700;font-size:.86em;color:var(--mu);background:var(--sf)} .fx-scs button.on{background:var(--p);border-color:var(--p);color:#fff} .fx-scs .fxi{width:16px;height:16px}
  .fx-body{display:block} .fx-tree,.fx-pane{display:none}
  .fx-main{overflow:visible;padding-bottom:8px;user-select:none}
  .fx-tiles.small{grid-template-columns:1fr;gap:0;padding:0} .fx-tiles.small .fx-it{padding:10px 12px;border-radius:0;border-width:0 0 1px;border-color:var(--line)} .fx-tiles.small .fx-it.on{border-color:#c5d2ff}
  .fx-tiles.small .fx-ic .fxi{width:34px;height:34px} .fx-tiles.small .fx-tt{flex-direction:column;gap:2px} .fx-tiles.small .fx-nm{white-space:normal;word-break:break-all;font-weight:700} .fx-tiles.small small{display:block;color:var(--mu);font-size:.8em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .fx-tiles.big{grid-template-columns:repeat(auto-fill,minmax(98px,1fr))}
  .fx-status{font-size:.76em;gap:10px}
}

/* ───── v1.19 메뉴 2단(2026-10-29 진백 «edi-van 처럼 메뉴를 2단 구성까지»): 왼쪽 = 대분류, 위 남색 띠 = 그 분류의 화면(1줄) + 화면 안의 갈래(2줄) ───── */
:root{--side:216px}
.shell{grid-template-rows:var(--top) auto minmax(0,1fr)}
.shell > .side{grid-row:1/-1;grid-column:1}
.shell > .top{grid-row:1;grid-column:2} .shell > .ytabs{grid-row:2;grid-column:2} .shell > .main{grid-row:3;grid-column:2}
.side .nav{display:flex;flex-direction:column;padding:10px 8px}
.side .nav a.mg{flex:none;min-height:44px;padding:10px 12px;gap:11px;font-size:14.5px;font-weight:700;border-radius:10px;color:#c6cee3}
.side .nav a.mg .i{width:1.28em;height:1.28em;color:var(--nic)}
.side .nav a.mg:hover{background:var(--nhov);color:#fff} .side .nav a.mg:hover .i{color:#fff}
.side .nav a.mg.on{background:rgba(255,255,255,.11);color:#fff;font-weight:800} .side .nav a.mg.on .i{color:#fff}
.side .nav a.mg.on::before{left:-8px;top:10px;bottom:10px;width:3px;background:var(--nacc)}
.side .nav .nav-bot{padding-top:8px}
.side .nav .nav-bot a.mg{min-height:38px;padding:8px 12px;font-size:13.5px;font-weight:600} .side .nav .nav-bot a.mg.on{font-weight:800}
.ytabs{display:flex;flex-direction:column;min-width:0;padding:9px 20px;background:linear-gradient(90deg,#161d33 0%,#1d2850 55%,#283d7a 100%);box-shadow:inset 0 -1px 0 rgba(255,255,255,.06),0 2px 10px rgba(16,24,48,.14);position:relative;z-index:2}
.ytabs[hidden]{display:none}
.ytabs .trow{display:flex;align-items:center;gap:6px;flex-wrap:wrap;min-width:0;position:relative}
.ytabs .trow.sub{margin-top:8px;padding-top:8px;border-top:1px dashed rgba(255,255,255,.2)}
.ytabs .tab{display:inline-flex;align-items:center;gap:6px;flex:none;max-width:100%;padding:8px 16px;border-radius:999px;border:1px solid transparent;background:transparent;color:rgba(255,255,255,.74);font-weight:800;font-size:13.5px;line-height:1.15;white-space:nowrap;cursor:pointer;transition:background .14s,color .14s}
.ytabs .tab:hover{background:rgba(255,255,255,.14);color:#fff}
.ytabs .tab.on,.ytabs .tab.on:hover{background:#fff;color:#161d33;border-color:#fff;box-shadow:0 2px 10px rgba(0,0,0,.22)}
.ytabs .tab .tl{overflow:hidden;text-overflow:ellipsis;max-width:220px}
.ytabs .tab .tab-n{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:10px;background:rgba(255,255,255,.18);color:#fff;font-size:11px;font-weight:800;line-height:1;font-variant-numeric:tabular-nums}
.ytabs .tab.on .tab-n{background:#161d33;color:#fff}
.ytabs .tab .tab-n.hot,.ytabs .tab.on .tab-n.hot{background:#e5484d;color:#fff}
.ytabs .tab .tdot{width:8px;height:8px;border-radius:50%;flex:none;box-shadow:0 0 0 2px rgba(255,255,255,.22)}
.ytabs .tab.on .tdot{box-shadow:0 0 0 2px rgba(22,29,51,.1)}
.ytabs .tab .i{width:1.05em;height:1.05em}
.ytabs .tab.add{border:1px dashed rgba(255,255,255,.34);color:rgba(255,255,255,.86);font-weight:700}
.ytabs .tab.add:hover{border-style:solid;background:rgba(255,255,255,.1)}
.ytabs .tab.sub{padding:6px 13px;font-size:13px;font-weight:700}
.ytabs .t-end{margin-left:auto}
.ed-senior .ytabs .tab{font-size:15.5px;padding:10px 18px} .ed-senior .ytabs .tab.sub{font-size:14.5px;padding:8px 15px}
.col{max-height:calc(100dvh - 190px - var(--bandh,0px))}
.gt-scroll{max-height:calc(100dvh - 290px - var(--bandh,0px))}
@media (min-width:861px){.pb-col{max-height:calc(100dvh - 196px - var(--bandh,0px))}}
@media (max-width:560px){.gt-scroll{max-height:calc(100dvh - 330px - var(--bandh,0px))}}
.more-rows{display:flex;flex-direction:column;margin-top:2px}
.more-row{display:flex;align-items:flex-start;gap:10px;padding:9px 2px;border-bottom:1px solid var(--line)}
.more-row:last-child{border-bottom:0} .more-row.bot{padding-top:12px}
.more-row .mr-g{flex:0 0 76px;display:flex;align-items:center;gap:6px;padding-top:8px;font-weight:800;font-size:.84em;color:var(--mu);white-space:nowrap}
.more-row .mr-g .i{color:var(--p);width:18px;height:18px}
.more-row .mr-t{flex:1;min-width:0;display:flex;flex-wrap:wrap;gap:6px}
.more-row .mr-t a{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:6px 12px;border:1px solid var(--line);border-radius:999px;background:var(--sf);font-weight:700;font-size:.9em;color:var(--tx)}
.more-row .mr-t a .i{width:17px;height:17px;color:var(--mu2)}
.more-row .mr-t a:hover{border-color:var(--p);color:var(--p)}
.more-row .mr-t a.on{background:var(--nb);border-color:var(--nb);color:#fff} .more-row .mr-t a.on .i{color:#fff}
.more-row .mr-t a .cnt{min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:var(--bad);color:#fff;font-size:.72em;font-weight:800;display:inline-flex;align-items:center;justify-content:center}
@media (max-width:860px){
  .shell{grid-template-rows:var(--top) auto minmax(0,1fr)}
  .shell > .top,.shell > .ytabs,.shell > .main{grid-column:1}
  .ytabs{padding:4px 0 8px;background:var(--nb);box-shadow:none}
  .ytabs .trow{flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none;padding:0 10px;gap:4px}
  .ytabs .trow::-webkit-scrollbar{display:none}
  .ytabs .tab{padding:7px 13px;font-size:13px}
  .ytabs .tab.sub{padding:5px 11px;font-size:12.5px}
  .ytabs .trow.sub{margin-top:6px;padding-top:7px}
  .ytabs .t-end{margin-left:0}
  .ytabs .tab .tl{max-width:150px}
}
@media (max-width:1499px){.ytabs .tab.add{padding-left:11px;padding-right:11px}.ytabs .tab.add .tl{display:none}}
@media (min-width:861px) and (max-width:1280px){.ytabs{padding:8px 16px}.ytabs .tab{padding:7px 13px;font-size:13px}.ytabs .tab .tl{max-width:170px}}

/* ───── v1.19.1 휴대폰 다듬기(2026-10-29 진백 «모바일도 잘 잡아줘») ───── */
.fx-rm{display:none}
@media (max-width:760px){
  .fx-ph{display:none}
  .fx{margin:0 -12px;border:0;border-radius:0;overflow:visible;background:var(--sf)}
  .fx-scs{order:1;padding:10px 12px 6px;border-bottom:0;gap:6px} .fx-addr{order:2} .fx-cmd{order:3} .fx-body{order:4} .fx-status{order:5} .fx-prog{order:6}
  .fx-addr.m{flex-wrap:nowrap;gap:2px;padding:2px 8px 6px;border-bottom:0}
  .fx-addr.m .fx-nb{width:40px;height:40px;border-radius:50%} .fx-addr.m .fx-nb .i{width:20px;height:20px} .fx-addr.m .fx-nb[hidden]{display:none}
  .fx-addr.m .fx-crumb{order:0;flex:1 1 auto;margin:0;border:0;padding:0 4px;height:40px}
  .fx-addr.m .fx-cb{font-size:1em;padding:4px 6px} .fx-addr.m .fx-cb:last-child{font-size:1.06em}
  .fx-addr.m .fx-search{display:none}
  .fx-addr.m.q-on .fx-search{display:flex;flex:1 1 auto;width:auto;height:40px;margin:0 2px 0 6px;border-radius:999px;background:var(--sf2);border-color:transparent}
  .fx-addr.m.q-on .fx-search input{font-size:16px} .fx-addr.m.q-on .fx-crumb{display:none}
  .fx-cmd.m{position:sticky;top:0;z-index:4;background:var(--sf);border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:6px 10px;gap:4px;overflow:visible}
  .fx-cmd.m .fx-cmdb{min-height:38px;padding:7px 9px;border-radius:9px} .fx-cmd.m .fx-cmdb .i{width:19px;height:19px}
  .fx-cmd.m .fx-cmdb span{display:none} .fx-cmd.m .fx-cmdb.p span,.fx-cmd.m .fx-cmdb.lb span{display:inline} .fx-cmd.m .fx-cmdb.p{padding:7px 13px}
  .fx-cmd.m.sel{background:var(--pl);border-color:#c5d2ff} .fx-cmd.m .fx-seln{font-weight:800;color:var(--p);font-size:.92em;white-space:nowrap;padding-left:2px}
  .fx-cmd.m .fx-cmdb.bad{color:var(--bad)}
  .fx-main{padding:0 0 4px}
  .fx-tiles.small .fx-it{padding:9px 4px 9px 14px;gap:12px;min-height:60px} .fx-tiles.small .fx-it:last-child{border-bottom:0}
  .fx-tiles.small .fx-ic .fxi{width:36px;height:36px} .fx-tiles.small .fx-tt{flex:1;min-width:0}
  .fx-tiles.small .fx-nm{font-size:1.02em;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  .fx-tiles.small small{font-size:.8em;margin-top:1px} .fx-tiles.small .fx-badge{display:none}
  .fx-tiles.small .fx-rm{display:inline-flex;flex:none;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;color:var(--mu)} .fx-tiles.small .fx-rm:active{background:var(--sf3)}
  .fx-tiles.big{padding:8px 10px}
  .fx-status{padding:8px 14px;min-height:0;background:var(--sf)}
  .fx-empty{padding:48px 20px}
}
@media (max-width:380px){.fx-cmd.m .fx-cmdb.lb span{display:none}}
@media (max-width:860px){
  .main > .tl > .ti:not(.ct-row){flex-wrap:wrap;row-gap:3px}
  .main > .tl > .ti:not(.ct-row) .tt{flex:1 1 0;min-width:55%;white-space:normal;overflow:visible;text-overflow:clip;line-height:1.35}
  .main > .tl > .ti:not(.ct-row) .meta{flex:1 1 100%;order:1;justify-content:flex-start}
  .main > .tl > .ti:not(.ct-row) .chk ~ .meta{padding-left:31px}
  .page-h .sub{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  .main > .demo-bar{padding:6px 10px;gap:4px 14px;margin:-4px 0 10px}
  .main > .demo-bar .btn{background:none;border:0;padding:0;min-height:0;color:var(--p);font-weight:700;text-decoration:underline;text-underline-offset:3px;text-decoration-color:rgba(47,84,235,.35)}
}
@media (max-width:600px){
  #main .msg-row{flex-wrap:wrap;row-gap:2px} #main .msg-row > .mu.sm:last-child{order:-1;flex:1 1 100%;display:flex;gap:8px;font-size:.78em}
}
@media (max-width:560px){.page-h .pj-mem{display:none}}

/* v1.19.1 조직 갈래 구분선 · 왼쪽 아래 사용자 · 로그아웃(10-29 진백 «사용자를 왼쪽 하단에 고정, 로그아웃도 보이게») */
.ytabs .tsep{width:1px;height:20px;background:rgba(255,255,255,.24);margin:0 6px;flex:none}
.side .nav .side-me{margin-top:8px;padding:10px 4px 2px;border-top:1px solid var(--nline);display:flex;flex-direction:column;gap:8px}
.side .nav .side-me a.sm-u{display:flex;align-items:center;gap:9px;min-height:0;padding:4px 6px;border-radius:10px;color:#fff;font-weight:400;min-width:0}
.side .nav .side-me a.sm-u:hover{background:var(--nhov)} .side .nav .side-me a.sm-u::before{display:none}
.side .nav .side-me .avatar{width:32px;height:32px;font-size:.8em;flex:none}
.side .sm-t{min-width:0;display:flex;flex-direction:column;line-height:1.25}
.side .sm-t b{font-weight:800;font-size:.92em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#fff}
.side .sm-t small{font-size:.74em;color:var(--ntx);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.side .sm-out{display:flex;align-items:center;justify-content:center;gap:7px;width:100%;min-height:34px;border-radius:9px;border:1px solid rgba(255,255,255,.16);color:#ffb3b5;font-weight:700;font-size:.86em}
.side .sm-out:hover{background:rgba(229,72,77,.18);border-color:rgba(229,72,77,.55);color:#fff} .side .sm-out .i{width:16px;height:16px}
@media (min-width:861px){.top .me{display:none}}
.more-me{display:flex;align-items:center;gap:10px;margin-top:8px;padding:12px 4px 2px;border-top:1px solid var(--line)}
.more-me .grow{display:flex;flex-direction:column;min-width:0;line-height:1.3} .more-me b{font-weight:800} .more-me small{color:var(--mu);font-size:.8em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.more-me .avatar{width:36px;height:36px}

/* ───── v1.20 계약관리 — 견적서 · 제안서 · 오프라인 문서 ───── */
.chip.dl-k{font-weight:700} .chip.dl-k.quote{background:#eaf1ff;color:#2846b8} .chip.dl-k.proposal{background:#f2ecff;color:#6440c4} .chip.dl-k.offline{background:#eaf5ec;color:#2f6b3c} .chip.dl-k.contract{background:#fff3e2;color:#9a5a00}
.dl-fn{display:inline-flex;align-items:center;gap:2px} .dl-fn .i{width:13px;height:13px}
.sheet-grid.dl-new{grid-template-columns:repeat(2,1fr)} .sheet-grid.dl-new button{min-height:98px}
.dl-ie{border:1px solid var(--line);border-radius:10px;padding:8px;background:var(--sf2)}
.dl-ie-h,.dl-ie-r{display:grid;grid-template-columns:minmax(0,2.2fr) minmax(0,1.2fr) 70px 60px minmax(0,1.1fr) 104px 32px;gap:6px;align-items:center}
.dl-ie-h{font-size:.78em;color:var(--mu);font-weight:700;padding:0 2px 4px}
.dl-ie-r{margin-bottom:6px} .dl-ie-r input{min-height:34px;padding:6px 8px;font-size:.92em;background:var(--sf)}
.dl-ie-r input[data-k=qty],.dl-ie-r input[data-k=price]{text-align:right}
.dl-ie-a{text-align:right;font-variant-numeric:tabular-nums;font-weight:700;font-size:.92em;padding-right:4px}
.dl-ie-f{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:4px} .dl-ie-sum{margin-left:auto;font-size:.88em;color:var(--mu)} .dl-ie-sum b{color:var(--tx)} .dl-ie-sum .tot{color:var(--p);font-size:1.12em}
.dl-iw{overflow-x:auto} .dl-items{width:100%;border-collapse:collapse;font-size:.88em}
.dl-items th{background:var(--sf2);color:var(--mu);font-weight:700;text-align:left;padding:7px 8px;border-bottom:1px solid var(--line)} .dl-items td{padding:7px 8px;border-bottom:1px solid var(--line)}
.dl-items .r{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap} .dl-items td small{display:block;color:var(--mu);font-size:.86em}
.dl-items tfoot td{border-bottom:0;color:var(--mu);text-align:right;padding:4px 8px} .dl-items tfoot tr.tot td{color:var(--tx);font-weight:800;font-size:1.06em;border-top:1px solid var(--line2);padding-top:8px}
.dl-note{margin-top:4px;padding:8px 10px;background:var(--warnl);border-radius:8px;color:var(--tx);white-space:pre-wrap;font-size:.92em}
.dl-nb{white-space:pre-wrap}
.dl-file{display:flex;align-items:center;gap:8px;padding:6px 4px;border-bottom:1px solid var(--line)} .dl-file .fxi{width:22px;height:22px;flex:none}
.dl-file a.grow{color:var(--tx);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap} .dl-file a.grow:hover{color:var(--p);text-decoration:underline}
.dz-m .dz-list{display:flex;flex-direction:column;gap:3px;margin-top:6px} .dz-m .dz-list:empty{display:none}
.dz-pf{display:flex;align-items:center;gap:6px;font-size:.82em;background:var(--sf);border:1px solid var(--line);border-radius:6px;padding:3px 4px 3px 8px} .dz-pf .i{width:14px;height:14px;flex:none} .dz-pf .grow{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dz-m .dz-pv{width:64px;height:64px} .dl-prog{margin-top:8px}
@media (max-width:640px){
  .dl-ie-h{display:none}
  .dl-ie-r{grid-template-columns:1fr 1fr 32px;grid-template-areas:"n n x" "s s s" "q u u" "p a a";background:var(--sf);border:1px solid var(--line);border-radius:8px;padding:8px;gap:6px}
  .dl-ie-r [data-k=name]{grid-area:n} .dl-ie-r [data-k=spec]{grid-area:s} .dl-ie-r [data-k=qty]{grid-area:q} .dl-ie-r [data-k=unit]{grid-area:u} .dl-ie-r [data-k=price]{grid-area:p} .dl-ie-r .dl-ie-a{grid-area:a} .dl-ie-r [data-ie=del]{grid-area:x}
  .dl-ie-sum{margin-left:0;width:100%}
}

/* ───── v1.20 계약관리 — 미리 보기(쪽 그림 · 사진) · 휴대폰 품목표 (2026-10-29) ───── */
.dl-th{width:40px;height:40px;flex:none;border-radius:6px;overflow:hidden;border:1px solid var(--line);background:var(--sf2);padding:0;cursor:zoom-in}
.dl-th img{width:100%;height:100%;object-fit:cover;display:block}
.dl-pvc{cursor:pointer;gap:3px;display:inline-flex;align-items:center} .dl-pvc .i{width:13px;height:13px}
.dl-items td small.dl-spec{display:none}
@media (max-width:640px){.dl-items .c-spec{display:none} .dl-items td small.dl-spec{display:block}}
.pv-ov{position:fixed;inset:0;z-index:90;background:rgba(13,17,28,.88);display:flex;flex-direction:column;animation:pop .12s ease-out}
.pv-bar{display:flex;align-items:center;gap:8px;padding:10px 14px calc(10px) 16px;color:#fff;background:rgba(0,0,0,.28);min-height:54px}
.pv-bar b{font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0} .pv-bar small{opacity:.7;white-space:nowrap} .pv-bar .grow{flex:1}
.pv-bar .btn{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.18);color:#fff} .pv-bar .btn:hover{background:rgba(255,255,255,.22)}
.pv-body{flex:1;overflow:auto;padding:18px 14px calc(28px + var(--sab));display:flex;flex-direction:column;align-items:center;gap:16px;overscroll-behavior:contain}
.pv-body figure{margin:0;width:100%;max-width:980px} .pv-body img{display:block;width:100%;height:auto;border-radius:6px;background:#fff;box-shadow:0 6px 28px rgba(0,0,0,.4)}
.pv-body figcaption{color:#c9cfdb;font-size:.78em;text-align:center;margin-top:6px;font-variant-numeric:tabular-nums}
@media (max-width:640px){.pv-body{padding:10px 8px 24px;gap:10px} .pv-bar{padding:8px 10px}}
a.fx-tn.fx-tlink{color:inherit;text-decoration:none} a.fx-tn.fx-tlink:hover .fx-tl{text-decoration:underline}

/* ── v1.21 문서함 외부 공유 · 압축 (2026-10-30) */
.fx-shb{display:inline-flex;align-items:center;color:var(--p);margin-left:6px;flex:none}
.fx-shb .i{width:14px;height:14px}
.fx-tt small .fx-shb{margin:0 4px 0 0;vertical-align:-2px}
.modal.fxsh .fxs-hint{margin:-2px 0 12px}
.fxs-l.fresh{border-color:var(--p);box-shadow:0 0 0 3px var(--pl2)}
.fxs-h{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.fxs-m{color:var(--mu);font-size:.84em}
.fxs-o{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.fxs-o .grow{flex:1}
.fxs-e{display:inline-flex;align-items:center;gap:6px;font-size:.86em;color:var(--mu);margin:0;font-weight:700}
.fxs-e select{width:auto;min-height:0;padding:4px 8px;font-size:1em}
.fxs-pw{display:flex;gap:6px}
.fxs-pw input{flex:1;min-width:0;padding:7px 10px}
.fxs-empty{padding:14px;border:1px dashed var(--line);border-radius:var(--rc);color:var(--mu);text-align:center;margin-bottom:10px;font-size:.92em}
.fxs-new{border-top:1px solid var(--line);margin-top:4px;padding-top:12px}
.fxs-nt{font-weight:800;margin-bottom:8px}
.fxs-nr{display:grid;grid-template-columns:140px 1fr;gap:10px;margin-bottom:10px}
.fxs-nr label{display:flex;flex-direction:column;gap:4px;font-size:.86em;color:var(--mu);margin:0;font-weight:700}
@media (max-width:560px){.fxs-nr{grid-template-columns:1fr}}
/* v1.25 요금제 · 시작 카드 (2026-10-30) */
.plan-grid .stat{cursor:default}.meter{height:6px;background:#e9edf3;border-radius:4px;margin-top:9px;overflow:hidden}.meter i{display:block;height:100%;background:var(--p);border-radius:4px;transition:width .3s}
.pl-est{background:#f6f8fb;border:1px solid var(--line);border-radius:10px;padding:10px 12px;line-height:1.55;font-size:.95em}
.onboard{margin-bottom:14px}.onboard .ob{display:flex;flex-direction:column;align-items:flex-start;gap:6px;text-align:left;padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--sf);cursor:pointer;font:inherit;color:inherit;min-width:0}
.onboard .ob:hover{border-color:var(--p);box-shadow:var(--sh)}.onboard .ob b{font-size:1.02em}.onboard .ob span{font-size:.86em;color:var(--mu);line-height:1.45}
.btn.soc.facebook{background:#1877f2;border-color:#1877f2;color:#fff}
@media(max-width:640px){.plan-grid{grid-template-columns:1fr}}

/* v1.29 AI 문의 관리자 */
.ak-conv{max-height:46vh;overflow:auto;border:1px solid var(--line,#e4e7ef);border-radius:12px;padding:10px;background:#f7f8fb;display:flex;flex-direction:column;gap:8px}
.ak-m{max-width:88%;padding:8px 10px;border-radius:10px;background:#fff;border:1px solid #e4e7ef;font-size:13.5px;line-height:1.55}
.ak-m .ak-t{white-space:pre-wrap;word-break:break-word}
.ak-m.ak-u{align-self:flex-end;background:#eef1fe;border-color:#d9e0ff}
.ak-m.ak-s{background:#fff3cf;border-color:#ffe08a}
.ak-w{font-size:11.5px;color:#8a90a2;font-weight:800;margin-bottom:2px}
tr.ak-new td{background:#fffbea}
/* v1.30 데모 보기(읽기 전용) 띠 */
.demo-bar.demo-ro{background:#161d33;color:#fff;border-color:#161d33}
.demo-bar.demo-ro b{color:#ffd166}
.demo-bar.demo-ro .btn:not(.p){background:transparent;color:#fff;border-color:rgba(255,255,255,.45)}

/* 10-30 문서 첫 쪽 썸네일 — 큰 아이콘 보기 */
.fx-tiles.big{grid-template-columns:repeat(auto-fill,minmax(134px,1fr))} .fx-tiles.big .fx-ic{width:96px;height:96px} .fx-tiles.big .fx-ic img{max-width:96px;max-height:96px}
.fx-tiles.big .fx-ic img.pg{object-fit:contain;background:#fff;border:1px solid rgba(15,23,42,.10);box-shadow:0 3px 10px rgba(15,23,42,.16)}
.fx-ext{position:absolute;right:2px;bottom:-3px;font-size:9px;font-weight:800;line-height:1;padding:3px 5px;border-radius:5px;color:#fff;background:#64748b;letter-spacing:.02em}
.fx-ext.pdf{background:#e5484d} .fx-ext.ppt,.fx-ext.pptx{background:#f76b15} .fx-ext.xls,.fx-ext.xlsx{background:#30a46c} .fx-ext.doc,.fx-ext.docx{background:#3e63dd}

/* v1.31 데모 2종 · 요금제 색 메뉴 · 엔터프라이즈 전체 메뉴 (10-30) */
.lvd{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--tc,#94a3b8);flex:none;box-shadow:0 0 0 2px color-mix(in srgb,var(--tc,#94a3b8) 22%,transparent)}
.nav .mg .lvd{margin-left:8px} .nav .nsec{font-size:10.5px;font-weight:800;letter-spacing:.1em;color:rgba(255,255,255,.4);padding:14px 12px 4px}
.nav .mg.lk,.ytabs .tab.lk,.mmp-i.lk{opacity:.36} .ytabs .tab .lvd{margin-left:6px;width:7px;height:7px}
.lens-bar{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;margin:0 0 14px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--sf)}
.lb-mode{display:inline-flex;background:var(--sf2);border-radius:999px;padding:3px;gap:2px}
.lb-mode button{border:0;background:transparent;padding:7px 13px;border-radius:999px;font-weight:800;font-size:.86em;color:var(--mu);cursor:pointer;white-space:nowrap}
.lb-mode button.on{background:#161d33;color:#fff;box-shadow:0 2px 6px rgba(22,29,51,.25)}
.lb-tiers{display:flex;flex-wrap:wrap;align-items:center;gap:6px} .lb-l{font-size:.8em;color:var(--mu);margin-right:2px}
.lb-t{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:var(--sf);border-radius:999px;padding:5px 11px;font-size:.84em;font-weight:700;cursor:pointer;color:var(--tx)}
.lb-t:hover{border-color:var(--tc,#94a3b8)} .lb-t.on{border-color:var(--tc);background:color-mix(in srgb,var(--tc) 14%,var(--sf))} .lb-t.op{cursor:default}
.lb-n{font-size:.8em;font-weight:700;margin-left:4px} .lb-x{border:0;background:none;color:var(--p);font-weight:800;font-size:.84em;cursor:pointer}
.lb-tools{margin-left:auto;display:flex;gap:6px}
.lb-tools button{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:var(--sf);border-radius:9px;padding:7px 11px;font-weight:700;font-size:.84em;cursor:pointer;color:var(--tx);white-space:nowrap}
.lb-tools button:hover{background:var(--sf2)} .lb-tools .i{width:16px;height:16px}
.lb-tools kbd{font:700 10px/1 inherit;padding:3px 5px;border-radius:4px;background:var(--sf2);color:var(--mu);margin-left:2px}
@media (max-width:860px){.lb-tools kbd,.lb-l,.lb-n.mu{display:none} .lb-tools{margin-left:0}}
.ft-hero{position:relative;border-radius:18px;overflow:hidden;background:#eef1f6;aspect-ratio:16/5;min-height:230px;margin-bottom:16px}
.ft-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:70% 50%}
.ft-hero::after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,rgba(22,29,51,.92) 0%,rgba(22,29,51,.62) 42%,rgba(22,29,51,0) 74%)}
.ft-cap{position:absolute;left:30px;bottom:26px;z-index:1;color:#fff;max-width:58%}
.ft-g{display:inline-flex;align-items:center;gap:6px;font-size:.88em;font-weight:800;opacity:.86} .ft-g .i{width:17px;height:17px}
.ft-cap h1{font-size:32px;font-weight:900;margin:6px 0 12px;letter-spacing:-.02em;color:#fff;line-height:1.2}
.ft-tier{display:inline-flex;align-items:center;gap:8px;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.26);padding:7px 13px;border-radius:999px;font-weight:700;font-size:.9em;line-height:1.35}
.ft-fav{position:absolute;right:16px;top:16px;z-index:1;display:inline-flex;align-items:center;gap:6px;border:0;background:rgba(255,255,255,.94);color:#161d33;border-radius:999px;padding:8px 13px;font-weight:800;cursor:pointer}
.ft-fav .i{width:16px;height:16px} .ft-fav.on .i,.mmp-s.on .i{fill:#ffb703;stroke:#e09b00}
.ft-grid{display:grid;grid-template-columns:1.25fr 1fr;gap:14px;align-items:start}
.ft-card{background:var(--sf);border:1px solid var(--line);border-radius:14px;padding:18px 20px} .ft-card h3{font-size:15.5px;font-weight:800;margin:0 0 12px}
.ft-opt{padding:11px 0;border-top:1px dashed var(--line)} .ft-opt:first-of-type{border-top:0;padding-top:0}
.ft-opt b{display:block;margin-bottom:4px} .ft-opt p{margin:0;color:var(--mu);font-size:.93em;line-height:1.6}
.ft-tt{width:100%;border-collapse:collapse;font-size:.9em;table-layout:fixed} .ft-tt th,.ft-tt td{padding:10px 4px;text-align:center;border-bottom:1px solid var(--line)}
.ft-tt th{font-weight:800;white-space:nowrap} .ft-tt th .lvd{margin-right:5px;vertical-align:1px}
.ft-tt td.y{color:#16a34a;font-weight:800} .ft-tt td.n{color:var(--mu)} .ft-tt td.o{color:#64748b;font-weight:700}
.ft-note{font-size:.84em;color:var(--mu);margin:12px 0 0;line-height:1.6} .ft-note a{color:var(--p);font-weight:700;white-space:nowrap} .ft-go{margin-top:14px;display:inline-flex}
@media (max-width:860px){.ft-grid{grid-template-columns:1fr} .ft-cap{left:18px;right:18px;bottom:18px;max-width:none} .ft-cap h1{font-size:24px} .ft-hero{aspect-ratio:auto;min-height:250px} .ft-hero::after{background:linear-gradient(0deg,rgba(22,29,51,.94) 0%,rgba(22,29,51,.55) 55%,rgba(22,29,51,.05) 100%)}}
#layer .modal.mm-map{max-width:1180px}
.mmp-h{display:flex;align-items:center;gap:8px 12px;margin-bottom:14px;flex-wrap:wrap} .mmp-h h2{margin:0;font-size:19px} .mmp-h .mu{font-size:.86em}
.mmp-lg{display:inline-flex;align-items:center;gap:5px;font-size:.8em;font-weight:700}
.mmp-g{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}
.mmp-sec{grid-column:1/-1;font-size:11px;font-weight:800;color:var(--mu);letter-spacing:.1em;margin-top:6px}
.mmp-c{border:1px solid var(--line);border-radius:12px;padding:12px 10px;background:var(--sf)}
.mmp-c h4{display:flex;align-items:center;gap:8px;margin:0 0 6px;font-size:14px;padding:0 4px} .mmp-c h4 .i{width:18px;height:18px;color:var(--p)} .mmp-c h4 .lvd{margin-left:auto}
.mmp-i{display:flex;align-items:center;gap:8px;padding:6px;border-radius:8px;cursor:pointer;font-size:.92em} .mmp-i:hover{background:var(--sf2)} .mmp-i .grow{min-width:0}
.mmp-s{border:0;background:none;padding:2px;cursor:pointer;color:#c3cad8;display:inline-flex} .mmp-s .i{width:15px;height:15px} .mmp-i:not(:hover) .mmp-s:not(.on){opacity:.5}
#layer .modal.mf{max-width:560px}
.mf-in{width:100%;font-size:17px;padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:var(--sf);color:var(--tx)}
.mf-ls{margin-top:10px;max-height:56vh;overflow:auto} .mf-it{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:8px;cursor:pointer}
.mf-it.k,.mf-it:hover{background:var(--sf2)} .mf-it small{color:var(--mu);margin-left:auto} .mf-none{padding:14px 10px;color:var(--mu)} .mf-hint{margin-top:8px;font-size:.8em;color:var(--mu)}

/* v1.31 서버 이중화 실시간 카드 */
.ft-live2{grid-column:1/-1} .ft-live2 h3 small{font-weight:600;color:var(--mu);font-size:.82em}
.hl2{display:grid;grid-template-columns:1fr 1.1fr 1fr;gap:12px}
.hl2-n{border:1px solid var(--line);border-radius:14px;padding:14px 16px;background:var(--sf2)} .hl2-n em{font-style:normal;font-weight:900;display:block;margin-bottom:8px}
.hl2-n ul{list-style:none;margin:0;padding:0;display:grid;gap:8px;font-size:.93em} .hl2-n li{display:flex;align-items:center;gap:8px}
.hl2-n li i{width:8px;height:8px;border-radius:50%;background:#22c55e;flex:none} .hl2-n li.bad i{background:#ef4444}
.hl2-m{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;text-align:center}
.hl2-f{display:flex;gap:6px} .hl2-f i{width:9px;height:9px;border-radius:50%;background:var(--p);opacity:.2;animation:hlf2 1.4s infinite}
.hl2-f i:nth-child(2){animation-delay:.15s} .hl2-f i:nth-child(3){animation-delay:.3s} .hl2-f i:nth-child(4){animation-delay:.45s} .hl2-f i:nth-child(5){animation-delay:.6s}
@keyframes hlf2{0%,100%{opacity:.2}50%{opacity:1}} .ft-live2.down .hl2-f i{animation:none;background:#ef4444}
.hl2-res{font-size:.86em;color:var(--mu);min-height:18px} .hl2-res b{color:var(--p);font-size:1.12em}
@media (max-width:860px){.hl2{grid-template-columns:1fr}}

/* v1.32 체험용 ERP 연동 (erp.yday.kr, 2026-10-30) — 기능 화면 바로가기 · «체험용 ERP 에서 실제로» 카드 · 렌즈 바 ERP 열기 */
.ft-gos{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.ft-gos .ft-go{margin-top:0}
.ft-erp{grid-column:1/-1}
.ft-erp .fe-in{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:18px;align-items:center}
.ft-erp .fe-img{width:100%;border-radius:12px;display:block;background:var(--sf2);aspect-ratio:3/2;object-fit:cover}
.ft-erp h3 small{font-weight:600;color:var(--mu);font-size:.82em}
.ft-erp p{color:var(--mu);margin:6px 0 12px;line-height:1.7}
.fe-k{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:12px}
.fe-k:empty{display:none}
.fe-k span{background:var(--sf2);border-radius:10px;padding:9px 11px;display:flex;flex-direction:column;gap:2px;min-width:0}
.fe-k em{font-style:normal;font-size:.78em;color:var(--mu);font-weight:700}
.fe-k b{font-size:1.12em;letter-spacing:-.02em}
.fe-gos{display:flex;flex-wrap:wrap;gap:8px}
.fe-log{margin-top:14px;border-top:1px solid var(--line);padding-top:10px}
.fe-log:empty{display:none}
.fe-lh{font-weight:800;font-size:.86em;margin-bottom:6px}
.fe-r{display:flex;align-items:center;gap:8px;padding:5px 0;font-size:.9em;flex-wrap:wrap}
.fe-r>span:nth-child(2){flex:1;min-width:160px}
.lb-tools .lb-erp{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--p);background:var(--pl);border-radius:9px;padding:7px 11px;font-weight:800;font-size:.84em;color:var(--p);white-space:nowrap;text-decoration:none}
.lb-tools .lb-erp:hover{background:var(--pl2)}
.lb-tools .lb-erp .i{width:16px;height:16px}
@media(max-width:860px){.ft-erp .fe-in{grid-template-columns:minmax(0,1fr)}.fe-k{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* v1.33 목록 열 맞춤 — 계약관리 · 전자계약 · 거래처 · 머리줄 + 같은 열 · 폰은 카드 */
.gl{display:flex;flex-direction:column;gap:5px}
.gl > .gl-h,.gl > .gr{display:grid;grid-template-columns:var(--gc);gap:0 10px;align-items:center}
.gl > .gl-h{padding:0 11px 4px;font-size:.74em;font-weight:700;color:var(--mu2)}
.gl > .gl-h > span,.gl .c{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gl > .gr{padding:8px 10px;min-height:42px}
.gl .c.no{font-size:.8em;color:var(--mu);font-variant-numeric:tabular-nums}
.gl .c.pt{color:var(--mu);font-size:.92em}
.gl .c.k{overflow:visible}
.gl .c.st{display:flex;gap:4px;flex-wrap:wrap;overflow:visible;white-space:normal}
.gl .c.r,.gl > .gl-h > .r{text-align:right}
.gl .c.num,.gl .c.tn{font-variant-numeric:tabular-nums} .gl .c.num{font-weight:700} .gl .c.tn{font-size:.92em}
.gl .c.sm{font-size:.8em}
.dl-gl{--gc:110px 84px minmax(0,1.6fr) minmax(0,1fr) 112px 46px 42px 104px 58px 78px}
.dl-gl.nok{--gc:110px minmax(0,1.7fr) minmax(0,1fr) 112px 46px 42px 104px 58px 78px}
.kt-gl{--gc:110px minmax(0,1.6fr) minmax(0,1fr) 150px 104px 58px 116px 78px}
.cn-gl{--gc:62px minmax(0,1.2fr) minmax(0,1fr) 88px 122px minmax(0,1.2fr) 70px 78px}
@media (max-width:1280px){
  .gl .w1{display:none}
  .dl-gl{--gc:104px 84px minmax(0,1.6fr) minmax(0,1fr) 112px 100px 78px}
  .dl-gl.nok{--gc:104px minmax(0,1.7fr) minmax(0,1fr) 112px 100px 78px}
  .kt-gl{--gc:104px minmax(0,1.6fr) minmax(0,1fr) 150px 100px 78px}
  .cn-gl{--gc:62px minmax(0,1.3fr) minmax(0,1fr) 88px 122px 70px}
}
@media (max-width:860px){
  .gl > .gl-h{display:none}
  .gl > .gr{display:flex;flex-wrap:wrap;column-gap:8px;row-gap:4px}
  .gl > .gr > .c{flex:none;max-width:100%}
  .gl > .gr > .c:empty,.gl > .gr > .c.no{display:none}
  .gl > .gr > .c.tt{flex:1 1 calc(100% - 92px);white-space:normal;line-height:1.35}
  .kt-gl > .gr > .c.tt{flex-basis:100%}
  .gl .c.st{flex-wrap:nowrap}
}

/* v1.33 안전 여백 — 카톡 등 안드로이드 앱 안 브라우저(html.inapp)는 0 (index.html 머리의 작은 스크립트가 붙인다) */
:root{--sab:env(safe-area-inset-bottom,0px);--sat:env(safe-area-inset-top,0px)}html.inapp{--sab:0px;--sat:0px}

/* v1.37 로그인 · 가입 화면 다시(10-31 진백 «웹 모양을 완전히 다시 깔끔하게») — PC 는 가운데 카드, 폰 · 앱은 화면 가득(카드 없음), 입력칸은 채운 칸, 소셜 단추에 로고, 앱(html.app)에서는 아래 사이트 링크 숨김 · 눌림 하이라이트 · 당김 튕김 없음 */
.auth{background:radial-gradient(1100px 560px at 50% -12%,#e6ebff 0,rgba(230,235,255,0) 62%),#f4f6fb;padding:32px 20px}
.auth .card{max-width:420px;border:0;border-radius:28px;box-shadow:0 1px 2px rgba(22,29,51,.04),0 18px 50px rgba(22,29,51,.1);padding:34px 30px 26px}
.auth .logo{display:flex;flex-direction:column;align-items:center;gap:10px;font-size:1.75em;letter-spacing:-.02em;margin-bottom:6px;line-height:1.1}
.auth-logo{width:60px;height:60px;margin:0;vertical-align:0}
.auth .sub{font-size:14.5px;margin-bottom:24px;color:var(--mu)}
.auth .tabs{display:grid;grid-template-columns:1fr 1fr;gap:4px;background:#eef1f7;border:0;border-radius:14px;padding:4px;margin:0 0 20px}
.auth .tabs button{flex:auto;height:42px;padding:0;border:0;border-radius:11px;background:transparent;font-size:15px;font-weight:800;color:var(--mu)}
.auth .tabs button.on{background:#fff;color:var(--tx);box-shadow:0 1px 3px rgba(22,29,51,.12)}
.auth .soc-row{display:grid;gap:10px;margin-bottom:6px}
.auth .btn.soc{position:relative;display:flex;width:100%;height:52px;padding:0 48px;border-radius:14px;font-size:15.5px;font-weight:800;justify-content:center}
.auth .btn.soc::before{content:"";position:absolute;left:18px;top:50%;width:22px;height:22px;margin-top:-11px;background:center/contain no-repeat}
.auth .btn.soc.kakao{background:#fee500;border:0;color:#191600}
.auth .btn.soc.kakao::before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23191600' d='M12 3C6.48 3 2 6.58 2 11c0 2.86 1.88 5.37 4.71 6.79l-.96 3.53c-.08.31.27.56.54.38l4.2-2.78c.5.05 1 .08 1.51.08 5.52 0 10-3.58 10-8S17.52 3 12 3z'/%3E%3C/svg%3E")}
.auth .btn.soc.google{background:#fff;border:1px solid #dadce0;color:#1f1f1f}
.auth .btn.soc.google::before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Cpath fill='%23EA4335' d='M24 9.5c3.54 0 6.71 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z'/%3E%3Cpath fill='%234285F4' d='M46.98 24.55c0-1.57-.15-3.09-.38-4.55H24v9.02h12.94c-.58 2.96-2.26 5.48-4.78 7.18l7.73 6c4.51-4.18 7.09-10.36 7.09-17.65z'/%3E%3Cpath fill='%23FBBC05' d='M10.53 28.59c-.48-1.45-.76-2.99-.76-4.59s.27-3.14.76-4.59l-7.98-6.19C.92 16.46 0 20.12 0 24c0 3.88.92 7.54 2.56 10.78l7.97-6.19z'/%3E%3Cpath fill='%2334A853' d='M24 48c6.48 0 11.93-2.13 15.89-5.81l-7.73-6c-2.15 1.45-4.92 2.3-8.16 2.3-6.26 0-11.57-4.22-13.47-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z'/%3E%3C/svg%3E")}
.auth .or{margin:12px 0 6px;font-size:12.5px;color:var(--mu2)}
.auth .field{margin-bottom:12px}
.auth .field label{display:block;font-size:13px;font-weight:800;color:var(--mu);margin:0 0 6px 2px}
.auth .field input:not([type=checkbox]){width:100%;height:52px;border-radius:14px;border:1.5px solid transparent;background:#f3f5fa;padding:0 16px;font-size:16px;color:var(--tx);outline:0;box-shadow:none;transition:border-color .15s,background .15s}
.auth .field input:not([type=checkbox]):focus{background:#fff;border-color:var(--p)}
.auth .field .hint{font-size:12.5px;margin-top:6px;line-height:1.55}
.auth .btn.p.full{height:54px;padding:0;border-radius:14px;font-size:16.5px;font-weight:900;margin-top:6px}
.auth .legal-note{font-size:12.5px;line-height:1.6;margin:12px 0 0}
.auth .btn.ghost.full{height:50px;padding:0;border-radius:14px;border:0;background:#eef1fe;color:#3b57d6;font-weight:800;margin-top:14px}
.auth .legal-links{margin-top:18px;font-size:12.5px}.auth .legal-links a{color:var(--mu)}
.auth .err{border-radius:12px;padding:11px 14px;font-size:14px}
.auth .agree{font-size:13.5px;line-height:1.55;margin:2px 0 14px}
@media(max-width:600px){.auth{background:#fff;padding:0;align-items:stretch}.auth .card{max-width:none;min-height:100vh;min-height:100dvh;border-radius:0;box-shadow:none;display:flex;flex-direction:column;padding:calc(40px + var(--sat,0px)) 22px calc(22px + var(--sab,0px))}.auth .logo{font-size:1.9em}.auth-logo{width:68px;height:68px}.auth .legal-links{margin-top:auto;padding-top:22px}}
html.app .auth .legal-links{display:none}
html.app,html.app body{overscroll-behavior:none}
html.app *{-webkit-tap-highlight-color:transparent}
html.app .btn,html.app button,html.app nav a{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}
/* v1.52 폰 로그인 한 화면(11-02 진백 «한 화면에 보이면 좋겠다») — 화면 확대로 폭이 340px 쯤인 폰 · 360×640 에서도 로그인 단추 · 샘플 둘러보기 · 아래 링크까지 스크롤 없이.
   로그인 칸 이름표는 화면에서만 숨김(placeholder · aria-label 로), 남는 높이는 로고 위 · 아래 링크 위로 나눠 가운데에. 높이 700px 이하면 로고를 가로로 */
@media (max-width:600px){
  .auth .card{padding:calc(14px + var(--sat,0px)) 20px calc(12px + var(--sab,0px))}
  .auth .logo{margin-top:auto;gap:6px;font-size:1.6em;margin-bottom:4px}
  .auth-logo{width:52px;height:52px}
  .auth .sub{font-size:13px;margin-bottom:16px}
  .auth .tabs{padding:3px;border-radius:12px;margin-bottom:14px}
  .auth .tabs button{height:38px;font-size:14.5px;border-radius:10px}
  .auth .soc-row{gap:8px;margin-bottom:2px}
  .auth .btn.soc{height:46px;font-size:15px;border-radius:12px}
  .auth .or{margin:10px 0 4px}
  .auth form[data-submit=login] .field label{position:absolute;width:1px;height:1px;margin:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .auth .field{margin-bottom:10px}
  .auth .field input:not([type=checkbox]){height:48px;border-radius:12px}
  .auth .btn.p.full{height:50px;border-radius:12px;font-size:16px;margin-top:2px}
  .auth .legal-note{font-size:11.5px;line-height:1.5;margin-top:8px;word-break:keep-all;text-wrap:balance}
  .auth .btn.ghost.full{height:44px;border-radius:12px;font-size:14.5px;margin-top:10px}
  .auth .legal-links{padding-top:14px;font-size:12px}
}
@media (max-width:600px) and (max-height:700px){
  .auth .logo{flex-direction:row;justify-content:center;gap:8px;font-size:1.45em}
  .auth-logo{width:38px;height:38px}
  .auth .sub{margin-bottom:12px}
}
@media (max-width:600px) and (max-height:600px){
  .auth .sub{display:none}
  .auth .logo{margin-bottom:12px}
}
/* v1.53 로그인 아래 단추 둘로(11-02 진백 «샘플과 HOME 2개로 분리») — 샘플 둘러보기 | 홈(onulpan.com 첫 화면), 한 줄 반반 */
.auth .auth-alt{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:14px}
.auth .auth-alt .btn{height:50px;padding:0 10px;border:0;border-radius:14px;justify-content:center;gap:6px;font-size:15px;font-weight:800;background:#eef1fe;color:#3b57d6;text-decoration:none}
.auth .auth-alt a.btn{background:#f1f3f8;color:#4a5468}
.auth .auth-alt .btn:hover{filter:brightness(.97)}
.auth .auth-alt .btn svg{width:18px;height:18px;flex:none}
@media (max-width:600px){
  .auth .auth-alt{margin-top:10px}
  .auth .auth-alt .btn{height:44px;border-radius:12px;font-size:14.5px}
}
