/* Approved kiosk home, 2026-09-14, re-composed the same afternoon on Chena's
   eyes (one bar above the hero, the art lower, the actions higher, the dock
   icons in their hues). The canonical pills and handlers remain; this file owns
   only the landing's composition and local illustrated skin. */
.k-home-brand, .k-home-brand-mark { display: contents; }
.k-dockbtn .k-home-dock-label, .k-dockbtn .k-home-globe { display: none; }

/* The waiver panel retains its original local landscape and quiet foreground.
   2026-09-18: the thank-you panel stands on the same landscape (it is the
   waiver's last page, and its paper is the waiver panel's paper), and the
   Explore Tours list stands straight on it with no sheet at all (Chena: "so
   you can still see partial the time of day background and it looks like
   it's part of that"). The screen list below is the one place that says
   which screens show it. */
body:is([data-screen^="renderer-"], [data-screen="success"], [data-screen="book-grid"]) { --k-waiver-art: url('../images/kiosk-landscape-20260915.webp'); }
body:is([data-screen^="renderer-"], [data-screen="success"], [data-screen="book-grid"])[data-tod="afternoon"] { --k-waiver-art: url('../images/kiosk-landscape-afternoon-20260915.webp'); }
body:is([data-screen^="renderer-"], [data-screen="success"], [data-screen="book-grid"])[data-tod="evening"] { --k-waiver-art: url('../images/kiosk-landscape-evening-20260915.webp'); }
body:is([data-screen^="renderer-"], [data-screen="success"], [data-screen="book-grid"])[data-tod="night"] { --k-waiver-art: url('../images/kiosk-landscape-night-20260915.webp'); }
body:is([data-screen^="renderer-"], [data-screen="success"], [data-screen="book-grid"]) .k-app { isolation: isolate; }
body:is([data-screen^="renderer-"], [data-screen="success"], [data-screen="book-grid"]) .k-app::before {
  content: ''; position: absolute; inset: 0; z-index: -1; pointer-events: none;
  background: var(--k-waiver-art) center top / auto 120% no-repeat;
}
html[data-ada-contrast="high"] body:is([data-screen^="renderer-"], [data-screen="success"], [data-screen="book-grid"]) .k-app::before { display: none; }

