/* ── 색: 무채색 바탕. 색은 상태에만 쓴다 (주의 주황 / 막힘 빨강 / 완료 흐리게) ── */
:root{
  color-scheme:light;
  --bg:#f4f4f1; --paper:#fbfbf9; --ink:#141414; --ink2:#55554f; --ink3:#8b8b84;
  --rule:#141414; --hair:#cdcdc6; --faint:#e6e6e0;
  --warn:#a84a05; --warn-bg:#fdecd6; --warn-line:#e08a2b;
  --block:#b3261e; --block-bg:#fbe5e2;
  --sans:"Pretendard Variable",Pretendard,-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Malgun Gothic",sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,"Cascadia Mono",Consolas,"Malgun Gothic",monospace;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    color-scheme:dark;
    --bg:#0f0f10; --paper:#161617; --ink:#ecece8; --ink2:#aaaaa4; --ink3:#77776f;
    --rule:#ecece8; --hair:#35353a; --faint:#232326;
    --warn:#ffa450; --warn-bg:#2b1c0a; --warn-line:#c8742a;
    --block:#ff7d71; --block-bg:#2d1412;
  }
}
:root[data-theme="dark"]{
  color-scheme:dark;
  --bg:#0f0f10; --paper:#161617; --ink:#ecece8; --ink2:#aaaaa4; --ink3:#77776f;
  --rule:#ecece8; --hair:#35353a; --faint:#232326;
  --warn:#ffa450; --warn-bg:#2b1c0a; --warn-line:#c8742a;
  --block:#ff7d71; --block-bg:#2d1412;
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:15px;line-height:1.55;word-break:keep-all;overflow-wrap:anywhere}
a{color:inherit}
button,input,select{font:inherit;color:inherit}
.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}
.tn{font-variant-numeric:tabular-nums}
code{font-family:var(--mono);font-size:.88em;background:var(--faint);padding:0 .28em;border-radius:2px}
.wrap{max-width:1180px;margin:0 auto;padding:0 20px}

/* ── 승인 대기 띠 (대기 건이 있을 때만) ── */
.alert{background:var(--warn-bg);border-bottom:2px solid var(--warn-line)}
.alert .wrap{display:grid;grid-template-columns:auto 1fr;gap:2px 18px;padding-top:8px;padding-bottom:8px;align-items:baseline}
.alert .hd{font-weight:800;color:var(--warn);font-size:14px;white-space:nowrap}
.alert .rows{display:grid;gap:3px;min-width:0}
.alert .row{display:flex;flex-wrap:wrap;gap:0 10px;align-items:baseline;font-size:13.5px;line-height:1.45}
.alert .row.old{opacity:.5}
.alert .who{font-weight:600}
.alert .tool{font-family:var(--mono);font-size:12.5px}
.alert .when{font-size:12.5px;color:var(--ink2);font-variant-numeric:tabular-nums}
.alert a{font-weight:700;white-space:nowrap;text-underline-offset:3px}
.alert .more{display:none;background:none;border:0;padding:0;margin-left:8px;font-size:12.5px;font-weight:600;color:var(--ink);text-decoration:underline;text-underline-offset:3px;cursor:pointer}

/* ── 상단 띠: 도면 표제란처럼 칸으로 나눈다 ── */
.bar{position:sticky;top:0;z-index:5;background:var(--bg);border-bottom:2px solid var(--rule)}
.bar .wrap{display:flex;align-items:stretch}
.cell{display:flex;flex-direction:column;justify-content:center;min-width:0;padding:7px 16px;border-left:1px solid var(--hair);text-decoration:none;background:none;border-top:0;border-right:0;border-bottom:0;text-align:left}
.cell:first-child{border-left:0;padding-left:0}
.cell:last-child{padding-right:0}
.cell .lb{font-size:10.5px;letter-spacing:.07em;color:var(--ink3);line-height:1.25;white-space:nowrap}
.cell .vl{font-size:13.5px;font-weight:650;line-height:1.4;white-space:nowrap}
.cell.grow{flex:1}
.cell select{width:100%;max-width:260px;border:0;background:transparent;padding:0;margin:0;cursor:pointer;text-overflow:ellipsis}
.cell.home .n{display:none}
.cell.stale{background:var(--warn-bg);padding-right:16px}
.cell.stale .lb,.cell.stale .vl{color:var(--warn)}
.cell.pend{background:var(--warn-bg);cursor:pointer;padding-right:16px}
.cell.pend .lb,.cell.pend .vl{color:var(--warn)}

