/* Shared connection screen and account model-access editor; existing Most tokens and controls. */
.connection-layout { display: grid; grid-template-columns: minmax(0,1.45fr) minmax(250px,1fr); gap: 18px; align-items: start; }
.connection-layout > .panel { margin: 0; }
.connection-card > .server-address { margin: 5px 0 22px; color: var(--text-3); font-size: 12px; overflow-wrap: anywhere; }
.connection-status { display: flex; gap: 14px; align-items: center; padding: 16px; border-radius: var(--r); background: var(--bg-sunk); }
.connection-symbol { display: grid; place-items: center; width: 40px; height: 40px; flex: none; border-radius: 50%; background: var(--accent-wash); color: var(--accent-ink); }
.connection-symbol .spinner { width: 19px; height: 19px; border-width: 2px; flex: none; }
.connection-symbol .i { width: 22px; height: 22px; }
.connection-status h3 { margin: 0 0 4px; font-size: 15px; font-weight: 600; }
.connection-status p { margin: 0; max-width: 43ch; color: var(--text-3); font-size: 13px; line-height: 1.5; }
.connection-status.good .connection-symbol { background: var(--ok-wash); color: var(--ok); }
.connection-status.bad .connection-symbol { background: var(--bad-wash); color: var(--bad); }
.request-details { display: grid; gap: 16px; margin: 22px 0; }
.request-details dt { margin-bottom: 3px; color: var(--text-3); font-size: 12px; }
.request-details dd { margin: 0; color: var(--text); font-size: 13px; overflow-wrap: anywhere; }
.connection-footer { display: flex; align-items: center; justify-content: space-between; gap: 12px; border-top: 1px solid var(--line-soft); padding-top: 16px; }
.connection-footer p { margin: 0; color: var(--text-3); font-size: 12px; line-height: 1.55; }
.connection-footer .btn { flex: none; }
.connection-form { margin-top: 20px; }
.connection-form textarea.textbox { height: auto; min-height: 84px; padding: 10px 12px; resize: vertical; }
.connection-machine .row { gap: 12px; align-items: start; font-size: 13px; }
.connection-machine .row > span { max-width: 58%; text-align: right; overflow-wrap: anywhere; }
.connection-machine .row .what { color: var(--text-3); }
.connection-footnote { margin: 14px 2px 0; color: var(--text-3); font-size: 12px; max-width: 64ch; }
.back-accounts { display: inline-flex; align-items: center; gap: 6px; margin-bottom: 12px; padding: 0; background: none; border: 0; color: var(--text-3); font-size: 12px; }
.back-accounts .i { width: 14px; height: 14px; transform: rotate(180deg); }
.policy-heading { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.policy-heading h1 { font-size: 28px; }
.policy-heading .account-count { color: var(--text-3); font-size: 12px; }
.policy-lead { margin: 2px 0 15px; color: var(--text-3); font-size: 13px; }
.account-efforts { padding: 14px 18px; margin-bottom: 16px; border: 1px solid var(--line); border-radius: var(--r-lg); background: var(--bg-card); }
.efforts-heading { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 10px 16px; }
.account-efforts h2 { margin: 0; font-size: 14px; font-weight: 600; }
.account-efforts > p { margin: 8px 0 0; color: var(--text-3); font-size: 11.5px; }
.family-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 16px; align-items: start; }
.family-panel { display: flex; flex-direction: column; min-width: 0; overflow: hidden; border: 1px solid var(--line); border-radius: var(--r-lg); background: var(--bg-card); }
.family-top { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 13px 18px; border-bottom: 1px solid var(--line-soft); }
.family-top h2 { margin: 0; font-size: 15px; font-weight: 600; }
.family-top p { margin: 2px 0 0; color: var(--text-3); font-size: 11.5px; }
.family-models { display: grid; grid-template-rows: 24px repeat(var(--model-row-count,5),34px); align-content: start; flex: none; padding: 7px 18px 0; }
.model-columns { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding-bottom: 5px; color: var(--text-3); font-size: 11px; }
.model-columns > span:last-child { width: 36px; text-align: center; }
.bulk-models { padding: 0; margin-left: 8px; border: 0; background: none; color: var(--accent-ink); font-size: 11px; text-decoration: underline; text-underline-offset: 2px; }
.model-access-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 34px; border-top: 1px solid var(--line-soft); }
.model-check { display: flex; flex: 1; align-items: center; gap: 9px; min-width: 0; padding: 7px 0; font-size: 12.5px; cursor: pointer; }
.model-check input { width: 15px; height: 15px; flex: none; margin: 0; accent-color: var(--accent-ink); }
.model-check small { color: var(--accent-ink); font-size: 10px; }
.model-check:has(input:disabled) { opacity: .6; cursor: default; }
.family-caption { margin: 0; min-height: 52px; padding: 8px 18px 11px; color: var(--text-3); font-size: 11px; }
.switch { flex: none; }
.policy-form .switch:has(input:disabled) { opacity: .45; }
.policy-form .switch input:disabled { cursor: default; }
.effort-options { display: flex; flex-wrap: wrap; gap: 6px; }
.effort-choice { display: inline-flex; position: relative; }
.effort-choice input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.effort-choice span { display: inline-flex; align-items: center; justify-content: center; min-width: 47px; padding: 6px 9px; border: 1px solid var(--line); border-radius: 7px; font-size: 12px; color: var(--text-3); cursor: pointer; }
.effort-choice input:checked + span { border-color: var(--accent-ink); color: var(--accent-ink); background: var(--accent-wash); }
.effort-choice input:focus-visible + span { outline: 2px solid var(--accent-ink); outline-offset: 3px; }
.effort-choice input:disabled + span { color: var(--text-3); opacity: .6; cursor: default; }
.weekly-policy { padding: 13px 18px 15px; border-top: 1px solid var(--line-soft); }
.weekly-heading { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 10px; }
.weekly-heading h2 { margin: 0; font-size: 14px; font-weight: 600; }
.weekly-input { display: flex; align-items: center; gap: 8px; }
.weekly-input .textbox { width: 72px; height: 32px; text-align: right; font-variant-numeric: tabular-nums; }
.weekly-input { flex-wrap: wrap; font-size: 12px; }
.weekly-input .switch { margin-left: 6px; }
.weekly-input span { font-size: 13px; }
.weekly-policy .meter-line { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: 3px 12px; font-size: 12px; margin-bottom: 6px; }
.weekly-policy .meter-line b { font-weight: 500; font-variant-numeric: tabular-nums; }
.weekly-policy .meter-line span { color: var(--text-3); }
.weekly-policy .gauge { height: 5px; background: var(--bg-sunk); border-radius: 5px; overflow: hidden; }
.weekly-policy .gauge > span { position: static; display: block; height: 100%; background: var(--accent-ink); border-radius: inherit; }
.weekly-policy .gauge.full > span { background: var(--bad); }
.weekly-help { margin: 7px 0 0; font-size: 11px; color: var(--text-3); line-height: 1.55; }
.weekly-explanation { margin-top: 9px; font-size: 11px; color: var(--text-3); }
.weekly-explanation summary { cursor: pointer; }
.weekly-explanation p { margin: 6px 0 0; max-width: 82ch; line-height: 1.55; }
.quota-state { display: flex; align-items: start; gap: 9px; padding: 10px 12px; margin-top: 9px; background: var(--bg-sunk); border-radius: 8px; font-size: 12px; }
.quota-state .i { flex: none; width: 15px; height: 15px; margin-top: 2px; }
.quota-state p { margin: 2px 0 0; color: var(--text-3); font-size: 11px; }
.quota-state.bad { color: var(--bad); background: var(--bad-wash); }
.quota-state.warn { color: var(--warn); }
.policy-save { display: flex; align-items: center; gap: 10px; padding: 13px 0; position: sticky; bottom: 0; z-index: 4; background: var(--bg); }
.policy-save > p { flex: 1; margin: 0; color: var(--text-3); font-size: 12px; }
.policy-save .btn { flex: none; }
.policy-scope-note { font-size: 11px; color: var(--text-3); margin: 10px 0 0; }
.policy-error { margin: 8px 0 0; color: var(--bad); font-size: 12px; }
.policy-error:empty { display: none; }
.policy-entry { display: flex; align-items: center; gap: 16px; justify-content: space-between; padding: 16px 0; border-top: 1px solid var(--line-soft); }
.policy-entry p { margin: 3px 0 0; font-size: 12px; color: var(--text-3); }