body[data-screen="landing"][data-tod] {
  --k-home-art: url('../images/kiosk-lake-morning-20260922-approved.webp');
  --k-home-floor: #fff4e9;
  --k-home-link: #075e9a;
  --k-home-primary-top: #128ed1;
  --k-home-primary-bottom: #085087;
  --k-home-primary-ink: #fff;
  --k-home-primary-edge: #149bdd;
  --k-home-quiet: #fff;
  --k-home-quiet-ink: #10253c;
  --k-home-quiet-sub: #415b76;
  --k-home-quiet-edge: #d2dce5;
  --k-home-shadow: rgba(21,44,72,.14);
  /* 2026-09-22 (Chena): white header lettering in daylight too. */
  --k-land-ink: #fff;
  --k-land-ink-soft: #fff;
  --k-land-hair: rgba(255,255,255,.28);
  --k-home-gutter: clamp(1.25rem, 5.7vw, 4.25rem);
  /* The lake supplies the texture beneath Core's glass. Blue for waiver and
     green for tours stay recognizable at every hour; dark buckets lift the
     tint enough to keep the existing dark labels readable. */
  --k-glass-rgb: 74,163,224; --k-glass-glow: 150,210,250; --k-glass-ink: #0b4d86; --k-glass-ink-press: #083c6a; --k-glass-deep: 9,58,100;
  --k-glass-lip: 0 1px 0 rgba(255,255,255,.45);
  /* A denser tint and deeper optical blur soften the lake into reflected
     light behind the labels. Reduced effects keeps its solid fallback. */
  --k-glass-alpha: .64; --k-glass-alpha-lite: .88;
  /* 2026-09-22 (Chena): a transparent blue tint separates white digits from
     the pale daytime sky. Evening and night keep their existing material. */
  --k-fc-rgb: 24,69,112; --k-fc-alpha: .26; --k-fc-alpha-lite: .58;
  --k-fc-ink: #fff; --k-fc-lip: 0 .125rem .375rem rgba(0,0,0,.5);
  --k-fc-rim: .92; --k-fc-shade: .30; --k-fc-seam: .19; --k-fc-liplight: .98;
  /* 2026-09-17 (Chena): Explore Tours is a GO GREEN, the colour that means go,
     with black ink like its neighbour. Same glass material, its own hue: blue
     for the waiver, green for the tours, so the pair still reads as one
     material in two colours. */
  --k-glass-quiet-rgb: 34,160,88; --k-glass-quiet-alpha: .62; --k-glass-quiet-alpha-lite: .76;
  /* 2026-09-24 (Chena: "make all text white, as well as the icons for all
     buttons. same for the sign waiver and explore tours"): the landing's own
     white (--k-land-ink, per bucket) on the clock numerals' dark lip. */
  --k-glass-quiet-ink: var(--k-land-ink); --k-glass-quiet-ink-press: var(--k-land-ink); --k-glass-quiet-lip: var(--k-fc-lip);
  background: var(--k-home-floor);
}
body[data-screen="landing"][data-tod][data-tod="afternoon"] {
  --k-home-art: url('../images/kiosk-lake-afternoon-20260922-approved.webp');
  --k-home-floor: #eef5f7;
  --k-glass-rgb: 63,163,211; --k-glass-glow: 138,214,244; --k-glass-ink: #0a4a70; --k-glass-ink-press: #083a58; --k-glass-deep: 8,52,76;
}
body[data-screen="landing"][data-tod][data-tod="evening"] {
  --k-home-art: url('../images/kiosk-lake-evening-20260922-approved.webp');
  --k-home-floor: #27223e;
  --k-home-link: #ffdda9;
  --k-home-primary-top: #fff2d7;
  --k-home-primary-bottom: #f5bc7b;
  --k-home-primary-ink: #3d260f;
  --k-home-primary-edge: #ffe2b9;
  --k-home-quiet: #3c334d;
  --k-home-quiet-ink: #fff5e7;
  --k-home-quiet-sub: #eee0d7;
  --k-home-quiet-edge: #817084;
  --k-home-shadow: rgba(9,5,20,.28);
  --k-land-ink: #fff5e7;
  --k-land-ink-soft: #f4e5df;
  --k-land-hair: rgba(255,236,216,.28);
  --k-glass-rgb: 156,218,246; --k-glass-glow: 211,242,255; --k-glass-ink: #0a3d58; --k-glass-ink-press: #062c40; --k-glass-deep: 8,52,76;
  --k-glass-lip: 0 1px 0 rgba(255,255,255,.35);
  --k-glass-alpha: .70; --k-glass-alpha-lite: .78;
  --k-fc-rgb: 255,255,255; --k-fc-alpha: .045; --k-fc-alpha-lite: .38;
  --k-fc-ink: #fff4e6; --k-fc-lip: 0 .125rem .375rem rgba(0,0,0,.5);
  --k-fc-rim: .5; --k-fc-shade: .3; --k-fc-seam: .3; --k-fc-liplight: .6;
  /* The tours pill is the same go green on the dark buckets, lifted to a pane
     the way the lit pill is a pane here; its ink is the landing's white. */
  --k-glass-quiet-rgb: 152,219,170; --k-glass-quiet-alpha: .68; --k-glass-quiet-alpha-lite: .80;
}
body[data-screen="landing"][data-tod][data-tod="night"] {
  --k-home-art: url('../images/kiosk-lake-night-20260922-approved.webp');
  --k-home-floor: #071329;
  --k-home-link: #adf3d5;
  --k-home-primary-top: #e2fff1;
  --k-home-primary-bottom: #91ddba;
  --k-home-primary-ink: #073124;
  --k-home-primary-edge: #bdffe1;
  --k-home-quiet: #10273b;
  --k-home-quiet-ink: #edfff6;
  --k-home-quiet-sub: #d2e8e6;
  --k-home-quiet-edge: #527282;
  --k-home-shadow: rgba(0,5,18,.32);
  --k-land-ink: #edfff6;
  --k-land-ink-soft: #daeaf1;
  --k-land-hair: rgba(216,250,238,.28);
  --k-glass-rgb: 156,218,246; --k-glass-glow: 211,242,255; --k-glass-ink: #0a3d58; --k-glass-ink-press: #062c40; --k-glass-deep: 8,52,76;
  --k-glass-lip: 0 1px 0 rgba(255,255,255,.35);
  --k-glass-alpha: .70; --k-glass-alpha-lite: .78;
  --k-fc-rgb: 255,255,255; --k-fc-alpha: .045; --k-fc-alpha-lite: .38;
  --k-fc-ink: #eafff6; --k-fc-lip: 0 .125rem .375rem rgba(0,0,0,.5);
  --k-fc-rim: .5; --k-fc-shade: .3; --k-fc-seam: .3; --k-fc-liplight: .6;
  /* The tours pill is the same go green on the dark buckets, lifted to a pane
     the way the lit pill is a pane here; its ink is the landing's white. */
  --k-glass-quiet-rgb: 152,219,170; --k-glass-quiet-alpha: .68; --k-glass-quiet-alpha-lite: .80;
}
body[data-screen="landing"][data-tod]::before,
body[data-screen="landing"][data-tod] .k-tod-fx,
body[data-screen="landing"][data-tod] .k-aurora-veil { display: none; }
body[data-screen="landing"][data-tod] .k-app {
  isolation: isolate;
  padding: calc(2.1rem + env(safe-area-inset-top, 0px))
    calc(var(--k-home-gutter) + env(safe-area-inset-right, 0px)) 0
    calc(var(--k-home-gutter) + env(safe-area-inset-left, 0px));
}
body[data-screen="landing"][data-tod] .k-app::before {
  content: ''; position: absolute; inset: 0; z-index: -1; pointer-events: none;
  background-image: var(--k-home-art);
  /* 2026-09-14 (Chena): the mountains sit lower, more sky above them. The art
     is drawn at its own proportion, 120% of the frame's height from the top
     edge, centered, the sides cropped rather than the peaks stretched; the
     lake fills the foreground and continues beyond the bottom edge. */
  background-position: center top; background-size: auto 120%; background-repeat: no-repeat;
}
/* A quiet upper veil protects cream lettering from the evening's bright horizon. */
body[data-screen="landing"][data-tod][data-tod="evening"] .k-app::after {
  content: ''; position: absolute; inset: 0; z-index: -1; pointer-events: none;
  /* 2026-09-17: the hero stack (welcome, logo, line, clock) runs to about 51%
     of the frame now, so the veil that protects cream lettering from the bright
     horizon reaches past it instead of ending at the old words' floor. */
  background: linear-gradient(180deg, rgba(27,20,53,.14), rgba(27,20,53,.5) 26%, rgba(27,20,53,.42) 44%, transparent 56%);
}
/* 2026-09-22 (Chena): smooth navy shading behind the white daytime header,
   fading into the landscape. This paints above the approved image and below
   the UI, with no texture or changes to the artwork. The existing high-
   contrast rule below removes both scene layers. */
body[data-screen="landing"]:is([data-tod="morning"],[data-tod="afternoon"]) .k-app::after {
  content: ''; position: absolute; inset: 0; z-index: -1; pointer-events: none;
  background: linear-gradient(180deg, rgba(12,40,69,.46) 0%, rgba(12,40,69,.44) 12%, rgba(12,40,69,.40) 30%, rgba(12,40,69,.32) 42%, rgba(12,40,69,.10) 55%, rgba(12,40,69,0) 64%);
}
body[data-screen="landing"][data-tod] .k-stage { max-width: 65rem; }
/* The status strip (the conditions) and the clock live on the landing only:
   the flow frame's band carries the brand alone. */
