/* Setup, account access, settings and plan review share the S8 product roles.
 * Page scopes only adapt layout. No new tokens or animated working states. */
body.public-setup,body.ns-auth,body.ns-upgrade { font-family:var(--font-sans); background:var(--bg); color:var(--text); font-size:var(--type-body); line-height:var(--leading-body); }
:is(.public-setup,.ns-auth,.ns-upgrade,.ns-memory) :is(input,select,textarea) { min-width:0; max-width:100%; color:var(--text); }
:is(.public-setup,.ns-auth,.ns-upgrade,.ns-memory) :is(button,a) { overflow-wrap:anywhere; }
:is(.public-setup,.ns-auth,.ns-upgrade,.ns-memory) :focus-visible { outline:var(--focus-ring); outline-offset:var(--focus-offset); }
:is(.public-setup,.ns-auth,.ns-upgrade,.ns-memory) ::placeholder { color:var(--text-muted); opacity:1; }

/* Account forms: retain the S7 keyboard/pinned-action geometry from templates. */
body.ns-auth { align-items:flex-start; padding-top:var(--space-6); }
.ns-auth .card { padding:var(--space-4); border:var(--line); border-radius:var(--radius-panel); text-align:left; }
.ns-auth .logo { font-size:var(--type-total); font-weight:var(--weight-strong); margin-bottom:var(--space-2); }
.ns-auth .sub { margin-bottom:var(--space-4); }
.ns-auth input { text-align:left; padding:var(--space-3); border:var(--control-line); border-radius:var(--radius-control); }
.ns-auth :is(.btn,.signup,.new-shop) { border-radius:var(--radius-control); min-height:var(--control-touch); line-height:var(--leading-label); }
.ns-auth .signup { display:flex; justify-content:center; border:var(--control-line); padding:var(--space-2) var(--space-3); }
.ns-auth :is(.hint,.sub) { color:var(--text-muted); }
.ns-auth .divider { font-size:var(--type-body); color:var(--text-muted); text-align:center; }
.ns-auth #forgotPinLink a { font-size:var(--type-body)!important; }
@media(max-width:600px) {
 body.ns-auth { padding-top:var(--space-3); }
 .ns-auth .card { padding:var(--space-3); }
 .ns-auth.ns-keyboard { padding-top:0; }
 .ns-auth:not(.ns-keyboard) .ns-auth-actions { padding-bottom:calc(var(--space-2) + env(safe-area-inset-bottom,0px)); }
}

