:root{--portal-primary:#0fabbb;--portal-primary-hover:#0c97a5;--portal-primary-ink:#0b7f8c;--portal-ink:#102a30;--portal-body:#334155;--portal-muted:#64748b;--portal-paper:#f4f7f7;--portal-surface:#fff;--portal-border:#e2e8f0;--portal-border-strong:#cbd5e1;--portal-mint:#e6f6f7;--portal-success:#15803d;--portal-success-bg:#dcfce7;--portal-warning:#b45309;--portal-warning-bg:#fef3c7;--portal-danger:#b91c1c;--portal-danger-bg:#fee2e2;--portal-info:#0b7f8c;--portal-info-bg:#e6f6f7;--portal-shadow:0 1px 2px #102a300f, 0 4px 12px -6px #102a3014;--portal-nav-height:64px}.portal-body{background:var(--portal-paper);min-height:100vh;color:var(--portal-body);margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif;font-size:14px;line-height:1.5}.portal-body *,.portal-body :before,.portal-body :after{box-sizing:border-box}.portal-body button,.portal-body input,.portal-body select{font:inherit;color:inherit}.portal-body h1,.portal-body h2,.portal-body h3{color:var(--portal-ink);letter-spacing:-.01em;font-weight:600}.portal-body p{color:inherit}.portal-body :focus-visible{outline:2px solid var(--portal-primary);outline-offset:2px;box-shadow:none}.portal-body a{color:var(--portal-primary-ink)}.portal-icon{vertical-align:middle;flex:none;display:inline-block}.num,.mono{font-variant-numeric:tabular-nums}.muted{color:var(--portal-muted);font-weight:400}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.portal-skip{z-index:60;background:var(--portal-ink);border-radius:8px;padding:8px 12px;font-weight:600;text-decoration:none;position:absolute;top:-48px;left:16px;color:#fff!important}.portal-skip:focus{top:12px}[hidden]{display:none!important}.portal-body .btn{white-space:nowrap;cursor:pointer;min-height:40px;box-shadow:none;opacity:1;border:1px solid #0000;border-radius:8px;justify-content:center;align-items:center;gap:8px;padding:0 16px;font-size:14px;font-weight:600;line-height:1;text-decoration:none;transition:background-color .15s,border-color .15s,color .15s;display:inline-flex}.portal-body .btn-primary{background:var(--portal-primary);border-color:var(--portal-primary);color:#fff}.portal-body .btn-primary:hover{background:var(--portal-primary-hover);border-color:var(--portal-primary-hover);opacity:1;box-shadow:none}.portal-body .btn-outline{background:var(--portal-surface);border-color:var(--portal-border-strong);color:var(--portal-ink)}.portal-body .btn-outline:hover{background:var(--portal-paper);border-color:var(--portal-muted)}.portal-body .btn-sm{min-height:32px;padding:0 12px;font-size:14px}.portal-body .btn:disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.text-link{color:var(--portal-primary-ink);align-items:center;gap:4px;font-size:14px;font-weight:600;text-decoration:none;display:inline-flex}.text-link:hover{text-decoration:underline}.pill{white-space:nowrap;border-radius:999px;align-items:center;min-height:24px;padding:0 10px;font-size:12px;font-style:normal;font-weight:600;line-height:1;display:inline-flex}.pill--success{background:var(--portal-success-bg);color:var(--portal-success)}.pill--warning{background:var(--portal-warning-bg);color:var(--portal-warning)}.pill--danger{background:var(--portal-danger-bg);color:var(--portal-danger)}.pill--info{background:var(--portal-info-bg);color:var(--portal-info)}.pill--neutral{color:var(--portal-body);background:#f1f5f9}.portal-header{z-index:40;background:var(--portal-surface);border-bottom:1px solid var(--portal-border);position:sticky;top:0}.portal-header__inner,.portal-workbench{width:100%;max-width:1280px;margin:0 auto;padding-left:32px;padding-right:32px}.portal-header__inner{align-items:center;gap:24px;height:72px;display:flex}.portal-brand{flex:none;align-items:center;gap:12px;text-decoration:none;display:flex}.portal-brand img{width:auto;height:40px;display:block}.portal-brand__tag{background:var(--portal-mint);min-height:24px;color:var(--portal-primary-ink);white-space:nowrap;border:1px solid #0fabbb33;border-radius:999px;align-items:center;padding:0 10px;font-size:12px;font-weight:600;display:inline-flex}.portal-nav{align-items:center;gap:4px;display:flex}.portal-nav a{min-height:40px;color:var(--portal-body);border-radius:8px;align-items:center;gap:8px;padding:0 12px;font-size:14px;font-weight:500;text-decoration:none;display:inline-flex}.portal-nav a .portal-icon{width:18px;height:18px;color:var(--portal-muted)}.portal-nav a:hover{background:var(--portal-paper);color:var(--portal-ink)}.portal-nav a[aria-current=page]{background:var(--portal-mint);color:var(--portal-primary-ink);font-weight:600}.portal-nav a[aria-current=page] .portal-icon{color:var(--portal-primary-ink)}.portal-main{outline:none}.portal-workbench{padding-top:32px;padding-bottom:64px}.portal-heading{justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:24px;display:flex}.portal-heading h1{letter-spacing:-.02em;margin:0;font-size:32px;line-height:1.2}.portal-heading p{color:var(--portal-muted);margin:6px 0 0;font-size:16px}.portal-card{border:1px solid var(--portal-border);background:var(--portal-surface);border-radius:12px;padding:24px}.portal-notice{border:1px solid;border-radius:12px;align-items:flex-start;gap:12px;margin-bottom:16px;padding:14px 16px;display:flex}.portal-notice>.portal-icon{margin-top:1px}.portal-notice>div{flex:1;gap:2px;min-width:0;display:grid}.portal-notice strong{color:var(--portal-ink);font-size:14px;font-weight:600}.portal-notice span{color:var(--portal-body);font-size:14px}.portal-notice>.btn{align-self:center}.portal-notice--info{background:var(--portal-mint);border-color:#a5dde3}.portal-notice--info>.portal-icon{color:var(--portal-primary-ink)}.portal-empty{text-align:center;align-content:center;place-items:center;gap:8px;min-height:320px;padding:32px 16px;display:grid}.portal-empty--compact{min-height:0;padding:32px 16px}.portal-empty h1,.portal-empty h2{margin:8px 0 0;font-size:20px}.portal-empty p{max-width:460px;color:var(--portal-muted);margin:0 0 8px;font-size:14px}.portal-empty--error{border:1px solid var(--portal-border);background:var(--portal-surface);border-radius:12px;margin-top:24px}.portal-skeleton{gap:16px;display:grid}.portal-skeleton span{background:linear-gradient(90deg,#e8eeee 25%,#f7f9f9 45%,#e8eeee 65%) 0 0/300% 100%;border-radius:12px;height:96px;animation:1.4s ease-in-out infinite portal-shimmer}.portal-skeleton span:first-child{max-width:420px;height:56px}@keyframes portal-shimmer{to{background-position:-150% 0}}@media (width<=1360px){.portal-body[data-portal-mock=true] .portal-brand__tag{display:none}}@media (width<=1180px){.portal-header__inner{gap:16px}.portal-brand__tag{display:none}.portal-nav a{padding:0 10px}.portal-nav a .portal-icon{display:none}}@media (width<=959px){.portal-header__inner,.portal-workbench{padding-left:24px;padding-right:24px}.portal-body{padding-bottom:calc(var(--portal-nav-height) + env(safe-area-inset-bottom))}.portal-nav{z-index:45;height:calc(var(--portal-nav-height) + env(safe-area-inset-bottom));padding:0 4px env(safe-area-inset-bottom);border-top:1px solid var(--portal-border);background:var(--portal-surface);grid-template-columns:repeat(5,1fr);gap:0;display:grid;position:fixed;bottom:0;left:0;right:0}.portal-nav a{min-height:var(--portal-nav-height);color:var(--portal-muted);border-radius:0;flex-direction:column;justify-content:center;gap:2px;padding:6px 2px;font-size:12px}.portal-nav a .portal-icon{width:22px;height:22px;display:inline-block}.portal-nav a:hover{background:0 0}.portal-nav a[aria-current=page]{color:var(--portal-primary-ink);background:0 0}}@media (width<=720px){.portal-header__inner,.portal-workbench{padding-left:16px;padding-right:16px}.portal-header__inner{gap:12px;height:64px}.portal-brand{gap:8px}.portal-brand img{height:36px}.portal-brand__tag{display:none}.portal-workbench{padding-top:24px;padding-bottom:32px}.portal-heading{flex-direction:column;align-items:stretch;gap:16px;margin-bottom:20px}.portal-heading h1{font-size:24px}.portal-heading p{font-size:14px}.portal-heading .btn{width:100%}.portal-card{padding:20px}.portal-notice{flex-wrap:wrap}.portal-notice>div{flex-basis:calc(100% - 32px)}.portal-notice>.btn{margin-left:32px}}@media (prefers-reduced-motion:reduce){.portal-skeleton span{animation:none}.portal-body .btn{transition:none}}