body:not([data-screen="landing"]) .k-status,
body:not([data-screen="landing"]) .k-fc { display: none; }
/* THE BAR HAS TWO ENDS (2026-09-17 second pass, Chena: the top left gets the
   full ChenaOS Activities logo, the right gets the Kp and weather). The clock
   left the bar for the hero, so the middle is empty on purpose and the page's
   one centre axis belongs to the welcome. */
body[data-screen="landing"][data-tod] .k-logo-wrap { display: flex; align-items: center; justify-content: space-between; min-height: 4.75rem; margin: 0; gap: 1rem; }
/* THE FULL MODULE LOGO AT THE LEFT (Chena, 2026-09-17 second pass, replacing
   that morning's compass-only window: "the top left gets the full chena os
   activities logo"). The window crops only the PNG's transparent border; the
   compass and the wordmark stay proportional, and the tap (Home) and the 2.5s
   hold (settings) are unchanged. */
body[data-screen="landing"][data-tod] .k-home-brand { display: flex; align-items: center; flex: 0 0 auto; }
body[data-screen="landing"][data-tod] .k-home-brand-mark { display: block; width: 15.625rem; height: 5.0625rem; overflow: hidden; flex: 0 0 auto; }
body[data-screen="landing"][data-tod] .k-logo { display: block; width: 16.9rem; max-width: none; margin: -.61rem 0 0 -.61rem; }
/* THE STRIP (2026-09-14, Chena: the top had no structure; 2026-09-17: the clock
   left it for the bar's center). At the right edge, Weather and Aurora tonight
   as two cells, each a two-row grid (a label line, a value line) so the labels
   sit on one line and the values on one baseline, a hairline between them, the
   strip's right edge on the stage's right edge. */
body[data-screen="landing"][data-tod] .k-status { display: flex; align-items: stretch; gap: .625rem; min-width: 0; flex: 0 1 auto; margin-left: auto; }
body[data-screen="landing"][data-tod] .k-cond-cell { display: grid; grid-template-rows: auto 1fr; align-items: end; justify-items: start; gap: .3rem; min-height: 0; flex: 0 1 auto; padding: .4rem 0; text-align: left; }
/* 2026-09-14 (Chena): the two action rows sit higher, at the foot of the scene,
   while the dock keeps its floor. The landing column ends 13.25rem above the
   bottom edge (the dock's 6rem plus the air Chena asked for), so the flexible
   sky band gives the difference back to the actions. */
/* 2026-09-17 (the pills are glass): the column rides 2rem higher still, so the
   primary's top curve sits on the tree line and the painting bends through
   the glass; the dock keeps its floor. */
body[data-screen="landing"][data-tod] #k-screen-landing { padding-bottom: calc(15.25rem + env(safe-area-inset-bottom, 0px)); }
body[data-screen="landing"][data-tod] .k-land-sky { min-height: 25rem; }
/* THE HERO, CENTERED (Chena, 2026-09-17 second pass: "make the welcome to chena
   thing centered justified. the order should be Welcome to (CHENA LOGO) Sign
   your waiver or explore tours. and then under that the clock"). One centre
   axis for the whole page: the four parts of the stack and the action pills
   below all hang off it. The Chena Hot Springs Resort logo IS the name, so the
   word "Chena." (.k-land-title-b) has nothing left to say and is not drawn. */
body[data-screen="landing"][data-tod] .k-land-words {
  position: relative; top: auto; bottom: auto; max-width: none; width: 100%;
  display: flex; flex-direction: column; align-items: center; text-align: center;
  padding-top: 1rem; padding-bottom: 2.5rem;
}
body[data-screen="landing"][data-tod] .k-land-title { align-items: center; text-shadow: none; }
/* 2026-09-17 (Chena: "remove the welcome to because that's not needed"): the
   stack opens on the logo, which rises with the line gone; the word "Chena."
   the logo replaced was already retired. */
body[data-screen="landing"][data-tod] .k-land-title-a,
body[data-screen="landing"][data-tod] .k-land-title-b { display: none; }
body[data-screen="landing"][data-tod] .k-land-logo { display: block; width: min(24rem, 62%); height: auto; margin: 0 auto; }
/* The instruction is the second voice now, not a caption under a caption
   (Chena: "make that bolder and bigger as well"). */
body[data-screen="landing"][data-tod] .k-land-greet { font-size: 1.875rem; font-weight: 700; line-height: 1.32; margin: 1.25rem auto 0; max-width: 40rem; }
/* The clock sits closer under the block, so logo, line and clock read as one
   object with the air below them (Chena: "scoot the clock up a little more"). */
body[data-screen="landing"][data-tod] .k-fc { margin-top: 1.125rem; }
/* 2026-09-18 (Chena: morning and afternoon need "that same sharp white glow
   border thing that evening and night has"). Daylight used to wear its own
   edge here, a cool grey-blue rim with warm sunlight reflections on the upper
   right, which is why the day tiles read as a different object from the night
   ones. That override is gone: all four buckets now read the clock include's
   ONE tile rule, the white rim hairline and the white inner glow. What
   daylight keeps is only what a pale sky demands: the lighter blur, the denser
   fill (the --k-fc-* tokens above), and a fine cool ring outside
   the white rim (--k-fc-ring, the include's own knob, 0 on the dark buckets)
   so a white edge has something to stand against.
   High contrast keeps its canonical solid face; lite mode still removes blur.
   2026-09-24: keyed to the clock's glass (.k-fc-glass), not the tile, so the
   dock's pills take the same daylight blur and ring. */
:where(html:not([data-ada-contrast="high"])) body[data-screen="landing"]:is([data-tod="morning"],[data-tod="afternoon"]) .k-fc-glass.chena-glass {
  --chena-glass-filter: blur(.1875rem) saturate(1.4) brightness(.99) contrast(1.04);
  --k-fc-ring: .30;
}
/* The existing vector scene stays intact for its other consumers. */
body[data-screen="landing"][data-tod] .k-scene { display: none; }
/* 2026-09-22: every landing sun/moon is painted into its lake image. The
   celestial disc and its one reflection now share the same crop and scale;
   separate rem/percent-positioned discs would drift or duplicate the light.
   This stays landing-only so the original scene's other consumers are intact. */
