/* Prime Creation // Platform Adapter v17 environment + experience primitives only
   PrimePlatformAdapter measures the session and publishes variables/states.
   PrimeViewportAuthority owns outer geometry. PrimeAdaptiveAuthority and page
   modules own composition. No page-specific layout lives here. */

:root{
  --prime-platform-vw:100vw;
  --prime-platform-vh:100dvh;
  --prime-platform-usable-vw:100vw;
  --prime-platform-usable-vh:100dvh;
  --prime-platform-layout-vw:100vw;
  --prime-platform-layout-vh:100dvh;
  --prime-platform-visual-vw:100vw;
  --prime-platform-visual-vh:100dvh;
  --prime-platform-dvh:100dvh;
  --prime-platform-svh:100svh;
  --prime-platform-lvh:100lvh;
  --prime-platform-page-width:100vw;
  --prime-platform-page-height:100dvh;
  --prime-platform-vv-offset-x:0px;
  --prime-platform-vv-offset-y:0px;
  --prime-platform-vv-scale:1;
  --prime-platform-dpr:1;
  --prime-platform-text-scale:1;
  --prime-platform-keyboard-height:0px;
  --prime-platform-keyboard-visible:0;
  --prime-platform-browser-ui-top:0px;
  --prime-platform-browser-ui-bottom:0px;
  --prime-platform-control-min:40px;
  --prime-platform-touch-target-min:44px;
  --prime-platform-scrollbar:10px;
  --prime-platform-safe-top:env(safe-area-inset-top,0px);
  --prime-platform-safe-right:env(safe-area-inset-right,0px);
  --prime-platform-safe-bottom:env(safe-area-inset-bottom,0px);
  --prime-platform-safe-left:env(safe-area-inset-left,0px);
  --prime-platform-safe-max-top:env(safe-area-max-inset-top,0px);
  --prime-platform-safe-max-right:env(safe-area-max-inset-right,0px);
  --prime-platform-safe-max-bottom:env(safe-area-max-inset-bottom,0px);
  --prime-platform-safe-max-left:env(safe-area-max-inset-left,0px);
  --prime-platform-titlebar-x:env(titlebar-area-x,0px);
  --prime-platform-titlebar-y:env(titlebar-area-y,0px);
  --prime-platform-titlebar-width:env(titlebar-area-width,0px);
  --prime-platform-titlebar-height:env(titlebar-area-height,0px);
  --prime-platform-segment-count:1;
  --prime-platform-hinge-x:0px;
  --prime-platform-hinge-y:0px;
  --prime-platform-hinge-width:0px;
  --prime-platform-hinge-height:0px;
  --prime-platform-motion-factor:1;
  --prime-platform-effects-scale:1;
  --prime-platform-refresh-hz:60;
  --prime-platform-frame-budget:16.67ms;
  --prime-platform-spatial-hz:30;
  --prime-platform-image-max-width:1280px;
  --prime-platform-image-quality:78;
  --prime-platform-contrast-factor:1;
  --prime-platform-transparency-factor:1;
  --prime-platform-content-top:max(var(--prime-platform-safe-top),var(--prime-platform-titlebar-height));
  --prime-platform-content-right:var(--prime-platform-safe-right);
  --prime-platform-content-bottom:max(var(--prime-platform-safe-bottom),var(--prime-platform-keyboard-height));
  --prime-platform-content-left:var(--prime-platform-safe-left)
}

html[data-prime-active-input="touch"]{--prime-platform-scrollbar:0px}
html[data-prime-active-input="mouse"],html[data-prime-active-input="keyboard"],html[data-prime-active-input="pen"]{--prime-platform-scrollbar:10px}
html.prime-platform-desktop{scrollbar-gutter:stable}
html.prime-platform-windows,html.prime-platform-linux{text-rendering:optimizeLegibility;-webkit-font-smoothing:auto}
html.prime-platform-android,html.prime-platform-ios{-webkit-text-size-adjust:100%;text-size-adjust:100%}
[data-prime-environment-probe] [data-prime-probe="text-scale"]{width:100px}

