:root{
  --ink:#1A1A18;--ink2:#3A3935;--ink3:#6A6860;
  --forest:#1A3166;--forest2:#1E3D8A;
  --cream:#F8F7F4;--cream2:#EFECEA;
  --rule:#D8D4CE;--stone:#8B7355;
  --sans:'Plus Jakarta Sans',system-ui,sans-serif;
  --mono:'IBM Plex Mono',monospace;
}
*,*::before,*::after{box-sizing:border-box}
body{margin:0;font-family:var(--sans);color:var(--ink);background:var(--cream2);line-height:1.5}
a{color:var(--forest)}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{
  outline:3px solid var(--forest2);outline-offset:2px;
}

.skip-link{
  position:absolute;left:-9999px;top:0;background:var(--forest);color:#fff;
  padding:10px 16px;z-index:100;border-radius:0 0 4px 0;
}
.skip-link:focus{left:0}

.portal-page{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:24px}
.portal-card{background:#fff;border:1px solid var(--rule);border-radius:8px;padding:36px;max-width:420px;width:100%}
.portal-card h1{font-size:22px;margin:0 0 6px}
.portal-brand{font-family:var(--mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--stone);margin:0 0 20px}
.portal-card form{display:flex;flex-direction:column;gap:16px}
.portal-card label{display:flex;flex-direction:column;gap:6px;font-size:13.5px;color:var(--ink2);font-weight:600}
.portal-card input{font-family:inherit;font-size:15px;padding:11px 12px;border:1px solid var(--rule);border-radius:4px;width:100%}
.portal-card .field-help{font-weight:400;font-size:12.5px;color:var(--ink3)}
.portal-card button{margin-top:4px;background:var(--forest);color:#fff;border:none;border-radius:4px;padding:12px;font-size:15px;font-weight:600;cursor:pointer}
.portal-card button:hover{background:var(--forest2)}
.portal-links{margin-top:18px;font-size:13.5px;display:flex;flex-direction:column;gap:6px}
.portal-error{color:#b3261e;font-size:13.5px;background:#fdecea;border:1px solid #f5c6c2;border-radius:4px;padding:10px 12px;margin:0 0 16px}
.portal-success{color:#1b6e3c;font-size:13.5px;background:#eaf6ee;border:1px solid #bfe3cb;border-radius:4px;padding:10px 12px;margin:0 0 16px}
.portal-notice{color:var(--ink2);font-size:13.5px;background:var(--cream);border:1px solid var(--rule);border-radius:4px;padding:10px 12px;margin:0 0 16px}

.portal-shell{min-height:100vh}
.portal-topbar{
  display:flex;align-items:center;justify-content:space-between;
  padding:16px 32px;background:var(--ink);color:#fff;
}
.portal-topbar .portal-brand{color:#fff;margin:0}
.portal-topbar form{display:inline}
.portal-topbar button.link-button{
  background:none;border:none;color:rgba(255,255,255,.75);font:inherit;font-size:13.5px;
  cursor:pointer;text-decoration:underline;padding:0;
}
.portal-main{padding:32px;max-width:760px;margin:0 auto}
.portal-main h1{font-size:24px;margin:0 0 6px}
.portal-main .sub{color:var(--ink3);font-size:14px;margin-bottom:24px}

.portal-panel{background:#fff;border:1px solid var(--rule);border-radius:8px;padding:24px;margin-bottom:20px}
.portal-panel h2{font-size:16px;margin:0 0 14px}
.portal-btn{background:var(--forest);color:#fff;border:none;border-radius:4px;padding:10px 16px;font-size:14px;font-weight:600;cursor:pointer;font-family:inherit}
.portal-btn:hover{background:var(--forest2)}
.portal-btn-secondary{background:none;border:1px solid var(--rule);color:var(--ink2);cursor:pointer;font-size:14px;padding:10px 16px;border-radius:4px;font-family:inherit}
.portal-kv{display:grid;grid-template-columns:180px 1fr;gap:10px 16px;font-size:14px}
.portal-kv dt{color:var(--ink3)}
.portal-kv dd{margin:0}

.status-badge{display:inline-block;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600}
.status-badge.active{background:#eaf6ee;color:#1b6e3c}
.status-badge.pending{background:#fff6e5;color:#8a6100}
.status-badge.disabled{background:#fdecea;color:#b3261e}

.empty-state{color:var(--ink3);font-size:14px;font-style:italic}

@media (max-width: 600px){
  .portal-card{padding:24px}
  .portal-main{padding:20px}
  .portal-kv{grid-template-columns:1fr}
}