body[data-screen="landing"][data-tod] .k-disc { display: none; }
/* 2026-09-22 (Chena): both landing logos use the evening/night white
   silhouettes at every hour. High contrast uses solid black silhouettes. */
body[data-screen="landing"][data-tod] .k-logo { filter: brightness(0) invert(1) drop-shadow(0 8px 30px rgba(0,0,0,.25)); }
body[data-screen="landing"][data-tod] .k-land-logo { filter: brightness(0) invert(1) opacity(.94); }
:where(html:not([data-ada-contrast="high"])) body[data-screen="landing"]:is([data-tod="morning"],[data-tod="afternoon"]) :is(.k-logo,.k-land-logo) {
  filter: brightness(0) invert(1) drop-shadow(0 .0625rem .1875rem rgba(12,33,58,.55));
}
:where(html:not([data-ada-contrast="high"])) body[data-screen="landing"]:is([data-tod="morning"],[data-tod="afternoon"]) :is(.k-land-greet,.k-land-intro-title,.k-land-intro-line,.k-cond,.k-fc-ap) {
  text-shadow: 0 .0625rem .1875rem rgba(12,33,58,.62);
}
:where(html:not([data-ada-contrast="high"])) body[data-screen="landing"]:is([data-tod="morning"],[data-tod="afternoon"]) .k-fc-sep i {
  box-shadow: 0 .0625rem .1875rem rgba(12,33,58,.45);
}
html[data-ada-contrast="high"] body[data-screen="landing"][data-tod] .k-land-logo { filter: brightness(0); }
body[data-screen="landing"][data-tod] .k-acts { gap: 1.25rem; margin-top: .5rem; }
body[data-screen="landing"][data-tod] .k-acts-row { gap: 1rem; }
body[data-screen="landing"][data-tod] .k-btn.k-act { min-height: 7.25rem; padding: 1.2rem 2.25rem; gap: 1.6rem; }
body[data-screen="landing"][data-tod] .k-btn.k-act .k-act-ico { width: 3.75rem; height: 3.75rem; background: transparent; box-shadow: none; border-radius: 0; }
body[data-screen="landing"][data-tod] .k-act-ico svg { width: 3.25rem; height: 3.25rem; }
body[data-screen="landing"][data-tod] .k-act-body { gap: .45rem; }
body[data-screen="landing"][data-tod] .k-act-title { font-size: 1.95rem; line-height: 1.15; }
body[data-screen="landing"][data-tod] .k-act-sub { font-size: 1.18rem; line-height: 1.3; font-weight: 400; opacity: 1; }
body[data-screen="landing"][data-tod] .k-act-go { opacity: 1; width: 2rem; height: 2rem; }
body[data-screen="landing"][data-tod] .k-act-go svg { width: 2rem; height: 2rem; }
/* THE PILLS ARE GLASS (Chena, 2026-09-17: "think liquid glass, think how we
   have the pin pad for the time clock, those gorgeous translucent colored pin
   buttons"). The two rows wear Core's glass material (chena-glass.php, the
   PIN pad's recipe as tokens) through the chena-glass chena-glass--pill
   classes on the buttons; this sheet tunes the existing material tokens and
   geometry. A flat tint, so no side of a pill is darker than
   the other: what varies across it is the painting behind it. The press is
   the material's squish and well plus the kiosk's wash from the touch point,
   in the bucket's light. DUEL: the inline .k-btn (0,1,0) and the material's
   .chena-glass (0,1,0) both lose to (0,4,1) here; the inline .k-btn::after
   wash (0,1,1) loses to (0,4,2); the inline .k-act-quiet[data-f] .k-act-ico
   chip (0,3,0) loses to (0,5,1). */
body[data-screen="landing"][data-tod] .k-btn.k-act.chena-glass {
  --chena-glass-rgb: var(--k-glass-rgb); --chena-glass-glow: var(--k-glass-glow);
  --chena-glass-ink: var(--k-glass-ink); --chena-glass-ink-press: var(--k-glass-ink-press);
  --chena-glass-deep: var(--k-glass-deep); --chena-glass-lip: var(--k-glass-lip);
  --chena-glass-alpha: var(--k-glass-alpha); --chena-glass-alpha-lite: var(--k-glass-alpha-lite);
  --chena-glass-filter: blur(1rem) saturate(1.5) brightness(1.06);
  /* 2026-09-18 (Chena: "too thick of a white border around the button, reduce
     that"). What read as one thick white border was three lights stacked on
     the same edge: the rim at .76, a two pixel inner top glow at .90 and a
     three pixel inner bottom glow at .75. The rim is a hairline now, the top
     glow a one pixel highlight, the bottom glow a faint lift; the streak along
     the top curve opens a little softer. The glass body, the inner shade and
     the cast shadow are untouched, so the pill still reads raised and lit. */
  /* 2026-09-19 (Chena, a second time, on a screenshot: "remove the border
     around the buttons more. make it much thinner"). Yesterday's pass thinned
     each light but left all three standing on the one edge, and together they
     still drew a pale outline: the rim, the one pixel top highlight, and the
     streak, which STARTED at two thirds white right on the top curve. The rim
     is now a whisper, the top highlight and bottom lift barely there, and the
     streak opens softly, so the pill's edge is the glass itself. The body,
     the inner shade and the cast shadow are untouched. */
  --chena-glass-rim: rgba(255,255,255,.14);
  --chena-glass-specular-pill: linear-gradient(180deg,rgba(255,255,255,.34),rgba(255,255,255,.14) 22%,rgba(255,255,255,0) 72%);
  --chena-glass-specular-opacity: .95;
  --chena-glass-drop: inset 0 .0625rem .0625rem 0 rgba(255,255,255,.2), inset 0 -.0625rem .125rem -.0625rem rgba(255,255,255,.1), inset 0 -.5rem .625rem -.5rem rgba(7,39,59,.35), inset 0 0 .25rem .0625rem rgba(7,39,59,.12), 0 .125rem .375rem -.125rem rgba(7,28,46,.22), 0 .75rem 1.375rem -.5rem rgba(7,28,46,.29);
  --chena-glass-press-scale: .985;
  border-radius: 999rem;
}
body[data-screen="landing"][data-tod] .k-btn.k-act-quiet.chena-glass {
  --chena-glass-rgb: var(--k-glass-quiet-rgb); --chena-glass-alpha: var(--k-glass-quiet-alpha); --chena-glass-alpha-lite: var(--k-glass-quiet-alpha-lite);
  --chena-glass-ink: var(--k-glass-quiet-ink); --chena-glass-ink-press: var(--k-glass-quiet-ink-press); --chena-glass-lip: var(--k-glass-quiet-lip);
  /* DUEL: the material paints ink through .chena-glass (0,1,0), but the inline
     kiosk sheet's .k-btn.k-act-quiet (0,2,0) sets colour and beats it, so the
     token alone never reached the pill. This rule is (0,5,1) and says it. */
  color: var(--chena-glass-ink); text-shadow: var(--chena-glass-lip);
}
/* WHITE INK ON EVERY PILL (Chena, 2026-09-24: "make all text white, as well
   as the icons for all buttons. same for the sign waiver and explore tours";
   this replaces the 2026-09-17 black ink). The title, its helper line, the
   chevron and the icon all take it; the lip under it is the clock numerals'
   dark shadow (--k-fc-lip), so white reads on the lighter glass. */
