:root{--bg:#fff;--fg:#111827;--mut:#6b7280;--line:#e5e7eb;--soft:#f9fafb;--acc:#2563eb;--acc2:#1d4ed8;--accbg:#eff6ff;--red:#dc2626;--redbg:#fef2f2;--grn:#16a34a;--grnbg:#f0fdf4;--amb:#d97706;--ambbg:#fffbeb;--shadow:0 1px 2px rgba(16,24,40,.06),0 1px 3px rgba(16,24,40,.08)}
*{box-sizing:border-box}
html{color-scheme:light}
body{margin:0;font:14.5px/1.55 "Segoe UI",Inter,system-ui,-apple-system,sans-serif;background:var(--bg);color:var(--fg)}
a{color:var(--acc);text-decoration:none}a:hover{text-decoration:underline}
.shell{display:flex;min-height:100vh}
.nav{position:sticky;top:0;align-self:flex-start;width:220px;flex:none;height:100vh;overflow-y:auto;background:#0f172a;color:#e2e8f0;padding:18px 12px;display:flex;flex-direction:column;gap:6px}
.menu{display:flex;flex-direction:column;gap:2px}
.menu-h{margin:14px 13px 4px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:#64748b}
.brand{display:flex;align-items:center;gap:10px;font-weight:700;font-size:16px;color:#fff;margin:0 0 14px 6px}
.brand:hover{text-decoration:none}
.logo{width:30px;height:30px;border-radius:8px;background:var(--acc);color:#fff;display:grid;place-items:center;font-weight:700;font-size:15px}
.nav a.lnk{display:block;padding:8px 13px;border-radius:8px;color:#cbd5e1;font-weight:500}
.nav a.lnk:hover{background:rgba(255,255,255,.08);color:#fff;text-decoration:none}
.nav a.lnk.active{background:var(--acc);color:#fff}
.sp{flex:1}
.who{display:flex;flex-direction:column;gap:6px;border-top:1px solid #1e293b;padding-top:12px}
.nav button.ghost{background:transparent;color:#cbd5e1;border-color:#334155}.nav button.ghost:hover{background:rgba(255,255,255,.08);color:#fff}
.who-id{display:flex;align-items:center;gap:10px;padding:0 6px 4px}
.avatar{width:32px;height:32px;border-radius:50%;background:var(--accbg);color:var(--acc);display:grid;place-items:center;font-weight:700;font-size:13px}
.who .nm{line-height:1.2;font-size:13px}.who .nm b{display:block}.who .nm b{color:#fff}.who .nm span{color:#94a3b8;font-size:12px}
.nav .avatar{background:#1e293b;color:#93c5fd}
main{flex:1;min-width:0;padding:24px 28px 60px}
h1,h2{margin:0 0 4px;font-size:24px;letter-spacing:-.01em}
.sub{color:var(--mut);margin:0 0 20px}
h3{margin:0 0 10px;font-size:12px;color:var(--mut);text-transform:uppercase;letter-spacing:.06em;font-weight:600}
.card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:18px 20px;margin:0 0 16px;box-shadow:var(--shadow)}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(420px,1fr));gap:0 16px;align-items:start}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-bottom:18px}
.stat{border:1px solid var(--line);border-radius:12px;padding:14px 18px;box-shadow:var(--shadow);background:#fff}
.stat.click{cursor:pointer;user-select:none;transition:border-color .1s,background .1s}.stat.click:hover{border-color:#9ca3af}
.stat.click.on{border-color:var(--acc);background:var(--accbg);box-shadow:0 0 0 2px #bfdbfe}
.stat .n{font-size:28px;font-weight:700;line-height:1.1}.stat .l{color:var(--mut);font-size:13px}
.stat.red .n{color:var(--red)}.stat.blue .n{color:var(--acc)}.stat.green .n{color:var(--grn)}
.filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px;align-items:end}
.filters label{display:block;font-size:12px;color:var(--mut);font-weight:600;margin-bottom:3px}
.filters .wide{grid-column:span 2}
input,select,textarea,button,.btn{font:inherit}
th.sortable{cursor:pointer;user-select:none}th.sortable:hover{color:var(--fg)}
input[type=text],input[type=password],input[type=date],input[type=search],input[type=number],input:not([type]),select,textarea{width:100%;padding:8px 11px;border:1px solid #d1d5db;border-radius:8px;background:#fff;color:var(--fg)}
input:focus,select:focus,textarea:focus{outline:2px solid #bfdbfe;border-color:var(--acc)}
input[type=checkbox]{width:16px;height:16px;accent-color:var(--acc);vertical-align:-3px}
input[type=file]{padding:6px;border:1px dashed #cbd5e1;border-radius:8px;background:var(--soft);width:100%}
button,.btn{cursor:pointer;display:inline-block;padding:8px 16px;border-radius:8px;border:1px solid var(--acc);background:var(--acc);color:#fff;font-weight:600}
button:hover,.btn:hover{background:var(--acc2);text-decoration:none}
button.ghost,.btn.ghost{background:#fff;color:#374151;border-color:#d1d5db}button.ghost:hover{background:var(--soft)}
button.danger{background:#fff;color:var(--red);border-color:#fca5a5}button.danger:hover{background:var(--redbg)}
button.sm{padding:4px 10px;font-size:13px}
.tablewrap{border:1px solid var(--line);border-radius:12px;overflow:auto;box-shadow:var(--shadow)}
table{width:100%;border-collapse:collapse;background:#fff}
th{background:var(--soft);color:var(--mut);font-size:12px;text-transform:uppercase;letter-spacing:.05em;text-align:left;padding:10px 14px;border-bottom:1px solid var(--line);white-space:nowrap}
td{padding:12px 14px;border-bottom:1px solid #f1f5f9;vertical-align:top}
tr:last-child td{border-bottom:0}tbody tr:hover td{background:#fafbff}
.ttl{font-weight:600;color:var(--fg)}.ttl:hover{color:var(--acc)}
.mut{color:var(--mut)}.small{font-size:12.5px}
.tag{display:inline-block;padding:1px 9px;border-radius:999px;background:#f3f4f6;color:#4b5563;font-size:12px;margin:0 4px 3px 0}
.tag.src{background:var(--accbg);color:var(--acc);font-weight:600}
.pill{display:inline-block;padding:2px 10px;border-radius:999px;font-size:12px;font-weight:600;background:#f3f4f6;color:#374151}
.st-Interested{background:#eff6ff;color:#1d4ed8}.st-Clarifying{background:var(--ambbg);color:var(--amb)}
.st-Bidding{background:var(--grnbg);color:var(--grn)}.st-Submitted{background:#ecfdf5;color:#047857}.st-Skip{background:#f3f4f6;color:#9ca3af}
.soon{color:var(--red);font-weight:600}.ok{color:var(--grn);font-weight:600}
.dl{display:inline-block;margin-top:2px;padding:1px 8px;border-radius:6px;font-size:12px;font-weight:600}
.dl.red{background:var(--redbg);color:var(--red)}.dl.amb{background:var(--ambbg);color:var(--amb)}.dl.gry{background:#f3f4f6;color:var(--mut)}
.flash{padding:10px 14px;border-radius:8px;margin-bottom:16px;background:var(--grnbg);color:#166534;border:1px solid #bbf7d0}
.flash.err{background:var(--redbg);color:#991b1b;border-color:#fecaca}
pre{white-space:pre-wrap;font:12.5px/1.45 ui-monospace,Consolas,monospace;background:var(--soft);padding:12px;border-radius:8px}
.crumb{display:inline-block;margin-bottom:10px;color:var(--mut)}
.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin:14px 0 20px}
.fact{background:var(--soft);border:1px solid var(--line);border-radius:10px;padding:10px 14px}.fact .l{font-size:12px;color:var(--mut)}.fact .v{font-weight:700;font-size:16px}
.pre{white-space:pre-wrap}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.pager{display:flex;gap:8px;align-items:center;justify-content:flex-end;margin-top:12px}
.role-Admin{background:#f5f3ff;color:#6d28d9}.role-User{background:#f3f4f6;color:#374151}
.off{opacity:.55}
/* login */
.login-wrap{min-height:100vh;display:grid;place-items:center;background:linear-gradient(180deg,#f8fafc,#fff);padding:20px}
.login{width:100%;max-width:400px;background:#fff;border:1px solid var(--line);border-radius:16px;padding:32px;box-shadow:0 10px 30px rgba(16,24,40,.08)}
.login .logo{width:44px;height:44px;font-size:22px;border-radius:12px;margin:0 auto 14px}
.login h1{text-align:center;font-size:22px}.login p.sub{text-align:center}
.login label{display:block;font-size:13px;font-weight:600;margin:14px 0 4px}
.login button{width:100%;margin-top:20px;padding:10px}
@media(max-width:900px){.shell{flex-direction:column}.nav{position:static;width:auto;height:auto;flex-direction:row;flex-wrap:wrap;align-items:center;border-right:0;border-bottom:1px solid var(--line)}.brand{margin:0 8px 0 0}.menu{flex-direction:row;flex-wrap:wrap}.menu-h{display:none}.who{flex-direction:row;align-items:center;border-top:0;padding-top:0}.who .nm{display:none}}
@media(max-width:760px){.filters .wide{grid-column:span 1}main{padding:18px 12px}}

.bar{height:6px;background:#eef2f7;border-radius:999px;overflow:hidden;margin-top:4px}.bar i{display:block;height:100%;border-radius:999px}
.newb{display:inline-block;margin-left:2px;padding:1px 8px;border-radius:999px;background:#16a34a;color:#fff;font-size:11px;font-weight:700;letter-spacing:.04em;vertical-align:1px}
