:root{--bg:#f7f8fa;--panel:#fff;--panel-2:#f1f4f8;--panel-3:#e9edf3;--border:#e3e8ef;--line:#e3e8ef;--border-strong:#cbd5e1;--text:#0f172a;--text-2:#334155;--muted:#64748b;--accent:#0972d3;--accent-600:#033160;--accent-weak:#f0f7ff;--aws-ink:#232f3e;--aws-ink-2:#1a2532;--aws-orange:#f90;--ok:#037f51;--warn:#b45309;--bad:#d13212;--radius-sm:6px;--radius:9px;--radius-lg:14px;--shadow-xs:0 1px 2px rgba(15,23,42,.05);--shadow-sm:0 1px 3px rgba(15,23,42,.07),0 1px 2px rgba(15,23,42,.04);--shadow:0 4px 12px rgba(15,23,42,.08),0 2px 4px rgba(15,23,42,.04);--shadow-lg:0 14px 40px rgba(15,23,42,.14);--ring:0 0 0 3px var(--accent-weak);--topbar:60px;--subbar:42px}[data-theme=dark]{--bg:#0d1117;--panel:#161b22;--panel-2:#1c2431;--panel-3:#262e3b;--border:#2a323d;--line:#2a323d;--border-strong:#3a4554;--text:#e6edf3;--text-2:#aeb9c6;--muted:#7d8896;--accent:#4493e6;--accent-600:#6aa9ec;--accent-weak:#14263b;--ok:#3fb950;--warn:#d29922;--bad:#f85149;--shadow-xs:0 1px 2px rgba(0,0,0,.4);--shadow-sm:0 1px 3px rgba(0,0,0,.5),0 1px 2px rgba(0,0,0,.3);--shadow:0 4px 12px rgba(0,0,0,.5),0 2px 4px rgba(0,0,0,.3);--shadow-lg:0 16px 44px rgba(0,0,0,.65)}[data-theme=dark] .card-head{background:none}[data-theme=dark] .badge-ok{background:rgba(63,185,80,.14);border-color:rgba(63,185,80,.4)}[data-theme=dark] .badge-warn{background:rgba(210,153,34,.14);border-color:rgba(210,153,34,.4)}[data-theme=dark] .badge-bad{background:rgba(248,81,73,.14);border-color:rgba(248,81,73,.4)}[data-theme=dark] .toast-ok{background:#15241a;border-color:rgba(63,185,80,.4)}[data-theme=dark] .toast-bad{background:#2a1718}[data-theme=dark] .btn-danger,[data-theme=dark] .toast-bad{border-color:rgba(248,81,73,.4)}[data-theme=dark] .btn-danger:hover:not(:disabled){background:rgba(248,81,73,.13);border-color:rgba(248,81,73,.7)}[data-theme=dark] .m-get{background:rgba(63,185,80,.14);color:#56d364}[data-theme=dark] .m-post{background:rgba(68,147,230,.16);color:#79c0ff}[data-theme=dark] .m-put{background:rgba(210,153,34,.16);color:#e3b341}[data-theme=dark] .m-delete{background:rgba(248,81,73,.14);color:#ff7b72}[data-theme=dark] .cmdk-kind.is-site{border-color:#2a4566}*{box-sizing:border-box}body,html{margin:0;padding:0}body{background:var(--bg);color:var(--text);font:14px/1.55 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.table code,code,kbd,pre{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace}:focus-visible{outline:none}.shell{display:flex;flex-direction:column;min-height:100vh}.topbar{display:flex;align-items:center;gap:14px;height:var(--topbar);padding:0 20px;background:var(--panel);border-bottom:1px solid var(--border);color:var(--text);position:relative;z-index:10;box-shadow:var(--shadow-sm)}.topbar .hamburger:hover{background:var(--panel-2)}.topbar-left{display:flex;align-items:center;gap:10px;min-width:0}.topbar-left,.topbar-left:hover{text-decoration:none}.topbar-logo{height:46px;width:auto;display:block;flex:0 0 auto}.topbar-title{display:flex;flex-direction:column;justify-content:center;line-height:1.15;min-width:0}.topbar-brand{font-weight:700;font-size:14.5px;letter-spacing:-.01em;color:var(--text)}.topbar-sub{color:var(--muted);font-size:11px}.topbar-right{margin-left:auto;display:flex;align-items:center;gap:14px;min-width:0}.topbar-user{font-size:12.5px;color:#e9ecf1;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:5px 11px 5px 9px;background:hsla(0,0%,100%,.08);border:1px solid hsla(0,0%,100%,.16);border-radius:999px;display:inline-flex;align-items:center;gap:7px}.topbar-user:before{content:"";width:20px;height:20px;border-radius:50%;flex:0 0 auto;background:linear-gradient(135deg,var(--aws-orange),#ec7211)}.topbar-right .btn{background:transparent;color:#fff;border-color:hsla(0,0%,100%,.4)}.topbar-right .btn:hover:not(:disabled){background:hsla(0,0%,100%,.12);border-color:hsla(0,0%,100%,.7);color:#fff}.topbar-search{display:inline-flex;align-items:center;gap:8px;height:32px;padding:0 10px;border-radius:8px;background:hsla(0,0%,100%,.08);border:1px solid hsla(0,0%,100%,.16);color:#c7d0db;font:inherit;font-size:13px;cursor:pointer}.topbar-search:hover{background:hsla(0,0%,100%,.14);color:#fff}.topbar-search kbd{font-size:10.5px;background:hsla(0,0%,100%,.14);border:1px solid hsla(0,0%,100%,.2);border-radius:4px;padding:1px 5px;color:#e9ecf1;font-family:inherit}.topbar-icon{display:inline-grid;place-items:center;width:34px;height:34px;border-radius:50%;background:transparent;border:none;color:var(--muted);cursor:pointer;transition:background .14s,color .14s}.topbar-icon:hover{background:var(--panel-2);color:var(--text)}.usermenu{position:relative;display:flex}.usermenu-btn{display:inline-grid;place-items:center;padding:0;background:none;border:none;cursor:pointer;border-radius:50%}.usermenu-btn:focus-visible{outline:none;box-shadow:0 0 0 3px var(--accent-weak)}.usermenu-avatar{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;font-size:14px;font-weight:600;color:#fff;background:#1a73e8;flex:0 0 auto;transition:box-shadow .14s ease}.usermenu-btn.open .usermenu-avatar,.usermenu-btn:hover .usermenu-avatar{box-shadow:0 0 0 4px var(--panel-2)}.usermenu-avatar.lg{width:40px;height:40px;font-size:17px}.usermenu-pop{position:absolute;top:calc(100% + 8px);right:0;width:248px;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);overflow:hidden;z-index:40;transform-origin:top right;animation:menuPop .16s cubic-bezier(.16,1,.3,1) both}@keyframes menuPop{0%{opacity:0;transform:translateY(-6px) scale(.97)}to{opacity:1;transform:none}}.usermenu-head{display:flex;align-items:center;gap:11px;padding:14px;border-bottom:1px solid var(--border)}.usermenu-id{min-width:0}.usermenu-email{font-size:13px;font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.usermenu-role{font-size:11.5px;color:var(--muted);margin-top:1px}.usermenu-item{display:flex;align-items:center;gap:9px;width:100%;padding:11px 14px;background:none;border:none;font:inherit;font-size:13.5px;color:var(--text-2);text-align:left;cursor:pointer}.usermenu-item:hover{background:var(--panel-2);color:var(--text)}.usermenu-item.danger{color:var(--bad)}.usermenu-item.danger:hover{background:#fff1f3}[data-theme=dark] .usermenu-item.danger:hover{background:rgba(248,81,73,.12)}.cmdk-overlay{align-items:flex-start}.cmdk{margin-top:12vh;width:560px;max-width:100%;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);overflow:hidden;animation:modalIn .18s cubic-bezier(.16,1,.3,1) both}.cmdk-input{border:none;border-bottom:1px solid var(--border);border-radius:0;padding:16px 18px;font-size:15px;box-shadow:none}.cmdk-input:focus{box-shadow:none;border-color:var(--border)}.cmdk-list{max-height:50vh;overflow-y:auto;padding:6px}.cmdk-empty{padding:24px;text-align:center;color:var(--muted);font-size:13px}.cmdk-item{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:var(--radius-sm);color:var(--text);cursor:pointer}.cmdk-item.sel,.cmdk-item:hover{background:var(--accent-weak);text-decoration:none}.cmdk-kind{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);background:var(--panel-2);border:1px solid var(--border);border-radius:5px;padding:2px 6px;flex:0 0 auto}.cmdk-kind.is-site{color:var(--accent-600);background:var(--accent-weak);border-color:#cfe0f5}.cmdk-label{flex:1 1 auto;font-size:13.5px;font-weight:500}.cmdk-group{flex:0 0 auto}.cmdk-foot,.cmdk-group{font-size:11.5px;color:var(--muted)}.cmdk-foot{display:flex;align-items:center;gap:6px;padding:9px 14px;border-top:1px solid var(--border);background:var(--panel-2)}.cmdk-foot kbd{font-family:inherit;font-size:10.5px;background:var(--panel);border:1px solid var(--border);border-radius:4px;padding:1px 5px}.crumbs{display:flex;font-size:12.5px;color:var(--muted);overflow:hidden;margin-bottom:14px}.crumbs,.crumbs>span{align-items:center;gap:5px}.crumbs>span{display:inline-flex;white-space:nowrap}.crumb-sep{opacity:.45}a.crumb{color:var(--muted)}a.crumb:hover{color:var(--accent);text-decoration:none}.crumbs>span:last-child .crumb{color:var(--text);font-weight:600}.hamburger{display:none;position:relative;width:32px;height:32px;padding:0;background:none;border:none;cursor:pointer;border-radius:var(--radius-sm);-webkit-tap-highlight-color:transparent}.hamburger:hover{background:var(--panel-2)}.hamburger:focus{outline:none}.hamburger span{position:absolute;left:9px;right:9px;height:2px;background:var(--text);border-radius:2px;transition:transform .25s ease,opacity .2s ease,top .25s ease}.hamburger span:first-child{top:10px}.hamburger span:nth-child(2){top:15px}.hamburger span:nth-child(3){top:20px}.hamburger.open span:first-child{top:15px;transform:rotate(45deg)}.hamburger.open span:nth-child(2){opacity:0}.hamburger.open span:nth-child(3){top:15px;transform:rotate(-45deg)}.subbar{display:flex;align-items:center;height:var(--subbar);padding:0 20px;background:var(--bg);border-bottom:1px solid var(--border)}.shell-body{display:flex;flex:1 1;min-height:0;align-items:stretch}.sidebar{width:240px;flex:0 0 240px;background:var(--panel);border-right:1px solid var(--border);padding:18px 14px;display:flex;flex-direction:column;z-index:20}.brand{font-weight:700;font-size:15px;margin-bottom:2px;letter-spacing:-.01em}.brand small{display:block;color:var(--muted);font-weight:500;font-size:11px}.nav{margin-top:6px;display:flex;flex-direction:column;gap:2px}.nav-child,.nav-parent,.nav-top{display:flex;align-items:center;gap:10px;width:100%;padding:8px 11px;border-radius:var(--radius-sm);font-size:13.5px;color:var(--text-2);background:none;border:none;text-align:left;cursor:pointer;font-family:inherit;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;position:relative;transition:background .14s ease,color .14s ease}.nav-ico{flex:0 0 auto;color:var(--muted);transition:color .14s ease}.nav-label{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nav-child:focus,.nav-parent:focus,.nav-top:focus{outline:none}.nav-child:focus-visible,.nav-parent:focus-visible,.nav-top:focus-visible{box-shadow:var(--ring)}.nav-child:hover,.nav-parent:hover,.nav-top:hover{background:var(--panel-2);color:var(--text);text-decoration:none}.nav-parent:hover .nav-ico,.nav-top:hover .nav-ico{color:var(--text-2)}.nav-child:active,.nav-parent:active,.nav-top:active{background:var(--panel-3)}.nav-parent{font-weight:600;margin-top:6px}.nav-chevron{flex:0 0 auto;margin-left:2px;color:var(--muted);font-size:12px;line-height:1}.nav-children{display:flex;flex-direction:column;gap:2px;margin:2px 0 6px}.nav-child{padding-left:38px;color:var(--muted);font-size:13px}.nav-child:hover{color:var(--text)}.nav-child.active,.nav-top.active{background:var(--accent-weak);color:var(--accent-600);font-weight:600}.nav-top.active .nav-ico{color:var(--accent-600)}.nav-child.active:before,.nav-top.active:before{content:"";position:absolute;left:3px;top:50%;transform:translateY(-50%);width:3px;height:16px;border-radius:3px;background:var(--accent)}.nav-child.active:hover,.nav-top.active:hover{background:var(--accent-weak)}.nav-parent.active-parent,.nav-parent.active-parent .nav-ico{color:var(--accent-600)}.main{flex:1 1;padding:28px 32px;max-width:1140px;min-width:0;animation:pageIn .28s ease both}@keyframes pageIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.page-head{margin-bottom:22px}.page-head h1{font-size:22px;margin:0;letter-spacing:-.02em;font-weight:700}.page-head p{color:var(--muted);margin:5px 0 0;font-size:13.5px}.card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:18px;box-shadow:var(--shadow-sm);overflow:hidden}.card-head{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--border);background:linear-gradient(180deg,rgba(248,250,252,.5),rgba(248,250,252,0))}.card-head h2{font-size:14px;margin:0;font-weight:650;letter-spacing:-.01em}.card-actions{display:flex;gap:8px}.card-body{padding:18px}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));grid-gap:14px;gap:14px}.cols-2{display:grid;grid-template-columns:1fr 1fr;grid-gap:16px;gap:16px;align-items:start;margin-bottom:18px}.stat{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px;box-shadow:var(--shadow-xs);transition:box-shadow .16s ease,transform .16s ease,border-color .16s ease}.stat .v{font-size:26px;font-weight:750;letter-spacing:-.02em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.stat .k{color:var(--muted);font-size:12px;margin-top:2px}a.stat:hover{border-color:var(--border-strong);box-shadow:var(--shadow);transform:translateY(-2px);text-decoration:none}.kpi{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px 0;box-shadow:var(--shadow-xs);overflow:hidden;display:flex;flex-direction:column}.kpi-label{font-size:11.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-weight:600}.kpi-value{font-size:28px;font-weight:750;letter-spacing:-.02em;line-height:1.15;margin-top:3px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.kpi-sub{font-size:12px;color:var(--muted);margin-top:1px}.kpi-spark{margin:8px -16px 0}.table{width:100%;border-collapse:collapse;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.table td,.table th{text-align:left;padding:11px 12px;border-bottom:1px solid var(--border)}.table th{color:var(--muted);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.05em;background:var(--panel-2)}.table tbody tr{transition:background .12s ease}.table tbody tr:hover{background:var(--panel-2)}.table tbody tr:last-child td{border-bottom:none}.table td.muted{color:var(--muted);padding:22px 12px;text-align:center}.table code{color:var(--text-2);font-size:12.5px}.th-sort{background:none;border:none;font:inherit;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);cursor:pointer;padding:0;display:inline-flex;align-items:center;gap:5px}.th-sort:hover{color:var(--text)}.th-arrow{font-size:9px;opacity:.7}.btn{border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:7px 13px;font-weight:600;cursor:pointer;font-size:13px;background:var(--panel);color:var(--text);font-family:inherit;display:inline-flex;align-items:center;gap:6px;line-height:1.3;transition:background .14s ease,border-color .14s ease,box-shadow .14s ease,transform .06s ease}.btn:active:not(:disabled){transform:translateY(1px)}.btn:focus-visible{box-shadow:var(--ring);outline:none}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--accent);color:#fff;border-color:transparent;box-shadow:var(--shadow-xs)}.btn-primary:hover:not(:disabled){background:var(--accent-600)}.btn-ghost{background:var(--panel);color:var(--text-2)}.btn-ghost:hover:not(:disabled){background:var(--panel-2);border-color:var(--border-strong);color:var(--text)}.btn-danger{background:var(--panel);color:var(--bad);border-color:#f3c6d1}.btn-danger:hover:not(:disabled){background:#fff1f3;border-color:#ec9cae}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.field-label{font-size:12px;color:var(--text-2);font-weight:600}.field-hint{font-size:11.5px;color:var(--muted);line-height:1.45}input,select,textarea{background:var(--panel);border:1px solid var(--border-strong);color:var(--text);border-radius:var(--radius-sm);padding:9px 11px;font:inherit;width:100%;transition:border-color .14s ease,box-shadow .14s ease}input::placeholder,textarea::placeholder{color:#94a3b8}input:hover,select:hover,textarea:hover{border-color:#b6c2d2}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:var(--ring)}.row{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end}.row .field{flex:1 1;min-width:160px;margin-bottom:0}.badge{display:inline-flex;align-items:center;gap:4px;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:600;border:1px solid var(--border);line-height:1.6}.badge-ok{background:#f0fdf4;color:var(--ok);border-color:#bbf7d0}.badge-warn{background:#fffbeb;color:var(--warn);border-color:#fde68a}.badge-bad{background:#fff1f3;color:var(--bad);border-color:#fecdd3}.badge-neutral{background:var(--panel-2);color:var(--muted);border-color:var(--border)}.tabs{display:flex;gap:2px;flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;border-bottom:1px solid var(--border);margin-bottom:18px;scrollbar-width:thin}.tabs::-webkit-scrollbar{height:5px}.tabs::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:3px}.tab{flex:0 0 auto;white-space:nowrap;background:none;border:none;border-bottom:2px solid transparent;padding:9px 14px;font:inherit;font-size:13.5px;font-weight:600;color:var(--muted);cursor:pointer;margin-bottom:-1px;transition:color .14s ease,border-color .14s ease;-webkit-tap-highlight-color:transparent}.tab:hover{color:var(--text)}.tab.active{color:var(--accent-600);border-bottom-color:var(--accent)}.tab:focus{outline:none}.switch{position:relative;display:inline-block;width:40px;height:23px;cursor:pointer;vertical-align:middle}.switch input{position:absolute;opacity:0;width:0;height:0}.switch-slider{position:absolute;inset:0;background:#cbd5e1;border-radius:999px;transition:background .18s ease}.switch-slider:before{content:"";position:absolute;height:17px;width:17px;left:3px;top:3px;background:#fff;border-radius:50%;box-shadow:var(--shadow-xs);transition:transform .18s cubic-bezier(.4,0,.2,1)}.switch input:checked+.switch-slider{background:var(--ok)}.switch input:checked+.switch-slider:before{transform:translateX(17px)}.switch input:focus-visible+.switch-slider{box-shadow:var(--ring)}.seg{display:inline-flex;background:var(--panel-2);border:1px solid var(--border);border-radius:8px;padding:2px;gap:2px}.seg-btn{border:none;background:none;font:inherit;font-size:12.5px;font-weight:600;color:var(--muted);padding:4px 12px;border-radius:6px;cursor:pointer;transition:background .14s,color .14s}.seg-btn:hover{color:var(--text)}.seg-btn.active{background:var(--panel);color:var(--accent-600);box-shadow:var(--shadow-xs)}.muted{color:var(--muted)}.pad{padding:16px}.error{color:var(--bad)}.actions-inline{gap:8px}.actions-inline,.chips{display:flex;flex-wrap:wrap;align-items:center}.chips{gap:6px}.chip{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:999px;font-size:12px;font-weight:600;background:var(--panel-2);color:var(--text-2);border:1px solid var(--border)}.chip button{border:none;background:none;cursor:pointer;color:var(--muted);font-size:13px;line-height:1;padding:0}.chip button:hover{color:var(--bad)}.chip-add{border:1px dashed var(--border-strong);background:var(--panel);border-radius:999px;font-size:12px;padding:3px 10px;min-width:84px;outline:none}.chip-add:focus{border-color:var(--accent);border-style:solid;box-shadow:var(--ring)}.m{display:inline-block;padding:1px 7px;border-radius:5px;font-size:11px;font-weight:700;letter-spacing:.02em;margin:1px}.m-get{background:#ecfdf5;color:#047857}.m-post{background:#eef2ff;color:var(--accent-600)}.m-put{background:#fffbeb;color:#b45309}.m-patch{background:#f5f3ff;color:#6d28d9}.m-delete{background:#fff1f3;color:var(--bad)}.m-any{background:var(--panel-2);color:var(--muted)}.gw-stats{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:16px}.gw-stat{background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius);padding:10px 16px;min-width:96px}.gw-stat .n{font-size:20px;font-weight:750;line-height:1.1;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;letter-spacing:-.01em}.gw-stat .l{font-size:10.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-top:2px}.gw-sec{font-size:13px;font-weight:700;margin:20px 0 10px;display:flex;align-items:center;gap:8px;letter-spacing:-.01em}.gw-sec .hint{font-weight:400;font-size:12px;color:var(--muted)}.scroll-x{overflow-x:auto}.copybtn{border:1px solid var(--border);background:var(--panel);border-radius:var(--radius-sm);cursor:pointer;font-size:11px;padding:3px 8px;color:var(--muted);transition:background .14s,color .14s}.copybtn:hover{background:var(--panel-2);color:var(--text)}.toaster{position:fixed;bottom:20px;right:20px;display:flex;flex-direction:column;gap:10px;z-index:50}.toast{padding:11px 16px;border-radius:var(--radius);font-weight:600;font-size:13px;border:1px solid var(--border);background:var(--panel);box-shadow:var(--shadow-lg);animation:toastIn .26s cubic-bezier(.16,1,.3,1) both}@keyframes toastIn{0%{opacity:0;transform:translateX(16px) scale(.97)}to{opacity:1;transform:none}}.toast{display:flex;align-items:center;gap:9px}.toast-ico{width:18px;height:18px;border-radius:50%;display:grid;place-items:center;font-size:11px;font-weight:800;color:#fff;flex:0 0 auto}.toast-msg{flex:1 1 auto}.toast-action{border:none;background:none;font:inherit;font-weight:700;font-size:12.5px;cursor:pointer;color:inherit;text-decoration:underline;padding:0 2px;flex:0 0 auto}.toast-ok{background:#f0fdf4;color:var(--ok);border-color:#bbf7d0}.toast-ok .toast-ico{background:var(--ok)}.toast-bad{background:#fff1f3;color:var(--bad);border-color:#fecdd3}.toast-bad .toast-ico{background:var(--bad)}.modal-overlay{position:fixed;inset:0;background:rgba(15,23,42,.45);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:grid;place-items:center;z-index:60;padding:20px;animation:fadeIn .15s ease both}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);width:420px;max-width:100%;padding:22px;animation:modalIn .2s cubic-bezier(.16,1,.3,1) both}@keyframes modalIn{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}.modal-title{margin:0 0 8px;font-size:16px;font-weight:700;letter-spacing:-.01em}.modal-body{color:var(--text-2);font-size:13.5px;line-height:1.55;margin-bottom:18px;white-space:pre-line}.modal-actions{display:flex;justify-content:flex-end;gap:10px}.skel-wrap{display:flex;flex-direction:column;padding:4px 0}.skel{border-radius:6px;background:linear-gradient(90deg,var(--panel-2) 25%,var(--panel-3) 37%,var(--panel-2) 63%);background-size:400% 100%;animation:shimmer 1.4s ease infinite}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.empty{text-align:center;padding:40px 20px;color:var(--muted)}.empty-ico{width:46px;height:46px;margin:0 auto 12px;border-radius:12px;display:grid;place-items:center;font-size:22px;background:var(--accent-weak);color:var(--accent)}.empty-title{font-size:14.5px;font-weight:650;color:var(--text)}.empty-hint{font-size:13px;margin-top:4px;max-width:360px;margin-left:auto;margin-right:auto;line-height:1.5}.empty-action{margin-top:16px}.login-wrap{display:grid;place-items:center;min-height:100vh;padding:20px;background:radial-gradient(1200px 600px at 50% -10%,var(--accent-weak),transparent),var(--bg)}.login{width:380px;max-width:100%;box-shadow:var(--shadow-lg)}.login .brand{text-align:center;margin-bottom:18px;font-size:19px}*{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:6px;border:2px solid transparent;background-clip:content-box}::-webkit-scrollbar-thumb:hover{background:#94a3b8;background-clip:content-box}.table-wrap{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.overlay{position:fixed;inset:var(--topbar) 0 0 0;background:rgba(0,0,0,.4);z-index:40}@media (max-width:820px){.hamburger{display:inline-block}.topbar{position:-webkit-sticky;position:sticky;top:0;z-index:30}.sidebar{position:fixed;top:var(--topbar);left:0;bottom:0;height:calc(100vh - var(--topbar));width:250px;transform:translateX(-100%);transition:transform .2s ease;z-index:50;box-shadow:2px 0 16px rgba(0,0,0,.15)}.sidebar.open{transform:translateX(0)}.main{padding:16px;max-width:100%}.page-head h1{font-size:18px}.row{flex-direction:column;align-items:stretch}.row .btn,.row .field{width:100%}.card-head{flex-wrap:wrap;gap:8px}.grid{grid-template-columns:1fr 1fr}.cols-2{grid-template-columns:1fr}}@media (max-width:640px){.topbar-sub,.topbar-user{display:none}}@media (max-width:480px){.grid{grid-template-columns:1fr}.actions-inline{width:100%}.actions-inline .btn{flex:1 1}}