body[data-screen="landing"][data-tod] .k-btn.k-act-primary.chena-glass {
  --chena-glass-ink: var(--k-land-ink); --chena-glass-ink-press: var(--k-land-ink); --chena-glass-lip: var(--k-fc-lip);
}
/* The parts ride above the specular (the material's ::before at z 1). */
body[data-screen="landing"][data-tod] .k-btn.k-act .k-act-ico,
body[data-screen="landing"][data-tod] .k-btn.k-act .k-act-body,
body[data-screen="landing"][data-tod] .k-btn.k-act .k-act-go { position: relative; z-index: 2; }
body[data-screen="landing"][data-tod] .k-btn.k-act .k-act-title,
body[data-screen="landing"][data-tod] .k-btn.k-act .k-act-sub,
body[data-screen="landing"][data-tod] .k-btn.k-act .k-act-go { color: inherit; opacity: 1; }
/* The icons are the ink too (2026-09-24; the per-feature hues went with it). */
body[data-screen="landing"][data-tod] .k-btn.k-act .k-act-ico { color: inherit; background: transparent; box-shadow: none; }
/* A glyph takes the same lip as the words beside it (an SVG has no text-shadow). */
body[data-screen="landing"][data-tod] :is(.k-btn.k-act .k-act-ico, .k-btn.k-act .k-act-go, .k-dockbtn.chena-glass) svg { filter: drop-shadow(var(--k-fc-lip)); }
html[data-ada-contrast="high"] body[data-screen="landing"][data-tod] :is(.k-btn.k-act .k-act-ico, .k-btn.k-act .k-act-go, .k-dockbtn.chena-glass) svg { filter: none; }
/* The bloom glows in the bucket's light; the label takes the deep ink as it
   blooms. 2026-09-18: the bloom is THE PRESS's one rule in the kiosk sheet (a
   circle from the touch point, scale and opacity); this pill only names its
   light, the same strengths the old full-face gradient carried. */
body[data-screen="landing"][data-tod] .k-btn.k-act.chena-glass {
  --kp-glow: var(--chena-glass-glow); --kp-glow-a: .92; --kp-glow-b: .42;
}
/* The two forecast cells: bare text in the strip, on the clock's two rows; all
   detail lives behind the tap. */
