:root{--bg:#f7f5f0;--surface:#fff;--muted:#eeebe3;--border:#e2ddd1;--text:#1f2538;--text2:#5b6275;--ink:#2b3452;--on-ink:#f7f5f0;--amber:#cc7a1a;--accent-soft:#fbebd3;--on-accent-soft:#94560f;--calm:#5e9c84;--calm-soft:#e2efe8;--on-calm-soft:#3d6b59;--danger:#b4423a}@media (prefers-color-scheme:dark){:root{--bg:#141826;--surface:#1d2335;--muted:#262d42;--border:#323a52;--text:#f7f5f0;--text2:#a6abba;--ink:#f7f5f0;--on-ink:#141826;--accent-soft:#3a2c17;--on-accent-soft:#f0b866;--calm-soft:#1f3530;--on-calm-soft:#8cc4ae}}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);word-break:keep-all;margin:0;font:15px/1.6 Pretendard,Noto Sans KR,system-ui,sans-serif}a{color:inherit}.shell{max-width:1120px;margin:0 auto;padding:24px 16px 64px}.top{flex-wrap:wrap;align-items:center;gap:16px;margin-bottom:24px;display:flex}.brand{color:var(--ink);align-items:center;gap:8px;font-size:20px;font-weight:800;text-decoration:none;display:flex}.nav{flex-wrap:wrap;gap:4px;display:flex}.nav a{color:var(--text2);border-radius:999px;padding:6px 12px;text-decoration:none}.nav a:hover{background:var(--muted);color:var(--text)}h1{margin:0 0 4px;font-size:26px}h2{margin:0 0 12px;font-size:18px}.sub{color:var(--text2);margin:0 0 20px}.grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin-bottom:16px;display:grid}.card{background:var(--surface);border:1px solid var(--border);border-radius:16px;margin-bottom:16px;padding:16px}.card.calm{background:var(--calm-soft);border-color:var(--calm-soft)}.card.warm{background:var(--accent-soft);border-color:var(--accent-soft)}.kpi .label{color:var(--text2);font-size:13px}.kpi .value{font-size:30px;font-weight:800;line-height:1.2}.kpi .goal{color:var(--text2);font-size:13px}.bar{background:var(--muted);border-radius:4px;height:8px;margin-top:8px;overflow:hidden}.bar>span{background:var(--calm);height:100%;display:block}.bar.amber>span{background:var(--amber)}.badge{background:var(--calm-soft);color:var(--on-calm-soft);border-radius:999px;padding:2px 10px;font-size:12px;font-weight:600;display:inline-block}.badge.warn{background:var(--accent-soft);color:var(--on-accent-soft)}.badge.err{background:var(--danger);color:#fff}.tablewrap{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:14px}th,td{text-align:left;border-bottom:1px solid var(--border);vertical-align:top;padding:8px 10px}th{color:var(--text2);white-space:nowrap;font-weight:600}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}details summary{cursor:pointer;font-weight:600}.steps{color:var(--text2);margin:8px 0 0;padding-left:20px}textarea{border:1px solid var(--border);width:100%;min-height:120px;font:inherit;background:var(--bg);color:var(--text);border-radius:12px;padding:12px}.check{margin:0;padding:0;list-style:none}.check li{border-bottom:1px solid var(--border);padding:6px 0}.check li:before{content:"□ ";color:var(--text2)}.note{color:var(--text2);font-size:13px}.cell{text-align:center}.cell .free{font-weight:700}.cell.empty{background:var(--danger);color:#fff;border-radius:8px}.tabs{flex-wrap:wrap;gap:6px;margin:0 0 16px;display:flex}.tabs a{border:1px solid var(--border);background:var(--surface);color:var(--text2);border-radius:999px;padding:6px 14px;text-decoration:none}.tabs a.on{background:var(--ink);color:var(--on-ink);border-color:var(--ink)}.tabs.small a{padding:4px 10px;font-size:13px}.tabs .count{opacity:.8;margin-left:4px;font-size:12px}.filters{flex-wrap:wrap;gap:8px;margin-bottom:16px;display:flex}.filters select,.filters input,.act input{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:10px;padding:6px 10px}button{font:inherit;border:1px solid var(--ink);background:var(--ink);color:var(--on-ink);cursor:pointer;border-radius:10px;padding:6px 14px}button.danger{background:var(--danger);border-color:var(--danger);color:#fff}.acts{flex-wrap:wrap;gap:12px;display:flex}.act{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.act input{flex:160px;min-width:0}.pager{justify-content:flex-end;gap:16px;margin-top:8px;display:flex}.kpi .value.small{font-size:18px}.linkcard{text-decoration:none;display:block}.badge.st-active{background:var(--calm-soft);color:var(--on-calm-soft)}.badge.st-dormant,.badge.st-withdrawn{background:var(--muted);color:var(--text2)}.badge.st-suspended{background:var(--accent-soft);color:var(--on-accent-soft)}.badge.st-purged{background:var(--muted);color:var(--text2);text-decoration:line-through}.months{align-items:flex-end;gap:6px;padding:8px 0 12px;display:flex;overflow-x:auto}.month{min-width:34px;color:var(--text2);flex-direction:column;align-items:center;gap:2px;font-size:11px;display:flex}.month .col{background:var(--calm);border-radius:4px 4px 0 0;width:22px}.month strong{color:var(--text);font-size:12px}table.cohort td.heat{color:var(--text)}ul{margin:0;padding-left:20px}li{margin:2px 0}.public{max-width:760px}.doc h2{margin:32px 0 8px;font-size:22px}.doc h3{margin:24px 0 6px;font-size:17px}.doc h4{margin:16px 0 4px;font-size:15px}.doc p,.doc li{color:var(--text)}.doc ul,.doc ol{padding-left:20px}.doc details summary{cursor:pointer}.doc code{background:var(--muted);border-radius:6px;padding:1px 6px;font-size:13px}.card.err{background:var(--accent-soft);border-color:var(--amber);color:var(--on-accent-soft)}.nav a.on{background:var(--ink);color:var(--on-ink)}:focus-visible{outline:2px solid var(--amber);outline-offset:2px;border-radius:6px}h1{overflow-wrap:anywhere}.empty{color:var(--text2);text-align:center;padding:24px 8px}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}
