@import "https://fonts.googleapis.com/css2?family=Nunito:wght@400;500;600;700;800&display=swap";body{color:#222;margin:0;font-family:system-ui,Segoe UI,Roboto,sans-serif;font-size:14px}table{font-size:14px}th,td{text-align:left;padding:8px 10px}:root{--brand:#8b5cd6;--brand-d:#774dc0;--brand-soft:#f1ebfa;--brand-ink:#6a3fb0;--blue:#4a90d9;--blue-soft:#e8f1fa;--blue-ink:#2a6aa8;--coral:#e05a52;--coral-soft:#fbeae8;--coral-ink:#b03b34;--accent:var(--brand);--accent-d:var(--brand-d);--ok:#3f9d6b;--ok-soft:#e8f4ec;--ok-ink:#2f7a4f;--warn:#cf9330;--warn-soft:#f9f0dd;--warn-ink:#8f6414;--bad:#cf5b5b;--bad-soft:#f8e8e8;--bad-ink:#9e3f3f;--ink:#26212f;--muted:#79738a;--faint:#a8a2b5;--line:#eae7f0;--bg:#f7f6fa;--side:#f6f4fa;--side-tx:#5f596e;--side-mut:#a09aae;--side-line:#ece8f3;--radius:13px;--radius-sm:9px;--shadow:0 1px 2px #281e3c0a, 0 8px 26px #281e3c0f;--shadow-pop:0 20px 60px #281e3c38}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;margin:0;font:14px/1.55 Nunito,Segoe UI,system-ui,sans-serif}a{color:var(--brand-ink)}button{cursor:pointer;font-family:inherit}.row{align-items:center;gap:10px;display:flex}.row.wrap{flex-wrap:wrap}.spacer{flex:1}.muted{color:var(--muted)}.small{font-size:12.5px}.stack{flex-direction:column;gap:4px;display:flex}.app{min-height:100vh;display:flex}.sidebar{background:var(--side);border-right:1px solid var(--side-line);flex-direction:column;gap:2px;width:214px;height:100vh;padding:14px 11px;display:flex;position:sticky;top:0}.side-logo{align-items:center;gap:10px;padding:6px 8px 14px;display:flex}.side-logo .mark{background:var(--brand);color:#fff;border-radius:9px;justify-content:center;align-items:center;width:30px;height:30px;font-size:16px;font-weight:700;display:flex}.side-logo b{color:var(--ink);letter-spacing:-.01em;font-size:15px;font-weight:700}.side-sec{color:var(--side-mut);letter-spacing:.06em;padding:12px 8px 4px;font-size:10.5px;font-weight:700}.side-link{color:var(--side-tx);border-radius:10px;align-items:center;gap:10px;padding:9px 11px;font-size:13.5px;font-weight:600;text-decoration:none;transition:all .13s;display:flex}.side-link:hover{background:#efeaf7}.side-link.on{background:var(--brand-soft);color:var(--brand-ink)}.side-link .em{text-align:center;filter:saturate(.85);width:20px;font-size:15px}.side-foot{border-top:1px solid var(--side-line);margin-top:auto;padding-top:10px}.side-user{align-items:center;gap:9px;padding:6px 8px;display:flex}.side-user .av{background:var(--brand);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;font-size:12px;font-weight:700;display:flex}.side-user .nm{color:var(--ink);font-size:12.5px;font-weight:700;line-height:1.1}.side-user .rl{color:var(--side-mut);font-size:11px}.side-out{border:1px solid var(--side-line);width:100%;color:var(--muted);cursor:pointer;font:inherit;background:#fff;border-radius:9px;margin-top:6px;padding:8px;font-weight:600}.side-out:hover{border-color:var(--brand);color:var(--brand-ink)}.main{flex:1;min-width:0;padding:22px 26px}.page-head{align-items:center;gap:14px;margin-bottom:18px;display:flex}.page-head h1{letter-spacing:-.02em;margin:0;font-size:22px;font-weight:800}.page-head .sub{color:var(--muted);font-size:13px}.search{flex:1;max-width:460px;position:relative}.search input{border:1px solid var(--line);background:#fff;border-radius:12px;outline:none;width:100%;padding:11px 14px 11px 40px;font-family:inherit;font-size:14px;transition:all .15s}.search input:focus{border-color:var(--brand);box-shadow:0 0 0 3px #a131f526}.search .icon{color:var(--muted);position:absolute;top:50%;left:13px;transform:translateY(-50%)}.btn{background:var(--brand);color:#fff;cursor:pointer;white-space:nowrap;border:none;border-radius:11px;align-items:center;gap:7px;padding:10px 16px;font-family:inherit;font-size:14px;font-weight:700;transition:all .15s;display:inline-flex}.btn:hover{background:var(--brand-d)}.btn.ghost{color:var(--ink);border:1px solid var(--line);background:#fff}.btn.ghost:hover{border-color:var(--brand);color:var(--brand)}.btn.blue{background:var(--blue)}.btn.blue:hover{filter:brightness(.95)}.btn.coral{background:var(--coral)}.btn.coral:hover{filter:brightness(.95)}.btn.ok{background:var(--ok)}.btn.ok:hover{filter:brightness(.95)}.btn.warn{background:var(--warn)}.btn.warn:hover{filter:brightness(.95)}.btn.danger{color:var(--bad);background:#fff;border:1px solid #f0c8c8}.btn.sm{border-radius:9px;padding:6px 11px;font-size:13px}.btn:disabled{opacity:.55;cursor:default}.chips{flex-wrap:wrap;gap:8px;display:flex}.chip{border:1px solid var(--line);color:var(--muted);cursor:pointer;background:#fff;border-radius:20px;padding:7px 14px;font-size:13px;font-weight:600;transition:all .15s}.chip.on{background:var(--brand);color:#fff;border-color:var(--brand)}.chip:hover:not(.on){border-color:var(--brand);color:var(--brand)}.pill{white-space:nowrap;border-radius:20px;padding:3px 11px;font-size:12px;font-weight:700;display:inline-block}.pill.ok{background:var(--ok-soft);color:var(--ok-ink)}.pill.warn{background:var(--warn-soft);color:var(--warn-ink)}.pill.accent{background:var(--blue-soft);color:var(--blue-ink)}.pill.brand{background:var(--brand-soft);color:var(--brand-ink)}.pill.danger{background:var(--bad-soft);color:var(--bad-ink)}.pill.muted{color:var(--muted);background:#f0eff4}.metrics{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;display:grid}.metric{border:1px solid var(--line);background:#fff;border-radius:14px;padding:14px 16px}.metric .lbl{color:var(--muted);font-size:12.5px}.metric .val{margin-top:2px;font-size:26px;font-weight:800;line-height:1.1}.metric.warn .val{color:var(--warn-ink)}.metric.accent .val{color:var(--blue-ink)}.metric.danger .val{color:var(--bad-ink)}.metric.ok .val{color:var(--ok-ink)}.grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px;display:grid}.card{border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;background:#fff;flex-direction:column;transition:all .15s;display:flex;overflow:hidden}.card:hover{box-shadow:var(--shadow);border-color:#d9c6f6;transform:translateY(-2px)}.card .thumb{background:#f0ecf8 50%/cover no-repeat;flex-shrink:0;height:140px;position:relative}.card .thumb.empty{color:#c9bfe0;justify-content:center;align-items:center;font-size:30px;display:flex}.card .badge{background:#ffffffeb;border-radius:8px;padding:3px 8px;font-size:11px;font-weight:700;position:absolute;top:8px;right:8px}.card .body{flex-direction:column;flex:1;gap:3px;padding:12px 14px;display:flex}.card .body .nm{font-size:14px;font-weight:700;line-height:1.25}.card .body .ttl{color:var(--brand);font-size:12.5px;font-weight:700}.card .body .desc{color:var(--muted);-webkit-line-clamp:3;-webkit-box-orient:vertical;font-size:12.5px;display:-webkit-box;overflow:hidden}.card .body .missing{color:var(--warn);font-size:12px;font-weight:700}.panel{border:1px solid var(--line);background:#fff;border-radius:14px}.list-row{border:1px solid var(--line);background:#fff;border-radius:13px;align-items:center;gap:12px;padding:13px 16px;transition:all .13s;display:flex}.list-row:hover{border-color:#d9c6f6}table.tbl{border-collapse:collapse;border:1px solid var(--line);background:#fff;border-radius:13px;width:100%;overflow:hidden}table.tbl th{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);background:#faf9fd;font-size:12px;font-weight:700}table.tbl td,table.tbl th{text-align:left;border-bottom:1px solid var(--line);padding:11px 14px}table.tbl tbody tr:last-child td{border-bottom:none}table.tbl tr:hover td{background:#fbfaff}.scrim{z-index:40;background:#140e2866;animation:.15s fade;position:fixed;inset:0}@keyframes fade{0%{opacity:0}}.drawer2{z-index:50;background:#fff;flex-direction:column;width:520px;max-width:96vw;height:100vh;animation:.2s cubic-bezier(.2,.8,.2,1) slide;display:flex;position:fixed;top:0;right:0;box-shadow:-10px 0 40px #140e2833}@keyframes slide{0%{opacity:.6;transform:translate(30px)}}.drawer2 .dh{border-bottom:1px solid var(--line);align-items:flex-start;gap:12px;padding:20px 24px;display:flex}.drawer2 .dh h2{margin:0;font-size:18px;font-weight:800}.drawer2 .db{flex:1;padding:20px 24px;overflow:auto}.drawer2 .df{border-top:1px solid var(--line);gap:10px;padding:16px 24px;display:flex}.x{color:var(--muted);cursor:pointer;background:0 0;border:none;margin-left:auto;font-size:24px;line-height:1}.modal-scrim{z-index:50;background:#140e2866;justify-content:center;align-items:flex-start;padding:24px 16px;display:flex;position:fixed;inset:0;overflow:auto}.modal{box-shadow:var(--shadow-pop);background:#fff;border-radius:16px;padding:18px}.field{margin-bottom:14px}.field label{color:var(--muted);margin-bottom:5px;font-size:12.5px;font-weight:700;display:block}.field input,.field textarea,.field select{border:1px solid var(--line);width:100%;font:inherit;background:#fff;border-radius:10px;outline:none;padding:10px 12px;transition:all .15s}.field input:focus,.field textarea:focus,.field select:focus{border-color:var(--brand);box-shadow:0 0 0 3px #a131f521}.field textarea{resize:vertical;min-height:120px;line-height:1.55}input,textarea,select,button{font-family:inherit}.photo-box{border:2px dashed var(--line);text-align:center;border-radius:12px;padding:14px}.photo-box img{border-radius:10px;max-width:100%;max-height:220px}.empty-state{text-align:center;color:var(--muted);padding:60px 20px}.empty-state .em{font-size:40px}