/* ── 구역 ── */
.sec{border-top:2px solid var(--rule);margin-top:40px;padding-top:9px}
.sec-h{display:flex;align-items:baseline;gap:10px;margin-bottom:10px}
.sec-h h2{font-size:13px;letter-spacing:.09em;font-weight:800;margin:0}
.sec-h .cnt{font-family:var(--mono);font-size:22px;font-weight:600;line-height:1}
.src{margin-left:auto;font-size:11.5px;color:var(--ink3);white-space:nowrap;font-variant-numeric:tabular-nums}
.lbl{font-size:11.5px;letter-spacing:.08em;font-weight:700;color:var(--ink2)}

.chip{display:inline-block;font-size:12.5px;font-weight:750;line-height:1.5;padding:0 7px;border:1.5px solid currentColor;border-radius:2px;white-space:nowrap}
.chip.wait{color:var(--warn);background:var(--warn-bg)}
.chip.block{color:var(--block);background:var(--block-bg)}

/* ── 지금 단계 (가장 크게) ── */
.now{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr);gap:0 44px;padding-top:16px}
.now-top{display:flex;align-items:baseline;gap:10px}
.stage-t{font-size:clamp(28px,5.4vw,46px);font-weight:800;line-height:1.14;letter-spacing:-.022em;margin:4px 0 10px}
.stage-t .n{font-family:var(--mono);font-weight:500;letter-spacing:0;margin-right:.28em}
.stage-s{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:baseline;font-size:15.5px}
.stage-n{margin-top:4px;color:var(--ink2);font-size:14px}
.goal{margin-top:10px;color:var(--ink3);font-size:13px;max-width:60ch}

.memo{margin-top:20px;border:1px solid var(--rule);border-left-width:4px;background:var(--paper)}
.memo-h{display:flex;gap:10px;align-items:baseline;padding:6px 12px;border-bottom:1px solid var(--rule)}
.memo-h .when{font-size:12.5px;color:var(--ink2);font-variant-numeric:tabular-nums}
.memo dl{display:grid;grid-template-columns:5.4em minmax(0,1fr);margin:0}
.memo dt{padding:8px 0 8px 12px;font-size:12.5px;font-weight:750;color:var(--ink2);border-top:1px solid var(--hair);line-height:1.75}
.memo dd{margin:0;padding:8px 12px 8px 0;border-top:1px solid var(--hair);font-size:14.5px}
.memo dt:first-of-type,.memo dt:first-of-type+dd{border-top:0}
.memo dt.warn{color:var(--warn)}
.older{margin-top:8px;font-size:13px}
.older summary{cursor:pointer;color:var(--ink2);padding:4px 0}
.older .m{padding:8px 0;border-top:1px solid var(--hair);color:var(--ink2)}
.older .m b{color:var(--ink);font-weight:650}

