/* Portal layout only. Palette, type, fields and buttons come from shared CSS. */
.portal { overflow-wrap:anywhere; background-image:none; }
.portal-header {
  height:64px; padding:0 24px; display:flex; align-items:center; gap:14px;
  border-bottom:1px solid var(--ds-border);
  background:color-mix(in srgb, var(--ds-surface) 86%, transparent);
  backdrop-filter:saturate(1.4) blur(10px);
}
.portal-brand { color:var(--ink-1); font-family:var(--app-serif); font-size:19px; font-weight:600; letter-spacing:-.005em; line-height:1; text-decoration:none; }
.portal-tagline { font-size:var(--ds-fs-2xs); color:var(--ink-3); margin-left:12px; padding-left:12px; border-left:1px solid var(--ds-border); }
.portal-header-tools {display:flex;align-items:center;gap:12px;margin-left:auto;flex-shrink:0;}
.portal-settings-link {display:inline-flex;align-items:center;justify-content:center;min-height:44px;min-width:44px;padding:8px;color:var(--ink-2);font-size:var(--ds-fs-sm);font-weight:600;text-decoration:none;border-radius:8px;}
.portal-settings-link:hover {background:var(--ds-surface-2);color:var(--ink-1);}
.portal-settings-link[aria-current=page] {color:var(--ds-accent-text);background:var(--ds-accent-wash);}
.portal-nav { display:flex; align-items:center; flex-wrap:wrap; gap:8px 20px; max-width:1440px; margin:auto; padding:12px 24px; border-bottom:1px solid var(--ds-border); }
.portal-nav a { display:inline-flex; align-items:center; min-height:44px; font-size:var(--ds-fs-sm); font-weight:600; text-decoration:none; color:var(--ink-2); }
.portal-nav a:hover, .portal-nav a[aria-current=page] {color:var(--ds-accent-text);}
.portal-nav a[aria-current=page] { box-shadow:inset 0 -2px var(--ds-accent); }

