.portal-root{min-height:100dvh;padding-left:env(safe-area-inset-left,0);padding-right:env(safe-area-inset-right,0);padding-bottom:env(safe-area-inset-bottom,0);--portal-bg:#0f0f12;--portal-surface:#1a1a23;--portal-elevated:#252530;--portal-border:#2a2a3a;--portal-text:#f1f5f9;--portal-text-secondary:#cbd5e1;--portal-text-muted:#94a3b8;--portal-accent:#4f46e5;--portal-accent-hover:#6366f1;--portal-radius:10px;background:var(--portal-bg);color:var(--portal-text);font-family:DM Sans,ui-sans-serif,system-ui,sans-serif;-webkit-font-smoothing:antialiased}.portal-header{border-bottom:1px solid var(--portal-border);background:var(--portal-surface);padding-top:env(safe-area-inset-top,0)}.portal-header-inner{max-width:1140px;margin:0 auto;padding:.875rem 1rem;display:flex;align-items:center;justify-content:space-between;gap:1rem}.portal-brand{font-weight:600;font-size:.95rem;color:var(--portal-text);text-decoration:none;min-width:0}.portal-brand:hover{color:var(--portal-accent-hover)}.portal-btn-outline{display:inline-flex;align-items:center;justify-content:center;padding:.4rem .85rem;font-size:.8125rem;font-weight:500;color:var(--portal-text-secondary);background:transparent;border:1px solid var(--portal-border);border-radius:8px;text-decoration:none;flex-shrink:0;transition:background .12s ease,border-color .12s ease,color .12s ease}.portal-btn-outline:hover{background:var(--portal-elevated);border-color:var(--portal-border);color:var(--portal-text)}.portal-shell{max-width:960px;margin:0 auto;padding:1.5rem 1rem 2.5rem}.portal-h1{font-size:1.35rem;font-weight:700;letter-spacing:-.02em;margin:0 0 .75rem;color:var(--portal-text)}.portal-lead{font-size:.9375rem;color:var(--portal-text-secondary);margin:0 0 1rem}.portal-muted{color:var(--portal-text-muted);font-size:.875rem}.portal-list{list-style:none;margin:0;padding:0;border:1px solid var(--portal-border);border-radius:var(--portal-radius);overflow:hidden;background:var(--portal-surface)}.portal-list-item{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.85rem 1rem;border-bottom:1px solid var(--portal-border)}.portal-list-item:last-child{border-bottom:none}.portal-list-item a{color:var(--portal-text);text-decoration:none;font-weight:500;min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.portal-list-item a:hover{color:var(--portal-accent-hover)}.portal-badge{display:inline-block;padding:.2rem .5rem;font-size:.6875rem;font-weight:600;text-transform:capitalize;border-radius:6px;background:var(--portal-elevated);color:var(--portal-text-secondary);flex-shrink:0}.portal-badge-success{background:rgba(16,185,129,.15);color:#34d399}.portal-badge-warning{background:rgba(217,119,6,.18);color:#fbbf24}.portal-badge-error{background:rgba(239,68,68,.15);color:#f87171}.portal-badge-info{background:rgba(59,130,246,.15);color:#93c5fd}.portal-card{background:var(--portal-surface);border:1px solid var(--portal-border);border-radius:var(--portal-radius);padding:1.25rem}.portal-breadcrumb{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem;list-style:none;margin:0 0 1rem;padding:0;font-size:.875rem;color:var(--portal-text-muted)}.portal-breadcrumb a{color:var(--portal-accent-hover);text-decoration:none}.portal-breadcrumb a:hover{text-decoration:underline}.portal-breadcrumb-sep{color:var(--portal-text-muted);-webkit-user-select:none;-moz-user-select:none;user-select:none}.portal-label{display:block;font-size:.8125rem;font-weight:500;color:var(--portal-text-secondary);margin-bottom:.35rem}.portal-input,.portal-textarea{width:100%;padding:.5rem .65rem;font-size:.875rem;color:var(--portal-text);background:var(--portal-bg);border:1px solid var(--portal-border);border-radius:8px;font-family:inherit}.portal-input:focus,.portal-textarea:focus{outline:none;border-color:var(--portal-accent);box-shadow:0 0 0 2px rgba(79,70,229,.25)}.portal-btn-primary{display:inline-flex;align-items:center;justify-content:center;padding:.5rem 1rem;font-size:.875rem;font-weight:600;color:#fff;background:var(--portal-accent);border:none;border-radius:8px;cursor:pointer;transition:background .12s ease}.portal-btn-primary:hover:not(:disabled){background:var(--portal-accent-hover)}.portal-btn-primary:disabled{opacity:.55;cursor:not-allowed}.portal-error{color:#f87171;font-size:.8125rem;margin:0}.portal-empty{text-align:center;padding:2rem 1.25rem;border:1px dashed var(--portal-border);border-radius:var(--portal-radius);background:var(--portal-surface)}.portal-empty-icon{font-size:2rem;margin-bottom:.75rem;opacity:.85}.portal-skel{display:block;height:12px;max-width:100%;border-radius:6px;background:linear-gradient(105deg,var(--portal-elevated) 0,var(--portal-border) 42%,var(--portal-elevated) 84%);background-size:240% 100%;animation:portal-skel-shimmer 1.35s ease-in-out infinite}@media (prefers-reduced-motion:reduce){.portal-skel{animation:none;opacity:.75}}@keyframes portal-skel-shimmer{0%{background-position:120% 0}to{background-position:-120% 0}}.portal-loading{display:flex;flex-direction:column;gap:12px;max-width:420px}.portal-skel-line--lg{width:55%;height:22px}.portal-skel-line--md{width:88%}.portal-skel-line--sm{width:72%}