.language-bar{display:flex;justify-content:flex-end;align-items:center;gap:.6rem;padding:.65rem 0;position:relative;z-index:2;font-size:.85rem}.language-bar select{width:auto;max-width:65%;min-width:8rem;margin:0;padding:.4rem .6rem;background:#10233b;color:#e8f7ff;border:1px solid #5b809d;border-radius:.6rem;font:inherit}.language-bar label{margin:0}.portal .language-bar{padding-inline:1rem}.install-web{position:relative;max-width:42rem;margin:1rem auto;padding:1rem;border:1px solid #557996;border-radius:1rem;background:#10233b;color:#e8f7ff}.install-web p{font-size:.9rem;line-height:1.5;margin:.4rem 0 .8rem}.install-actions{display:flex;flex-wrap:wrap;gap:.5rem}.install-actions button{width:auto;max-width:100%;white-space:normal}.install-web[hidden]{display:none!important}
html[dir=rtl] body{text-align:right}html[dir=rtl] .welcome,html[dir=rtl] .member-greeting,html[dir=rtl] .reception-heading{text-align:center}html[dir=rtl] .member-nav{direction:rtl}html[dir=rtl] .member-nav a,html[dir=rtl] .member-nav button{direction:rtl}html[dir=rtl] .app-login-field label{left:auto;right:14px}html[dir=rtl] .app-login-field input{padding-right:14px}html[dir=rtl] .edit-icon{left:10px;right:auto}
.radio-pair,.signal-gauge,.antenna,.compass,#weather-chart,.line-chart,.line-bars,#signal-ip,#signal-time,#radio-distance-link,#access-ssid,#member-username,#access-username,#wifi-password,input[type=email],input[autocomplete=username],input[autocomplete=current-password],#edit-username{direction:ltr;unicode-bidi:isolate}.radio-pair{display:flex}.radio-pair .radio-direction{unicode-bidi:isolate}.radio-value,.radio-number,#download-throughput,#upload-throughput,#download-capacity,#upload-capacity,.weather-tile strong{direction:ltr;unicode-bidi:isolate}.member-grid .tile,.member-nav>*{min-width:0}.tile strong,.tile span,.app-page h2,.section-heading h2,button{overflow-wrap:anywhere}.member-nav a,.member-nav button{white-space:normal}.member-dialog{max-width:calc(100vw - 24px)}.member-dialog h2{overflow-wrap:anywhere}html[dir=rtl] #admin-radio-member{direction:rtl}#admin-radio-member option{unicode-bidi:plaintext}
@media(max-width:420px){.language-bar{padding-inline:.5rem}.language-bar select{font-size:.85rem}.member-nav{gap:.25rem}.member-nav a,.member-nav button{font-size:.78rem}.tile strong{font-size:.98rem}.install-web{margin:1rem .5rem}.radio-pair .radio-label{font-size:.65rem}}
.radio-dial span{font-size:11px;line-height:13px;max-width:90%;text-align:center;overflow-wrap:normal}.radio-dial small{font-size:11px;line-height:13px}.radio-dial strong{font-size:22px;line-height:24px}.radio-dial>div>*+*{margin-top:-1px}
#signal-time{display:inline-block;unicode-bidi:isolate}html[dir=rtl] #signal-time,html[dir=rtl] #signal-ip{direction:rtl}
.logo{direction:ltr}.welcome h1 span{display:inline-block;direction:ltr;unicode-bidi:isolate}html[dir=rtl] .notice{border-left:0;border-right:2px solid #448dca;border-radius:12px 0 0 12px}
.line-totals,.month-totals,.forecast-temperature{direction:ltr;unicode-bidi:isolate;text-align:center}.line-dl,.line-ul,.weather-tile strong{display:inline-block;direction:ltr;unicode-bidi:isolate}.load-bar{direction:ltr}
/* Compact, browser-independent language popup. */
.language-bar{z-index:20;font-size:13px;gap:8px}.language-picker{position:relative;flex:none}.language-picker #web-language{display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:112px;min-height:32px;margin:0;padding:5px 10px;border:1px solid #28b7ff;border-radius:7px;background:#081f33;color:#e8f7ff;font:inherit;line-height:20px;cursor:pointer}.language-picker #web-language::after{content:"";width:6px;height:6px;border-right:1.5px solid #8ddaff;border-bottom:1.5px solid #8ddaff;transform:rotate(45deg);margin-top:-3px}.language-options{position:absolute;inset-inline-end:0;top:calc(100% + 5px);width:136px;max-width:calc(100vw - 28px);padding:4px;background:#081b30;border:1px solid #28b7ff;border-radius:8px;box-shadow:0 8px 22px #0008;z-index:21}.language-options[hidden]{display:none!important}.language-options button{direction:ltr;display:block;width:100%;min-height:32px;padding:5px 10px;margin:0;border:0;border-radius:4px;background:transparent;color:#e8f7ff;text-align:start;font:inherit;font-size:13px;line-height:22px;cursor:pointer;white-space:nowrap}.language-options button[aria-checked=true]{background:#123d62;color:#9bddff}.language-options button:hover,.language-options button:focus-visible{background:#174a73;outline:1px solid #65caff;outline-offset:-1px}.language-picker #web-language:focus-visible{outline:2px solid #a0e5ff;outline-offset:2px}
/* The saved language applies everywhere; its picker is only needed at entry. */
.portal:has(#member:not([hidden])):not(:has(#member>[data-view="start"]:not([hidden]))) .language-bar{display:none}
.portal .portal-main:has(#member:not([hidden]) .app-page:not([hidden])){padding-top:12px}
.portal #member .app-page>h2{margin:0 0 12px}
/* One shared dark blue for existing reading surfaces; charts and actions retain their colors. */
:root{--content-panel-background:#051220}
body .language-options,body .cards>article,body .notice,body .member-entry,body .login-card,body .install-web,
body.portal #member .glass,body.portal #member .username-card,body.portal #member .access-period,
body.portal #member .troubleshooting-list li,body.portal #member .weather-time-card,
body.portal #member #forecast-image-missing,body.portal #member .news-footer .news-date,
body.portal .member-dialog,body.portal #month-dialog,body.portal #admin-radio-selector,
body.portal .reception-card,body.portal .radio-dial>div,body.portal #radio-distance,body.portal .distance-endpoint,
body .member-entry .app-login-field:focus-within label,body .member-entry .app-login-field input:not(:placeholder-shown)+label{background:var(--content-panel-background)}

/* Fixed install offer: never adds a row above the login form. */
body .install-web{position:fixed;inset-inline:12px;bottom:max(12px,env(safe-area-inset-bottom));top:auto;width:auto;max-width:380px;max-height:45dvh;overflow:auto;margin:0 auto;padding:12px 14px;background:#081b30;border:1px solid #28b7ff;border-radius:14px;box-shadow:0 8px 28px #0009;z-index:100;text-align:start}
body .install-web h2{font-size:16px;line-height:1.3;margin:0 0 6px}
body .install-web p{font-size:13px;line-height:1.4;margin:5px 0}
body .install-web .install-actions{gap:8px;margin-top:8px}
body .install-web .install-actions button{font-size:13px;line-height:1.3;min-height:40px;margin:0;padding:8px 12px}
body .install-web [hidden]{display:none!important}

.install-reopen{background:none;border:0;color:#86d5ff;font:inherit;font-size:12px;text-decoration:underline;cursor:pointer;padding:6px 0}.install-reopen[hidden]{display:none!important}

body .install-web h2{padding-inline-end:32px}body .install-web .install-actions .install-close{position:absolute;top:4px;inset-inline-end:4px;width:36px;height:36px;min-height:36px;padding:0;margin:0;border:0;background:transparent;color:white;font-size:26px;line-height:1}.install-close:focus-visible{outline:2px solid #28b7ff}

/* Compact controls only on the personal member start page. */
.portal:has(#member:not([hidden])>[data-view="start"]:not([hidden])) .language-bar{justify-content:center;padding: max(2px,env(safe-area-inset-top)) 0 0;gap:8px}
.portal .portal-main:has(#member:not([hidden])>[data-view="start"]:not([hidden])){padding-top:2px}

/* Remove only unused dark space above the visible member logo artwork. */
.portal .portal-main:has(#member:not([hidden])>[data-view="start"]:not([hidden]))>.logo{margin-top:-1.46%;clip-path:inset(3% 0 0 0)}

/* Identical centered controls on public/PWA entry, login and member start. */
body .language-bar,body.portal .language-bar{justify-content:center;padding:max(2px,env(safe-area-inset-top)) 0 0;gap:8px}
body:not(.portal) .hero{padding-top:2px}
body:not(.portal) .hero>.logo{margin-top:max(-12.85px,-1.46%);clip-path:inset(3% 0 0 0)}
.portal:not(:has(#member:not([hidden]))) .portal-main{padding-top:2px}
.portal:not(:has(#member:not([hidden]))) .portal-main>.logo{margin-top:-1.46%;clip-path:inset(3% 0 0 0)}

/* Match the accepted Android reading surfaces and premium stars. */
body .install-web{background:var(--content-panel-background)}
.membership>h2::before,.membership>h2::after{content:'★';display:inline-block;color:#ffd166;font-size:.9em;margin-inline:.28em;animation:premium-star-glint 10s ease-in-out infinite}
.membership>h2::after{animation-delay:5s}
@keyframes premium-star-glint{0%,40%,50%,100%{color:#ffd166;text-shadow:none}42%{color:#fff5d6;text-shadow:0 0 3px #fff5d6,0 0 9px #ffd166}48%{color:#ffd166;text-shadow:0 0 2px #ffd166}}
@media(prefers-reduced-motion:reduce){.membership>h2::before,.membership>h2::after{animation:none}}