body[data-screen="landing"][data-tod] .k-cond {
  display: flex; align-items: stretch; width: auto; flex: 0 1 auto; min-width: 0;
  margin: 0; border: 0; padding: 0; gap: .625rem;
}
body[data-screen="landing"][data-tod] .k-cond.is-empty,
body[data-screen="landing"][data-tod] .k-cond-cell.is-empty { display: none; }
body[data-screen="landing"][data-tod] .k-cond.is-one .k-cond-div { display: none; }
body[data-screen="landing"][data-tod] .k-cond-div { margin: .5rem 0; opacity: .55; width: 1px; flex: 0 0 1px; }
body[data-screen="landing"][data-tod] .k-cond-div + .k-cond-cell { padding: .4rem 0; }
body[data-screen="landing"][data-tod] .k-cond-label { color: var(--k-land-ink-soft); font-size: .90625rem; font-weight: 500; letter-spacing: 0; text-transform: none; line-height: 1.3; white-space: normal; align-self: start; }
body[data-screen="landing"][data-tod] .k-cond-label svg { flex: 0 0 auto; width: .85rem; height: .85rem; }
body[data-screen="landing"][data-tod] .k-cond-value { display: flex; align-items: center; flex-wrap: nowrap; gap: .55rem; }
body[data-screen="landing"][data-tod] .k-cond-icon,
body[data-screen="landing"][data-tod] .k-cond-icon svg { width: 1.6rem; height: 1.6rem; }
body[data-screen="landing"][data-tod] .k-cond-big { font-size: 1.6rem; font-weight: 600; line-height: 1; white-space: nowrap; }
body[data-screen="landing"][data-tod] .k-cond-big-sm { font-size: 1.6rem; line-height: 1; white-space: nowrap; }
body[data-screen="landing"][data-tod] .k-cond-spark { filter: none; color: #079f8f; }
body[data-screen="landing"][data-tod][data-tod="evening"] .k-cond-spark,
body[data-screen="landing"][data-tod][data-tod="night"] .k-cond-spark { color: #80e2c3; }
body[data-screen="landing"][data-tod] .k-dock { position: absolute; left: var(--k-home-gutter); right: var(--k-home-gutter); bottom: calc(2rem + env(safe-area-inset-bottom,0px)); gap: 1.5rem; max-width: 65rem; margin-inline: auto; }
body[data-screen="landing"][data-tod] .k-dock-l { flex: 2 1 0; gap: 1.5rem; min-width: 0; }
body[data-screen="landing"][data-tod] .k-dock-r { flex: 1 1 0; min-width: 0; }
body[data-screen="landing"][data-tod] .k-dock-gear,
body[data-screen="landing"][data-tod] #k-lang-flag { display: none; }
/* THE VERSION (2026-09-18, Chena: "kiosk lost the version number... small ghost
   text that is under the row of accessibility buttons, centered"). This sheet
   hid it on 2026-09-14 when the dock became a row of three pills: as a flex
   item it would have stood between them. It is the dock's child still, but out
   of the row: centered under it, inside the 2rem the dock keeps above the
   floor. The ghost ink per bucket is the inline sheet's (.k-version-stamp).
   DUEL: the inline sheet's .k-dock-stamp (0,1,0) makes it a flex item and
   .k-version-stamp (0,1,0) gives it a 32px top margin; this is (0,3,1) and the
   last sheet on the page. */
body[data-screen="landing"][data-tod] .k-dock-stamp {
  display: block; position: absolute; left: 0; right: 0; top: calc(100% + .5rem);
  flex: none; margin: 0; text-align: center; line-height: 1;
  text-indent: .12em; /* the tracking's trailing space, given back so the INK is what centers */
  /* 2026-09-19 (Chena, off the real iPad: "the one thing that's not there is the
     ghost version number on the home page"). It WAS there. The inline sheet's
     day ink is a mid grey at 55 percent, made for pale paper; on the lake's
     grey blue water it has no contrast at all (at 4x it is barely a smudge, on
     the iPad it is nothing), while the evening's white ghost held, which is why
     the evening picture passed. The ghost is now the landing's own deep ink at
     a little over half strength with a light lip for the ripples, a touch
     larger and heavier, and white on the dark buckets: still quiet, but there.
     DUEL: .k-version-stamp (0,1,0) and its evening rule (0,3,1) are earlier, in
     the inline sheet; these are (0,3,1), later. */
  font-size: .75rem; font-weight: 600;
  color: rgba(16,37,60,.62); text-shadow: 0 1px 0 rgba(255,255,255,.45);
}
body[data-screen="landing"][data-tod="evening"] .k-dock-stamp,
body[data-screen="landing"][data-tod="night"] .k-dock-stamp { color: rgba(255,255,255,.62); text-shadow: 0 1px 1px rgba(0,0,0,.4); }
html[data-ada-contrast="high"] body[data-screen="landing"][data-tod] .k-dock-stamp { color: #000; text-shadow: none; }
html[data-ada-contrast="high"] body[data-screen="landing"][data-tod="evening"] .k-dock-stamp,
html[data-ada-contrast="high"] body[data-screen="landing"][data-tod="night"] .k-dock-stamp { color: #fff; }
/* THE DOCK IS THE CLOCK'S GLASS (2026-09-24, Chena: the three buttons "out of
   the same material the flip clock is"). Each pill wears .chena-glass
   .chena-glass--pill .k-fc-glass, the tiles' own classes (kiosk-clock.php,
   chact_fc_glass_css), so the face, rim, inner glow, streak and ink are the
   clock's and the knobs are the --k-fc-* above. This rule is only the pill's
   geometry and its press depth, the action pills' .985; the white and dark
   faces it used to paint are gone (they out-ranked the material). */
body[data-screen="landing"][data-tod] .k-dockbtn {
  width: 100%; min-width: 0; height: auto; min-height: 4rem; padding: .8rem 1rem; border-radius: 999rem;
  gap: .8rem;
  border-width: 1px; /* 2026-09-19 (Chena: the borders much thinner): the inline sheet's 2px ring is a hairline on the landing, one edge weight with the action pills */
  --chena-glass-press-scale: .985;
}
/* The parts ride above the material's streak (its ::before at z 1). */
body[data-screen="landing"][data-tod] .k-dockbtn.chena-glass > * { position: relative; z-index: 2; }
body[data-screen="landing"][data-tod] .k-dockbtn svg { flex: 0 0 auto; width: 1.85rem; height: 1.85rem; }
/* 2026-09-24 (Chena): the dock icons are white with their labels, the pill's
   ink (the clock's white); the 2026-09-14 per-icon hues went. */
body[data-screen="landing"][data-tod] .k-dockbtn .k-home-globe { display: block; }
body[data-screen="landing"][data-tod] .k-dockbtn .k-home-dock-label { display: block; font-size: 1rem; line-height: 1.2; overflow-wrap: anywhere; }
/* 2026-09-15 (Chena: the picker looks squished): the card hugs its five cells,
   each sized to its own label at the kiosk floor with 1rem of air a side, so
   the lit pill has room around its word and no cell touches the next. An
   explicit width keeps an absolutely positioned card from shrinking to its
   narrow dock column. DUEL: the inline sheet's .k-set-tod .k-hint (0,2,0) and
   .k-hint (0,1,0) lose to this (0,5,0); .k-tod-pop (0,1,0) loses to (0,3,1). */
body[data-screen="landing"][data-tod] .k-tod-pop { width: max-content; max-width: calc(100vw - 2 * var(--k-home-gutter)); padding: 1.125rem 1.125rem 1rem; }
body[data-screen="landing"][data-tod] .k-tod-pop-label { font-size: .90625rem; letter-spacing: .12em; margin: 0 0 .625rem; }
body[data-screen="landing"][data-tod] .k-tod-pop .k-set-tod .k-hint { flex: 1 1 auto; min-height: 3.25rem; font-size: .90625rem; letter-spacing: .06em; padding: .75rem 1rem; }
body[data-screen="landing"][data-tod] :is(.k-act,.k-cond-cell,.k-dockbtn):focus-visible { outline: .2rem solid var(--k-home-link); outline-offset: .25rem; }
/* Three enabled features stay fully visible without shrinking their labels. */
body[data-screen="landing"][data-tod] .k-acts[data-count="3"] .k-btn.k-act-quiet { padding: 1rem 1.25rem; gap: .75rem; }
body[data-screen="landing"][data-tod] .k-acts[data-count="3"] .k-act-quiet .k-act-ico { width: 2.5rem; }
body[data-screen="landing"][data-tod] .k-acts[data-count="3"] .k-act-quiet .k-act-ico svg { width: 2.5rem; height: 2.5rem; }
body[data-screen="landing"][data-tod] .k-acts[data-count="3"] .k-act-quiet .k-act-title { font-size: 1.5rem; }
body[data-screen="landing"][data-tod] .k-acts[data-count="3"] .k-act-quiet .k-act-sub { font-size: 1rem; }
/* THE INTRO STAGE (2026-09-28, Chena: "the first thing you're going to have to do is
   select the language"). One landing, two stages on body[data-stage]. On 'lang' the
   twelve language tiles (#k-langs, chact_kiosk_lang_tiles) stand where the action pills
   stand, the hero reads logo, clock, then the intro block (Choose your language over its
   guiding line; the acts stage's instruction is not drawn), and the dock's three pills
   are drawn as on the acts stage (2026-09-28 afternoon, Chena: "those three pills
   appearance accessibility and the language are going to be on the main home screen");
   on 'acts' the tiles and the intro block are not drawn and the landing is as it was.
   A tile is the dock pill itself (.k-dockbtn, the clock's glass, white ink, the .985 press
   above), holding the language's flag sphere and its native name: three rows of four on
   the iPad, three per row on a phone. DUEL: the landing's .k-dockbtn svg (0,3,1) sizes a
   dock glyph at 1.85rem; the flag's own svg is (0,4,1) here and fills its sphere. The grid
   rule below is (0,3,1) and later than the stage rules would be at that weight, so each
   stage rule carries [data-tod] too, (0,4,1). */
body[data-screen="landing"][data-stage="lang"][data-tod] .k-acts,
body[data-screen="landing"][data-stage="lang"][data-tod] .k-land-greet { display: none; }
body[data-screen="landing"][data-stage="acts"][data-tod] .k-langs,
body[data-screen="landing"][data-stage="acts"][data-tod] .k-land-intro { display: none; }
/* The language stage is taller than the acts stage (three rows of tiles under the intro
   block), and the 15.25rem the screen keeps under the pills ran the document 24px past the
   iPad's frame, which dropped the dock and its ghost below the fold. This stage keeps 11rem
   (a German guiding line wraps to two lines and still fits with room): the tiles end well
   above the dock, and the dock sits where the acts stage draws it. */
body[data-screen="landing"][data-stage="lang"][data-tod] #k-screen-landing { padding-bottom: calc(11rem + env(safe-area-inset-bottom, 0px)); }
body[data-screen="landing"][data-tod] .k-langs {
  position: relative; z-index: 2; width: 100%; margin-top: .5rem;
  display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1rem;   /* 2026-09-28: twelve languages, three rows of four (Chena: "a grid of three by four") */
}
/* The flag stands over the name (a row of five leaves no room beside a 3rem sphere for
   Français or Italiano; a name broken mid-word was rendered and rejected). */
body[data-screen="landing"][data-tod] .k-dockbtn.k-lang-tile {
  flex-direction: column; justify-content: center; gap: .5rem;
  min-height: 6.5rem; padding: .75rem .35rem; border-radius: 1.75rem;
  text-align: center; font: inherit; color: var(--k-fc-ink);
}
body[data-screen="landing"][data-tod] .k-lang-tile .k-flag { width: 2.75rem; height: 2.75rem; flex: 0 0 auto; }
body[data-screen="landing"][data-tod] .k-lang-tile .k-flag svg { width: 100%; height: 100%; }
body[data-screen="landing"][data-tod] .k-lang-tile .k-lang-tile-n { display: block; max-width: 100%; font-size: 1rem; font-weight: 700; line-height: 1.15; white-space: nowrap; overflow: hidden; }
body[data-screen="landing"][data-tod] .k-lang-tile:focus-visible { outline: .2rem solid var(--k-home-link); outline-offset: .25rem; }
/* THE INTRO BLOCK (2026-09-28, Chena: "logo, clock and then the choose your language...
   much larger... something like sign waiver and explore tours or some things so that way
   people know what's next"). Under the clock on the language stage: the headline Choose
   your language at 2.75rem, the guiding line (the surface's own instruction, the same key
   the acts stage reads under the logo) at 1.375rem, both the landing's white, both on the
   page's one axis, no box. The day buckets give them the header's dark lip through the
   :is() list above; evening and night read white on the dark sky as the greet does.
   DUEL: the hero's own rules are (0,3,1) on .k-land-greet; these are (0,3,1) on their own
   classes and later, and nothing they set is contested. */
body[data-screen="landing"][data-tod] .k-land-intro { display: flex; flex-direction: column; align-items: center; gap: .5rem; width: 100%; max-width: 40rem; margin: 1.75rem auto 0; text-align: center; }
body[data-screen="landing"][data-tod] .k-land-intro-title { font-size: 2.75rem; font-weight: 800; line-height: 1.1; letter-spacing: -.01em; margin: 0; color: var(--k-land-ink); }
body[data-screen="landing"][data-tod] .k-land-intro-line { font-size: 1.375rem; font-weight: 600; line-height: 1.3; margin: 0; color: var(--k-land-ink); }
@media (max-width: 650px) {
  body[data-screen="landing"][data-tod] .k-land-intro { margin-top: 1.25rem; }
  body[data-screen="landing"][data-tod] .k-land-intro-title { font-size: 2rem; }
  body[data-screen="landing"][data-tod] .k-land-intro-line { font-size: 1.125rem; }
  body[data-screen="landing"][data-tod] .k-langs { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .5rem; }
  body[data-screen="landing"][data-tod] .k-dockbtn.k-lang-tile { min-height: 5.75rem; padding: .625rem .25rem; gap: .35rem; }
  body[data-screen="landing"][data-tod] .k-lang-tile .k-flag { width: 2.5rem; height: 2.5rem; }
  body[data-screen="landing"][data-tod] .k-lang-tile .k-lang-tile-n { font-size: .875rem; }
}
/* Large-text mode grows content naturally; the dock follows the document floor. */
html[data-ada-text="large"] body[data-screen="landing"][data-tod] .k-land-sky { min-height: 25rem; }
html[data-ada-text="large"] body[data-screen="landing"][data-tod] .k-disc { display: none; }
html[data-ada-contrast="high"] body[data-screen="landing"][data-tod] { --k-home-floor: #fff; --k-land-ink: #000; --k-land-ink-soft: #000; --k-land-hair: #000; --k-home-link: #000; --k-home-quiet: #fff; --k-home-quiet-ink: #000; --k-home-quiet-sub: #000; --k-home-quiet-edge: #000; }
html[data-ada-contrast="high"] body[data-screen="landing"][data-tod] .k-app::before,
html[data-ada-contrast="high"] body[data-screen="landing"][data-tod] .k-app::after { display: none; }
html[data-ada-contrast="high"] body[data-screen="landing"][data-tod] .k-app { background: #fff; }
html[data-ada-contrast="high"] body[data-screen="landing"][data-tod] .k-logo { filter: brightness(0); }
html[data-ada-contrast="high"] body[data-screen="landing"][data-tod] .k-btn.k-act.chena-glass { -webkit-backdrop-filter: none; backdrop-filter: none; text-shadow: none; box-shadow: none; }
html[data-ada-contrast="high"] body[data-screen="landing"][data-tod] .k-btn.k-act-primary { background: #000; border-color: #000; color: #fff; }
html[data-ada-contrast="high"] body[data-screen="landing"][data-tod] .k-btn.k-act-quiet { background: #fff; border-color: #000; color: #000; }
html[data-ada-contrast="high"] body[data-screen="landing"][data-tod] .k-act-sub { opacity: 1; }
html[data-ada-contrast="high"] body[data-screen="landing"][data-tod] .k-btn.k-act .k-act-ico { background: transparent; color: inherit; }
html[data-ada-contrast="high"] body[data-screen="landing"][data-tod] .k-cond-spark { color: #000; }
@media (max-width: 650px) {
  body[data-screen="landing"][data-tod] .k-app { padding-top: calc(1.5rem + env(safe-area-inset-top,0px)); }
  body[data-screen="landing"][data-tod] .k-home-brand-mark { width: 3.3125rem; height: 3.3125rem; }
  body[data-screen="landing"][data-tod] .k-logo { width: 11rem; margin: -.4rem 0 0 -.4rem; }
  body[data-screen="landing"][data-tod] .k-logo-wrap { grid-template-columns: auto 1fr; gap: 1rem; }
  body[data-screen="landing"][data-tod] .k-fc { justify-self: end; --fc-h: 3.75rem; }
  body[data-screen="landing"][data-tod] .k-status { grid-column: 1 / -1; justify-self: stretch; gap: .8rem; }
  body[data-screen="landing"][data-tod] .k-cond { gap: .8rem; }
  body[data-screen="landing"][data-tod] .k-land-title-b { font-size: clamp(3rem, 10.8vw, 4.5rem); }
  body[data-screen="landing"][data-tod] .k-land-title-a { font-size: 1.5rem; }
  body[data-screen="landing"][data-tod] .k-land-words { padding-top: 2rem; }
  body[data-screen="landing"][data-tod] .k-disc { display: none; }
  body[data-screen="landing"][data-tod] .k-land-sky { min-height: 24rem; }
  body[data-screen="landing"][data-tod] .k-land-greet { font-size: 1.25rem; max-width: 25rem; }
  body[data-screen="landing"][data-tod] .k-btn.k-act { min-height: 6.5rem; padding: 1rem 1.35rem; gap: 1rem; }
  body[data-screen="landing"][data-tod] .k-act-title { font-size: 1.5rem; }
  body[data-screen="landing"][data-tod] .k-act-sub { font-size: 1rem; }
  body[data-screen="landing"][data-tod] .k-act-ico, body[data-screen="landing"][data-tod] .k-act-ico svg { width: 2.5rem; height: 2.5rem; }
  body[data-screen="landing"][data-tod] .k-acts-row { grid-auto-flow: row; }
  body[data-screen="landing"][data-tod] .k-dock, body[data-screen="landing"][data-tod] .k-dock-l { gap: .5rem; }
  body[data-screen="landing"][data-tod] .k-dockbtn { flex-direction: column; gap: .35rem; padding: .75rem .3rem; min-height: 4.5rem; }
  body[data-screen="landing"][data-tod] .k-dockbtn .k-home-dock-label { font-size: .875rem; }
}
/* The symbol leaves room for larger forecast text in the header. */
@media (max-width: 1000px) {
  html[data-ada-text="large"] body[data-screen="landing"][data-tod] .k-home-brand-mark { width: 3.3125rem; height: 3.3125rem; }
  html[data-ada-text="large"] body[data-screen="landing"][data-tod] .k-logo { width: 11rem; margin: -.4rem 0 0 -.4rem; }
}
/* At enlarged text sizes, the welcome and clock can wrap without overlapping. */
@media (max-width: 800px) {
  html[data-ada-text="large"] body[data-screen="landing"][data-tod] .k-logo-wrap { grid-template-columns: auto 1fr; }
  html[data-ada-text="large"] body[data-screen="landing"][data-tod] .k-fc { justify-self: end; }
  html[data-ada-text="large"] body[data-screen="landing"][data-tod] .k-status { grid-column: 1 / -1; justify-self: stretch; }
}
@media (max-width: 380px) {
  body[data-screen="landing"][data-tod] .k-disc { display: none; }
}