.portal main { max-width:1440px; margin:auto; padding:28px 24px 64px; }
.portal .eyebrow { color:var(--ink-3); font-size:var(--ds-fs-xs); font-weight:600; margin-bottom:8px; }
.portal h1 { font-size:var(--fs-display); line-height:1.3; margin:0 0 12px; }
.portal h2 { font-size:var(--fs-title); line-height:1.4; margin:0 0 12px; }
.portal h3 { font-size:var(--ds-fs-section); margin:0 0 8px; }
.portal p { margin:10px 0; }
.portal .muted, .portal .helptext { color:var(--ink-3); font-size:var(--ds-fs-sm); }
.portal .helptext { display:block; margin-top:6px; }
.portal .layout { display:grid; grid-template-columns:minmax(0,1.6fr) minmax(0,1fr); gap:24px; align-items:start; margin-top:24px; }
.portal .panel, .portal .record { padding:24px; min-width:0; background:var(--ds-surface); border:1px solid var(--ds-border); border-radius:var(--ds-radius-lg); box-shadow:var(--ds-shadow-sm); }
.portal .record { margin-bottom:16px; }
.portal .panel form p { margin:0 0 20px; }
.portal .panel form p label { margin-bottom:6px; }
.portal .badge { display:inline-flex; align-items:center; font-size:var(--ds-fs-xs); border:1px solid var(--ds-border-default); border-radius:var(--ds-radius-pill); padding:3px 10px; color:var(--ink-2); background:var(--ds-surface-2); }
.portal .fields { display:grid; grid-template-columns:1fr 1fr; gap:12px; margin:16px 0; }
.portal .fields > *, .portal .layout > * { min-width:0; }
.portal .fields>label>select {margin-top:8px;}
.portal details[open]>summary {margin-bottom:12px;}
.portal .panel>form+.muted {margin-top:20px;}
.portal .record details:last-child {margin-bottom:0;}
.portal .record form>.check {display:flex;width:100%;margin-bottom:16px;}
.portal .actions { display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
.portal .actions a:not(.btn) { display:inline-flex; align-items:center; min-height:44px; }
.portal .check { min-height:44px; margin-bottom:12px; }
.portal .check input { flex-shrink:0; width:18px; height:18px; }
.portal .errorlist { color:var(--ds-danger-fg); padding-left:20px; }
.portal .notices { border:1px solid var(--ds-border); border-radius:var(--ds-radius-lg); background:var(--ds-surface); padding:16px; margin:20px 0; }
.portal .notices p { margin:0; }
.portal .notices button { float:right; margin-left:12px; }
.portal .code { display:block; padding:16px; user-select:all; white-space:normal; overflow-wrap:anywhere; }
.portal details { margin:20px 0; }
.portal summary { cursor:pointer; min-height:44px; padding:8px 0; font-weight:600; }
.portal .pagination { display:flex; gap:16px; align-items:center; margin-top:24px; flex-wrap:wrap; }
.portal .pagination a { min-height:44px; padding:8px; }
.portal .keylist { list-style:none; margin:16px 0; padding:0; }
.portal .keylist li { display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; border-top:1px solid var(--ds-border); padding:12px 0; }
.portal .keylist code { overflow-wrap:anywhere; }
.portal .btn { min-height:44px; max-width:100%; white-space:normal; border-radius:8px; }
.portal input:not([type=checkbox]):not([type=hidden]) { min-height:44px; max-width:100%; border-radius:8px; }
.portal .skip-link { position:absolute; left:16px; top:-80px; z-index:200; padding:12px; background:var(--ds-surface); border:2px solid var(--ds-accent); }
.portal .skip-link:focus { top:8px; }
.portal-auth .portal-tagline { display:none; }
.portal-auth main {
  min-height:calc(100svh - 64px); width:100%; padding:32px 24px;
  display:flex; flex-direction:column; justify-content:center; align-items:center;
}
.portal .auth-card { width:100%; max-width:440px; padding:36px; }
.auth-heading { text-align:center; margin-bottom:28px; }
.portal .auth-heading h1 { font-size:26px; margin-bottom:8px; }
.portal .auth-submit { width:100%; }
.portal .auth-signup { text-align:center; margin:24px 0 0; }
.portal .auth-signup a { display:inline-flex; align-items:center; min-height:44px; font-weight:600; }
.portal .auth-help { text-align:center; border-top:1px solid var(--ds-border); padding-top:20px; margin-top:16px; }
.portal #request-status:empty { display:none; }
.service-menu { max-width:1000px; margin-top:28px; border:1px solid var(--ds-border); border-radius:var(--ds-radius-lg); background:var(--ds-surface); }
.service-menu-heading { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:8px 16px; padding:16px 24px; font-size:var(--ds-fs-sm); font-weight:600; color:var(--ink-2); }
.service-list { list-style:none; margin:0; padding:0; }
.service-item { min-width:0; border-top:1px solid var(--ds-border); }
.service-entry { display:flex; gap:16px; align-items:center; min-width:0; padding:20px 24px; color:var(--ink-1); text-decoration:none; border-radius:8px; }
.service-entry:hover { background:var(--ds-surface-2); color:var(--ink-1); }
.service-entry:focus-visible { outline:2px solid var(--ds-accent); outline-offset:-3px; }
.service-avatar { display:grid; place-items:center; width:44px; height:44px; flex-shrink:0; border:1px solid var(--ds-border); border-radius:10px; color:var(--ds-accent); background:var(--ds-surface-2); font-size:18px; font-weight:700; }
.service-info { display:flex; flex-direction:column; gap:4px; min-width:0; }
.service-name { font-size:var(--ds-fs-section); font-weight:600; }
.service-open { display:inline-flex; gap:10px; align-items:center; flex-shrink:0; margin-left:auto; color:var(--ds-accent); font-size:var(--ds-fs-sm); font-weight:600; }
.portal .service-tools {margin:0;padding:0 24px 12px 84px;}
.service-tools summary {font-size:var(--ds-fs-sm);color:var(--ink-2);font-weight:500;}
.service-tools a { display:inline-flex; align-items:center; min-height:44px; font-size:var(--ds-fs-sm); color:var(--ink-2); }
.service-empty { padding:28px 24px; border-top:1px solid var(--ds-border); }
.participation-options {display:grid;gap:16px;margin-top:28px;max-width:760px;}
.portal .participation-option {margin:0;border:1px solid var(--ds-border);border-radius:var(--ds-radius-lg);background:var(--ds-surface);}
.portal .participation-option>summary {display:flex;align-items:center;gap:16px;padding:20px 24px;list-style:none;margin:0;border-radius:var(--ds-radius-lg);}
.participation-option>summary::-webkit-details-marker {display:none;}
.participation-option>summary::after {content:'⌄';margin-left:auto;color:var(--ink-2);flex-shrink:0;}
.participation-option[open]>summary::after {content:'⌃';}
.participation-option>summary:hover {background:var(--ds-surface-2);}
.participation-option>summary strong {display:block;font-size:var(--ds-fs-section);margin-bottom:6px;}
.participation-option>summary .muted {display:block;font-weight:400;}
.participation-form {padding:0 24px 24px;}
.participation-form>p {margin:0 0 24px;}
.participation-form form>p {margin:0 0 20px;}
@media(max-width:991px) { .portal-tagline { display:none; } }
@media(max-width:760px) {
  .portal .layout, .portal .fields, .participation-options { grid-template-columns:minmax(0,1fr); }

}
@media(max-width:600px) {
  .portal-header { padding:0 16px; gap:8px; }
  .portal-nav { padding:8px 16px; gap:4px 16px; }
  .portal main { padding:24px 16px 64px; }
  .portal .panel, .portal .record { padding:18px 16px; }
  .portal-auth main { padding:24px 16px; }
  .portal .auth-card { padding:28px 24px; }
  .service-menu-heading, .service-entry, .service-empty { padding:16px; }
  .portal .service-tools { padding-left:76px; padding-right:16px; }
  .portal .participation-option>summary {padding:20px 16px;}
  .participation-form {padding:0 16px 24px;}
}

/* ChatGPT connection uses the existing portal's document scroll surface. */
.chatgpt-connection {max-width:760px;}
.chatgpt-connection .actions {margin:12px 0;}
.chatgpt-connection .actions select {flex:1;min-width:0;max-width:100%;}
.chatgpt-connection form {margin:12px 0;}
.portal .chatgpt-signin {background:var(--ink-1);color:var(--ds-surface);border-color:var(--ink-1);}
.chatgpt-welcome {width:min(480px,calc(100vw - 32px));max-height:calc(100dvh - 32px);overflow-y:auto;overflow-wrap:anywhere;padding:24px;border:1px solid var(--ds-border);border-radius:var(--ds-radius-lg);background:var(--ds-surface);color:var(--ink-1);}
.chatgpt-welcome::backdrop {background:rgb(0 0 0 / .4);}

/* Status, explicit actions and settings each have their own reading space. */
.portal-account-page {max-width:760px;margin-top:24px;}
.portal-section {border-top:1px solid var(--ds-border);padding-top:16px;margin-top:24px;}
.portal-disclosure>summary {font-size:var(--ds-fs-section);}
.portal-disclosure[open]>summary {margin-bottom:24px;}
.chatgpt-connection .record {padding:24px 0;border:0;border-top:1px solid var(--ds-border);border-radius:0;background:transparent;box-shadow:none;margin:24px 0;}
.chatgpt-connection .portal-section {margin-block:16px;}
.portal-account-page>form {margin-top:24px;}

/* Account navigation and actions stay outside the service destinations. */
.portal-footer {max-width:1440px;margin:0 auto;padding:16px 24px 32px;border-top:1px solid var(--ds-border);display:flex;align-items:center;justify-content:space-between;gap:16px;}
.portal-footer>span {min-width:0;}
.portal-footer form {margin:0;flex-shrink:0;}
.portal .portal-signout {border-color:transparent;background:transparent;color:var(--ink-2);font-weight:500;padding:8px;font-size:var(--ds-fs-sm);}
.portal .portal-signout:hover:not(:disabled) {border-color:transparent;background:var(--ds-surface-2);color:var(--ink-1);}
.portal-back {margin-bottom:16px;}
.portal-back a, .portal-inline-action {display:inline-flex;align-items:center;gap:8px;min-height:44px;font-size:var(--ds-fs-sm);font-weight:500;}
.portal .portal-list-title {margin:32px 0 16px;}
.portal-destination-list {list-style:none;padding:0;margin:0;border-top:1px solid var(--ds-border);}
.portal-destination-list li {border-bottom:1px solid var(--ds-border);}
.portal-destination {display:flex;align-items:center;justify-content:space-between;gap:24px;padding:20px 0;min-height:44px;text-decoration:none;color:var(--ink-1);border-radius:8px;}
.portal-destination:hover {background:var(--ds-surface-2);color:var(--ink-1);}
.portal-destination>span:first-child {min-width:0;}
.portal-destination strong {display:block;margin-bottom:6px;font-size:var(--ds-fs-section);}
.portal-destination .muted {display:block;}
.portal-destination>span:last-child {flex-shrink:0;color:var(--ds-accent-text);}
.portal-facts {margin:24px 0;}
.portal-facts>div {display:grid;grid-template-columns:minmax(100px,auto) minmax(0,1fr);gap:8px 24px;}
.portal-facts dt {color:var(--ink-3);font-size:var(--ds-fs-sm);}
.portal-facts dd {margin:0;font-size:var(--ds-fs-sm);}
.portal .portal-footnote {margin-top:24px;max-width:760px;line-height:1.7;}
.portal .portal-password {max-width:520px;}
.portal-password form>p, .portal-disclosure form>p {margin:0 0 24px;}
.portal-password form label, .portal-disclosure form label {margin-bottom:8px;}
.portal-form-actions {margin-top:24px;gap:16px;}
.connection-heading {display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px 16px;}
.connection-heading h2 {margin:0;min-width:0;flex:1 1 260px;}
.connection-heading .badge {flex-shrink:0;}
.chatgpt-connection .portal-facts {margin-block:16px;}
.chatgpt-connection .connection-management {margin-bottom:0;}
.chatgpt-connection form[data-model-check]>input {margin:8px 0 16px;}
.chatgpt-connection .connection-help {margin-top:32px;}
.connection-help>details {margin:8px 0 0;}
.portal :is(a,button,summary):focus-visible {outline:2px solid var(--ds-accent);outline-offset:3px;}
.portal .sr-only {position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0;}
@media(max-width:600px) {
  .portal-footer {padding:16px 16px 24px;}
  .portal-header-tools {gap:8px;}
  .portal-facts>div {grid-template-columns:minmax(0,1fr);}
  .service-open {white-space:normal;max-width:92px;}
}
