/* 관리자(PC 전용). BI: BLUE #12325B / PINK #FF8FA9 / GRAY #A3A6AA */
:root { --blue:#12325b; --pink:#ff8fa9; --pink-soft:#ffe9ef; --gray:#a3a6aa; --line:#e4e1e6; --bg:#f4f1f4; --text:#1c2a44; --muted:#6c7385;
  --red:#e5484d; --yellow:#f2b01e; --green:#35a56a;
  --font:"Hiragino Sans","Yu Gothic UI","Yu Gothic","Meiryo","Noto Sans JP","Noto Sans SC","Microsoft YaHei","Malgun Gothic",system-ui,sans-serif; --mono:ui-monospace,Consolas,monospace; }
* { box-sizing:border-box; }
body { margin:0; background:var(--bg); color:var(--text); font:14px/1.6 var(--font); min-width:1100px; }
button,input,select { font:inherit; color:inherit; } button { cursor:pointer; }
a { color:var(--blue); }
.layout { display:grid; grid-template-columns:240px 1fr; min-height:100vh; }
.side { background:var(--blue); color:#fff; padding:22px 18px; position:sticky; top:0; height:100vh; display:flex; flex-direction:column; gap:6px; }
.side .logo { background:#fff; border-radius:10px; padding:12px 14px; margin-bottom:14px; line-height:0; }
.side .logo img { width:100%; height:auto; }
.side nav a { display:block; padding:10px 12px; border-radius:10px; color:#d9e2f2; text-decoration:none; font-weight:700; }
.side nav a.on, .side nav a:hover { background:rgba(255,255,255,.12); color:#fff; }
.side .who { margin-top:auto; font-size:12px; color:#b9c6df; word-break:break-all; }
.side select { width:100%; background:rgba(255,255,255,.1); color:#fff; border:1px solid rgba(255,255,255,.25); border-radius:8px; padding:7px 8px; margin:8px 0; }
.side select option { color:#000; }
.side .clock { font:12px var(--mono); color:#d2ef87; margin-top:8px; }
.main { padding:26px 34px 60px; max-width:1400px; }
h1 { font-size:24px; margin:0 0 4px; color:var(--blue); }
h2 { font-size:17px; margin:0 0 12px; color:var(--blue); }
.sub { color:var(--muted); margin:0 0 20px; }
.card { background:#fff; border:1px solid var(--line); border-radius:14px; padding:18px 20px; margin-bottom:18px; }
.grid { display:grid; grid-template-columns:repeat(2,1fr); gap:18px; } .grid3 { display:grid; grid-template-columns:repeat(3,1fr); gap:16px; }
.btn { border:1px solid var(--blue); background:#fff; color:var(--blue); padding:8px 16px; border-radius:10px; font-weight:700; text-decoration:none; display:inline-block; }
.btn.primary { background:var(--blue); color:#fff; } .btn.pink { background:var(--pink); border-color:var(--pink); color:#fff; } .btn.danger { background:#b3261e; border-color:#b3261e; color:#fff; }
.btn:disabled { opacity:.45; cursor:default; } .btn.sm { padding:4px 10px; font-size:12px; }
.row { display:flex; gap:10px; align-items:center; flex-wrap:wrap; }
.field { display:flex; flex-direction:column; gap:4px; margin-bottom:12px; } .field label { font-size:12px; color:var(--muted); font-weight:700; }
input[type=text],input[type=email],input[type=datetime-local],input[type=number] { border:1.5px solid #d4d0d8; border-radius:8px; padding:8px 10px; background:#fff; min-width:220px; }
.chip { display:inline-block; padding:1px 10px; border-radius:999px; font-size:12px; font-weight:800; background:#eceef2; color:#5a6173; }
.chip.open { background:var(--pink-soft); color:#a3294b; } .chip.closed { background:#e6e6ea; color:#6b7080; } .chip.approved,.chip.success { background:#e6f6ed; color:#17653d; }
.chip.pending { background:#fff4d8; color:#7a5300; } .chip.rejected,.chip.failed { background:#fdecec; color:#9b1c1f; }
.sig { display:inline-flex; align-items:center; gap:6px; font-weight:700; } .sig i { width:12px; height:12px; border-radius:50%; background:var(--gray); display:inline-block; }
.sig.bronze i { background:#c27a3a; } .sig.red i { background:var(--red); } .sig.yellow i { background:var(--yellow); } .sig.green i { background:var(--green); } .sig.unknown i { background:#fff; border:2px solid var(--gray); }
.stats { display:flex; gap:22px; flex-wrap:wrap; margin:10px 0; } .stat b { display:block; font-size:22px; color:var(--blue); line-height:1.2; } .stat span { font-size:12px; color:var(--muted); }
table { border-collapse:collapse; width:100%; } th,td { text-align:left; padding:7px 10px; border-bottom:1px solid #eee9ee; vertical-align:top; } th { font-size:12px; color:var(--muted); background:#faf8fa; position:sticky; top:0; }
td.num,th.num { text-align:right; font-variant-numeric:tabular-nums; } tbody tr:hover { background:#fcfaff; }
.scroll { max-height:520px; overflow:auto; border:1px solid var(--line); border-radius:10px; }
.drop { border:2px dashed #c9c3cf; border-radius:12px; padding:18px; text-align:center; background:#fbf9fc; } .drop.over { border-color:var(--pink); background:var(--pink-soft); }
.notice { padding:10px 14px; border-radius:10px; margin:10px 0; } .notice.error { background:#fdecec; color:#9b1c1f; } .notice.ok { background:#e6f6ed; color:#17653d; } .notice.warn { background:#fff4d8; color:#7a5300; } .notice.info { background:#e8eefb; color:#1d3d7a; }
.muted { color:var(--muted); } .mono { font-family:var(--mono); } .small { font-size:12px; }
.login { max-width:420px; margin:12vh auto; background:#fff; padding:30px; border-radius:18px; border:1px solid var(--line); }
.login .logo img { width:200px; height:auto; display:block; margin-bottom:16px; }
.login input { width:100%; margin-bottom:10px; }
.errlist { max-height:220px; overflow:auto; font-size:13px; padding-left:18px; margin:6px 0; }
dialog { border:0; border-radius:16px; padding:24px; width:min(560px,92vw); } dialog::backdrop { background:rgba(18,36,64,.5); }
.toast { position:fixed; right:24px; bottom:24px; background:#1c2a44; color:#fff; padding:12px 18px; border-radius:10px; opacity:0; transition:.25s; pointer-events:none; z-index:99; } .toast.show { opacity:1; } .toast.error { background:#9b1c1f; }

/* 신호 고정 플랜 표의 신호등(회원 화면과 같은 모양) */
.lamps { display:inline-flex; gap:3px; padding:3px 6px; border-radius:999px; background:#2a2d33; vertical-align:middle; }
.lamp { display:inline-block; width:11px; height:11px; border-radius:50%; background:#5a5e66; }
.lamp.red.on { background:#ff4d4d; } .lamp.yellow.on { background:#ffc933; } .lamp.green.on { background:#3ddc84; } .lamp.bronze.on { background:#c27a3a; }

/* 응모 현황: 숫자 옆 신호 색 설명 */
.stats-row { display:flex; justify-content:space-between; align-items:center; gap:16px; flex-wrap:wrap; }
.sig-legend { list-style:none; margin:10px 0; padding:8px 12px; display:grid; grid-template-columns:auto auto; gap:4px 18px; font-size:12px; border:1px solid var(--line, #e3e5ea); border-radius:8px; background:#fafbfc; }
.sig-legend li { display:flex; gap:8px; align-items:center; white-space:nowrap; }
.sig-legend li.note { grid-column:1 / -1; font-size:11px; }