/* ── 체크리스트 ── */
.steps{list-style:none;margin:0;padding:0;border-top:1px solid var(--rule)}
.steps li{display:grid;grid-template-columns:16px 2.1em minmax(0,1fr);gap:0 4px;align-items:baseline;padding:6px 0;border-bottom:1px solid var(--hair);font-size:14px}
.box{width:10px;height:10px;border:1.5px solid var(--ink);display:inline-block;transform:translateY(.5px)}
.steps .no{font-family:var(--mono);font-size:12.5px}
.steps .d{display:block;font-size:12px;color:var(--ink3);font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.steps li.done{color:var(--ink3)}
.steps li.done .box{background:var(--ink3);border-color:var(--ink3)}
.steps li.cur{font-weight:750;background:var(--paper);box-shadow:-4px 0 0 var(--ink);padding-left:8px;margin-left:4px}
.steps li.cur .d{white-space:normal;color:var(--ink2)}
.later{margin-top:10px;font-size:12.5px;color:var(--ink3)}
.later b{font-weight:650;color:var(--ink2)}

/* ── 미정 ── */
.open-g{columns:2;column-gap:44px}
.grp{break-inside:avoid;margin:0 0 18px}
.grp summary{display:flex;gap:8px;align-items:baseline;cursor:pointer;list-style:none;border-bottom:1px solid var(--rule);padding:5px 0;font-weight:750;font-size:14px}
.grp summary::-webkit-details-marker{display:none}
.grp summary .c{margin-left:auto;font-family:var(--mono);font-weight:500;font-size:13px}
.grp summary .tag{font-size:11.5px;font-weight:500;color:var(--ink3)}
.grp ul{list-style:none;margin:0;padding:0}
.grp li{position:relative;padding:7px 0 7px 20px;border-bottom:1px solid var(--hair);font-size:14px}
.grp li::before{content:"";position:absolute;left:1px;top:13px;width:9px;height:9px;border:1.5px solid var(--ink)}
.grp .sub{display:block;margin-top:3px;color:var(--ink2);font-size:12.5px}

/* ── 최근 결정 ── */
.dgrp{display:grid;grid-template-columns:4.4em minmax(0,1fr);border-top:1px solid var(--rule)}
.dgrp .day{font-family:var(--mono);font-size:13px;font-weight:600;padding-top:8px}
.dgrp .it{padding:8px 0;border-top:1px solid var(--hair);font-size:14px}
.dgrp .it:first-child{border-top:0}
.why{color:var(--ink3)}
.btn{margin-top:12px;background:none;border:1px solid var(--rule);padding:6px 12px;font-size:13px;font-weight:600;cursor:pointer;border-radius:0}

/* ── 접힌 참조 ── */
.ref{border-bottom:1px solid var(--hair)}
.ref>summary{display:flex;align-items:baseline;gap:10px;padding:12px 0;cursor:pointer;list-style:none;font-weight:750;font-size:15px}
.ref>summary::-webkit-details-marker{display:none}
.ref>summary::before{content:"+";font-family:var(--mono);font-weight:500;width:.9em}
.ref[open]>summary::before{content:"−"}
.ref>summary .c{font-family:var(--mono);font-weight:500;font-size:13px;color:var(--ink2)}
.ref .body{padding:2px 0 22px}
.find{display:flex;gap:10px;align-items:center;margin-bottom:8px}
.find input{flex:1;min-width:0;border:1px solid var(--rule);background:var(--paper);padding:8px 10px;font-family:var(--mono);font-size:13.5px;border-radius:0;outline-offset:2px}
.find .c{font-family:var(--mono);font-size:12.5px;color:var(--ink2);white-space:nowrap}
table{width:100%;border-collapse:collapse;font-size:13.5px}
th{white-space:nowrap;text-align:left;font-size:11px;letter-spacing:.07em;color:var(--ink3);font-weight:650;border-bottom:1px solid var(--rule);padding:6px 12px 6px 0}
td{border-bottom:1px solid var(--hair);padding:6px 12px 6px 0;vertical-align:baseline}
td.k,td.v,td.u{font-family:var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap}
td.k,td.v,td.u{width:1%} td.k{padding-right:28px}
td.k .g{color:var(--ink3)}
td.v{text-align:right;font-weight:600} th.v{text-align:right}
td.u{color:var(--ink2)} td.n{color:var(--ink2);font-size:13px}
tr.warn td.n{color:var(--warn)}
tr.warn td.k{box-shadow:-4px 0 0 var(--warn-line)}
tr.warn td.k{padding-left:8px}
.none{padding:14px 0;color:var(--ink3);font-size:13px}

.doc{border-top:1px solid var(--hair)}
.doc summary{display:grid;grid-template-columns:minmax(0,15em) minmax(0,1fr) auto;gap:0 14px;align-items:baseline;padding:8px 0;cursor:pointer;list-style:none;font-size:14px}
.doc summary::-webkit-details-marker{display:none}
.doc .f{font-family:var(--mono);font-size:13px;font-weight:600}
.doc .ds{color:var(--ink2)}
.doc .mt{font-family:var(--mono);font-size:12px;color:var(--ink3);white-space:nowrap}
.doc .txt{margin:0 0 12px;padding:12px 14px;background:var(--paper);border:1px solid var(--hair);font-size:13.5px}
.doc .txt h4{margin:10px 0 4px;font-size:13.5px} .doc .txt h4:first-child{margin-top:0}
.doc .txt ul{margin:0;padding-left:1.2em} .doc .txt p{margin:4px 0}
.doc .txt .cut{color:var(--ink3);font-size:12.5px;margin-top:8px}

.ses{display:grid;grid-template-columns:5.6em minmax(0,1fr) 5em 8.5em 4.6em;gap:0 12px;align-items:baseline;padding:8px 0;border-top:1px solid var(--hair);font-size:14px}
.ses.head{border-top:0;border-bottom:1px solid var(--rule);font-size:11px;letter-spacing:.07em;color:var(--ink3);font-weight:650;padding:6px 0}
.ses .st{font-size:12.5px;font-weight:700}
.ses .st.wait{color:var(--warn)}
.ses .st.idle{color:var(--ink2);font-weight:500}
.ses.end{color:var(--ink3)} .ses.end .st{font-weight:500}
.ses .tm{font-size:12.5px;font-variant-numeric:tabular-nums}
.ses .lk{text-align:right;font-weight:650;white-space:nowrap}
.ses .lk.no{font-weight:400;color:var(--ink3)}
.links{margin-top:14px;font-size:13.5px;display:flex;flex-wrap:wrap;gap:6px 22px}
.links a{font-weight:650;text-underline-offset:3px}

/* ── 프로젝트 목록 ── */
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:20px;margin-top:6px}
.card{display:block;text-decoration:none;border:1px solid var(--rule);border-top-width:4px;background:var(--paper)}
.card:hover{background:var(--bg)}
.card .top{display:flex;align-items:baseline;gap:10px;padding:12px 14px 0}
.card h3{margin:0;font-size:21px;font-weight:800;letter-spacing:-.01em}
.card .sub{font-size:12.5px;color:var(--ink3)}
.card .mid{padding:10px 14px 14px}
.card .st{font-size:17px;font-weight:700;line-height:1.3;margin:2px 0 6px}
.card .st .n{font-family:var(--mono);font-weight:500;margin-right:.3em}
.card .sx{display:flex;flex-wrap:wrap;gap:4px 8px;align-items:baseline;font-size:13.5px;color:var(--ink2)}
.card .stats{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--rule)}
.card .stat{padding:7px 14px;border-left:1px solid var(--hair)}
.card .stat:first-child{border-left:0}
.card .stat .v{font-family:var(--mono);font-size:17px;font-weight:600;line-height:1.3}
.card .stat.warn{background:var(--warn-bg)} .card .stat.warn .lb,.card .stat.warn .v{color:var(--warn)}
.card .foot{display:flex;gap:8px;align-items:baseline;border-top:1px solid var(--hair);padding:6px 14px;font-size:12.5px;color:var(--ink2)}
.card .foot .tm{margin-left:auto;font-size:12px;font-variant-numeric:tabular-nums}
.card .foot.stale{background:var(--warn-bg);color:var(--warn);font-weight:650}
.lb{font-size:10.5px;letter-spacing:.07em;color:var(--ink3)}