/* Setup: the four status rows, stage summary and all optional doors remain. */
body.public-setup { justify-content:flex-start; padding:var(--space-4); }
body.public-setup .setup-container { min-width:0; padding-bottom:96px; }
body.public-setup .logo { text-align:left; margin-bottom:var(--space-3); font-weight:var(--weight-strong); }
body.public-setup .card { padding:var(--space-4); border:var(--line); border-radius:var(--radius-panel); box-shadow:none; overflow-wrap:anywhere; }
body.public-setup h1 { font-size:var(--type-heading); font-weight:var(--weight-strong); line-height:1.3; letter-spacing:normal; margin:0 0 var(--space-2); }
body.public-setup h2 { font-size:var(--type-heading); font-weight:var(--weight-strong); }
body.public-setup .card p,body.public-setup #setupLead,body.public-setup #setupFromDemo,body.public-setup #setupTrust { font-size:var(--type-body)!important; line-height:var(--leading-body); }
body.public-setup .card p { margin-bottom:var(--space-3); }
body.public-setup .setup-steps { list-style:none; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:var(--space-1) var(--space-3); padding:0; margin:0 0 var(--space-2); font-size:var(--type-label); }
body.public-setup .setup-steps[hidden] { display:none; } /* the grid rule above must not override hidden (Codex review 10-13) */
body.public-setup .setup-steps li { min-width:0; min-height:32px; display:flex; align-items:center; overflow-wrap:anywhere; border-bottom:var(--line); }
body.public-setup .setup-steps [aria-current=step] { font-weight:var(--weight-strong); color:var(--brand); border-color:var(--brand); }
body.public-setup #setupProgress { font-size:var(--type-body); color:var(--text-muted); line-height:var(--leading-body); text-align:left; margin-bottom:var(--space-3); }
/* Decorative dots repeat the textual status; keep their original hidden treatment. */
body.public-setup .step-indicator { display:none; }
body.public-setup .form-group { margin-bottom:var(--space-3); }
body.public-setup .form-group label { font-size:var(--type-body); text-transform:none; letter-spacing:normal; color:var(--text); }
body.public-setup .form-group input:not([type=radio]):not([type=checkbox]),body.public-setup .form-group select,body.public-setup textarea { font-size:var(--type-control); min-height:var(--control-touch); border:var(--control-line); border-radius:var(--radius-control); padding:var(--space-2) var(--space-3); transition:none; }
body.public-setup .btn { min-height:var(--control-touch); border-radius:var(--radius-control); font-size:var(--type-control); padding:var(--space-3); transition:none; }
body.public-setup .setup-language { display:flex; align-items:center; flex-wrap:wrap; gap:var(--space-2); justify-content:space-between; margin-bottom:var(--space-3)!important; }
body.public-setup .setup-language>label { margin:0!important; font-size:var(--type-body)!important; }
body.public-setup #langButtons { flex:none; max-width:100%; }
body.public-setup #langButtons .lang-btn { flex:none; white-space:nowrap; overflow-wrap:normal; }
body.public-setup #step2 .lang-btn { min-height:var(--control-touch); padding:var(--space-2) var(--space-3)!important; border-radius:var(--radius-control)!important; }
body.public-setup :is(.step-section,.import-card,.shop-type-opt,#margYesLabel,#margNoLabel) { transition:none!important; }
body.public-setup #importCards { gap:0!important; border-top:var(--line); }
body.public-setup .import-card { border:0; border-bottom:var(--line); border-radius:0; padding:var(--space-3); }
body.public-setup .import-card.selected { border-inline-start:3px solid var(--brand); background:var(--brand-light); }
body.public-setup .import-card p { margin:var(--space-1) 0 0; }
body.public-setup #signupConsent { line-height:var(--leading-body)!important; }
body.public-setup #signupConsent a { display:inline; padding-block:4px; line-height:1.6; color:var(--brand); } /* links inside a sentence are exempt from the 44px box (WCAG 2.5.8 inline); the box split the consent text into bands (10-13) */
body.public-setup :is(input,select,textarea) { scroll-margin-block:48px 72px; }
body.public-setup a:not(.btn) { min-height:var(--control-touch); display:inline-flex; align-items:center; }
body.public-setup .setup-trust a { white-space:normal; }
body.public-setup :is(#setupPlanNote,.setup-plan-link,.field-err,.form-err,#profileError) { font-size:var(--type-body); }
body.public-setup .setup-pending { list-style:none; padding:0; margin:var(--space-3) 0; }
body.public-setup .setup-pending a { display:flex; min-height:var(--control-touch); padding:var(--space-2) 0; border-bottom:var(--line); color:var(--brand); }
body.public-setup .setup-escape { position:fixed; inset:auto 0 0; z-index:160; border-top:var(--line); background:var(--card); padding:var(--space-2) var(--space-3) calc(var(--space-2) + env(safe-area-inset-bottom,0px)); display:flex; justify-content:center; }
body.public-setup .setup-escape[hidden] { display:none; }
body.public-setup .setup-escape a { display:flex; justify-content:center; min-height:var(--control-touch); width:100%; max-width:520px; background:var(--brand); color:var(--card); padding:var(--space-2); border-radius:var(--radius-control); text-decoration:none; font-weight:var(--weight-strong); }
/* Reserve the support control's corner so it cannot intercept Create or import. */
body.public-setup #signupFormBtns { padding-inline-end:60px; }
body.public-setup .help-bubble-btn { width:44px; height:44px; right:12px; }
body.public-setup :is(#signedInCard,#profileStep,#step3,#step4) .btn-primary { background:var(--card); color:var(--brand); border:var(--control-line); }
@media(max-width:600px) { body.public-setup { padding:var(--space-3); } }

/* Settings: one readable section per task, with saved values next to editing. */
.ds .ns-memory { max-width:800px; padding:var(--space-4) var(--space-4) var(--space-6); }
.ds .ns-memory h1 { font-size:var(--type-heading); font-weight:var(--weight-strong); line-height:1.3; }
.ds .ns-memory h2 { font-size:var(--type-title); font-weight:var(--weight-strong); }
.ds .ns-memory .section { padding:var(--space-4) 0; margin:var(--space-4) 0 0; border:0; border-top:var(--line); border-radius:0; background:transparent; scroll-margin-top:var(--space-4); }
.ds .ns-memory .section-nav { gap:var(--space-1) var(--space-2); }
.ds .ns-memory .section-nav a { border:0; border-radius:0; border-bottom:var(--line); padding-inline:var(--space-2); }
.ds .ns-memory :is(input,textarea) { border:var(--control-line); border-radius:var(--radius-control); }
.ds .ns-memory [data-saved-field] { display:flex; align-items:center; justify-content:space-between; gap:var(--space-2); flex-wrap:wrap; margin:0; color:var(--text-muted); }
.ds .ns-memory [data-saved-field] span { min-width:0; overflow-wrap:anywhere; }
.ds .ns-memory :is(.ns-actions,.item) { min-width:0; }
.ds .ns-memory .ns-actions { border-top:var(--line); padding-top:var(--space-3); }
.ds .ns-memory .ns-saved:empty { min-height:0; margin:0; }
.ds .ns-memory .item a { display:inline-flex; align-items:center; min-height:var(--control-touch); }
.ds .ns-memory [hidden] { display:none!important; }
@media(min-width:640px) { .ds .ns-memory #factsForm { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 var(--space-4); } .ds .ns-memory #factsForm>:not(.ns-field) { grid-column:1 / -1; } }

/* Plan comparison uses product density. Prices remain policy-derived. */
.ns-upgrade .container { max-width:1080px; padding:var(--space-4) var(--space-4) var(--space-6); }
.ns-upgrade nav.topbar { max-width:1080px; padding:var(--space-2) var(--space-4); gap:var(--space-2); border-bottom:var(--line); }
.ns-upgrade nav.topbar .logo { font:var(--weight-strong) var(--type-total)/1.3 var(--font-sans); }
.ns-upgrade nav.topbar div { gap:var(--space-2) var(--space-3); }
.ns-upgrade h1 { font:var(--weight-strong) var(--type-heading)/1.3 var(--font-sans); color:var(--text); margin:var(--space-2) 0; }
.ns-upgrade .lede { font-size:var(--type-control); color:var(--text-muted); margin-bottom:var(--space-3); max-width:75ch; }
.ns-upgrade .tiers { align-items:stretch; gap:var(--space-3); margin:var(--space-4) 0 var(--space-5); }
.ns-upgrade .tier { padding:var(--space-4); border:var(--line); border-radius:var(--radius-panel); }
.ns-upgrade .tier.hot { border:1px solid var(--brand); }
.ns-upgrade .tier.hot::before { position:static; display:block; width:fit-content; font-size:var(--type-label); background:var(--brand-light); color:var(--brand-dark); border-radius:var(--radius-badge); margin-bottom:var(--space-2); padding:var(--space-1) var(--space-2); }
.ns-upgrade .tier h3 { font-size:var(--type-title); font-weight:var(--weight-strong); margin-bottom:var(--space-2); }
.ns-upgrade .tier .price { font-size:var(--type-total); overflow-wrap:anywhere; }
.ns-upgrade .tier:last-child .price { font-size:var(--type-total); }
.ns-upgrade .tier :is(ul,.price small,.price-terms),.ns-upgrade .fineprint { color:var(--text-muted); font-size:var(--type-body); }
.ns-upgrade .paybox { border:var(--line); border-radius:var(--radius-panel); padding:var(--space-4); scroll-margin-top:var(--space-3); }
.ns-upgrade .paybox h2 { font-size:var(--type-title); }
.ns-upgrade .paybox :is(input,select) { border:var(--control-line); }
.ns-upgrade .payment-row { padding:var(--space-4) 0; }
.ns-upgrade .quote { border-block:var(--line); border-radius:0; background:transparent; padding:var(--space-3) 0; }
.ns-upgrade .quote strong { font-size:var(--type-total); }
.ns-upgrade .pay-error { color:var(--danger-text); overflow-wrap:anywhere; }
.ns-upgrade .pay-error:empty { margin:0; }
.ns-upgrade .payment-state { color:var(--text); }
.ns-upgrade [data-status=rejected] .payment-state { color:var(--danger-text); }
.ns-upgrade :is([data-status=draft],[data-status=claimed]) .payment-state { color:var(--warning-text); }
@media(max-width:720px) { .ns-upgrade .tiers { grid-template-columns:1fr; } }

/* S6 refusal/dialog contract is also included on pages outside these scopes. */
.ns-field-error { border-left:3px solid var(--danger-text); padding:var(--space-1) var(--space-2); color:var(--danger-text); font-size:var(--type-body); line-height:var(--leading-label); overflow-wrap:anywhere; }
.ns-field-error[hidden] { display:none!important; }
.ns-dialog-backdrop { position:fixed; inset:0; z-index:10000; background:rgba(0,0,0,.45); display:none; align-items:center; justify-content:center; padding:var(--space-3); }
.ns-dialog { box-sizing:border-box; background:var(--card); color:var(--text); border:var(--line); border-radius:var(--radius-panel); max-width:560px; width:100%; min-width:0; max-height:calc(100vh - 24px); max-height:calc(100dvh - 24px); overflow:auto; overflow-wrap:anywhere; padding:var(--space-4); font:var(--type-body)/var(--leading-body) var(--font-sans); }
.ns-dialog :is(h2,h3) { margin:0 0 var(--space-2); font-size:var(--type-heading); }
.ns-dialog p { margin:var(--space-2) 0 var(--space-3); }
.ns-dialog-actions { position:sticky; bottom:calc(-1 * var(--space-4)); background:var(--card); border-top:var(--line); display:flex; flex-wrap:wrap; gap:var(--space-2); padding:var(--space-3) 0; }
.ns-dialog-actions :is(a,button) { min-height:var(--control-touch); min-width:44px; max-width:100%; display:inline-flex; align-items:center; justify-content:center; border:var(--control-line); border-radius:var(--radius-control); padding:var(--space-2) var(--space-3); font:var(--weight-strong) var(--type-body)/var(--leading-label) var(--font-sans); background:var(--card); color:var(--brand); text-decoration:none; cursor:pointer; }
.ns-dialog-actions .ns-primary { background:var(--brand); color:var(--card); }
.ns-dialog :focus-visible { outline:var(--focus-ring); outline-offset:var(--focus-offset); }
.ns-dialog table { width:100%; border-collapse:collapse; font-size:var(--type-body); }
.ns-dialog :is(th,td) { padding:var(--space-2); border-bottom:var(--line); text-align:left; vertical-align:top; }
.ns-dialog th { background:var(--surface-muted); }
.ns-dialog summary { min-height:var(--control-touch); cursor:pointer; padding:var(--space-3) 0; }
.ns-dialog .ns-table-scroll { max-width:100%; overflow-x:auto; }
.ns-dialog .ns-plan { padding:var(--space-3) 0; border-bottom:var(--line); }
@media(prefers-reduced-motion:reduce) { :is(.public-setup,.ns-auth,.ns-dialog) * { animation:none!important; transition:none!important; } }
