:root{--primary:#4f46e5;--primary-dark:#4338ca;--bg:#f6f7fb;--card:#ffffff;--ink:#1e2333;--muted:#6b7280;--border:#e5e7eb;--green:#16a34a;--green-bg:#dcfce7;--amber:#b45309;--amber-bg:#fef3c7;--red:#dc2626;--red-bg:#fee2e2;--gray-bg:#f1f3f5}*{box-sizing:border-box}body,html{padding:0;margin:0;max-width:100vw}body{background:var(--bg);color:var(--ink);font:15px/1.5 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased}a{color:var(--primary);text-decoration:none}button{font:inherit;cursor:pointer}.container{max-width:1080px;margin:0 auto;padding:0 20px}.muted{color:var(--muted)}.row{gap:8px}.row,.spread{display:flex;align-items:center}.spread{justify-content:space-between;gap:12px;flex-wrap:wrap}.app-header{background:var(--card);border-bottom:1px solid var(--border)}.app-header-inner{justify-content:space-between;padding:14px 20px;max-width:1080px;margin:0 auto}.app-header-inner,.brand{display:flex;align-items:center}.brand{gap:10px;font-weight:700;font-size:1.05rem}.nav-tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);background:var(--card);padding:0 20px;overflow-x:auto}.nav-tab{background:none;padding:12px 14px;color:var(--muted);font-weight:600;border:none;border-bottom:2px solid transparent;white-space:nowrap}.nav-tab:hover{color:var(--ink)}.nav-tab.active{color:var(--primary);border-bottom-color:var(--primary)}.nav-tab .lock{font-size:.8em;opacity:.8}:root{--sidebar-w:232px}.portal-shell{display:flex;min-height:100vh;align-items:stretch}.sidebar{width:var(--sidebar-w);flex:0 0 var(--sidebar-w);background:var(--card);border-right:1px solid var(--border);display:flex;flex-direction:column;position:-webkit-sticky;position:sticky;top:0;height:100vh;overflow-y:auto}.sidebar-brand{display:flex;align-items:center;gap:8px;font-weight:800;font-size:1.02rem;padding:18px 18px 12px;border-bottom:1px solid var(--border);line-height:1.25}.sidebar-email{font-size:.72rem;font-weight:500;color:var(--muted);margin-top:2px;word-break:break-all}.sidebar-nav{display:flex;flex-direction:column;gap:2px;padding:12px 10px;flex:1 1 auto}.side-link{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:10px 12px;border-radius:10px;color:var(--muted);font-weight:600;font-size:.92rem;border:1px solid transparent}.side-link:hover{background:var(--gray-bg);color:var(--ink)}.side-link.active{background:#eef2ff;color:var(--primary)}.side-link .lock{font-size:.85em;opacity:.8;margin-left:auto}.sidebar-foot{padding:12px;border-top:1px solid var(--border)}.sidebar-foot .btn{width:100%;justify-content:center}.portal-main{flex:1 1 auto;min-width:0}.portal-main .container{max-width:1080px}.sidebar-backdrop,.sidebar-toggle{display:none}@media (max-width:860px){.portal-shell{display:block}.sidebar-toggle{display:inline-flex;align-items:center;gap:8px;position:-webkit-sticky;position:sticky;top:0;z-index:60;width:100%;background:var(--card);border:none;border-bottom:1px solid var(--border);padding:12px 16px;font-weight:800;font-size:1rem;color:var(--ink)}.sidebar{position:fixed;top:0;left:0;z-index:80;height:100vh;width:260px;flex-basis:260px;transform:translateX(-100%);transition:transform .22s ease;box-shadow:2px 0 18px rgba(0,0,0,.18)}.sidebar.open{transform:translateX(0)}.sidebar-backdrop.open{display:block;position:fixed;inset:0;z-index:70;background:rgba(0,0,0,.45)}}.card{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:20px;margin:16px 0}.card-title{font-size:1.15rem;font-weight:700;margin:0 0 14px}.btn{display:inline-flex;align-items:center;gap:6px;background:var(--gray-bg);border:1px solid var(--border);border-radius:9px;padding:8px 14px;font-weight:600;color:var(--ink)}.btn:hover{background:#e9ebef}.btn-primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-dark)}.btn-sm{padding:5px 10px;font-size:.85rem;border-radius:8px}.btn-danger{color:var(--red);border-color:#f3c9c9}.btn[disabled]{opacity:.5;cursor:not-allowed}.input,select.input,textarea.input{width:100%;padding:9px 11px;border:1px solid var(--border);border-radius:9px;background:#fff;color:var(--ink);font:inherit}.input:focus{outline:none;border-color:var(--primary)}.field{margin-bottom:12px}.field label{display:block;font-size:.82rem;font-weight:600;margin-bottom:4px}.badge{display:inline-block;font-size:.74rem;font-weight:700;padding:3px 9px;border-radius:999px}.badge-green{background:var(--green-bg);color:var(--green)}.badge-amber{background:var(--amber-bg);color:var(--amber)}.badge-red{background:var(--red-bg);color:var(--red)}.badge-gray{background:var(--gray-bg);color:var(--muted)}table.tbl{width:100%;border-collapse:collapse;font-size:.92rem}table.tbl th{text-align:left;color:var(--muted);font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;padding:10px 12px}table.tbl td,table.tbl th{border-bottom:1px solid var(--border)}table.tbl td{padding:11px 12px;vertical-align:top}table.tbl tr:last-child td{border-bottom:none}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));grid-gap:14px;gap:14px;margin:16px 0}.stat{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:16px}.stat .label{font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.stat .value{font-size:1.6rem;font-weight:800;margin-top:4px}.overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:100;display:flex;align-items:center;justify-content:center;padding:16px}.modal{background:var(--card);border-radius:16px;max-width:560px;width:100%;max-height:90vh;overflow:auto;padding:22px}.empty{padding:48px 20px}.empty,.loading{text-align:center;color:var(--muted)}.loading{padding:40px}.alert{border-radius:9px;padding:10px 12px;font-size:.88rem;margin:10px 0}.alert-err{background:var(--red-bg);color:var(--red)}.alert-ok{background:var(--green-bg);color:var(--green)}.premium-gate{text-align:center;padding:48px 20px}.toasts{position:fixed;bottom:20px;right:20px;display:flex;flex-direction:column;gap:8px;z-index:200}.toast{background:#111827;color:#fff;padding:10px 16px;border-radius:10px;font-size:.9rem;box-shadow:0 6px 20px rgba(0,0,0,.25)}.toast.ok{background:var(--green)}.toast.err{background:var(--red)}