/* ── 폰 폭: 한 줄 배치 ── */
@media (max-width:760px){
  .wrap{padding:0 16px}
  .now{grid-template-columns:minmax(0,1fr);padding-top:12px}
  .now .right{margin-top:26px}
  .goal{display:none}
  .memo{margin-top:14px}
  .open-g{columns:1}
  .sec{margin-top:32px}
  .cell{padding:6px 9px}
  .cell.stale,.cell.pend{padding-right:9px}
  .cell.home .w,.cell.home .lb{display:none}
  .cell.home .n{display:inline;font-size:20px;font-weight:500;line-height:1;padding-right:8px}
  .cell .abs{display:none}
  .alert .wrap{grid-template-columns:minmax(0,1fr);gap:2px}
  .alert .rows:not(.all) .row:nth-child(n+2){display:none}
  .alert .more{display:inline}
  .cards{grid-template-columns:minmax(0,1fr)}
  table,tbody{display:block} thead{display:none}
  tr{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:0 6px;padding:6px 0;border-bottom:1px solid var(--hair)}
  td{border:0;padding:0} td.k,td.v,td.u{width:auto} td.k{white-space:normal;padding-right:0} td.n{grid-column:1/-1}
  tr.warn td.k{padding-left:8px}
  .doc summary{grid-template-columns:minmax(0,1fr) auto} .doc .ds{grid-column:1/-1;grid-row:2;font-size:12.5px}
  .ses{grid-template-columns:minmax(0,1fr) auto;gap:0 10px}
  .ses.head{display:none}
  .ses .ti{grid-column:1/-1;grid-row:1;font-weight:600}
  .ses .st{grid-row:2;grid-column:1} .ses .dv{display:none}
  .ses .tm{grid-row:2;grid-column:1;justify-self:end;padding-right:6px}
  .ses .st{justify-self:start}
  .ses .lk{grid-row:2;grid-column:2}
}

