@font-face{font-family:Pretendard Variable;font-weight:45 920;font-style:normal;font-display:swap;src:url(/assets/PretendardVariable-CJuje-Rk.woff2) format("woff2-variations")}:root{--blue-50:#eff6ff;--blue-100:#dbeafe;--blue-200:#bfdbfe;--blue-300:#93c5fd;--blue-400:#60a5fa;--blue-500:#3b82f6;--blue-600:#2563eb;--blue-700:#1d4ed8;--blue-800:#1e40af;--blue-900:#1e3a8a;--gray-50:#f8fafc;--gray-100:#f1f5f9;--gray-200:#e2e8f0;--gray-300:#cbd5e1;--gray-400:#94a3b8;--gray-500:#64748b;--gray-600:#475569;--gray-700:#334155;--gray-800:#1e293b;--gray-900:#0f172a;--success:#16a34a;--warning:#f59e0b;--error:#dc2626;--info:#0ea5e9;--font-sans:"Pretendard Variable", Pretendard, -apple-system, system-ui, sans-serif;--font-mono:"JetBrains Mono", "Pretendard Variable", ui-monospace, "SF Mono", monospace;--tracking-tight:-.025em;--tracking-body:-.01em;--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:20px;--s-6:24px;--s-8:32px;--s-10:40px;--s-12:48px;--s-16:64px;--r-sm:6px;--r-md:8px;--r-lg:12px;--r-xl:16px;--r-pill:999px;--blur-glass:7px;--ease-out:cubic-bezier(.22,.61,.36,1);--dur:.18s;--u:1;--f:1;color-scheme:dark;--tooltip-bg: var(--gray-100);--tooltip-fg: var(--gray-900);--bg:#0a0f1a;--bg-sunken:#070b13;--surface:#111827;--surface-2:#151e30;--surface-glass:rgba(17,24,39,.55);--surface-glass-border:rgba(148,163,184,.14);--border:#1f2a3c;--border-strong:#2b3a52;--fg:#e8eef7;--fg-muted:#9fb0c6;--fg-subtle:#617087;--accent:#3b82f6;--accent-strong:#2563eb;--accent-hover:#60a5fa;--accent-fg:#ffffff;--accent-soft:rgba(37,99,235,.16);--shadow-xs:0 1px 2px rgba(0,0,0,.45);--shadow-sm:0 1px 2px rgba(0,0,0,.35), 0 3px 10px rgba(0,0,0,.28);--shadow-md:0 6px 22px rgba(0,0,0,.45);--shadow-lg:0 16px 48px rgba(0,0,0,.6);--shadow-glow:0 0 0 1px rgba(59,130,246,.45), 0 8px 28px rgba(37,99,235,.4);--bg-image: radial-gradient(1200px 640px at -8% -18%, rgba(59,130,246,.2), transparent 62%), radial-gradient(1000px 680px at 108% 8%, rgba(37,99,235,.14), transparent 60%)}[data-theme=dark]{color-scheme:dark;--tooltip-bg: var(--gray-100);--tooltip-fg: var(--gray-900);--bg:#0a0f1a;--bg-sunken:#070b13;--surface:#111827;--surface-2:#151e30;--surface-glass:rgba(17,24,39,.55);--surface-glass-border:rgba(148,163,184,.14);--border:#1f2a3c;--border-strong:#2b3a52;--fg:#e8eef7;--fg-muted:#9fb0c6;--fg-subtle:#617087;--accent:#3b82f6;--accent-strong:#2563eb;--accent-hover:#60a5fa;--accent-fg:#ffffff;--accent-soft:rgba(37,99,235,.16);--shadow-xs:0 1px 2px rgba(0,0,0,.45);--shadow-sm:0 1px 2px rgba(0,0,0,.35), 0 3px 10px rgba(0,0,0,.28);--shadow-md:0 6px 22px rgba(0,0,0,.45);--shadow-lg:0 16px 48px rgba(0,0,0,.6);--shadow-glow:0 0 0 1px rgba(59,130,246,.45), 0 8px 28px rgba(37,99,235,.4);--bg-image: radial-gradient(1200px 640px at -8% -18%, rgba(59,130,246,.2), transparent 62%), radial-gradient(1000px 680px at 108% 8%, rgba(37,99,235,.14), transparent 60%)}[data-theme=light]{color-scheme:light;--tooltip-bg: var(--gray-900);--tooltip-fg: var(--gray-50);--bg:#f1f5f9;--bg-sunken:#e8eef5;--surface:#ffffff;--surface-2:#f8fafc;--surface-glass:rgba(255,255,255,.62);--surface-glass-border:rgba(15,23,42,.1);--border:#e2e8f0;--border-strong:#cbd5e1;--fg:#0f172a;--fg-muted:#475569;--fg-subtle:#94a3b8;--accent:#2563eb;--accent-strong:#1d4ed8;--accent-hover:#1d4ed8;--accent-fg:#ffffff;--accent-soft:rgba(37,99,235,.1);--shadow-xs:0 1px 2px rgba(15,23,42,.06);--shadow-sm:0 1px 2px rgba(15,23,42,.06), 0 3px 10px rgba(15,23,42,.06);--shadow-md:0 8px 24px rgba(15,23,42,.1);--shadow-lg:0 20px 52px rgba(15,23,42,.16);--shadow-glow:0 0 0 1px rgba(37,99,235,.35), 0 10px 30px rgba(37,99,235,.22);--bg-image: radial-gradient(1200px 640px at -8% -18%, rgba(191,219,254,.65), transparent 62%), radial-gradient(1000px 680px at 108% 8%, rgba(219,234,254,.6), transparent 60%)}[data-bg=off]{--surface-glass:var(--surface);--surface-glass-border:var(--border);--blur-glass:0px;--bg-image: none}@keyframes mops-fade-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes mops-pulse{0%,to{opacity:1}50%{opacity:.35}}:root{--muted: var(--fg-muted);--primary: var(--accent);--red: var(--error);--font-scale-x: .96;--surface-alpha: 1;--header-h: 64px}:root{--surface-glass-bg: color-mix(in srgb, var(--surface) calc(var(--surface-alpha) * 100%), transparent);--surface-glass-blur: blur(calc(var(--blur-glass) * (1 - var(--surface-alpha))))}html{background:var(--bg)}html,body{transition:background-color var(--dur) var(--ease-out)}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:var(--bg-image),var(--bg);background-attachment:fixed;background-repeat:no-repeat;color:var(--fg);font-family:var(--font-sans);font-size:calc(15px * var(--f));line-height:1.5;letter-spacing:var(--tracking-body);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}.appbar h1,.card-head h2,.kpi .value,.dash-head h2,h3{letter-spacing:var(--tracking-tight)}.eyebrow{font-family:var(--font-mono);font-size:calc(11px * var(--f));letter-spacing:.08em;text-transform:uppercase;color:var(--fg-subtle)}.kpi .value{display:inline-block;transform:scaleX(var(--font-scale-x));transform-origin:left}.appbar{display:flex;align-items:stretch;justify-content:space-between;gap:16px;padding:0 calc(28px * var(--u));background:var(--surface-glass);-webkit-backdrop-filter:blur(var(--blur-glass));backdrop-filter:blur(var(--blur-glass));border-bottom:1px solid var(--surface-glass-border);position:sticky;top:0;z-index:20;flex-wrap:nowrap}.appbar .brand{display:flex;align-items:center;gap:9px;padding:calc(16px * var(--u)) 0;flex:none;border:none;background:transparent;color:inherit;cursor:pointer;font:inherit;border-radius:var(--r-sm)}.appbar .brand svg{flex:none;color:var(--accent)}.appbar .brand:hover h1{color:var(--accent)}.appbar .brand:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.appbar h1{font-size:calc(19px * var(--f));font-weight:700;margin:0;transition:color var(--dur) var(--ease-out)}.appbar .hint{font-family:var(--font-mono);font-size:calc(12px * var(--f));color:var(--fg-subtle);background:var(--surface-2);border:1px solid var(--border);padding:6px 12px;border-radius:var(--r-pill)}.layout{display:grid;grid-template-columns:300px minmax(0,1fr);gap:calc(20px * var(--u));padding:calc(20px * var(--u)) calc(28px * var(--u)) calc(40px * var(--u));max-width:1200px;margin:0 auto;align-items:start}@media (max-width: 820px){.layout{grid-template-columns:minmax(0,1fr)}.side{position:static}}[data-width=full] .layout,[data-width=full] .dash{max-width:none}main{min-width:0}@media (max-width: 640px){.appbar .hint{display:none}}@media (max-width: 720px){.appbar{padding:0 calc(14px * var(--u));gap:10px}.appbar-left{gap:10px}.tab .label{display:none}.tab{padding-left:calc(10px * var(--u));padding-right:calc(10px * var(--u))}}.side{position:sticky;top:calc(var(--header-h) + calc(20px * var(--u)))}.side-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.side-head .title{font-family:var(--font-mono);font-size:calc(12px * var(--f));font-weight:600;color:var(--fg-subtle);text-transform:uppercase;letter-spacing:.06em}.side-head .count{font-family:var(--font-mono);font-size:calc(12px * var(--f));color:var(--fg-subtle);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-pill);padding:2px 9px}.btn-new{display:inline-flex;align-items:center;justify-content:center;gap:6px;width:100%;padding:calc(10px * var(--u)) calc(12px * var(--u));margin-bottom:12px;border:1px solid var(--accent);background:var(--accent-soft);color:var(--accent);font-weight:600;font-size:calc(14px * var(--f));border-radius:var(--r-md);cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:background var(--dur) var(--ease-out),border-color var(--dur) var(--ease-out)}.btn-new:hover{background:color-mix(in srgb,var(--accent) 24%,transparent)}.side-compact{display:none}@media (max-width: 820px){.side-compact{display:flex;gap:8px;margin-bottom:12px}.side-compact .select{flex:1 1 auto;min-width:0;min-height:40px}.btn-new,ul.spec-list{display:none}}.btn-icon-add{flex:none;width:40px;min-height:40px;display:flex;align-items:center;justify-content:center;border:1px solid var(--accent);background:var(--accent-soft);color:var(--accent);border-radius:var(--r-md);cursor:pointer;transition:background var(--dur) var(--ease-out)}.btn-icon-add:hover{background:color-mix(in srgb,var(--accent) 24%,transparent)}.search-wrap{position:relative;margin-bottom:10px}.search-wrap .search{margin-bottom:0;padding-left:34px}.search-wrap .search-icon{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:var(--fg-subtle);pointer-events:none}.spec-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.spec-item{width:100%;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:calc(11px * var(--u)) calc(13px * var(--u));text-align:left;cursor:pointer;background:var(--surface-glass-bg);backdrop-filter:var(--surface-glass-blur);-webkit-backdrop-filter:var(--surface-glass-blur);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--shadow-sm);transition:border-color var(--dur) var(--ease-out),background var(--dur) var(--ease-out)}.spec-item:hover{border-color:var(--border-strong)}.spec-item.active{border-color:var(--accent);background:var(--accent-soft)}.spec-item .name{font-weight:600;font-size:calc(14px * var(--f));display:flex;align-items:center;gap:8px;min-width:0}.spec-item .name .key{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.spec-item .meta{color:var(--fg-muted);font-size:calc(12px * var(--f))}.tag{font-family:var(--font-mono);font-size:calc(11px * var(--f));font-weight:600;padding:3px 9px 3px 7px;border-radius:var(--r-pill);border:1px solid transparent;white-space:nowrap;display:inline-flex;align-items:center;gap:5px}.tag:before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor;flex:0 0 auto}.tag-common{background:var(--accent-soft);color:var(--accent)}.tag-on{background:color-mix(in srgb,var(--success) 14%,transparent);color:var(--success)}.tag-off{background:var(--surface-2);color:var(--fg-subtle)}.card{background:var(--surface-glass-bg);backdrop-filter:var(--surface-glass-blur);-webkit-backdrop-filter:var(--surface-glass-blur);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);overflow:hidden}.card-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:6px 12px;padding:calc(18px * var(--u)) calc(22px * var(--u));border-bottom:1px solid var(--border)}.card-head .h{display:flex;align-items:center;flex-wrap:wrap;gap:10px}.card-head h2{font-size:calc(17px * var(--f));margin:0;font-weight:700;white-space:nowrap}.version-tag{color:var(--fg-muted);font-size:calc(13px * var(--f))}.card-body{padding:calc(22px * var(--u))}.fieldset-plain{border:none;margin:0;min-width:0}.fieldset-plain:disabled{opacity:.7}.alert{margin:0 22px;margin-top:calc(16px * var(--u));padding:calc(10px * var(--u)) calc(14px * var(--u));border-radius:var(--r-md);font-size:calc(13.5px * var(--f))}.alert-err{background:color-mix(in srgb,var(--error) 10%,transparent);color:var(--error);border:1px solid color-mix(in srgb,var(--error) 35%,transparent)}.alert-ok{background:color-mix(in srgb,var(--success) 10%,transparent);color:var(--success);border:1px solid color-mix(in srgb,var(--success) 35%,transparent)}.grid{display:grid;grid-template-columns:1fr 1fr;gap:calc(16px * var(--u)) calc(20px * var(--u))}@media (max-width: 620px){.grid{grid-template-columns:1fr}}.field{display:flex;flex-direction:column;gap:6px}.field.full{grid-column:1 / -1}.field label{font-size:calc(13px * var(--f));font-weight:600;color:var(--fg-muted)}.input,.select{padding:calc(9px * var(--u)) calc(11px * var(--u));font-size:calc(14px * var(--f));color:var(--fg);border:1px solid var(--border-strong);border-radius:var(--r-md);background:var(--surface);width:100%;font-family:var(--font-sans);transition:border-color var(--dur) var(--ease-out),box-shadow var(--dur) var(--ease-out)}.input::placeholder{color:var(--fg-subtle)}.input:focus,.select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.input:disabled{background:var(--surface-2);color:var(--fg-muted)}.switches{display:flex;gap:22px;align-items:center;margin-top:4px}.switch{display:flex;align-items:center;gap:8px;font-size:calc(14px * var(--f));font-weight:500;cursor:pointer}.switch input{width:17px;height:17px;accent-color:var(--accent);cursor:pointer}.chip-group{display:flex;flex-wrap:wrap;gap:calc(7px * var(--u))}.chip-toggle{display:inline-flex;align-items:center;gap:5px;font-family:var(--font-mono);font-size:calc(12.5px * var(--f));font-weight:500;padding:calc(5px * var(--u)) calc(11px * var(--u));border:1px solid var(--border-strong);background:var(--surface);color:var(--fg-muted);border-radius:var(--r-pill);cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none;transition:background var(--dur) var(--ease-out),border-color var(--dur) var(--ease-out),color var(--dur) var(--ease-out)}.chip-toggle:hover{border-color:var(--fg-subtle);color:var(--fg)}.chip-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.chip-toggle.active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent);font-weight:600}.chip-toggle svg{flex:none;margin-left:-2px}.utable tr.group-head td{background:var(--surface-2);border-top:1px solid var(--border-strong);border-bottom:1px solid var(--border);padding:calc(8px * var(--u)) calc(12px * var(--u));box-shadow:inset 3px 0 0 var(--accent)}.utable tr:first-child.group-head td{border-top:none}.utable tr.group-head .group-label{font-family:var(--font-mono);font-size:calc(12.5px * var(--f));font-weight:700;color:var(--fg)}.utable tr.group-head .group-count{margin-left:10px;font-family:var(--font-mono);font-size:calc(11px * var(--f));color:var(--fg-subtle);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-pill);padding:1px 8px}.filter-list{display:flex;flex-direction:column;align-items:stretch}.filter-item+.filter-item{margin-top:0}.filter-and{font-family:var(--font-mono);font-size:calc(11px * var(--f));font-weight:700;letter-spacing:.08em;color:var(--fg-subtle);padding:calc(7px * var(--u)) 0 calc(7px * var(--u)) 2px}.filter-row{display:grid;align-items:center;gap:calc(8px * var(--u));grid-template-columns:minmax(120px,170px) minmax(84px,116px) minmax(0,1fr) auto}.filter-row .select,.filter-row .input{width:100%}.filter-list .btn-add{margin-top:12px;align-self:flex-start}.section-title{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:2px 12px;margin:calc(26px * var(--u)) 0 calc(12px * var(--u));padding-top:calc(20px * var(--u));border-top:1px solid var(--border)}.section-title h3{font-size:calc(15px * var(--f));margin:0;font-weight:700;white-space:nowrap}.section-title .desc{font-size:calc(12.5px * var(--f));color:var(--fg-muted)}.hint-text{color:var(--fg-muted);font-size:calc(12.5px * var(--f));margin-top:calc(14px * var(--u))}.table-wrap{border:1px solid var(--border);border-radius:var(--r-md);overflow-x:auto}.table-scroll{overflow-x:auto}table.fields{width:100%;min-width:600px;border-collapse:collapse;font-size:calc(14px * var(--f))}table.fields th{text-align:left;font-family:var(--font-mono);font-size:calc(11px * var(--f));font-weight:600;color:var(--fg-subtle);text-transform:uppercase;letter-spacing:.06em;background:var(--surface-2);padding:calc(10px * var(--u)) calc(12px * var(--u));border:1px solid var(--border)}table.fields th.center,table.fields td.center{text-align:center}table.fields th.col-type{width:130px}table.fields th.col-notnull{width:90px}table.fields th.col-partition,table.fields th.col-root{width:80px}table.fields th.col-persist{width:70px}table.fields th.col-unique{width:60px}table.fields th.col-del{width:48px}table.fields td{padding:0;border:1px solid var(--border);vertical-align:middle;background:var(--surface)}table.fields tbody tr:hover td{background:var(--surface-2)}table.fields tr.row-excluded{opacity:.55}table.fields tr.row-excluded:hover{opacity:.85}table.fields th.rownum{width:34px;text-align:center}table.fields td.rownum{width:34px;text-align:center;background:var(--surface-2);color:var(--fg-subtle);font-size:calc(12px * var(--f));cursor:grab;-webkit-user-select:none;user-select:none}table.fields td.rownum:active{cursor:grabbing}.cell{width:100%;padding:calc(6px * var(--u)) calc(8px * var(--u));border:none;border-radius:0;font-size:calc(13.5px * var(--f));background:transparent;color:var(--fg)}.cell:focus{outline:2px solid var(--accent);outline-offset:-2px;box-shadow:none}table.fields input[type=checkbox]{width:17px;height:17px;accent-color:var(--accent);cursor:pointer}table.fields td.center{padding:calc(4px * var(--u))}.uk-toggle{display:inline-flex;align-items:center;gap:5px;cursor:pointer}.uk-badge{display:inline-flex;align-items:center;justify-content:center;min-width:16px;height:16px;padding:0 4px;border-radius:var(--r-pill);background:var(--accent);color:var(--surface);font-family:var(--font-mono);font-size:calc(10.5px * var(--f));font-weight:700;line-height:1}.uk-summary{display:flex;align-items:center;gap:8px;margin-top:calc(12px * var(--u));padding:calc(8px * var(--u)) calc(12px * var(--u));border-radius:var(--r-md);background:var(--accent-soft);font-size:calc(13px * var(--f))}.uk-summary-label{font-family:var(--font-mono);font-size:calc(11px * var(--f));font-weight:700;color:var(--accent);letter-spacing:.04em}.uk-summary-chain{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-family:var(--font-mono);color:var(--fg)}.uk-summary-arrow{color:var(--fg-subtle)}.uk-summary-auto{color:var(--fg-muted);font-style:italic}.spec-io{display:flex;flex-direction:column;gap:calc(6px * var(--u));margin:calc(4px * var(--u)) 0 calc(10px * var(--u))}.spec-io .btn{justify-content:flex-start}.field-import{display:flex;align-items:center;gap:calc(8px * var(--u));margin-bottom:calc(12px * var(--u));color:var(--fg-subtle)}.field-import .input{max-width:360px}.icon-del{display:inline-flex;align-items:center;justify-content:center;border:none;background:transparent;color:var(--fg-subtle);line-height:1;cursor:pointer;padding:6px;border-radius:var(--r-sm);transition:color var(--dur) var(--ease-out),background var(--dur) var(--ease-out)}.icon-del:hover{color:var(--error);background:color-mix(in srgb,var(--error) 12%,transparent)}.btn-add{display:inline-flex;align-items:center;gap:6px;margin-top:12px;padding:calc(8px * var(--u)) calc(14px * var(--u));font-size:calc(13.5px * var(--f));font-weight:500;border:1px dashed var(--border-strong);background:var(--surface-2);color:var(--fg-muted);border-radius:var(--r-md);cursor:pointer;transition:color var(--dur) var(--ease-out),border-color var(--dur) var(--ease-out)}.btn-add svg,.btn-new svg{flex:none}.btn-add:hover{border-color:var(--accent);color:var(--accent)}.actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:calc(24px * var(--u));padding-top:calc(20px * var(--u));border-top:1px solid var(--border)}.btn{font-family:var(--font-sans);padding:calc(10px * var(--u)) calc(20px * var(--u));font-size:calc(14px * var(--f));font-weight:600;border-radius:var(--r-md);cursor:pointer;border:1px solid transparent;display:inline-flex;align-items:center;gap:7px;white-space:nowrap;transition:background var(--dur) var(--ease-out),border-color var(--dur) var(--ease-out),box-shadow var(--dur) var(--ease-out),color var(--dur) var(--ease-out)}.btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn svg{flex:none}.btn-primary{background:var(--accent-strong);color:var(--accent-fg);border-color:var(--accent-strong);box-shadow:var(--shadow-sm)}.btn-primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.btn-primary:disabled{background:var(--border-strong);border-color:var(--border-strong);color:var(--fg-subtle);cursor:not-allowed;opacity:.7;box-shadow:none}.btn-ghost{background:var(--surface-2);color:var(--fg);border-color:var(--border-strong)}.btn-ghost:hover{background:var(--surface);border-color:var(--fg-subtle)}.btn-danger{background:color-mix(in srgb,var(--error) 10%,transparent);color:var(--error);border-color:color-mix(in srgb,var(--error) 35%,transparent);margin-left:auto}.btn-danger:hover{background:color-mix(in srgb,var(--error) 16%,transparent)}.empty{text-align:center;color:var(--fg-subtle);padding:60px 20px}.empty .big{font-size:calc(15px * var(--f));font-weight:600;color:var(--fg);margin-bottom:6px}.appbar .tools{display:flex;align-items:center;gap:10px;padding:calc(16px * var(--u)) 0;flex:none;position:relative}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;flex:none;cursor:pointer;background:var(--surface);color:var(--fg);border:1px solid var(--border-strong);border-radius:var(--r-md);transition:background var(--dur) var(--ease-out),border-color var(--dur) var(--ease-out)}.theme-toggle:hover{background:var(--surface-2);border-color:var(--fg-subtle)}.theme-toggle svg{flex:none}.theme-toggle:disabled{opacity:.5;cursor:not-allowed}.popover{position:absolute;z-index:30;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--r-lg);box-shadow:var(--shadow-md)}.settings-popover{top:calc(100% + 10px);right:0;width:min(420px,calc(100vw - 32px));max-height:calc(100vh - var(--header-h, 64px) - 24px);overflow-y:auto}.popover-body{padding:calc(18px * var(--u));display:flex;flex-direction:column;gap:calc(16px * var(--u))}.popover-body .grid2{grid-template-columns:minmax(0,1fr)}@keyframes mops-spin{to{transform:rotate(360deg)}}.spin{animation:mops-spin .8s linear infinite}.search{width:100%;padding:calc(9px * var(--u)) calc(12px * var(--u));margin-bottom:10px;font-size:calc(14px * var(--f));color:var(--fg);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--r-md);font-family:var(--font-sans)}.search::placeholder{color:var(--fg-subtle)}.search:focus{outline:none;box-shadow:0 0 0 3px var(--accent-soft);border-color:var(--accent)}.side-empty{color:var(--fg-subtle);font-size:calc(13px * var(--f));padding:10px 4px}.cell.invalid,.input.invalid{border-color:var(--error);background:color-mix(in srgb,var(--error) 14%,transparent);color:var(--error)}.input.invalid:focus{box-shadow:0 0 0 3px color-mix(in srgb,var(--error) 20%,transparent);border-color:var(--error)}.cell.invalid:focus{outline:2px solid var(--error);outline-offset:-2px;box-shadow:none}.issues{margin:0;padding-left:18px}.issues li{margin:2px 0}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:var(--bg)}.login-card{width:100%;max-width:360px;background:var(--surface-glass-bg);backdrop-filter:var(--surface-glass-blur);-webkit-backdrop-filter:var(--surface-glass-blur);border:1px solid var(--border);border-radius:var(--r-xl);padding:calc(28px * var(--u)) calc(26px * var(--u));box-shadow:var(--shadow-lg);display:flex;flex-direction:column;gap:calc(16px * var(--u))}.login-brand{text-align:center;margin-bottom:4px}.login-brand h1{margin:0;font-size:calc(24px * var(--f));letter-spacing:var(--tracking-tight)}.login-brand .sub{color:var(--fg-muted);font-size:calc(13px * var(--f))}.login-btn{width:100%;justify-content:center;padding:calc(10px * var(--u));font-size:calc(15px * var(--f))}.login-err{color:var(--error);background:color-mix(in srgb,var(--error) 10%,transparent);border:1px solid color-mix(in srgb,var(--error) 35%,transparent);border-radius:var(--r-md);padding:calc(8px * var(--u)) calc(12px * var(--u));font-size:calc(13px * var(--f))}.token-issued .alert{margin:0}.token-issued .grid{margin-top:calc(12px * var(--u))}.token-value-row{display:flex;gap:8px}.input-mono{font-family:var(--font-mono)}.drag-handle{display:flex;align-items:center;justify-content:center;cursor:grab;color:var(--fg-subtle);-webkit-user-select:none;user-select:none;padding:4px 6px}.drag-handle:active{cursor:grabbing}tr.dragging{opacity:.45}tr.drop-target td{box-shadow:inset 0 2px 0 var(--accent)}.appbar-left{display:flex;align-items:stretch;gap:22px;min-width:0;flex:1 1 auto}.tabs{display:flex;align-items:stretch;gap:4px;min-width:0;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none}.tabs::-webkit-scrollbar{display:none}.tab{display:inline-flex;align-items:center;gap:7px;white-space:nowrap;flex:none;padding:calc(16px * var(--u)) calc(4px * var(--u));border:none;background:transparent;cursor:pointer;color:var(--fg-subtle);font-weight:600;font-size:calc(13.5px * var(--f));border-bottom:2px solid transparent;transition:color var(--dur) var(--ease-out),border-color var(--dur) var(--ease-out)}.tab svg{flex:none;opacity:.85}.tab.active{color:var(--fg);border-bottom-color:var(--accent)}.tab.active svg{color:var(--accent);opacity:1}.tab:hover:not(.active){color:var(--fg)}.tab-group{position:relative;display:flex}.tab-group-trigger .chev{transition:transform var(--dur) var(--ease-out);opacity:.7}.tab-group-trigger[aria-expanded=true] .chev{transform:rotate(180deg)}.tab-dropdown{position:fixed;min-width:180px;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--r-md);box-shadow:var(--shadow-md);padding:6px;display:flex;flex-direction:column;gap:2px;z-index:30}.tab-dropdown-item{display:flex;align-items:center;gap:8px;width:100%;text-align:left;padding:calc(8px * var(--u)) calc(10px * var(--u));border:none;background:transparent;border-radius:var(--r-sm);color:var(--fg-subtle);font-weight:600;font-size:calc(13.5px * var(--f));cursor:pointer;transition:background var(--dur) var(--ease-out),color var(--dur) var(--ease-out)}.tab-dropdown-item:hover{background:var(--surface-2);color:var(--fg)}.tab-dropdown-item.active{color:var(--accent)}.tab-dropdown-item svg{flex:none;opacity:.85}input[type=checkbox]{-moz-appearance:none;appearance:none;-webkit-appearance:none;margin:0;width:18px;height:18px;flex:none;position:relative;cursor:pointer;border:1.5px solid var(--border-strong);border-radius:5px;background:var(--surface);transition:background var(--dur) var(--ease-out),border-color var(--dur) var(--ease-out)}input[type=checkbox]:hover{border-color:var(--accent)}input[type=checkbox]:checked{background:var(--accent);border-color:var(--accent)}input[type=checkbox]:checked:after{content:"";position:absolute;left:5px;top:1.5px;width:5px;height:9px;border:solid var(--accent-fg);border-width:0 2px 2px 0;transform:rotate(45deg)}input[type=checkbox]:focus-visible{outline:2px solid var(--accent-soft);outline-offset:1px}.dash{display:flex;flex-direction:column;gap:calc(20px * var(--u));padding:calc(20px * var(--u)) calc(28px * var(--u)) calc(40px * var(--u));max-width:1200px;margin:0 auto}.dash-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px}.dash-head h2{margin:0;font-size:calc(18px * var(--f));white-space:nowrap}.kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:calc(16px * var(--u))}@media (max-width: 820px){.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}.kpi{background:var(--surface-glass-bg);backdrop-filter:var(--surface-glass-blur);-webkit-backdrop-filter:var(--surface-glass-blur);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);padding:calc(16px * var(--u)) calc(18px * var(--u))}.kpi .label{font-size:calc(12.5px * var(--f));color:var(--fg-muted);font-weight:600}.kpi .value{font-size:calc(26px * var(--f));font-weight:600;margin-top:6px;color:var(--fg)}.kpi .unit{font-size:calc(14px * var(--f));color:var(--fg-muted);font-weight:600;margin-left:4px}.grid2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:calc(20px * var(--u))}@media (max-width: 900px){.grid2{grid-template-columns:minmax(0,1fr)}}.panel{background:var(--surface-glass-bg);backdrop-filter:var(--surface-glass-blur);-webkit-backdrop-filter:var(--surface-glass-blur);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);overflow:hidden;display:flex;flex-direction:column}.panel-narrow{max-width:640px}.panel-full{grid-column:1 / -1}.panel-head{padding:calc(15px * var(--u)) calc(20px * var(--u));border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:2px 12px}.panel-head h3{margin:0;font-size:calc(15px * var(--f));white-space:nowrap}.panel-head .desc{font-size:calc(12.5px * var(--f));color:var(--fg-muted)}.panel-body{padding:calc(12px * var(--u)) calc(20px * var(--u)) calc(18px * var(--u));flex:1;display:flex;flex-direction:column}.bars-fill{flex:1;display:flex;flex-direction:column;justify-content:space-between;gap:2px;min-height:220px}.chart-fill{flex:1;display:flex;flex-direction:column;justify-content:center}.bar-row{display:grid;grid-template-columns:150px minmax(0,1fr) auto;gap:12px;align-items:center;padding:calc(7px * var(--u)) 0}.bar-name{font-size:calc(13.5px * var(--f));font-weight:600;color:var(--fg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bar-track{display:block;height:10px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-pill);overflow:hidden}.bar-fill{display:block;width:var(--bar-w);height:100%;background:var(--accent);border-radius:var(--r-pill);min-width:2px}.bar-val{font-family:var(--font-mono);font-size:calc(12.5px * var(--f));color:var(--fg-muted);font-variant-numeric:tabular-nums;white-space:nowrap}.utable{width:100%;border-collapse:collapse;font-size:calc(13.5px * var(--f))}.utable th{text-align:left;font-family:var(--font-mono);color:var(--fg-subtle);font-size:calc(12px * var(--f));font-weight:600;text-transform:uppercase;letter-spacing:.06em;padding:calc(8px * var(--u)) calc(10px * var(--u));border-bottom:1px solid var(--border)}.utable td{padding:calc(8px * var(--u)) calc(10px * var(--u));border-bottom:1px solid var(--border)}.utable td.num,.utable th.num{text-align:right;font-variant-numeric:tabular-nums}.utable tr:last-child td{border-bottom:none}.utable td.strong{font-weight:600;color:var(--fg)}.utable th.col-compress,.utable th.col-retention{width:160px}.utable th.col-ratio{width:120px}.utable th.col-action{width:80px}.btn-sm{padding:6px 12px;font-size:calc(13px * var(--f))}.res-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px}.res-card{border:1px solid var(--border);border-radius:var(--r-md);padding:14px 16px;background:var(--surface-2)}.res-card .host{font-weight:700;margin-bottom:10px;color:var(--fg)}.meter{margin:9px 0}.meter .top{display:flex;justify-content:space-between;font-size:calc(12.5px * var(--f));margin-bottom:4px;color:var(--fg-muted)}.meter .track{height:8px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-pill);overflow:hidden}.meter .fill{height:100%;border-radius:var(--r-pill)}.dash-empty{color:var(--fg-subtle);font-size:calc(13.5px * var(--f));padding:18px 4px;text-align:center}.utable tr.row-muted td{color:var(--fg-subtle);opacity:.6}.tl-legend{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:8px;font-size:calc(12.5px * var(--f));color:var(--fg-muted);align-items:center}.tl-key{display:flex;align-items:center;gap:6px}.tl-toggle{border:none;background:transparent;cursor:pointer;padding:0;font:inherit;color:var(--fg)}.tl-toggle:hover{color:var(--accent)}.tl-toggle.off{opacity:.45;text-decoration:line-through}.tl-key i{width:13px;height:3px;border-radius:2px;display:inline-block}.tl-svg{width:100%;height:auto;display:block;overflow:visible}.tl-grid{stroke:var(--border)}.tl-axis{font-family:var(--font-mono);fill:var(--fg-subtle);font-size:10px;letter-spacing:0}.tl-threshold{stroke-dasharray:5 4}.tl-swatch{background:var(--swatch-color)}.tl-swatch-fade{opacity:.6}.tl-stroke{stroke:var(--stroke-color)}.tl-fill{fill:var(--fill-color)}.res-tl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:18px}.res-tl-card{border:1px solid var(--border);border-radius:var(--r-md);padding:12px 14px}.res-tl-card .host{font-weight:700;margin-bottom:4px;font-size:calc(14px * var(--f));color:var(--fg)}.tl-sub{font-size:calc(12px * var(--f));color:var(--fg-subtle);font-weight:600;margin:12px 0 4px}.bar-row.compact{grid-template-columns:118px minmax(0,1fr) auto;padding:calc(5px * var(--u)) 0;font-size:calc(13px * var(--f))}.tl-wrap{position:relative;cursor:crosshair;-webkit-user-select:none;user-select:none}.tl-cross{stroke:var(--fg-muted);stroke-dasharray:3 3}.tl-sel{fill:var(--accent);opacity:.12}.tl-reset{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;margin-left:auto;padding:0;border:1px solid var(--border-strong);background:var(--surface);color:var(--fg);border-radius:var(--r-sm);cursor:pointer}.tl-reset svg{flex:none}.tl-reset:hover{background:var(--surface-2)}.tl-tip{position:absolute;top:2px;transform:translate(-50%);pointer-events:none;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--r-md);box-shadow:var(--shadow-md);padding:calc(8px * var(--u)) calc(10px * var(--u));font-size:calc(12.5px * var(--f));min-width:118px;z-index:5}.tl-tip-t{font-family:var(--font-mono);font-weight:700;margin-bottom:5px;color:var(--fg-subtle)}.tl-tip-row{display:flex;justify-content:space-between;gap:14px;margin:2px 0}.tl-tip-k{display:flex;align-items:center;gap:6px}.tl-tip-k i{width:10px;height:10px;border-radius:3px;display:inline-block}.tl-tip-v{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-weight:600;color:var(--fg)}.period{display:flex;gap:3px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-pill);padding:3px}.period button{padding:calc(5px * var(--u)) calc(12px * var(--u));border:none;background:transparent;color:var(--fg-subtle);font-weight:600;font-size:calc(12.5px * var(--f));border-radius:var(--r-pill);cursor:pointer;white-space:nowrap}.period button.active{background:var(--surface);color:var(--accent);box-shadow:var(--shadow-sm)}.host-filter{flex-wrap:wrap;width:fit-content;margin-bottom:calc(12px * var(--u))}.dash-tools{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.dash-tools .input{flex:1 1 220px;max-width:320px;width:auto}.toast-host{position:fixed;right:20px;bottom:20px;display:flex;flex-direction:column;gap:10px;z-index:100}.toast{display:flex;align-items:center;gap:9px;min-width:220px;max-width:380px;padding:calc(12px * var(--u)) calc(16px * var(--u));border-radius:var(--r-md);box-shadow:var(--shadow-md);font-size:calc(14px * var(--f));font-weight:500;color:var(--accent-fg);animation:mops-fade-up var(--dur) var(--ease-out)}.toast .ti{flex:none}.kbd{font-family:var(--font-mono);font-size:calc(11px * var(--f));color:var(--fg-subtle);margin-left:8px;font-weight:500}.toast-ok{background:var(--success)}.toast-err{background:var(--error)}.toast-info{background:var(--info)}[data-tip]{position:relative}[data-tip]:after{content:attr(data-tip);position:absolute;left:50%;bottom:calc(100% + 9px);transform:translate(-50%) translateY(4px);background:var(--tooltip-bg);color:var(--tooltip-fg);font-size:12px;font-weight:500;line-height:1.4;letter-spacing:0;padding:5px 9px;border-radius:var(--r-sm);white-space:nowrap;box-shadow:var(--shadow-md);opacity:0;visibility:hidden;pointer-events:none;transition:opacity .12s var(--ease-out),transform .12s var(--ease-out);z-index:60}[data-tip]:before{content:"";position:absolute;left:50%;bottom:100%;transform:translate(-50%) translateY(4px);border:5px solid transparent;border-top-color:var(--tooltip-bg);opacity:0;visibility:hidden;pointer-events:none;transition:opacity .12s var(--ease-out),transform .12s var(--ease-out);z-index:60}[data-tip]:hover:after,[data-tip]:hover:before,[data-tip]:focus-visible:after,[data-tip]:focus-visible:before{opacity:1;visibility:visible;transform:translate(-50%) translateY(0)}[data-tip].tt-bottom:after{bottom:auto;top:calc(100% + 9px);transform:translate(-50%) translateY(-4px)}[data-tip].tt-bottom:before{bottom:auto;top:100%;transform:translate(-50%) translateY(-4px);border-top-color:transparent;border-bottom-color:var(--tooltip-bg)}[data-tip].tt-right:after{left:0;transform:translateY(4px)}[data-tip].tt-right:before{left:14px;transform:translateY(4px)}[data-tip].tt-right:hover:after,[data-tip].tt-right:hover:before,[data-tip].tt-right:focus-visible:after,[data-tip].tt-right:focus-visible:before{transform:translateY(0)}input[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:6px;margin:6px 0;border-radius:var(--r-pill);background:var(--surface-2);border:1px solid var(--border);cursor:pointer}input[type=range]::-webkit-slider-runnable-track{height:6px;border-radius:var(--r-pill);background:transparent}input[type=range]::-moz-range-track{height:6px;border-radius:var(--r-pill);background:transparent}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin-top:-6px;width:17px;height:17px;border-radius:50%;background:var(--accent-strong);border:2px solid var(--accent-fg);box-shadow:var(--shadow-sm);cursor:pointer}input[type=range]::-moz-range-thumb{width:17px;height:17px;border-radius:50%;border:2px solid var(--accent-fg);background:var(--accent-strong);box-shadow:var(--shadow-sm);cursor:pointer}input[type=range]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.setting-row+.setting-row{margin-top:calc(22px * var(--u))}.setting-row__head{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.setting-row__head label{font-size:calc(14px * var(--f));font-weight:600;color:var(--fg)}.setting-row__val{font-family:var(--font-mono);font-size:calc(12.5px * var(--f));color:var(--accent);font-weight:600}.setting-row__desc{margin:2px 0 4px;font-size:calc(12.5px * var(--f));color:var(--fg-muted)}.setting-preview{margin-top:calc(22px * var(--u))}.setting-preview__label{margin-bottom:8px}.setting-preview__card{box-shadow:var(--shadow-md)}.seg{display:inline-flex;border:1px solid var(--border-strong);border-radius:var(--r-md);overflow:hidden;margin-top:4px}.seg-btn{font-family:var(--font-sans);font-size:calc(13px * var(--f));font-weight:600;padding:calc(9px * var(--u)) calc(14px * var(--u));border:none;background:var(--surface);color:var(--fg-muted);cursor:pointer;white-space:nowrap;transition:background var(--dur) var(--ease-out),color var(--dur) var(--ease-out)}.seg-btn+.seg-btn{border-left:1px solid var(--border-strong)}.seg-btn:hover{background:var(--surface-2);color:var(--fg)}.seg-btn.active{background:var(--accent-soft);color:var(--accent)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#02061499;display:flex;align-items:center;justify-content:center;padding:24px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal{width:100%;max-width:440px;max-height:90vh;overflow:auto;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-xl);box-shadow:var(--shadow-lg);display:flex;flex-direction:column}.modal.wide{max-width:720px}.modal.maximized{max-width:none;width:calc(100vw - 32px);height:calc(100vh - 32px);max-height:none;overflow:hidden}.modal.maximized .modal-body{flex:1;overflow:auto}.modal.maximized .bulk-grid-wrap{max-height:none;flex:1}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:calc(16px * var(--u)) calc(20px * var(--u));border-bottom:1px solid var(--border)}.modal-header h3{font-size:calc(15px * var(--f));font-weight:650;margin:0}.modal-header-actions{display:flex;align-items:center;gap:4px}.modal-body{padding:calc(20px * var(--u));display:flex;flex-direction:column;gap:14px}.modal-footer{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:calc(14px * var(--u)) calc(20px * var(--u));border-top:1px solid var(--border)}.modal-footer .spacer{flex:1}.ghost-icon{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border:1px solid transparent;border-radius:var(--r-md);background:transparent;color:var(--fg-muted);cursor:pointer}.ghost-icon:hover{background:var(--surface-2);color:var(--fg);border-color:var(--border)}.form-error{font-size:12px;color:var(--error)}.self-start{align-self:flex-start}.bulk-hint{margin-bottom:4px}.bulk-grid-wrap{max-height:340px;overflow:auto;border:1px solid var(--border);border-radius:var(--r-md)}.bulk-toolbar{display:flex;align-items:center;gap:10px;margin-bottom:2px}.bulk-toolbar .bulk-hint{flex:1;margin:0}.bulk-grid{border-collapse:collapse;table-layout:fixed;width:100%}.bulk-grid th,.bulk-grid td{border:1px solid var(--border);padding:0}.bulk-grid th{background:var(--surface-2);padding:7px 8px;position:sticky;top:0;z-index:1}.bulk-grid th.no{width:34px;text-align:center}.bulk-grid td.no{width:34px;text-align:center;background:var(--surface-2);color:var(--fg-muted)}.bulk-grid td.center{width:34px;text-align:center;background:var(--surface-2)}.bulk-grid td input{width:100%;border:none;background:transparent;border-radius:0;padding:6px 8px;font-size:12px;color:var(--fg)}.bulk-grid td input:focus{outline:2px solid var(--accent);outline-offset:-2px;box-shadow:none}.bulk-grid td input.dup{background:#dc262629;color:var(--error)}.bulk-grid tr:hover td{background:transparent}.bulk-grid tr:hover td.no,.bulk-grid tr:hover td.center{background:var(--surface-2)}.bulk-grid td.center .icon-del{color:var(--fg-muted)}.col-resize{position:absolute;top:0;right:-3px;width:7px;height:100%;cursor:col-resize;-webkit-user-select:none;user-select:none}.col-resize:hover{background:var(--accent);opacity:.4}.bulk-grid th{position:relative}.dup-warn{font-size:12px;color:var(--warning)}
