/* The owner's original Neva companion — the bottom notch with the Siri wave
   (the default presentation of src/neva/led/shell.js). Visual tokens, sizes and
   component styles are taken from the owner reference (owner-reference
   source/src/neva/notch.css, 2026-09-30) and its two screenshots; only the
   selectors changed, so the same shell can also wear the LED presentation
   (src/neva/led/shell.css). Geometry (width, height, silhouette, resident
   placement) is painted per frame by the shell's spring; nothing here animates
   size. */

.neva-led {
  --notch-ink: #f0f1f5;
  --notch-muted: #a4a6b0;
  --notch-panel: rgba(17, 21, 27, .57);
  --notch-content-start: 140px;
  --notch-control-glass: rgba(15, 21, 27, .48);
  color: var(--notch-ink);
}

/* ---- the silhouette: dark glass with outward shoulders on the bottom edge ---- */
.neva-led .notch-glass,
.neva-led .notch-shell {
  position: absolute;
  left: 0;
  bottom: 0;
  width: 300px;
  height: 48px;
  pointer-events: none;
}
.neva-led .notch-glass {
  background: linear-gradient(160deg, #ffffff06, transparent 60%), rgba(14, 17, 19, .68);
  backdrop-filter: var(--chrome-blur, blur(22px));
  -webkit-backdrop-filter: var(--chrome-blur, blur(22px));
}
.neva-led .notch-shell { overflow: visible; }
.neva-led .notch-shell path { fill: none; stroke: #ffffff12; stroke-width: 1; }
/* Open, the glass is a surface: presses on it stay inside the companion. */
.neva-led[data-mode="expanded"] .notch-glass { pointer-events: auto; }

/* ---- the body is the notch viewport: toolbar on top, pages below ---- */
.neva-led .neva-led__body {
  left: 12px;
  bottom: 0;
  width: 276px;
  height: 48px;
  transform: none;
  display: block;
  padding: 0;
  overflow: hidden;
  border-radius: 22px 22px 0 0;
  z-index: 2;
  transition: opacity .2s cubic-bezier(.4, 0, .2, 1), visibility 0s linear .2s;
}
.neva-led[data-mode="expanded"] .neva-led__body { transition: opacity .2s cubic-bezier(.25, .1, .25, 1), visibility 0s; }
.neva-led .notch-toolbar {
  position: absolute;
  inset: 5px 11px auto;
  height: 36px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  z-index: 5;
  opacity: 0;
}
.neva-led[data-mode="compact"] .notch-toolbar { pointer-events: none; }
.neva-led .notch-tabs,
.neva-led .notch-tools { display: flex; align-items: center; gap: 3px; }
.neva-led .notch-icon {
  width: 34px;
  height: 32px;
  display: grid;
  place-items: center;
  padding: 0;
  border-radius: 17px;
  color: #a1a2a6 !important;
  box-shadow: none;
}
.neva-led .notch-icon svg { width: 18px; height: 18px; }
.neva-led .notch-icon:hover { background: #ffffff12; color: #fff !important; }
.neva-led .notch-icon[aria-pressed="true"] {
  background: rgba(32, 40, 46, .58);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  color: #fff !important;
  box-shadow: inset 0 1px #ffffff0a;
}
.neva-led .notch-tabs .notch-icon[aria-pressed="true"] svg { fill: currentColor; stroke-width: 1.3; }
/* Real commands from the shell's actions (Stop) wear the same key. */
.neva-led .notch-tools .notch-action[hidden] { display: none; }
.neva-led .notch-tools .notch-action[data-led-action="stop"] { color: #ffd3d0 !important; }
.neva-led .notch-camera {
  position: absolute;
  left: 50%;
  top: 0;
  transform: translateX(-50%);
  width: 36px;
  height: 30px;
  display: grid;
  place-items: center;
}
.neva-led .notch-camera span {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: rgba(37, 46, 51, .46);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  box-shadow: inset 0 0 2px #ffffff25;
  transition: background .3s;
}
.neva-led .notch-camera:hover span { background: rgba(131, 146, 155, .4); }

/* Pages keep their final size while the silhouette springs around them. */
.neva-led .neva-led__slots {
  position: absolute;
  inset: 44px 10px 10px;
  margin: 0;
  flex: none;
  border-radius: 0;
  overflow: visible;
}
.neva-led .neva-led__panel {
  inset: auto;
  left: 0;
  top: 0;
  width: var(--notch-page-w, 100%);
  height: var(--notch-page-h, 100%);
  overflow: hidden;
  background: var(--notch-panel);
  border: 1px solid #ffffff07;
  border-radius: 19px;
  transform-origin: 50% 100%;
}
.neva-led .neva-led__panel[data-led-slot="conversation"] { background: radial-gradient(ellipse at 45% 100%, #242335 0, transparent 65%), var(--notch-panel); }
.neva-led .neva-led__mount {
  height: 100%;
  padding: 10px 12px 10px var(--notch-content-start);
  overflow: auto;
  overscroll-behavior: contain;
  scrollbar-width: thin;
  scrollbar-color: #ffffff20 transparent;
}
.neva-led .neva-led__panel[data-led-slot="home"] .neva-led__mount { padding: 0; overflow: hidden; }

/* ---- compact (owner R4): the state word in the name's place, then one row ----
   No permanent mail/message keys, zeros or dashes: the row holds only what is
   real right now (minimized windows, a maximized window's switcher and keys,
   a transient new-notification key). The shell measures the row and widens
   the glass to fit it. */
.neva-led .notch-compact {
  position: absolute;
  left: 12px;
  right: 12px;
  bottom: 0;
  height: 48px;
  z-index: 3;
  --notch-row-start: 184px;
}
.neva-led .notch-compact-open {
  position: absolute;
  inset: 0;
  height: 100%;
  padding: 0;
  text-align: left;
  border-radius: 14px 0 0 0;
}
/* Open, the compact row is invisible and must not take presses meant for the
   page under it (the chat composer sits exactly there). */
.neva-led[data-mode="expanded"] .notch-compact { pointer-events: none; }
.neva-led[data-mode="expanded"] .notch-compact-open { pointer-events: none; }
/* The word: NEVA at rest, else the real state, in the navigation's own type
   (the HOME / DESK tabs: same family, size, weight, case and tracking). */
.neva-led .notch-compact-label {
  position: absolute;
  left: 83px;
  top: 0;
  height: 48px;
  max-width: calc(100% - 91px);
  display: flex;
  align-items: center;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
  font-family: "SF Pro Rounded", "SF Pro Display", -apple-system, BlinkMacSystemFont, system-ui, sans-serif;
  font-size: 10.5px;
  font-weight: 300;
  letter-spacing: 0.26em;
  text-transform: uppercase;
  color: #e1e3eb;
}
.neva-led[data-row-used="true"] .notch-compact-label { display: block; line-height: 48px; max-width: calc(var(--notch-row-start) - 93px); }
.neva-led[data-notch-label="error"] .notch-compact-label,
.neva-led[data-notch-label="offline"] .notch-compact-label { color: #ffd3d0; }
.neva-led[data-notch-label="listening"] .notch-compact-label { color: #a9c4ff; }
.neva-led[data-notch-label="thinking"] .notch-compact-label { color: #c3caff; }
.neva-led .notch-row-end {
  position: absolute;
  left: var(--notch-row-start);
  top: 2px;
  height: 44px;
  width: max-content;
  display: flex;
  align-items: center;
  gap: 4px;
  z-index: 4;
}
/* The row's slots flow inside it. desktop.css (loaded earlier) still carries
   the R3 absolute boxes for these slots (left 123px / 67px, right 98px) and
   hides the opener while a window is maximized; in R4 the row places them and
   the wave and word stay on the top strip, so those boxes are reset here. */
.neva-led .notch-row-end > :is(.notch-held-windows, .notch-window-context) { position: relative; left: auto; right: auto; top: auto; z-index: auto; }
.neva-led[data-window-active="true"] .notch-compact-open { display: block; }
/* One bounded new-notification key (shown on a real event, then hidden). */
.neva-led .notch-event {
  height: 32px;
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 0 11px 0 9px;
  border-radius: 16px;
  background: #ffffff0d;
  box-shadow: inset 0 1px #ffffff0a;
  color: #dfe6ec !important;
  font-size: 11px !important;
  white-space: nowrap;
  animation: notch-event-in 260ms cubic-bezier(.25, .1, .25, 1) both;
}
.neva-led .notch-event[hidden] { display: none; }
.neva-led .notch-event svg { width: 16px; height: 16px; stroke-width: 1.5; }
.neva-led .notch-event:hover { background: #ffffff16; color: #fff !important; }
@keyframes notch-event-in { from { opacity: 0; transform: translate3d(0, 3px, 0); } to { opacity: 1; transform: none; } }
.neva-led.is-reduced .notch-event { animation: none; }
/* Particles show/hide beside Home: filled while the particles are shown. It is
   a setting, not a page, so it never wears the current-page highlight. */
.neva-led .notch-tabs .notch-particles-key[aria-pressed] { background: none; box-shadow: none; backdrop-filter: none; -webkit-backdrop-filter: none; }
.neva-led .notch-tabs .notch-particles-key[aria-pressed="true"] svg { fill: currentColor; stroke-width: 1.2; }
.neva-led .notch-tabs .notch-particles-key[aria-pressed="false"] svg { fill: none; }
.neva-led .notch-tabs .notch-particles-key:hover { background: #ffffff12; }

/* ---- R5 permanent controls: full screen, particles, hold to talk, speaker ----
   One quiet group at the compact strip's right end, in the companion's own
   outline glyphs and key material; the shell sizes the glass around it
   (--notch-controls-w) so the word keeps its column. The open menu shows the
   same four once in its toolbar; the compact group is then inert (shell). */
.neva-led .notch-controls { display: flex; align-items: center; gap: 2px; }
.neva-led .notch-controls[data-controls-place="compact"] {
  position: absolute;
  right: 4px;
  top: 8px;
  height: 32px;
  z-index: 4;
}
.neva-led .notch-controls[data-controls-place="compact"] .notch-control { width: 30px; height: 32px; border-radius: 16px; }
.neva-led .notch-controls[data-controls-place="toolbar"] { margin-right: 5px; padding-right: 5px; border-right: 1px solid #ffffff12; }
.neva-led .notch-control svg { width: 17px; height: 17px; fill: none; stroke-width: 1.5; }
/* Toggles: pressed wears the companion's own pressed glass (.notch-icon). */
.neva-led .notch-control[aria-disabled="true"] { opacity: .42; cursor: not-allowed; }
.neva-led .notch-control[aria-disabled="true"]:hover { background: none; color: #a1a2a6 !important; }
.neva-led .notch-control[data-control-kind="hold"] { touch-action: none; user-select: none; -webkit-user-select: none; }
.neva-led .notch-control[data-control-kind="hold"][aria-pressed="true"],
.neva-led .notch-control[data-control-kind="hold"][data-state="listening"] { color: #9fbfff !important; background: #394864; }
.neva-led .notch-control[data-control-kind="hold"][data-state="starting"] { color: #c8d6ff !important; }
.neva-led .notch-control:is([data-state="denied"], [data-state="error"]) { color: #ffd3d0 !important; }
.neva-led .notch-control[data-neva-control="speaker"][aria-pressed="true"] { color: #ffd3d0 !important; }
.neva-led .notch-control:focus-visible { outline: 2px solid #a9b9fc; outline-offset: 1px; }
/* The word's column ends before the group (the row's own rule takes over when the row is used). */
.neva-led[data-controls="true"]:not([data-row-used="true"]) .notch-compact-label { max-width: calc(100% - 91px - var(--notch-controls-w, 0px) - 8px); }
/* A maximized window's browser full-screen key (notch-windows.js) stands
   right before the group on the top strip and is the same control. */
.neva-led[data-window-screen="true"] .notch-controls[data-controls-place="compact"] [data-neva-control="fullscreen"] { display: none; }
.neva-led[data-mode="expanded"] .notch-controls[data-controls-place="compact"] { pointer-events: none; }

/* ---- R6: one row of circular keys, then the front window's keys ----
   Left to right: Particles, Speaker, Browser full screen, Minimize, Restore,
   Close (read right to left as the owner names them). The window keys wear
   exactly the speaker/particles key: same 30x32 round surface, 17px glyph,
   1.5 stroke, hover and pressed glass, visible focus ring; Close keeps only
   its warm hover tint. No key scales or moves its neighbours. */
.neva-led .notch-controls .notch-window-keys { display: flex; align-items: center; gap: 2px; }
.neva-led .notch-controls .notch-window-keys[hidden] { display: none; }
.neva-led .notch-controls .notch-window-key.notch-control {
  width: 30px;
  height: 32px;
  border-radius: 16px;
  color: #a1a2a6 !important;
}
.neva-led .notch-controls .notch-window-key.notch-control svg { width: 17px; height: 17px; fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }
.neva-led .notch-controls .notch-window-key.notch-control:hover { background: #ffffff12; color: #fff !important; }
.neva-led .notch-controls .notch-window-key.notch-control[data-notch-command="close"]:hover { background: #b567672c; color: #ffd3d0 !important; }
.neva-led .notch-controls .notch-window-key.notch-control:focus-visible { outline: 2px solid #a9b9fc; outline-offset: 1px; }
.neva-led .notch-controls .notch-window-key.notch-control:active { transform: none; }
/* The one hairline between an app group and the controls: short, quiet,
   present only when shell.js found minimized or open app icons beside it. */
.neva-led .notch-divider { flex: none; width: 1px; height: 16px; margin: 0 5px 0 1px; border-radius: 1px; background: #ffffff1f; }
.neva-led .notch-divider[hidden] { display: none; }
/* The R4 top strip drew its own hairlines around the window keys and the
   window's full-screen key; R6 moves the keys into the group (one divider). */
.neva-led [data-desk-windows-slot="context"] .notch-context-controls { margin-left: 0; padding-left: 0; border-left: 0; }

/* ---- R6: the Siri wave is pressed to talk, clicked to chat ----
   Lane 2's gesture writes data-wave-press (idle | pressed | starting |
   listening | busy | unavailable | denied | error): immediate feedback on
   pointer down ("pressed"), a held glow once the hold is opening or recording
   ("starting", "listening"). Only the drawn wave changes; nothing moves. */
.neva-led .notch-wave { touch-action: none; user-select: none; -webkit-user-select: none; -webkit-touch-callout: none; }
.neva-led .notch-wave:focus-visible { outline: 2px solid #a9b9fc; outline-offset: -6px; }
.neva-led .notch-wave::before {
  content: '';
  position: absolute;
  inset: 14px 16px;
  border-radius: 22px;
  background: radial-gradient(ellipse at center, #8fb4ff33, transparent 70%);
  opacity: 0;
  pointer-events: none;
  transition: opacity 140ms ease;
}
.neva-led .notch-wave:is([data-wave-press="pressed"], [data-wave-press="starting"], [data-wave-press="listening"]) .notch-siri { filter: brightness(1.18); }
.neva-led .notch-wave[data-wave-press="pressed"]::before { opacity: .55; transition-duration: 60ms; }
.neva-led .notch-wave:is([data-wave-press="starting"], [data-wave-press="listening"])::before { opacity: 1; background: radial-gradient(ellipse at center, #73b4ff4d, transparent 72%); }
.neva-led.is-reduced .notch-wave::before { transition: none; }

/* ---- Desk windows in the compact row (owner R3 ZIP notch.css) ----
   The slots are the shell's; their buttons are rendered by the Desk window
   adapter (src/desktop/notch-windows.js) from the real window manager. */
.neva-led .notch-held-windows { position: relative; height: 44px; display: flex; align-items: center; gap: 0; }
.neva-led .notch-held-windows:empty, .neva-led .notch-held-windows[hidden] { display: none; }
.neva-led :is(.notch-held-window, .notch-held-more) { position: relative; width: 44px; height: 44px; display: grid; place-items: center; padding: 0; border-radius: 13px; font-size: 11px !important; color: #c8d5de !important; }
.neva-led .notch-held-window > svg { width: 22px; height: 22px; stroke: none; }
.neva-led .notch-held-window > i { position: absolute; bottom: 4px; left: 20px; width: 4px; height: 3px; border-radius: 2px; background: #c8d5de; opacity: .6; }
.neva-led :is(.notch-held-window, .notch-held-more):hover { background: #ffffff0d; }
.neva-led .notch-window-context { position: relative; height: 44px; align-items: center; gap: 8px; display: none; }
.neva-led .notch-context-title { display: flex; align-items: center; gap: 8px; flex: 1; min-width: 0; color: #dce5e9; font-size: 11px; }
.neva-led .notch-context-title > svg { width: 18px; height: 18px; flex-shrink: 0; stroke: none; }
.neva-led :is(.notch-held-window, .notch-context-title) > svg[stroke] { stroke: currentColor; }
.neva-led .notch-context-title > span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.neva-led .notch-context-switch { display: flex; align-items: center; justify-content: center; gap: 3px; height: 40px; min-width: 38px; padding: 0 4px; border-radius: 12px; color: #adbcc6 !important; font-size: 9px !important; }
.neva-led .notch-context-switch svg { width: 18px; height: 18px; }
.neva-led .notch-context-switch:hover { background: #ffffff09; color: #fff !important; }
.neva-led :is(.notch-context-controls, .notch-window-tools) { display: flex; align-items: center; gap: 1px; }
.neva-led .notch-window-key { display: grid; place-items: center; width: 30px; height: 36px; padding: 0; border-radius: 10px; color: #c1ccd4 !important; }
.neva-led .notch-window-key svg { width: 20px; height: 20px; }
.neva-led .notch-window-key:hover { background: #ffffff0e; color: #fff !important; }
.neva-led .notch-window-key[data-notch-command="close"]:hover { background: #b567672c; color: #ffd3d0 !important; }
.neva-led .notch-window-tools { display: none; margin-right: 5px; padding-right: 5px; border-right: 1px solid #ffffff12; }
.neva-led[data-window-active="true"] .notch-window-context { display: flex; }
/* Owner R4 top strip: wave + word | open apps | the front window's keys |
   browser full screen. Each group stands apart with the same hairline the
   screen group uses (desktop.css), so icons never read as one run. */
.neva-led [data-desk-windows-slot="context"] .notch-context-controls { margin-left: 4px; padding-left: 5px; border-left: 1px solid #ffffff14; }
/* Owner R4: the maximized window's keys live only on the slim top strip; the
   open menu does not repeat them (one place per control). */
.neva-led .notch-window-tools { display: none !important; }
.neva-led[data-window-active="true"] .notch-held-windows { display: none; }
.neva-led[data-window-active="true"] .notch-window-context[hidden] { display: none; }
.neva-led[data-mode="expanded"] :is(.notch-held-windows, .notch-window-context) { pointer-events: none; }
.neva-led[data-edge="top"] .notch-camera { display: none; }
.neva-led :is(.notch-held-window, .notch-held-more, .notch-window-key, .notch-context-switch) {
  transition: scale 220ms cubic-bezier(.25, .1, .25, 1), background 220ms ease, color 220ms ease;
}
.neva-led :is(.notch-held-window, .notch-held-more, .notch-window-key, .notch-context-switch):active { scale: .94; transition-duration: 130ms; }

/* ---- the resident: the Siri wave, one persistent element, spring-placed ---- */
.neva-led .notch-resident {
  position: absolute;
  top: 0;
  left: 0;
  width: 80px;
  height: 80px;
  transform-origin: 0 0;
  z-index: 6;
  pointer-events: none;
  will-change: transform;
}
/* The owner's Stardust canvas around the wave (opacity painted by the shell). */
.neva-led .notch-dust {
  position: absolute;
  left: -40px;
  top: -32px;
  width: 160px;
  height: 144px;
  pointer-events: none;
  opacity: 0;
  -webkit-mask-image: radial-gradient(ellipse at center, #000 30%, transparent 72%);
  mask-image: radial-gradient(ellipse at center, #000 30%, transparent 72%);
}
.neva-led .notch-dust > canvas { display: block; width: 100%; height: 100%; }
.neva-led .notch-wave {
  position: absolute;
  left: -14px;
  top: -9px;
  width: 108px;
  height: 80px;
  padding: 0;
  pointer-events: auto;
  border-radius: 24px;
  -webkit-tap-highlight-color: transparent;
}
.neva-led .notch-siri {
  position: absolute;
  left: -18px;
  top: -32px;
  display: block;
  width: 144px;
  height: 144px;
  pointer-events: none;
}
.neva-led .notch-siri > canvas { display: block; width: 100%; height: 100%; }
/* The particle anchor (the invisible, noninteractive #nevaBtn compatibility
   box, shell.css) rides at the wave's centre so docked particles gather there. */
.neva-led .notch-anchor {
  position: absolute;
  left: 0;
  top: 0;
  width: 38px;
  height: 38px;
  z-index: 5;
  pointer-events: none;
}

/* ---- Home: the inner rounded panel the wave and particles live in ---- */
.neva-led .notch-home { position: relative; height: 100%; }
.neva-led .notch-hello-glow { position: absolute; inset: 0; background: radial-gradient(ellipse at 50% 65%, #8580971b, transparent 50%); pointer-events: none; }
.neva-led .notch-hello-hint {
  position: absolute;
  bottom: 7px;
  left: 12px;
  right: 12px;
  margin: 0;
  text-align: center;
  color: #92939d;
  font-size: 10px;
  letter-spacing: .02em;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.neva-led .notch-hello-hint[data-state="error"] { color: #ffd3d0; }
.neva-led .notch-hello-hint[data-state="thinking"],
.neva-led .notch-hello-hint[data-state="listening"],
.neva-led .notch-hello-hint[data-state="speaking"] { color: #c7cbe0; }

/* ---- Settings (owner "A little more you.") ---- */
.neva-led .notch-settings-title { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; gap: 6px; }
.neva-led .notch-settings-title strong { font-size: 13px; font-weight: 500; }
.neva-led .notch-settings-title > span { font-size: 9px; color: #898c98; }
.neva-led .notch-setting {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 0;
  border-bottom: 1px solid #ffffff07;
  cursor: pointer;
  font-size: 12px;
}
.neva-led .notch-setting > span { min-width: 0; overflow-wrap: anywhere; }
.neva-led .notch-setting small { display: block; font-size: 10px; color: #9699a5; margin-top: 3px; }
.neva-led .notch-setting input { position: absolute; right: 0; width: 34px; height: 24px; margin: 0; opacity: 0; cursor: pointer; }
.neva-led .notch-setting > i { width: 31px; height: 18px; flex-shrink: 0; border-radius: 12px; background: #34363d; transition: background .2s; pointer-events: none; }
.neva-led .notch-setting > i::after { content: ''; display: block; width: 14px; height: 14px; border-radius: 50%; background: #e7e9ef; margin: 2px; transition: transform .2s; }
.neva-led .notch-setting input:checked + i { background: #609f88; }
.neva-led .notch-setting input:checked + i::after { transform: translateX(13px); }
.neva-led .notch-setting input:focus-visible + i { outline: 2px solid #a9b9fc; outline-offset: 3px; }
.neva-led .notch-setting-display { display: block; cursor: default; }
.neva-led .notch-settings-foot { display: flex; justify-content: space-between; align-items: center; margin-top: 12px; gap: 8px; }
.neva-led .notch-settings-foot button { font-size: 10px; display: flex; align-items: center; gap: 5px; padding: 4px 0; color: #d0d3dc; }
.neva-led .notch-settings-foot button:disabled { opacity: .45; cursor: not-allowed; }
.neva-led .notch-settings-foot > span { font-size: 9px; color: #888c98; }

/* Independent press scale composes with the view choreography's transform. */
.neva-led :is(.notch-icon, .notch-event, .notch-settings-foot button) {
  transition: scale 220ms cubic-bezier(.25, .1, .25, 1), background 220ms ease, color 220ms ease;
}
.neva-led :is(.notch-icon, .notch-event, .notch-settings-foot button):active { scale: .94; transition-duration: 130ms; }

/* Other bottom surfaces sit above the notch (the clearance is painted by the shell). */
body.has-neva-led .neva-dock.has-neva-led ~ .neva-looks-panel { z-index: 1451; }

@media (max-width: 620px) {
  .neva-led { --notch-content-start: 96px; }
  .neva-led .notch-camera { display: none; }
  .neva-led .notch-tools, .neva-led .notch-tabs { gap: 0; }
  .neva-led .notch-icon { width: 31px; }
  .neva-led .notch-settings-title { display: block; }
  .neva-led .notch-settings-title > span { display: block; }
  .neva-led[data-has-windows="true"] .notch-compact-label { display: none; }
  .neva-led[data-has-windows="true"] .notch-compact { --notch-row-start: 79px; }
  .neva-led :is(.notch-held-window, .notch-held-more) { width: 36px; }
  .neva-led .notch-held-window > i { left: 16px; }
  .neva-led .notch-window-context { gap: 3px; }
  .neva-led .notch-context-title { gap: 5px; font-size: 10px; }
  .neva-led .notch-context-title > svg { display: none; }
  .neva-led .notch-context-switch { min-width: 30px; gap: 0; }
  .neva-led .notch-window-key { width: 28px; }
  .neva-led .notch-screen-key { display: none !important; }
  .neva-led .notch-window-tools { margin-right: 0; padding-right: 2px; }
}

/* ---- panes the shell composes into the original pages ---- */
/* Context brings its own panels (radius 17, original panel tint): its page has
   no glass of its own, like the owner's Home grid, and its gutter is the
   original content start so the resident wave keeps its column. */
.neva-led .neva-led__panel[data-led-slot="context"] { background: none; border: 0; border-radius: 17px; }
.neva-led .neva-led__panel[data-led-slot="context"] .neva-led__mount { padding: 0; overflow: hidden; --led-ctx-start: var(--notch-content-start); }
/* Add a file: the module's own .notch-page layer paints the original per-view
   tint and border, so its pane has none and no gutter. */
.neva-led .neva-led__panel[data-led-slot="file"] { background: none; border: 0; overflow: visible; }
.neva-led .neva-led__panel[data-led-slot="file"] .neva-led__mount { position: relative; padding: 0; overflow: hidden; }
/* The conversation fills its page below the provider line, as the owner's chat
   (provider top 13; log/composer top 47, bottom 9, left 140, right 10). */
.neva-led .neva-led__panel[data-led-slot="conversation"] .neva-led__mount { position: relative; padding: 0; overflow: hidden; }
.neva-led .notch-chat-host { height: 100%; min-height: 0; }
.neva-led .notch-chat-host { position: absolute; top: 47px; bottom: 9px; left: var(--notch-content-start); right: 10px; height: auto; }
.neva-led .notch-provider { display: none; }
.neva-led .notch-provider {
  position: absolute;
  top: 13px;
  left: var(--notch-content-start);
  max-width: calc(100% - var(--notch-content-start) - 16px);
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 3px 10px;
  border: 1px solid #ffffff08;
  border-radius: 20px;
  background: var(--notch-control-glass);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  font-size: 11px;
  white-space: nowrap;
}
.neva-led .notch-provider-status { min-width: 0; overflow: hidden; text-overflow: ellipsis; color: var(--notch-muted); }
.neva-led .notch-provider-status:not(:empty)::before { content: '· '; }
.neva-led .notch-dot { display: inline-block; flex: none; width: 5px; height: 5px; border-radius: 50%; background: #62d4b2; box-shadow: 0 0 5px #62d4b230; }
.neva-led .notch-provider[data-state="error"] .notch-dot,
.neva-led .notch-provider[data-state="offline"] .notch-dot { background: #ffb4ae; box-shadow: none; }
.neva-led .notch-provider[data-state="thinking"] .notch-dot { background: #8fa0ff; animation: notch-status-pulse 1s infinite; }
@keyframes notch-status-pulse { 0%, 100% { opacity: .45; } 50% { opacity: 1; } }
.neva-led.is-reduced .notch-dot { animation: none !important; }

/* The Siri wave's static fallback when WebGL is unavailable (owner notch.css). */
.neva-led .notch-siri .notch-wave-fallback { display: none; position: absolute; left: 18px; top: 32px; width: 108px; height: 80px; stroke-width: 2 !important; fill: none; filter: drop-shadow(0 0 4px #8a95e8); }
.neva-led .notch-siri.is-wave-fallback > canvas { display: none; }
.neva-led .notch-siri.is-wave-fallback .notch-wave-fallback { display: block; }

/* Gentle / reduced motion: the painted silhouette and resident change at once
   (no residual 0.01ms transition from the shared reduced-motion rule). */
.neva-led.is-reduced :is(.notch-glass, .notch-shell, .neva-led__body, .notch-resident, .notch-anchor, .notch-dust) { transition: none !important; }
/* The shared rule's 0.01ms 'all' transition would also hold inherited
   visibility for a frame, so a keyboard open could not focus the visible view
   at once. Nothing inside the open body travels under reduced motion. */
.neva-led.is-reduced .neva-led__body * { transition: none !important; }
@media (prefers-reduced-motion: reduce) {
  .neva-led :is(.notch-glass, .notch-shell, .neva-led__body, .notch-resident, .notch-anchor, .notch-dust) { transition: none !important; }
  .neva-led .neva-led__body * { transition: none !important; }
}
