*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;color:#182d38;background:#f5f7f8;font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}img,svg{max-width:100%}button,input,select{font:inherit}button,a,input,select{touch-action:manipulation}a{color:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.65}:focus-visible{outline:3px solid #137dba;outline-offset:4px}main{min-width:0}p{line-height:1.65}button{min-height:44px}a{overflow-wrap:anywhere}.portal-skip{position:absolute;left:12px;top:-100px;z-index:100;background:#fff;padding:14px}.portal-skip:focus{top:12px}.portal-boundary{background:#172b36;color:#fff;text-align:center;font-size:12px;font-weight:600;letter-spacing:.03em;padding:11px 20px}.portal-run-state,.portal-footer,.portal-noscript{max-width:1320px;margin:24px auto;padding:24px 32px}.portal-run-state{border:1px solid #ccd4d8;background:#fff;border-radius:12px}.portal-run-state h2{font-size:17px;margin:0}.portal-run-state p{font-size:14px}.portal-run-state button{padding:8px 14px;border:1px solid #85959e;background:transparent;color:inherit;border-radius:6px}.portal-footer{display:flex;gap:24px;align-items:center;font-size:12px;line-height:1.6}.portal-footer span{flex:1}.portal-directory main{max-width:1180px;margin:70px auto;padding:24px}.portal-directory h1{font-size:clamp(38px,6vw,72px);letter-spacing:-.055em;max-width:700px;line-height:1.02}.portal-directory main>p{max-width:770px}.portal-directory-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin:36px 0}.portal-directory-grid>a{background:white;border:1px solid #c8d3d8;padding:28px;border-radius:12px;text-decoration:none;transition:transform .18s ease}.portal-directory-grid>a:hover{transform:translateY(-3px)}.portal-directory-grid h2{font-size:24px}.portal-directory-grid span{font-weight:650}.portal-app [hidden]{display:none!important}.portal-app [data-status-output]{overflow-wrap:anywhere}@media(max-width:760px){.portal-directory-grid{grid-template-columns:1fr}.portal-footer{flex-direction:column;align-items:flex-start}.portal-run-state,.portal-footer{margin:16px;padding:20px}.portal-directory main{margin:20px auto}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}}
/* The shared state belongs visually to each business, not to a second facade. */
body[data-portal=telco]{background:#f4f8fd;color:#15324d}
body[data-portal=fitness]{background:#f4f2e8;color:#182017}
body[data-portal=fitness] .portal-run-state{border:2px solid #182017;border-radius:0;background:transparent}
body[data-portal=fitness] .portal-run-state button{border-radius:0;border-color:#182017}
body[data-portal=employer]{background:#eeefe7;color:#263b32}
body[data-portal=employer] .portal-run-state{background:#fffefa;border-color:#c8cec1;border-radius:0}
body[data-portal=university]{background:#f7f3e9;color:#182e48}
body[data-portal=university] .portal-run-state{background:#fffdf8;border-color:#cfc8b7;border-radius:0}
body[data-portal=university] .portal-run-state h2{font-family:Georgia,serif;font-weight:normal;font-size:23px}
body[data-portal=github]{background:#0d141d;color:#e8eef5}
body[data-portal=github] .portal-run-state{background:#111e29;border-color:#304252;border-radius:8px}
body[data-portal=github] .portal-footer a{color:#9affc8}
body[data-portal=zkio]{background:#f3f0e7;color:#233d34}
body[data-portal=zkio] .portal-run-state{background:#e7eddc;border-color:#ccd6bc;border-radius:18px}
.portal-ack{display:flex;align-items:flex-start;gap:12px;font:14px/1.6 system-ui,sans-serif;margin:20px 0}.portal-ack input{width:20px;height:20px;flex-shrink:0;margin-top:2px;accent-color:currentColor}
.portal-surface-nav{display:flex;gap:24px;align-items:center;padding:12px 30px;border-bottom:1px solid #85959e55;font-size:11px}.portal-surface-nav span{margin-left:auto;opacity:.85}.portal-surface-nav a{text-underline-offset:4px}@media(max-width:760px){.portal-surface-nav{flex-wrap:wrap;gap:12px 20px;padding:14px 20px}.portal-surface-nav span{width:100%;margin-left:0;font-size:10px}}
.portal-allocation{max-width:1320px;margin:24px auto;padding:12px 32px;font-size:11px;line-height:1.7;overflow-wrap:anywhere}.portal-allocation summary{cursor:pointer;min-height:32px;padding:6px 0}.portal-allocation p{max-width:760px}@media(max-width:760px){.portal-allocation{margin:16px;padding:12px 20px}}
/* Adapter return states share framing, never brand composition or authority. */
.portal-adapter-workflow { margin: 1rem auto; padding: 1.25rem; width: min(72rem, calc(100% - 2rem)); box-sizing: border-box; border: 1px solid currentColor; border-radius: .75rem; }
.portal-adapter-workflow nav { display: flex; gap: 1rem; flex-wrap: wrap; }
.portal-adapter-action { display: inline-flex; align-items: center; min-height: 44px; padding: .25rem .5rem; }
.portal-adapter-page { padding: clamp(1rem, 3vw, 2.5rem); overflow-wrap: anywhere; }
.portal-adapter-page h1 { font-size: clamp(2rem, 5vw, 3.5rem); line-height: 1.1; }
.portal-adapter-page dl > div { padding: .75rem 0; border-bottom: 1px solid currentColor; }
.portal-adapter-page dd { margin: .25rem 0; }
.portal-account-authorization { max-width: 48rem; padding: clamp(1rem, 4vw, 3rem); }
.portal-account-authorization h1 { font-size: clamp(2rem, 5vw, 3.25rem); line-height: 1.15; }
.portal-account-authorization form { display: grid; gap: .75rem; max-width: 36rem; margin: 2rem 0; }
.portal-account-authorization input:not([type=hidden]):not([type=checkbox]) { width: 100%; min-width: 0; min-height: 48px; padding: .75rem; border: 1px solid currentColor; border-radius: .25rem; background: #fff; color: #182d38; }
.portal-authorization-actions { display: flex; flex-wrap: wrap; gap: 1rem; }
.portal-authorization-actions button { padding: .75rem 1rem; border: 1px solid currentColor; border-radius: .25rem; background: transparent; color: inherit; }
.portal-authorization-actions button[value=authorize] { background: #263b32; color: #fff; }
body[data-portal=university] .portal-authorization-actions button[value=authorize] { background: #182e48; }
