@charset "UTF-8";:root{--brand: #0b5cbd;--brand-600: #094c9c;--brand-700: #073a78;--brand-50: #eef5fc;--brand-100: #d9e8f7;--ink: #232d3b;--ink-2: #46515f;--muted: #7a8696;--subtle: #a2acba;--bg: #f1f3f6;--surface: #ffffff;--surface-2: #f8fafc;--border: #e5e8ed;--border-strong: #d3d9e1;--danger: #b42318;--danger-bg: #fef3f2;--danger-600: #912018;--ok: #067647;--ok-bg: #ecfdf3;--warn: #b54708;--warn-bg: #fffaeb;--sidebar: #394252;--sidebar-2: #313a49;--sidebar-text: #c3cad6;--radius: 6px;--radius-sm: 4px;--shadow-sm: 0 1px 2px rgba(15, 23, 42, .05);--shadow: 0 1px 2px rgba(35, 45, 59, .08), 0 4px 14px rgba(35, 45, 59, .05);--shadow-lg: 0 24px 60px rgba(15, 23, 42, .22);--ring: 0 0 0 3px rgba(0, 82, 164, .18);--font: "Montserrat", system-ui, -apple-system, "Segoe UI", sans-serif;--ease: cubic-bezier(.16, 1, .3, 1);--topbar: #2f7de1;--topbar-dark: #1f63bd;--up: #2e9d57;--down: #d9453b;--amber: #f0a030}*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:var(--font);font-size:14px;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;letter-spacing:-.003em}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer}a{color:var(--brand)}h1{margin:0;font-size:1.45rem;line-height:1.2;font-weight:600;letter-spacing:-.02em}h2{margin:0;font-size:1.05rem;font-weight:650;letter-spacing:-.015em}h3{margin:0;font-size:.95rem;font-weight:600}p{margin:0}:focus-visible{outline:2px solid var(--brand);outline-offset:2px;border-radius:4px}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.page{animation:page-in .35s var(--ease) both;padding-bottom:3rem}@keyframes page-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.page-head{display:flex;justify-content:space-between;align-items:center;gap:1rem 1.5rem;flex-wrap:wrap;padding:1.15rem 1.75rem;margin:0 0 1.5rem;background:var(--surface);border-bottom:1px solid var(--border)}.page-head h1{font-size:1.35rem}.page-head .intro{margin-top:.3rem;color:var(--muted);line-height:1.5;max-width:46rem;font-size:.86rem}.page-actions{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}.page>*:not(.page-head){margin-left:1.75rem;margin-right:1.75rem}.page>.page-head+*{margin-top:0}.page.narrow>*:not(.page-head){max-width:60rem}.btn-group{display:inline-flex;border:1px solid var(--border-strong);border-radius:var(--radius-sm);overflow:hidden;background:var(--surface)}.btn-group>button,.btn-group>a{display:inline-flex;align-items:center;gap:.4rem;border:0;background:transparent;color:var(--ink-2);padding:.5rem .85rem;font-size:.82rem;font-weight:500;text-decoration:none;cursor:pointer;border-right:1px solid var(--border-strong);transition:background .15s,color .15s}.btn-group>*:last-child{border-right:0}.btn-group>*:hover:not(:disabled){background:var(--brand-50);color:var(--brand)}.panel-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);overflow:hidden}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.95rem 1.2rem;border-bottom:1px solid var(--border)}.panel-title{display:flex;align-items:center;gap:.55rem;margin:0;font-size:.74rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-2)}.panel-tools{display:flex;align-items:center;gap:.1rem}.panel-body{padding:1.1rem 1.2rem}.count-badge{display:inline-flex;align-items:center;justify-content:center;min-width:1.45rem;height:1.2rem;padding:0 .4rem;border-radius:3px;font-size:.68rem;font-weight:700;color:#fff;background:var(--topbar);letter-spacing:0}.count-badge.red{background:var(--down)}.count-badge.green{background:var(--up)}.count-badge.amber{background:var(--amber)}.count-badge.dark{background:#3d4757}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;border:1px solid transparent;background:var(--brand);color:#fff;padding:.6rem 1rem;border-radius:var(--radius-sm);font-weight:600;font-size:.9rem;line-height:1.2;text-decoration:none;white-space:nowrap;transition:background .16s var(--ease),box-shadow .16s var(--ease),transform .1s ease-out,border-color .16s;box-shadow:var(--shadow-sm)}.btn:hover:not(:disabled){background:var(--brand-600)}.btn:active:not(:disabled){transform:scale(.98)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:focus-visible{box-shadow:var(--ring);outline:none}.btn-secondary,.btn-ghost{background:var(--surface);color:var(--ink-2);border-color:var(--border-strong)}.btn-secondary:hover:not(:disabled),.btn-ghost:hover:not(:disabled){background:var(--surface-2);border-color:var(--subtle)}.btn-danger{background:var(--danger)}.btn-danger:hover:not(:disabled){background:var(--danger-600)}.btn-sm{padding:.4rem .7rem;font-size:.82rem}.btn-block{width:100%}.btn-icon{display:inline-grid;place-items:center;width:2.1rem;height:2.1rem;padding:0;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--muted);transition:background .15s,color .15s}.btn-icon:hover:not(:disabled){background:var(--brand-50);color:var(--brand)}.btn-icon.danger:hover:not(:disabled){background:var(--danger-bg);color:var(--danger)}.btn-icon:disabled{opacity:.4;cursor:not-allowed}.link-danger{border:0;background:none;color:var(--danger);font-weight:600;padding:0}.spinner{width:1rem;height:1rem;border-radius:50%;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;animation:spin .7s linear infinite}.spinner.dark{border-color:var(--border-strong);border-top-color:var(--brand)}@keyframes spin{to{transform:rotate(360deg)}}.alert{display:flex;gap:.7rem;align-items:flex-start;padding:.8rem 1rem;border-radius:var(--radius-sm);font-size:.9rem;line-height:1.45;margin-bottom:1.1rem;border:1px solid transparent}.alert-error,.error{color:var(--danger);background:var(--danger-bg);border-color:#fecdca}.alert-ok,.ok{color:var(--ok);background:var(--ok-bg);border-color:#abefc6}.alert-warn{color:var(--warn);background:var(--warn-bg);border-color:#fedf89}.alert .grow{flex:1}.error,.ok{margin:0 0 1rem;padding:.7rem .9rem;border-radius:var(--radius-sm);font-size:.9rem;border:1px solid transparent}.card,.panel,.stack,fieldset{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.panel{padding:1.25rem}.stack{padding:1.25rem;display:grid;gap:1rem}.empty{color:var(--muted)}fieldset{margin:0;padding:1.35rem 1.4rem 1.5rem;display:grid;gap:1rem;min-width:0}legend{font-weight:650;font-size:1rem;padding:0 .5rem;margin-left:-.5rem;color:var(--ink);letter-spacing:-.015em}label,.field{display:grid;gap:.4rem;font-size:.84rem;font-weight:600;color:var(--ink-2);min-width:0}.field-hint{font-weight:400;font-size:.78rem;color:var(--muted);line-height:1.4}.req{color:var(--danger);margin-left:.15rem}input:not([type=checkbox]):not([type=file]):not([type=radio]),textarea,select{width:100%;padding:.62rem .8rem;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink);font-weight:400;font-size:.92rem;transition:border-color .15s,box-shadow .15s}textarea{resize:vertical;line-height:1.5;min-height:5rem}input::placeholder,textarea::placeholder{color:var(--subtle)}input:hover:not(:disabled),textarea:hover:not(:disabled),select:hover:not(:disabled){border-color:var(--subtle)}input:focus:not([type=checkbox]):not([type=radio]),textarea:focus,select:focus{outline:none;border-color:var(--brand);box-shadow:var(--ring)}input:disabled,textarea:disabled,select:disabled{background:var(--surface-2);color:var(--muted);cursor:not-allowed}.ng-touched.ng-invalid:not(form):not(app-file-upload){border-color:var(--danger)!important}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.form-grid .full{grid-column:1/-1}.switch-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem .9rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);font-weight:500}.switch-row .switch-text{display:grid;gap:.15rem}.switch-row .switch-text strong{font-size:.88rem;font-weight:600;color:var(--ink)}.switch-row .switch-text span{font-size:.78rem;color:var(--muted);font-weight:400}.switch{position:relative;display:inline-block;width:2.5rem;height:1.45rem;flex-shrink:0}.switch input{position:absolute;inset:0;opacity:0;width:100%;height:100%;margin:0;cursor:pointer;z-index:1}.switch .track{position:absolute;inset:0;border-radius:999px;background:var(--border-strong);transition:background .2s var(--ease)}.switch .track:after{content:"";position:absolute;top:.15rem;left:.15rem;width:1.15rem;height:1.15rem;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0f172a4d;transition:transform .2s var(--ease)}.switch input:checked+.track{background:var(--brand)}.switch input:checked+.track:after{transform:translate(1.05rem)}.switch input:focus-visible+.track{box-shadow:var(--ring)}.switch input:disabled{cursor:not-allowed}.switch input:disabled+.track{opacity:.5}input[type=checkbox]:not(.switch input){width:1.05rem;height:1.05rem;accent-color:var(--brand)}.badge{display:inline-flex;align-items:center;gap:.35rem;width:fit-content;padding:.18rem .6rem;border-radius:999px;font-size:.75rem;font-weight:600;background:var(--ok-bg);color:var(--ok);white-space:nowrap}.badge:before{content:"";width:.4rem;height:.4rem;border-radius:50%;background:currentColor}.badge.draft{background:#f1f5f9;color:var(--muted)}.badge.brand{background:var(--brand-50);color:var(--brand)}.badge.brand:before,.badge.plain:before{display:none}.badge.warn{background:var(--warn-bg);color:var(--warn)}.toolbar{display:flex;gap:.75rem;align-items:center;flex-wrap:wrap;margin-bottom:1rem}.search{position:relative;flex:1 1 15rem;max-width:24rem}.search app-icon{position:absolute;left:.75rem;top:50%;transform:translateY(-50%);color:var(--subtle);pointer-events:none}.search input{padding-left:2.3rem!important}.segmented{display:inline-flex;padding:.2rem;background:#e6eaf0;border-radius:var(--radius-sm);gap:.15rem}.segmented button{border:0;background:transparent;padding:.38rem .8rem;border-radius:3px;font-size:.84rem;font-weight:600;color:var(--muted);display:inline-flex;gap:.4rem;align-items:center;transition:background .15s,color .15s,box-shadow .15s}.segmented button:hover{color:var(--ink)}.segmented button.active{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-sm)}.segmented .count{font-size:.72rem;color:var(--subtle);font-weight:600}.segmented button.active .count{color:var(--brand)}.toolbar .spacer{flex:1}.result-count{color:var(--muted);font-size:.84rem}.data-list{list-style:none;margin:0;padding:0;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);overflow:hidden}.data-item{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:1rem;padding:.85rem 1.1rem;border-bottom:1px solid var(--border);transition:background .15s}.data-item:last-child{border-bottom:0}.data-item:hover{background:var(--surface-2)}.data-item.no-thumb{grid-template-columns:minmax(0,1fr) auto auto}.data-main{min-width:0;text-align:left;border:0;background:none;padding:0;display:grid;gap:.2rem;cursor:pointer}.data-title{font-weight:600;color:var(--ink);overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.35}.data-main:hover .data-title{color:var(--brand)}.data-meta{font-size:.8rem;color:var(--muted);display:flex;gap:.6rem;flex-wrap:wrap;align-items:center}.data-actions{display:flex;gap:.15rem}.thumb{width:4.4rem;height:3.1rem;border-radius:8px;object-fit:cover;background:#e9eef4;border:1px solid var(--border);display:grid;place-items:center;color:var(--subtle);overflow:hidden}.thumb img{width:100%;height:100%;object-fit:cover;display:block}.table-wrap{overflow:auto;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.table{width:100%;border-collapse:collapse}.table th,.table td{text-align:left;padding:.8rem 1rem;vertical-align:middle;border-bottom:1px solid var(--border)}.table th{font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);background:var(--surface-2);font-weight:650;position:sticky;top:0;white-space:nowrap}.table tbody tr{transition:background .15s}.table tbody tr:hover td{background:var(--surface-2)}.table tr:last-child td{border-bottom:0}.table td.num,.table th.num{text-align:right}.avatar{display:inline-grid;place-items:center;width:2.2rem;height:2.2rem;border-radius:50%;background:var(--brand-100);color:var(--brand-700);font-weight:700;font-size:.82rem;text-transform:uppercase;flex-shrink:0}.empty-state{display:grid;justify-items:center;gap:.6rem;text-align:center;padding:3.5rem 1.5rem;background:var(--surface);border:1px dashed var(--border-strong);border-radius:var(--radius);color:var(--muted)}.empty-state .empty-icon{display:grid;place-items:center;width:3.4rem;height:3.4rem;border-radius:50%;background:var(--brand-50);color:var(--brand);margin-bottom:.3rem}.empty-state h3{color:var(--ink);font-size:1.02rem}.empty-state p{max-width:26rem;line-height:1.5;font-size:.9rem}.skeleton{background:linear-gradient(90deg,#eef2f6 25%,#f8fafc 37%,#eef2f6 63%);background-size:400% 100%;animation:shimmer 1.4s ease infinite;border-radius:6px}@keyframes shimmer{0%{background-position:100% 50%}to{background-position:0 50%}}.skeleton-row{display:grid;grid-template-columns:4.4rem 1fr 5rem;gap:1rem;align-items:center;padding:.95rem 1.1rem;border-bottom:1px solid var(--border)}.skeleton-row:last-child{border-bottom:0}.skeleton-row .s-thumb{height:3.1rem}.skeleton-row .s-line{height:.8rem}.skeleton-row .s-line.short{width:40%;margin-top:.5rem}.drawer-backdrop{position:fixed;inset:0;background:#0b122073;backdrop-filter:blur(2px);z-index:60;animation:fade-in .2s ease both}.drawer{position:fixed;top:0;right:0;bottom:0;width:min(36rem,100vw);background:var(--surface);z-index:61;display:flex;flex-direction:column;box-shadow:var(--shadow-lg);animation:slide-in .3s var(--ease) both}.drawer-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1.1rem 1.4rem;border-bottom:1px solid var(--border)}.drawer-head h2{font-size:1.15rem}.drawer-head .sub{color:var(--muted);font-size:.82rem;margin-top:.15rem;font-weight:400}.drawer-body{flex:1;overflow-y:auto;padding:1.4rem;display:grid;gap:1.15rem;align-content:start}.drawer-foot{display:flex;justify-content:flex-end;gap:.6rem;padding:.95rem 1.4rem;border-top:1px solid var(--border);background:var(--surface-2)}.section-title{font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:700;margin-top:.3rem}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes slide-in{0%{transform:translate(2.5rem);opacity:0}to{transform:none;opacity:1}}.modal-backdrop{position:fixed;inset:0;background:#0b122080;backdrop-filter:blur(2px);z-index:90;display:grid;place-items:center;padding:1rem;animation:fade-in .15s ease both}.modal{width:min(26rem,100%);background:var(--surface);border-radius:8px;padding:1.6rem;box-shadow:var(--shadow-lg);display:grid;gap:.6rem;justify-items:center;text-align:center;animation:pop .25s var(--ease) both}.modal h2{font-size:1.12rem}.modal p{color:var(--muted);line-height:1.5;font-size:.92rem}.modal-icon{display:grid;place-items:center;width:3rem;height:3rem;border-radius:50%;background:var(--brand-50);color:var(--brand);margin-bottom:.2rem}.modal-icon.danger{background:var(--danger-bg);color:var(--danger)}.modal-actions{display:flex;gap:.6rem;margin-top:.8rem;width:100%}.modal-actions .btn{flex:1}@keyframes pop{0%{transform:scale(.95) translateY(8px);opacity:0}to{transform:none;opacity:1}}.toast-stack{position:fixed;right:1.1rem;bottom:1.1rem;z-index:100;display:grid;gap:.6rem;width:min(24rem,100vw - 2.2rem);pointer-events:none}.toast{pointer-events:auto;display:flex;align-items:center;gap:.65rem;padding:.8rem .9rem .8rem 1rem;background:var(--ink);color:#fff;border-radius:6px;box-shadow:var(--shadow-lg);font-size:.9rem;animation:toast-in .3s var(--ease) both}.toast span{flex:1;line-height:1.4}.toast-success app-icon:first-child{color:#47cd89}.toast-error{background:#7a271a}.toast-error app-icon:first-child{color:#fda29b}.toast-info app-icon:first-child{color:#84caff}.toast-close{border:0;background:none;color:#fff9;padding:.2rem;display:grid;border-radius:6px}.toast-close:hover{color:#fff;background:#ffffff1f}@keyframes toast-in{0%{transform:translateY(.8rem) scale(.97);opacity:0}to{transform:none;opacity:1}}@media(max-width:720px){html,body{font-size:14px}h1{font-size:1.4rem}.form-grid{grid-template-columns:1fr}.data-item{grid-template-columns:auto minmax(0,1fr) auto;row-gap:.5rem}.data-item .badge-col{grid-column:2;grid-row:2}.data-item.no-thumb{grid-template-columns:minmax(0,1fr) auto}.data-item.no-thumb .badge-col{grid-column:1;grid-row:2}.thumb{width:3.6rem;height:2.7rem}.drawer{width:100vw}.page-head{padding:1rem;margin-bottom:1rem}.page>*:not(.page-head){margin-left:1rem;margin-right:1rem}.page-actions .btn{flex:1}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}.drawer-form{display:flex;flex-direction:column;height:100%;min-height:0}button.thumb{padding:0;cursor:pointer;transition:border-color .15s,transform .2s var(--ease)}button.thumb:hover{border-color:var(--brand);transform:scale(1.03)}.status{display:inline-flex;align-items:center;gap:.55rem;cursor:pointer;font-weight:500}.status-text{font-size:.8rem;color:var(--ok);font-weight:600;min-width:4.2rem}.status-text.off{color:var(--muted)}.foot-count{margin-top:.75rem;text-align:right}.excerpt{color:var(--subtle)}.data-meta .badge{padding:.12rem .5rem;font-size:.72rem}.data-meta .badge app-icon{margin-right:-.1rem}@media(max-width:720px){.status-text{min-width:0}}.panel-card .data-list,.panel-card .table-wrap{border:0;border-radius:0;box-shadow:none}.panel-card .toolbar{margin:0;padding:.75rem 1.2rem;border-bottom:1px solid var(--border)}.roles-help{margin-top:1.25rem}