.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.access-screen{padding-top:24px}.connection-layout .btn:focus-visible,.policy-form button:focus-visible{outline:2px solid var(--accent-ink);outline-offset:3px}
@media(max-width:1150px){.connection-layout{grid-template-columns:minmax(0,1fr)}.connection-machine{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:22px}.connection-machine h2{grid-column:1/-1;margin-bottom:8px}.connection-machine .row{padding:9px 0}}
@media (max-width: 1050px) {
 .family-grid { gap: 12px; }
 .family-top, .account-efforts { padding-inline: 14px; }
 .family-models, .weekly-policy { padding-inline: 14px; }
 .family-caption { padding-inline: 14px; }
 .weekly-heading { flex-wrap: wrap; gap: 6px; }
 .model-check { font-size: 12px; gap: 7px; }
 .bulk-models { margin-left: 5px; }
}
@media (max-width: 620px) { .family-grid { grid-template-columns: minmax(0,1fr); } }
@media(max-width:520px){.connection-card,.connection-machine{padding:17px}.connection-machine{display:block}.connection-status{padding:13px;gap:10px;align-items:start}.connection-symbol{width:30px;height:30px}.connection-status h3{font-size:14px}.connection-footer{flex-wrap:wrap}.connection-footer .btn{margin-left:auto}.policy-heading .account-count{display:none}.policy-save{flex-wrap:wrap}.policy-save>p{flex-basis:100%}.policy-save .btn:last-child{margin-left:auto}.policy-entry{flex-wrap:wrap}}
@media(prefers-reduced-motion:reduce){.connection-status .spinner{animation:none}.policy-form *{transition:none!important}}
