/* Line 31752 (luma_store_concierge_container, App\Support\Stage\LumaConciergeContainer): the store concierge's one container as
   Luma's on the NetShow home. sheet.css and host.css draw it as on /shop/sunray and /shop/lorentz; this layer puts it in her
   place in NetShow's own tokens (public/css/ns-tokens.css, light and dark): from 900 px the left rail (her face at its top, her
   name, her conversation, the voice bar, the input), under 900 px a band at the foot of the screen (her face, her name and live
   line, the voice bar's buttons, the open button) that opens the whole container over the page. Every rule is scoped to her
   aside (aside.ns-fp.sc-house), so a store page never reads one of them. */

aside.ns-fp.sc-house {
    --sc-bg: var(--ns-surface, #fff);
    --sc-surface: var(--ns-card, #fff);
    --sc-surface-raised: var(--ns-card, #fff);
    --sc-suggest-bg: var(--ns-surface, #fff);
    --sc-ink: var(--ns-text, #202124);
    --sc-ink-strong: var(--ns-text, #202124);
    --sc-muted: var(--ns-text-2, #5f6368);
    --sc-muted-2: var(--ns-text-2, #5f6368);
    --sc-hairline: var(--ns-border, #dadce0);
    --sc-border: var(--ns-border, #dadce0);
    --sc-border-input: var(--ns-border, #dadce0);
    --sc-tile: var(--ns-surface-2, #f1f3f4);
    --sc-olive: var(--nsfp-accent, #1a73e8);
    --sc-olive-btn: var(--nsfp-accent, #1a73e8);
    --sc-forest: var(--nsfp-accent, #1a73e8);
    --sc-sage: color-mix(in srgb, var(--nsfp-accent, #1a73e8) 7%, var(--ns-surface, #fff));
    --sc-sage-border: color-mix(in srgb, var(--nsfp-accent, #1a73e8) 22%, var(--ns-surface, #fff));
    --sc-sage-ink: var(--ns-text-2, #5f6368);
    --sc-wave: var(--nsfp-accent, #1a73e8);
    --sc-send-off: var(--ns-surface-2, #f1f3f4);
    --sc-send-off-ink: var(--ns-text-2, #5f6368);
    --sc-bubble: color-mix(in srgb, var(--nsfp-accent, #1a73e8) 10%, var(--ns-card, #fff)); /* the visitor's turns stand out from the grey rail */
    --sc-sparkle: var(--nsfp-accent, #1a73e8);
    --sc-on-dark: #fff;
    --sc-on-dark-2: #fff;
    --sc-serif: var(--ns-font, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif);
    --sc-sans: var(--ns-font, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif);
    --nsfp-face: 148px;
    gap: 0;
    padding: 0;
}
aside.ns-fp.sc-house .sc-sheet {
    --sc-sh-muted: var(--ns-text-2, #5f6368);
    --sc-sh-meta: var(--ns-text-2, #5f6368);
    --sc-sh-icon: var(--ns-text, #202124);
    --sc-sh-arrow: var(--ns-text-2, #5f6368);
    --sc-sh-suggest-border: var(--ns-border, #dadce0);
    --sc-sh-suggest-active: var(--ns-surface-2, #f1f3f4);
    --sc-sh-arch: var(--ns-border, #dadce0);
    --sc-sh-label-tile: var(--ns-border, #dadce0);
    --sc-sh-dock-line: var(--ns-border, #dadce0);
    --sc-sh-fold-line: var(--ns-border, #dadce0);
    --sc-sh-dots: var(--ns-text-2, #5f6368);
    --sc-sh-placeholder: var(--ns-text-2, #5f6368);
    --sc-sh-input-ink: var(--ns-text, #202124);
    --sc-sh-focus: var(--nsfp-accent, #1a73e8);
}
aside.ns-fp.sc-house .sc-voicebar {
    --sc-vb-btn: var(--ns-text-2, #5f6368);
    --sc-vb-hover: color-mix(in srgb, var(--nsfp-accent, #1a73e8) 12%, transparent);
}

/* the store's sheet, in her aside: never fixed over the page, never slid away (it is always open in her place) */
aside.ns-fp.sc-house > .sc-sheet {
    position: relative;
    inset: auto;
    z-index: auto;
    flex: 1 1 auto;
    width: auto;
    max-width: none;
    height: auto;
    min-height: 0;
    padding-top: 0;
    border: 0;
    transform: none;
    transition: none;
}

/* her face at the top of her container: her one element, every look and skill the kit's (its first frame until it builds) */
aside.ns-fp.sc-house .sc-house-face {
    position: relative;
    flex: 0 0 auto;
    height: calc(var(--nsfp-face) + 12px);
    margin: 0;
    background: var(--sc-bg);
}
aside.ns-fp.sc-house .sc-house-face > alive-agent > :is(.ak-caption, .ak-life-cc, [data-alive-quiet-mic], [data-alive-looks]) { display: none !important; }
/* line 32489 (the_one_barge_in: keep-talking): out on the page and folded by her own Hide, her live line rides beside the Show pill;
   docked, her words stay in the panel's stream, so there is still one caption */
aside.ns-fp.sc-house .sc-house-face > alive-agent[data-collapsed][keep-talking]:is([data-mode=free],[data-mode=stage]) > .ak-caption { display: block !important; }
/* line 31821: her still (the face's own layer until her 3D body draws; NetshowHostLuma::firstFrame caps it at 220 px) and her first
   frame before the kit builds fill her box too (LumaConciergeContainer::bigStill gives the picture that size) */
aside.ns-fp.sc-house .sc-house-face > alive-agent[data-ns-luma-host] > .ak-face::before { width: 100%; }
aside.ns-fp.sc-house .sc-house-face > alive-agent > .ns-luma-first img { width: min(100%, var(--nsfp-face)); }
/* her one hamburger (the kit's menu: Mute, Volume, Language, Camera ...) at the top right of her face. Line 31821 (Michael, Tue 27
   Oct 2026 ~10:5x AM PT: "It needs to go away when you don't have your mouse over the top of the agent. Now it's just stuck
   there"): it rests unseen, as the kit's own rule has it (NEW-17845, alive-kit.js), and shows only while the pointer is over her
   (any pointer that can hover), on Tab to her or to it, on a tap on her (touch: the kit's data-ak-reveal; a second tap or a tap
   outside puts it away) and while her menu is open. The pane's own rule (netshow-ai-factory-pane.css) hides it for good; this
   one is hers. */
aside.ns-fp.sc-house #ns-house-pane-host[data-mode="container"] > .ak-menu-btn { top: 8px; right: 8px; bottom: auto; left: auto; opacity: 0 !important; pointer-events: none !important; }
@media (any-hover: hover) {
    aside.ns-fp.sc-house #ns-house-pane-host[data-mode="container"]:not([data-kit-walking]):hover > .ak-menu-btn { opacity: 1 !important; pointer-events: auto !important; }
}
aside.ns-fp.sc-house #ns-house-pane-host[data-mode="container"][data-ak-reveal] > .ak-menu-btn,
aside.ns-fp.sc-house #ns-house-pane-host[data-mode="container"] > .ak-menu-btn:is(:focus-visible, [aria-expanded="true"]) { opacity: 1 !important; pointer-events: auto !important; }
/* its own rule: a browser without :has() drops only this one */
aside.ns-fp.sc-house #ns-house-pane-host[data-mode="container"]:has(> .ak-face:focus-visible) > .ak-menu-btn { opacity: 1 !important; pointer-events: auto !important; }

/* her name and live line (line 31763: no pencil; her menu's Clear chat is the one new conversation) */
aside.ns-fp.sc-house .sc-sheet__head { min-height: 56px; padding: 0 6px 0 16px; }
aside.ns-fp.sc-house .sc-sheet__head > .sc-mark,
aside.ns-fp.sc-house .sc-welcome > .sc-mark--lg { display: none; }
aside.ns-fp.sc-house .sc-sheet__name { font-size: 20px; line-height: 24px; font-weight: 600; letter-spacing: 0; }
aside.ns-fp.sc-house .sc-house-state { display: none; }
aside.ns-fp.sc-house .sc-house-cc { display: none; }
aside.ns-fp.sc-house .sc-house-iam { display: none; }
aside.ns-fp.sc-house .sc-house-open { display: none; }
/* Line 32518 (ONE-21 order B; one_container_condense, LumaConciergeContainer::languageMenu): lit, her header carries the store
   template's one language menu (lang-menu.css), a globe and her short code before her other tools, in her header's icon colours;
   the folded band under 900 px keeps one line (its tools show only the open button, above) and her minimized box shows no header.
   lang-menu.js moves the list and its scrim to <body>, out of her aside, so both wear her container's tokens here (house-host.js
   marks them data-sc-house-lang): the Google path in light and dark, never the store's olive (base.css is not on her doors). */
aside.ns-fp.sc-house .sc-sheet__tools > .sc-langmenu { align-self: center; }
aside.ns-fp.sc-house .sc-sheet__tools > .sc-langmenu .sc-langmenu__btn { color: var(--sc-sh-icon); }
aside.ns-fp.sc-house .sc-sheet__tools > .sc-langmenu .sc-langmenu__btn:is(:hover, :active) { background: var(--sc-tile); }
:is(.sc-langmenu__panel, .sc-langmenu__scrim)[data-sc-house-lang] {
    --sc-bg: var(--ns-surface, #fff);
    --sc-surface: var(--ns-card, #fff);
    --sc-surface-raised: var(--ns-card, #fff);
    --sc-ink: var(--ns-text, #202124);
    --sc-ink-strong: var(--ns-text, #202124);
    --sc-muted: var(--ns-text-2, #5f6368);
    --sc-placeholder: var(--ns-text-2, #5f6368);
    --sc-hairline: var(--ns-border, #dadce0);
    --sc-border: var(--ns-border, #dadce0);
    --sc-border-input: var(--ns-border, #dadce0);
    --sc-olive: var(--nsfp-accent, #1a73e8);
    --sc-sage: color-mix(in srgb, var(--nsfp-accent, #1a73e8) 10%, var(--ns-card, #fff));
    --sc-sans: var(--ns-font, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif);
}

/* the welcome: the page's one question, her hello, the home's three asks */
aside.ns-fp.sc-house .sc-welcome { padding: 18px 16px 12px; }
aside.ns-fp.sc-house .sc-welcome .sc-eyebrow { margin: 0; }
aside.ns-fp.sc-house .sc-welcome__title { margin-top: 8px; max-width: none; font-size: 22px; line-height: 28px; font-weight: 500; }
aside.ns-fp.sc-house .sc-welcome__hello { margin-top: 10px; font-size: 15px; line-height: 22px; }
aside.ns-fp.sc-house .sc-suggest { margin-top: 16px; }
aside.ns-fp.sc-house .sc-suggest__row { min-height: 44px; border-radius: 10px; }
aside.ns-fp.sc-house .sc-stream { padding: 8px 16px 20px; }
aside.ns-fp.sc-house .sc-msg--user { border-radius: 16px 16px 4px 16px; }
aside.ns-fp.sc-house .sc-house-note { margin: 0; font-size: 13px; line-height: 18px; color: var(--ns-text-2, #5f6368); }
aside.ns-fp.sc-house .sc-house-links { display: flex; flex-wrap: wrap; gap: 6px 14px; margin: 10px 0 0; white-space: normal; }
aside.ns-fp.sc-house .sc-house-links a { color: var(--nsfp-accent, #1a73e8); text-decoration: underline; text-underline-offset: 2px; }
aside.ns-fp.sc-house .sc-visually-hidden { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; border: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }

/* the foot: the voice bar (Talk is the one filled button), the input, the AI line */
aside.ns-fp.sc-house .sc-sheet__foot { padding: 8px 10px calc(8px + env(safe-area-inset-bottom, 0px)); }
aside.ns-fp.sc-house .sc-voicebar .sc-voicebar__talk { padding: 0 14px; border-radius: 999px; background: var(--nsfp-accent, #1a73e8); color: var(--ns-on-accent, #fff); font-weight: 500; }
aside.ns-fp.sc-house .sc-voicebar .sc-voicebar__talk:hover { background: color-mix(in srgb, var(--nsfp-accent, #1a73e8) 88%, #000); }
/* line 32007 (Michael, Thu 29 Oct 2026 ~9:25 AM PT: "Get rid of the ... look ... In looks, there should be a hamburger menu"): no
   standing Looks on her bar; Looks is a row of her one menu, under volume and mute (alive-kit.js _looksInMenu) */
aside.ns-fp.sc-house .sc-voicebar .sc-voicebar__looks { display: none !important; }
aside.ns-fp.sc-house .sc-composer { min-height: 48px; border-radius: 24px; padding: 4px 4px 4px 16px; }
aside.ns-fp.sc-house .sc-send { border-radius: 50%; }
/* line 31763: her input's keyboard ring (ns-focus-ring.css) is drawn on the round field itself, never a square ring inside it */
html.ns-focus-ring aside.ns-fp.sc-house .sc-composer__input:focus-visible { outline: none !important; }
html.ns-focus-ring aside.ns-fp.sc-house .sc-composer:has(.sc-composer__input:focus-visible) { outline: 2px solid var(--ns-accent, #4f8cff); outline-offset: 2px; }
aside.ns-fp.sc-house .sc-ai-line { padding-bottom: 2px; }

/* from 900 px: the left rail, the page beside it (the pane's own body padding reads --nsfp-w) */
@media (min-width: 900px) {
    :root[data-ns-factory-pane]:has(aside.ns-fp.sc-house) { --nsfp-w: 320px; }
    aside.ns-fp.sc-house { padding: 0; }
    aside.ns-fp.sc-house .sc-sheet__tools [data-sc-action="close"] { display: none; }
}
@media (min-width: 1200px) {
    :root[data-ns-factory-pane]:has(aside.ns-fp.sc-house) { --nsfp-w: 360px; }
}
/* Line 31763 (Michael's screenshots of the live home, Mon 26 Oct: "her menu opens over the page"): from 900 px her one menu opens
   in her own corner, under its button and inside the rail (the kit's placeMenu set it beside the button, over the page); it
   still closes on a tap outside, Escape or a choice (menu-closes="choice"). Under 600 px it stays the kit's bottom sheet. */
@media (min-width: 900px) {
    aside.ns-fp.sc-house #ns-house-pane-host > .ak-menu:not([data-sheet]) {
        left: 8px !important;
        right: auto !important;
        width: calc(var(--nsfp-w, 320px) - 16px) !important;
        min-width: 0 !important;
        max-width: calc(var(--nsfp-w, 320px) - 16px) !important;
    }
}
/* Line 31821 (Michael, Tue 27 Oct 2026 ~10:5x AM PT, his own test from the show console: "Luma is some tiny little dot. It should
   be much, much bigger. It needs to fill in that area, look around, and be as capable an alive agent as it can be"): from 900 px
   her face fills the top of her rail, the rail less 20 px each side (320 px in the 360 px rail), and at most 38% of the screen's
   height, so her name, her question, the voice bar and the input stay in view under her on a short screen (it was 148 px, and
   112 px under 760 px tall). The one size rule holds: one box per screen, never moved or resized while she talks; her look moves
   inside it (her 3D body and her still both fill it). vh, not svh: a desktop screen's two are the same, and a unit a browser does
   not know would void the whole value (her box would collapse). */
@media (min-width: 900px) {
    aside.ns-fp.sc-house { --nsfp-face: max(148px, min(calc(var(--nsfp-w, 320px) - 40px), 38vh)); }
}

/* under 900 px, closed: a band at the foot of the screen (above the site's bottom bar): her face, her name and live line, the
   voice bar's buttons (icon only, each named), the open button. The page keeps the band's room (the pane's own padding). */
@media (max-width: 899.98px) {
    :root[data-ns-factory-pane]:not([data-nsb-free]):not([data-nsb-min]):not([data-nsb-size="half"]):not([data-nsb-size="max"]) aside.ns-fp.sc-house[data-sc-house]:not(.sc-house--open) {
        top: auto; left: 0; right: 0; bottom: env(safe-area-inset-bottom, 0px); width: auto; height: 72px;
        padding: 0; gap: 0; border: 0; border-top: 1px solid var(--ns-border, #dadce0); border-radius: 0; overflow: hidden;
        background: var(--ns-surface, #fff); box-shadow: 0 -2px 12px rgba(0, 0, 0, .08);
    }
    :root[data-ns-factory-pane]:not([data-nsb-free]):not([data-nsb-min]):not([data-nsb-size="half"]):not([data-nsb-size="max"]) body:has(.ns-gbar) aside.ns-fp.sc-house[data-sc-house]:not(.sc-house--open) {
        bottom: calc(var(--ns-gbar-h, 56px) + env(safe-area-inset-bottom, 0px));
    }
    :root[data-ns-factory-pane]:not([data-nsb-free]):not([data-nsb-min]):not([data-nsb-size="half"]):not([data-nsb-size="max"]) aside.ns-fp.sc-house[data-sc-house]:not(.sc-house--open) > .sc-sheet[data-sc-house] {
        display: grid !important; grid-template-columns: 72px minmax(0, 1fr) auto auto; grid-template-rows: 72px; align-items: center; height: 72px; overflow: hidden;
    }
    aside.ns-fp.sc-house:not(.sc-house--open) .sc-house-face { grid-column: 1; grid-row: 1; width: 72px; height: 72px; --nsfp-face: 56px; background: transparent; }
    /* above main's living-container band face (netshow-ai-factory-pane.css, specificity 1,10,1): hers sits at the band's left */
    :root[data-ns-factory-pane]:not([data-nsb-free]):not([data-nsb-min]):not([data-nsb-size="half"]):not([data-nsb-size="max"]) aside.ns-fp.sc-house[data-sc-house]:not(.sc-house--open) #ns-house-pane-host[data-mode="container"] > .ak-face {
        inset: 8px auto auto 8px !important; width: 56px !important; height: 56px !important;
    }
    aside.ns-fp.sc-house:not(.sc-house--open) .sc-house-face alive-agent > .ns-luma-first { position: absolute; top: 8px; left: 8px; margin: 0; gap: 0; }
    aside.ns-fp.sc-house:not(.sc-house--open) .sc-house-face alive-agent > .ns-luma-first img { width: 56px; height: 56px; }
    aside.ns-fp.sc-house:not(.sc-house--open) .sc-house-face alive-agent > .ns-luma-first .ns-luma-load { display: none; }
    /* line 32042 (K01 round 3: "her menu button is hidden at 375 today"): folded to her band, her one menu's small button sits on
       her face's top right corner, unseen until a tap on her face (touch) or the pointer over her (a computer) reveals it */
    aside.ns-fp.sc-house:not(.sc-house--open) #ns-house-pane-host[data-mode="container"] > .ak-menu-btn {
        inset: 0 auto auto 40px !important; width: 30px !important; height: 30px !important; min-width: 30px !important; min-height: 30px !important;
    }
    aside.ns-fp.sc-house:not(.sc-house--open) .sc-sheet__head { display: contents; }
    aside.ns-fp.sc-house:not(.sc-house--open) .sc-sheet__who { grid-column: 2; grid-row: 1; min-width: 0; padding: 0 6px 0 2px; cursor: pointer; }
    aside.ns-fp.sc-house:not(.sc-house--open) .sc-sheet__who { display: flex; flex-wrap: wrap; align-items: baseline; column-gap: 6px; row-gap: 0; }
    aside.ns-fp.sc-house:not(.sc-house--open) .sc-sheet__name { font-size: 16px; line-height: 20px; }
    aside.ns-fp.sc-house:not(.sc-house--open) .sc-sheet__as { margin: 0; font-size: 13px; line-height: 18px; }
    aside.ns-fp.sc-house:not(.sc-house--open) .sc-house-cc:not(:empty) {
        display: -webkit-box; flex-basis: 100%; margin: 2px 0 0; font-size: 13px; line-height: 18px; color: var(--ns-text, #202124);
        -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
    }
    aside.ns-fp.sc-house:not(.sc-house--open) .sc-house-state { display: inline; }
    /* Line 31808 (T3, the 390 show walk: the band read "Luma · AI agent / You came straight to NetShow, so let's get you set up."):
       folded, the label reads "I'm Luma, an AI" (her name stays the sheet's heading for a reader) and the line under it asks the
       page's one question, two lines at most; the line that answers how they came opens with the container. */
    aside.ns-fp.sc-house:not(.sc-house--open) .sc-sheet__who:has(.sc-house-iam) > .sc-sheet__name {
        position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap;
    }
    aside.ns-fp.sc-house:not(.sc-house--open) .sc-sheet__who:has(.sc-house-iam) > .sc-sheet__as {
        max-width: 100%; overflow: hidden; white-space: nowrap; text-overflow: ellipsis;
        font-size: 15px; line-height: 20px; font-weight: 600; color: var(--ns-text, #202124);
    }
    aside.ns-fp.sc-house:not(.sc-house--open) .sc-house-iam { display: inline; }
    aside.ns-fp.sc-house:not(.sc-house--open) .sc-sheet__who:has(.sc-house-iam) > .sc-sheet__as::before { display: none; }
    aside.ns-fp.sc-house:not(.sc-house--open) .sc-sheet__who:has(.sc-house-iam) .sc-house-as { display: none; }
    aside.ns-fp.sc-house:not(.sc-house--open) .sc-sheet__who:has(.sc-house-iam) .sc-house-state { font-weight: 400; color: var(--ns-text-2, #5f6368); }
    aside.ns-fp.sc-house:not(.sc-house--open) .sc-house-state:not(:empty)::before { content: " · "; }
    /* Line 31923 (test station 0187, 390: the bar never said "Luma is speaking" while she spoke; her label line cut it to
       "I'm …"): folded, the bar's words take their own line under her label, and while they show her line under them keeps
       one line, so her name, "an AI" and the state all read (under 560 px her call's buttons move to a second row, below). */
    aside.ns-fp.sc-house:not(.sc-house--open) .sc-sheet__who:has(.sc-house-iam) .sc-house-state:not(:empty) {
        display: block; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; font-size: 13px; line-height: 18px;
    }
    aside.ns-fp.sc-house:not(.sc-house--open) .sc-sheet__who:has(.sc-house-iam) .sc-house-state:not(:empty)::before { content: none; }
    aside.ns-fp.sc-house:not(.sc-house--open) .sc-sheet__who:has(.sc-house-state:not(:empty)) .sc-house-cc:not(:empty) { -webkit-line-clamp: 1; }
    aside.ns-fp.sc-house:not(.sc-house--open) .sc-sheet__tools { grid-column: 4; grid-row: 1; padding-right: 6px; }
    aside.ns-fp.sc-house:not(.sc-house--open) .sc-sheet__tools > :not(.sc-house-open) { display: none; }
    aside.ns-fp.sc-house:not(.sc-house--open) .sc-house-open { display: grid; width: 44px; height: 44px; }
    aside.ns-fp.sc-house:not(.sc-house--open) :is(.sc-sheet__body, .sc-clear) { display: none; }
    aside.ns-fp.sc-house:not(.sc-house--open) .sc-sheet__foot { display: contents; }
    aside.ns-fp.sc-house:not(.sc-house--open) .sc-sheet__foot > :not(.sc-voicebar) { display: none !important; }
    aside.ns-fp.sc-house:not(.sc-house--open) .sc-voicebar { grid-column: 3; grid-row: 1; min-height: 44px; padding: 0; gap: 2px; border: 0; background: transparent; }
    aside.ns-fp.sc-house:not(.sc-house--open) .sc-voicebar :is(.sc-voicebar__wave, .sc-voicebar__label) { display: none; }
    aside.ns-fp.sc-house:not(.sc-house--open) .sc-voicebar .sc-voicebar__btn { min-width: 44px; min-height: 44px; }
    /* line 32007 (Michael: "the microphone should say 'Talk'"): folded, Talk keeps its word beside its mic (the band's other
       buttons go icon-only) */
    aside.ns-fp.sc-house:not(.sc-house--open) .sc-voicebar .sc-voicebar__talk { width: auto; padding: 0 14px 0 12px; gap: 6px; justify-content: center; border-radius: 999px; font-size: 14px; }
    aside.ns-fp.sc-house:not(.sc-house--open) .sc-voicebar .sc-voicebar__btn:not(.sc-voicebar__talk) .sc-voicebar__text {
        position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap;
    }

    /* open: the whole container over the page (the store's phone sheet), her face at its top, Close folds it to the band.
       Line 31763 (390 walk: the cookie notice, z-index 2147482000, lay on her voice bar and her input): open, her one container
       is in front until it folds back to the band, where the notice (essential cookies only until a yes) shows again. */
    :root[data-ns-factory-pane]:not([data-nsb-free]):not([data-nsb-min]):not([data-nsb-size="half"]):not([data-nsb-size="max"]) aside.ns-fp.sc-house[data-sc-house].sc-house--open {
        top: 0; left: 0; right: 0; bottom: 0; width: auto; height: auto; z-index: 2147482001;
        padding: env(safe-area-inset-top, 0px) 0 0; gap: 0; border: 0; border-radius: 0; box-shadow: none; overflow: hidden;
    }
    :root[data-ns-factory-pane]:not([data-nsb-free]):not([data-nsb-min]):not([data-nsb-size="half"]):not([data-nsb-size="max"]) aside.ns-fp.sc-house[data-sc-house].sc-house--open > .sc-sheet[data-sc-house] { display: flex !important; }
    /* line 31821 (3): open, she is big at the top of her sheet too (the screen less 24 px each side, at most 34% of its small
       height, the one left under the browser's own bars; 30% of the screen where svh is unknown; it was 104 px), her
       conversation, voice bar and input under her */
    aside.ns-fp.sc-house.sc-house--open { --nsfp-face: max(104px, min(calc(100vw - 48px), 30vh)); }
    @supports (height: 1svh) {
        aside.ns-fp.sc-house.sc-house--open { --nsfp-face: max(104px, min(calc(100vw - 48px), 34svh)); }
    }
    :root[data-ns-factory-pane]:not([data-nsb-free]):not([data-nsb-min]):not([data-nsb-size="half"]):not([data-nsb-size="max"]) aside.ns-fp.sc-house[data-sc-house].sc-house--open #ns-house-pane-host[data-mode="container"] > .ak-face {
        inset: 4px auto auto calc(50% - var(--nsfp-face) / 2) !important; width: var(--nsfp-face) !important; height: var(--nsfp-face) !important; border-radius: 0; background: transparent; box-shadow: none;
    }
}
/* Line 31923 (test station 0187, Tester B at 390: "the bar never shows 'Luma is speaking'. It only shows the control buttons, so
   there's no sign she's talking"; her call's four buttons left her name column 46 px, "I'm …"): under 560 px, while the bar has
   words (her call), the folded band takes a second row for the call's buttons, so her label, the bar's words and her line read
   whole above them, every button keeps 44 px; the page's end and the cookie notice keep their distance from the taller band. */
@media (max-width: 559.98px) {
    :root[data-ns-factory-pane]:not([data-nsb-free]):not([data-nsb-min]):not([data-nsb-size="half"]):not([data-nsb-size="max"]) aside.ns-fp.sc-house[data-sc-house]:not(.sc-house--open):has(.sc-house-state:not(:empty)) { height: 120px; }
    :root[data-ns-factory-pane]:not([data-nsb-free]):not([data-nsb-min]):not([data-nsb-size="half"]):not([data-nsb-size="max"]) aside.ns-fp.sc-house[data-sc-house]:not(.sc-house--open):has(.sc-house-state:not(:empty)) > .sc-sheet[data-sc-house] {
        grid-template-columns: 72px minmax(0, 1fr) auto; grid-template-rows: 72px 48px; height: 120px;
    }
    aside.ns-fp.sc-house:not(.sc-house--open):has(.sc-house-state:not(:empty)) .sc-sheet__tools { grid-column: 3; }
    aside.ns-fp.sc-house:not(.sc-house--open):has(.sc-house-state:not(:empty)) .sc-voicebar { grid-column: 2 / -1; grid-row: 2; align-self: start; justify-content: flex-start; padding-right: 6px; }
    :root[data-ns-factory-pane]:not([data-nsb-free]):not([data-nsb-min]):not([data-nsb-size="half"]):not([data-nsb-size="max"]):not(:has(aside.ns-fp[hidden])):has(aside.ns-fp.sc-house[data-ns-living-container]:not(.sc-house--open) .sc-house-state:not(:empty)) body:not(.ns-stage-body) { padding-bottom: calc(var(--ns-gbar-h, 0px) + 120px + 16px + env(safe-area-inset-bottom, 0px)) !important; }
    :root[data-ns-factory-pane]:not([data-nsb-free]):not([data-nsb-min]):not([data-nsb-size="half"]):not([data-nsb-size="max"]):not(:has(aside.ns-fp[hidden])):has(aside.ns-fp.sc-house[data-ns-living-container]:not(.sc-house--open) .sc-house-state:not(:empty)) body.ns-stage-body #ns-planes { margin-bottom: 120px; }
    :root[data-ns-factory-pane]:not([data-nsb-free]):not([data-nsb-min]):not([data-nsb-size="half"]):not([data-nsb-size="max"]):not(:has(aside.ns-fp[hidden])):has(aside.ns-fp.sc-house[data-ns-living-container]:not(.sc-house--open) .sc-house-state:not(:empty)) body:has(.ns-gbar) .ns-cookie-notice:not([data-ns-cookie-phone-placed]) { bottom: calc(var(--ns-gbar-h, 0px) + 120px + 8px + env(safe-area-inset-bottom, 0px)) !important; }
}
/* the same at 375 before her call (the band read "I'm Luma, a…"): under 400 px the folded band's Talk pill and its open button
   give her label the few pixels it needs, so "an AI" reads */
@media (max-width: 399.98px) {
    aside.ns-fp.sc-house:not(.sc-house--open) .sc-voicebar .sc-voicebar__talk { padding: 0 10px 0 9px; gap: 4px; }
    aside.ns-fp.sc-house:not(.sc-house--open) .sc-sheet__tools { padding-right: 2px; }
}
/* Line 32007 (condense U2, one_container_condense; only lit does the Studio home's hero hold this block, LumaConciergeContainer::
   condenses): from 900 px the block in the Studio hero fits the first screen beside the hero, its face a little smaller, so the
   voice bar and the input stay in view (it was 853 px tall, its input under the fold at 1440 x 900). */
@media (min-width: 900px) {
    .studio-hero-host > aside.ns-fp.sc-house {
        --nsfp-face: max(120px, min(calc(var(--nsfp-w, 320px) - 40px), 24vh));
        max-height: calc(100vh - 96px);
        overflow: hidden;
    }
}
/* Line 32042 (K01 round 3; Michael, Thu 29 Oct 2026: "K01 is THE ONE container everywhere"): her house container wears the one
   block (container-controls.js scope "house": <html data-sc-cc-house="max|min|hidden">). Hidden: her whole rail or band folds
   away and the page has its whole width; only the tab stays (set free, her face stays hers, out on the page). Minimized on a
   tablet or computer: a small card at the bottom left (her face, her Talk bar and the row), the page has its whole width, and her
   Talk bar drags the card (kept for the visit). Her phone band is her small form, her open sheet her whole one (house-host.js). */
html[data-sc-cc-house="hidden"] aside.ns-fp.sc-house {
    visibility: hidden !important; pointer-events: none !important;
    background: transparent !important; border-color: transparent !important; box-shadow: none !important;
}
/* the store sheet's own moves (container-controls.css, keyed on #sc-sheet) never move her house sheet inside her rail: her
   container (the aside) is what folds, shrinks and moves */
html[data-sc-cc-house] aside.ns-fp.sc-house > #sc-sheet[data-sc-house] { transform: none !important; translate: none !important; bottom: auto !important; visibility: inherit; }
html[data-sc-cc-house] aside.ns-fp.sc-house > #sc-sheet[data-sc-house][data-sc-cc-condense].sc-sheet--open { border: 0 !important; box-shadow: none !important; }
html[data-sc-cc-house] aside.ns-fp.sc-house .sc-ai-line.sc-ai-line--cc { justify-content: center; }
/* under 900 px her band is her small form: the store's two-line minimize (its folded head, its foot's spacing and its phone gear)
   never reaches the band, which keeps her label, her live line, her Talk and the open button */
@media (max-width: 899.98px) {
    html[data-sc-cc-house] aside.ns-fp.sc-house:not(.sc-house--open) > #sc-sheet[data-sc-house] .sc-sheet__head { display: contents !important; }
    html[data-sc-cc-house] aside.ns-fp.sc-house:not(.sc-house--open) > #sc-sheet[data-sc-house] .sc-voicebar { margin-bottom: 0 !important; }
    html[data-sc-cc-house] aside.ns-fp.sc-house:not(.sc-house--open) > #sc-sheet[data-sc-house] .sc-sheet__tools > :not(.sc-house-open) { display: none !important; }
}
html[data-sc-cc-house="hidden"] aside.ns-fp.sc-house alive-agent[data-mode="free"] { visibility: visible !important; pointer-events: auto !important; }
:root[data-ns-factory-pane][data-sc-cc-house="hidden"]:has(aside.ns-fp.sc-house) { --nsfp-w: 0px; --nsfp-dock: 0px; }
:root[data-ns-factory-pane][data-sc-cc-house="hidden"]:not(:has(aside.ns-fp[hidden])):not([data-nsb-free]):not([data-nsb-min]) body { padding-left: 0 !important; padding-bottom: 0 !important; }
/* set free, her one menu opens where the kit places it beside her, never in the folded rail's corner */
aside.ns-fp.sc-house #ns-house-pane-host[data-mode="free"] > .ak-menu:not([data-sheet]) { width: auto !important; max-width: min(320px, calc(100vw - 16px)) !important; }
@media (min-width: 900px) {
    :root[data-ns-factory-pane][data-sc-cc-house="min"]:has(aside.ns-fp.sc-house) { --nsfp-w: 0px; }
    :root[data-ns-factory-pane][data-sc-cc-house="min"]:not(:has(aside.ns-fp[hidden])):not([data-nsb-free]):not([data-nsb-min]) body { padding-left: 0 !important; }
    html[data-sc-cc-house="min"] aside.ns-fp.sc-house {
        --nsfp-face: 112px;
        top: auto !important; right: auto !important; bottom: 16px !important; left: 16px !important;
        width: 320px !important; height: auto !important; max-height: calc(100vh - 32px) !important;
        border: 1px solid var(--ns-border, #dadce0) !important; border-radius: 16px !important; overflow: hidden !important;
        box-shadow: 0 8px 28px rgba(15, 23, 42, .18) !important;
    }
    html[data-sc-cc-house="min"][data-sc-cc-box] aside.ns-fp.sc-house:not(:has(alive-agent[data-mode="free"])) { translate: var(--sc-cc-dx, 0px) var(--sc-cc-dy, 0px); }
    html[data-sc-cc-house="min"] aside.ns-fp.sc-house #ns-house-pane-host > .ak-menu:not([data-sheet]) { width: 304px !important; max-width: 304px !important; }
    html[data-sc-cc-house="min"] aside.ns-fp.sc-house .sc-sheet__foot { cursor: grab; }
    /* small: her face, her Talk bar and the row only (her words, asks and input come back with Max) */
    html[data-sc-cc-house="min"] aside.ns-fp.sc-house .sc-sheet > :not(.sc-house-face):not(.sc-sheet__foot) { display: none !important; }
    html[data-sc-cc-house="min"] aside.ns-fp.sc-house .sc-sheet__foot > :not(.sc-voicebar):not(.sc-ai-line) { display: none !important; }
    html[data-sc-cc-house="min"] aside.ns-fp.sc-house .sc-sheet__foot { padding-top: 6px; padding-bottom: 6px; border-top: 0; }
    /* above the page's bottom bar, and the cookie notice keeps clear of her card */
    html[data-sc-cc-house="min"] body:has(.ns-gbar) aside.ns-fp.sc-house { bottom: calc(var(--ns-gbar-h, 44px) + 12px) !important; }
    html[data-sc-cc-house="min"] .ns-cookie-notice { left: 360px !important; }
    /* Line 32553 (live fault on /studio/create/brief): on the signed-in shell her rail is on the right (aside[data-ns-signed-in-one]),
       so minimized her small card rests bottom right, on her rail's side, never over the page's own menu; the cookie choice keeps clear */
    html[data-sc-cc-house="min"] aside.ns-fp.sc-house[data-ns-signed-in-one] { right: 16px !important; left: auto !important; }
    html[data-sc-cc-house="min"]:has(aside.ns-fp.sc-house[data-ns-signed-in-one]) .ns-cookie-notice { left: 24px !important; right: 360px !important; }
}
/* Line 32487 (ONE-03, THE ONE's three states on one session): her terminal state (container-controls.js, only where her aside wears
   THE ONE's mark: <html data-sc-cc-house="terminal">). Her same container fills the window above the page (on a phone her open
   sheet, already the whole screen): her face, her words, her typed box, her voice bar and her one menu in one column, nothing new
   drawn around her face. Full screen is her container itself (the browser's own door); the page behind holds still. */
html[data-sc-cc-house="terminal"] aside.ns-fp.sc-house {
    top: 0 !important; right: 0 !important; bottom: 0 !important; left: 0 !important;
    width: auto !important; height: auto !important; max-height: none !important; translate: none !important;
    z-index: 2147482001 !important; border: 0 !important; border-radius: 0 !important; box-shadow: none !important;
    background: var(--sc-bg) !important;
}
html[data-sc-cc-house="terminal"] aside.ns-fp.sc-house:fullscreen { width: 100% !important; height: 100% !important; }
@media (min-width: 900px) {
    html[data-sc-cc-house="terminal"] aside.ns-fp.sc-house { --nsfp-face: max(160px, min(420px, 40vh)); align-items: center; }
    html[data-sc-cc-house="terminal"] aside.ns-fp.sc-house > #sc-sheet[data-sc-house] { width: min(760px, 100%) !important; align-self: center; }
    html[data-sc-cc-house="terminal"] aside.ns-fp.sc-house #ns-house-pane-host > .ak-menu:not([data-sheet]) { width: 304px !important; max-width: 304px !important; }
}
aside.ns-fp.sc-house :is(.sc-cc-note, .sc-cc-hold) { margin: 2px 0 0; font-size: 13px; line-height: 18px; color: var(--ns-text-2, #5f6368); text-align: center; }
@media print { aside.ns-fp.sc-house { display: none !important; } }
/* Line 32519 (ONE-04 of THE ONE plan; Michael, Sun 1 Nov 2026: "we're not boxing ourselves in because the live agents need the
   freedom"): her one hamburger's Size and Move to the other side (container-controls.js mountPlace paints <html data-sc-cc-size=
   "compact|half|max"> and <html data-sc-cc-side="left|right">, only where her house sheet carries data-sc-cc-steps). From 900 px:
   Compact is today's rail (320 px, 360 px from 1200); Half and Max are the factory pane's own two sizes (netshow-ai-factory-pane.css
   :16-17), and the page always keeps 320 px. A width holds only while she is whole (data-sc-cc-house="max"): Minimize and Hide
   keep zeroing her rail. Her face box grows with the rail, never moved or resized while she talks; her menu keeps its own width
   under its button. Right: her rail and every rule that makes room for it go to the right edge (the new owner's right container,
   new-owner-first-pages.css, is the pattern): the rail, the page's padding, the bottom bar, the cookie choice, her edge tab and
   her small card. Under 900 px she is her band, so none of this reaches a phone. */
@media (min-width: 900px) {
    :root[data-ns-factory-pane][data-sc-cc-house="max"][data-sc-cc-size="half"]:has(aside.ns-fp.sc-house) { --nsfp-w: min(max(480px, 50vw), calc(100vw - 320px)); }
    :root[data-ns-factory-pane][data-sc-cc-house="max"][data-sc-cc-size="max"]:has(aside.ns-fp.sc-house) { --nsfp-w: min(max(560px, 72vw), calc(100vw - 320px)); }
    /* her one menu (the kit's popover, placed against the window) opens under its button at her rail's top right, at most 344 px
       wide (the 360 px rail's menu): in Compact that is main's place (8 px in, the rail less 16 px) */
    html[data-sc-cc-house="max"][data-sc-cc-side="left"] aside.ns-fp.sc-house #ns-house-pane-host[data-mode="container"] > .ak-menu:not([data-sheet]) {
        left: max(8px, calc(var(--nsfp-w, 320px) - 352px)) !important;
        right: auto !important;
        width: min(calc(var(--nsfp-w, 320px) - 16px), 344px) !important;
        max-width: min(calc(var(--nsfp-w, 320px) - 16px), 344px) !important;
    }
    html[data-sc-cc-house="max"][data-sc-cc-side="right"] aside.ns-fp.sc-house #ns-house-pane-host[data-mode="container"] > .ak-menu:not([data-sheet]) {
        width: min(calc(var(--nsfp-w, 320px) - 16px), 344px) !important;
        max-width: min(calc(var(--nsfp-w, 320px) - 16px), 344px) !important;
    }

    /* the right side: her rail (netshow-ai-factory-pane.css :107) */
    html[data-sc-cc-side="right"] aside.ns-fp.sc-house { left: auto; right: 0; border-right: 0; border-left: 1px solid var(--ns-border, #dadce0); }
    /* the page's room on her side (:108) */
    :root[data-ns-factory-pane][data-sc-cc-side="right"]:not(:has(aside.ns-fp[hidden])):not([data-nsb-free]):not([data-nsb-min]) body { padding-left: 0 !important; padding-right: var(--nsfp-w) !important; }
    /* the site's bottom bar ends where her rail begins (:280) */
    :root[data-ns-factory-pane][data-sc-cc-side="right"]:not(:has(aside.ns-fp[hidden])):not([data-nsb-free]):not([data-nsb-min]):has(aside.ns-fp[data-ns-living-container]) body:not(.ns-stage-body) .ns-gbar { left: 0; right: var(--nsfp-w, 320px); }
    /* the cookie choice keeps clear of her rail (:281; the home's left: 396px, home-host-first-screen.css :13, reads the left rail) */
    :root[data-ns-factory-pane][data-sc-cc-side="right"]:not(:has(aside.ns-fp[hidden])):not([data-nsb-free]):not([data-nsb-min]):has(aside.ns-fp[data-ns-living-container] #sc-sheet[data-sc-cc-steps]) .ns-cookie-notice { left: 24px; right: calc(var(--nsfp-w, 320px) + 24px); }
    /* hidden, her edge tab waits on her side (container-controls.css .sc-cc-tab) */
    html[data-sc-cc-side="right"] .sc-cc-tab {
        left: auto; right: 0;
        border-left: 1px solid var(--sc-hairline, var(--ns-border, rgba(60, 64, 67, .2))); border-right: 0; border-radius: 14px 0 0 14px;
    }
    /* on the right her menu opens 8 px in from the window's right edge (main's left: 8px, mirrored), whole or minimized */
    html[data-sc-cc-side="right"]:is([data-sc-cc-house="max"], [data-sc-cc-house="min"]) aside.ns-fp.sc-house #ns-house-pane-host[data-mode="container"] > .ak-menu:not([data-sheet]) { left: auto !important; right: 8px !important; }
    /* minimized, her small card sits at the bottom right and the cookie choice keeps clear of it */
    html[data-sc-cc-house="min"][data-sc-cc-side="right"] aside.ns-fp.sc-house { right: 16px !important; left: auto !important; }
    html[data-sc-cc-house="min"][data-sc-cc-side="right"] .ns-cookie-notice { left: 24px !important; right: 360px !important; }
}
/* her Size row wears the kit's row look at every width (alive-kit.js: flex, 10 px gap, 0 8 px, 44 px high); its three steps are
   small pills on the row's line, the pressed one in her accent's ring and tint (the kit's .ns-set pressed button), 44 px to a finger */
html[data-sc-cc-size] alive-agent > .ak-menu > .sc-cc-place[data-sc-cc-place="size"] { display: flex; align-items: center; gap: 10px; min-height: 44px; padding: 0 8px; border-radius: 8px; }
html[data-sc-cc-size] alive-agent > .ak-menu > .sc-cc-place[data-sc-cc-place="size"] > .sc-cc-steps { display: inline-flex; flex-wrap: wrap; justify-content: flex-end; gap: 4px; margin-left: auto; }
html[data-sc-cc-size] alive-agent > .ak-menu > .sc-cc-place[data-sc-cc-place="size"] > .sc-cc-steps > button {
    min-width: 0; min-height: 36px; padding: 0 12px; gap: 0; justify-content: center;
    border: 1px solid var(--akm-line, #dadce0); border-radius: 999px; background: transparent; color: inherit;
}
html[data-sc-cc-size] alive-agent > .ak-menu > .sc-cc-place[data-sc-cc-place="size"] > .sc-cc-steps > button[aria-pressed="true"] {
    border-color: var(--akm-accent, #1a73e8); background: color-mix(in srgb, var(--akm-accent, #1a73e8) 12%, transparent); font-weight: 600;
}
@media (pointer: coarse) {
    html[data-sc-cc-size] alive-agent > .ak-menu > .sc-cc-place[data-sc-cc-place="size"] > .sc-cc-steps > button { min-height: 44px; }
}
