@charset "UTF-8";@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url("./media/inter-cyrillic-ext-wght-normal-IYF56FF6.woff2") format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url("./media/inter-cyrillic-wght-normal-JEOLYBOO.woff2") format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url("./media/inter-greek-ext-wght-normal-EOVOK2B5.woff2") format("woff2-variations");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url("./media/inter-greek-wght-normal-IRE366VL.woff2") format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url("./media/inter-vietnamese-wght-normal-CE5GGD3W.woff2") format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url("./media/inter-latin-ext-wght-normal-HA22NDSG.woff2") format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url("./media/inter-latin-wght-normal-NRMW37G5.woff2") format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--brand: #4f46e5;--brand-2: #7c3aed;--brand-rgb: 79, 70, 229;--brand-soft: rgba(var(--brand-rgb), .1);--brand-gradient: linear-gradient(135deg, var(--brand) 0%, var(--brand-2) 100%);--bg: #f5f6fb;--bg-elev: #ffffff;--bg-sunken: #eef0f7;--bg-hover: #f2f3fa;--border: #e3e6f0;--border-strong: #cfd4e3;--text: #141a2e;--text-2: #4a5270;--text-3: #7c84a3;--text-inv: #ffffff;--green: #12a150;--green-soft: #e3f7eb;--amber: #c27803;--amber-soft: #fff4dc;--red: #dc2c4b;--red-soft: #fde8ec;--blue: #2563eb;--blue-soft: #e4ecfd;--violet: #7c3aed;--violet-soft: #f0e9fe;--slate: #64748b;--slate-soft: #eef1f5;--cyan: #0891b2;--cyan-soft: #e0f5fa;--radius-sm: 8px;--radius: 12px;--radius-lg: 18px;--shadow-sm: 0 1px 2px rgba(20, 26, 46, .06);--shadow: 0 1px 2px rgba(20, 26, 46, .04), 0 4px 16px rgba(20, 26, 46, .06);--shadow-lg: 0 10px 40px rgba(20, 26, 46, .16);--ring: 0 0 0 3px rgba(var(--brand-rgb), .25);--sidebar-w: 256px;--topbar-h: 64px;--control-h: 38px;--font: "Inter Variable", "Segoe UI", system-ui, -apple-system, Roboto, Arial, sans-serif;--mono: ui-monospace, "Cascadia Mono", Consolas, monospace;color-scheme:light}:root[data-theme=dark]{--bg: #0b0f1d;--bg-elev: #131a2c;--bg-sunken: #0f1526;--bg-hover: #1a2238;--border: #232c45;--border-strong: #33405f;--text: #e8ebf7;--text-2: #aab2cf;--text-3: #76809f;--green: #34d27b;--green-soft: rgba(52, 210, 123, .14);--amber: #f5b53d;--amber-soft: rgba(245, 181, 61, .14);--red: #ff5c7a;--red-soft: rgba(255, 92, 122, .14);--blue: #6c9cff;--blue-soft: rgba(108, 156, 255, .14);--violet: #a78bfa;--violet-soft: rgba(167, 139, 250, .15);--slate: #94a3b8;--slate-soft: rgba(148, 163, 184, .14);--cyan: #38bdf8;--cyan-soft: rgba(56, 189, 248, .14);--brand-soft: rgba(var(--brand-rgb), .2);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow: 0 1px 2px rgba(0, 0, 0, .3), 0 6px 20px rgba(0, 0, 0, .25);--shadow-lg: 0 16px 50px rgba(0, 0, 0, .55);color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;font-family:var(--font);font-size:14px;line-height:1.5;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;font-feature-settings:"cv11","ss01"}h1,h2,h3,h4{margin:0;line-height:1.25;letter-spacing:-.015em;color:var(--text)}h1{font-size:22px;font-weight:700}h2{font-size:17px;font-weight:650}h3{font-size:15px;font-weight:650}h4{font-size:13px;font-weight:650}p{margin:0}a{color:var(--brand);text-decoration:none}a:hover{text-decoration:underline}img{max-width:100%}hr{border:0;border-top:1px solid var(--border);margin:16px 0}::selection{background:rgba(var(--brand-rgb),.22)}:focus-visible{outline:none;box-shadow:var(--ring);border-radius:6px}.tnum{font-variant-numeric:tabular-nums}.mono{font-family:var(--mono);font-size:12.5px}*{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:10px;border:3px solid transparent;background-clip:padding-box}.muted{color:var(--text-2)}.subtle{color:var(--text-3)}.small{font-size:12.5px}.tiny{font-size:11.5px}.strong{font-weight:600}.right{text-align:right}.center{text-align:center}.nowrap{white-space:nowrap}.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-green{color:var(--green)}.text-red{color:var(--red)}.text-amber{color:var(--amber)}.text-brand{color:var(--brand)}.eyebrow{font-size:11.5px;font-weight:650;letter-spacing:.06em;text-transform:uppercase;color:var(--text-3)}.row{display:flex;align-items:center;gap:12px}.row.wrap{flex-wrap:wrap}.row.top{align-items:flex-start}.row.between{justify-content:space-between}.col{display:flex;flex-direction:column;gap:12px}.grow{flex:1 1 auto;min-width:0}.gap-4{gap:4px}.gap-8{gap:8px}.gap-16{gap:16px}.gap-24{gap:24px}.mt-4{margin-top:4px}.mt-8{margin-top:8px}.mt-16{margin-top:16px}.mt-24{margin-top:24px}.mb-8{margin-bottom:8px}.mb-16{margin-bottom:16px}.grid{display:grid;gap:16px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-main-side{grid-template-columns:minmax(0,2fr) minmax(300px,1fr)}@media(max-width:1200px){.grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-main-side{grid-template-columns:1fr}}@media(max-width:900px){.grid-3,.grid-2{grid-template-columns:1fr}}@media(max-width:560px){.grid-4{grid-template-columns:1fr}}@media(max-width:760px){.hide-sm{display:none!important}}.page{padding:24px 28px 48px;max-width:1480px;margin:0 auto;animation:fade-in .22s ease-out}@media(max-width:760px){.page{padding:16px 16px 40px}}.page-header{display:flex;align-items:center;gap:16px;margin-bottom:20px;flex-wrap:wrap}.page-header .titles{flex:1 1 auto;min-width:220px}.page-header .titles p{color:var(--text-2);margin-top:2px}.page-header .actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}@keyframes fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.card{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow)}.card-pad{padding:20px}.card-header{display:flex;align-items:center;gap:12px;padding:16px 20px;border-bottom:1px solid var(--border)}.card-header h2,.card-header h3{flex:1}.card-body{padding:20px}.card-footer{padding:12px 20px;border-top:1px solid var(--border);display:flex;gap:8px;justify-content:flex-end}.card.flat{box-shadow:none}.card.hoverable{transition:transform .15s ease,box-shadow .15s ease;cursor:pointer}.card.hoverable:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:var(--control-h);padding:0 14px;border-radius:10px;font:inherit;font-weight:600;font-size:13.5px;white-space:nowrap;border:1px solid var(--border);background:var(--bg-elev);color:var(--text);cursor:pointer;transition:background .15s,border-color .15s,box-shadow .15s,transform .05s,opacity .15s;text-decoration:none!important;-webkit-user-select:none;user-select:none}.btn:hover{background:var(--bg-hover);border-color:var(--border-strong)}.btn:active{transform:translateY(1px)}.btn:disabled,.btn.disabled{opacity:.55;cursor:not-allowed;pointer-events:none}.btn.primary{background:var(--brand-gradient);border-color:transparent;color:#fff;box-shadow:0 4px 14px rgba(var(--brand-rgb),.35)}.btn.primary:hover{filter:brightness(1.07)}.btn.danger{background:var(--red);border-color:transparent;color:#fff}.btn.danger:hover{filter:brightness(1.07)}.btn.success{background:var(--green);border-color:transparent;color:#fff}.btn.ghost{background:transparent;border-color:transparent;color:var(--text-2)}.btn.ghost:hover{background:var(--bg-hover);color:var(--text)}.btn.soft{background:var(--brand-soft);border-color:transparent;color:var(--brand)}.btn.sm{height:30px;padding:0 10px;font-size:12.5px;border-radius:8px;gap:6px}.btn.lg{height:46px;padding:0 22px;font-size:15px;border-radius:12px}.btn.icon{width:var(--control-h);padding:0}.btn.icon.sm{width:30px}.btn.block{width:100%}.btn .spinner{width:14px;height:14px}.field{display:flex;flex-direction:column;gap:6px;min-width:0}.field>label,.label{font-size:12.5px;font-weight:600;color:var(--text-2)}.field .hint{font-size:12px;color:var(--text-3)}.field .error{font-size:12px;color:var(--red)}.input,select.input,textarea.input{width:100%;height:var(--control-h);padding:0 12px;border-radius:10px;border:1px solid var(--border);background:var(--bg-elev);color:var(--text);font:inherit;font-size:14px;transition:border-color .15s,box-shadow .15s}textarea.input{height:auto;min-height:92px;padding:10px 12px;resize:vertical;line-height:1.5}select.input{padding-right:32px;appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%237c84a3' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center}.input:hover{border-color:var(--border-strong)}.input:focus{outline:none;border-color:var(--brand);box-shadow:var(--ring)}.input:disabled{background:var(--bg-sunken);color:var(--text-3);cursor:not-allowed}.input.invalid,.input.ng-invalid.ng-touched{border-color:var(--red)}.input.sm{height:32px;font-size:13px;border-radius:8px}.input-icon{position:relative}.input-icon>app-icon{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:var(--text-3);pointer-events:none}.input-icon>.input{padding-left:36px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.form-grid .span-2{grid-column:span 2}.form-grid.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}@media(max-width:700px){.form-grid,.form-grid.cols-3{grid-template-columns:1fr}.form-grid .span-2{grid-column:auto}}.form-section{padding:4px 0 8px}.form-section+.form-section{border-top:1px solid var(--border);padding-top:20px;margin-top:12px}.form-section>h3{margin-bottom:4px}.form-section>p{color:var(--text-3);font-size:12.5px;margin-bottom:14px}.check{display:inline-flex;align-items:center;gap:8px;cursor:pointer;font-size:13.5px;-webkit-user-select:none;user-select:none}.check input{width:16px;height:16px;accent-color:var(--brand);cursor:pointer}.switch{position:relative;display:inline-flex;align-items:center;gap:10px;cursor:pointer;font-size:13.5px}.switch input{appearance:none;width:36px;height:20px;border-radius:20px;background:var(--border-strong);position:relative;cursor:pointer;transition:background .2s;flex:none;margin:0}.switch input:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:var(--shadow-sm);transition:transform .2s}.switch input:checked{background:var(--brand)}.switch input:checked:after{transform:translate(16px)}.segmented{display:inline-flex;padding:3px;gap:2px;background:var(--bg-sunken);border:1px solid var(--border);border-radius:11px}.segmented button{border:0;background:transparent;color:var(--text-2);font:inherit;font-size:13px;font-weight:600;height:30px;padding:0 12px;border-radius:8px;cursor:pointer;display:inline-flex;gap:6px;align-items:center}.segmented button.active{background:var(--bg-elev);color:var(--text);box-shadow:var(--shadow-sm)}.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:16px}.toolbar .input{width:auto;min-width:160px}.toolbar .search{flex:1 1 260px;max-width:360px}.toolbar .search .input{width:100%;min-width:0}.toolbar .spacer{flex:1}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:20px;overflow-x:auto}.tabs a,.tabs button{border:0;background:none;font:inherit;font-size:13.5px;font-weight:600;color:var(--text-2);padding:10px 14px;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap;display:inline-flex;gap:8px;align-items:center;text-decoration:none!important}.tabs a:hover,.tabs button:hover{color:var(--text)}.tabs a.active,.tabs button.active{color:var(--brand);border-bottom-color:var(--brand)}.tabs .count{background:var(--bg-sunken);color:var(--text-2);border-radius:10px;padding:0 7px;font-size:11.5px;line-height:18px}.tabs .active .count{background:var(--brand-soft);color:var(--brand)}.table-wrap{overflow:auto;border-radius:inherit}table.table{width:100%;border-collapse:separate;border-spacing:0;font-size:13.5px}.table th{position:sticky;top:0;z-index:1;background:var(--bg-sunken);color:var(--text-2);text-align:left;font-weight:600;font-size:12px;letter-spacing:.02em;padding:10px 14px;white-space:nowrap;border-bottom:1px solid var(--border)}.table th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.table th.sortable:hover{color:var(--text)}.table td{padding:11px 14px;border-bottom:1px solid var(--border);vertical-align:middle}.table tbody tr{transition:background .1s}.table tbody tr:hover{background:var(--bg-hover)}.table tbody tr.clickable{cursor:pointer}.table tbody tr:last-child td{border-bottom:0}.table td.num,.table th.num{text-align:right;font-variant-numeric:tabular-nums}.table tfoot td{font-weight:650;background:var(--bg-sunken);border-top:1px solid var(--border);border-bottom:0}.table.compact td{padding:7px 12px}.table .actions-cell{text-align:right;white-space:nowrap;width:1%}.badge{display:inline-flex;align-items:center;gap:5px;height:22px;padding:0 9px;border-radius:20px;font-size:11.5px;font-weight:650;white-space:nowrap;background:var(--slate-soft);color:var(--slate)}.badge .dot{width:6px;height:6px;border-radius:50%;background:currentColor}.badge.green{background:var(--green-soft);color:var(--green)}.badge.amber{background:var(--amber-soft);color:var(--amber)}.badge.red{background:var(--red-soft);color:var(--red)}.badge.blue{background:var(--blue-soft);color:var(--blue)}.badge.violet{background:var(--violet-soft);color:var(--violet)}.badge.cyan{background:var(--cyan-soft);color:var(--cyan)}.badge.brand{background:var(--brand-soft);color:var(--brand)}.color-dot{display:inline-block;width:10px;height:10px;border-radius:50%;flex:none}.stat{padding:18px 20px;display:flex;gap:14px;align-items:flex-start}.stat .stat-icon{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;flex:none;background:var(--brand-soft);color:var(--brand)}.stat .stat-icon.green{background:var(--green-soft);color:var(--green)}.stat .stat-icon.amber{background:var(--amber-soft);color:var(--amber)}.stat .stat-icon.red{background:var(--red-soft);color:var(--red)}.stat .stat-icon.blue{background:var(--blue-soft);color:var(--blue)}.stat .stat-icon.violet{background:var(--violet-soft);color:var(--violet)}.stat .stat-label{color:var(--text-2);font-size:12.5px;font-weight:600}.stat .stat-value{font-size:26px;font-weight:700;letter-spacing:-.02em;line-height:1.15;margin-top:2px;font-variant-numeric:tabular-nums}.stat .stat-foot{font-size:12px;color:var(--text-3);margin-top:4px}.list{display:flex;flex-direction:column}.list-item{display:flex;align-items:center;gap:12px;padding:10px 20px;border-bottom:1px solid var(--border)}.list-item:last-child{border-bottom:0}.list-item .grow .title{font-weight:600;font-size:13.5px}.list-item .grow .meta{color:var(--text-3);font-size:12px}.list-item.clickable{cursor:pointer}.list-item.clickable:hover{background:var(--bg-hover)}.empty{text-align:center;padding:48px 20px;color:var(--text-3)}.empty .empty-icon{width:56px;height:56px;border-radius:16px;margin:0 auto 14px;display:grid;place-items:center;background:var(--bg-sunken);color:var(--text-3)}.empty h3{color:var(--text);margin-bottom:4px}.skeleton{background:linear-gradient(90deg,var(--bg-sunken) 0%,var(--bg-hover) 50%,var(--bg-sunken) 100%);background-size:200% 100%;animation:shimmer 1.2s infinite linear;border-radius:8px}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.spinner{display:inline-block;width:18px;height:18px;border-radius:50%;border:2px solid currentColor;border-right-color:transparent;animation:spin .7s linear infinite;opacity:.8}@keyframes spin{to{transform:rotate(360deg)}}.avatar{width:36px;height:36px;border-radius:50%;flex:none;display:grid;place-items:center;font-weight:650;font-size:13px;color:#fff;overflow:hidden;background:var(--brand-gradient)}.avatar img{width:100%;height:100%;object-fit:cover}.avatar.sm{width:28px;height:28px;font-size:11px}.avatar.lg{width:56px;height:56px;font-size:19px}.avatar.xl{width:88px;height:88px;font-size:28px}.alert{display:flex;gap:12px;align-items:flex-start;padding:12px 16px;border-radius:var(--radius);font-size:13.5px;background:var(--blue-soft);color:var(--text);border:1px solid transparent}.alert>app-icon{color:var(--blue);margin-top:1px;flex:none}.alert.amber{background:var(--amber-soft)}.alert.amber>app-icon{color:var(--amber)}.alert.red{background:var(--red-soft)}.alert.red>app-icon{color:var(--red)}.alert.green{background:var(--green-soft)}.alert.green>app-icon{color:var(--green)}.overlay{position:fixed;inset:0;z-index:900;background:#090c1880;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;align-items:flex-start;justify-content:center;padding:6vh 16px 16px;animation:overlay-in .15s ease-out;overflow-y:auto}@keyframes overlay-in{0%{opacity:0}}.modal{width:100%;max-width:560px;background:var(--bg-elev);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);border:1px solid var(--border);animation:modal-in .18s ease-out;display:flex;flex-direction:column;max-height:88vh}.modal.wide{max-width:820px}.modal.narrow{max-width:420px}@keyframes modal-in{0%{opacity:0;transform:translateY(10px) scale(.98)}}.modal-header{display:flex;align-items:center;gap:12px;padding:18px 22px 14px}.modal-header h2{flex:1}.modal-header p{color:var(--text-2);font-size:13px;margin-top:2px}.modal-body{padding:4px 22px 18px;overflow-y:auto}.modal-footer{padding:14px 22px;border-top:1px solid var(--border);display:flex;gap:8px;justify-content:flex-end;background:var(--bg-sunken);border-radius:0 0 var(--radius-lg) var(--radius-lg)}.drawer-overlay{justify-content:flex-end;align-items:stretch;padding:0}.drawer{width:min(620px,100vw);height:100vh;background:var(--bg-elev);box-shadow:var(--shadow-lg);display:flex;flex-direction:column;animation:drawer-in .22s ease-out}@keyframes drawer-in{0%{transform:translate(30px);opacity:0}}.drawer .modal-body{flex:1}.drawer .modal-footer{border-radius:0}.menu{position:absolute;z-index:950;min-width:200px;background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:6px;animation:modal-in .12s ease-out}.menu button,.menu a{display:flex;width:100%;align-items:center;gap:10px;border:0;background:none;padding:8px 10px;border-radius:8px;font:inherit;font-size:13.5px;color:var(--text);cursor:pointer;text-align:left;text-decoration:none!important}.menu button:hover,.menu a:hover{background:var(--bg-hover)}.menu .sep{height:1px;background:var(--border);margin:6px 0}.menu .danger{color:var(--red)}.progress{height:8px;border-radius:8px;background:var(--bg-sunken);overflow:hidden}.progress>span{display:block;height:100%;border-radius:8px;background:var(--brand-gradient);transition:width .4s ease}.kv{display:grid;grid-template-columns:minmax(120px,38%) 1fr;gap:10px 16px;font-size:13.5px}.kv dt{color:var(--text-3)}.kv dd{margin:0;font-weight:500;min-width:0;overflow-wrap:anywhere}.pager{display:flex;align-items:center;gap:8px;justify-content:space-between;padding:12px 16px;border-top:1px solid var(--border);font-size:13px;color:var(--text-2);flex-wrap:wrap}@media print{body{background:#fff}.no-print,app-sidebar,app-topbar,.topbar,.sidebar{display:none!important}.page{padding:0;max-width:none}.card{box-shadow:none;border:0}.shell-main{margin:0!important}}