/* Active-input ergonomics. Hybrid devices can switch profiles without a reload. */
html[data-prime-platform-adapter] :where(button,[role="button"],input,select,textarea){min-block-size:var(--prime-platform-control-min)}
html[data-prime-active-input="touch"] :where(button,[role="button"],a,input,select,textarea){touch-action:manipulation}
html[data-prime-last-input="keyboard"] :where(button,a,input,select,textarea,[tabindex]):focus-visible{outline:2px solid currentColor;outline-offset:3px}

html :where([data-prime-local-scroll="true"],[data-prime-child-scroll],[data-prime-adapter-local-scroll]){overscroll-behavior:contain}
html.prime-platform-desktop :where([data-prime-local-scroll="true"],[data-prime-child-scroll],[data-prime-adapter-local-scroll]){scrollbar-gutter:stable}
html.prime-platform-touch :where([data-prime-local-scroll="true"],[data-prime-child-scroll],[data-prime-adapter-local-scroll]){-webkit-overflow-scrolling:touch}

html[data-prime-virtual-keyboard="open"]{--prime-platform-keyboard-visible:1}
html[data-prime-virtual-keyboard="closed"]{--prime-platform-keyboard-visible:0}

/* Opt-in environment primitives. Modules choose whether to consume them. */
[data-prime-adapter-safe-area]{padding-block-start:max(var(--prime-platform-safe-top),var(--prime-platform-titlebar-height));padding-inline-end:var(--prime-platform-safe-right);padding-block-end:max(var(--prime-platform-safe-bottom),var(--prime-platform-keyboard-height));padding-inline-start:var(--prime-platform-safe-left)}
[data-prime-adapter-fill]{inline-size:min(100%,var(--prime-platform-usable-vw));min-block-size:min(100%,var(--prime-platform-usable-vh))}
[data-prime-adapter-local-scroll]{max-block-size:var(--prime-platform-usable-vh);overflow:auto}
[data-prime-adapter-hinge-safe]{--prime-hinge-safe-x:var(--prime-platform-hinge-width);--prime-hinge-safe-y:var(--prime-platform-hinge-height)}
html[data-prime-platform-adapter] body.prime-v2 #main[data-app-shell]>.app-window.is-prime-viewport-active :is(img,video,canvas,svg,iframe){max-inline-size:100%;max-block-size:100%}

/* Descriptive capability states only. */
html[data-prime-device-posture="folded"]{--prime-platform-fold-aware:1}
html:not([data-prime-device-posture="folded"]){--prime-platform-fold-aware:0}
html[data-prime-viewport-segments]:not([data-prime-viewport-segments="1"]){--prime-platform-segmented:1}
html[data-prime-viewport-segments="1"]{--prime-platform-segmented:0}
html[data-prime-data-mode="save"] body.prime-v2 #main>.ambient,html[data-prime-data-mode="offline"] body.prime-v2 #main>.ambient{filter:none!important}

/* Low-effect sessions retain function while eliminating expensive glass work. */
html[data-prime-effects-tier="low"]{--prime-platform-transparency-factor:.25}
html[data-prime-effects-tier="medium"]{--prime-platform-transparency-factor:.72}
html[data-prime-effects-tier="high"]{--prime-platform-transparency-factor:1}

@media(hover:none) and (pointer:coarse){:where(button,[role="button"],a,input,select,textarea){touch-action:manipulation}}
@media(prefers-reduced-motion:reduce){:root{--prime-platform-motion-factor:0}}
@media(prefers-reduced-transparency:reduce){:root{--prime-platform-transparency-factor:0}html[data-prime-platform-adapter] body.prime-v2 :where(.app-dock,.prime-pill-shell,dialog){backdrop-filter:none!important;-webkit-backdrop-filter:none!important}}
@media(prefers-contrast:more){:root{--prime-platform-contrast-factor:1.2}:where(button,a,input,select,textarea,[role="button"]){outline-offset:2px}}
@media(forced-colors:active){:root{--prime-platform-contrast-factor:1.35}:where(button,a,input,select,textarea,[role="button"]){forced-color-adjust:auto;border-color:ButtonText!important}}
