:root{
  --bg:#f1f5f9; --panel:#fff; --line:#e2e8f0; --ink:#0f172a; --muted:#64748b;
  --green:#16a34a; --yellow:#d97706; --red:#dc2626; --gray:#94a3b8;
}
*{box-sizing:border-box}
body{margin:0;font-family:"Pretendard",system-ui,"Segoe UI","Malgun Gothic",sans-serif;background:var(--bg);color:var(--ink)}
a{color:#2563eb;text-decoration:none}
.muted{color:var(--muted)}
.small{font-size:.82rem}
.danger{color:var(--red);font-weight:700}
.r{text-align:right}.c{text-align:center}

/* topbar */
.topbar{display:flex;align-items:center;gap:16px;background:#0f172a;color:#fff;padding:10px 20px;flex-wrap:wrap}
.topbar a{color:#fff}
.brand a{font-weight:800}.brand .muted{color:#94a3b8;font-size:.78rem;margin-left:6px}
.mainnav{display:flex;gap:4px;flex:1;overflow-x:auto;-webkit-overflow-scrolling:touch}
.mainnav a{white-space:nowrap}
.mainnav a{padding:8px 14px;border-radius:8px;font-weight:600;font-size:.92rem}
.mainnav a.on,.mainnav a:hover{background:#1e293b}
.userbox{font-size:.85rem;color:#cbd5e1}
.container{max-width:1180px;margin:22px auto;padding:0 18px}
.foot{max-width:1180px;margin:30px auto;padding:0 18px;font-size:.8rem}
.page-title{font-size:1.5rem;margin:.2em 0 .6em}

/* cards */
.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:18px}
.card{background:var(--panel);border:1px solid var(--line);border-top:4px solid var(--accent);border-radius:12px;padding:16px;box-shadow:0 1px 3px rgba(0,0,0,.04)}
.card-top{display:flex;justify-content:space-between;align-items:center}
.code{font-weight:800;color:var(--accent);letter-spacing:.5px}
.card-title{font-size:1rem;margin:.4em 0 .2em;line-height:1.35;min-height:2.6em}
.kv{margin:10px 0}
.dday{font-weight:800}
.dday-red{color:var(--red)}.dday-yellow{color:var(--yellow)}.dday-green{color:var(--green)}.dday-gray{color:var(--gray)}
.badge-line{margin-top:10px;font-size:.84rem;background:#fef2f2;color:#be123c;padding:6px 10px;border-radius:8px}

/* dot signal */
.dot{width:14px;height:14px;border-radius:50%;display:inline-block}
.dot-green{background:var(--green)}.dot-yellow{background:var(--yellow)}.dot-red{background:var(--red)}.dot-gray{background:var(--gray)}

/* meter */
.meter-row{margin:8px 0;font-size:.82rem}
.meter{height:8px;background:#e2e8f0;border-radius:6px;overflow:hidden;margin:3px 0}
.meter.inline{display:inline-block;width:90px;vertical-align:middle;margin-right:6px}
.meter-fill{height:100%;background:#2563eb;border-radius:6px}
.meter-fill.over{background:var(--red)}

/* layout grids */
.grid-2{display:grid;grid-template-columns:1.3fr 1fr;gap:16px;align-items:start}
.stack{display:flex;flex-direction:column;gap:16px}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px;margin-bottom:16px}
.panel h2{font-size:1.05rem;margin:.1em 0 .7em}

/* tables */
.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.tbl{width:100%;border-collapse:collapse;font-size:.9rem}
.tbl th,.tbl td{padding:8px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.tbl th{color:var(--muted);font-weight:600;font-size:.8rem}
.small-tbl th,.small-tbl td{padding:5px 8px;font-size:.82rem}

/* pills/tags */
.pill{display:inline-block;color:#fff;font-size:.72rem;font-weight:700;padding:2px 8px;border-radius:20px}
.tag{display:inline-block;color:#fff;font-size:.72rem;padding:1px 7px;border-radius:5px}
.src{font-size:.74rem;padding:1px 7px;border-radius:5px}
.src-gov{background:#dbeafe;color:#1e40af}.src-cash{background:#dcfce7;color:#166534}.src-kind{background:#fef9c3;color:#854d0e}

/* alerts */
.alert{background:#fff7ed;border:1px solid #fed7aa;color:#9a3412;padding:10px 12px;border-radius:8px;margin:8px 0}
.alert-red{background:#fef2f2;border-color:#fecaca;color:#b91c1c}
.alert-ok{background:#f0fdf4;border-color:#bbf7d0;color:#166534}
.alert-gray{background:#f8fafc;border-color:#e2e8f0;color:#475569}

/* stats */
.stat-row{display:flex;gap:22px;flex-wrap:wrap;margin:6px 0 12px}
.stat b{display:block;font-size:1.05rem}
.proj-head{display:flex;align-items:center;gap:10px;margin-bottom:6px}
.proj-head h2{margin:0;font-size:1rem}

/* timeline */
.legend{margin:6px 0 14px;display:flex;gap:8px}
.month{margin-bottom:14px}
.month-h{font-size:1.05rem;border-left:4px solid #2563eb;padding-left:8px;margin:.5em 0}
.timeline{list-style:none;padding:0;margin:0}
.tl{display:flex;gap:10px;align-items:center;padding:7px 10px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.tl.done{opacity:.5}
.tl-date{font-weight:700;width:46px}
.tl-dday{font-size:.78rem;color:var(--muted);width:54px}
.tl-title{font-weight:600}

.cash{margin:.2em 0;padding-left:1.1em}.cash li{margin:.3em 0}
.checklist{list-style:none;padding-left:0}.checklist li{padding:3px 0}
.badge-line,.result h2{font-size:1rem}

/* forms */
.form{display:flex;flex-direction:column;gap:10px;max-width:420px}
.form label,.login-card label{display:flex;flex-direction:column;font-size:.85rem;gap:4px;font-weight:600}
.form input,.form select,.login-card input{padding:9px 10px;border:1px solid var(--line);border-radius:8px;font-size:.95rem}
.form button,.login-card button{background:#2563eb;color:#fff;border:0;padding:11px;border-radius:8px;font-weight:700;cursor:pointer;font-size:.95rem}
.form button:hover,.login-card button:hover{background:#1d4ed8}
details summary{cursor:pointer;padding:6px 0;font-weight:600}
.form textarea{padding:9px 10px;border:1px solid var(--line);border-radius:8px;width:100%;resize:vertical}
.chk{flex-direction:row !important;align-items:center;gap:8px}
.btn-ai{background:#7c3aed;color:#fff;border:0;padding:9px 14px;border-radius:8px;font-weight:700;cursor:pointer}
.btn-ai:hover{background:#6d28d9}
.ai-out{background:#0f172a;color:#e2e8f0;padding:14px;border-radius:10px;white-space:pre-wrap;word-break:break-word;font-size:.85rem;line-height:1.6;max-height:520px;overflow:auto}

/* login */
.login-body{display:flex;align-items:center;justify-content:center;min-height:100vh;background:#0f172a}
.login-card{background:#fff;padding:34px;border-radius:14px;width:340px;display:flex;flex-direction:column;gap:14px}
.login-card h1{margin:0;font-size:1.3rem}

/* ===== 반응형 ===== */
@media(max-width:900px){
  .cards{grid-template-columns:1fr}
  .grid-2{grid-template-columns:1fr}
  .card-title{min-height:0}
}
@media(max-width:600px){
  .topbar{gap:8px;padding:9px 12px}
  .brand .muted{display:none}
  .mainnav{order:3;width:100%;flex:1 0 100%;padding-bottom:2px}
  .mainnav a{padding:7px 11px;font-size:.86rem}
  .userbox{margin-left:auto;font-size:.8rem}
  .container{margin:14px auto;padding:0 12px}
  .page-title{font-size:1.25rem}
  .panel{padding:13px}
  /* 넓은 표는 가로 스크롤로 보호 */
  .panel{overflow-x:auto}
  .panel .tbl,.table-wrap .tbl{min-width:520px}
  .stat-row{gap:14px}
  .tl{gap:7px}
  .form,.login-card{max-width:100%}
}