/* ── 로그인·알림·문서 본문 ── */
.login{max-width:340px;margin:16vh auto 0;padding:0 20px}
.login h1{font-size:26px;font-weight:800;letter-spacing:-.02em;margin:0 0 4px}
.login p{margin:0 0 22px;color:var(--ink2);font-size:13.5px}
.login label{display:block;font-size:11.5px;letter-spacing:.07em;color:var(--ink2);font-weight:700;margin:14px 0 4px}
.login input{width:100%;border:1px solid var(--rule);background:var(--paper);padding:10px;font-size:16px;border-radius:0}
.login button{width:100%;margin-top:20px;border:1px solid var(--rule);background:var(--ink);color:var(--bg);padding:11px;font-weight:700;font-size:15px;cursor:pointer;border-radius:0}
.login button:disabled{opacity:.5}
.login .err{margin-top:12px;color:var(--block);font-size:13.5px;min-height:1.5em}
.notice{margin:14px 0 0;padding:8px 12px;border:1px solid var(--block);background:var(--block-bg);color:var(--block);font-size:13.5px;font-weight:600}
.empty{padding:40px 0;color:var(--ink2)}
.foot{margin:56px 0 28px;border-top:1px solid var(--hair);padding-top:10px;display:flex;flex-wrap:wrap;gap:6px 18px;font-size:12.5px;color:var(--ink3)}
.foot button{background:none;border:0;padding:0;color:var(--ink2);text-decoration:underline;text-underline-offset:3px;cursor:pointer;font-size:12.5px}
.foot .r{margin-left:auto}
.doc .tag{font-family:var(--sans);font-size:11px;font-weight:500;color:var(--ink3);margin-left:6px}
.md{overflow-wrap:anywhere}
.md h3,.md h4,.md h5{margin:16px 0 6px;line-height:1.35} .md h3{font-size:16px} .md h4{font-size:14.5px} .md h5{font-size:13.5px}
.md>*:first-child{margin-top:0}
.md p{margin:6px 0} .md .li{padding:2px 0 2px 1.1em;text-indent:-1.1em}
.md blockquote{margin:6px 0;padding:2px 0 2px 10px;border-left:3px solid var(--hair);color:var(--ink2)}
.md pre{margin:8px 0;padding:10px;background:var(--faint);overflow:auto;font-family:var(--mono);font-size:12.5px;line-height:1.5;white-space:pre}
.md hr{border:0;border-top:1px solid var(--hair);margin:12px 0}
.md .tw{overflow-x:auto;margin:8px 0} .md table{font-size:13px;min-width:100%} .md table,.md tbody,.md thead{display:table;width:auto} .md thead{display:table-header-group} .md tbody{display:table-row-group}
.md tr{display:table-row;padding:0;border:0} .md td,.md th{display:table-cell;padding:5px 12px 5px 0;border-bottom:1px solid var(--hair);white-space:normal;width:auto;font-family:var(--sans);text-align:left;vertical-align:top;color:inherit;font-size:13px;letter-spacing:0}
.md th{border-bottom:1px solid var(--rule);font-weight:700}
.cell select.dv{max-width:120px}
