:root{--bg: #f7f7f7;--surface: #fff;--text: #1a1430;--muted: #5d6c7b;--border: #e2e2e2;--border-strong: #cdd3db;--accent: #14005c;--accent-700: #2a1276;--accent-soft: #ece9f5;--cyan: #01e8e8;--cyan-soft: #defcfc;--warn-bg: #fef3c7;--warn-fg: #92400e;--inh-bg: #eef2f6;--inh-fg: #475569;--danger: #ea384c;--danger-bg: #ffdede;--ok: #16a34a;--shadow: 0 1px 2px rgba(20, 0, 92, .05), 0 10px 26px -14px rgba(20, 0, 92, .22);--radius: 14px}*{box-sizing:border-box}html,body{margin:0}body{font-family:Manrope,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;line-height:1.5}a{color:inherit;text-decoration:none}h1{font-size:1.5rem;font-weight:700;letter-spacing:-.02em;margin:0 0 .2rem}h2{font-size:1.05rem;font-weight:600;margin:1.6rem 0 .7rem}code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85em;background:#f1f3f9;padding:.08rem .4rem;border-radius:6px}.muted{color:var(--muted);font-size:.9rem}.app{display:flex;min-height:100vh}.sidebar{width:248px;flex-shrink:0;background:linear-gradient(180deg,#1d0a63,#14005c);color:#c9c4e2;display:flex;flex-direction:column;padding:1.4rem .9rem;position:sticky;top:0;height:100vh}.brand{font-weight:800;font-size:1.05rem;color:#fff;padding:0 .55rem}.brand-sub{font-size:.68rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:#8f86c4;padding:.15rem .55rem 1.3rem}nav.side{display:flex;flex-direction:column;gap:.15rem}.navlink{display:flex;align-items:center;gap:.55rem;padding:.55rem .7rem;border-radius:10px;color:#c9c4e2;font-size:.92rem;font-weight:500;transition:.12s}.navlink:hover{background:#ffffff17;color:#fff}.navlink.router-link-active{background:#ffffff1f;color:#fff}.navlink.primary{color:var(--cyan)}.side-foot{margin-top:auto;border-top:1px solid rgba(255,255,255,.08);padding-top:.8rem}.side-foot .who{font-size:.82rem;color:#cbd5e1;padding:.2rem .7rem .35rem;word-break:break-all}.role-pill{display:inline-block;margin:0 .7rem .5rem;font-size:.66rem;font-weight:700;letter-spacing:.04em;padding:.16rem .5rem;border-radius:999px;background:#01e8e829;color:var(--cyan)}.content{flex:1;min-width:0;padding:2rem 2.4rem;max-width:1040px}.auth{display:grid;place-items:center;min-height:100vh;background:radial-gradient(1200px 600px at 50% -10%,#e0e7ff,transparent),var(--bg)}.auth-card{width:380px;max-width:92vw;background:var(--surface);border:1px solid var(--border);border-radius:18px;box-shadow:var(--shadow);padding:1.8rem}.auth-card .brand{color:var(--accent);text-align:center}.auth-card .brand-sub{text-align:center;color:var(--muted)}.card,.section{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.15rem 1.3rem;margin:.9rem 0}.crumb{color:var(--muted);font-size:.85rem;margin:-.1rem 0 1.2rem}.crumb a{color:var(--accent-700);font-weight:500}.head-row{display:flex;align-items:center;gap:.8rem;margin-bottom:.4rem}.head-row .spacer{flex:1}.btn{display:inline-flex;align-items:center;gap:.4rem;background:var(--accent);color:#fff;border:1px solid transparent;border-radius:10px;padding:.55rem .95rem;font:inherit;font-weight:600;font-size:.9rem;cursor:pointer;transition:.13s;box-shadow:0 1px 2px #14005c40}.btn:hover{background:var(--accent-700);transform:translateY(-1px)}.btn:disabled{opacity:.55;cursor:not-allowed;transform:none}.btn.ghost{background:var(--surface);color:var(--text);border-color:var(--border-strong);box-shadow:none}.btn.ghost:hover{background:#f8fafc;border-color:var(--accent)}.btn-row{display:flex;gap:.6rem;align-items:center;margin-top:1.2rem}.table-wrap{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}table{width:100%;border-collapse:collapse}th{text-align:left;padding:.7rem .9rem;font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);background:#fafbfd;border-bottom:1px solid var(--border)}td{padding:.75rem .9rem;border-bottom:1px solid var(--border);font-size:.92rem}tbody tr:last-child td{border-bottom:0}tbody tr.clickable{cursor:pointer}tbody tr.clickable:hover{background:#fafbff}label.fld{display:block;font-size:.82rem;font-weight:600;color:#334155;margin:.7rem 0 .35rem}label.fld .req{color:var(--danger);margin-left:.15rem}input[type=text],input[type=email],select,textarea{width:100%;padding:.6rem .7rem;border:1px solid var(--border-strong);border-radius:10px;background:var(--surface);font:inherit;font-size:.92rem;color:var(--text);transition:.12s}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--cyan);box-shadow:0 0 0 3px var(--cyan-soft)}textarea{min-height:5rem;font-family:ui-monospace,Menlo,monospace;font-size:.85rem;resize:vertical}.chips{display:flex;flex-wrap:wrap;gap:.4rem}.chip{display:inline-flex;align-items:center;font-size:.8rem;font-weight:600;padding:.25rem .6rem;border-radius:999px;background:var(--accent-soft);color:var(--accent-700)}.chip.off{background:#eef2f6;color:#94a3b8}.pill{display:inline-block;font-size:.74rem;font-weight:600;padding:.16rem .5rem;border-radius:999px;background:var(--accent-soft);color:var(--accent-700)}.badge{font-size:.68rem;font-weight:700;padding:.2rem .5rem;border-radius:999px;text-transform:uppercase}.badge.over{background:var(--warn-bg);color:var(--warn-fg)}.err{background:var(--danger-bg);color:#a3162a;border:1px solid #f6b9c0;padding:.6rem .8rem;border-radius:10px;margin:.6rem 0;font-size:.9rem}.note{background:var(--warn-bg);color:var(--warn-fg);border:1px solid #fde68a;padding:.7rem .85rem;border-radius:10px;font-size:.88rem}.hint{color:var(--muted);font-size:.82rem;margin:.1rem 0 .7rem}.note.ok-note{background:#e7f8ee;color:#14663a;border-color:#b7e4c7}.flash{position:fixed;top:1rem;right:1rem;z-index:50;background:#e7f8ee;color:#14663a;border:1px solid #b7e4c7;border-left:3px solid var(--ok);padding:.7rem 1rem;border-radius:10px;font-size:.9rem;font-weight:500;box-shadow:0 6px 20px #0206171f}.flash-enter-active,.flash-leave-active{transition:opacity .2s ease,transform .2s ease}.flash-enter-from,.flash-leave-to{opacity:0;transform:translateY(-6px)}.loading{color:var(--muted);padding:1.4rem 0}.sec-head{display:flex;align-items:center;gap:.6rem;margin-bottom:.8rem}.sec-head h3{font-size:.95rem;font-weight:700;margin:0}.sec-head .spacer{flex:1}.badge.inh{background:var(--inh-bg);color:var(--inh-fg)}.switch{display:inline-flex;align-items:center;gap:.4rem;font-size:.82rem;font-weight:600;color:var(--muted);cursor:pointer}.switch input{width:1rem;height:1rem;accent-color:var(--accent)}.chip-flag{display:flex;flex-direction:column;gap:.15rem;max-width:240px;border:1px solid var(--border-strong);border-radius:12px;padding:.5rem .7rem;cursor:pointer;transition:.12s;background:var(--surface)}.chip-flag .cf-h{display:flex;align-items:center;gap:.4rem;font-weight:600;font-size:.86rem}.chip-flag input{accent-color:var(--accent)}.chip-flag .cf-d{font-size:.72rem;color:var(--muted);line-height:1.3}.chip-flag.on{border-color:var(--accent);background:var(--accent-soft)}.chip-flag.on .cf-h{color:var(--accent-700)}.chip-flag.dim{opacity:.55;cursor:default}.matrix-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:10px}table.matrix{width:100%;border-collapse:collapse;font-size:.85rem}table.matrix th{position:sticky;top:0;background:#fafbfd}table.matrix td{padding:.5rem .7rem;border-bottom:1px solid var(--border);vertical-align:top}table.matrix tbody tr:last-child td{border-bottom:0}.type{font-family:ui-monospace,Menlo,monospace;font-size:.8rem;color:#334155}.fdesc{font-size:.76rem;color:var(--muted);margin-top:.15rem;max-width:380px}.enumv{display:inline-block;background:#f1f5f9;border-radius:5px;padding:0 .35rem;font-family:ui-monospace,Menlo,monospace;font-size:.72rem;margin:.1rem .15rem 0 0}.badge.req{background:#fee2e2;color:#991b1b}.badge.opt{background:var(--inh-bg);color:var(--inh-fg)}select.mini,input.mini{padding:.32rem .45rem;font-size:.82rem;border-radius:8px;border:1px solid var(--border-strong);min-width:120px;width:auto}input.mini{min-width:150px}.method{font-size:.7rem;font-weight:700;padding:.18rem .45rem;border-radius:6px}.method.GET{background:#e0f2fe;color:#075985}.method.POST{background:#dcfce7;color:#166534}.method.PUT{background:#fef9c3;color:#854d0e}.method.PATCH{background:#f3e8ff;color:#6b21a8}.method.DELETE{background:#fee2e2;color:#991b1b}pre.spec{margin:0;overflow:auto;max-height:70vh;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.8rem;line-height:1.45;white-space:pre}.empty{color:var(--muted);padding:1.4rem;text-align:center}
