:root{--canvas:#f7f5f1;--card:#fff;--bur:#541c2d;--bur-d:#3e1421;--gold:#b18a4a;--ink:#201c1d;--ink2:#6b6462;--ink3:#9a9391;--line:#e9e2d8;--ok-t:#3e5c2e;--ok-b:#e4eddd;--warn-t:#7a5a22;--warn-b:#f3ead8;--bad-t:#a03040;--bad-b:#f7e3e6;--info-t:#3d5a6b;--info-b:#e1ebf0;--serif:"Cormorant Garamond",Georgia,serif;--sans:"Manrope",-apple-system,sans-serif;--r:10px;--r-sm:7px;--sh:0 1px 3px #201c1d0f;--sh-lg:0 16px 44px #201c1d29;--sbw:232px;--tbh:60px;--ease:cubic-bezier(.4,0,.2,1);--chart-gold:#9c7135;--chart-grid:var(--line);--status-good:#0ca30c;--status-warning:#fab219;--status-serious:#ec835a;--status-critical:#d03b3b}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%}body{font-family:var(--sans);color:var(--ink);background:var(--canvas);-webkit-font-smoothing:antialiased;font-size:14px;line-height:1.55}img{max-width:100%;display:block}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0}ul,ol{list-style:none}:focus-visible{outline:2px solid var(--gold);outline-offset:2px;border-radius:3px}.num{font-variant-numeric:tabular-nums}svg{stroke:currentColor;fill:none;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round}.sb{width:var(--sbw);background:var(--card);border-right:1px solid var(--line);z-index:50;transition:transform .3s var(--ease);flex-direction:column;display:flex;position:fixed;inset:0 auto 0 0}.sb__brand{border-bottom:1px solid var(--line);padding:20px 20px 16px}.sb__brand .l1{font-family:var(--serif);letter-spacing:.26em;color:var(--ink);font-size:20px;font-weight:600}.sb__brand .l2{letter-spacing:.5em;color:var(--gold);text-transform:uppercase;margin-top:2px;font-size:8.5px;font-weight:700}.sb__brand .tag{letter-spacing:.12em;text-transform:uppercase;background:var(--bur);color:#faf7f2;border-radius:10px;margin-top:8px;padding:3px 10px;font-size:10px;font-weight:700;display:inline-block}.sb nav{flex:1;padding:12px;overflow-y:auto}.sb nav a{border-radius:var(--r-sm);color:var(--ink2);align-items:center;gap:12px;margin-bottom:2px;padding:10px 12px;font-size:13.5px;font-weight:600;transition:background .2s,color .2s;display:flex}.sb nav a svg{flex-shrink:0;width:18px;height:18px}.sb nav a:hover{background:var(--canvas);color:var(--ink)}.sb nav a.on{background:var(--bur);color:#fff}.sb nav a .pill{background:var(--warn-b);color:var(--warn-t);border-radius:9px;margin-left:auto;padding:1px 8px;font-size:10.5px;font-weight:700}.sb nav a.on .pill{color:#fff;background:#ffffff2e}.sb__foot{border-top:1px solid var(--line);padding:14px}.sb__foot .store{color:var(--ink2);border-radius:var(--r-sm);align-items:center;gap:10px;padding:8px 10px;font-size:12.5px;font-weight:600;display:flex}.sb__foot .store:hover{background:var(--canvas);color:var(--ink)}.sb__foot .store svg{width:16px;height:16px}.sb__user{align-items:center;gap:10px;margin-top:4px;padding:10px;display:flex}.avatar{background:var(--bur);color:#faf7f2;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;font-size:12px;font-weight:700;display:flex}.sb__user b{font-size:12.5px;display:block}.sb__user span{color:var(--ink3);font-size:11px}.sb__signout{justify-content:center;width:100%;margin-top:10px}.app{margin-left:var(--sbw);min-height:100vh;transition:margin .3s var(--ease);flex-direction:column;display:flex}.tb{z-index:40;height:var(--tbh);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);background:#f7f5f1eb;align-items:center;gap:14px;padding:0 24px;display:flex;position:sticky;top:0}.tb__burger{display:none}.icobtn{border-radius:var(--r-sm);width:36px;height:36px;color:var(--ink2);justify-content:center;align-items:center;display:inline-flex;position:relative}.icobtn:hover{background:var(--card);color:var(--ink)}.icobtn svg{width:18px;height:18px}.icobtn .dot{background:var(--bad-t);border:1.5px solid var(--canvas);border-radius:50%;width:7px;height:7px;position:absolute;top:7px;right:7px}.tb__search{background:var(--card);border:1px solid var(--line);border-radius:var(--r-sm);max-width:440px;color:var(--ink3);flex:1;align-items:center;gap:10px;padding:8px 12px;display:flex}.tb__search svg{flex-shrink:0;width:15px;height:15px}.tb__search input{font:inherit;color:var(--ink);background:0 0;border:0;outline:none;flex:1;min-width:0}.tb__search kbd{font-family:var(--sans);border:1px solid var(--line);color:var(--ink3);border-radius:4px;padding:1px 6px;font-size:10px}.tb__grow{flex:1}.pg{flex:1;width:100%;max-width:1240px;margin:0 auto;padding:24px}.crumbs{color:var(--ink3);flex-wrap:wrap;gap:6px;margin-bottom:6px;font-size:12px;display:flex}.crumbs a:hover{color:var(--bur);text-decoration:underline}.pg__head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:20px;display:flex}.pg__head h1{font-family:var(--serif);font-size:30px;font-weight:600;line-height:1.1}.pg__head .sub{color:var(--ink2);margin-top:4px;font-size:13px}.pg__actions{flex-wrap:wrap;gap:10px;display:flex}.btn{border-radius:var(--r-sm);white-space:nowrap;border:1px solid #0000;align-items:center;gap:8px;padding:10px 18px;font-size:13px;font-weight:700;transition:all .2s;display:inline-flex}.btn svg{width:15px;height:15px}.btn--pri{background:var(--bur);color:#fff}.btn--pri:hover{background:var(--bur-d)}.btn--ghost{border-color:var(--line);background:var(--card);color:var(--ink)}.btn--ghost:hover{border-color:var(--gold)}.btn--danger{background:var(--bad-b);color:var(--bad-t)}.btn--danger:hover{background:#f0d2d8}.btn--sm{padding:7px 13px;font-size:12px}.btn[disabled]{opacity:.45;cursor:not-allowed}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh)}.card__pad{padding:20px}.card h2{justify-content:space-between;align-items:center;gap:10px;margin-bottom:14px;font-size:15px;font-weight:700;display:flex}.card h2 a{color:var(--bur);font-size:12px;font-weight:600;text-decoration:underline}.grid{gap:16px;display:grid}.g4{grid-template-columns:repeat(4,1fr)}.g3{grid-template-columns:repeat(3,1fr)}.g2{grid-template-columns:repeat(2,1fr)}.g23{grid-template-columns:1.6fr 1fr}.stack{flex-direction:column;gap:16px;display:flex}.inline-fields{gap:8px;display:flex}.kpi{padding:18px 20px}.lbl{letter-spacing:.08em;text-transform:uppercase;color:var(--ink3);font-size:11.5px;font-weight:700}.val{font-family:var(--serif);margin:6px 0 4px;font-size:30px;font-weight:600}.trend{align-items:center;gap:4px;font-size:12px;font-weight:700;display:inline-flex}.trend svg{width:13px;height:13px}.trend.up{color:var(--ok-t)}.trend.dn{color:var(--bad-t)}.trend em{color:var(--ink3);font-style:normal;font-weight:500}.chip{letter-spacing:.04em;white-space:nowrap;border-radius:12px;align-items:center;gap:6px;padding:4px 11px;font-size:11px;font-weight:700;display:inline-flex}.chip:before{content:"";background:currentColor;border-radius:50%;width:6px;height:6px}.chip--ok{background:var(--ok-b);color:var(--ok-t)}.chip--warn{background:var(--warn-b);color:var(--warn-t)}.chip--bad{background:var(--bad-b);color:var(--bad-t)}.chip--info{background:var(--info-b);color:var(--info-t)}.chip--mut{background:var(--canvas);color:var(--ink2)}.dtwrap{overflow-x:auto}.dt{border-collapse:collapse;width:100%;font-size:13.5px}.dt th{letter-spacing:.08em;text-transform:uppercase;color:var(--ink3);text-align:left;border-bottom:1px solid var(--line);white-space:nowrap;background:var(--card);padding:12px 14px;font-size:11px;font-weight:700;position:sticky;top:0}.dt th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.dt th.sortable:hover{color:var(--ink)}.dt th.sortable:after{content:"↕";opacity:.4;margin-left:5px}.dt th.asc:after{content:"↑";opacity:1}.dt th.desc:after{content:"↓";opacity:1}.dt td{border-bottom:1px solid var(--line);vertical-align:middle;padding:12px 14px}.dt tbody tr{transition:background .15s}.dt tbody tr:hover{background:var(--canvas)}.dt tbody tr:last-child td{border-bottom:0}.dt .thumb{object-fit:cover;background:var(--canvas);border-radius:6px;width:40px;height:48px}.dt .prodcell{align-items:center;gap:12px;display:flex}.dt .prodcell b{font-size:13.5px;display:block}.dt .prodcell span{color:var(--ink3);font-size:11.5px}.dt .right{text-align:right}.dt a.lnk{color:var(--bur);font-weight:700}.dt a.lnk:hover{text-decoration:underline}.dt input[type=checkbox]{width:15px;height:15px;accent-color:var(--bur)}.tabs{border-bottom:1px solid var(--line);gap:2px;margin-bottom:16px;display:flex;overflow-x:auto}.tabs button{color:var(--ink2);white-space:nowrap;border-bottom:2px solid #0000;margin-bottom:-1px;padding:10px 16px;font-size:13px;font-weight:700}.tabs button:hover{color:var(--ink)}.tabs button.on{color:var(--bur);border-bottom-color:var(--bur)}.tabs button .n{color:var(--ink3);margin-left:5px;font-size:11px}.fbar{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:16px;display:flex}.fbar .fsearch{background:var(--card);border:1px solid var(--line);border-radius:var(--r-sm);align-items:center;gap:8px;min-width:220px;padding:8px 12px;display:flex}.fbar .fsearch svg{width:14px;height:14px;color:var(--ink3)}.fbar .fsearch input{font:inherit;background:0 0;border:0;outline:none;flex:1;min-width:0}.sel{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--card) url("data:image/svg+xml,%3Csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"%236B6462\" stroke-width=\"2\"%3E%3Cpath d=\"M6 9l6 6 6-6\"/%3E%3C/svg%3E") no-repeat right 10px center/12px;font:inherit;color:var(--ink);appearance:none;cursor:pointer;padding:8px 32px 8px 12px;font-size:13px}.bulkbar{background:var(--bur);color:#fff;border-radius:var(--r-sm);align-items:center;gap:12px;margin-bottom:14px;padding:10px 16px;font-size:13px;font-weight:600;display:none}.bulkbar.show{display:flex}.bulkbar .btn{color:#fff;background:#ffffff24}.bulkbar .btn:hover{background:#ffffff40}.field{margin-bottom:16px}.field>label{letter-spacing:.1em;text-transform:uppercase;color:var(--ink2);margin-bottom:7px;font-size:11px;font-weight:700;display:block}.field>label .opt{color:var(--ink3);text-transform:none;letter-spacing:0;font-weight:500}.field input,.field select,.field textarea{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--card);width:100%;font:inherit;color:var(--ink);padding:11px 13px;font-size:13.5px;transition:border-color .2s}.field textarea{resize:vertical;min-height:110px}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--gold);outline:none}.field .hint{color:var(--ink3);margin-top:5px;font-size:11.5px}.frow{grid-template-columns:1fr 1fr;gap:14px;display:grid}.upload-field{align-items:center;gap:14px;display:flex}.upload-field__preview{object-fit:cover;border-radius:var(--r-sm);border:1px solid var(--line);flex-shrink:0;width:64px;height:64px}.upload-field__placeholder{border-radius:var(--r-sm);border:1px dashed var(--line);background:var(--canvas);flex-shrink:0;width:64px;height:64px}.upload-field__actions{gap:8px;display:flex}.upload-field__btn{cursor:pointer}.gallery-row{border:1px solid var(--line);border-radius:var(--r-sm);margin-bottom:10px;padding:14px}.gallery-row .inline-fields{margin-top:10px}.gallery-row .inline-fields input{flex:1}.switch{flex-shrink:0;width:38px;height:22px;display:inline-block;position:relative}.switch input{opacity:0;width:0;height:0}.switch i{background:var(--line);cursor:pointer;border-radius:12px;transition:all .25s;position:absolute;inset:0}.switch i:before{content:"";background:#fff;border-radius:50%;width:16px;height:16px;transition:all .25s;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #00000040}.switch input:checked+i{background:var(--bur)}.switch input:checked+i:before{transform:translate(16px)}.switch input:focus-visible+i{outline:2px solid var(--gold);outline-offset:2px}.togrow{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:16px;padding:14px 0;display:flex}.togrow:last-child{border-bottom:0}.togrow b{font-size:13.5px}.togrow p{color:var(--ink3);font-size:12px}.mscrim{z-index:90;background:#201c1d80;justify-content:center;align-items:center;padding:20px;display:none;position:fixed;inset:0}.mscrim.show{display:flex}.modal{background:var(--card);border-radius:var(--r);box-shadow:var(--sh-lg);width:100%;max-width:460px;max-height:88vh;overflow-y:auto}.modal__head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:18px 22px;display:flex}.modal__head h3{font-size:16px;font-weight:700}.modal__body{padding:22px}.modal__foot{border-top:1px solid var(--line);justify-content:flex-end;gap:10px;padding:16px 22px;display:flex}#toasts{z-index:99;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:22px;right:22px}.toast{background:var(--ink);color:#faf7f2;border-radius:var(--r-sm);box-shadow:var(--sh-lg);animation:tin .3s var(--ease);align-items:center;gap:10px;padding:12px 18px;font-size:13px;font-weight:600;display:flex}.toast:before{content:"";background:var(--gold);border-radius:50%;width:7px;height:7px}@keyframes tin{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.pagin{color:var(--ink2);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;font-size:12.5px;display:flex}.pagin .pages{gap:6px;display:flex}.pagin .pages button{border:1px solid var(--line);background:var(--card);border-radius:6px;min-width:30px;height:30px;font-size:12px;font-weight:600}.pagin .pages button.on{background:var(--bur);color:#fff;border-color:var(--bur)}.pagin .pages button:hover:not(.on){border-color:var(--gold)}.empty{text-align:center;color:var(--ink2);padding:48px 20px}.empty .big{font-family:var(--serif);color:var(--ink);margin-bottom:6px;font-size:22px;display:block}.mini{color:var(--ink3);font-size:11.5px}.protonote{color:var(--ink3);text-align:center;margin-top:18px;font-size:11.5px}.listrow{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;padding:11px 0;font-size:13px;display:flex}.listrow:last-child{border-bottom:0}.listrow .l b{font-size:13px;display:block}.listrow .l span{color:var(--ink3);font-size:11.5px}.sep{background:var(--line);height:1px;margin:16px 0}@media (width<=1000px){.sb{transform:translate(-100%)}body.sbopen .sb{box-shadow:var(--sh-lg);transform:none}.app{margin-left:0}.tb__burger{display:inline-flex}.g4{grid-template-columns:repeat(2,1fr)}.g3,.g23,.frow{grid-template-columns:1fr}}@media (width<=640px){.pg{padding:16px}.g4{grid-template-columns:1fr}.tb__search kbd{display:none}}@media (prefers-reduced-motion:reduce){*{transition-duration:.01ms!important;animation-duration:.01ms!important}}.login{justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.login__card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);width:100%;max-width:400px;box-shadow:var(--sh);padding:40px 36px}.login__brand{text-align:center;margin-bottom:28px}.login__brand .l1{font-family:var(--serif);letter-spacing:.28em;font-size:26px;font-weight:600}.login__brand .l2{letter-spacing:.5em;color:var(--gold);text-transform:uppercase;margin-top:3px;font-size:9px;font-weight:700}.login__brand .tag{letter-spacing:.12em;text-transform:uppercase;background:var(--bur);color:#faf7f2;border-radius:10px;margin-top:10px;padding:3px 12px;font-size:10px;font-weight:700;display:inline-block}.login .btn{justify-content:center;width:100%;margin-top:6px}.login .note{text-align:center;color:var(--ink3);margin-top:18px;font-size:11.5px}.ferr{color:var(--bad-t);margin-top:5px;font-size:12px;display:none}.ferr.is-visible{display:block}.login__msg{text-align:center;min-height:18px;margin-top:14px;font-size:12.5px}.login__msg.err{color:var(--bad-t)}.banner{border-radius:var(--r-sm);margin-bottom:16px;padding:10px 14px;font-size:13px;font-weight:600}.banner--err{background:var(--bad-b);color:var(--bad-t)}.banner--ok{background:var(--ok-b);color:var(--ok-t)}.chart-head{margin-bottom:22px}.chart-head .trend{margin-top:2px}.chart-svg{touch-action:none;stroke:none;width:100%;height:auto;overflow:visible}.chart-gridline{stroke:var(--chart-grid);stroke-width:1px;shape-rendering:crispedges}.chart-bar{fill:var(--bur);transition:fill .15s var(--ease)}.chart-bar--hover{fill:var(--gold)}.chart-axis-label{font-family:var(--sans);letter-spacing:.03em;fill:var(--ink3);font-size:10.5px}.chart-hit{fill:#0000;cursor:pointer}.chart-wrap{position:relative}.chart-tooltip{background:var(--ink);color:#faf7f2;pointer-events:none;white-space:nowrap;box-shadow:var(--sh-lg);border-radius:6px;padding:6px 10px;font-size:12px;position:absolute;top:0;transform:translate(-50%)}.chart-tooltip b{font-size:13px;display:block}.chart-tooltip span{opacity:.75;font-size:11px}.chart-table-toggle{margin-top:12px;font-size:12px}.chart-table-toggle summary{cursor:pointer;color:var(--bur);font-weight:700}.chart-table-toggle table{margin-top:10px}.bar-chart{flex-direction:column;gap:14px;display:flex}.bar-row{grid-template-columns:1fr 2fr auto;align-items:center;gap:12px;display:grid}.bar-label{color:var(--ink2);white-space:nowrap;text-overflow:ellipsis;font-size:12.5px;overflow:hidden}.bar-track{background:var(--canvas);border-radius:4px;height:20px;overflow:hidden}.bar-fill{background:var(--chart-gold);border-radius:0 4px 4px 0;min-width:4px;height:100%}.bar-value{color:var(--ink);font-variant-numeric:tabular-nums;text-align:right;min-width:20px;font-size:12.5px;font-weight:700}.status-list{flex-direction:column;gap:14px;display:flex}.status-row{grid-template-columns:auto 90px 1fr auto;align-items:center;gap:10px;display:grid}.status-dot{border-radius:50%;flex-shrink:0;width:9px;height:9px}.status-label{color:var(--ink2);font-size:12.5px;font-weight:600}.status-track{background:var(--canvas);border-radius:5px;height:10px;overflow:hidden}.status-fill{height:100%;transition:width .3s var(--ease);border-radius:5px}.status-count{color:var(--ink);font-variant-numeric:tabular-nums;text-align:right;min-width:22px;font-size:13px;font-weight:700}
