/* Shared presentational chrome. Preference and account authority stays with each host. */
:root{--py-bg:#f5f6f8;--py-surface:#fff;--py-soft:#f0f2f5;--py-text:#17212f;--py-muted:#596576;--py-line:#dce1e8;--py-focus:#285bd4;--py-shadow:0 16px 48px #17212f24;--py-header:4.25rem;--py-radius:1rem;--py-font:ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
:root[data-theme=dark]{--py-bg:#11151c;--py-surface:#1b212b;--py-soft:#252d39;--py-text:#f2f5f9;--py-muted:#adb8c8;--py-line:#3b4656;--py-focus:#9ab8ff;--py-shadow:0 18px 50px #0007}
@media(prefers-color-scheme:dark){:root:not([data-theme=light]):not([data-theme=dark]){--py-bg:#11151c;--py-surface:#1b212b;--py-soft:#252d39;--py-text:#f2f5f9;--py-muted:#adb8c8;--py-line:#3b4656;--py-focus:#9ab8ff;--py-shadow:0 18px 50px #0007}}
.py-web{margin:0;font-family:var(--py-font);min-inline-size:0}
.py-web *{box-sizing:border-box}:where(.py-web) a{color:inherit}.py-web :is(button,input,select){font:inherit}
.py-shell{background:var(--py-bg);color:var(--py-text);display:grid;grid-template-columns:15rem minmax(0,1fr);grid-template-rows:auto 1fr;min-block-size:100dvh;max-inline-size:none;margin:0}
.py-topbar{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:1rem;min-block-size:var(--py-header);padding:.75rem 1.5rem;background:var(--py-surface);border-block-end:1px solid var(--py-line);position:sticky;inset-block-start:0;z-index:50}
.py-brand{display:inline-flex;align-items:center;gap:.75rem;min-inline-size:0;text-decoration:none;line-height:1.1}.py-brand strong{font-size:1.0625rem;letter-spacing:.04em}.py-brand small{display:block;margin-block-start:.25rem;font-size:.66rem;letter-spacing:.11em;color:var(--py-muted);font-weight:650}.py-brand-mark{display:grid;place-items:center;inline-size:2.25rem;block-size:2.25rem;padding:.2rem;border-radius:.7rem;flex:none}.py-logo{display:block;block-size:100%;inline-size:auto;aspect-ratio:160/196}
.py-header-actions{display:flex;align-items:center;justify-content:flex-end;gap:.65rem;min-inline-size:0}.py-header-context{font-size:.875rem;color:var(--py-muted);min-inline-size:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-inline-size:30vw}
.py-sidebar{grid-column:1;grid-row:2;min-inline-size:0;background:var(--py-surface);border-inline-end:1px solid var(--py-line);padding:1.25rem .85rem;position:sticky;inset-block-start:var(--py-header);block-size:calc(100dvh - var(--py-header));overflow:auto}.py-sidebar nav{display:grid;gap:.3rem}.py-sidebar a{display:flex;align-items:center;gap:.65rem;min-block-size:2.75rem;padding:.7rem .85rem;border-radius:.75rem;text-decoration:none;font-size:.875rem;color:var(--py-muted);overflow-wrap:anywhere}.py-sidebar a:hover{background:var(--py-soft);color:var(--py-text)}.py-sidebar a[aria-current=page],.py-sidebar .is-current,.py-sidebar a.active{background:var(--py-soft);color:var(--py-text);font-weight:650}.py-sidebar h2{font-size:.68rem;text-transform:uppercase;letter-spacing:.1em;color:var(--py-muted);margin:1.2rem .85rem .6rem}.py-sidebar details>summary{display:none}
.py-workspace{grid-column:2;grid-row:2;min-inline-size:0;display:flex;flex-direction:column}.py-main{inline-size:100%;min-inline-size:0;max-inline-size:92rem;margin-inline:auto;padding:2rem clamp(1rem,3vw,3rem);flex:1}.py-main h1{font-size:clamp(1.6rem,2.3vw,2.25rem);line-height:1.15;letter-spacing:-.035em;margin-block:0 .6rem}.py-main :is(table,pre){max-inline-size:100%}.py-footer{padding:1.2rem clamp(1rem,3vw,3rem);border-block-start:1px solid var(--py-line);color:var(--py-muted);font-size:.75rem;display:flex;gap:1rem;flex-wrap:wrap;justify-content:space-between}
.py-auth-shell{background:var(--py-bg);color:var(--py-text);display:block;min-block-size:100dvh}.py-auth-shell .auth-shell{min-block-size:calc(100dvh - var(--py-header));padding:3rem 1rem;display:grid;align-content:start;justify-items:center;gap:1rem;margin:0;max-inline-size:none}.py-auth-shell .auth-card{inline-size:min(100%,29rem);padding:2rem;background:var(--py-surface);border:1px solid var(--py-line);border-radius:1.4rem;box-shadow:0 8px 32px #17212f08}.py-auth-shell .auth-brand{display:none}
[data-web-preferences].py-enhanced{display:inline-flex;gap:0;align-items:center;margin:0;padding:0;border:0;background:none;inline-size:auto;max-inline-size:100%}[data-web-preferences].py-enhanced>.py-native-controls{display:none!important}
.py-control{min-block-size:2.75rem;border:1px solid var(--py-line);background:var(--py-surface);color:var(--py-text);border-radius:.8rem;padding:.55rem .8rem;display:inline-flex;align-items:center;justify-content:center;gap:.55rem;font-size:.8125rem;font-weight:550;cursor:pointer;line-height:1.2;max-inline-size:100%;text-decoration:none}.py-control:hover{background:var(--py-soft)}.py-control:focus-visible,.py-popover :focus-visible,[data-web-account]>summary:focus-visible{outline:3px solid var(--py-focus);outline-offset:3px}.py-control svg{inline-size:1.1rem;block-size:1.1rem;flex:none}.py-control-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-inline-size:15rem}.py-chevron{font-size:.65rem;color:var(--py-muted)}
.py-popover{position:fixed;inset:auto;margin:0;inline-size:min(22rem,calc(100vw - 2rem));max-block-size:calc(100dvh - 2rem);overflow:auto;padding:1rem;border:1px solid var(--py-line);border-radius:var(--py-radius);background:var(--py-surface);color:var(--py-text);box-shadow:var(--py-shadow);font:400 .875rem/1.4 var(--py-font);z-index:1000;text-align:start}.py-popover[hidden]{display:none!important}.py-popover-title{font-size:.7rem;letter-spacing:.075em;text-transform:uppercase;font-weight:650;color:var(--py-muted);margin:0 0 .75rem}.py-search{display:block;inline-size:100%;min-block-size:2.75rem;padding:.65rem .85rem;border:1px solid var(--py-line);border-radius:.7rem;background:var(--py-bg);color:var(--py-text);font:inherit;font-size:1rem;margin-block-end:.6rem}.py-language-list{display:grid;gap:.15rem;max-block-size:15rem;overflow:auto;overscroll-behavior:contain;margin-block-end:1rem}.py-language-option{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-block-size:2.75rem;border-radius:.65rem;padding:.7rem .8rem;cursor:pointer;border:1px solid transparent}.py-language-option:hover,.py-language-option.py-active{background:var(--py-soft)}.py-language-option[aria-selected=true]{font-weight:650}.py-language-option.py-active{border-color:var(--py-focus)}.py-language-code{color:var(--py-muted);font-size:.72rem;text-transform:uppercase}.py-selection-mark{font-size:.9rem;min-inline-size:1rem;text-align:center}.py-empty{padding:1rem .5rem;color:var(--py-muted);margin:0}.py-theme-group{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(6rem,100%),1fr));gap:.35rem}.py-theme-choice{display:grid;justify-items:center;gap:.35rem;padding:.7rem .25rem;min-block-size:3.5rem;border:1px solid var(--py-line);border-radius:.7rem;background:var(--py-surface);color:var(--py-muted);font:inherit;font-size:.75rem;cursor:pointer;overflow-wrap:anywhere}.py-theme-choice[aria-pressed=true]{background:var(--py-soft);border-color:var(--py-text);color:var(--py-text);font-weight:650}.py-theme-symbol{font-size:1.1rem;line-height:1}
[data-web-account]{position:relative}[data-web-account]>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:.5rem;min-block-size:2.75rem;padding:.4rem .7rem;border:1px solid var(--py-line);border-radius:.8rem;background:var(--py-surface);color:var(--py-text);font-size:.8125rem;font-weight:550}[data-web-account]>summary::-webkit-details-marker{display:none}.py-avatar{display:grid;place-items:center;inline-size:1.7rem;block-size:1.7rem;border-radius:50%;background:var(--py-soft);font-size:.75rem;font-weight:700}.py-account-popover{inline-size:min(18rem,calc(100vw - 2rem));padding:.5rem}.py-account-popover :is(a,button){display:flex;align-items:center;inline-size:100%;min-block-size:2.75rem;padding:.7rem .8rem;text-align:start;border:0;border-radius:.65rem;background:none;color:var(--py-text);font:inherit;text-decoration:none;cursor:pointer}.py-account-popover :is(a,button):hover{background:var(--py-soft)}.py-account-popover form{margin:0}.py-account-popover p{color:var(--py-muted);font-size:.75rem;padding:.5rem .8rem;margin:0}.py-account-popover form:last-child{border-block-start:1px solid var(--py-line);margin-block-start:.35rem;padding-block-start:.35rem}
@media(max-width:60rem){.py-shell{display:flex;flex-direction:column}.py-topbar{padding:.7rem 1rem;gap:.5rem}.py-header-context{display:none}.py-sidebar{position:static;inline-size:100%;block-size:auto;padding:.5rem 1rem;border-inline-end:0;border-block-end:1px solid var(--py-line)}.py-sidebar details>summary{display:block;min-block-size:2.75rem;line-height:2.75rem;font-size:.875rem;font-weight:600;cursor:pointer}.py-sidebar details:not([open])>:not(summary){display:none}.py-workspace{flex:1}.py-main{padding:1.5rem 1rem}.py-control-label{max-inline-size:9rem}.py-auth-shell .auth-shell{padding:2rem 1rem}}
@media(max-width:25rem){.py-topbar{flex-wrap:wrap;row-gap:.65rem}.py-brand small{font-size:.6rem}.py-brand-mark{inline-size:1.8rem;block-size:1.8rem}.py-brand{gap:.45rem}.py-header-actions{gap:.35rem;max-inline-size:100%;margin-inline-start:auto}.py-control-label{max-inline-size:5.75rem}.py-control{padding:.55rem .6rem;min-inline-size:0}.py-auth-shell .auth-card{padding:1.35rem}[data-web-account]>summary .py-account-label{position:absolute;inline-size:1px;block-size:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}}
@media(prefers-reduced-motion:no-preference){.py-popover{animation:py-enter .12s ease-out}@keyframes py-enter{from{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:none}}}
@media(forced-colors:active){.py-control,.py-theme-choice,.py-language-option.py-active,.py-popover{border:1px solid CanvasText}}

/* Language retains priority on narrow headers; theme remains recognizable by its symbol. */
.py-control-label{display:inline-flex;align-items:center;gap:.35rem}.py-compact-theme{display:none}.py-language-meta{display:inline-flex;align-items:center;gap:.65rem;flex:none}.py-search::placeholder{color:var(--py-muted);opacity:1}.py-search:focus-visible{outline:1px solid var(--py-focus);outline-offset:1px;border-color:var(--py-focus);box-shadow:0 0 0 4px color-mix(in srgb,var(--py-focus) 16%,transparent)}
@media(max-width:40rem){.py-control-label{max-inline-size:none;overflow:visible}.py-control-language{white-space:normal;overflow-wrap:anywhere}.py-control-theme,.py-control-separator{display:none}.py-compact-theme{display:inline}.py-control{gap:.4rem}}

.py-menu-icon{inline-size:1.1rem;block-size:1.1rem;flex:none;margin-inline-end:.7rem}

.py-chevron{inline-size:.8rem!important}.py-theme-symbol svg{inline-size:1.25rem;block-size:1.25rem}.py-selection-mark svg{inline-size:1rem;block-size:1rem}.py-avatar svg{inline-size:1.05rem;block-size:1.05rem}.py-compact-theme svg{inline-size:1rem;block-size:1rem}

.py-sidebar a:has(>.nav-label):has(>span[aria-hidden]){display:grid;grid-template-columns:1.1rem minmax(0,1fr);gap:.25rem .65rem}.py-sidebar .nav-label{min-inline-size:0;overflow-wrap:normal;word-break:normal}.py-sidebar .nav-badge{grid-column:2;justify-self:start;max-inline-size:100%;font-size:.65rem;line-height:1.3;white-space:normal}.py-sr-only{position:absolute;inline-size:1px;block-size:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}

/* One header rhythm and an icon-free navigation column across management roles. */
.py-shell>.py-topbar,.py-auth-shell>.py-topbar{padding:.75rem 1.5rem;min-block-size:var(--py-header);gap:1rem}.py-sidebar a:has(>.nav-label){display:grid;grid-template-columns:minmax(0,1fr)}.py-sidebar .nav-badge{grid-column:1}.py-language-list{overflow-x:hidden;padding:2px;scrollbar-gutter:stable}.py-language-option{min-inline-size:0;inline-size:100%}.py-language-option>span:first-child{min-inline-size:0;overflow-wrap:anywhere}
@media(max-width:60rem){.py-shell>.py-topbar,.py-auth-shell>.py-topbar{padding:.7rem 1rem;gap:.5rem}}

.py-language-option{flex-wrap:wrap;gap:.25rem .5rem}.py-language-option>span:first-child{flex:1 1 8rem;white-space:nowrap;overflow-wrap:normal;word-break:normal}.py-language-meta{margin-inline-start:auto}

.py-topbar{flex-direction:row}.py-topbar .py-brand{padding:0}
/* Management portal header matches the public site: a thin translucent bar on the page surface (white in light, true black in dark), quiet borderless controls and the shared focus colour. Scoped to portal shells; site and storefront headers keep their own rules. */
:is(.py-shell,.py-auth-shell){--py-header:3.5rem}
:is(.py-shell,.py-auth-shell)>.py-topbar{min-block-size:var(--py-header);padding-block:0;border-block-end:1px solid rgb(0 0 0 / .08);background:rgb(255 255 255 / .8);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}
:root[data-theme=dark] :is(.py-shell,.py-auth-shell)>.py-topbar{border-block-end-color:rgb(255 255 255 / .09);background:rgb(0 0 0 / .74)}
@media(prefers-color-scheme:dark){:root:not([data-theme=light]):not([data-theme=dark]) :is(.py-shell,.py-auth-shell)>.py-topbar{border-block-end-color:rgb(255 255 255 / .09);background:rgb(0 0 0 / .74)}}
:is(.py-shell,.py-auth-shell)>.py-topbar .py-brand strong{font-size:1.0625rem;font-weight:650;letter-spacing:-.01em}
:is(.py-shell,.py-auth-shell)>.py-topbar .py-brand small{margin-block-start:.15rem;font-size:.6875rem;font-weight:500;letter-spacing:0}
:is(.py-shell,.py-auth-shell)>.py-topbar .py-brand-mark{inline-size:2rem;block-size:2rem;border-radius:.6rem}
:is(.py-shell,.py-auth-shell)>.py-topbar :is(.py-control,[data-web-account]>summary){min-block-size:2.75rem;border-color:transparent;border-radius:999px;background:transparent;color:var(--py-muted);font-size:.8125rem;font-weight:500}
:is(.py-shell,.py-auth-shell)>.py-topbar :is(.py-control,[data-web-account]>summary):hover{background:var(--py-soft);color:var(--py-text)}
:is(.py-shell,.py-auth-shell)>.py-topbar .py-header-context{font-size:.8125rem}

/* Sign-in pages: a brand panel beside an open form column instead of a lone centred box. Primary and alternative sign-in actions share the public site's blue pill; every route, field and form stays with its host. */
.py-auth-shell{--py-auth-blue:#0071e3;--py-auth-blue-hover:#0077ed;--py-auth-tab-on:var(--py-surface);--py-auth-gap:clamp(1rem,2.5vw,2rem)}
:root[data-theme=dark] .py-auth-shell{--py-auth-tab-on:#36414f}
@media(prefers-color-scheme:dark){:root:not([data-theme=light]):not([data-theme=dark]) .py-auth-shell{--py-auth-tab-on:#36414f}}
.py-auth-shell .auth-shell.py-auth-split{display:grid;grid-template-columns:minmax(0,1.08fr) minmax(0,1fr);align-items:stretch;align-content:stretch;justify-items:stretch;gap:clamp(2rem,5vw,5rem);inline-size:100%;max-inline-size:78rem;min-block-size:calc(100dvh - var(--py-header));margin-inline:auto;padding:var(--py-auth-gap)}
.py-auth-shell .auth-card.py-auth-panel{align-self:center;justify-self:center;inline-size:min(100%,28rem);margin:0;padding:clamp(1rem,2vw,1.5rem) 0;border:0;border-radius:0;background:transparent;box-shadow:none;text-align:start}
.py-auth-shell .py-auth-panel h1{margin:0 0 .65rem;font-size:clamp(1.75rem,2.6vw,2.25rem);font-weight:650;line-height:1.1;letter-spacing:-.03em;text-align:start;text-wrap:balance}
.py-auth-shell .py-auth-panel>p:not(.auth-security):not(.auth-alternative),.py-auth-shell .py-main:has(>.py-auth-hero)>p:not(.auth-security){margin:0 0 1.5rem;color:var(--py-muted);font-size:.975rem;line-height:1.55;text-align:start}
.py-auth-shell .py-auth-panel .auth-form{display:grid;gap:1.1rem;margin:0}
.py-auth-shell .py-auth-panel .field{display:grid;gap:.45rem;font-size:.875rem;font-weight:600}
.py-auth-shell .py-auth-panel .field small{font-weight:400;color:var(--py-muted);font-size:.75rem}
.py-auth-shell .py-auth-panel .field input{min-block-size:3.25rem;border-radius:.875rem;font-size:1rem}
.py-auth-shell .py-auth-panel .phone-prefix{border-start-start-radius:.875rem;border-end-start-radius:.875rem;padding-inline:1rem}
.py-auth-shell .py-auth-panel .phone-input input{border-start-start-radius:0;border-end-start-radius:0}
.py-auth-shell :is(.py-auth-panel .button-primary,.py-auth-action){display:flex;align-items:center;justify-content:center;gap:.6rem;inline-size:100%;min-block-size:3.375rem;margin:0;padding:.5rem 1.4rem;border:1px solid transparent;border-radius:999px;background:var(--py-auth-blue);color:#fff;font:600 1rem/1.25 var(--py-font);text-align:center;text-decoration:none;box-shadow:none;cursor:pointer;transition:background-color .15s ease,transform .15s ease}
.py-auth-shell :is(.py-auth-panel .button-primary,.py-auth-action):hover{background:var(--py-auth-blue-hover);color:#fff;transform:none}
.py-auth-shell :is(.py-auth-panel .button-primary,.py-auth-action):active{transform:scale(.985)}
.py-auth-shell :is(.py-auth-panel .button-primary,.py-auth-action,.py-auth-tabs a,.py-auth-link):focus-visible{outline:3px solid var(--py-focus);outline-offset:3px}
.py-auth-shell .py-auth-panel .auth-form>.button-primary{margin-block-start:.35rem}
.py-auth-action svg{inline-size:1.15rem;block-size:1.15rem;flex:none}
.py-auth-actions{display:grid;gap:.75rem}
.py-auth-tabs{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:.25rem;margin:0 0 1.35rem;padding:.25rem;border:1px solid var(--py-line);border-radius:999px;background:var(--py-soft)}
.py-auth-tabs a{display:flex;align-items:center;justify-content:center;min-block-size:2.5rem;padding:.4rem 1rem;border-radius:999px;color:var(--py-muted);font-size:.875rem;font-weight:600;text-align:center;text-decoration:none}
.py-auth-tabs a:hover{color:var(--py-text)}
.py-auth-tabs a[aria-current=page]{background:var(--py-auth-tab-on);color:var(--py-text);box-shadow:0 1px 3px #0000002e}
.py-auth-shell .py-auth-divider{display:flex;align-items:center;gap:.85rem;margin:1.6rem 0 1.1rem;color:var(--py-muted);font-size:.8125rem}
.py-auth-shell .py-auth-divider::before,.py-auth-shell .py-auth-divider::after{content:"";flex:1;border-block-start:1px solid var(--py-line)}
.py-auth-shell .py-auth-link{display:inline-flex;margin-block-start:1rem;color:var(--py-focus);font-size:.875rem;font-weight:600;text-decoration:none}
.py-auth-shell .py-auth-link:hover{text-decoration:underline}
.py-auth-shell .py-auth-panel .auth-security,.py-auth-shell .py-main:has(>.py-auth-hero)>.auth-security{margin:1.6rem 0 0;color:var(--py-muted);font-size:.75rem;line-height:1.55;text-align:start}
.py-auth-hero{position:relative;isolation:isolate;overflow:hidden;display:flex;flex-direction:column;justify-content:space-between;gap:2rem;min-block-size:min(38rem,calc(100dvh - var(--py-header) - 2 * var(--py-auth-gap)));padding:clamp(1.75rem,3.5vw,3rem);border-radius:1.75rem;color:#fff;background:#0a3d8f linear-gradient(155deg,#1677f2 0%,#0a4fb8 36%,#072d6e 70%,#061b44 100%)}
.py-auth-hero::before{content:"";position:absolute;inset-block-start:-18%;inset-inline-end:-12%;inline-size:72%;aspect-ratio:1;border-radius:50%;background:radial-gradient(closest-side,#6cb6ffa6,#6cb6ff00);z-index:-1}
.py-auth-hero::after{content:"";position:absolute;inset:0;z-index:-1;background-image:linear-gradient(#ffffff12 1px,transparent 1px),linear-gradient(90deg,#ffffff12 1px,transparent 1px);background-size:2.75rem 2.75rem;-webkit-mask-image:linear-gradient(200deg,#000 0%,transparent 65%);mask-image:linear-gradient(200deg,#000 0%,transparent 65%)}
.py-auth-hero-top{display:flex;align-items:center;gap:.8rem}
.py-auth-hero-mark{display:grid;place-items:center;inline-size:2.75rem;block-size:2.75rem;padding:.45rem;border-radius:.85rem;background:#fff;flex:none}
.py-auth-kicker{margin:0;color:#ffffffe0;font-size:.9375rem;font-weight:650;letter-spacing:-.005em}
.py-auth-hero-copy{display:grid;gap:1rem;max-inline-size:32rem}
.py-auth-hero-title{margin:0;font-size:clamp(2rem,3.6vw,3.25rem);font-weight:650;line-height:1.05;letter-spacing:-.035em;text-wrap:balance}
.py-auth-hero-copy p:not(.py-auth-hero-title){margin:0;color:#ffffffcc;font-size:1.0625rem;line-height:1.55}
.py-auth-points{display:grid;gap:.6rem;max-inline-size:28rem;margin:0;padding:0;list-style:none}
.py-auth-points li{display:flex;align-items:center;gap:.75rem;padding:.8rem 1rem;border:1px solid #ffffff26;border-radius:1rem;background:#ffffff14;font-size:.9375rem;font-weight:500;line-height:1.35;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}
.py-auth-points svg{inline-size:1.4rem;block-size:1.4rem;flex:none}
.py-auth-shell .py-main:has(>.py-auth-hero){position:relative;display:flex;flex-direction:column;justify-content:center;max-inline-size:78rem;min-block-size:calc(100dvh - var(--py-header));padding-block:var(--py-auth-gap);padding-inline:calc(52% + clamp(2rem,4vw,4rem)) var(--py-auth-gap)}
.py-auth-shell .py-main:has(>.py-auth-hero)>:not(.py-auth-hero){inline-size:100%;max-inline-size:28rem}
.py-auth-shell .py-main:has(>.py-auth-hero)>h1{margin:0 0 .65rem;font-size:clamp(1.75rem,2.6vw,2.25rem);font-weight:650;line-height:1.1;letter-spacing:-.03em}
.py-auth-shell .py-main>.py-auth-hero{position:absolute;inset-block:var(--py-auth-gap);inset-inline-start:var(--py-auth-gap);inline-size:calc(52% - var(--py-auth-gap));min-block-size:0}
.py-auth-shell .py-main .py-auth-panel{inline-size:100%;padding:0}
.py-auth-shell .py-main .py-auth-panel h2{margin:0 0 .25rem;font-size:1rem;font-weight:650}
@media(max-width:60rem){.py-auth-shell .auth-shell.py-auth-split{grid-template-columns:minmax(0,1fr);align-content:start;gap:1.5rem;min-block-size:0;padding:1rem}.py-auth-shell .auth-card.py-auth-panel{justify-self:stretch;inline-size:100%;max-inline-size:32rem;margin-inline:auto;padding-block:0 1.5rem}.py-auth-hero{min-block-size:0;gap:1rem;padding:1.5rem;border-radius:1.25rem}.py-auth-hero-title{font-size:clamp(1.5rem,5vw,2rem)}.py-auth-points{display:none}.py-auth-shell .py-main:has(>.py-auth-hero){display:flex;min-block-size:0;padding:1rem}.py-auth-shell .py-main:has(>.py-auth-hero)>:not(.py-auth-hero){max-inline-size:32rem;margin-inline:auto}.py-auth-shell .py-main>.py-auth-hero{position:relative;inset:auto;order:-1;inline-size:100%;max-inline-size:32rem;margin:0 auto 1.5rem}}
@media(max-width:40rem){.py-auth-hero-copy p:not(.py-auth-hero-title){display:none}.py-auth-hero{gap:.85rem;padding:1.25rem}.py-auth-hero-mark{inline-size:2.25rem;block-size:2.25rem;padding:.35rem}}
@media(prefers-reduced-motion:reduce){.py-auth-shell :is(.py-auth-panel .button-primary,.py-auth-action){transition:none}.py-auth-shell :is(.py-auth-panel .button-primary,.py-auth-action):active{transform:none}}
@media(forced-colors:active){.py-auth-hero,.py-auth-tabs a[aria-current=page],.py-auth-action{border:1px solid CanvasText}}

/* Management consoles (Super Admin, Super-Developer, Developer): the business panel's calm grouped look. Scoped to .py-console shells only; every route, form and authority stays with its host. */
.py-shell.py-console{--pc-canvas:#f5f5f7;--pc-surface:#fff;--pc-sidebar:#fbfbfd;--pc-text:#1d1d1f;--pc-secondary:#6e6e73;--pc-tertiary:#86868b;--pc-separator:#00000014;--pc-separator-strong:#00000024;--pc-fill:#7878801f;--pc-fill-hover:#7878802e;--pc-row-hover:#0000000a;--pc-accent:#0071e3;--pc-accent-hover:#0077ed;--pc-accent-soft:#0071e31a;--pc-accent-text:#0066cc;--pc-shadow:#0000000a;--pc-green:#248a3d;--pc-green-soft:#34c7591f;--pc-red:#d70015;--pc-red-soft:#ff3b3014}
:root[data-theme=dark] .py-shell.py-console{--pc-canvas:#000;--pc-surface:#1c1c1e;--pc-sidebar:#0f0f11;--pc-text:#f5f5f7;--pc-secondary:#a1a1a6;--pc-tertiary:#7c7c80;--pc-separator:#ffffff17;--pc-separator-strong:#ffffff2b;--pc-fill:#7878803d;--pc-fill-hover:#78788052;--pc-row-hover:#ffffff0a;--pc-accent:#0a84ff;--pc-accent-hover:#409cff;--pc-accent-soft:#0a84ff29;--pc-accent-text:#4da3ff;--pc-shadow:#0000;--pc-green:#30d158;--pc-green-soft:#30d15824;--pc-red:#ff6961;--pc-red-soft:#ff453a24}
@media(prefers-color-scheme:dark){:root:not([data-theme=light]):not([data-theme=dark]) .py-shell.py-console{--pc-canvas:#000;--pc-surface:#1c1c1e;--pc-sidebar:#0f0f11;--pc-text:#f5f5f7;--pc-secondary:#a1a1a6;--pc-tertiary:#7c7c80;--pc-separator:#ffffff17;--pc-separator-strong:#ffffff2b;--pc-fill:#7878803d;--pc-fill-hover:#78788052;--pc-row-hover:#ffffff0a;--pc-accent:#0a84ff;--pc-accent-hover:#409cff;--pc-accent-soft:#0a84ff29;--pc-accent-text:#4da3ff;--pc-shadow:#0000;--pc-green:#30d158;--pc-green-soft:#30d15824;--pc-red:#ff6961;--pc-red-soft:#ff453a24}}
.py-shell.py-console{grid-template-columns:248px minmax(0,1fr);background:var(--pc-canvas);color:var(--pc-text);font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",system-ui,sans-serif;-webkit-font-smoothing:antialiased}
.py-console>.py-sidebar{padding:18px 12px 24px;background:var(--pc-sidebar);border-inline-end:1px solid var(--pc-separator)}
.py-console .py-sidebar nav{display:grid;align-content:start;gap:2px}
.py-console .py-sidebar .nav-item{display:flex;align-items:center;gap:10px;min-block-size:34px;padding:6px 10px;border-radius:8px;color:var(--pc-text);font-size:13.5px;font-weight:500;line-height:1.25;text-decoration:none;transition:background-color .12s ease,color .12s ease}
.py-console .py-sidebar .nav-item .py-nav-icon{inline-size:19px;block-size:19px;flex:none;color:var(--pc-accent)}
.py-console .py-sidebar .nav-item .nav-label{min-inline-size:0;overflow-wrap:anywhere}
.py-console .py-sidebar .nav-item:hover{background:var(--pc-fill);color:var(--pc-text)}
.py-console .py-sidebar .nav-item:is(.active,[aria-current=page]){background:var(--pc-accent-soft);color:var(--pc-accent-text);font-weight:600}
.py-console .py-sidebar .nav-item.nav-unavailable{color:var(--pc-secondary)}
.py-console .py-sidebar .nav-item.nav-unavailable .py-nav-icon{color:var(--pc-tertiary)}
.py-console .py-sidebar .nav-badge{margin-inline-start:auto;padding:2px 7px;border:0;border-radius:999px;background:var(--pc-fill);color:var(--pc-secondary);font-size:10.5px;font-weight:600;white-space:nowrap}
.py-console .py-nav-later{margin-block-start:14px}
.py-console .py-nav-later>summary{display:flex;align-items:center;gap:8px;min-block-size:30px;padding:4px 10px;color:var(--pc-tertiary);font-size:11.5px;font-weight:600;list-style:none;cursor:pointer;border-radius:8px}
.py-console .py-nav-later>summary::-webkit-details-marker{display:none}
.py-console .py-nav-later>summary::after{content:"";inline-size:6px;block-size:6px;margin-inline-start:auto;border-inline-end:1.5px solid currentColor;border-block-end:1.5px solid currentColor;transform:rotate(-45deg);transition:transform .15s ease}
.py-console .py-nav-later[open]>summary::after{transform:rotate(45deg)}
.py-console .py-nav-later>summary:hover{background:var(--pc-fill)}
.py-console .py-nav-later>.nav-item{margin-block-start:2px}
.py-console .py-nav-later .nav-badge{display:none}
.py-console .secure-note{margin:16px 10px 0;color:var(--pc-tertiary);font-size:11.5px;line-height:1.5}
.py-console .py-main{max-inline-size:1120px;padding:30px clamp(20px,4vw,56px) 56px}
.py-console .py-main h1{margin:0 0 8px;font-size:clamp(26px,2.4vw,34px);font-weight:700;letter-spacing:-.025em;line-height:1.12}
.py-console .py-main>p,.py-console .page-hero p{color:var(--pc-secondary);font-size:15px;line-height:1.5}
.py-console .page-hero{display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:4px;padding:0 0 22px}
.py-console .eyebrow{color:var(--pc-accent-text);font-size:12px;font-weight:600;letter-spacing:.02em}
.py-console :is(.form-card,.card,.capability-card,.projection-card,.access-card,.table-scroll),.py-console .py-main>form.auth-form{background:var(--pc-surface);border:1px solid var(--pc-separator);border-radius:14px;box-shadow:0 1px 2px var(--pc-shadow)}
.py-console :is(.form-card,.card,.capability-card,.projection-card,.access-card),.py-console .py-main>form.auth-form{padding:22px 24px;margin-block-end:16px}
.py-console :is(.form-card,.card,.capability-card,.projection-card,.access-card,.auth-form) :is(h2,h3){margin:0 0 8px;color:var(--pc-text);font-size:17px;font-weight:600;letter-spacing:-.012em;line-height:1.3}
.py-console :is(.form-card,.card,.capability-card,.projection-card) h3{font-size:15px}
.py-console :is(.form-card,.card,.capability-card,.projection-card)>p{color:var(--pc-secondary);font-size:14px;line-height:1.5}
.py-console .projection-icon,.py-console .access-icon,.py-console .step-number{display:inline-grid;place-items:center;inline-size:34px;block-size:34px;border:0;border-radius:10px;background:var(--pc-accent-soft);color:var(--pc-accent);font-weight:700}
.py-console :is(.auth-form,.form-fields){gap:14px}
.py-console .field>span,.py-console fieldset.field>legend{color:var(--pc-secondary);font-size:12.5px;font-weight:600}
.py-console :is(.py-main) :is(input:not([type=checkbox]):not([type=radio]),select,textarea){min-block-size:38px;padding:8px 12px;border:1px solid var(--pc-separator-strong);border-radius:10px;background:var(--pc-surface);color:var(--pc-text);font:inherit;font-size:14px}
.py-console .py-main textarea{min-block-size:88px}
.py-console .py-main :is(input,select,textarea):focus-visible{border-color:var(--pc-accent);outline:0;box-shadow:0 0 0 4px var(--pc-accent-soft)}
.py-console .py-main fieldset.field{padding:12px 14px;border:1px solid var(--pc-separator);border-radius:12px}
.py-console .py-main .button{min-block-size:36px;padding:0 18px;border:0;border-radius:999px;font-size:14px;font-weight:600;text-decoration:none;box-shadow:none;transition:background-color .12s ease}
.py-console .py-main .button-primary{inline-size:auto;background:var(--pc-accent);color:#fff}
.py-console .py-main .button-primary:hover:not(:disabled){background:var(--pc-accent-hover)}
.py-console .py-main .button-secondary{background:var(--pc-fill);color:var(--pc-accent-text)}
.py-console .py-main .button-secondary:hover{background:var(--pc-fill-hover)}
.py-console .py-main .button-ghost{background:transparent;color:var(--pc-accent-text)}
.py-console .py-main :is(.auth-form,.form-fields)>.button{justify-self:start;min-inline-size:160px}
.py-console :is(.chip,.status-chip){padding:4px 10px;border:0;border-radius:999px;background:var(--pc-fill);color:var(--pc-text);font-size:12px;font-weight:600}
.py-console .status-chip.status-available{background:var(--pc-green-soft);color:var(--pc-green)}
.py-console .status-chip.status-unavailable{color:var(--pc-secondary)}
.py-console :is(.card,.form-card) dl{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:0;margin:4px 0 14px}
.py-console :is(.card,.form-card) dl>:is(dt,dd){margin:0;padding:10px 0;border-block-end:1px solid var(--pc-separator);font-size:14px}
.py-console :is(.card,.form-card) dl>dt{color:var(--pc-secondary);font-weight:500}
.py-console :is(.card,.form-card) dl>dd{padding-inline-start:20px;color:var(--pc-text);text-align:end;justify-content:flex-end}
.py-console .table-scroll{margin:16px 0;overflow:auto}
.py-console .table-scroll table{inline-size:100%;border-collapse:collapse;font-size:14px}
.py-console .table-scroll :is(th,td){padding:12px 18px;text-align:start;border-block-start:1px solid var(--pc-separator)}
.py-console .table-scroll thead th{border-block-start:0;color:var(--pc-secondary);font-size:12px;font-weight:600}
.py-console .table-scroll tbody tr:hover{background:var(--pc-row-hover)}
.py-console .result{padding:12px 14px;border:0;border-radius:12px;background:var(--pc-fill);color:var(--pc-text);font-size:14px}
.py-console .result.failure{background:var(--pc-red-soft);color:var(--pc-red)}
.py-console .result.success{background:var(--pc-green-soft);color:var(--pc-green)}
.py-console :is(.submit-help,.hint,.auth-security,.empty){color:var(--pc-tertiary);font-size:12.5px;line-height:1.5}
.py-console .text-link,.py-console .py-main a:not(.button){color:var(--pc-accent-text)}
.py-console [data-shell-footer],.py-console .py-footer{display:flex;flex-wrap:wrap;gap:12px 20px;padding:18px clamp(20px,4vw,56px);border-block-start:1px solid var(--pc-separator);color:var(--pc-tertiary);font-size:12px}
.py-console [data-shell-footer] a{color:var(--pc-secondary)}
@media(max-width:60rem){.py-console>.py-sidebar{padding:8px 16px;border-inline-end:0;border-block-end:1px solid var(--pc-separator)}.py-console .py-main{padding:22px 16px 40px}.py-console :is(.card,.form-card) dl{grid-template-columns:1fr}.py-console :is(.card,.form-card) dl>dt{padding-block-end:0;border-block-end:0}.py-console :is(.card,.form-card) dl>dd{padding-inline-start:0;text-align:start;justify-content:flex-start}}
@media(prefers-reduced-motion:reduce){.py-console .py-nav-later>summary::after{transition:none}}

/* Native controls and scrollbars follow the chosen theme, not only the OS; scroll areas use thin, quiet bars. */
:root[data-theme=dark]{color-scheme:dark}:root[data-theme=light]{color-scheme:light}
:is(.py-shell,.py-auth-shell){scrollbar-color:var(--py-line) transparent}
:is(.py-shell,.py-auth-shell) :is(.py-sidebar,.py-sidebar nav,.table-scroll,.admin-table-scroll,textarea),.py-popover,.py-language-list{scrollbar-width:thin;scrollbar-color:var(--py-line) transparent}
.py-console .py-main input:is([type=checkbox],[type=radio]){inline-size:18px;block-size:18px;min-block-size:0;margin:0;padding:0;flex:none;accent-color:var(--pc-accent);cursor:pointer}
.py-console .py-main label:has(>input:is([type=checkbox],[type=radio])){display:flex;align-items:center;gap:10px;font-size:14px;cursor:pointer}
/* PY-MOTION-1: the one page transition language. Shell parts stay put and switch at once; only new content fades in, over a theme-colored backdrop. The old root frame is never shown: Chrome 156 measured intermittently presenting it as a blank white image, a white flash in the dark theme. Reduced motion swaps instantly. */
:root{--py-motion-page:200ms;--py-motion-control:150ms;--py-ease-page:cubic-bezier(.22,1,.36,1)}
:where(html){background-color:var(--py-bg)}
@view-transition{navigation:auto}
.py-topbar{view-transition-name:py-topbar}.py-sidebar{view-transition-name:py-sidebar}.py-auth-hero{view-transition-name:py-auth-hero}
::view-transition{background-color:var(--py-bg)}
::view-transition-old(root),::view-transition-old(py-topbar),::view-transition-old(py-sidebar),::view-transition-old(py-auth-hero){display:none}
::view-transition-new(root){animation:var(--py-motion-page) var(--py-ease-page) both py-page-in}
@keyframes py-page-in{from{opacity:0}}
::view-transition-group(py-topbar),::view-transition-group(py-sidebar),::view-transition-group(py-auth-hero),::view-transition-new(py-topbar),::view-transition-new(py-sidebar),::view-transition-new(py-auth-hero){animation:none}
@media(prefers-reduced-motion:reduce){@view-transition{navigation:none}::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}}

/* Real POSYOU mark (shared surfaceui asset, drawn by BrandMarkSVG). Light bars show the mark itself like the public site; on dark bars the blue gradient falls under 3:1, so it sits on a white plate. The sign-in hero keeps its white plate in both themes because the card is blue. */
:root[data-theme=dark] .py-brand-mark{background:#fff}
@media(prefers-color-scheme:dark){:root:not([data-theme=light]):not([data-theme=dark]) .py-brand-mark{background:#fff}}
@media(forced-colors:active){.py-brand-mark{forced-color-adjust:none;background:#fff}}

/* Sign-in and sign-up pages: one quiet back link at the head of the form column (a real link: Tab reaches it, Enter follows it). 44px target, the arrow follows the reading direction. */
.py-auth-shell .py-auth-back{display:inline-flex;align-items:center;align-self:flex-start;gap:.45rem;inline-size:auto;min-block-size:2.75rem;margin:0 0 .75rem;margin-inline-start:-.65rem;padding-block:.5rem;padding-inline:.65rem .95rem;border-radius:999px;color:var(--py-muted);font-size:.875rem;font-weight:600;line-height:1.2;text-decoration:none;text-align:start}
.py-auth-shell .py-auth-back:hover{background:var(--py-soft);color:var(--py-text)}
.py-auth-shell .py-auth-back:focus-visible{outline:3px solid var(--py-focus);outline-offset:3px}
.py-auth-shell .py-main:has(>.py-auth-hero)>a.py-auth-back{inline-size:auto}
.py-auth-back-icon{inline-size:1.1rem;block-size:1.1rem;flex:none}
[dir=rtl] .py-auth-back-icon{transform:scaleX(-1)}
@media(forced-colors:active){.py-auth-shell .py-auth-back{border:1px solid CanvasText}}
