/* Quiet shared shell. Evidence and the current action carry the emphasis. */
[hidden] { display: none !important; }
/* Ticket 481: js/simple_nav.js puts .simple-mode on <body> for a typical user (a use case chosen,
   Advanced Operator off). A view tags a panel it keeps for experts with a data-advanced attribute. */
body.simple-mode [data-advanced] { display: none !important; }
#particle-field, #capture-context, #exec-journey, #wire-console { display: none !important; }
.navbar { background: #111; backdrop-filter: none; }
.nav-primary .nav-link { padding: .45rem .85rem; border-radius: .4rem; color: var(--ink-dim); }
.nav-primary .nav-link.is-active { color: var(--gold); background: var(--gold-soft); }
.nav-trigger { border-radius: .4rem; }
.brand__mark-text { fill: var(--ink-body); }
.api-status { font-size: var(--fs-2xs); }
.api-status__dot { box-shadow: none; animation: none; }
.view-root { padding-top: 1.25rem; }
.view-enter, .card { animation: none !important; }
.card { box-shadow: none; background: var(--panel); }
.card:hover { box-shadow: none; border-color: var(--border-strong); }
.btn--prominent { box-shadow: none; }
.stat-card__value, .stat-value, .command-simple__metric-value { color: var(--ink); text-shadow: none; }
#evidence-toolbar {
  display: flex; flex-wrap: wrap; gap: 1rem; padding-top: 1rem;
  font-size: var(--fs-2xs);
}
.capture-settings {
  width: min(44rem, calc(100vw - 2rem)); max-height: calc(100dvh - 2rem);
  padding: 1.25rem; border: 1px solid var(--border-strong); border-radius: .75rem;
  background: var(--panel); color: var(--ink); overflow-y: auto;
}
.capture-settings::backdrop { background: rgb(0 0 0 / .65); }
.capture-settings__heading { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.capture-settings__heading h2 { font-size: var(--fs-lg); margin: 0; }
.evidence-toolbar__line { display: flex; align-items: center; flex-wrap: wrap; gap: .5rem .85rem; width: 100%; }
.evidence-toolbar__state { color: var(--ink); }
.evidence-toolbar__range { flex: 1; color: var(--ink-dim); overflow-wrap: anywhere; }
.evidence-range summary, .evidence-status-details summary { cursor: pointer; color: var(--ink-dim); }
.evidence-range[open] { width: 100%; }
.evidence-range-form { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .75rem; padding: 1rem 0 .5rem; }
.evidence-range-form label { display: grid; gap: .3rem; min-width: 0; }
.evidence-range-form input {
  /* --panel, not --bg — matches the base `select` rule's `background-color` (console.css) so the
     date inputs and the preset select sharing this row don't show two different surface tones
     (ticket 039 review NIT 7). */
  min-width: 0; width: 100%; border: 1px solid var(--border-strong); background: var(--panel);
  color: var(--ink); border-radius: .4rem; font: inherit; padding: .5rem;
}
/* Selects fall through to the base `select` rule (console.css) for fill/border/chevron — no box
   properties here to duplicate or outrank it (ticket 016 review round 1). */
.evidence-range-form select, .evidence-range-presets select {
  min-width: 0; width: 100%;
}
.evidence-range-form .btn { align-self: end; justify-self: start; }
.evidence-range-presets { display: flex; gap: .5rem; flex-wrap: wrap; padding-top: .7rem; }
.evidence-range-presets select { width: auto; max-width: 100%; }
.evidence-status-details p { margin-bottom: .2rem; }
body.is-kiosk #evidence-toolbar { display: none; }
/* The global evidence-window strip (#evidence-summary, painted by js/evidence_toolbar.js) reads
   as a second, unrelated date control on screens that keep their own day/days window instead
   (ticket 009-20260919081953) — Investigations' work-queue list, Operations, Entities,
   and Deception. js/app.js's handleRoute() -> showView() sets body[data-route] to the resolved
   view name on every navigation, splitting "investigations" into its list (hidden here) and its
   detail page ("investigation", left visible) since only the id-in-hash case reads the window.
   Intrusion Groups (ticket 128) keeps its own window on both its list and detail pages.
   The entities, deception, and intrusion-groups selectors are belt-and-braces: none of those
   routes is in EVIDENCE_ROUTES (js/evidence_scope.js), so js/evidence_toolbar.js's paint()
   already sets #evidence-summary's [hidden] attribute there and the [hidden] rule at the top
   of this file wins on its own
   (ticket 024-20260919130647). Kept anyway so this rule stays a complete, self-contained list of
   every route the strip must never show on, independent of that other file's route set. */
body[data-route="investigations"] #evidence-summary,
body[data-route="operations"] #evidence-summary,
body[data-route="entities"] #evidence-summary,
body[data-route="deception"] #evidence-summary,
body[data-route="intrusion-groups"] #evidence-summary { display: none; }
@media (max-width: 760px) {
  .nav-primary .nav-link { padding: .4rem .6rem; font-size: var(--fs-xs); }
  .nav-trigger { padding-left: .6rem; font-size: var(--fs-2xs); }
  .evidence-toolbar__range { flex-basis: calc(100% - 5rem); }
  .evidence-range-form { grid-template-columns: 1fr; }
  .view-root { padding-inline: 1rem; }
}
@media print {
  .capture-settings { display: none; }
}

.auth-status:empty { display: none; }
.api-status { font-family: var(--font-ui); }
.evidence-summary {
  display: flex; align-items: center; flex-wrap: wrap; gap: .5rem .75rem;
  max-width: calc(var(--maxw) - 3rem); margin: 1.1rem auto 0;
  padding-inline: 0; color: var(--ink-dim); font-size: var(--fs-xs);
}
.evidence-summary > .btn { margin-left: auto; }
/* The quiet Partial badge (js/partial_badge.js, ticket 972) beside the strip's range label: a small
   neutral pill, no status color, that opens a panel with the caveat. The panel hangs from the badge's
   right edge so it opens toward the page; on a phone it spans the strip instead, so it stays on screen. */
.partial-badge { position: relative; display: inline-flex; }
.partial-badge__button {
  appearance: none; padding: var(--space-1) var(--space-2); border: 1px solid var(--border-strong);
  border-radius: 9999px; background: var(--glass); color: var(--ink-dim);
  font: var(--type-footnote); cursor: pointer;
}
.partial-badge__button:hover, .partial-badge__button[aria-expanded="true"] { color: var(--ink); border-color: var(--ink-muted); }
.partial-badge__button:focus-visible { outline: 2px solid var(--gold); outline-offset: 2px; }
.partial-badge .info-tip__panel {
  position: absolute; top: calc(100% + var(--space-2)); right: 0; z-index: 20; margin: 0;
  width: max-content; max-width: min(22rem, calc(100vw - 2rem)); padding: var(--space-3) var(--space-4);
  border: 1px solid var(--border-strong); border-radius: .6rem; background: var(--panel);
  box-shadow: 0 .5rem 1.5rem rgb(0 0 0 / .3);
}
@media (max-width: 760px) {
  .evidence-summary { position: relative; }
  .partial-badge { position: static; }
  .partial-badge .info-tip__panel { right: 0; left: 0; width: auto; max-width: none; }
}
.evidence-filter-chips { display: contents; }
.evidence-filter-chip {
  font: inherit; color: var(--ink-body); border: 1px solid var(--border-strong);
  border-radius: 1rem; background: var(--panel); padding: .35rem .7rem;
  cursor: pointer; max-width: 100%; overflow-wrap: anywhere;
}
.evidence-filter-chip:hover, .evidence-filter-chip:focus-visible { border-color: var(--gold); }
.body-note, .section__hint, .briefing-prose, .briefing-footer, .workspace-meta,
.empty-state p, .attacker-view p, .detail-evidence__limitation {
  font-family: var(--font-ui); font-size: var(--fs-sm); line-height: 1.55; letter-spacing: normal;
}
.briefing-prose { max-width: 72ch; }
/* Console mode controls (ticket 480), built by js/mode_controls.js into the Account page's card: an
   Advanced Operator switch (a button with role="switch", its track and thumb drawn here from
   aria-checked) and its help line (ticket 970: the account menu and the change-use-case link left). */
.mode-controls { display: flex; flex-direction: column; gap: .35rem; }
.mode-switch {
  display: flex; align-items: center; gap: .65rem; width: 100%; padding: .5rem .6rem;
  border: 1px solid transparent; border-radius: .55rem; background: transparent; color: var(--ink);
  font: inherit; font-size: var(--fs-sm); font-weight: 500; text-align: left; cursor: pointer;
}
.mode-switch:hover { background: var(--glass); }
.mode-switch[aria-busy="true"] { cursor: progress; }
.mode-switch__track {
  position: relative; flex: none; width: 2.2rem; height: 1.2rem; border-radius: 9999px;
  border: 1px solid var(--border-strong); background: var(--panel);
  transition: background .15s ease, border-color .15s ease;
}
.mode-switch__track::after {
  content: ""; position: absolute; top: 50%; left: .17rem; width: .8rem; height: .8rem;
  border-radius: 50%; background: var(--ink-dim); transform: translateY(-50%);
  transition: left .15s ease, background .15s ease;
}
.mode-switch[aria-checked="true"] .mode-switch__track { background: var(--gold-soft); border-color: var(--border-gold); }
.mode-switch[aria-checked="true"] .mode-switch__track::after { left: 1.07rem; background: var(--gold); }
.mode-controls__help { margin: 0 .6rem; color: var(--ink-muted); font-size: var(--fs-xs); }
.mode-controls--card .mode-switch { padding-inline: 0; }
.mode-controls--card .mode-controls__help { margin-inline: 0; }
@media (max-width: 1328px) { .evidence-summary { margin-inline: 1.5rem; } }
@media (max-width: 520px) {
  .brand__mark { width: 90px; }
  /* Ticket 482: an open navbar panel stays inside the viewport. The account menu hangs from the right edge
     of its trigger (console.css's .nav-panel, right: 0), and the trigger sits at the right of the row, so
     it fits at every width. The "More" panel that once hung from the left edge of the tools row below
     520px went in ticket 969. */
  .navbar__tools { position: relative; }
  .nav-trigger { padding: .4rem .3rem; }
  /* Ticket 143: at 390px a viewer's tools row (the search box at console.css's 8rem floor, More,
     the license dot, the account chip at its 8rem cap, the API status chip) needed 385px of its
     342px and pushed every page 19px wide. The API status chip collapses to its bare dot and the
     search box may shrink to 4rem, so the row fits whatever the username down to about 358px. */
  .api-status { font-size: var(--fs-2xs); padding: 0; border: 0; }
  .global-search { min-width: 4rem; }
  .nav-primary .nav-link { padding: .5rem .2rem; }
  .evidence-summary { margin-inline: 1rem; }
}
@media print { .evidence-summary { display: none; } }
