/* Shared header actions: one location for both membership roles. */
#app-header .session-label{display:none!important}
#app-header .header-end{max-width:none!important;flex-shrink:0}
.shared-header-actions{display:flex;align-items:center;gap:0}.shared-header-actions[hidden]{display:none}
.header-icon{display:inline-flex;align-items:center;justify-content:center;flex:none;width:44px;height:44px;border:0;border-radius:50%;background:transparent;color:#f5f4f2;cursor:pointer;padding:10px}
.header-icon svg{width:23px;height:23px;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round;fill:none}
.header-icon:hover{background:#ffffff12}.header-icon:focus-visible{outline:2px solid white;outline-offset:1px}
body.header-overlay-open{overflow:hidden}
body.header-overlay-open .tosaa-navigation{visibility:visible;pointer-events:none}
#header-overlay{position:fixed;inset:0;top:max(16px,env(safe-area-inset-top));bottom:auto;margin:0 auto;width:min(640px,calc(100% - 32px));max-width:none;max-height:calc(var(--overlay-vh,100dvh) - 32px);overflow:auto;overscroll-behavior:contain;padding:20px 24px 16px;border:1px solid #ffffff36;border-radius:26px;background:#222428f2;color:#f5f4f2;box-shadow:0 22px 80px #0005;font:inherit}
#header-overlay::backdrop{background:#090b0f70;backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px)}
@supports(backdrop-filter:blur(1px)){#header-overlay{background:#24262ae8;backdrop-filter:blur(22px) saturate(1.1);-webkit-backdrop-filter:blur(22px) saturate(1.1)}}
#header-overlay[open]{animation:header-overlay-in 180ms ease-out}
.overlay-title-row{display:flex;align-items:center;gap:8px;margin-bottom:16px}.overlay-title-row h2{margin:0;font-size:24px;font-weight:400;flex:1}.overlay-close{margin-right:-8px}
.overlay-query{display:flex;align-items:center;gap:12px;border:1px solid #ffffff60;border-radius:15px;padding:0 14px;background:#0c0d0f60;min-height:52px}
.overlay-query>svg,.settings-row>svg,.settings-detail>svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round;flex:none}
.overlay-query:focus-within{outline:0;border-color:#809f92;box-shadow:inset 0 0 0 1px #809f9266}
.overlay-query input{width:100%;min-width:0;min-height:52px;background:transparent;border:0;outline:0;color:white;font:inherit;font-size:16px;padding:8px 0}.overlay-query input::placeholder{color:#c6c8cd}
.overlay-result-heading{font-size:12px;color:#c6c8cd;margin:24px 0 4px}
.overlay-result{display:flex;gap:16px;align-items:center;width:100%;min-height:70px;text-align:left;padding:16px 2px;border:0;border-bottom:1px solid #ffffff24;background:none;color:#f5f4f2;font:inherit;cursor:pointer}
.overlay-result>span:first-of-type{flex:1;min-width:0}.overlay-result strong{display:block;font-weight:400;font-size:16px;overflow-wrap:anywhere}.overlay-result small{display:block;font-size:12px;color:#c6c8cd;line-height:1.6}.overlay-result:hover{background:#ffffff08}.overlay-result:focus-visible{outline:2px solid white;outline-offset:-2px;border-radius:8px}
.overlay-footnote{font-size:11px;line-height:1.7;color:#bfc2c8;margin:20px 0 0}.settings-detail{padding:22px 0}.settings-detail p{font-size:15px;line-height:1.9;margin:18px 0 0}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@keyframes header-overlay-in{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}
@media(min-width:761px) and (min-height:600px){#header-overlay{top:8vh;max-height:calc(var(--overlay-vh,100dvh) - 10vh);padding:24px 30px}}
@media(orientation:landscape) and (max-height:599px){#header-overlay{top:12px;max-height:calc(var(--overlay-vh,100dvh) - 24px);padding:12px 20px}.overlay-title-row{margin-bottom:8px}.overlay-title-row h2{font-size:21px}.overlay-result{min-height:58px;padding:12px 2px}}
@media(prefers-reduced-motion:reduce){#header-overlay[open]{animation:none}}
@media(prefers-reduced-transparency:reduce){#header-overlay{background:#24262a;backdrop-filter:none}#header-overlay::backdrop{background:#090b0faa;backdrop-filter:none}}

/* Keep the pair near the screen edge, preserving safe-area and 44px touch targets. */
#app-header:has(.shared-header-actions:not([hidden])){padding-right:max(8px,env(safe-area-inset-right))}

/* Three equal touch targets; only the artwork gets smaller on portrait phones. */
@media(orientation:portrait) and (max-width:760px){
 .shared-header-actions .header-icon svg{width:21px;height:21px}
 .shared-header-actions .header-icon{padding:11px}
}
.notification-preview{text-align:center;padding:26px 6px 34px}
.notification-preview>svg{width:32px;height:32px;stroke:currentColor;fill:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;color:#d5d7db}
.notification-preview p{font-size:16px;margin:16px 0 8px}
.notification-preview small{font-size:13px;line-height:1.8;color:#c6c8cd;display:block}

/* One header frame per viewport, independent of route and membership role.
   Reserve the action row even while the profile renderer replaces its contents. */
:root{--shared-header-top:10px;--shared-header-bottom:19px;--shared-header-left:24px;--shared-header-height:74px;--shared-brand-width:145px}
@media(orientation:portrait) and (max-width:760px){:root{--shared-header-top:9px;--shared-header-bottom:18px;--shared-header-left:21px;--shared-header-height:71px;--shared-brand-width:130px}}
@media(orientation:landscape) and (min-width:568px) and (max-height:599px){:root{--shared-header-top:0px;--shared-header-bottom:4px;--shared-header-left:16px;--shared-header-height:48px;--shared-brand-width:104px}}
@media(orientation:landscape) and (min-width:761px) and (min-height:600px){:root{--shared-header-top:4px;--shared-header-bottom:8px;--shared-header-left:24px;--shared-header-height:56px;--shared-brand-width:125px}}
body[data-shell-page]:not([data-mode=edit]):not([data-mode=preview]) #app-header{
 box-sizing:border-box;align-items:flex-start;
 height:calc(var(--shared-header-height) + env(safe-area-inset-top,0px));
 min-height:calc(var(--shared-header-height) + env(safe-area-inset-top,0px));
 padding:calc(var(--shared-header-top) + env(safe-area-inset-top,0px)) max(8px,env(safe-area-inset-right)) var(--shared-header-bottom) max(var(--shared-header-left),env(safe-area-inset-left));
}
body[data-shell-page]:not([data-mode=edit]):not([data-mode=preview]) #app-header .brand-mark{width:var(--shared-brand-width);margin:0}
body[data-shell-page]:not([data-mode=edit]):not([data-mode=preview]) #app-header .header-end{align-self:flex-start;min-width:132px;min-height:44px;margin:0;padding:0}
.shared-header-actions{height:44px;min-width:132px;flex-wrap:nowrap}
.shared-header-actions>.header-icon{min-width:44px;max-width:44px;min-height:44px;max-height:44px;flex:0 0 44px;margin:0}

/* Classic scrollbars must not shift the shared header between long and short routes. */
html{scrollbar-gutter:stable}

/* Landscape logo: portrait-like edge spacing, independent of shared actions. */
@media(orientation:landscape) and (min-width:568px) and (max-height:599px){
 body[data-shell-page]:not([data-mode=edit]):not([data-mode=preview]) #app-header .brand-mark{margin-top:6px}
}

@media(orientation:landscape) and (min-width:761px) and (min-height:600px){
 body[data-shell-page]:not([data-mode=edit]):not([data-mode=preview]) #app-header .brand-mark{margin-top:8px}
}

/* Account-owned application outcomes, projected into the shared bell. */
.header-icon{position:relative}.application-badge{position:absolute;top:1px;right:0;min-width:16px;height:16px;padding:0 3px;border-radius:8px;background:#e9e3d5;color:#191919;font-size:10px;line-height:16px;text-align:center}.application-notifications .overlay-result{width:100%;text-align:start;min-height:64px}.application-notifications .overlay-result>span:first-child{display:grid;gap:5px;min-width:0}.application-notifications small{color:#d6d0c6;overflow-wrap:anywhere}.notification-unread{font-size:12px}.application-notice-detail p{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.8}.application-notice-detail{padding:12px 4px}

.account-paths h3{font-size:13px;font-weight:500;color:#d4d4d0;margin:24px 0 8px}.account-paths a{text-decoration:none}.account-paths [aria-pressed=true]{background:#ffffff0a}

/* Account views are one identity, with separate existing rights. */
.account-switcher{margin:6px 0 24px}.account-switch-heading{display:flex;align-items:center;justify-content:space-between;gap:16px}.account-paths .account-switch-heading h3{font-size:18px;line-height:1.5;font-weight:500;color:#f5f4f2;margin:4px 0}.account-switch-heading>svg{width:22px;height:22px;fill:none;stroke:#c9d9cf;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.account-switch-note{font-size:12px;color:#c7d0ca;line-height:1.7;margin:2px 0 17px}.account-switch-options{display:grid;gap:10px}.account-switch-row{display:flex;align-items:center;gap:13px;width:100%;min-height:86px;padding:14px 13px;border:1px solid #ffffff26;border-radius:19px;background:#ffffff05;color:#f5f4f2;text-align:start;text-decoration:none;font:inherit;cursor:pointer}.account-switch-row[aria-pressed=true]{background:#edf0e9;color:#25362e;border-color:#edf0e9}.account-role-emblem{display:grid;place-items:center;flex:0 0 46px;width:46px;height:46px;border-radius:50%;background:#dce9df;color:#355c46}.account-role-emblem[data-role-emblem=industry]{background:#e8d8cb;color:#76513b}.account-role-emblem svg{width:25px;height:25px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.account-switch-copy{flex:1;min-width:0}.account-switch-copy strong{font-size:14px;font-weight:500;line-height:1.6;display:block;overflow-wrap:anywhere}.account-switch-copy small{font-size:11px;line-height:1.6;color:#c9d3cd;display:block;margin-top:4px;text-wrap:balance}/* B-32 (owner FIX-LIST 31 Oct 2026): balanced lines and project terms kept whole (header.js keep()), so "ได้", "มองนี้", "view" or "用" is never left alone on the last line. Was: no balance. */.account-switch-row[aria-pressed=true] .account-switch-copy small{color:#4a6254}.account-switch-state{display:grid;place-items:center;flex:0 0 24px;width:24px;height:24px}.account-switch-state svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round}.account-switch-row[aria-pressed=true] .account-switch-state{border-radius:50%;background:#355c46;color:white}.account-switch-unowned .account-role-emblem{background:#ffffff0c;color:#cbd4ce}.account-switch-row:hover{border-color:#d7e4da88}.account-switch-row:focus-visible{outline:2px solid #e6efe8;outline-offset:3px}

/* Role choice is a distinct two-column section within the same account. */
.account-switcher{padding:2px 0 26px;margin:4px 0 20px;border-bottom:1px solid #d7e4da42}.account-switch-options{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.account-switch-row{position:relative;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:14px;min-height:177px;padding:17px 14px;border-radius:20px}.account-switch-copy{width:100%}.account-switch-copy strong{font-size:13px;line-height:1.65}.account-switch-copy small{font-size:11px;line-height:1.7}.account-switch-state{position:absolute;right:13px;top:17px}.account-role-emblem{width:43px;height:43px;flex-basis:43px}.account-role-emblem[data-role-emblem=industry]{background:#e4daf0;color:#655186}.account-switch-row[aria-pressed=true] .account-switch-state{width:22px;height:22px}.account-switch-note{margin-bottom:18px}.account-switch-heading{justify-content:flex-start}
#header-overlay [data-preview-logout],#header-overlay [data-connected-logout],#header-overlay [data-member-logout]{background:#683a3d70;border:1px solid #c4828654;border-radius:15px;color:#ffe1e0;margin-top:17px;padding:15px 16px;width:100%}#header-overlay [data-preview-logout] small,#header-overlay [data-connected-logout] small,#header-overlay [data-member-logout] small{color:#efc4c2}#header-overlay [data-preview-logout]:hover,#header-overlay [data-connected-logout]:hover,#header-overlay [data-member-logout]:hover{background:#81434a85}#header-overlay [data-preview-logout]:focus-visible,#header-overlay [data-connected-logout]:focus-visible,#header-overlay [data-member-logout]:focus-visible{outline:2px solid #f8b9b6;outline-offset:3px}
@media(max-width:380px){.account-switch-options{gap:9px}.account-switch-row{padding:15px 11px}.account-switch-copy strong{font-size:12px}.account-switch-state{right:10px;top:15px}}
/* Notification controls extend the existing quiet settings surface. */
.notification-settings-intro,.notification-inbox-empty{font-size:14px;line-height:1.65;color:#dddcd4;margin:14px 0 22px;overflow-wrap:anywhere}
.notification-preference-head,.notification-preference-row{display:grid;grid-template-columns:minmax(0,1fr) 72px 72px;align-items:center;gap:8px}
.notification-preference-head{font-size:11px;line-height:1.4;color:#c9c8bf;padding-bottom:10px;text-align:center}.notification-preference-head span:first-child{text-align:left}
.notification-preference-row{padding:12px 0;border-top:1px solid #ffffff16}.notification-preference-row strong{font-size:14px;line-height:1.5;font-weight:550;overflow-wrap:anywhere}
.notification-toggle{position:relative;display:grid;place-items:center;min-height:44px;cursor:pointer}.notification-toggle input{position:absolute;width:44px;height:44px;margin:0;opacity:0;cursor:pointer}.notification-toggle span{width:34px;height:20px;border-radius:12px;background:#515650;border:1px solid #9b9f93;pointer-events:none;position:relative}.notification-toggle span:after{content:'';position:absolute;width:14px;height:14px;top:2px;left:2px;border-radius:50%;background:#f4f3eb;transition:transform .15s ease}.notification-toggle input:checked+span{background:#dce4b4;border-color:#dce4b4}.notification-toggle input:checked+span:after{transform:translateX(14px);background:#242c21}.notification-toggle input:focus-visible+span{outline:2px solid #dce4b4;outline-offset:4px}.notification-toggle input:disabled+span{opacity:.4}
.notification-preference-status{font-size:12px;line-height:1.5;min-height:18px;color:#dce4b4}.notification-inbox-tools{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.notification-inbox-tools p{font-size:12px;color:#c9c8bf;margin:0}.notice-read-all{border:0;background:transparent;color:#dce4b4;min-height:44px;padding:6px;font:inherit;font-size:12px;cursor:pointer}.notice-read-all:focus-visible{outline:2px solid #dce4b4;outline-offset:2px;border-radius:5px}
@media(max-width:360px){.notification-preference-head,.notification-preference-row{grid-template-columns:minmax(0,1fr) 58px 58px;gap:4px}.notification-preference-row strong{font-size:13px}}
@media(prefers-reduced-motion:reduce){.notification-toggle span:after{transition:none}}

/* Thai work permit panel in settings (owner decisions 16 Oct 2026) */
.permit-status{margin:4px 0 8px}
.permit-note{margin:0 0 12px;font-size:14px;line-height:1.6;opacity:.85}
/* Fix round 11 Nov 2026 item 109: the panel is dark (#24262a), so the warning uses the light red of the app-feedback errors (#ffbabd, about 10:1). Was: #8a3a12 (1.66:1). */
.permit-note.warn{opacity:1;color:#ffbabd}
.permit-form{display:grid;gap:12px}
.permit-field{display:grid;gap:6px;font-size:14px}
.permit-field input{min-height:44px;font:inherit;padding:8px 10px;border:1px solid currentColor;border-radius:10px;background:transparent;color:inherit;max-width:100%}
.permit-submit{justify-content:center;font-weight:600}
/* S-28 (owner FIX-LIST 31 Oct 2026): the title "ใบอนุญาตทำงานในไทย" stays on one line. It shrinks with the room between the back chevron and the
   close button (the row's width less the two 44 px buttons and the two 8 px gaps, unchanged), at most the usual 24 px, so it keeps clear of the
   close button. The divisor is about the title's width per pixel of type in each language. The fields fit the panel at 320 px.
   Was: a 24 px title in two lines ("ใบอนุญาต / ทำงานในไทย") and the date and file fields ran past the panel's right edge at 320 px. */
#header-overlay[data-setting=work-permit] .overlay-title-row{container-type:inline-size}
#header-overlay[data-setting=work-permit] .overlay-title-row h2{--permit-title-per-px:9.4;min-width:0;white-space:nowrap;font-size:clamp(15px,calc((100cqw - 104px) / var(--permit-title-per-px)),24px)}
html[lang=en] #header-overlay[data-setting=work-permit] .overlay-title-row h2{--permit-title-per-px:8.4}
html[lang=zh-Hans] #header-overlay[data-setting=work-permit] .overlay-title-row h2{--permit-title-per-px:7.4}
.permit-form,.permit-field{min-width:0}
/* Owner 7 Nov 2026 (fix round, FX7-5; owner answer 10 Nov: "หัวข้อบัญชีและความเป็นส่วนตัว เอาให้อยู่บรรทัดเดียวกัน"): the panel heading
   "บัญชีและความเป็นส่วนตัว" stays on one line, shrinking with the room between the back chevron and the close button as the permit title above
   (at most the usual 24 px). The divisor is about the title's width per pixel of type in each language, with a little to spare.
   Was: a 24 px heading in two lines ("บัญชีและ" / "ความเป็นส่วนตัว", "Account and" / "privacy") at 320–414 px. */
#header-overlay[data-setting=account] .overlay-title-row{container-type:inline-size}
#header-overlay[data-setting=account] .overlay-title-row h2{--account-title-per-px:10.4;min-width:0;white-space:nowrap;font-size:clamp(13px,calc((100cqw - 104px) / var(--account-title-per-px)),24px)}
html[lang=en] #header-overlay[data-setting=account] .overlay-title-row h2{--account-title-per-px:9.9}
html[lang=zh-Hans] #header-overlay[data-setting=account] .overlay-title-row h2{--account-title-per-px:5.4}
.permit-field input{width:100%;box-sizing:border-box}
/* Owner 7 Nov 2026 (fix round, Q2-S-11): the permit file uses the application's picker and file row (registration/app.css .application-file-picker,
   .doc-actions and their phone widths), drawn here because Settings opens on pages that do not load the registration styles. Was: the browser's
   file input with the .permit-field input border. */
.permit-form .application-file-picker{position:relative;display:grid;justify-items:center;gap:8px;border:1px dashed #999;border-radius:16px;padding:24px 16px;background:#ffffff04;cursor:pointer;text-align:center}
.permit-form .application-file-picker>svg{width:32px;height:32px}
.permit-form .application-file-picker>strong{font-weight:500;font-size:16px}
.permit-form .application-file-picker>span{font-size:12px;color:#bbb}
.permit-form .application-file-picker>input{position:absolute;inset:0;width:100%;height:100%;min-height:0;margin:0;padding:0;border:0;opacity:0;cursor:pointer}
.permit-form .application-file-picker:focus-within{outline:2px solid #fff;outline-offset:4px}
.permit-file-row{display:grid;gap:4px;padding:16px;border-radius:14px;background:#ffffff06}
.permit-file-row[hidden],.permit-file-preview[hidden],.permit-form .application-file-picker[hidden]/* FX4-27 */{display:none}
.permit-file-row>strong{font-size:14px;font-weight:600;overflow-wrap:anywhere}
.permit-file-row>p{margin:0;font-size:12px;opacity:.75}
.permit-file-row .doc-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.permit-file-row .doc-actions button{display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:8px 14px;border-radius:12px;font:inherit;font-size:13px;cursor:pointer}
.permit-file-row .doc-actions svg{width:16px;height:16px;flex:none}
.permit-file-row [data-doc-tone=view]{color:#eee;border:1px solid #ffffff40;background:#ffffff08}
.permit-file-row [data-doc-tone=replace]{color:#a9cdf0;border:1px solid #6fa9dd66;background:#2a4a6833}
.permit-file-row [data-doc-tone=remove]{color:#fa9292;border:1px solid #c4606066;background:#49202033}
.permit-file-preview img{display:block;max-width:100%;max-height:50vh;object-fit:contain;margin:8px auto 0;border-radius:10px}
.permit-file-preview .permit-note{margin:8px 0 0}
@media(max-width:480px){.permit-file-row .doc-actions{flex-wrap:nowrap}.permit-file-row .doc-actions button{flex:1 1 0;min-width:0;justify-content:center;gap:4px;padding:8px 6px;white-space:nowrap}}
@media(max-width:374px){.permit-file-row .doc-actions button{flex-direction:column;gap:2px;min-height:52px;padding:6px 4px;font-size:12px}}
/* Final polish Part 1, text wrap (owner 19 Oct 2026, "ไม่ชอบคำตกลงมาไม่สวย ไม่ว่าจะภาษาไหน"; plan TEXT-WRAP-SWEEP). One shared rule for every page that
   loads this file (registration, membership and every page of the casting-workspace shell): headings, titles and short labels wrap
   balanced, so no single word or short Thai or Chinese fragment is left alone on the last line, and paragraphs avoid a short last line.
   :where() keeps it at zero specificity, so a module that sets its own text-wrap still wins. A Thai project term that must not be cut
   is wrapped by TosaaEscape.keep (.tosaa-term). verify-text-wrap.cjs checks the main cases in th, en and zh. */
:where(h1,h2,h3,h4,h5,h6,legend,summary,button,[role="tab"],[role="button"],th,dt,figcaption,label,strong,b,.btn,[class*="title"],[class*="heading"],[class*="label"],[class*="fee"],[class*="price"],[class*="chip"],[class*="badge"],[class*="status"],[class*="caption"],#footer>span){text-wrap:balance}
:where(p,li,dd,td,blockquote){text-wrap:pretty}
.tosaa-term{white-space:nowrap}
/* BUG-17 (owner approved 31 Oct 2026): the "ออกจากระบบ?" window has its two buttons "อยู่ต่อ / ออกจากระบบ" side by side in one row
   (header.js logoutConfirmRow). The sign-out button keeps the red tone of the settings row that opened it. */
#header-overlay .overlay-confirm-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:18px 0 6px}
#header-overlay .overlay-confirm-actions>.overlay-result{justify-content:center;min-height:48px;margin:0;padding:10px 12px;border:1px solid #ffffff3d;border-radius:999px;text-align:center;font-size:15px;line-height:1.4;overflow-wrap:anywhere}
#header-overlay .overlay-confirm-actions>.overlay-confirm-cancel{background:#ffffff0d;color:#f5f4f2}
#header-overlay .overlay-confirm-actions>.overlay-confirm-danger{background:#683a3d;border-color:#c4828680;color:#ffe1e0}
#header-overlay .overlay-confirm-actions>.overlay-result:focus-visible{outline:2px solid white;outline-offset:2px;border-radius:999px}
/* Owner 7 Nov 2026 (fix round, FX4-61; Q2-B-25 "ทำให้อยู่ในบรรทัดเดียวให้ได้", row LB-04): each label of the "ออกจากระบบ?" pair stays on one line in
   every language down to 320 px, as the staff sign-out pop-up does (staff/staff.css .signout-ask): equal halves while both labels fit, else the
   longer label keeps its whole width (a 1fr column is never narrower than its unbroken label) and the other takes the rest; a phone 340 px wide
   or less has a little less side padding. Was: labels could wrap, so "Stay signed in" fell as "Stay / signed in" (64 px tall) at 320 px. */
#header-overlay .overlay-confirm-actions>.overlay-result{white-space:nowrap}
@media(max-width:340px){#header-overlay .overlay-confirm-actions>.overlay-result{padding-inline:10px}}
/* Fix round 11 Nov 2026 item 120 (owner answer ก, and the owner's pick in the fix chat 11 Nov 2026: 28 px on phones, 36 px on large screens):
   every member page title has one size and one weight: 28 px / 500 up to 760 px wide, 36 px / 500 on the large layout (the app's own large
   breakpoint, 761 px wide and 600 px high). The selector lists the page-title spots of each module (casting, board, report, votes, search,
   directory, membership, application pages); the ids lift it above each module's own rule. Was: 22–32 px on phones, 24–38 px on large
   screens, weights 400–600 (27 sizes in 114 screens). */
:is(#shell-page .cw-head>h1,#shell-page .ce-board-header h1,#shell-page .case-entry-heading>h1,#shell-page .back-title-row>h1,#shell-page h1.td-directory-heading,#main .member-page-heading>h1,#main .connected-heading>h1,#main .payment-heading>h1,.ce-board-header h1){font-size:28px;font-weight:500;line-height:1.3}
@media(min-width:761px) and (min-height:600px){:is(#shell-page .cw-head>h1,#shell-page .ce-board-header h1,#shell-page .case-entry-heading>h1,#shell-page .back-title-row>h1,#shell-page h1.td-directory-heading,#main .member-page-heading>h1,#main .connected-heading>h1,#main .payment-heading>h1,.ce-board-header h1){font-size:36px}}
/* Fix round 11 Nov 2026 (item 112; app rule: a tap area of at least 44x44 px, design/shared-navigation/verify-fix-1111-tap-targets.cjs).
   The shared header's TOSAA logo grows by padding and a matching negative margin, so it keeps its place and look. Was: 130x40. */
#app-header a.brand{padding-block:3px;margin-block:-3px}/* Fix round 11 Nov 2026 item 116 (owner answer ก: one back arrow on every member page): every back chevron of the member side has the same look:
   a 44 x 44 tap area with no ring and no fill, and a 24 px chevron drawn 1.8 px. Only the look; where each button goes and where the page
   puts it are unchanged. Was: 21-25 px chevrons drawn 1.3-2.3 px, a ring on the event, library and chart pages, a 38 x 38 button on the chart.
   !important: the page styles (content-events, cases, profile, registration, membership, talent) set these with stronger selectors.
   Re-check fix (helper K): '#main a.back' (any depth) so the membership page, whose back link sits in .member-page-heading, is included,
   and every member back chevron now draws the one path 'm15 5-7 7 7 7'. Was: '#main>a.back' only (membership kept 22 px / 1.6 px), and
   4 path shapes (m14 6-6 6 6 6, m15 6-6 6 6 6, m15 5-7 7 7 7, m14 5-7 7 7 7). */
.ce-root .ce-back.ce-icon,.td-directory-back,#header-overlay [data-settings-back],#header-overlay [data-application-notices-back],.case-root .case-button.case-back,.editor-back,.btn.back-chevron,#main a.back,.cw-search-back,.gs-back.gs-back-icon,.payment-screen .payment-back-icon{width:44px!important;height:44px!important;min-width:44px!important;min-height:44px!important;padding:0!important;border:0!important;border-radius:50%!important;background:transparent!important;box-shadow:none!important;display:inline-flex!important;align-items:center;justify-content:center}
.ce-root .ce-back.ce-icon svg,.td-directory-back svg,#header-overlay [data-settings-back] svg,#header-overlay [data-application-notices-back] svg,.case-root .case-button.case-back svg,.editor-back svg,.btn.back-chevron svg,#main a.back svg,.cw-search-back svg,.gs-back.gs-back-icon svg,.payment-screen .payment-back-icon svg{width:24px!important;height:24px!important;flex:none}
.ce-root .ce-back.ce-icon svg *,.td-directory-back svg *,#header-overlay [data-settings-back] svg *,#header-overlay [data-application-notices-back] svg *,.case-root .case-button.case-back svg *,.editor-back svg *,.btn.back-chevron svg *,#main a.back svg *,.cw-search-back svg *,.gs-back.gs-back-icon svg *,.payment-screen .payment-back-icon svg *{stroke-width:1.8px!important}
/* Fix round 11 Nov 2026 item 116 (independent review 12 Nov; owner answer ก: same size, line, position and tap area): on a phone every member
   back chevron's tap area starts 10 px from the screen edge, where the shared title row (.back-title-row, shell.css: page gutter 22 px - 12 px)
   puts it on the event, messages and search pages. The content pages' gutter is --ce-gutter (22 px, 18 px under 381 px), the directory's 22 px.
   Was: library and chart 22 px (18 px at 320), directory 22 px, event 6 px at 320 (membership: membership/app.css; profile edit: profile.js). */
@media(max-width:760px){.ce-root .back-title-row,.ce-root :not(.back-title-row)>.ce-back.ce-icon{margin-left:calc(10px - var(--ce-gutter,22px))!important}.td-heading-row>.td-directory-back{margin-left:-12px!important}}
/* Fix round 11 Nov 2026 item 116 (independent review 12 Nov, round 2): the application payment page's chevron (.payment-back-icon) joins the
   shared look above (44x44, 24 px, 1.8 px). Was: 22 px / 1.7 px (payment.css, payment-ui.js). On a phone the heading after the chevron starts
   58 px from the edge on every member page (10 + 44 + 4, as .back-title-row in shell.css). Was: library and chart 66 (63 under 381 px), directory 66.
   Inside the settings sheet the chevron sits 10 px from the sheet's edge (sheet: 1 px border + 24 px padding); its heading keeps the 8 px gap
   of full QA S-28 (verify-qa-b32-b46-s28.cjs), so it starts 62 px from the sheet's edge. Was: chevron 25 px, heading 77 px from the sheet edge. */
@media(max-width:760px){.ce-root .ce-heading-left:has(>.ce-back.ce-icon){gap:4px!important}.talent-page .td-heading-row:has(>.td-directory-back){column-gap:0!important}
 #header-overlay .overlay-title-row>:is([data-settings-back],[data-application-notices-back]){margin-left:-15px!important}
 /* Fix round 11 Nov 2026 finding 250 (owner 13 Nov 2026 "ข"): the heading after the settings sheet's chevron is 4 px from it, as on every other page, so it starts 58 px from the sheet's edge. This changes full QA S-28's 8 px. Was: gap 8px (.overlay-title-row), heading 62 px from the sheet's edge */
 #header-overlay .overlay-title-row:has(>:is([data-settings-back],[data-application-notices-back])){gap:4px}}
@media(orientation:landscape) and (max-height:599px){#header-overlay .overlay-title-row>:is([data-settings-back],[data-application-notices-back]){margin-left:-11px!important}#header-overlay .overlay-title-row:has(>:is([data-settings-back],[data-application-notices-back])){gap:4px}/* finding 250, owner 13 Nov 2026 "ข". Was: 8px */}
