
/* Layout: manifest-style tool. Top: summary + controls. Body: fleet plan (wide) beside wishlist/bases rail; ledgers below. */
:root{
  /* #247 (owner 2026-11-02): light theme in mid greys (owner 2026-11-03: much darker than white, it tired the eyes); text colours darkened just enough to keep their contrast */
  --bg:#b3bac2; --panel:#c3c9cf; --panel-2:#a9b1ba; --line:#959fa9;
  --ink:#121a23; --ink-2:#3a4550; --ink-3:#3c444d;
  --accent:#2c3c8d; --accent-soft:#d1d6e2; --wb:#4c4400; --wb-soft:#d9dac9; --pred:#51347f; --pred-soft:#d6d6e2; --bb:#124867; --bb-soft:#cddbe3; --bb-ink:#164767;
  /* mining simulator display: the site palette, so it follows the theme (owner 2026-11-01) */
  --hud-bg:var(--surface-card); --hud-panel:var(--surface-sunken); --hud-line:var(--line-card); --hud-amber:var(--ink-link); --hud-amber2:color-mix(in srgb,var(--ink-link) 40%,transparent);
  --hud-ink:var(--ink-body); --hud-ink2:var(--ink-secondary); --hud-green:var(--good); --hud-red:var(--bad); --hud-orange:var(--warn); --hud-beam:var(--bad);
  --hud-rock:color-mix(in srgb,var(--ink-3) 55%,var(--panel)); /* the 3D rock: a mid stone grey in both themes */
/* buyback: azul bebé, distinto del acento (CCU disponible) */
  --good:#124d2f; --good-soft:#cedad8; --warn:#593d00; --warn-soft:#dad9cf; --bad:#792820; --bad-soft:#dad2d4;
  --info:#20466a; --info-soft:#cfd7df;
  --f-display:"Saira Semi Condensed","Arial Narrow",system-ui,sans-serif;
  --f-body:"IBM Plex Sans",system-ui,-apple-system,"Segoe UI",sans-serif;
  --f-mono:"IBM Plex Mono",ui-monospace,Consolas,monospace;
  --r:6px; --r-lg:10px;
  --shadow:0 1px 2px rgba(18,26,35,.06),0 4px 14px rgba(18,26,35,.05);
  --glow-dark:#07121a; --ink-on-glow:#fff; /* #231 the export button: its near-black centre and white text, both themes */
  --mask-fade-down:linear-gradient(#000,transparent); /* #228 the grid fades out downwards */
  --bg-grid:color-mix(in srgb,var(--brand) 13%,transparent); /* #228 background grid lines, both themes */
  --glow:rgba(64,88,208,.07); --save:rgba(29,122,74,.14); --grid:rgba(18,26,35,.07);
  --brand:#186865; --brand-soft:#ccdadd;
  /* UX-001/002/015: per-theme variants. *-strong = small text and filled buttons (darker in light, same hue as the base in dark); --on-fill = text on those fills */
  --brand-strong:#0f4b49; --accent-strong:#283b94; --ochre-strong:#643806; --warn-strong:#5a3f00; --good-strong:#114d2e; --wb-strong:#4b4400; --pred-strong:#503480; --on-fill:#ffffff;
  --line-ctl:#5b656e; --focus:#0f4b49; --dt0:#6d3300; --sk-em:#4f4200; --sk-cs:#144864;
  /* Lote 3-7: severity scales (resistance, instability…) keep green > teal > orange, not the accent; --line-btn = soft border of text buttons and chips (fields and icon buttons keep --line-ctl, UX-002) */
  --sev-low:var(--good); --sev-mid:var(--brand); --sev-high:#8a4f0a; --sev-high-strong:#673800; --line-btn:color-mix(in srgb,var(--line-ctl) 40%,var(--line));
  /* UX-051: scales close to the values already in use */
  --fs-0:11px; --fs-1:12px; --fs-2:13px; --fs-3:14px; --fs-4:16px; --fs-5:19px; --fs-6:24px; --fs-7:34px;
  --r-1:4px; --r-2:6px; --r-3:10px; --r-4:12px; --r-pill:999px;
  --ctl-h:32px; --space-1:4px; --space-2:8px; --space-3:12px; --space-4:16px; --space-5:24px; --space-6:32px;
  /* Layer 1b, scale primitives (no meaning, consumed directly): --fw weights; --lh line-height x100; --tracking letter-spacing in em x100; --dur durations; --z layers, low to high: raised (content) < pinned (sticky) < dropdown < popover < modal (dialog) < tip/float (tooltip, drag ghost) < toast. Open dialogs use showModal() (top layer): nothing outside them, tooltip or toast included, can be above them, whatever its z-index; the order only counts for dialogs opened without it */
  --fw-regular:400; --fw-badge:500; --fw-medium:500; --fw-semibold:600; --fw-bold:700;
  --lh-100:1; --lh-105:1.05; --lh-110:1.1; --lh-115:1.15; --lh-120:1.2; --lh-125:1.25; --lh-130:1.3; --lh-140:1.4; --lh-145:1.45; --lh-150:1.5; --lh-155:1.55;
  --tracking-1:.01em; --tracking-2:.02em; --tracking-3:.03em; --tracking-4:.04em; --tracking-5:.05em; --tracking-6:.06em; --tracking-8:.08em; --tracking-10:.1em; --tracking-12:.12em;
  /* Tracking of caps text, one per size: label = caps label at 12 px (also table head, caption); label-lg = caps label at 13 px */
  --tracking-label:var(--tracking-6); --tracking-kicker:var(--tracking-12); --tracking-brand:.14em /* off-scale */; --tracking-label-lg:var(--tracking-8);
  --dur-1:.12s; --dur-2:.15s; --dur-3:.2s;
  /* Inicio (owner 2026-11-08): hero title sizes, wide kicker tracking and the running lights / ticker / carousel timings */
  --fs-hm-hero:clamp(34px,5.4vw,70px); --fs-hm-h3:clamp(26px,3.2vw,40px); --hm-track-wide:.22em; /* off-scale */
  --glow-good-led:0 0 6px var(--good),0 0 12px color-mix(in srgb,var(--good) 60%,transparent);
  --tube-lit:color-mix(in srgb,color-mix(in srgb,#5fd0cc 30%,#e2b54a) 82%,#fff); /* the lit yellow tube (#363): the dark-theme brand and warn, fixed in both themes (owner 2026-11-10) */
  --glow-tube:0 0 6px color-mix(in srgb,var(--tube-lit) 70%,transparent),0 0 16px color-mix(in srgb,var(--tube-lit) 35%,transparent);
  --glow-tube-hover:0 0 8px var(--tube-lit),0 0 22px color-mix(in srgb,var(--tube-lit) 55%,transparent);
  --dur-hm-blink:2.4s; --dur-hm-run:6s; --dur-hm-fill:7s; --dur-hm-tick:70s;
  --z-raised:10; --z-pinned:20; --z-dropdown:30; --z-popover:40; --z-modal:1000; --z-tip:2000; --z-float:2000; --z-toast:3000; --z-toast-top:3000; --z-tour-dim:2147482999; --z-tour-hole:2147483000; --z-tour-pop:2147483001;
  /* Layer 2, roles (stylesheets consume these; each comment is the canonical doc of its group; "off-scale" = today's value is not on a scale, decided in V2). Font size: cell/head/label/caption = table cell (cell-sm = same on a phone), table head, caps label, small caption; control(-sm) = button/field text; note/chip = hint text (12 px) and chip or ghost button (13 px); subtitle = small heading; stat-* = figures and card titles; body-sm/body/title = running text 13/14/16 px (title = h3, dialog and card titles, header button); heading = h2 (heading-sm = h3 of the patch dialog, heading-lg = its h2); badge = pill label 12 px (controls, interactive pills); micro = 11 px, only for text that an icon or colour already says (non-interactive complementary pill or badge, level, counter, chart legend, axis mark), weight >= 500, contrast >= 4.5:1, never in pressed controls or compared figures (checked by dev/tests/unit/css.test.mjs); label-lg = caps label at 13 px; tab = view tab; icon(-lg) = glyph inside an icon button or star toggle (16/19 px); figure(-lg) = KPI figure; display = h1; value = emphasised value in a line (15 px); figure-em = figure scaled to its line (1.2em); hero-sm = giant figure (lights countdown, 44 px); body-md = explanatory paragraph at 13.5 px */
  --fs-cell:var(--fs-2); --fs-head:var(--fs-1); --fs-label:var(--fs-1); --fs-caption:var(--fs-1); --fs-control:var(--fs-2); --fs-control-sm:var(--fs-1);
  --fs-small:.8333em /* off-scale: UA "small", relative to the parent; never below --fs-1 */; --fs-note:var(--fs-1); --fs-chip:var(--fs-2); --fs-subtitle:var(--fs-4); --fs-value:var(--fs-4); --fs-figure-em:1.2em /* off-scale */;
  --fs-stat-sm:var(--fs-4); --fs-stat-md:var(--fs-5); --fs-stat:var(--fs-5); --fs-stat-lg:22px /* off-scale */; --fs-stat-xl:26px /* off-scale */; --fs-hero-sm:44px /* off-scale */; --fs-body-md:var(--fs-3);
  --fs-cell-sm:var(--fs-1); --fs-badge:var(--fs-1); --fs-micro:var(--fs-0); --fs-label-lg:var(--fs-2); --fs-tab:var(--fs-1); --fs-icon:var(--fs-4); --fs-icon-lg:var(--fs-5); --fs-heading-sm:var(--fs-3); --fs-heading-lg:var(--fs-6); --fs-body-sm:var(--fs-2); --fs-body:var(--fs-3); --fs-title:var(--fs-4); --fs-heading:var(--fs-5); --fs-figure:var(--fs-5); --fs-figure-lg:var(--fs-6); --fs-display:var(--fs-7);
  /* Radius: control = button/field/chip rectangle; box = inner notice box; card = card/dialog/panel; micro = badge, kbd, icon button; chip = pill; swatch = colour sample, slider track; image = ship picture and its placeholder (6 px), top-btn = header utility button, thumb = thumbnail, drag handle (thumb-lg = the 4 px variant in the table name cell and column grip); round = dot; bar = bar track and its fill (3 px); cap-start = left cap of a bar segment; badge-size = size badge */
  --r-control:var(--r-2); --r-control-in:calc(var(--r-control) - 1px); --r-box:var(--r-2); --r-card:var(--r-3); --r-micro:var(--r-1); --r-chip:var(--r-pill); --r-swatch:var(--r-1); --r-thumb:var(--r-1); --r-thumb-lg:var(--r-1); --r-image:var(--r-2); --r-top-btn:var(--r-3); --r-round:50%; --r-cap-start:var(--r-1) 0 0 var(--r-1); --r-badge-size:var(--r-2); --r-bar:var(--r-1);
  /* Gap and padding: tight = glued items; icon = icon beside text; cluster = group of controls; panel = inside a box; section = between cards; stack = label above value. pad: tight = icon button or link; control(-sm) = text button; top-btn = header utility button; cell = table cell; notice = notice box; tile = KPI tile; card = card or box with 12 px, box = 12 px 16 px (dialog head, status box), panel = 16 px (dialog body, side box); badge = pill label; card-lg = summary cell; notice-sm = inline warning; gap-page = between page blocks; gap-block-md = between blocks of a tool page (14px); gap-cluster-x = column gap of wrapped clusters; gap-bar-x = column gap of wrapped bars; control-xs and field-sm = small button (3px 8px) and small field (5px 8px), off-scale next to control-sm; field-xs = small input in a table or filter (4px 6px); chip = compact header button, option chip or code box (6px 10px); gap cluster-sm = group of controls at 6 px (cluster is 8), block = between blocks of a view; fav = favourite/wish star toggle; compact = small box, select or segment button (6px 8px); cell-lg = advisor table cell (7px 10px); badge-sm/badge-xs = pill label of 1px 7px and 1px 8px; tier = tier badge (0 5px); seg-sm = segment button in the fleet rail (3px 7px); chip-sm = option chip in a filter (4px 10px); box-md = side box or advisor dialog (14px); toast = toast padding, inset-toast = its distance from the bottom edge; chip-remove = removable chip (2px, left 8px); tab-panel = top padding of a tab panel; cell-md = component table cell (8px 12px); gap cluster-xs = items at 5 px, tight-sm = items at 3 px; pad box-sm = small stat box (5px 8px), box-xs = small list button or cell box (4px 6px), badge-md = size badge (2px 7px), badge-x = side padding of a tiny tag (0 4px), row = vertical padding of a list row (6px, row-md = 8px), tab-row = side padding of a row of page tabs, dialog = head, body and foot of a tool window (12px 18px), tab = tab button of a window or page, rule = padding under a divider line, panel-sm = small inner box (8px 10px), card-sm = step or tray row (8px 12px), badge-2xs = tiny pill label (1px 6px), seg-inset = padding of a segmented control around its buttons (2px) */
  --gap-tight:var(--space-1); --gap-icon:6px /* off-scale */; --gap-cluster:var(--space-2); --gap-panel:10px /* off-scale */; --gap-section:var(--space-3); --gap-stack:2px /* off-scale */; --gap-cluster-sm:6px /* off-scale */; --gap-block:var(--space-4); --gap-cluster-xs:5px /* off-scale */; --gap-tight-sm:3px /* off-scale */; --gap-block-md:14px /* off-scale */;
  --pad-tight:var(--space-1); --pad-control:var(--space-1) var(--space-3); --pad-control-sm:var(--space-1) var(--space-2); --pad-top-btn:var(--space-1) 10px /* off-scale */;
  --pad-cell:6px 8px /* off-scale */; --pad-cell-compact:4px 8px /* off-scale */; --pad-field-xs:4px 6px /* off-scale */; --pad-head:var(--space-2); --pad-notice:10px 12px /* off-scale */; --pad-tile:10px 12px /* off-scale */;
  --pad-card-lg:16px 18px /* off-scale */; --pad-notice-sm:var(--space-2) var(--space-3); --gap-page:20px /* off-scale */; --gap-cluster-x:14px /* off-scale */; --gap-bar-x:var(--space-4);
  --pad-card:var(--space-3); --accent-w:3px; --pad-card-accent:calc(var(--space-3) + 2px) /* off-scale */; --pad-box:var(--space-3) var(--space-4); --pad-panel:var(--space-4); --pad-badge:1px 7px /* off-scale */; --pad-field-compact:2px var(--space-2); --pad-control-xs:3px 8px /* off-scale */; --pad-chip:6px 10px /* off-scale */; --pad-fav:2px 4px /* off-scale */; --pad-compact:6px 8px /* off-scale */; --pad-cell-lg:7px 10px /* off-scale */; --pad-badge-sm:0 6px /* off-scale */; --pad-badge-xs:1px 8px /* off-scale */; --pad-tier:0 5px /* off-scale */; --pad-seg-sm:3px 7px /* off-scale */; --pad-chip-sm:4px 10px /* off-scale */; --pad-box-md:14px /* off-scale */; --pad-toast:var(--space-2) var(--space-4); --inset-toast:var(--space-5); --pad-chip-remove:2px 2px 2px var(--space-2); --pad-tab-panel:var(--space-3); --pad-box-sm:5px 8px /* off-scale */; --pad-box-xs:4px 6px /* off-scale */; --pad-badge-md:2px 7px /* off-scale */; --pad-badge-x:0 4px /* off-scale */; --pad-row:6px 0 /* off-scale */; --pad-row-md:8px 0 /* off-scale */; --pad-tab-row:0 14px /* off-scale */; --pad-dialog:12px 18px /* off-scale */; --pad-tab:9px 8px /* off-scale */; --pad-panel-sm:8px 10px /* off-scale */; --pad-card-sm:var(--space-2) var(--space-3); --pad-badge-2xs:1px 6px /* off-scale */; --pad-seg-inset:2px /* off-scale */; --pad-rule:var(--space-2);
  /* Sizes: ctl-h = control heights (sm, top = header utility button, icon = icon-only button); target = minimum hit area (min WCAG 2.5.8, coarse = pointer:coarse); icon-md = icon inside a button; thumb-size = slider thumb; thumb-sm = small thumbnail; rail = sticky side rail */
  --ctl-h-sm:28px; --ctl-h-top:30px; --ctl-h-icon:34px; --target-min:24px; --target-coarse:44px; --icon-md:18px; --thumb-size:18px; --thumb-sm:28px; --rail-top:calc(var(--top-fix,0px) + 16px); --rail-max-h:calc(100vh - var(--top-fix,0px) - 32px);
  /* Colour (aliases of theme primitives, no dark block): ink = text colour by role (note/head/label = muted text, body = main text, secondary, link, accent, error, brand = brand-coloured heading or selected state, icon = muted icon or glyph, inverse = text on an inverse surface, mark = brand-coloured logo text); line = border (row = table line, card, field, icon-btn, chip = soft border of chips and ghost buttons, brand = selected or highlighted edge, accent = same in the accent colour, muted = chevron or spinner stroke, primary = edge of a primary-filled item, hover = edge of a hovered control, grid = ring or axis of a chart, active = selected item, guide = dashed reference or series line of a chart and its legend swatch, card-hover = edge of a hovered card, brand-soft = softer brand edge of dashed or zoom controls, inverse = tick drawn on a filled box, marker = needle or hover outline of a chart bar, surface = ring in the card colour around a chart dot, error); surface = background (card, control, field, sunken = KPI/table head, hover, active = hovered or chosen row, accent = accent wash, track = bar track, page = page background seen through a card (location pill, ring of a timeline dot), inverse = tooltip or status pill on the opposite theme colour, slider-off = thumb of a slider that is off); fill = solid fill (primary, brand, danger, meter = bar fill, accent = accent bar or slider, muted = neutral dot or bar, marker = thin needle or tick); tint = colour-mix washes (row/row-solid = hover or zebra row, selected, chip-active, ring = selection ring, halo = emphasis halo, field-focus = ring of a focused field, scroll-edge = shadow at the edge of a scrolling table, chip-pressed = pressed chip, glow = glow of a pressed chip, grip = focused or hovered grip, zebra = alternate priority row, zoom / zoom-hover = zoom control and its button hover, track-on / track-off = slider track active or off, role = role card background) */
  --ink-note:var(--ink-3); --ink-head:var(--ink-2); --ink-label:var(--ink-3); --ink-secondary:var(--ink-2); --ink-link:var(--brand-strong); --ink-accent:var(--accent-strong); --ink-body:var(--ink); --ink-error:var(--bad); --ink-brand:var(--brand-strong); --ink-icon:var(--ink-3); --ink-inverse:var(--bg); --ink-mark:var(--brand);
  --line-row:var(--line); --line-card:var(--line); --line-field:var(--line-ctl); --line-icon-btn:var(--line-ctl); --line-active:color-mix(in srgb,var(--brand) 55%,var(--line)); --line-chip:var(--line-btn); --line-brand:var(--brand); --line-accent:var(--accent); --line-muted:var(--ink-3); --line-primary:var(--ochre-strong); --line-hover:var(--ink-2); --line-grid:var(--line); --line-error:color-mix(in srgb,var(--bad) 55%,transparent); --line-guide:var(--ink-2); --line-card-hover:color-mix(in srgb,var(--brand) 40%,var(--line)); --line-brand-soft:color-mix(in srgb,var(--brand) 60%,var(--line)); --line-inverse:var(--bg); --line-marker:var(--ink); --line-surface:var(--panel);
  --surface-card:var(--panel); --surface-control:var(--panel); --surface-field:var(--bg); --surface-sunken:var(--panel-2); --surface-hover:var(--panel-2); --surface-track:var(--line); --surface-meter:color-mix(in srgb,var(--ink-3) 28%,var(--panel)); --surface-slider-off:color-mix(in srgb,var(--ink-3) 45%,var(--panel)); --surface-active:var(--brand-soft); --surface-accent:var(--accent-soft); --surface-page:var(--bg); --surface-inverse:var(--ink);
  --ink-highlight:var(--ochre-strong); /* not used: the game-version figure follows the counts' colour (ADR 0043, owner 2026-11-03) */
  --fill-primary:var(--ochre-strong); --fill-brand:var(--brand-strong); --fill-danger:var(--bad); --fill-meter:var(--brand); --fill-accent:var(--accent); --fill-muted:var(--ink-3); --fill-marker:var(--ink);
  --tint-row:color-mix(in srgb,var(--panel-2) 45%,transparent); --tint-row-solid:color-mix(in srgb,var(--panel-2) 45%,var(--panel)); --tint-selected:color-mix(in srgb,var(--brand) 18%,transparent); --tint-chip-active:color-mix(in srgb,var(--brand) 30%,transparent); --tint-ring:color-mix(in srgb,var(--brand) 25%,transparent); --tint-halo:color-mix(in srgb,var(--brand) 45%,transparent); --tint-field-focus:color-mix(in srgb,var(--brand) 30%,transparent); --tint-scroll-edge:color-mix(in srgb,var(--ink) 22%,transparent); --tint-chip-pressed:color-mix(in srgb,var(--brand) 16%,var(--panel)); --tint-glow:color-mix(in srgb,var(--brand) 28%,transparent); --tint-grip:color-mix(in srgb,var(--brand) 14%,transparent); --tint-zebra:color-mix(in srgb,var(--brand) 5%,transparent); --tint-zoom:color-mix(in srgb,var(--brand) 9%,var(--panel)); --tint-zoom-hover:color-mix(in srgb,var(--brand) 18%,var(--panel)); --tint-track-on:color-mix(in srgb,var(--ink-3) 55%,transparent); --tint-track-off:color-mix(in srgb,var(--ink-3) 18%,transparent); --tint-role:color-mix(in srgb,var(--panel-2) 55%,var(--bg));
  /* Focus, opacity, shadow: focus-ring = outline; focus-offset(-inset) = outline-offset (inset = element that clips its outline); op-disabled = every disabled control (.btn included), op-drag = dragged row; shadow-raise = raised button/card, shadow-modal = dialog, shadow-ring-active = inset ring of an active segment; shadow-ring-brand = 3 px brand ring around a hovered or grabbed button; shadow-slider-thumb = ring and glow of a slider thumb; scrim = backdrop behind a dialog; op-dim = parts faded while others are pointed at, op-seg-mid / op-seg-low = shaded segments of a bar and its legend */
  --focus-ring:2px solid var(--focus); --focus-offset:2px; --focus-field:inset 0 0 0 1px var(--focus); --focus-offset-inset:-2px;
  --op-disabled:.45; --op-drag:.4; --op-dim:.4; --op-seg-mid:.6; --op-seg-low:.35; --op-hidden:0; --op-past:.75 /* #227 a collected refinery order */;
  /* owner 2026-11-01: info asterisks in the brand turquoise of the «SC» mark, lit like the logo */
  --glow-panel-brand:0 0 14px color-mix(in srgb,var(--brand) 20%,transparent),inset 0 0 18px color-mix(in srgb,var(--brand) 6%,transparent);
  --ast-ink:var(--brand-strong); --ast-glow:0 0 4px color-mix(in srgb,var(--brand) 55%,transparent);
  --chk-mark:url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27%3E%3Cpath d=%27M3.5 8.5l3 3 6-7%27 fill=%27none%27 stroke=%27%23ffffff%27 stroke-width=%272.2%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27/%3E%3C/svg%3E");
  --cell-good:linear-gradient(90deg,transparent 20%,color-mix(in srgb,var(--good) 18%,transparent)); --cell-bad:linear-gradient(90deg,transparent 20%,color-mix(in srgb,var(--bad) 16%,transparent));
  --cell-good-edge:inset -2px 0 0 color-mix(in srgb,var(--good) 75%,transparent),inset 0 0 14px color-mix(in srgb,var(--good) 10%,transparent); --cell-bad-edge:inset -2px 0 0 color-mix(in srgb,var(--bad) 70%,transparent),inset 0 0 14px color-mix(in srgb,var(--bad) 8%,transparent);
  --glow-good-text:0 0 8px color-mix(in srgb,var(--good) 55%,transparent); --glow-bad-text:0 0 8px color-mix(in srgb,var(--bad) 45%,transparent);
  --shadow-raise:var(--shadow); --shadow-modal:0 20px 60px rgba(0,0,0,.35); --shadow-ring-active:inset 0 0 0 1px var(--brand); --shadow-ring-brand:0 0 0 3px var(--tint-ring); --shadow-slider-thumb:0 0 0 2px var(--tint-ring),0 0 8px 2px color-mix(in srgb,var(--brand) 70%,transparent); --scrim:rgba(7,12,16,.55);
  /* Component families shared by duplicated blocks: pill-btn = text pill button (.acc-btn .fb-btn .ref-btn .kofi-btn .tut-btn; pill-btn-pad-compact = same button on a phone, icon only); field = form field */
  --pill-btn-gap:7px /* off-scale */; --btn-pad:6px 12px /* off-scale */; --pill-btn-pad-compact:6px 8px /* off-scale */; --field-pad:6px 8px /* off-scale */;
  /* Margins (stack): section = a row or block separated from the previous one; detail = content or note revealed under a summary or a block (detail-sm = the same at 6 px); item = list or row separated from the previous one (8 px); tight = note or list right under a line (4 px); micro = 2 px offset; tabs = below a row of page tabs (14 px) */
  --stack-section:var(--space-3); --stack-detail:10px /* off-scale */; --stack-detail-sm:6px /* off-scale */; --stack-item:var(--space-2); --stack-tight:var(--space-1); --stack-micro:2px /* off-scale */; --stack-tabs:14px /* off-scale */;
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  --bg:#0d1319; --panel:#141c24; --panel-2:#1a242e; --line:#26333f;
  --ink:#e3e9ef; --ink-2:#a3b0bc; --ink-3:#8593a0;
  --accent:#6fa8ff; --accent-soft:#16284a; --wb:#ecdc5a; --wb-soft:#2c2b10; --pred:#b493ee; --pred-soft:#271d38; --bb:#9fd8ff; --bb-soft:#173444; --bb-ink:#a6dcff;
  --good:#5cc68d; --good-soft:#15301f; --warn:#e2b54a; --warn-soft:#352a10; --bad:#ef7d70; --bad-soft:#3a1b18;
  --info:#7fb2e0; --info-soft:#16283a; --shadow:0 1px 2px rgba(0,0,0,.4),0 6px 18px rgba(0,0,0,.28); --glow:rgba(138,158,255,.06); --save:rgba(92,198,141,.16); --grid:rgba(227,233,239,.07); --brand:#5fd0cc; --brand-soft:#11292b;
  --brand-strong:#5fd0cc; --accent-strong:#6fa8ff; --ochre-strong:#e5a24a; --warn-strong:#e2b54a; --good-strong:#5cc68d; --wb-strong:#ecdc5a; --pred-strong:#b493ee; --on-fill:#0d1319; --line-ctl:#66778a; --focus:#5fd0cc; --dt0:#f08c2e; --sk-em:#e0c34a; --sk-cs:#4fb7e3; --sev-high:#e5a24a; --sev-high-strong:#e5a24a; color-scheme:dark; --ast-ink:color-mix(in srgb,var(--brand) 35%,#fff); --ast-glow:0 0 2px var(--brand),0 0 6px var(--brand),0 0 12px color-mix(in srgb,var(--brand) 60%,transparent); --chk-mark:url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27%3E%3Cpath d=%27M3.5 8.5l3 3 6-7%27 fill=%27none%27 stroke=%27%230d1319%27 stroke-width=%272.2%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27/%3E%3C/svg%3E");}}
:root[data-theme="dark"]{
  --bg:#0d1319; --panel:#141c24; --panel-2:#1a242e; --line:#26333f;
  --ink:#e3e9ef; --ink-2:#a3b0bc; --ink-3:#8593a0;
  --accent:#6fa8ff; --accent-soft:#16284a; --wb:#ecdc5a; --wb-soft:#2c2b10; --pred:#b493ee; --pred-soft:#271d38; --bb:#9fd8ff; --bb-soft:#173444; --bb-ink:#a6dcff;
  --good:#5cc68d; --good-soft:#15301f; --warn:#e2b54a; --warn-soft:#352a10; --bad:#ef7d70; --bad-soft:#3a1b18;
  --info:#7fb2e0; --info-soft:#16283a; --shadow:0 1px 2px rgba(0,0,0,.4),0 6px 18px rgba(0,0,0,.28); --glow:rgba(138,158,255,.06); --save:rgba(92,198,141,.16); --grid:rgba(227,233,239,.07); --brand:#5fd0cc; --brand-soft:#11292b;
  --brand-strong:#5fd0cc; --accent-strong:#6fa8ff; --ochre-strong:#e5a24a; --warn-strong:#e2b54a; --good-strong:#5cc68d; --wb-strong:#ecdc5a; --pred-strong:#b493ee; --on-fill:#0d1319; --line-ctl:#66778a; --focus:#5fd0cc; --dt0:#f08c2e; --sk-em:#e0c34a; --sk-cs:#4fb7e3; --sev-high:#e5a24a; --sev-high-strong:#e5a24a; color-scheme:dark; --ast-ink:color-mix(in srgb,var(--brand) 35%,#fff); --ast-glow:0 0 2px var(--brand),0 0 6px var(--brand),0 0 12px color-mix(in srgb,var(--brand) 60%,transparent); --chk-mark:url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27%3E%3Cpath d=%27M3.5 8.5l3 3 6-7%27 fill=%27none%27 stroke=%27%230d1319%27 stroke-width=%272.2%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27/%3E%3C/svg%3E");}
*{box-sizing:border-box}
body{background:var(--surface-page);background-image:radial-gradient(1200px 420px at 12% -120px,var(--glow),transparent 70%);background-repeat:no-repeat;color:var(--ink-body);font-family:var(--f-body);font-size:var(--fs-body);line-height:var(--lh-145);-webkit-font-smoothing:antialiased}
/* #228 a fine grid behind the top of the page, fading out at the bottom line of the main tool bar (--grid-h, set by barra.js) */
body::before{content:"";position:absolute;top:0;left:0;right:0;height:var(--grid-h,0px);z-index:-1;pointer-events:none;background-image:linear-gradient(var(--bg-grid) 1px,transparent 1px),linear-gradient(90deg,var(--bg-grid) 1px,transparent 1px);background-size:40px 40px;background-position:-1px -1px;-webkit-mask-image:var(--mask-fade-down);mask-image:var(--mask-fade-down)}
/* UX: grid children may shrink to the screen (phones): without this a wide chain pushed the whole page sideways */
.wrap>*,.wrap>*>*{min-width:0}
.wrap{max-width:none;margin:0 auto;padding-block:20px 48px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));display:grid;gap:var(--gap-page)}
h1,h2,h3{font-family:var(--f-display);text-wrap:balance;margin:0;letter-spacing:var(--tracking-1)}
h1{font-size:var(--fs-display);font-weight:var(--fw-bold);line-height:var(--lh-100);letter-spacing:var(--tracking-2)}
h2{font-size:var(--fs-heading);font-weight:var(--fw-semibold)}
h3{font-size:var(--fs-title);font-weight:var(--fw-semibold)}
small{font-size:max(var(--fs-small),var(--fs-1))}
.eyebrow{font-family:var(--f-mono);font-size:var(--fs-label);letter-spacing:var(--tracking-brand);text-transform:uppercase;color:var(--ink-accent)}
.num{font-family:var(--f-mono);font-variant-numeric:tabular-nums}
.muted{color:var(--ink-secondary)} .faint{color:var(--ink-note)}
button,input,select{font:inherit;color:inherit}
button{cursor:pointer}
:focus-visible{outline:var(--focus-ring);outline-offset:var(--focus-offset)}
/* #244: text fields show focus on their own border (one line), not an outline 2 px away from it */
:where(input:not([type=checkbox],[type=radio],[type=range],[type=button],[type=submit],[type=reset],[type=color],[type=file],[type=image]),select,textarea):is(:focus,:focus-visible){outline:none;border-color:var(--focus);box-shadow:var(--focus-field)}

header.top{display:flex;flex-direction:column;flex-wrap:nowrap;gap:14px;align-items:flex-start;justify-content:flex-start;padding-bottom:16px;border-bottom:1px solid var(--line-card);position:relative}
.brand{display:flex;align-items:center;gap:16px;min-width:0}
.brand-mark{width:64px;height:64px;flex:none;filter:drop-shadow(0 4px 14px color-mix(in srgb,var(--brand) 28%,transparent))}
.brand-eyebrow{color:var(--ink-brand)}
.wordmark{text-transform:uppercase;letter-spacing:var(--tracking-6)}
.wordmark span{color:var(--ink-mark)}
a.brand-home{display:flex;flex:none;color:inherit;text-decoration:none}a.brand-home:focus-visible{outline:var(--focus-ring);outline-offset:var(--focus-offset);border-radius:var(--r-box)}
@media (max-width:520px){.brand-mark{width:48px;height:48px}.brand{gap:var(--gap-section)}h1.wordmark{font-size:28px}}
header.top .stamp .stale{color:var(--warn-strong)}
.btn.hdr-btn{display:inline-flex;align-items:center;gap:var(--gap-panel);padding:10px 16px;border-radius:var(--r-top-btn);font-family:var(--f-display);font-size:var(--fs-title);font-weight:var(--fw-semibold);letter-spacing:var(--tracking-2);cursor:pointer;line-height:var(--lh-110);box-shadow:var(--shadow-raise);transition:background var(--dur-2),border-color var(--dur-2),box-shadow var(--dur-2),transform .1s}
.hdr-btn svg{width:22px;height:22px;flex:none;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.hdr-btn span{display:grid;text-align:left}
.hdr-btn small{font-family:var(--f-body);font-size:var(--fs-caption);font-weight:var(--fw-regular);letter-spacing:0}
.hdr-btn:active{transform:translateY(1px)}
.btn.hdr-import{background:var(--fill-brand);border:1px solid var(--fill-brand);color:var(--on-fill)}
.btn.hdr-import:hover{background:color-mix(in srgb,var(--fill-brand) 85%,var(--fill-marker));border-color:var(--fill-brand);box-shadow:var(--shadow-ring-brand)}
.btn.brand{background:var(--fill-brand);border-color:var(--fill-brand);color:var(--on-fill)}
.btn.brand:hover{background:color-mix(in srgb,var(--fill-brand) 85%,var(--fill-marker));border-color:var(--fill-brand);box-shadow:var(--shadow-ring-brand)}
.dlg-sync{width:min(560px,calc(100vw - 32px))}
.sync-pane{display:grid;gap:var(--gap-section)}
.sync-pane[hidden],#sync-login[hidden]{display:none}
.sync-bar{height:8px;border-radius:var(--r-pill);background:var(--surface-track);overflow:hidden}
.sync-bar i{display:block;height:100%;width:4%;background:var(--fill-meter);border-radius:inherit;transition:width .4s ease}
.dlg-sync label.btn{cursor:pointer}
.bm-step{display:grid;grid-template-columns:auto 1fr;gap:var(--gap-section);align-items:start;padding:var(--pad-card);border:1px solid var(--line-card);border-radius:var(--r-box)}
.bm-n{display:grid;place-items:center;width:26px;height:26px;border-radius:var(--r-round);background:var(--fill-brand);color:var(--on-fill);font-weight:var(--fw-bold);font-size:var(--fs-body-sm)}
.bm-row{display:flex;flex-wrap:wrap;gap:var(--gap-panel);align-items:center;margin-top:8px}
.bm-btn{display:inline-flex;align-items:center;gap:var(--gap-cluster);padding:9px 16px;border-radius:var(--r-chip);background:var(--fill-brand);color:var(--on-fill);font-weight:var(--fw-bold);text-decoration:none;cursor:grab;box-shadow:var(--shadow-ring-brand)}
.bm-btn:active{cursor:grabbing}
.bm-btn svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.bm-hint{font-size:var(--fs-caption);color:var(--ink-note)}
.bm-hint kbd{font:inherit;font-size:var(--fs-caption);padding:1px 5px;border:1px solid var(--line-card);border-radius:var(--r-micro)}
.dlg-sync a.btn{display:inline-flex}
.sync-more summary{cursor:pointer;color:var(--ink-secondary);font-size:var(--fs-body-sm)}
.sync-ways{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--gap-panel)}
@media (max-width:520px){.sync-ways{grid-template-columns:minmax(0,1fr)}}
.sync-way{all:unset;box-sizing:border-box;display:grid;align-content:start;gap:var(--gap-icon);padding:var(--pad-card);border:1px solid var(--line-card);border-radius:var(--r-control);background:var(--surface-card);color:var(--ink-body);font-size:var(--fs-body-sm);cursor:pointer}
.sync-way:hover{border-color:var(--line-brand)}
.sync-way:focus-visible{outline:var(--focus-ring);outline-offset:var(--focus-offset)}
.sync-way-rec{border-color:var(--line-brand);box-shadow:0 0 0 3px color-mix(in srgb,var(--line-brand) 22%,transparent)}
.sync-way-h{display:flex;align-items:center;gap:var(--gap-cluster);font-size:var(--fs-subtitle)}
.sync-rec{padding:var(--pad-notice);border-radius:var(--r-box);background:color-mix(in srgb,var(--fill-meter) 12%,transparent);border:1px solid color-mix(in srgb,var(--line-brand) 40%,transparent)}
.sync-rec[hidden]{display:none}
.sync-more .dlg-list{margin-top:8px}
.sync-diff{margin-top:10px;padding:var(--pad-notice);border:1px solid var(--line-card);border-radius:var(--r-box);background:var(--surface-sunken);font-size:var(--fs-body-sm)}
.sync-diff ul{margin:6px 0 0;padding-left:18px;display:grid;gap:var(--gap-tight)}
.sync-diff .sd-bad{color:var(--ink-error)}
.sync-warn{padding:var(--pad-notice);border-radius:var(--r-box);background:var(--warn-soft);color:var(--ink-body)}
.lti-gap{font-size:var(--fs-body-sm)}
.cr-note{font-size:var(--fs-body-sm);color:var(--ink-secondary)}.sync-warn.cr-note{color:var(--ink-body)}
.ccu-pct{font-size:var(--fs-caption);white-space:nowrap}
.ccu-warn{color:var(--warn-strong);font-weight:var(--fw-semibold)}
/* v293: on phones the CCU table becomes one card per CCU (each value with its column's name) and sorts with a picker */
.ccu-find{display:flex;flex-wrap:wrap;gap:var(--gap-cluster);align-items:center;margin:0 0 var(--space-2)}
.ccu-qlab{display:flex;flex:0 1 520px;gap:var(--gap-cluster);align-items:center;font-size:var(--fs-body-sm);color:var(--ink-secondary)}
.ccu-qlab input{flex:1;min-width:0;max-width:420px;border:1px solid var(--line-field);border-radius:var(--r-control);background:var(--surface-field);color:var(--ink-body);padding:var(--field-pad);font-size:var(--fs-control)}
table.ccu-acct tr[hidden]{display:none!important}
.ccu-lbl,.ccu-sortm{display:none}
@media (max-width:640px){
  .ccu-sortm{display:flex;gap:var(--gap-cluster);align-items:center;font-size:var(--fs-body-sm);margin:0 0 8px}
  .ccu-sortm select{border:1px solid var(--line-field);border-radius:var(--r-control);background:var(--surface-field);color:var(--ink-body);padding:var(--field-pad);font-size:var(--fs-control)}
  table.ccu-acct thead{display:none}
  table.ccu-acct,table.ccu-acct tbody{display:block;width:100%}
  table.ccu-acct tr{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--gap-icon) var(--gap-section);padding:var(--pad-tile);margin:0 0 8px;border:1px solid var(--line-card);border-radius:var(--r-box);background:var(--surface-card)}
  table.ccu-acct td{display:block;border:0!important;padding:0!important;text-align:left!important;background:none!important;min-width:0}
  table.ccu-acct td:first-child{grid-column:1/-1;font-size:var(--fs-body)}
  table.ccu-acct td:nth-child(9){grid-column:1/-1}
  table.ccu-acct td:empty{display:none}
  table.ccu-acct .ccu-lbl{display:block;font-size:var(--fs-label);color:var(--ink-label);margin-bottom:2px}
  table.ccu-acct .fl-paid{justify-content:flex-start}
  table.ccu-acct td{white-space:normal!important}
  table.ccu-acct td .pill{white-space:normal;max-width:100%}
}
.cal-total{margin:-4px 0 10px;font-size:var(--fs-body-sm)}
.node.gap .gap-or{font-weight:var(--fw-regular);font-size:var(--fs-caption);color:var(--ink-secondary)}
.node.gap{border:1.5px dashed var(--bad);background:transparent}
.sync-ok .bm-old,#sync-ok .bm-old{margin-top:10px}
/* #274: the button's own text colour (red failed contrast on the turquoise fill); the warning sign and bold do not depend on colour. U+FE0E keeps ⚠ as text, not a colour emoji */
#sync-sub.sync-sub-old{font-weight:var(--fw-bold)}
#sync-sub.sync-sub-old::before{content:"\26A0\FE0E\00A0"}
.bm-ver{padding:var(--pad-notice);border-radius:var(--r-box);background:var(--surface-sunken)}
.sync-step{padding:var(--pad-notice);border:1px solid var(--line-card);border-radius:var(--r-box)}
.sync-alt{border-top:1px solid var(--line-card);padding-top:10px}
.linkbtn{all:unset;cursor:pointer;color:var(--ink-link);text-decoration:underline;text-underline-offset:2px}
.linkbtn:focus-visible{outline:var(--focus-ring);outline-offset:var(--focus-offset)}
.dlg-manual{width:min(860px,calc(100vw - 32px));max-height:calc(100vh - 32px)}
.dm-head{display:flex;justify-content:space-between;align-items:center;gap:var(--gap-section)}
.dm-sec{display:grid;gap:var(--gap-panel);padding-top:12px;border-top:1px solid var(--line-card)}
.dm-form{display:flex;flex-wrap:wrap;gap:var(--gap-panel);align-items:flex-end}
.dm-form label{display:grid;gap:var(--gap-tight);font-size:var(--fs-caption);color:var(--ink-secondary)}
.dm-form input:not([type=checkbox]){border:1px solid var(--line-field);border-radius:var(--r-control);background:var(--surface-field);padding:var(--field-pad);min-width:0;font-size:var(--fs-control)}
.dm-form input[list]{width:210px}
.dm-form input[type=number]{width:100px}
.dm-form .dm-check{display:flex;align-items:center;gap:var(--gap-icon);font-size:var(--fs-body-sm);color:var(--ink-body);padding-bottom:8px}
.btn.hdr-manual{background:var(--surface-control);border:1px solid var(--line-brand);color:var(--ink-brand)}
.btn.hdr-manual:hover{background:var(--surface-active);border-color:var(--line-brand);box-shadow:0 0 0 3px color-mix(in srgb,var(--line-brand) 20%,transparent)}
/* #230 header buttons with a glow: sync is a brand-to-accent gradient with a two-layer halo; the manual one, the same idea muted */
header .btn.hdr-btn.hdr-import{background:var(--fill-duo);border-color:var(--line-duo);box-shadow:var(--shadow-glow-sync);transition:box-shadow var(--dur-3),filter var(--dur-3)}
header .btn.hdr-btn.hdr-import:hover{filter:brightness(1.06);box-shadow:var(--shadow-glow-sync-hover)}
header .btn.hdr-btn.hdr-manual{background:linear-gradient(110deg,color-mix(in srgb,var(--brand) 9%,var(--surface-control)),color-mix(in srgb,var(--accent) 7%,var(--surface-control)));border-color:color-mix(in srgb,var(--line-brand) 60%,var(--line-ctl));box-shadow:var(--shadow-glow-soft);transition:box-shadow var(--dur-3),border-color var(--dur-3)}
header .btn.hdr-btn.hdr-manual:hover{border-color:var(--line-brand);box-shadow:var(--shadow-glow-soft-hover)}
@media (prefers-reduced-motion:reduce){header .btn.hdr-btn:is(.hdr-import,.hdr-manual){transition:none}}
.btn.hdr-danger{background:var(--bad-soft);border:1px solid var(--bad);color:var(--bad)}
.btn.hdr-danger:hover{background:var(--fill-danger);border-color:var(--fill-danger);color:var(--ink-inverse);box-shadow:0 0 0 3px color-mix(in srgb,var(--bad) 25%,transparent)}
.hdr-actions{display:flex;gap:var(--gap-panel);flex-wrap:wrap}
@media (max-width:520px){.hdr-actions{width:100%}.btn.hdr-btn{flex:1 1 auto;justify-content:center}}
header.top .stamp{font-family:var(--f-mono);font-size:var(--fs-caption);color:var(--ink-note);display:flex;gap:var(--gap-icon) var(--gap-cluster-x);flex-wrap:wrap}
.btn{border:1px solid var(--line-chip);background:var(--surface-control);border-radius:var(--r-control);padding:var(--btn-pad);font-size:var(--fs-control);font-weight:var(--fw-semibold);box-shadow:var(--shadow-raise);transition:border-color var(--dur-2),background var(--dur-2)}
a.btn{display:inline-block;color:inherit;text-decoration:none} /* #171: un enlace con aspecto de botón, igual que <button class="btn"> */
.btn:hover{border-color:var(--line-brand);background:var(--surface-hover)}
.nf .nf-ruta{overflow-wrap:anywhere}
.btn.primary{background:var(--fill-primary);border-color:var(--fill-primary);color:var(--on-fill)}
.btn.sm{padding:var(--pad-control-xs);font-size:var(--fs-control-sm);font-weight:var(--fw-medium)}
/* #261, #262: the main action of a form (Añadir a la ruta, Crear orden) */
.btn.lg{padding:var(--space-2) var(--space-5);font-size:var(--fs-4);min-height:var(--target-min)}
.icon-btn{border:1px solid transparent;background:transparent;border-radius:var(--r-micro);width:26px;height:26px;display:inline-grid;place-items:center;color:var(--ink-secondary)}
.icon-btn:hover{background:var(--surface-hover);color:var(--ink-body)}
.icon-btn:disabled{opacity:var(--op-disabled);cursor:default;background:transparent}

/* summary */
.summary{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:1px;border:1px solid var(--line-card);border-radius:var(--r-card);background:var(--surface-track);overflow:hidden;box-shadow:var(--shadow-raise)}
.summary .cell{padding:var(--pad-card-lg);background:var(--surface-card);display:grid;gap:var(--gap-tight);min-width:0;align-content:start}
@media (max-width:1300px){.summary{grid-template-columns:repeat(3,minmax(0,1fr))}.summary .cell:first-child{grid-column:span 1}}
.summary .big{font-family:var(--f-display);font-size:30px;font-weight:var(--fw-semibold);line-height:var(--lh-105);font-variant-numeric:tabular-nums;letter-spacing:var(--tracking-1)}
.summary .big.good{color:var(--good-strong)}
.summary .sub{font-size:var(--fs-caption);color:var(--ink-secondary)}
@media (max-width:760px){.summary{grid-template-columns:repeat(2,minmax(0,1fr))}.summary .cell:last-child:nth-child(odd){grid-column:1/-1}}

/* controls */
.controls{display:flex;flex-wrap:wrap;gap:var(--gap-panel) 20px;align-items:center;padding:var(--pad-box);background:var(--surface-sunken);border:1px solid var(--line-card);border-radius:var(--r-card)}
.seg{display:inline-flex;border:1px solid var(--line-chip);border-radius:var(--r-control);overflow:hidden;background:var(--surface-control)}
.seg button{border:0;background:transparent;padding:6px 12px;font-size:var(--fs-control);color:var(--ink-secondary)}
.seg button{transition:background var(--dur-2),color var(--dur-2)}
.seg button:hover{color:var(--ink-body)}
.seg button[aria-pressed="true"]{background:color-mix(in srgb,var(--fill-meter) 18%,var(--surface-card));color:var(--ink-body);box-shadow:var(--shadow-ring-active),0 0 10px color-mix(in srgb,var(--line-brand) 28%,transparent)}
/* owner 2026-11-02: the lit ring follows the group's rounded corners on the end buttons (it showed square corners over the rounded border) */
.seg button:first-child{border-top-left-radius:var(--r-control-in);border-bottom-left-radius:var(--r-control-in)}
.seg button:last-child{border-top-right-radius:var(--r-control-in);border-bottom-right-radius:var(--r-control-in)}
.check{display:inline-flex;gap:var(--gap-icon);align-items:center;font-size:var(--fs-body-sm);cursor:pointer}
.check input{accent-color:var(--fill-accent);width:15px;height:15px}
.field{display:inline-flex;gap:var(--gap-icon);align-items:center;font-size:var(--fs-body-sm)}
#opt-when{border:1px solid var(--line-field);border-radius:var(--r-control);background:var(--surface-field);padding:var(--field-pad);font-size:var(--fs-control)}
.field input{width:90px;border:1px solid var(--line-field);border-radius:var(--r-control);background:var(--surface-field);padding:var(--field-pad);font-family:var(--f-mono);font-size:var(--fs-control)}
.controls{display:grid;grid-template-columns:minmax(0,260px) minmax(0,auto) minmax(0,1fr) auto;gap:14px 28px;align-items:start}
.ctl-f{min-height:var(--target-min)}.ctl-f input{width:calc(15ch + 44px)}
.ctl-right{display:grid;gap:var(--gap-section);justify-items:end;align-self:stretch;align-content:space-between}
.ctl-col{display:grid;grid-template-columns:minmax(0,1fr);gap:9px;justify-items:start;min-width:0}
.ctl-col>.check,.ctl-col>.field{flex-wrap:wrap}
.ctl-row{display:flex;flex-wrap:wrap;gap:var(--gap-icon) var(--gap-cluster-x);align-items:center}
.ctl-mid{display:grid;grid-template-columns:auto auto;gap:9px var(--gap-cluster);align-items:center;font-size:var(--fs-body-sm)}
.ctl-mid .field{display:contents}
.ctl-mid select,.ctl-mid input{width:100%!important;box-sizing:border-box}
.controls .cc-legend-box{justify-self:end;font-size:var(--fs-caption);color:var(--ink-secondary)}
.cc-legend-box summary{cursor:pointer;display:flex;align-items:center;gap:var(--gap-cluster);list-style:none;padding:var(--pad-control-sm);border:1px solid var(--line-card);border-radius:var(--r-control)}
.cc-legend-box summary::-webkit-details-marker{display:none}
.cc-legend-box summary::after{content:"▸";font-size:var(--fs-caption)}
.cc-legend-box[open] summary::after{content:"▾"}
.cc-dots{display:inline-flex;gap:3px}.cc-dots i{width:9px;height:9px;border-radius:var(--r-round);border:1px solid currentColor}
.controls .cc-legend{margin:8px 0 0;flex-direction:column;flex-wrap:nowrap;align-items:flex-end;gap:5px;max-width:none}
@media (max-width:1100px){.controls{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.controls .cc-guide{grid-column:1/-1;max-width:none}.ctl-right{grid-column:1/-1;justify-items:start}.controls .cc-legend-box{grid-column:1/-1;justify-self:start}.controls .cc-legend{flex-direction:row;flex-wrap:wrap;align-items:flex-start;justify-content:flex-start}}
@media (max-width:640px){.controls{grid-template-columns:1fr}.ctl-mid{justify-self:start}.ctl-right{justify-items:start}.viewbar-r{align-items:flex-start}}
.px-ast.wl-ast{color:var(--ast-ink)}
.wl .grip{width:8px;height:14px;cursor:grab;opacity:.75;background-image:radial-gradient(circle,var(--fill-muted) 1.3px,transparent 1.6px);background-size:4px 4.667px;background-position:0 0}
.wl li:hover .grip{opacity:1}

/* main grid */
.main{display:grid;grid-template-columns:330px minmax(0,1fr) 300px;grid-template-areas:"rail plan cal";gap:var(--gap-page);align-items:start}
.main>.calcol{grid-area:cal}.main>.plancol{grid-area:plan}.main>.rail{grid-area:rail}
.sticky{position:sticky;top:var(--rail-top);max-height:var(--rail-max-h);overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}
@media (min-width:1900px){.main{grid-template-columns:360px minmax(0,1fr) 340px}.plan{grid-template-columns:repeat(auto-fill,minmax(min(100%,780px),1fr));align-items:stretch}.plan>.card{align-content:start}.plan>:not(.card){grid-column:1/-1}}
@media (max-width:1240px){.main{grid-template-columns:minmax(0,1fr) 320px;grid-template-areas:"rail cal" "plan cal"}.main>.rail{position:static;max-height:none;overflow:visible}.main>.calcol{align-self:start}}
@media (max-width:980px){.main{grid-template-columns:minmax(0,1fr);grid-template-areas:"rail" "plan" "cal"}.sticky{position:static;max-height:none;overflow:visible}}
.section-head{display:flex;justify-content:space-between;align-items:baseline;gap:var(--gap-section);flex-wrap:wrap;margin-bottom:10px}

/* plan cards */
.plan{display:grid;gap:var(--gap-panel)}
.card{background:var(--surface-card);border:1px solid var(--line-card);border-radius:var(--r-card);padding:var(--pad-card);display:grid;grid-template-columns:minmax(0,1fr);gap:var(--gap-section);min-width:0;box-shadow:var(--shadow-raise);transition:border-color var(--dur-2)}
.card:hover{border-color:color-mix(in srgb,var(--line-brand) 35%,var(--line-card))}
.card.out{opacity:.62}
.card-top{display:grid;grid-template-columns:auto auto minmax(0,1fr) auto;gap:var(--gap-tight) var(--gap-cluster-x);align-items:start}
.card-top>div{grid-template-columns:minmax(0,1fr)}
.shipimg{width:128px;aspect-ratio:216/133;max-width:100%;height:auto;border-radius:var(--r-micro);border:1px solid var(--line-card);background:var(--surface-sunken);object-fit:cover;display:block}
.shipimg.blank{display:grid;place-items:center;font-family:var(--f-mono);font-size:var(--fs-caption);color:var(--ink-note)}
.plan{container-type:inline-size}
@container (max-width:760px){.card-top{grid-template-columns:auto auto minmax(0,1fr)}.card-top .money{grid-column:2/-1;justify-items:start;text-align:left;padding-top:6px;border-top:1px dashed var(--line-card)}}
@container (max-width:460px){.card-top{grid-template-columns:auto minmax(0,1fr)}.card-top .shipimg{grid-column:1/-1;width:100%;max-width:280px}.card-top .money{grid-column:1/-1}}
@container (max-width:460px){.card-top .pill{white-space:normal;text-align:left}}
.stair{display:grid;gap:var(--gap-section);padding:14px 14px 10px;background:var(--surface-sunken);border-radius:var(--r-box);min-width:0}
.stair svg{display:block;width:100%;height:auto;overflow:visible}
.stair-sc{overflow:auto;max-height:75vh;min-width:0;scrollbar-width:thin}
.stair-sc svg{max-width:none}
.stair-sc:has(svg[style*="width:1"]),.stair-sc:has(svg[style*="width:2"]),.stair-sc:has(svg[style*="width:3"]),.stair-sc:has(svg[style*="width:4"]),.stair-sc:has(svg[style*="width:6"]),.stair-sc:has(svg[style*="width:8"]){cursor:grab}
.stair-sc.drag{cursor:grabbing;user-select:none}
.stair-zoom{display:flex;align-items:center;gap:var(--gap-icon);justify-self:end}
.stair-zoom .btn{min-width:30px;font-weight:var(--fw-bold);padding:var(--pad-control-xs)}
.stair-zoom .num{min-width:var(--target-coarse);text-align:center;font-size:var(--fs-note)}
.stair .grid{stroke:var(--grid);stroke-width:1}
.stair .axis{stroke:var(--line-muted);stroke-width:1}
.stair text{fill:var(--fill-muted);font-family:var(--f-mono);font-size:var(--fs-body-sm)}
.stair text.strong{fill:var(--ink-body);font-weight:var(--fw-medium);font-size:var(--fs-body)}
.stair text.save{fill:var(--good);font-weight:var(--fw-medium);font-size:var(--fs-body)}
.stair .ref{stroke:var(--line-muted);stroke-width:1.25;stroke-dasharray:4 4;fill:none}
.stair .area{fill:var(--save);stroke:none}
.stair .seg{stroke-width:3.5;stroke-linecap:round;fill:none;transition:stroke-width var(--dur-1)}
.stair .seg.hl{stroke-width:5.5}
.stair .hit{stroke:transparent;stroke-width:16;stroke-linecap:round;fill:none;cursor:help}
.stair .s-own{stroke:var(--good)} .stair .s-now{stroke:var(--line-accent)} .stair .s-later{stroke:var(--bad)} .stair .s-bb{stroke:var(--bb)} .stair .s-wb{stroke:var(--wb)} .stair .s-pred{stroke:var(--pred)}
.stair .vgrid{stroke:var(--line-muted);stroke-opacity:.35;stroke-width:1;stroke-dasharray:2 3}
.stair .vgrid.max{stroke:var(--line-muted);stroke-dasharray:none}
.stair text.pc{font-size:var(--fs-caption);opacity:.8}
.stair .tick{stroke:var(--line-muted);stroke-width:1}
.stair .dot{fill:var(--surface-card);stroke:var(--line-guide);stroke-width:1.75;cursor:help;transition:r var(--dur-1)}
.stair .dot.hl,.stair .dot:focus{stroke:var(--line-accent);stroke-width:2.5}
.stair .dot.end{fill:var(--fill-accent);stroke:var(--line-surface);stroke-width:2}
.stair .legend{display:flex;flex-wrap:wrap;gap:var(--gap-tight) var(--gap-cluster-x);font-size:var(--fs-caption);color:var(--ink-secondary)}
.stair .legend span{display:inline-flex;align-items:center;gap:var(--gap-icon)}
.stair .sw{width:14px;height:3px;border-radius:var(--r-swatch);display:inline-block}
.stair .sw.s-own{background:var(--good)} .stair .sw.s-now{background:var(--fill-accent)} .stair .sw.s-later{background:var(--bad)} .stair .sw.s-bb{background:var(--bb)} .stair .sw.s-wb{background:var(--wb)} .stair .sw.s-pred{background:var(--pred)}
.stair .fan{width:22px;height:12px;flex:none}.stair .fan line{stroke:var(--line-muted);stroke-width:1.5;stroke-linecap:round}
.stair .legend .slope{color:var(--ink-note)}
.stair .sw.ref{background:none;border-top:1.5px dashed var(--line-muted);height:0}
.stair .sw.area{background:var(--save);height:10px;border-radius:var(--r-swatch)}
.viewbar{display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:var(--gap-cluster) var(--gap-cluster-x);margin-bottom:-4px}
.viewbar-r{display:flex;flex-direction:column;align-items:flex-end;gap:var(--gap-cluster)}
.viewbar>.opts{flex-direction:column;align-items:flex-start}
/* owner 2026-11-10: in the planner cards the three options rise one row, into the room under the ship image, so «Pago» lines up with «Exportar a Cadenas manuales» */
@media (min-width:641px){#plan .card .viewbar:has(.viewbar-r .seg)>.opts{margin-top:calc(var(--opts-rise) - var(--gap-cluster))}}
.viewbar .opt-l{min-width:7.5em}
.btn.mb-export{display:inline-flex;align-items:center;gap:var(--gap-icon);background:var(--fill-brand);border-color:var(--fill-brand);color:var(--on-fill);transition:background var(--dur-3),box-shadow var(--dur-3),color var(--dur-3)}
.btn.mb-export:hover{background:color-mix(in srgb,var(--fill-brand) 85%,var(--fill-marker));border-color:var(--fill-brand);box-shadow:var(--shadow-ring-brand)}
.btn.mb-export svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:none}
.btn.mb-export.on{background:var(--fill-brand);border-color:var(--fill-brand);color:var(--on-fill);box-shadow:0 0 0 3px color-mix(in srgb,var(--fill-brand) 35%,transparent),0 0 14px color-mix(in srgb,var(--fill-brand) 60%,transparent)}
.btn.mb-export:focus-visible{outline:var(--focus-ring);outline-offset:var(--focus-offset)}
/* #231 the export button glows like the header sync one, with a dark middle: lit brand and accent ends, near-black centre, white text */
.btn.sm.mb-export{--mbx-d:var(--glow-dark);background:linear-gradient(110deg,color-mix(in srgb,var(--brand) 54%,var(--mbx-d)) 0%,color-mix(in srgb,var(--brand) 20%,var(--mbx-d)) 38%,color-mix(in srgb,var(--accent) 18%,var(--mbx-d)) 62%,color-mix(in srgb,var(--accent) 62%,var(--mbx-d)) 100%);border-color:color-mix(in srgb,var(--brand) 55%,var(--accent));color:var(--ink-on-glow);box-shadow:var(--shadow-glow-export)}
.btn.sm.mb-export:hover{border-color:color-mix(in srgb,var(--brand) 55%,var(--accent));box-shadow:var(--shadow-glow-export-hover)}
.btn.sm.mb-export.on{color:var(--ink-on-glow);box-shadow:var(--shadow-glow-export-on)}
.opts{display:flex;flex-wrap:wrap;gap:var(--gap-cluster) var(--gap-cluster-x);align-items:center}
.opt{display:inline-flex;align-items:center;gap:7px}
.opt-l{font-size:var(--fs-label);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--ink-label);cursor:help}
.seg.sm button{padding:4px 10px;font-size:var(--fs-control-sm)}
.viewbar .opts,.viewbar .opt{min-width:0}.viewbar .opt,.viewbar .seg{flex-wrap:wrap}
.chain>.edge{max-width:100%;flex-wrap:wrap}
.legs{overflow-x:auto}
.chcol{overflow-x:auto;background:var(--surface-sunken);border-radius:var(--r-box);padding:6px 8px}
.chcol table{font-size:var(--fs-cell);background:transparent;width:100%}
.chcol th{background:transparent;position:static;font-size:var(--fs-head);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--ink-head);white-space:nowrap}
.chcol td{border-top:1px solid var(--line-row);white-space:nowrap}
.chcol td.leg{white-space:normal}
.chcol td.chcol-act{width:1%;padding:6px 4px}
.chcol-act .mb-ins,.chcol-act .mb-nodex{position:static;display:inline-grid;vertical-align:middle;margin:0 2px}
.chcol .sw{display:inline-block;width:10px;height:10px;border-radius:var(--r-swatch);margin-right:6px;vertical-align:-1px}
.chcol .sw.s-own{background:var(--good)}.chcol .sw.s-now{background:var(--fill-accent)}.chcol .sw.s-later{background:var(--bad)}.chcol .sw.s-bb{background:var(--bb)}.chcol .sw.s-wb{background:var(--wb)}.chcol .sw.s-pred{background:var(--pred)}
.legs table{font-size:var(--fs-note);background:transparent}
.legs th{background:transparent;position:static}
.legs td{color:var(--ink-secondary)}
.legs td.leg{color:var(--ink-body);white-space:normal;min-width:120px}
.legs td.leg .sw{margin-right:8px;vertical-align:middle}
.legs tr.hl td{background:var(--surface-card)}
.legs td.good{color:var(--good-strong)}
.tip[hidden]{display:none!important}
.tip{position:fixed;z-index:var(--z-tip);pointer-events:none;max-width:260px;padding:9px 11px;border-radius:var(--r-2);background:var(--surface-inverse);color:var(--ink-inverse);box-shadow:0 8px 24px rgba(0,0,0,.25);display:grid;gap:var(--gap-stack);font-size:var(--fs-caption);line-height:1.35}
.tip b{font-family:var(--f-display);font-weight:var(--fw-semibold);font-size:14.5px;letter-spacing:var(--tracking-1);margin-bottom:2px}
.tip span{font-family:var(--f-mono);font-size:var(--fs-caption);opacity:.9}
.tip span.k{font-family:var(--f-body);opacity:.7}
.rank{font-family:var(--f-display);font-weight:var(--fw-bold);font-size:var(--fs-stat-xl);color:var(--ink-note);line-height:var(--lh-100);min-width:30px;font-variant-numeric:tabular-nums}
.shipname{font-family:var(--f-display);font-weight:var(--fw-semibold);font-size:21px;line-height:var(--lh-110);letter-spacing:var(--tracking-1)}
.shipmeta{font-size:var(--fs-caption);color:var(--ink-note)}
.money{text-align:right;display:grid;gap:var(--gap-stack);justify-items:end}
.money .pay{font-family:var(--f-display);font-weight:var(--fw-semibold);font-size:var(--fs-stat-xl);line-height:var(--lh-105);color:var(--good-strong);font-variant-numeric:tabular-nums}
.money .split{font-family:var(--f-mono);font-size:var(--fs-caption);color:var(--ink-secondary)}
.money .split b{color:var(--ink-body);font-weight:var(--fw-medium)}
.money .msrp{font-family:var(--f-mono);font-size:var(--fs-caption);color:var(--bad)}
.pill{display:inline-flex;align-items:center;gap:var(--gap-tight);font-size:var(--fs-caption);font-weight:var(--fw-badge);line-height:var(--lh-130);padding:var(--pad-badge);border-radius:var(--r-pill);white-space:nowrap}
.pill.good{background:var(--good-soft);color:var(--good-strong)}
.pill.none{background:var(--surface-sunken);color:var(--ink-secondary)}
.pill.warn{background:var(--warn-soft);color:var(--warn-strong)}
.pill.bad{background:var(--bad-soft);color:var(--bad)}
.pill.info{background:var(--info-soft);color:var(--info)}
.pill.acc{background:var(--surface-accent);color:var(--ink-accent)}
.chain{display:flex;flex-wrap:wrap;align-items:center;gap:var(--gap-icon) var(--gap-tight);padding:var(--pad-card);background:var(--surface-sunken);border-radius:var(--r-box);min-width:0}
.node{display:inline-grid;gap:1px;padding:5px 9px;border:1px solid var(--line-card);background:var(--surface-card);border-radius:var(--r-micro);min-width:0}
.node b{font-family:var(--f-display);font-weight:var(--fw-semibold);font-size:var(--fs-body);line-height:var(--lh-110)}
.node small{font-family:var(--f-mono);font-size:var(--fs-caption);color:var(--ink-note)}
.node.target{border-color:var(--line-accent);box-shadow:inset 0 0 0 1px var(--line-accent)}
.edge{display:inline-flex;align-items:center;gap:var(--gap-tight);font-family:var(--f-mono);font-size:var(--fs-caption);padding:0 2px}
.edge .arr{color:var(--ink-note);font-size:var(--fs-body-sm)}
.edge .lab{padding:6px 8px;border-radius:var(--r-micro);white-space:nowrap}
.e-own{background:var(--good-soft);color:var(--good-strong)}
.e-std{background:var(--surface-card);color:var(--ink-secondary);border:1px dashed var(--line-card)}
.e-wb{background:var(--wb-soft);color:var(--wb-strong)}
.e-pred{background:var(--pred-soft);color:var(--pred)}
.cc-legend{margin-left:auto;display:flex;flex-wrap:wrap;gap:var(--gap-icon);justify-content:flex-end;max-width:1000px}
.cc-legend .lab{font-size:var(--fs-caption);padding:var(--pad-badge);border-radius:var(--r-chip);white-space:normal}
.e-bb{background:var(--bb-soft);color:var(--bb-ink)}
.e-custom{background:var(--warn-soft);color:var(--warn-strong)}
.e-buy{background:var(--surface-accent);color:var(--ink-accent)}
.e-later{background:var(--bad-soft);color:var(--bad)}
.steps{margin:0;padding:0;list-style:none;counter-reset:st;font-size:var(--fs-body-sm);color:var(--ink-secondary);display:grid;gap:var(--gap-stack)}
.steps li{counter-increment:st;display:grid;grid-template-columns:18px 20px minmax(0,1fr) auto;gap:var(--gap-tight) var(--gap-cluster);align-items:start;padding:4px 6px;border-radius:var(--r-micro)}
.steps li::before{content:counter(st) ".";font-family:var(--f-mono);font-size:var(--fs-caption);color:var(--ink-note);padding-top:2px}
.steps li:hover{background:var(--surface-hover)}
.steps input{accent-color:var(--good);width:15px;height:15px;margin:2px 0 0;cursor:pointer}
.steps label{cursor:pointer;min-width:0}
.steps a{font-size:var(--fs-caption);color:var(--ink-accent);text-decoration:none;white-space:nowrap;padding-top:1px}
.steps a:hover{text-decoration:underline}
.cal-row{display:grid;gap:3px;padding:9px 0;border-top:1px solid var(--line-row);font-size:var(--fs-body-sm)}
.cal-at{display:grid;gap:1px;min-width:0}
.cal-n{font-size:var(--fs-caption);color:var(--ink-note)}
.cal-wbn{display:block;font-size:var(--fs-caption);margin-top:2px}
.cal-cap{font-size:var(--fs-label);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--ink-label)}
.cal-when{font-weight:var(--fw-semibold);color:var(--bad)}
.cal-when.now{color:var(--ink-accent)}
.cal-ships{order:1;margin-top:6px;color:var(--ink-body);min-width:0;grid-column:1/-1;font-size:var(--fs-note);display:grid;gap:7px}
.cal-chain{display:grid;gap:var(--gap-stack);min-width:0}
.cal-cname{font-weight:var(--fw-semibold)}
.cal-ccus{list-style:none;margin:0;padding:0 0 0 12px;display:grid;gap:1px;border-left:2px solid var(--line-card)}
.cal-ccus li{display:flex;justify-content:space-between;gap:var(--gap-panel);color:var(--ink-2,var(--ink-body));min-width:0}
.cal-ccus li span:first-child{min-width:0;overflow-wrap:anywhere}
.cal-ccus .num{flex:none;color:var(--ink-note)}
.fan-note{display:block;margin-top:6px;color:var(--ink-note)}
.stamp-live{color:var(--good-strong)}
.stamp-live::before{content:"";display:inline-block;width:7px;height:7px;border-radius:var(--r-round);background:currentColor;margin-right:6px;vertical-align:1px;box-shadow:0 0 0 3px color-mix(in srgb,currentColor 22%,transparent)}
.stamp-live.off{color:var(--warn-strong)}
.stamp-live.wait{color:var(--ink-note)}
.cal-track{display:block;font-size:var(--fs-caption);font-weight:var(--fw-regular);color:var(--ink-note);letter-spacing:var(--tracking-1)}
.cal-ccus li.cal-i{margin:2px 0 2px -6px;padding:3px 6px;border-radius:var(--r-box);font-weight:var(--fw-semibold)}
.cal-ccus li.cal-i .num{color:inherit}
.cal-ccus li.cal-i.e-buy{color:var(--ink-accent)} .cal-ccus li.cal-i.e-later{color:var(--bad)} .cal-ccus li.cal-i.e-wb{color:var(--wb-strong)} .cal-ccus li.cal-i.e-pred{color:var(--pred)} .cal-ccus li.cal-i.e-bb{color:var(--bb)} .cal-ccus li.cal-i.e-own{color:var(--good-strong)}
.cal-ccus li.cal-i .cal-track{color:inherit;opacity:.8}
.wbnote{display:block;font-size:var(--fs-caption);color:var(--bad)}
.wbnote.now{color:var(--ink-accent)}
.steps li.done label{text-decoration:line-through;color:var(--ink-note)}
@media (max-width:560px){.steps li{grid-template-columns:18px 20px minmax(0,1fr)}.steps a{grid-column:3}}
details.how summary{cursor:pointer;font-size:var(--fs-note);color:var(--ink-secondary);width:max-content}
details.how[open] summary{margin-bottom:6px}
.budgetline{display:flex;align-items:center;gap:var(--gap-panel);font-family:var(--f-mono);font-size:var(--fs-label);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--bad)}
.budgetline::before,.budgetline::after{content:"";flex:1;border-top:1px dashed var(--bad)}
.cum{font-family:var(--f-mono);font-size:var(--fs-caption);color:var(--ink-note)}
.priceinput{width:80px;border:1px solid var(--line-field);border-radius:var(--r-micro);background:var(--surface-field);padding:var(--field-pad);font-family:var(--f-mono);font-size:var(--fs-control)}

/* rail */
.rail{display:grid;gap:16px;min-width:0}
.box{background:var(--surface-card);border:1px solid var(--line-card);border-radius:var(--r-card);padding:var(--pad-panel);display:grid;gap:var(--gap-panel);min-width:0;box-shadow:var(--shadow-raise)}
.wl{list-style:none;margin:0;padding:0;display:grid;gap:var(--gap-stack)}
.wl li{display:grid;grid-template-columns:8px 18px minmax(0,1fr) auto;align-items:center;gap:var(--gap-icon);padding:4px 4px 4px 6px;border-radius:var(--r-micro)}
.wl li.wl-empty{padding:4px 6px;color:var(--ink-note);font-size:var(--fs-body-sm);display:block}
.wishbar{display:grid;gap:var(--gap-section);margin:0}
.wishbar-head{display:flex;flex-wrap:wrap;align-items:center;gap:var(--gap-cluster) var(--gap-bar-x)}
.wishbar-head h2{margin:0;font-size:var(--fs-stat)}
.wishbar-hint{font-size:var(--fs-caption);flex:1 1 260px;min-width:0}
.wishbar-add{flex:0 1 460px;min-width:0;margin:0}
@media (max-width:600px){.wishbar-add{flex:1 1 100%}.wishbar-hint{flex-basis:100%}}
.addrow.wishbar-add input{flex:1;min-width:0;font-size:15px;padding:9px 12px}
.wl li:hover{background:var(--surface-hover)}
.wl .i{font-family:var(--f-mono);font-size:var(--fs-caption);color:var(--ink-note)}
.wl .n{font-weight:var(--fw-medium);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wl .n small{font-family:var(--f-mono);font-weight:var(--fw-regular);color:var(--ink-note);margin-left:4px}
.wl .ops{display:flex}
.wl li.dragging{opacity:var(--op-drag)}
.wl li.over{box-shadow:inset 0 2px 0 var(--line-accent)}
.wl li.over-after{box-shadow:inset 0 -2px 0 var(--line-accent)}
.addrow{display:flex;gap:var(--gap-icon)}
.addrow input{flex:1;min-width:0;border:1px solid var(--line-field);border-radius:var(--r-control);background:var(--surface-field);padding:var(--field-pad);font-size:var(--fs-control)}
.baselist{display:grid;gap:var(--gap-tight)}
.baselist label{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:var(--gap-cluster);align-items:center;font-size:var(--fs-body-sm);padding:3px 0}
.baselist .lbl{min-width:0}
.baselist .lbl b{font-weight:var(--fw-medium)}
.baselist .lbl small{display:block;color:var(--ink-note);font-size:var(--fs-caption);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ledger tables */
.ledger{display:grid;gap:var(--gap-section)}
.tabs{display:flex;gap:var(--gap-tight);flex-wrap:wrap;border-bottom:1px solid var(--line-card)}
.tabs button{border:0;background:transparent;padding:8px 12px;font-size:var(--fs-control);color:var(--ink-secondary);border-bottom:2px solid transparent;margin-bottom:-1px}
.tabs button[aria-selected="true"]{color:var(--ink-body);border-bottom-color:var(--line-brand);font-weight:var(--fw-semibold)}
.tablewrap{overflow-x:auto;border:1px solid var(--line-card);border-radius:var(--r-box);background:var(--surface-card)}
table{border-collapse:collapse;width:100%;font-size:var(--fs-cell)}
th,td{padding:var(--pad-cell);text-align:left;border-bottom:1px solid var(--line-row);white-space:nowrap}
th{padding:var(--pad-head);font-family:var(--f-mono);font-weight:var(--fw-semibold);font-size:var(--fs-head);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--ink-head);background:var(--surface-sunken);position:sticky;top:0}
td.r,th.r{text-align:right}
tr:last-child td{border-bottom:0}
.ledger tbody tr:nth-child(even) td{background:var(--tint-row)}
.ledger tbody tr:hover td{background:var(--surface-hover)}
.tabpanel{display:grid;gap:var(--gap-panel)}
.note{font-size:var(--fs-note);color:var(--ink-secondary);max-width:75ch}
.form-inline{display:flex;flex-wrap:wrap;gap:var(--gap-cluster);align-items:center}
.form-inline input,.form-inline select{border:1px solid var(--line-field);border-radius:var(--r-control);background:var(--surface-field);padding:var(--field-pad);min-width:0;font-size:var(--fs-control)}
.form-inline input[type=number]{width:90px;font-family:var(--f-mono)}
.undobar[hidden]{display:none}
.undobar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--gap-cluster) var(--gap-bar-x);padding:10px 14px;border:1px solid color-mix(in srgb,var(--line-brand) 45%,var(--line-card));background:var(--surface-active);border-radius:var(--r-card);font-size:var(--fs-body-sm)}
.undobar-act{display:flex;gap:var(--gap-cluster)}
.dlg{border:1px solid var(--line-card);border-radius:var(--r-card);background:var(--surface-card);color:var(--ink-body);padding:0;width:min(520px,calc(100vw - 32px));box-shadow:var(--shadow-modal)}
.bb-h{margin:10px 0 2px;font-size:var(--fs-caption);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--ink-note)}
.dlg::backdrop{background:var(--scrim)}
.dlg-body{display:grid;gap:var(--gap-section);padding:20px 22px}
.empty-steps{margin:8px 0 0;padding-left:20px;display:grid;gap:var(--gap-icon);font-size:var(--fs-body-sm);color:var(--ink-secondary)}
.dlg-list{margin:0;padding-left:18px;display:grid;gap:var(--gap-tight);font-size:var(--fs-body-sm)}
.ack{display:flex;align-items:center;gap:var(--gap-panel);text-align:left;width:100%;padding:10px 12px;border:1px dashed var(--bad);border-radius:var(--r-box);background:transparent;font-size:var(--fs-body-sm);font-weight:var(--fw-medium)}
.ack:hover{background:var(--bad-soft)}
.ack-box{width:16px;height:16px;flex:none;border:1.5px solid var(--bad);border-radius:var(--r-1);display:grid;place-items:center}
.ack[aria-pressed="true"]{border-style:solid;background:var(--bad-soft)}
.ack[aria-pressed="true"] .ack-box{background:var(--bad)}
.ack[aria-pressed="true"] .ack-box::after{content:"";width:8px;height:4px;border:2px solid var(--line-inverse);border-top:0;border-right:0;transform:translateY(-1px) rotate(-45deg)}
.btn:disabled{opacity:var(--op-disabled);cursor:not-allowed}
.dlg-act{display:flex;justify-content:flex-end;gap:var(--gap-cluster);flex-wrap:wrap;margin-top:4px}
.btn.danger{background:var(--bad);border-color:var(--bad);color:var(--ink-inverse)}
.btn.danger:hover{background:color-mix(in srgb,var(--bad) 85%,var(--fill-marker));border-color:var(--bad)}
.bm-alt{margin-top:8px;font-size:var(--fs-body-sm)}
.bm-alt summary{cursor:pointer;color:var(--ink-brand);font-weight:var(--fw-semibold)}
.bm-alt-list{margin-top:6px;display:grid;gap:var(--gap-cluster);line-height:var(--lh-150)}
.bm-alt-list .btn.sm{margin:0 4px}
.dupask{display:flex;flex-wrap:wrap;align-items:center;gap:var(--gap-cluster) var(--gap-section);margin-top:10px;padding:var(--pad-notice-sm);border:1px dashed var(--line-brand);border-radius:var(--r-box);background:var(--surface-active);font-size:var(--fs-body-sm)}
.pkgwarn{display:flex;gap:var(--gap-cluster);margin:0;padding:var(--pad-notice-sm);border:1px solid color-mix(in srgb,var(--warn) 55%,var(--line-card));border-radius:var(--r-box);background:color-mix(in srgb,var(--warn) 10%,var(--surface-card));font-size:var(--fs-body-sm);line-height:var(--lh-145);color:var(--ink-body)}
.pkgwarn>span:first-child{color:var(--warn-strong);font-weight:var(--fw-bold)}
/* Núcleo de componentes: solo la clase de texto solo para lectores de pantalla. */
.c-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* Notas y aviso visible (toast): nota en --ink-3, nota--aviso/--malo con significado en el texto; c-toast es la región viva cuando se muestra. */
.c-nota{margin:0;font-size:var(--fs-caption);color:var(--ink-note)}
.c-nota--aviso{color:var(--warn-strong)}
.c-nota--malo{color:var(--ink-error)}
.c-toast{position:fixed;left:50%;bottom:var(--inset-toast);transform:translateX(-50%);z-index:var(--z-toast-top);max-width:min(92vw,520px);margin:0;padding:var(--pad-toast);
  border:1px solid var(--line-field);border-radius:var(--r-box);background:var(--surface-card);color:var(--ink-body);box-shadow:var(--shadow-raise);font-size:var(--fs-body-sm);font-weight:var(--fw-medium)}

/* Estado: vacío, carga y error con borde continuo, texto y acción. El tono lo marca el borde izquierdo y el texto, no solo el color. */
.c-estado{display:grid;justify-items:start;gap:var(--gap-cluster);padding:var(--pad-box);border:1px solid var(--line-card);border-radius:var(--r-card);background:var(--surface-card);color:var(--ink-secondary)}
.c-estado__texto{margin:0;font-size:var(--fs-body);font-weight:var(--fw-semibold);color:var(--ink-body)}
.c-estado__detalle{margin:0;font-size:var(--fs-caption);color:var(--ink-note);overflow-wrap:anywhere}
.c-estado--carga{border-style:dashed}
.c-estado--error{border-color:var(--bad);border-left-width:4px;background:var(--bad-soft)}

/* Pestañas (WAI-ARIA): subrayado teal bajo la elegida. --vistas: denso (11-12 px); --acento: subrayado ámbar. El aspecto único espera a Q-60. */
.c-tabs{display:flex;gap:var(--gap-tight);max-width:100%;overflow-x:auto;border-bottom:1px solid var(--line-card)}
.c-tabs__tab{min-height:var(--ctl-h);min-width:var(--target-min);padding:var(--pad-control);border:0;border-bottom:3px solid transparent;background:none;color:var(--ink-secondary);
  font-size:var(--fs-control);font-weight:var(--fw-medium);white-space:nowrap;cursor:pointer}
.c-tabs__tab:hover{color:var(--ink-body);background:var(--surface-active)}
.c-tabs__tab:focus-visible{outline-offset:var(--focus-offset-inset)}
.c-tabs__tab[aria-selected="true"]{border-bottom-color:var(--line-brand);color:var(--ink-body);font-weight:var(--fw-semibold)}
.c-tabs__n{color:var(--ink-note);font-size:var(--fs-caption);font-variant-numeric:tabular-nums}
.c-tabs--vistas .c-tabs__tab{font-size:var(--fs-caption);font-weight:var(--fw-semibold)}
.c-tabs--acento .c-tabs__tab[aria-selected="true"]{border-bottom-color:var(--line-accent)}
.c-tabs__panel{padding-top:var(--pad-tab-panel)}
@media (pointer:coarse){.c-tabs__tab{min-height:var(--target-coarse);min-width:var(--target-coarse)}}

/* Segmentos: filtros y modos (aria-pressed). seg = grupo unido; chips = etiquetas conmutables sueltas. Activo: fondo menta y contorno teal. */
.c-seg{display:inline-flex;flex-wrap:wrap;gap:var(--gap-tight);max-width:100%}
.c-seg__op{display:inline-flex;align-items:center;gap:var(--gap-tight);min-height:var(--ctl-h);min-width:var(--target-min);padding:var(--pad-control);border:1px solid var(--line-chip);
  border-radius:var(--r-control);background:var(--surface-control);color:var(--ink-body);font-size:var(--fs-control);cursor:pointer}
.c-seg__op:hover{border-color:var(--line-brand)}
.c-seg__op[aria-pressed="true"]{border-color:var(--line-brand);background:var(--surface-active);color:var(--ink-body);font-weight:var(--fw-semibold);box-shadow:var(--shadow-ring-active)}
.c-seg__op[disabled]{opacity:var(--op-disabled);cursor:not-allowed}
.c-seg--chips{gap:var(--gap-cluster)}
.c-seg--seg{gap:0}
.c-seg--seg .c-seg__op{border-radius:0;margin-left:-1px}
.c-seg--seg .c-seg__op:first-child{border-radius:var(--r-control) 0 0 var(--r-control);margin-left:0}
.c-seg--seg .c-seg__op:last-child{border-radius:0 var(--r-control) var(--r-control) 0}
.c-seg__n{color:var(--ink-note);font-size:var(--fs-caption);font-variant-numeric:tabular-nums}
@media (pointer:coarse){.c-seg__op{min-height:var(--target-coarse);min-width:var(--target-coarse)}}

/* Tabla de datos: cabecera con botón de orden, primera columna como cabecera de fila (fija con --pegajosa), fila de detalle y pie. */
.c-tabla{display:grid;gap:var(--gap-cluster);min-width:0}
.c-tabla__marco{overflow:auto;max-width:100%;border:1px solid var(--line-card);border-radius:var(--r-box);background:var(--surface-card)}
.c-tabla__t{width:100%;border-collapse:collapse;font-size:var(--fs-cell);color:var(--ink-body)}
.c-tabla__t th,.c-tabla__t td{font-family:var(--f-body);text-transform:none;letter-spacing:normal;padding:var(--pad-cell);border-bottom:1px solid var(--line-row);text-align:left;vertical-align:top}
.c-tabla__t thead th{background:var(--surface-sunken);font-size:var(--fs-head);font-weight:var(--fw-semibold);color:var(--ink-head);padding:var(--pad-head);white-space:nowrap}
.c-tabla__t tbody th{font-weight:var(--fw-medium)}
.c-tabla__t .c-tabla__num{text-align:right;font-variant-numeric:tabular-nums}
.c-tabla__orden,.c-tabla__abrir{display:inline-flex;align-items:center;gap:var(--gap-tight);min-height:var(--target-min);min-width:var(--target-min);padding:0;border:0;background:none;color:inherit;font:inherit;cursor:pointer;text-align:inherit}
.c-tabla__orden:hover,.c-tabla__abrir:hover{color:var(--ink-link);text-decoration:underline}
.c-tabla__abrir::before{content:"▸";color:var(--ink-note)}
.c-tabla__abrir[aria-expanded="true"]::before{content:"▾"}
.c-tabla__detalle td{background:var(--surface-sunken)}
.c-tabla--pegajosa .c-tabla__t tr>:first-child{position:sticky;left:0;z-index:1;background:var(--surface-card)}
.c-tabla--pegajosa .c-tabla__t thead tr>:first-child{background:var(--surface-sunken)}
.c-tabla__pie{display:flex;align-items:center;gap:var(--gap-section);margin:0;font-size:var(--fs-caption);color:var(--ink-note)}
@media (pointer:coarse){.c-tabla__orden,.c-tabla__abrir{min-height:var(--target-coarse);min-width:var(--target-coarse)}}

/* Diálogo nativo: ancho 520 (hoja: 640), cabecera con título y cierre, cuerpo con desplazamiento propio. */
.c-dlg{box-sizing:border-box;width:min(520px,calc(100vw - 32px));max-height:calc(100vh - 32px);padding:0;border:1px solid var(--line-card);border-radius:var(--r-card);background:var(--surface-card);color:var(--ink-body);box-shadow:var(--shadow-raise)}
.c-dlg--hoja{width:min(640px,calc(100vw - 32px))}
.c-dlg::backdrop{background:color-mix(in srgb,var(--surface-page) 70%,transparent)}
.c-dlg__cab{display:flex;align-items:center;justify-content:space-between;gap:var(--gap-section);padding:var(--pad-box);border-bottom:1px solid var(--line-card)}
.c-dlg__titulo{margin:0;font-family:var(--f-display);font-size:var(--fs-title);font-weight:var(--fw-semibold)}
.c-dlg__cuerpo{padding:var(--pad-panel);overflow:auto}

/* Botones (solo CSS, DUP-05/06/07): base, primario, icono, enlace y de cabecera; tamaño sm. Alto mínimo 24 px (44 con puntero táctil). */
.c-boton{display:inline-flex;align-items:center;justify-content:center;gap:var(--gap-tight);min-height:var(--ctl-h);min-width:var(--target-min);padding:var(--btn-pad);
  border:1px solid var(--line-chip);border-radius:var(--r-control);background:var(--surface-control);color:var(--ink-body);font-size:var(--fs-control);font-weight:var(--fw-semibold);line-height:var(--lh-120);cursor:pointer}
.c-boton:hover{border-color:var(--line-brand);background:var(--surface-active)}
.c-boton[disabled],.c-boton[aria-disabled="true"]{opacity:var(--op-disabled);cursor:not-allowed}
.c-boton[disabled]:hover{border-color:var(--line-chip);background:var(--surface-control)}
.c-boton--sm{min-height:var(--ctl-h-sm);padding:var(--pad-control-xs);font-size:var(--fs-control-sm);font-weight:var(--fw-medium)}
.c-boton--primario{background:var(--fill-primary);border-color:var(--fill-primary);color:var(--on-fill);font-weight:var(--fw-semibold)}
.c-boton--primario:hover{background:color-mix(in srgb,var(--fill-primary) 85%,var(--fill-marker));border-color:var(--fill-primary)}
.c-boton--icono:not(.c-boton--primario){border-color:var(--line-field)}
.c-boton--icono{min-width:var(--ctl-h);padding:var(--pad-tight);border-radius:var(--r-micro)}
.c-boton--enlace{min-height:var(--target-min);padding:0 var(--pad-tight);border-color:transparent;background:none;box-shadow:none;color:var(--ink-link);font:inherit;font-weight:var(--fw-semibold);text-decoration:underline}
.c-boton--enlace:hover{background:none;border-color:transparent;color:var(--ink-body)}
.c-boton--cabecera{min-height:var(--ctl-h-top);padding:var(--pad-top-btn);font-size:var(--fs-control-sm);font-weight:var(--fw-semibold)}
@media (pointer:coarse){.c-boton{min-height:var(--target-coarse);min-width:var(--target-coarse)}.c-boton--enlace{min-height:var(--target-coarse)}}

/* Tarjetas (solo CSS, DUP-08/09): tarjeta, tarjeta-nave (imagen 16:9 + cuerpo) y tarjeta-kpi (cifra + etiqueta). */
.c-tarjeta{display:grid;gap:var(--gap-cluster);min-width:0;padding:var(--pad-card);border:1px solid var(--line-card);border-radius:var(--r-card);background:var(--surface-card);color:var(--ink-body)}
.c-tarjeta--elevada{box-shadow:var(--shadow-raise)}
.c-tarjeta--color{border-top:3px solid var(--tarjeta-color,var(--line-brand))}
.c-tarjeta--bueno{border-color:var(--good)}
.c-tarjeta--malo{border-color:var(--bad)}
.c-tarjeta-nave{display:grid;grid-template-rows:auto 1fr;min-width:0;overflow:hidden;border:1px solid var(--line-card);border-radius:var(--r-card);background:var(--surface-card);color:var(--ink-body)}
.c-tarjeta-nave__img{display:block;width:100%;aspect-ratio:16/9;object-fit:cover;background:var(--surface-sunken)}
.c-tarjeta-nave__cuerpo{display:grid;align-content:start;gap:var(--gap-tight);padding:var(--pad-card)}
.c-tarjeta-nave__titulo{margin:0;font-family:var(--f-display);font-size:var(--fs-title);font-weight:var(--fw-semibold);overflow-wrap:anywhere}
.c-tarjeta-kpi{display:grid;gap:var(--gap-tight);min-width:0;padding:var(--pad-card);border:1px solid var(--line-card);border-radius:var(--r-box);background:var(--surface-sunken);color:var(--ink-body)}
.c-tarjeta-kpi__cifra{font-family:var(--f-display);font-size:var(--fs-figure);font-weight:var(--fw-semibold);line-height:var(--lh-110);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.c-tarjeta-kpi__etiqueta{font-size:var(--fs-label);color:var(--ink-label);text-transform:uppercase;letter-spacing:var(--tracking-label)}
.c-tarjeta-kpi--resaltado{border-color:var(--line-accent)}
.c-tarjeta-kpi--estado .c-tarjeta-kpi__cifra{font-size:var(--fs-figure-lg);font-weight:var(--fw-bold);text-transform:uppercase}

/* Insignia (solo CSS, DUP-01): relleno suave, sin borde, 12 px, pastilla; matices por significado. chip-quitar: insignia con botón de quitar. */
.c-insignia{display:inline-flex;align-items:center;gap:var(--gap-tight);padding:var(--pad-badge);border-radius:var(--r-chip);background:var(--surface-sunken);color:var(--ink-secondary);
  font-size:var(--fs-caption);font-weight:var(--fw-badge);line-height:var(--lh-130);white-space:nowrap}
.c-insignia--bueno{background:var(--good-soft);color:var(--good-strong)}
.c-insignia--aviso{background:var(--warn-soft);color:var(--warn-strong)}
.c-insignia--malo{background:var(--bad-soft);color:var(--bad)}
.c-insignia--info{background:var(--info-soft);color:var(--info)}
.c-insignia--acento{background:var(--surface-accent);color:var(--ink-accent)}
.c-insignia--oro{background:var(--wb-soft);color:var(--wb-strong)}
.c-insignia--morado{background:var(--pred-soft);color:var(--pred-strong)}
.c-insignia--neutro{background:var(--surface-sunken);color:var(--ink-secondary)}
.c-chip-quitar{display:inline-flex;align-items:center;gap:var(--gap-tight);padding:var(--pad-chip-remove);border-radius:var(--r-chip);background:var(--surface-active);color:var(--ink-body);font-size:var(--fs-caption);font-weight:var(--fw-semibold)}
.c-chip-quitar__x{display:inline-flex;align-items:center;justify-content:center;min-width:var(--target-min);min-height:var(--target-min);padding:0;border:0;border-radius:var(--r-chip);background:none;color:inherit;cursor:pointer}
.c-chip-quitar__x:hover{background:var(--fill-meter);color:var(--on-fill)}
@media (pointer:coarse){.c-chip-quitar__x{min-width:var(--target-coarse);min-height:var(--target-coarse)}}

/* Campo (solo CSS, DUP-12): input y select con el alto del control, borde de control (3:1) y 13 px. --compacto: cabecera; --numero: cifras. */
.c-campo{box-sizing:border-box;min-height:var(--ctl-h);min-width:0;padding:var(--field-pad);border:1px solid var(--line-field);border-radius:var(--r-micro);
  background:var(--surface-field);color:var(--ink-body);font-size:var(--fs-control)}
.c-campo::placeholder{color:var(--ink-note);opacity:1}
.c-campo:hover{border-color:var(--line-brand)}
.c-campo[disabled]{opacity:var(--op-disabled);cursor:not-allowed}
.c-campo[aria-invalid="true"]{border-color:var(--bad)}
.c-campo--compacto{min-height:var(--ctl-h-sm);padding:var(--pad-field-compact);font-size:var(--fs-control-sm)}
.c-campo--numero{width:8ch;text-align:right;font-variant-numeric:tabular-nums}
@media (pointer:coarse){.c-campo{min-height:var(--target-coarse)}}

/* Visor de fotos: un C.dialogo ancho con la foto ajustada a la ventana; donde se puede abrir una foto, el puntero es una lupa. */
.c-dlg--visor{width:min(1100px,calc(100vw - 32px))}
.c-dlg--visor .c-dlg__cuerpo{display:grid;place-items:center;padding:var(--space-2)}
.c-visor__img{display:block;width:100%;height:auto;max-height:calc(100vh - 140px);object-fit:contain;border-radius:var(--r-box)}
.c-visor-on,.c-visor-on *{cursor:zoom-in}

/* view switch */
.viewtabs{display:flex;gap:var(--gap-tight);border-bottom:1px solid var(--line-row);margin-top:-8px;overflow-x:auto;scrollbar-width:none}
.viewtabs :is(button,a){border:0;background:transparent;padding:10px 16px 11px;font-family:var(--f-display);font-size:var(--fs-tab);font-weight:var(--fw-semibold);letter-spacing:var(--tracking-2);color:var(--ink-secondary);border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap;text-decoration:none}
.viewtabs :is(button,a):hover{color:var(--ink-body)}
.viewtabs :is(button,a)[aria-selected="true"],.viewtabs a[aria-current="page"]{color:var(--ink-body);border-bottom-color:var(--line-brand)}
#view-planner,#view-advisor,#view-compare,#view-catalog{display:grid;gap:var(--gap-page);min-width:0}
#view-planner[hidden],#view-advisor[hidden],#view-compare[hidden],#view-catalog[hidden]{display:none}
/* advisor layout */
.adv-layout{display:grid;grid-template-columns:340px minmax(0,1fr);gap:var(--gap-page);align-items:start}
.adv-side{position:sticky;top:calc(var(--top-fix,0px) + 16px);max-height:calc(100vh - var(--top-fix,0px) - 32px);overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}
.adv-main{display:grid;gap:18px;min-width:0}
@media (max-width:980px){.adv-layout{grid-template-columns:minmax(0,1fr)}.adv-side{position:static;max-height:none;overflow:visible}}
.adv-quiz{display:grid;gap:var(--gap-block)}
.adv-quiz .q{display:grid;gap:var(--gap-cluster)}
.adv-quiz h3{display:flex;align-items:center;gap:var(--gap-cluster);font-size:var(--fs-title)}
.adv-quiz summary{cursor:pointer;list-style:none}
.adv-quiz summary::-webkit-details-marker{display:none}
.qn{display:inline-grid;place-items:center;width:20px;height:20px;border-radius:var(--r-round);background:var(--surface-active);color:var(--ink-brand);font-family:var(--f-mono);font-size:var(--fs-badge);font-weight:var(--fw-semibold);flex:none}
.adv-quiz .note{margin:0}
.chips{display:flex;flex-wrap:wrap;gap:var(--gap-cluster-sm)}
.chipbtn{border:1px solid var(--line-chip);background:var(--surface-control);border-radius:var(--r-chip);padding:5px 11px;font-size:var(--fs-chip);color:var(--ink-secondary);transition:border-color var(--dur-2),background var(--dur-2),color var(--dur-2)}
.chipbtn:hover{border-color:var(--line-brand);color:var(--ink-body)}
.chipbtn[aria-pressed="true"]{background:var(--tint-chip-pressed);border-color:var(--line-brand);color:var(--ink-body);font-weight:var(--fw-semibold);box-shadow:0 0 10px var(--tint-glow)}
.prios{display:grid;gap:var(--gap-cluster-sm)}
.prio{display:grid;grid-template-columns:minmax(0,1fr) 110px 74px;align-items:center;gap:var(--gap-cluster);font-size:var(--fs-body-sm)}
.prio input{width:100%;accent-color:var(--fill-meter)}
/* v174: priority sliders: the grey track goes dark at zero (filter not in use); the knob is a small light, lit with a level */
.prio input.prio-rng{-webkit-appearance:none;appearance:none;height:16px;background:transparent;cursor:pointer;margin:0}
.prio input.prio-rng::-webkit-slider-runnable-track{height:4px;border-radius:var(--r-swatch);background:var(--tint-track-on);transition:background var(--dur-3)}
.prio input.prio-rng::-moz-range-track{height:4px;border-radius:var(--r-swatch);background:var(--tint-track-on)}
.prio input.prio-rng::-webkit-slider-thumb{-webkit-appearance:none;width:12px;height:12px;margin-top:-4px;border-radius:var(--r-round);border:0;background:var(--fill-meter);box-shadow:var(--shadow-slider-thumb);transition:background var(--dur-3),box-shadow var(--dur-3)}
.prio input.prio-rng::-moz-range-thumb{width:12px;height:12px;border-radius:var(--r-round);border:0;background:var(--fill-meter);box-shadow:var(--shadow-slider-thumb)}
.prio input.prio-rng.off::-webkit-slider-runnable-track{background:var(--tint-track-off)}
.prio input.prio-rng.off::-moz-range-track{background:var(--tint-track-off)}
.prio input.prio-rng.off::-webkit-slider-thumb{background:var(--surface-slider-off);box-shadow:none}
.prio input.prio-rng.off::-moz-range-thumb{background:var(--surface-slider-off);box-shadow:none}
.prio input.prio-rng:focus-visible{outline:2px solid var(--focus);outline-offset:var(--focus-offset);border-radius:var(--r-1)}
/* v175: "muy alta" = red, blinking light (the knob takes --prio-glow from its slider, which is what is animated) */
@property --prio-glow{syntax:"<percentage>";inherits:true;initial-value:100%}
.prio input.prio-rng.max{animation:prio-blink 1s ease-in-out infinite}
.prio input.prio-rng.max::-webkit-slider-thumb{background:color-mix(in srgb,var(--bad) var(--prio-glow),var(--surface-control));box-shadow:0 0 0 2px color-mix(in srgb,var(--bad) calc(var(--prio-glow)*.3),transparent),0 0 9px 3px color-mix(in srgb,var(--bad) calc(var(--prio-glow)*.75),transparent)}
.prio input.prio-rng.max::-moz-range-thumb{background:color-mix(in srgb,var(--bad) var(--prio-glow),var(--surface-control));box-shadow:0 0 0 2px color-mix(in srgb,var(--bad) calc(var(--prio-glow)*.3),transparent),0 0 9px 3px color-mix(in srgb,var(--bad) calc(var(--prio-glow)*.75),transparent)}
@keyframes prio-blink{50%{--prio-glow:30%}}
@media (prefers-reduced-motion:reduce){.prio input.prio-rng.max{animation:none}}
.prio.locked{opacity:var(--op-disabled)}.prio.locked input.prio-rng{cursor:not-allowed}
.prio .pv{font-size:var(--fs-caption);color:var(--ink-note);text-align:right}
.row{display:flex;flex-wrap:wrap;gap:var(--gap-cluster) var(--gap-section);align-items:center}
.sm{font-size:var(--fs-caption)}
.adv-patch .patch{margin:var(--stack-detail-sm) 0 0;padding:0;list-style:none;display:grid;gap:var(--gap-cluster-sm);font-size:var(--fs-body-sm)}
.adv-patch .patch .pill{margin-right:4px}
.adv-patch .srcs{margin:0;padding-left:18px;font-size:var(--fs-note);display:grid;gap:var(--gap-stack)}
.adv-patch a{color:var(--ink-link)}
.adv-fleet .fleet{margin:var(--stack-detail) 0;padding:0;list-style:none;display:grid;gap:var(--gap-tight);counter-reset:f}
.adv-fleet .fleet li{display:grid;grid-template-columns:minmax(120px,190px) minmax(0,1fr) auto;gap:var(--gap-panel);align-items:baseline;padding:5px 0;border-top:1px dashed var(--line-row);font-size:13.5px}
.fl-role{font-size:var(--fs-label);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--ink-label)}
@media (max-width:560px){.adv-fleet .fleet li{grid-template-columns:minmax(0,1fr) auto}.fl-role{grid-column:1/-1}}
.adv-role{display:grid;gap:var(--gap-section);padding:16px 16px 18px;border:1px solid var(--line-card);border-top:4px solid var(--line-brand);border-radius:var(--r-card);background:var(--tint-role)}
.adv-main{gap:28px}
.role-head{display:flex;align-items:baseline;gap:var(--gap-section);flex-wrap:wrap;padding-bottom:10px;border-bottom:1px solid var(--line-row)}
.role-head h3{font-size:var(--fs-heading);letter-spacing:var(--tracking-1)}
.role-head .faint{flex:1 1 260px;text-align:right}
.role-n{display:inline-grid;place-items:center;min-width:30px;height:30px;padding:0 8px;border-radius:var(--r-2);background:var(--fill-brand);color:var(--on-fill);font-family:var(--f-mono);font-weight:var(--fw-bold);font-size:var(--fs-body);align-self:center}
.adv-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,380px),1fr));grid-auto-rows:1fr;gap:var(--gap-section);align-items:stretch}
.adv-card{display:grid;grid-template-columns:120px minmax(0,1fr);gap:var(--gap-section);background:var(--surface-card);border:1px solid var(--line-card);border-radius:var(--r-card);padding:var(--pad-card);box-shadow:var(--shadow);min-width:0}
.adv-card:hover{border-color:var(--line-card-hover)}
.adv-img img,.adv-img .noimg{width:120px;height:74px;object-fit:cover;border-radius:var(--r-image);background:var(--surface-sunken);display:grid;place-items:center;font-size:var(--fs-caption);color:var(--ink-note)}
/* owner 2026-11-09: only the name and the maker line sit beside the image; the rest uses the whole width of the card */
.adv-card{grid-template-rows:auto 1fr;row-gap:var(--gap-tight)}
.adv-hd{display:flex;flex-direction:column;gap:var(--gap-tight);min-width:0}
.adv-body{grid-column:1/-1;display:flex;flex-direction:column;gap:var(--gap-tight);min-width:0}
.ship-head{display:flex;justify-content:space-between;gap:var(--gap-cluster);align-items:center}
.ship-head h4{margin:0;font-family:var(--f-display);font-size:var(--fs-title);font-weight:var(--fw-semibold);min-width:0}
.linkbtn{border:0;background:none;padding:0;font:inherit;color:inherit;text-align:left;cursor:pointer}
.linkbtn:hover{color:var(--ink-link);text-decoration:underline}
.adv-score{position:relative;display:inline-grid;place-items:center;width:58px;height:22px;border-radius:var(--r-chip);background:var(--surface-sunken);overflow:hidden;flex:none}
.adv-score i{position:absolute;left:0;top:0;bottom:0;background:var(--tint-chip-active)}
.adv-score b{position:relative;font-size:var(--fs-caption);color:var(--ink-body)}
.pills{display:flex;flex-wrap:wrap;gap:var(--gap-tight);margin-top:2px}
.pros,.cons{margin:var(--stack-tight) 0 0;padding:0;list-style:none;display:grid;gap:var(--gap-stack);font-size:var(--fs-caption)}
.pros li::before{content:"+ ";color:var(--good-strong);font-weight:var(--fw-bold)}
.cons li::before{content:"− ";color:var(--bad);font-weight:var(--fw-bold)}
.ecl{margin:4px 0 0;padding:var(--pad-compact);border-left:2px solid var(--warn);background:var(--warn-soft);border-radius:0 var(--r-1) var(--r-1) 0}
.adv-act{display:flex;flex-wrap:wrap;gap:var(--gap-cluster-sm);margin-top:auto;padding-top:8px}
.adv-act .btn:disabled{opacity:var(--op-disabled);cursor:default}
@media (max-width:460px){.adv-card{grid-template-columns:minmax(0,1fr)}.adv-img img,.adv-img .noimg{width:100%;height:auto;aspect-ratio:216/133}}
.more summary{list-style:none;cursor:pointer;margin:var(--stack-tight) 0 0}
.more summary::-webkit-details-marker{display:none}
.more[open] summary{margin-bottom:12px}
.more-btn{display:flex;align-items:center;flex-wrap:wrap;gap:var(--gap-tight) var(--gap-section);width:100%;box-sizing:border-box;padding:var(--pad-box);border:1px dashed var(--line-brand-soft);border-radius:var(--r-card);background:var(--surface-control);font-family:var(--f-display);font-size:var(--fs-title);font-weight:var(--fw-semibold);color:var(--ink-body);transition:background var(--dur-2),border-color var(--dur-2)}
.more summary:hover .more-btn{background:var(--surface-active);border-style:solid;border-color:var(--line-brand)}
.more-ico{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:var(--r-control);background:var(--fill-brand);color:var(--on-fill);font-size:var(--fs-icon);transition:transform var(--dur-3)}
.more[open] .more-ico{transform:rotate(45deg)}
.more-hint{font-family:var(--f-body);font-size:var(--fs-note);font-weight:var(--fw-regular);color:var(--ink-note);flex:1 1 220px}
.more.concept .more-btn{border-color:color-mix(in srgb,var(--warn) 60%,var(--line-card))}
.more.concept .more-ico{background:var(--warn)}
.more.concept summary:hover .more-btn{background:var(--warn-soft);border-color:var(--warn)}
/* ship sheet */
.adv-dlg{position:fixed;margin:0;max-width:none;max-height:none;overflow:hidden;padding:var(--pad-box-md);box-sizing:border-box}
.adv-dlg.resizing{user-select:none}
.sheet-scroll{height:100%;overflow:auto;overscroll-behavior:contain}
.rz{position:absolute;z-index:var(--z-raised);touch-action:none}
.rz-n,.rz-s{left:22px;right:22px;height:14px;cursor:ns-resize}.rz-n{top:0}.rz-s{bottom:0}
.rz-e,.rz-w{top:22px;bottom:22px;width:14px;cursor:ew-resize}.rz-e{right:0}.rz-w{left:0}
.rz-ne,.rz-nw,.rz-se,.rz-sw{width:24px;height:24px}
.rz-ne{top:0;right:0;cursor:nesw-resize}.rz-sw{bottom:0;left:0;cursor:nesw-resize}.rz-nw{top:0;left:0;cursor:nwse-resize}.rz-se{bottom:0;right:0;cursor:nwse-resize}
.rz-se::after{content:"";position:absolute;right:3px;bottom:3px;width:9px;height:9px;border-right:2px solid var(--line-muted);border-bottom:2px solid var(--line-muted);opacity:.6}
.rz:hover,.resizing .rz{background:var(--tint-selected)}
.adv-sheet{gap:14px}
.sheet-head{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--gap-block);align-items:start;padding-right:44px}
.sheet-close{position:sticky;top:0;z-index:5;height:0;display:flex;justify-content:flex-end;gap:var(--gap-icon);padding-right:12px}
.sheet-close .icon-btn{margin:12px 0 0 0;width:34px;height:34px;font-size:var(--fs-icon);background:var(--surface-control);border:1px solid var(--line-icon-btn);box-shadow:var(--shadow)}
.sheet-close .icon-btn:hover{background:var(--surface-hover);border-color:var(--line-brand);color:var(--ink-body)}
.adv-dlg{overscroll-behavior:contain}
.sheet-head img{width:216px;height:133px;object-fit:cover;border-radius:var(--r-image);background:var(--surface-sunken)}
.sheet-head h2{font-size:var(--fs-heading-lg)}
@media (max-width:640px){.sheet-head{grid-template-columns:minmax(0,1fr)}.sheet-head img{grid-column:1/-1;width:100%;height:auto;aspect-ratio:216/133}}
.sheet-notes{display:grid;gap:var(--gap-tight);font-size:var(--fs-body-sm);padding:var(--pad-notice);background:var(--surface-sunken);border-radius:var(--r-box)}
.sheet-notes p{margin:0}
.specs{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,270px),1fr));gap:10px 18px}
.specs dl{margin:0;display:grid;gap:var(--gap-stack);align-content:start}
/* #441: the sheet headings went h4 → h3 (heading order); keep the h4 weight, not the semibold of base.css h3 */
.specs h3,.specs h4,.adv-sheet h4{margin:0 0 var(--stack-tight);font-family:var(--f-mono);font-size:var(--fs-label);font-weight:var(--fw-bold);text-wrap:wrap;letter-spacing:var(--tracking-kicker);text-transform:uppercase;color:var(--ink-brand)}
.specs dl>div{display:flex;justify-content:space-between;gap:var(--gap-panel);font-size:var(--fs-body-sm);padding:2px 0;border-bottom:1px dotted var(--line-row)}
.specs dt{color:var(--ink-secondary)}
.specs dd{margin:0;text-align:right}
.tblwrap{overflow-x:auto;border:1px solid var(--line-card);border-radius:var(--r-box)}
.adv-tbl{width:100%;border-collapse:collapse;font-size:var(--fs-cell);min-width:560px}
.adv-tbl th{text-align:left;font-weight:var(--fw-semibold);font-size:var(--fs-head);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--ink-head);padding:var(--pad-head);background:var(--surface-sunken)}
.adv-tbl td{padding:var(--pad-cell);border-top:1px solid var(--line-row);vertical-align:top}
.good{color:var(--good-strong)}
.adv-search{display:flex;flex-wrap:wrap;gap:var(--gap-cluster-sm) var(--gap-cluster-x);align-items:center;padding-block:10px}
.adv-search .field{flex-wrap:wrap}
.adv-search input{width:min(320px,70vw);border:1px solid var(--line-field);border-radius:var(--r-control);background:var(--surface-field);padding:var(--field-pad);font-size:var(--fs-control);font-family:var(--f-body)}
/* comparator */
.cmp-pick{display:grid;gap:var(--gap-panel)}
.chip-x{display:inline-flex;align-items:center;gap:var(--gap-icon);border:1px solid var(--line-brand);background:var(--surface-active);border-radius:var(--r-chip);padding:3px 4px 3px 11px;font-size:var(--fs-chip)}
.chip-x button{border:0;background:transparent;color:var(--ink-secondary);width:20px;height:20px;border-radius:var(--r-round);display:grid;place-items:center;font-size:var(--fs-control-sm)}
.chip-x button:hover{background:var(--surface-card);color:var(--bad)}
.cmpbtn[aria-pressed="true"]{border-color:var(--line-brand);color:var(--ink-brand)}
.cmp-wrap,.cat-wrap{overflow:auto;border:1px solid var(--line-card);border-radius:var(--r-card);background:var(--surface-card);box-shadow:var(--shadow);max-height:calc(100vh - 120px)}
.cmp-tbl,.cat-tbl{border-collapse:separate;border-spacing:0;font-size:var(--fs-cell);width:100%}
.cmp-tbl th,.cmp-tbl td{padding:var(--pad-cell);border-bottom:1px solid var(--line-row);text-align:left;vertical-align:top;min-width:150px}
.cmp-tbl thead th{padding:var(--pad-head);position:sticky;top:0;z-index:2;background:var(--surface-card);border-bottom:2px solid var(--line-row)}
.cmp-tbl tbody th{position:sticky;left:0;z-index:1;background:var(--surface-card);font-weight:var(--fw-medium);color:var(--ink-secondary);min-width:170px;white-space:nowrap}
.cmp-tbl thead th:first-child{left:0;z-index:3}
.cmp-tbl tr.grp th{position:static;background:var(--surface-sunken);font-family:var(--f-mono);font-size:var(--fs-label);letter-spacing:var(--tracking-kicker);text-transform:uppercase;color:var(--ink-brand);padding-top:9px}
.cmp-h{display:grid;grid-template-columns:minmax(0,max-content) auto;justify-content:start;gap:var(--gap-cluster-sm);align-items:center} /* v199: the ✕ beside the name, not at the far edge of a wide column */
.cmp-h img,.cmp-h .noimg{grid-column:1/-1;width:132px;height:81px;object-fit:cover;border-radius:var(--r-image);background:var(--surface-sunken);display:grid;place-items:center;font-size:var(--fs-caption);color:var(--ink-note)}
.cmp-h .linkbtn{font-family:var(--f-display);font-size:var(--fs-subtitle);font-weight:var(--fw-semibold)}
/* v210: a long name in a narrow column is cut with … instead of pushing the ✕ out of the cell */
.cmp-h{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--gap-cluster-sm)}
.cmp-nx{display:flex;align-items:center;gap:var(--gap-cluster-sm);min-width:0}
.cmp-nx .linkbtn{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cmp-nx .icon-btn{flex:none}
/* the marks (en hangar, ★, ♥) take their own line under the name: beside it they ate the narrow column and hid the name and the ✕ */
.cmp-nx{display:grid;grid-template-columns:auto minmax(0,max-content) auto;justify-content:start}
.cmp-nx .ship-marks{grid-row:2;grid-column:1/-1;contain:inline-size} /* no width of their own: they wrap inside the column instead of widening it */
/* UX-014: 24×24 px hit area (WCAG 2.5.8); the six dots keep their size in a pseudo-element */
.cmp-grip{flex:none;position:relative;width:24px;height:24px;cursor:grab;border-radius:var(--r-thumb-lg)}
.cmp-grip::before{content:"";position:absolute;left:4px;top:5px;width:8px;height:14px;opacity:.75;background-image:radial-gradient(circle,var(--fill-muted) 1.3px,transparent 1.6px);background-size:4px 4.667px}
/* T1b: the six dots touch the left edge of the header cell (as in the catalogue): the cell has no start padding, the picture keeps its own */
.cmp-tbl thead th[data-cj]{padding-inline-start:0}
.cmp-tbl thead .cmp-h img,.cmp-tbl thead .cmp-h .noimg{margin-inline-start:var(--space-3)}
.cmp-grip:hover::before,.cmp-grip:focus-visible::before{opacity:1}
.cmp-grip:focus-visible{background:var(--tint-grip)}
.cmp-tbl th.cmp-dragging{opacity:.45}
.cmp-tbl th.cmp-over-l{box-shadow:inset 3px 0 0 var(--line-accent)}
.cmp-tbl th.cmp-over-r{box-shadow:inset -3px 0 0 var(--line-accent)}
/* owner 2026-11-01: best and worst as a translucent glow from the figure side, not a flat fill */
.cmp-tbl td.best{color:var(--good-strong);font-weight:var(--fw-semibold);background:var(--cell-good);box-shadow:var(--cell-good-edge);text-shadow:var(--glow-good-text)}
.cmp-tbl td.worst{color:var(--bad);background:var(--cell-bad);box-shadow:var(--cell-bad-edge);text-shadow:var(--glow-bad-text)}
.cmp-tbl td.best::before,.cmp-tbl td.worst::before{font-size:.75em;margin-right:4px}
.cmp-tbl td.best::before{content:"▲"}
.cmp-tbl td.worst::before{content:"▼"}
/* v151: alternating rows like the catalogue (group headings do not count); the sticky first column stays opaque */
.cmp-tbl tbody tr:nth-child(even of :not(.grp)) td:not(.best):not(.worst){background:var(--tint-row)}
.cmp-tbl tbody tr:nth-child(even of :not(.grp)) th{background:var(--tint-row-solid)}
.cmp-tbl tbody tr:not(.grp):hover td:not(.best):not(.worst),.cmp-tbl tbody tr:not(.grp):hover th{background:var(--surface-hover)}
/* catalogue */
.cat-head{display:grid;gap:var(--gap-cluster)}
.cat-q{width:100%;border:1px solid var(--line-field);border-radius:var(--r-control);background:var(--surface-field);padding:var(--field-pad);font-size:var(--fs-control)}
.cat-tbl th,.cat-tbl td{padding:var(--pad-cell);border-bottom:1px solid var(--line-row);text-align:left;white-space:nowrap}
.cat-tbl thead th{position:sticky;top:0;z-index:2;background:var(--surface-sunken);font-size:var(--fs-head);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--ink-head);font-weight:var(--fw-semibold)}
.cat-tbl .r{text-align:right}
.cat-tbl .c{text-align:center;width:36px}
.cat-tbl tbody tr:hover td{background:var(--surface-hover)}
.cat-tbl tr.mine td{background:color-mix(in srgb,var(--info-soft) 55%,transparent)}
.cat-name{display:flex;align-items:center;gap:var(--gap-cluster)}
.cat-name img,.cat-name .noimg{width:52px;height:32px;object-fit:cover;border-radius:var(--r-thumb-lg);background:var(--surface-sunken);flex:none}
.cat-name .linkbtn{font-weight:var(--fw-semibold)}
.sortbtn{border:0;background:none;padding:0;font:inherit;color:inherit;letter-spacing:inherit;text-transform:inherit;display:inline-flex;gap:4px;align-items:center;cursor:pointer}
.sortbtn:hover{color:var(--ink-body)}
th[aria-sort="ascending"] .sortbtn,th[aria-sort="descending"] .sortbtn{color:var(--ink-brand)}
.sortbtn .arr{font-size:.75em;opacity:.8}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.viewtabs :is(button,a){padding-inline:14px}
.cmp-tbl tbody th{text-transform:none;letter-spacing:normal;font-family:var(--f-body);font-size:var(--fs-cell)}
.cmp-h .linkbtn{color:var(--ink-body);text-transform:none;letter-spacing:normal}
.cat-tbl tbody td{font-size:var(--fs-cell)}
.adv-sheet{grid-template-columns:minmax(0,1fr)}
.adv-sheet>*{min-width:0}

.adv-tbl{min-width:0;table-layout:auto}
.adv-tbl td{overflow-wrap:anywhere}
.adv-tbl td.mods{min-width:220px}
@media (max-width:640px){.adv-tbl{min-width:520px}}
.sheet-close .icon-btn[aria-pressed="true"]{border-color:var(--line-brand);color:var(--ink-brand)}
.adv-tbl th,.adv-tbl td{white-space:normal}
.adv-tbl td.mods{min-width:240px}
.adv-dlg::backdrop{cursor:default}
.kstats{display:flex;flex-wrap:wrap;gap:var(--gap-stack) var(--gap-section);font-size:var(--fs-caption);color:var(--ink-note);margin-top:2px}
.kstats b{color:var(--ink-body);font-weight:var(--fw-semibold)}
.adv-card .clamp{display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
.adv-card .ecl{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.adv-card .pros li,.adv-card .cons li{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* v70: role settings and fleet links */
.fl-goto{all:unset;cursor:pointer;display:inline-flex;align-items:center;box-sizing:border-box;min-height:24px;font-size:var(--fs-label);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--ink-link)}
.fl-goto:hover{text-decoration:underline;text-underline-offset:2px}
.fl-goto:focus-visible{outline:2px solid var(--focus);outline-offset:var(--focus-offset)}
@media (pointer:coarse){.fl-goto{min-height:44px}}
.adv-fleet .fleet li{grid-template-columns:minmax(120px,190px) auto minmax(0,1fr) auto}
/* v184: the role names stay on one line: the first column takes the longest name and every row shares the columns */
@media (min-width:561px){.adv-fleet .fleet{grid-template-columns:max-content auto minmax(0,1fr) auto}
  .adv-fleet .fleet>li{grid-column:1/-1;grid-template-columns:subgrid}
  .adv-fleet .fleet .fl-role{white-space:nowrap}}
.ropt-btn{display:inline-flex;align-items:center;gap:var(--gap-tight);border:1px solid var(--line-chip);background:var(--surface-control);color:var(--ink-secondary);border-radius:var(--r-control);padding:2px 7px;font-size:var(--fs-control);cursor:pointer;line-height:var(--lh-130)}
.ropt-btn:hover,.ropt-btn[aria-expanded="true"]{border-color:var(--line-brand);color:var(--ink-body)}
.ropt-btn.on{border-color:var(--line-brand);color:var(--ink-brand)}
/* v183: the arrow by the gear is bigger and blinks to invite opening the role settings; open, it points up */
.ropt-car{display:inline-block;font-size:21px;line-height:var(--lh-100);color:var(--ink-brand);transition:transform .25s ease;animation:ropt-blink 1.2s ease-in-out infinite}
.ropt-btn[aria-expanded="true"] .ropt-car{transform:rotate(180deg);animation:none}
@keyframes ropt-blink{50%{opacity:.25}}
@media (prefers-reduced-motion:reduce){.ropt-car{animation:none;transition:none}}
.ropt-sum{font-size:var(--fs-caption);max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ropt-panel{display:grid;gap:var(--gap-panel);padding:var(--pad-card);margin:8px 0 4px;border:1px solid var(--line-brand);border-radius:var(--r-box);background:var(--surface-sunken)}
.ropt-panel.in-fleet{grid-column:1/-1}
.ropt-panel .seg{flex-wrap:wrap}
.adv-role{scroll-margin-top:16px}
@media (max-width:560px){.adv-fleet .fleet li{grid-template-columns:minmax(0,1fr) auto}}

/* v80: full role settings */
.ropt-panel .prios{display:grid;gap:var(--gap-tight)}
.ropt-panel .check{display:flex;gap:var(--gap-icon);align-items:center;font-size:var(--fs-control)}
.ropt-panel details summary{cursor:pointer}

/* v81: gear box with a red X that clears the role settings */
.ropt-box{display:inline-flex;align-items:stretch;border:1px solid var(--line-card);border-radius:var(--r-control);background:var(--surface-control);overflow:hidden;vertical-align:middle;justify-self:start}
.ropt-box.on{border-color:var(--line-brand)}
.ropt-box .ropt-btn{border:0;border-radius:0;background:transparent}
.ropt-x{all:unset;cursor:pointer;display:inline-flex;align-items:center;padding:0 8px;line-height:var(--lh-100);color:var(--bad);border-left:1px solid var(--line-row)}
.ropt-x svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.ropt-x:hover{background:color-mix(in srgb,var(--bad) 14%,transparent)}
.ropt-x:focus-visible{outline:2px solid var(--focus);outline-offset:var(--focus-offset-inset)}

/* v82: priority rows: name next to its bar, alternate row shading as the guide */
.prios{gap:0}
.prio{padding:4px 6px}
.prio:nth-child(odd){background:var(--tint-zebra)}
.prio>span:first-child{min-width:0;white-space:nowrap}
.ropt-panel .prios{max-width:440px}
.ropt-panel .prio{grid-template-columns:140px minmax(120px,1fr) 74px}

/* v85: community grade inside the role tag of the ship sheet */
.tier-badge{display:inline-block;margin-left:6px;padding:var(--pad-tier);border-radius:var(--r-micro);font-size:var(--fs-badge);font-weight:var(--fw-badge);line-height:var(--lh-130);background:var(--warn-soft);color:var(--warn-strong);border:1px solid var(--warn)}

/* catálogo v105 (organización tipo spviewer) */
#view-catalog .cat-wrap{max-height:none;overflow:visible}
#view-catalog .cat-tbl thead th{top:0}
#view-catalog .cat-tbl{font-size:var(--fs-cell)}
#view-catalog .cat-tbl th,#view-catalog .cat-tbl td{padding:var(--pad-cell-compact)}
#view-catalog .cat-tbl th{padding-inline:6px}
#view-catalog .cat-tbl tbody tr:nth-child(even) td{background:var(--tint-row)}
#view-catalog .cat-tbl tbody tr:hover td{background:var(--surface-hover)}
#view-catalog .cat-name img,#view-catalog .cat-name .noimg{width:48px;height:28px}
.cat-nm{display:inline-flex;align-items:baseline;gap:5px;min-width:0}
.cat-mfr{color:var(--ink-note);font-size:var(--fs-caption)}
.cat-fav{border:0;background:none;cursor:pointer;font-size:var(--fs-icon);line-height:var(--lh-100);color:var(--ink-icon);padding:var(--pad-fav);border-radius:var(--r-micro)}
.cat-fav[aria-pressed="true"]{color:var(--ink-link)}
.cat-fav:hover{color:var(--ink-link);background:var(--surface-hover)}
/* v211: ♥ wishlist column of the catalogue, same look as the ★ */
.cat-wish{border:0;background:none;cursor:pointer;font-size:var(--fs-icon);line-height:var(--lh-100);color:var(--ink-icon);padding:var(--pad-fav);border-radius:var(--r-micro)}
.cat-wish[aria-pressed="true"]{color:var(--ink-brand)}
.cat-wish:hover:not([aria-disabled="true"]){color:var(--ink-brand);background:var(--surface-hover)}
.cat-wish[aria-disabled="true"]{text-decoration:line-through;cursor:not-allowed}
.cat-price{display:inline-flex;align-items:center;gap:var(--gap-cluster-sm);justify-content:flex-end}
.cat-now{display:inline-flex;align-items:center;gap:var(--gap-tight);color:var(--good-strong);font-weight:var(--fw-semibold)}
.cat-now svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.cat-wb{font-size:var(--fs-micro);font-weight:var(--fw-badge);color:var(--on-fill);background:var(--wb-strong);border-radius:var(--r-chip);padding:var(--pad-badge-sm);white-space:nowrap}
.cat-st{display:inline-block;font-size:var(--fs-badge);font-weight:var(--fw-badge);border-radius:var(--r-chip);padding:var(--pad-badge-xs)}
.cat-st{text-decoration:none;text-transform:uppercase;letter-spacing:var(--tracking-label);font-size:var(--fs-badge)}
a.cat-st:hover{filter:brightness(1.15);text-decoration:underline}
.cat-st.ready{background:var(--good-strong);color:var(--on-fill)}
.cat-st.prod{background:var(--warn-strong);color:var(--on-fill)}
.cat-st.hold{background:var(--fill-muted);color:var(--ink-inverse)}
.cat-st.concept{background:var(--surface-inverse);color:var(--ink-inverse)}
.cat-st.ai{background:var(--info);color:var(--ink-inverse)}
#view-catalog td.cat-stc{text-align:right;line-height:var(--lh-120)}
#view-catalog td.cat-stc small{display:block;margin-top:3px;font-size:var(--fs-caption);color:var(--ink-note);white-space:nowrap}
.cat-types{margin-top:var(--stack-item)}
.cat-types b{font-weight:var(--fw-semibold);color:var(--ink-note);margin-left:2px}
.cat-side-box{display:grid;gap:var(--gap-cluster);margin-top:var(--stack-section)}
.cat-side-box h3{margin:0}
.cat-stats{display:grid;grid-template-columns:1fr 1fr;gap:var(--gap-cluster)}
.cat-stats div{display:grid;padding:8px 10px;border:1px solid var(--line-card);border-radius:var(--r-box);background:var(--surface-sunken)}
.cat-stats b{font-size:var(--fs-stat-md)}
.cat-stats span{font-size:var(--fs-caption);color:var(--ink-note)}
.cat-minis{list-style:none;margin:0;padding:0;display:grid;gap:var(--gap-tight)}
.cat-mini{display:flex;align-items:center;gap:var(--gap-cluster);width:100%;border:0;background:none;color:inherit;text-align:left;padding:4px;border-radius:var(--r-control);cursor:pointer}
.cat-mini:hover{background:var(--surface-hover)}
.cat-mini img,.cat-mini .noimg{width:44px;height:26px;object-fit:cover;border-radius:var(--r-thumb);flex:none}
.cat-mini span{display:grid;min-width:0}
.cat-mini b{font-size:var(--fs-body-sm);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cat-mini small{font-size:var(--fs-caption);color:var(--ink-note)}
#view-catalog .adv-layout{grid-template-columns:300px minmax(0,1fr)}
#view-catalog td.cat-c-role{white-space:normal;min-width:110px;max-width:150px;line-height:var(--lh-125)}
#view-catalog .cat-tbl{table-layout:fixed}
#view-catalog .cat-tbl th,#view-catalog .cat-tbl td{overflow:hidden;text-overflow:ellipsis}
#view-catalog .cat-tbl thead th{position:sticky}
/* T1: header cell = [6 dots][label…][arrow]; the «…» is in the label, never in the cell (a cell's text-overflow replaces the whole inline-flex button); the dots touch the left edge */
#view-catalog .cat-tbl th.cat-mk .sortbtn{min-width:0;overflow:hidden;white-space:normal;overflow-wrap:anywhere;hyphens:auto;text-align:left}
#view-catalog .cat-tbl thead th[data-ck]{overflow:visible;padding-inline-start:0}
.cat-hd{display:flex;align-items:center;min-width:0}
.cat-hd .sortbtn{flex:1 1 auto;min-width:0;gap:4px;justify-content:flex-start}
.cat-tbl th.r .cat-hd .sortbtn{justify-content:flex-end}
.cat-lab{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cat-hd .arr{flex:none}
/* column-edge handle: 8 px centred on the edge between two columns (.l: left edge; .e: the last column's own edge, inside the table) */
.cat-rz{position:absolute;top:0;right:-4px;width:8px;height:100%;cursor:col-resize;touch-action:none;z-index:3}
.cat-rz.e{right:0}
.cat-rz::after{content:"";position:absolute;top:15%;bottom:15%;left:calc(50% - 1px);width:2px;border-radius:var(--r-swatch);background:var(--line-field)}
.cat-rz:hover::after,.cat-resizing .cat-rz::after{background:var(--line-brand)}
body.cat-resizing,body.cat-resizing *{cursor:col-resize!important;user-select:none}
.rz-hot tbody,.rz-hot tbody *{cursor:col-resize}
.cat-bline{position:absolute;width:2px;background:var(--line-brand);pointer-events:none;z-index:5}
.cmp-wrap{position:relative}
.cmp-combo{position:relative;display:inline-block}
.cmp-sug{position:absolute;left:0;top:100%;min-width:100%;width:max-content;max-width:min(420px,90vw);z-index:var(--z-dropdown);list-style:none;margin:var(--space-1) 0 0;padding:var(--space-1);max-height:340px;overflow:auto;background:var(--surface-card);border:1px solid var(--line-card);border-radius:var(--r-card);box-shadow:var(--shadow);font-weight:var(--fw-regular);text-transform:none;letter-spacing:normal}
.cmp-sug li{padding:var(--space-2) var(--gap-panel);min-height:24px;border-radius:var(--r-chip);cursor:pointer;color:var(--ink-body);white-space:nowrap}
.cmp-sug li:hover,.cmp-sug li[aria-selected="true"]{background:var(--surface-active)}
.cmp-sug li.cmp-sug-none{cursor:default;color:var(--ink-secondary)}
.cmp-sug li.cmp-sug-none:hover{background:none}
@media (pointer:coarse){.cmp-sug li[role=option]{min-height:44px;display:flex;align-items:center}}
.cmp-ghost{position:fixed;z-index:var(--z-popover);pointer-events:none;opacity:var(--op-ghost);background:color-mix(in srgb,var(--surface-page) 40%,transparent);border:2px solid var(--line-brand);border-radius:var(--r-swatch);box-shadow:var(--shadow-ghost);overflow:hidden}
.cmp-ghost>table{margin:0}
#view-compare .cmp-mvsrc{opacity:var(--op-src)}
.cmp-tbl.cmp-fixed thead th{overflow:visible}
.cmp-tbl.cmp-fixed thead .cmp-h{min-width:0;overflow:hidden}
.cat-rsi{display:inline-grid;place-items:center;flex:none;width:22px;height:22px;border-radius:var(--r-micro);color:var(--ink-icon)}
.cat-rsi:hover{color:var(--ink-brand);background:var(--surface-hover)}
.cat-name .linkbtn{text-decoration:none}
.cat-name .linkbtn:hover,.cat-name .linkbtn:focus-visible{text-decoration:underline}
.cat-rsi svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
#view-catalog td.cat-name{min-width:0}
.cat-nm{display:flex;align-items:baseline;gap:5px;min-width:0;overflow:hidden;white-space:nowrap}
.cat-nm .cat-mfr{flex:none}
.cat-nm .linkbtn{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cat-price{flex-wrap:nowrap;white-space:nowrap;gap:var(--gap-cluster)} /* v196: warbond and «agotada» beside the price */
@media (max-width:1700px){#view-catalog .cat-wrap{overflow-x:auto}}
@media (max-width:980px){#view-catalog .adv-layout{grid-template-columns:minmax(0,1fr)}}
#view-catalog .cat-tbl th.c,#view-catalog .cat-tbl td.c{padding:4px 0;text-overflow:clip;overflow:visible;text-align:center}
.cat-hidden{display:flex;align-items:center;gap:var(--gap-panel);flex-wrap:wrap;padding:var(--pad-notice-sm);border:1px dashed var(--line-accent);border-radius:var(--r-box);background:var(--surface-accent);font-size:var(--fs-body-sm)}
/* the name cell stays a table cell (display:flex on a td broke the row heights); the flex box is inside */
#view-catalog td.cat-name{display:table-cell;vertical-align:middle}
.cat-nmw{display:flex;align-items:center;gap:var(--gap-cluster);min-width:0}
#view-catalog .cat-tbl td{vertical-align:middle}
.px-ast{color:var(--ast-ink);font-weight:var(--fw-bold);cursor:help;margin-left:1px;font-size:max(.8em,var(--fs-1));line-height:0}
.px-ast.noqd-ast{color:var(--bad);text-shadow:none;font-size:.95em;margin-left:2px}
.px-ast:focus-visible{outline:2px solid var(--focus);outline-offset:var(--focus-offset);border-radius:var(--r-1)}
.px-tip{position:fixed;z-index:var(--z-float);max-width:320px;padding:8px 10px;border-radius:var(--r-box);background:var(--surface-inverse);color:var(--ink-inverse);font-size:var(--fs-note);line-height:var(--lh-140);box-shadow:0 6px 20px rgba(0,0,0,.3);pointer-events:none}
.px-tip[hidden]{display:none}
.cat-zoom{display:inline-flex;align-items:center;gap:var(--gap-cluster-sm);margin-right:12px}
.cat-zoom .btn{min-width:28px;justify-content:center}
.cat-zoom .num{min-width:44px;text-align:center;font-size:var(--fs-note)}

/* v138 */
.ropt-btn{padding:3px 9px;color:var(--ink-body)}
.ropt-gear{font-size:var(--fs-icon-lg);line-height:var(--lh-100);color:var(--ink-brand);text-shadow:0 0 8px var(--tint-halo)}
.ropt-box{border-color:var(--line-active)}
.fl-shipcell{display:flex;flex-wrap:wrap;align-items:center;gap:var(--gap-tight) var(--gap-cluster);min-width:0}
.fl-tags{display:inline-flex;flex-wrap:wrap;gap:var(--gap-tight)}
.fl-tags .pill{font-size:var(--fs-micro);padding:var(--pad-badge-sm)}
.role-head .role-up{flex:none}
.btn.btn-clear{border-color:var(--bad);color:var(--bad);background:var(--bad-soft);box-shadow:0 0 10px color-mix(in srgb,var(--bad) 30%,transparent)}
.btn.btn-clear:hover{background:color-mix(in srgb,var(--bad) 24%,var(--surface-card));color:var(--bad)}
.cat-zoom{gap:var(--gap-tight)}
.cat-zoom-l{font-size:var(--fs-caption);color:var(--ink-secondary);margin-right:4px}
.cat-zoom .num{font-weight:var(--fw-semibold);color:var(--ink-body)}
.cmp-tbl td{white-space:pre-line}
.cmp-tbl td.num{text-align:right}
.cmp-tbl thead th{position:sticky}
.cmp-tbl.cmp-fixed{table-layout:fixed}
.cmp-tbl.cmp-fixed th,.cmp-tbl.cmp-fixed td{min-width:0;overflow:hidden;overflow-wrap:anywhere}
.cmp-tbl.cmp-fixed tbody th{white-space:normal}
.cat-av{display:inline-block;padding:var(--pad-badge-xs);border-radius:var(--r-chip);font-size:var(--fs-badge);font-weight:var(--fw-badge);white-space:nowrap}
.cat-av.av-wb{background:var(--wb-soft);color:var(--wb-strong)} .cat-av.av-sale{background:var(--good-soft);color:var(--good-strong)}
.cat-av.av-nosale{background:var(--surface-sunken);color:var(--ink-secondary)} .cat-av.av-none{border:1px dashed var(--line-card);color:var(--ink-note)}
.cat-av.av-oos{background:var(--warn-soft);color:var(--warn-strong)} .cat-av.av-concept{background:var(--pred-soft);color:var(--pred)}
.cat-av.av-hold{background:var(--surface-accent);color:var(--ink-accent)} .cat-av.av-ai{background:var(--info-soft);color:var(--info)}
.cat-filters .chips{flex-direction:column;flex-wrap:nowrap;align-items:stretch;gap:var(--gap-tight)}
.cat-filters .chipbtn{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:left;font-size:var(--fs-control-sm);padding:var(--pad-chip-sm);border-radius:var(--r-control)}
.cat-filters .chips.cat-sizes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}
.cat-filters .chips.cat-sizes .chipbtn{text-align:center}
.cat-sel{width:100%;border:1px solid var(--line-field);border-radius:var(--r-control);background:var(--surface-field);color:var(--ink-body);padding:var(--field-pad);font:inherit;font-size:var(--fs-control)}
/* v143: budget fields wide enough for their placeholder («el general», «sin límite») */
#view-advisor input[data-rbudget],#adv-budget{width:calc(12ch + 26px);box-sizing:border-box}
/* v145: the advisor roles one under another, as in the catalogue */
.chips.chips-col{flex-direction:column;flex-wrap:nowrap;align-items:stretch;gap:var(--gap-tight)}
.chips-col .chipbtn{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:left;font-size:var(--fs-control-sm);padding:var(--pad-chip-sm);border-radius:var(--r-control)}
/* v162: «Herramienta en construcción» */
#view-catalog td.cat-c-buy{white-space:normal;min-width:110px;line-height:var(--lh-125)}
#view-catalog td.cat-c-rent{cursor:help}
.specs dl>div.rent-co{flex-wrap:wrap}
.specs.arm dl>div.arm-row{align-items:baseline}
.specs.arm dt{flex:none;max-width:45%}
.specs.arm dd{line-height:var(--lh-145)}
.specs dd.rent-pl{flex-basis:100%;text-align:left;font-size:var(--fs-caption);color:var(--ink-secondary)}
.specs dd.rent-pl span{white-space:nowrap}
/* v189: one colour per role in the suggested fleet (hue --rh set inline); the role being covered gets a ring */
.pill.rc{color:hsl(var(--rh) 65% 24%);background:hsl(var(--rh) 75% 92%)} /* UX-109: 4,5:1 at every hue (yellow-green gave 4,0 at 30 %) */
.pill.rc.cur{box-shadow:inset 0 0 0 1.5px currentColor}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .pill.rc{color:hsl(var(--rh) 80% 74%);background:hsl(var(--rh) 45% 19%)}}
:root[data-theme="dark"] .pill.rc{color:hsl(var(--rh) 80% 74%);background:hsl(var(--rh) 45% 19%)}

/* v190: catalogue columns: grip to move them, left and right edges to resize, «Columnas» picker */
#view-catalog .cat-wrap{position:relative}
.cat-grip{display:inline-flex;align-items:center;flex:none;box-sizing:border-box;justify-content:flex-start;padding-left:var(--space-1);width:24px;height:24px;margin:0;vertical-align:middle;color:var(--ink-icon);cursor:grab;border-radius:var(--r-thumb);touch-action:none;opacity:.7}
.cat-grip svg{width:8px;height:12px;fill:currentColor}
.cat-grip:hover,.cat-grip:focus-visible{color:var(--ink-brand);opacity:1;background:var(--tint-grip)}
body.cat-moving,body.cat-moving *{cursor:grabbing!important;user-select:none}
#view-catalog th.cat-drag{opacity:var(--op-drag)}
.cat-drop{position:absolute;width:3px;background:var(--fill-meter);border-radius:var(--r-swatch);pointer-events:none;z-index:6;box-shadow:0 0 8px var(--fill-meter)}
.cat-rz.l{right:auto;left:-4px}
.cat-cols{display:grid;gap:var(--gap-cluster);padding-top:10px;border-top:1px solid var(--line-row)}
.cat-cols-h{display:flex;flex-wrap:wrap;align-items:center;gap:var(--gap-cluster-sm) var(--gap-cluster-x)}
.cat-cols-l{font-family:var(--f-mono);font-size:var(--fs-label);letter-spacing:var(--tracking-kicker);text-transform:uppercase;color:var(--ink-brand)}
.cat-cols-h .btn{margin-left:auto}
.cat-cols-grid{display:flex;flex-wrap:wrap;gap:12px 36px}
.cat-cols-g{display:grid;gap:var(--gap-cluster-sm);align-content:start}
.cat-cols-grid .check{white-space:nowrap;margin:0}

/* v194: measuring each column's one-line width for «Repartir ancho» */
#view-catalog .cat-tbl.cat-measure{table-layout:auto!important;width:max-content!important;min-width:0!important}
#view-catalog .cat-tbl.cat-measure th,#view-catalog .cat-tbl.cat-measure td{white-space:nowrap!important;max-width:none!important;min-width:0!important;width:auto!important}
#view-catalog .cat-tbl.cat-measure .cat-nm{overflow:visible;text-overflow:clip}

/* v197: ship names that open the sheet from the plan, the manual chains and the fleet */
.linkbtn.sheet-link{color:inherit;font:inherit;text-decoration:underline;text-decoration-color:color-mix(in srgb,currentColor 35%,transparent);text-underline-offset:3px;text-align:inherit}
.linkbtn.sheet-link:hover{color:var(--ink-link);text-decoration-color:currentColor}
/* v197: the generic open-dialog rule (margin:auto, inset 0) pushed the sheet away from the place it is given */
dialog.dlg.adv-dlg[open]{margin:0;right:auto;bottom:auto;max-height:none;overflow:hidden}
/* v200: link to the ship page at RSI beside the name in the sheet, as in the catalogue */
.sheet-head h2 .sheet-rsi{width:28px;height:28px;margin-left:8px;vertical-align:middle}
.sheet-head h2 .sheet-rsi svg{width:18px;height:18px}
.sheet-head h2 .sheet-rsi:hover{color:var(--ink-brand);background:var(--surface-hover)}

/* v212: Consejero in three columns: answers on the left, suggested fleet (with each role's ⚙) on the right, both as wide
   and each with its own scroll; at 980 px and below everything stacks */
#view-advisor .adv-layout.adv-3{--side:340px;grid-template-columns:var(--side) minmax(0,1fr) var(--side);grid-template-areas:"side main right"}
#view-advisor .adv-3>.adv-side:first-child{grid-area:side}
#view-advisor .adv-3>.adv-main{grid-area:main}
#view-advisor .adv-3>.fleet-rail{grid-area:right}
@media (max-width:1499px){#view-advisor .adv-layout.adv-3{--side:300px;gap:16px}}
/* v213: the right column stays down to 981 px (Windows at 150 % leaves ~1265 px), narrower; its ⚙ rows go on two lines */
@media (max-width:1279px){#view-advisor .adv-layout.adv-3{--side:260px;gap:14px}
}
@media (max-width:1100px){#view-advisor .adv-layout.adv-3{--side:236px;gap:12px}}
@media (max-width:980px){#view-advisor .adv-layout.adv-3{grid-template-columns:minmax(0,1fr);grid-template-areas:"side" "right" "main"}}
/* the fleet in a narrow column: role and ⚙ on one line, then the ship and its price, then its roles */
.fleet-rail .adv-fleet{padding:var(--pad-box-md);grid-template-columns:minmax(0,1fr)} /* #348 a long ⚙ summary (several sizes) is cut, it does not widen the column */
.fleet-rail .adv-fleet .section-head{flex-wrap:wrap;gap:var(--gap-tight) var(--gap-panel)}
.fleet-rail .adv-fleet .fleet{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:0;margin:var(--stack-item) 0 0}
.fleet-rail .adv-fleet .fleet>li{grid-column:1/-1;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:3px 8px;align-items:center;padding:7px 0;font-size:var(--fs-body-sm)}
.fleet-rail .fl-rh{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:var(--gap-cluster);min-width:0}
.fleet-rail .fl-rh .fl-role{white-space:normal;text-align:left}
.fleet-rail .fl-shipcell{grid-column:1}
.fleet-rail .fl-price{grid-column:2;text-align:right;white-space:nowrap}
.fleet-rail .fl-tags{grid-column:1/-1}
.fleet-rail .fl-one{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--gap-tight) var(--gap-cluster);margin-top:var(--stack-item);font-size:var(--fs-body)}
.fleet-rail .fl-one .linkbtn{font-weight:var(--fw-semibold)}
/* the ⚙ panel in the column: tighter */
.fleet-rail .ropt-panel{grid-column:1/-1;gap:var(--gap-cluster);padding:9px;margin:4px 0 2px;font-size:var(--fs-note)}
.fleet-rail .ropt-panel .chips{gap:var(--gap-tight)}
.fleet-rail .ropt-panel .chipbtn{font-size:var(--fs-control-sm);padding:2px 8px}
.fleet-rail .ropt-panel .seg button{font-size:var(--fs-control-sm);padding:var(--pad-seg-sm)}
.fleet-rail .ropt-panel .prios{max-width:none}
.fleet-rail .ropt-panel .prio{grid-template-columns:minmax(0,1fr) 78px 50px;gap:var(--gap-cluster-sm);padding:2px 4px;font-size:var(--fs-caption)}
.fleet-rail .ropt-panel .prio>span:first-child{overflow:hidden;text-overflow:ellipsis}
.fleet-rail .ropt-panel .check{font-size:var(--fs-caption)}
.fleet-rail .ropt-panel .field input{width:100px}
/* «Una nave por rol / Una nave para todos» */
.adv-multi{display:grid;gap:var(--gap-tight);margin-bottom:var(--stack-item)}
.adv-split-h{margin:6px 0 -14px;font-size:var(--fs-label-lg);letter-spacing:var(--tracking-label-lg);text-transform:uppercase;color:var(--ink-label)}
/* v213: narrow side columns: nothing wider than the column (the «Con varios roles» switch wraps), and below 1280 px
   each ⚙ priority takes two lines: its name, then the bar with its level */
#view-advisor .adv-side{overflow-x:hidden}
#view-advisor .adv-side .seg{flex-wrap:wrap}
@media (max-width:1279px){#view-advisor .fleet-rail .ropt-panel .prio{grid-template-columns:minmax(0,1fr) 64px;row-gap:0}
  #view-advisor .fleet-rail .ropt-panel .prio>span:first-child{grid-column:1/-1}}
#view-advisor .adv-side .adv-quiz{grid-template-columns:minmax(0,1fr);min-width:0}
#view-advisor .adv-side .adv-quiz .q,#view-advisor .adv-side .adv-quiz .row{min-width:0}
@media (max-width:1279px){#view-advisor .adv-side>.box{padding:var(--pad-box-md)}}
/* v214: «Con varios roles»: the two options share the box half and half, centred; the one ⚙ of the ship for all roles;
   what to give up for a role the ship can't do */
#view-advisor .adv-multi .seg{display:grid;grid-template-columns:1fr 1fr;width:100%;flex-wrap:nowrap}
#view-advisor .adv-multi .seg button{display:flex;align-items:center;justify-content:center;text-align:center;white-space:normal;line-height:var(--lh-125);padding:var(--pad-compact);min-width:0}
.fl-cgear{display:flex;align-items:center;justify-content:space-between;gap:var(--gap-cluster);margin-top:var(--stack-detail);padding-top:8px;border-top:1px dashed var(--line-row)}
.fleet-rail .fl-cgear+.ropt-panel{margin-top:var(--stack-detail-sm)}
.fl-sac{grid-column:1/-1;font-size:var(--fs-caption);line-height:var(--lh-140);color:var(--ink-secondary);padding:var(--pad-compact);border-left:2px solid var(--warn);background:color-mix(in srgb,var(--warn) 8%,transparent);border-radius:0 var(--r-box) var(--r-box) 0}
.fl-sac .linkbtn{font-weight:var(--fw-semibold)}
.fl-sac .fl-drop{margin-top:var(--stack-detail-sm);display:block}
/* v215: the roles to give up, one per line with a dash; the size that covers the most roles */
.fl-sac-l{list-style:none;margin:4px 0 6px;padding:0}
.adv-fleet .fleet .fl-sac-l li,.fl-sac-l li{display:block;padding:0;border:0;font-size:var(--fs-caption);line-height:var(--lh-140);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:var(--fw-semibold);color:var(--ink-body)}
.fl-sizehint .linkbtn{font-weight:var(--fw-semibold)}
.fl-sizehint .btn{margin-top:var(--stack-detail-sm);display:block}
/* v216: the ship picked stays at the top of the column while it scrolls; the size advice under the size chips */
.fleet-rail .fl-stick{position:sticky;top:0;z-index:3;background:var(--surface-card);margin:-14px -14px 0;padding:14px 14px 10px;border-bottom:1px solid var(--line-row);border-radius:var(--r-card) var(--r-card) 0 0}
.fleet-rail .fl-stick .fl-one{margin-top:var(--stack-item)}
.ropt-panel .fl-sizehint{display:block;margin:var(--stack-item) 0 0}
/* v217: «Copiar enlace» and the notice of a shared address */
.sheet-close .icon-btn[data-share] svg{display:block;margin:auto}
.fl-share{display:flex;justify-content:flex-end;margin-top:var(--stack-detail)}
.share-bar{position:static;z-index:auto;display:flex;align-items:center;gap:var(--gap-panel);padding:10px 12px 10px 16px;background:var(--surface-card);border:1px solid var(--line-card);border-left:3px solid var(--line-brand);border-radius:var(--r-card);box-shadow:var(--shadow);font-size:var(--fs-body-sm);line-height:var(--lh-140)}
.share-bar span{flex:1;min-width:0}
.share-bar .icon-btn{width:28px;height:28px;flex:none}
@media (max-width:560px){.share-bar{flex-wrap:wrap}}
/* v217: the shared chain */
.chs-dlg{width:min(980px,calc(100vw - 32px))}
.chs-dlg .dlg-body{display:grid;gap:var(--gap-section)}
.chs-dlg .chain{margin:0}
/* v218: «…» with the other roles of a ship, and how the ship for every role is ranked */
.adv-combo .combo-more{cursor:help;border:0;font:inherit;font-size:var(--fs-caption);line-height:var(--lh-120)}
.fleet-rail .fl-crank{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--gap-cluster-sm) var(--gap-cluster);margin-top:var(--stack-detail)}
.fleet-rail .fl-crank .seg button{font-size:var(--fs-control-sm);padding:var(--pad-seg-sm)}
/* v222: the ship for every role always takes the same three lines (name, price, official classes), so a different
   ship never pushes the settings below it up or down */
.fleet-rail .fl-one{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:22px 18px 22px;gap:var(--gap-stack);align-items:center}
.fleet-rail .fl-one>*{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fleet-rail .fl-one .fl-onen .linkbtn{max-width:calc(100% - 14px);overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}
.fleet-rail .fl-one .fl-tags{display:flex;flex-wrap:nowrap;gap:var(--gap-tight);overflow:hidden}
.fleet-rail .fl-one .fl-tags .pill{flex:none}
.fleet-rail .fl-onenone{display:block;height:66px;white-space:normal;margin-bottom:0}
.fleet-rail .fl-onenone>*{white-space:normal}
.fleet-rail .fl-cgear{flex-wrap:nowrap}
.fleet-rail .fl-cgear>.faint{flex:none}
.fleet-rail .fl-cgear .ropt-box{min-width:0}
.fleet-rail .fl-cgear .ropt-btn{min-width:0;max-width:100%}
.fleet-rail .fl-cgear .ropt-sum{display:block;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.viewtabs>button{flex:none;min-width:auto}
@media (max-width:560px){.viewtabs :is(button,a){padding:8px 10px 9px;font-size:15px}}
/* v238: community rating column */
#view-catalog td.cat-c-com{white-space:normal;min-width:110px;max-width:190px;line-height:var(--lh-125)}
.cat-tier{display:inline-block;min-width:18px;text-align:center;padding:var(--pad-tier);border-radius:var(--r-1);font-weight:var(--fw-badge);font-family:var(--f-mono);font-size:var(--fs-micro)}
.cat-tier.t-S{background:var(--surface-accent);color:var(--ink-accent)}
.cat-tier.t-A{background:var(--good-soft);color:var(--good-strong)}
.cat-tier.t-B{background:var(--info-soft);color:var(--info)}
.cat-tier.t-C,.cat-tier.t-D{background:var(--surface-sunken);color:var(--ink-secondary)}
/* v239: on phones the tab bar only scrolls sideways. overflow-x:auto made the 1px the buttons hang below (to cover the bottom line)
   scrollable up and down too: the line is now an inset shadow and the buttons stay inside */
.viewtabs{overflow-y:hidden;overscroll-behavior-x:contain;border-bottom:0;box-shadow:inset 0 -1px 0 var(--line-row)}
.viewtabs>button{margin-bottom:0}
/* v241: «Con varios roles» always on view; greyed out until two roles are chosen */
#view-advisor .adv-multi.is-off .seg button{opacity:var(--op-disabled);cursor:not-allowed}
/* v245: in the suggested fleet the ship's roles go beside its name and the ⚙ of the role under it */
.fleet-rail .fl-shipcell .fl-tags{grid-column:auto}
.fleet-rail .fl-cfg{grid-column:1/-1;display:flex}
/* v247: ★ ⇄ ♥ headers sort their column */
#view-catalog th.cat-mk{padding:0}
#view-catalog th.cat-mk .sortbtn{width:100%;max-width:100%;justify-content:center;gap:1px;padding:6px 0;font-size:var(--fs-cell)}
#view-catalog th.cat-mk .sortbtn .arr{font-size:.67em}
/* v252: padlock beside a fixed (bespoke) gun */
.gun-lock{display:inline-flex;vertical-align:-2px;margin-left:4px;color:var(--warn-strong);cursor:default}
.gun-lock svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.gun-lock svg rect{fill:currentColor;fill-opacity:.18}
/* v255: comparison: the browser's sideways bar is hidden and a thin line under the ship pictures does its job */
#view-compare .cmp-outer{position:relative}
#view-compare .cmp-wrap::-webkit-scrollbar{height:0;width:8px}
#view-compare .cmp-wrap::-webkit-scrollbar-thumb{background:var(--surface-track);border-radius:var(--r-1)}
.cmp-hbar{position:absolute;z-index:4;height:12px;margin-top:-5px;cursor:pointer;touch-action:none}
.cmp-hbar::before{content:"";position:absolute;left:0;right:0;top:5px;height:2px;background:var(--surface-track);border-radius:var(--r-swatch);opacity:.6}
.cmp-hbar i{position:absolute;left:0;top:5px;height:2px;border-radius:var(--r-swatch);background:var(--fill-meter);box-shadow:0 0 6px var(--fill-meter);transition:height var(--dur-1),top var(--dur-1)}
.cmp-hbar:hover i,.cmp-hbar.drag i{top:4px;height:4px}

/* v263: ⇄ junto al nombre de la nave: al comparador desde Flota, planificador y montaje manual */
.cmp-mini{display:inline-grid;place-items:center;width:20px;height:20px;margin-left:5px;padding:0;vertical-align:middle;border:1px solid var(--line-card);border-radius:var(--r-control);background:transparent;color:var(--ink-icon);font-size:var(--fs-control-sm);line-height:var(--lh-100);cursor:pointer;font-weight:var(--fw-semibold)}
.cmp-mini:hover{border-color:var(--line-brand);color:var(--ink-brand)}
.cmp-mini[aria-pressed="true"]{border-color:var(--line-brand);background:var(--tint-selected);color:var(--ink-brand)}
.cmp-mini:focus-visible{outline:2px solid var(--focus);outline-offset:var(--focus-offset)}
.cr-split{display:block}

/* v267: Comparar junto al enlace de RSI y selector de build pegado al título */
.sheet-head h2 .sheet-cmp{margin-left:8px;vertical-align:middle;font-size:var(--fs-control-sm);border-color:var(--line-brand);color:var(--ink-brand);box-shadow:0 0 10px color-mix(in srgb,var(--brand) 45%,transparent)}
.sheet-head h2 .sheet-cmp:hover{box-shadow:0 0 14px color-mix(in srgb,var(--brand) 70%,transparent)}
.build-h{display:flex;align-items:center;flex-wrap:wrap;gap:var(--gap-cluster)}
.build-h .field{font-size:var(--fs-control);font-weight:var(--fw-regular);margin:0}

/* v300: «Parche:» in the header, shown on every tab (owner, 27 oct 2026); its changes open in a window like the ship sheet */
.stamp-patch{display:flex;align-items:center;flex-wrap:wrap;gap:var(--gap-cluster-sm) var(--gap-panel);font-size:var(--fs-note);color:var(--ink-secondary)}
.stamp-patch:empty{display:none}
.patch-lbl{font-family:var(--f-mono);font-size:var(--fs-caption);color:var(--ink-note)}
.patch-sel{font:inherit;font-size:var(--fs-chip);padding:3px 6px;border:1px solid var(--line-field);border-radius:var(--r-control);background:var(--surface-field);color:var(--ink-body)}
.patch-sub{font-family:var(--f-mono);font-size:var(--fs-caption);color:var(--ink-note)}
.patch-dlg{width:min(760px,calc(100vw - 32px));max-height:calc(100vh - 48px);overflow:hidden;padding:0}
.patch-dlg[open]{display:flex;flex-direction:column}
/* owner 2026-11-11: una sola barra, la del contenido; dialog.dlg[open] (base.css) daría overflow:auto a la ventana y saldrían dos */
dialog.dlg.patch-dlg[open]{overflow:hidden}
.patch-dlg .sheet-scroll{flex:1 1 auto;min-height:0}
.patch-dlg .sheet-scroll{max-height:calc(100vh - 50px)}
.patch-dlg .patch-head{display:grid;gap:var(--gap-tight);padding-right:44px}
.patch-dlg h2{font-size:var(--fs-heading-lg);margin:0}
.patch-dlg h3{font-size:var(--fs-heading-sm);margin:var(--stack-tight) 0 0}
/* v382: en la ficha, lo que cambia con el parche elegido */
.sheet-pch{margin:0;font-size:var(--fs-body-sm);padding:var(--pad-notice-sm);border-left:3px solid var(--line-accent);background:color-mix(in srgb,var(--line-accent) 8%,var(--surface-sunken));border-radius:var(--r-box)}

/* UX-031 / UX-032 (lote 3-3): columnas y filtros plegados, columna Nave pegajosa con su nombre entero */
.cat-adj,.cat-fdet{min-width:0}
.cat-adj>summary,.cat-fdet>summary{cursor:pointer;font-weight:var(--fw-semibold);display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;padding:6px 0;list-style:none}
.cat-adj>summary::-webkit-details-marker,.cat-fdet>summary::-webkit-details-marker{display:none}
.cat-adj>summary::before,.cat-fdet>summary::before{content:"▸";color:var(--ink-note);transition:transform var(--dur-2)}
.cat-adj[open]>summary::before,.cat-fdet[open]>summary::before{transform:rotate(90deg)}
.cat-adj>summary:focus-visible,.cat-fdet>summary:focus-visible{outline:2px solid var(--focus);outline-offset:var(--focus-offset);border-radius:var(--r-control)}
.cat-adj[open]>summary{margin-bottom:var(--stack-detail-sm)}
.cat-adj>.row{margin-top:var(--stack-item)}
@media (pointer:coarse){.cat-adj>summary,.cat-fdet>summary{min-height:44px}}
@media (min-width:981px){.cat-fdet>summary{display:none}}
@media (max-width:980px){
  #view-catalog .adv-side{display:contents}
  #view-catalog .cat-fdet{order:1;padding:0 12px;border:1px solid var(--line-card);border-radius:var(--r-card);background:var(--surface-card)}
  #view-catalog .cat-fdet[open]{padding-bottom:12px}
  #view-catalog .cat-fdet .cat-filters{border:0;box-shadow:none;padding:0;background:none}
  #view-catalog .adv-main{order:2}
  #view-catalog .cat-sideinfo{order:3}
}
.cat-nmb{display:grid;gap:3px;min-width:0;flex:1}
.cat-nmb .pill{justify-self:start}
#view-catalog .cat-nm{flex-wrap:wrap;white-space:normal;overflow:visible;column-gap:5px;row-gap:0}
#view-catalog .cat-nm .linkbtn{overflow:visible;text-overflow:clip;white-space:normal;text-align:left;overflow-wrap:anywhere}
#view-catalog td.cat-name,#view-catalog th.cat-c-n{min-width:240px}
#view-catalog .cat-tbl th.cat-c-n,#view-catalog .cat-tbl td.cat-name{position:sticky;left:102px}
#view-catalog .cat-tbl th.cat-c-n{z-index:4}
#view-catalog .cat-tbl td.cat-name{z-index:1;box-shadow:6px 0 6px -6px rgba(0,0,0,.4);background:var(--surface-card)}
#view-catalog .cat-tbl tbody tr:nth-child(even) td.cat-name{background:var(--tint-row-solid)}
#view-catalog .cat-tbl tbody tr.mine td.cat-name{background:color-mix(in srgb,var(--info-soft) 55%,var(--surface-card))}
#view-catalog .cat-tbl tbody tr:hover td.cat-name{background:var(--surface-hover)}
#view-catalog .cat-tbl th.cat-mk,#view-catalog .cat-tbl td.c{position:sticky;z-index:1;background:var(--surface-card)}
#view-catalog .cat-tbl th.cat-mk{z-index:4;background:var(--surface-sunken)}
#view-catalog .cat-tbl tr>:nth-child(1){left:0}
#view-catalog .cat-tbl tr>:nth-child(2){left:34px}
#view-catalog .cat-tbl tr>:nth-child(3){left:68px}
#view-catalog .cat-tbl tbody tr:nth-child(even) td.c{background:var(--tint-row-solid)}
#view-catalog .cat-tbl tbody tr.mine td.c{background:color-mix(in srgb,var(--info-soft) 55%,var(--surface-card))}
#view-catalog .cat-tbl tbody tr:hover td.c{background:var(--surface-hover)}
@media (max-width:560px){
  #view-catalog td.cat-name,#view-catalog th.cat-c-n{min-width:150px}
  #view-catalog .cat-tbl th.cat-c-n,#view-catalog .cat-tbl td.cat-name{left:0}
  #view-catalog .cat-tbl th.cat-mk,#view-catalog .cat-tbl td.c{position:static}
  #view-catalog .cat-name img,#view-catalog .cat-name .noimg{width:36px;height:22px}
}
#view-catalog .cat-tbl tr.cat-pend td{padding:0;border:0;background:none}
/* UX-030: Consejero a 390 px: chips en filas que ajustan, «Disponibilidad» y «Fabricantes» plegables, salto al resultado */
.adv-quiz details.q>summary{display:flex;flex-wrap:wrap;align-items:center;gap:var(--gap-tight) var(--gap-cluster);padding:2px 0}
.adv-quiz details.q>summary::before{content:"▸";color:var(--ink-note);transition:transform var(--dur-2)}
.adv-quiz details.q[open]>summary::before{transform:rotate(90deg)}
.adv-quiz details.q>summary:focus-visible{outline:2px solid var(--focus);outline-offset:var(--focus-offset);border-radius:var(--r-control)}
.adv-quiz details.q[open]>summary{margin-bottom:var(--stack-detail-sm)}
.adv-goto{display:none;margin:0;align-items:center;gap:var(--gap-cluster)}
@media (max-width:980px){
  #view-advisor .adv-quiz .chips-col{flex-direction:row;flex-wrap:wrap;align-items:flex-start;gap:var(--gap-cluster-sm)}
  #view-advisor .adv-quiz .chips-col .chipbtn{white-space:normal;overflow:visible;text-overflow:clip;text-align:center}
  .adv-goto{display:flex}
}
@media (pointer:coarse){.adv-quiz details.q>summary{min-height:44px}#view-advisor .adv-quiz .chips-col .chipbtn,.adv-goto .btn{min-height:36px}}
/* UX-033: Comparador a 390 px y «Solo diferencias» */
.cmp-tbl tr.grp .cmp-gt{all:unset;box-sizing:border-box;display:flex;align-items:center;gap:var(--gap-cluster-sm);width:100%;min-height:24px;cursor:pointer;font:inherit;letter-spacing:inherit;text-transform:inherit;color:inherit}
.cmp-tbl tr.grp .cmp-gt::before{content:"▾";transition:transform var(--dur-2)}
.cmp-tbl tr.grp .cmp-gt[aria-expanded="false"]::before{transform:rotate(-90deg)}
.cmp-tbl tr.grp .cmp-gt:focus-visible{outline:2px solid var(--focus);outline-offset:var(--focus-offset-inset)}
.cmp-tbl tbody tr.gc{display:none}
.cmp-tbl.cmp-onlydiff tbody tr.same{display:none}
#cmp-add{min-width:16ch;font-family:var(--f-body)}
@media (max-width:980px){#view-compare .cmp-wrap{max-height:none}}
@media (max-width:640px){
  .cmp-tbl{font-size:var(--fs-cell-sm)}
  .cmp-tbl th,.cmp-tbl td{padding:var(--pad-cell);min-width:96px}
  .cmp-tbl tbody th{min-width:96px;width:110px;max-width:110px;white-space:normal;font-size:var(--fs-cell-sm);overflow-wrap:break-word;hyphens:auto}
  .cmp-tbl thead th{min-width:132px}
  .cmp-tbl thead th:first-child{min-width:96px;width:110px}
  .cmp-nx{flex-wrap:wrap}
  .cmp-nx .linkbtn{flex:1 1 auto;min-width:min-content;white-space:normal;overflow:visible;text-overflow:clip;text-align:left}
  .cmp-tbl.cmp-fixed tbody th{max-width:none}
  .cmp-tbl tr.grp .cmp-gt{min-height:36px}
}
@media (pointer:coarse){.cmp-tbl tr.grp .cmp-gt{min-height:44px}}
.cat-qlab{display:block;font-size:var(--fs-caption);color:var(--ink-secondary);margin-bottom:2px}
/* UX-020: the comparator title is an h2 (first heading of the view) with the size of the other box titles */
.cmp-pick h2{font-size:var(--fs-heading)}
/* UX-023: the sheet's scroll area shows a frame only for keyboard focus, inset so it does not double the dialog border; no resize grips on touch */
.sheet-scroll:focus:not(:focus-visible){outline:0}
.sheet-scroll:focus-visible{outline-offset:var(--focus-offset-inset)}
@media (pointer:coarse){.rz{display:none}}

/* UX-073 */
.ship-marks{display:inline-flex;flex-wrap:wrap;gap:var(--gap-tight);align-items:center;font-size:var(--fs-caption)}
.chip-x .ship-marks{margin-left:2px}
.sheet-head h2 .ship-marks{margin-left:8px;vertical-align:middle}
/* UX-042 (part 3): in narrow widths the filters form is ~2000 px tall and the empty result sits far above it, so the way out stays in view while the filters are in use */
@media (max-width:980px){#view-catalog .cat-clearrow.is-on{position:sticky;bottom:0;z-index:2;padding:8px 0;background:var(--surface-card)}}

/* Flota */
.fl{display:grid;gap:var(--gap-block)}
.fl-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--gap-panel)}
@media (max-width:700px){.fl-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
.fl-kpis b.good{color:var(--good-strong)}
.fl-kpis>div{display:grid;gap:var(--gap-stack);background:var(--surface-sunken);border-radius:var(--r-box);padding:var(--pad-tile)}
.fl-kpis b{font-size:var(--fs-stat);font-family:var(--f-display);font-weight:var(--fw-bold)}
.fl-ship{border:1px solid var(--line-card);border-radius:var(--r-box);padding:var(--pad-card);display:grid;gap:var(--gap-panel);background:var(--surface-card);box-sizing:border-box}
.fl-ship:not(.open){grid-template-rows:1fr auto;align-content:stretch}
.fl-ship.open{border-color:var(--line-brand)}
.fl-ship-top{display:flex;gap:var(--gap-section);align-items:flex-start;min-width:0}
.fl-ship-top .shipimg{width:116px;flex:none}
.fl-ship-main{display:grid;gap:var(--gap-tight);min-width:0}
.fl-ship-main h4{margin:0;font-family:var(--f-display);font-size:var(--fs-stat-sm);letter-spacing:var(--tracking-1)}
.fl-figs{display:flex;flex-wrap:wrap;gap:var(--gap-tight) var(--gap-cluster-x);align-items:center}
.fl-path{color:var(--ink-secondary);overflow-wrap:anywhere}
.fl-pkgfull{display:inline-flex;align-items:center;gap:var(--gap-icon);color:var(--ink-secondary);cursor:pointer;width:fit-content}
.fl-reach{color:var(--ink-secondary)}
.fl-tbl-wrap{overflow-x:auto;min-width:0}
.fl-tbl{width:100%;border-collapse:collapse;font-size:var(--fs-cell)}
.fl-tbl th,.fl-tbl td{padding:var(--pad-cell);border-bottom:1px solid var(--line-row);text-align:left;vertical-align:middle}
.fl-tbl thead th{padding:var(--pad-head);font-size:var(--fs-head);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--ink-head);font-weight:var(--fw-semibold);background:var(--surface-sunken);white-space:nowrap}
.fl-tbl tfoot td{border-bottom:0;border-top:2px solid var(--line-row)}
.fl-tbl .r{text-align:right;white-space:nowrap}
/* v152: same alternating rows and hover as the catalogue and the comparator */
.fl-tbl tbody tr:nth-child(even) td{background:var(--tint-row)}
.fl-tbl tbody tr:hover td{background:var(--surface-hover)}
.fl-ccus .fl-tbl tbody tr[class^="k-"] td:first-child{box-shadow:inset 3px 0 0 var(--k,transparent)}
.fl-ccus .fl-tbl tr.k-std{--k:var(--good)} .fl-ccus .fl-tbl tr.k-wb{--k:var(--wb)} .fl-ccus .fl-tbl tr.k-mine{--k:var(--fill-meter)} .fl-ccus .fl-tbl tr.k-bb{--k:var(--info)} .fl-ccus .fl-tbl tr.k-neg{--k:var(--bad)}
.fl-tbl .pill{margin-left:4px}
.fl-paid{display:inline-flex;align-items:center;gap:var(--gap-icon);justify-content:flex-end}
.fl-paid input[data-fe]{width:92px;text-align:right;border:1px solid var(--line-field);border-radius:var(--r-control);background:var(--surface-field);color:var(--ink-body);padding:var(--field-pad);font-size:var(--fs-control)}
.fl-paid input[data-edited]{border-color:var(--warn);background:var(--warn-soft)}
.fl-undo{border:1px solid var(--line-card);background:var(--surface-card);color:var(--ink-secondary);border-radius:var(--r-control);padding:2px 6px;cursor:pointer}
.fl-undo:hover{border-color:var(--line-brand);color:var(--ink-body)}
.fl-key{display:inline-block;width:18px;height:0;border-top:3px solid var(--line-muted);vertical-align:middle;opacity:.7}
.fl-key.wb{border-color:var(--wb);opacity:1}
.fl-key.mine{border-color:var(--line-brand);opacity:1}
.fl-key.std{border-color:var(--good);opacity:1} .fl-key.bb{border-color:var(--bb);opacity:1} .fl-key.neg{border-color:var(--bad);opacity:1}
@media (max-width:560px){.fl-ship-top .shipimg{width:84px}.fl-paid input[data-fe]{width:76px}}
.fl-ship .fl-tbl .fl-paid input[data-fe]{width:80px}
.fl-ship .fl-tbl th,.fl-ship .fl-tbl td{padding:var(--pad-cell)}
.fl-ship-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,460px),1fr));gap:var(--gap-section);align-items:start}
.fl-chart-box{display:grid;grid-template-columns:190px minmax(0,1fr);gap:var(--gap-block);align-items:start}
@media (max-width:760px){.fl-chart-box{grid-template-columns:minmax(0,1fr)}}
.fl-filters{display:grid;gap:14px;font-size:var(--fs-body-sm)}
.fl-filters :is(h4,h5){margin:0 0 4px;font-family:var(--f-display);font-size:var(--fs-body-sm);letter-spacing:var(--tracking-4);text-transform:uppercase;color:var(--ink-brand)}
.fl-filters label{display:flex;align-items:center;gap:var(--gap-icon);padding:2px 0;min-height:24px;cursor:pointer}
.fl-filters input[type="checkbox"]{min-width:24px;min-height:24px;margin:0}
@media (pointer:coarse){.fl-filters label{min-height:44px}.fl-filters input[type="checkbox"]{min-width:44px;min-height:44px}}
.fl-range{display:flex;align-items:center;gap:var(--gap-icon)}
.fl-range input{width:100%;min-width:0;border:1px solid var(--line-field);border-radius:var(--r-control);background:var(--surface-field);color:var(--ink-body);padding:var(--field-pad);font-size:var(--fs-control)}
@media (max-width:760px){.fl-filters{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}}
.fl-chart-main{display:grid;gap:var(--gap-cluster);min-width:0}
.fl-zoom{justify-content:space-between}
.fl-zbtns{display:inline-flex;align-items:center;gap:var(--gap-cluster-sm)}
.fl-chart-wrap{overflow-x:auto;border:1px solid var(--line-card);border-radius:var(--r-box);background:var(--surface-sunken)}
.fl-chart{display:block;max-width:none}
.fl-grid{stroke:var(--grid);stroke-width:1}
.fl-axis{stroke:var(--line-muted);stroke-width:1}
.fl-tick{font-family:var(--f-mono);font-size:var(--fs-caption);fill:var(--ink-note)}
.fl-bar{cursor:pointer}
.fl-bar rect{fill:var(--fill-muted)}
.fl-bar.wb rect{fill:var(--wb)}
.fl-bar.mine rect{fill:var(--fill-meter)}
.fl-bar.std rect{fill:var(--good)} .fl-bar.bb rect{fill:var(--bb)} .fl-bar.neg rect{fill:var(--bad)}
.fl-bar .fl-n{font-family:var(--f-mono);font-size:var(--fs-1);font-weight:var(--fw-semibold);fill:var(--ink-inverse);pointer-events:none}
.fl-bar .fl-lbl{font-family:var(--f-body);font-size:var(--fs-caption);fill:var(--ink-secondary)}
.fl-bar.on .fl-lbl,.fl-bar:hover .fl-lbl{fill:var(--ink-body)}
.fl-bar:hover rect,.fl-bar:focus-visible rect{stroke:var(--line-marker);stroke-width:1.5}
.fl-bar.on rect{stroke:var(--line-marker);stroke-width:2}
.fl-bar.dim{opacity:.18}
.fl>*,.fl-ccus>*,.fl-chart-box,.fl-chart-main,#fl-chart-slot{min-width:0;max-width:100%}
.fl-tbl .pill.k-wb,.ccu-acct .pill.k-wb{background:var(--wb-soft);color:var(--wb-strong)} .fl-tbl .pill.k-bb{background:var(--info-soft);color:var(--info)}
.fl-pkgwhole{width:fit-content;margin:2px 0 4px}
/* v225: value of the account and concierge level, centred above the figures */
.fl-sum-row{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));grid-template-rows:1fr 1fr auto;gap:var(--gap-panel);margin-top:var(--stack-section)}
/* v275: the two account cards and the eight figures share one grid, with the same card style: all ten exactly the same size */
.fl-sum-row>.fl-acct,.fl-sum-row>.fl-kpis{display:contents}
.fl-acct-c{grid-column:1;grid-row:1}
.fl-acct-c+.fl-acct-c{grid-row:2}
.fl-acct-note{grid-column:1/-1;grid-row:3}
@media (max-width:700px){.fl-sum-row{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:none}.fl-acct-c,.fl-acct-c+.fl-acct-c{grid-column:auto;grid-row:auto}.fl-acct-note{grid-column:1/-1;grid-row:auto}}
.fl-acct-c{display:grid;gap:var(--gap-stack);background:var(--surface-sunken);border-radius:var(--r-box);padding:var(--pad-tile)}
.fl-acct b.num{font-size:var(--fs-stat);font-family:var(--f-display);font-weight:var(--fw-bold)}
.fl-acct .fl-conc{font-size:var(--fs-body-sm)}
.fl-acct .fl-conc-ast{color:var(--ast-ink)}
.fl-acct-note{margin:0}
.fl-diag{grid-column:1/-1;grid-row:4;display:grid;gap:var(--gap-cluster);justify-items:start;padding:var(--pad-notice);border:1px dashed var(--line-card);border-radius:var(--r-box)}
.fl-diag pre{margin:0;max-width:100%;overflow-x:auto;white-space:pre-wrap;font:12px/1.5 var(--f-mono)}
@media (max-width:700px){.fl-diag{grid-row:auto}}
.fl-acct .sm b.num{font-size:var(--fs-body);font-family:inherit;color:var(--ink-body)}
/* v257: Flota with nothing imported: same layout, «Sin datos» where the figures go */
.fl-nd{font-size:var(--fs-body-sm);font-weight:var(--fw-semibold);color:var(--ink-note)}
.fl-empty-note{margin:6px 0 10px}
.fl-nodata{color:var(--ink-note);text-align:center;font-weight:var(--fw-semibold);padding:14px 8px;margin:0}
.fl-nodata-chart{display:grid;place-items:center;min-height:180px;border:1px dashed var(--line-card);border-radius:var(--r-box);margin-top:8px}
/* owner 2026-10-31: naves del Universo Persistente y equipamiento de cada nave */
.pill.pu{border:1px solid var(--brand-strong);color:var(--brand-strong);background:transparent}
.fl-lo{display:flex;flex-wrap:wrap;align-items:center;gap:var(--gap-icon) var(--gap-panel);margin:var(--space-2) 0 0}
/* #267 the parts a saved configuration changes */
.fl-chgw{margin:var(--space-1) 0 0}.fl-chg-h{margin:0}
.fl-chg{list-style:none;margin:var(--space-1) 0 0;padding:0;display:grid;gap:var(--space-1);font-size:var(--fs-body-sm)}
.fl-chg-s{color:var(--ink-secondary)}.fl-chg-m{color:var(--ink-secondary);white-space:nowrap}.fl-chg s{color:var(--ink-note)}
.fl-lo select{max-width:100%}
/* #301: the label above and the field across the card, so a place such as «Stanton Gateway (Pyro)» is not cut */
.fl-loc{display:flex;flex-direction:column;align-items:stretch;gap:var(--gap-icon);margin-top:var(--gap-icon)}.fl-loc input{width:100%;min-width:0}
.fl-puadd{display:flex;flex-wrap:wrap;gap:var(--space-2);margin:var(--gap-panel) 0}.fl-puadd input{flex:1 1 180px;min-width:0}
/* #295 rented ships of the Persistent Universe: the time left and the warning about the parts that are not stock */
.fl-rent{display:flex;flex-wrap:wrap;align-items:center;gap:var(--gap-icon) var(--gap-panel);margin-top:var(--gap-icon)}.fl-rentl{display:inline-flex;align-items:center;gap:var(--gap-icon)}.fl-rentl input{width:4.5em}
.fl-rentw{margin:var(--space-2) 0 0;padding:var(--pad-compact);border-left:2px solid var(--warn);background:var(--warn-soft);color:var(--warn-strong)}

/* Montaje manual de flota (v134) */
#view-manual{display:grid;gap:var(--gap-page);min-width:0}
#view-manual[hidden]{display:none}
.mb-list{display:grid;gap:var(--gap-panel)}
.mb-card.mb-done{border-color:color-mix(in srgb,var(--good) 45%,var(--line-card))}
.mb-pick{display:grid;gap:var(--gap-panel);padding:var(--pad-card);border:1px dashed var(--line-card);border-radius:var(--r-box)}
.mb-pick h4{margin:0;font-size:var(--fs-body);font-weight:var(--fw-medium)}
.mb-pct{color:var(--good)}.mb-pct.neg{color:var(--bad)}.mb-pct.cero{color:var(--ink-3)}
.mb-opts{display:flex;flex-wrap:wrap;gap:var(--gap-cluster-sm)}
.mb-opt{display:inline-flex;flex-wrap:wrap;align-items:center;gap:var(--gap-tight) var(--gap-cluster);padding:var(--pad-chip);border:1px solid var(--line-card);border-radius:var(--r-control);background:var(--surface-control);color:var(--ink-body);font:inherit;font-size:var(--fs-control);cursor:pointer;text-align:left;max-width:100%}
.mb-opt:hover{border-color:var(--line-brand)}
.mb-opt:focus-visible{outline:var(--focus-ring);outline-offset:var(--focus-offset)}
.mb-opt .lab{padding:1px 6px;border-radius:var(--r-1);font-size:var(--fs-caption);white-space:nowrap}
.mb-opt .num{color:var(--ink-secondary)}
.mb-field{max-width:520px}
.mb-noccu{margin:0 0 var(--gap-tight);color:var(--warn-strong)}
.mb-broken{margin:0;color:var(--warn-strong)}
.mb-acts{display:flex;flex-wrap:wrap;gap:var(--gap-cluster-sm)}
.mb-main{display:grid;grid-template-columns:minmax(0,340px) minmax(0,1fr);gap:var(--gap-page);align-items:start}
.mb-rail{position:sticky;top:var(--rail-top);max-height:var(--rail-max-h);overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}
.mb-rail .box{display:grid;gap:var(--gap-panel)}
.mb-col{display:block;min-width:0}

@media (max-width:900px){.mb-main{grid-template-columns:1fr}.mb-rail{position:static;max-height:none}}
/* v153: × takes a CCU out of the chain, + puts another one in before it */
.mb-ins,.mb-x{display:inline-grid;place-items:center;width:20px;height:20px;padding:0;border:1px solid var(--line-card);border-radius:var(--r-round);background:var(--surface-control);color:var(--ink-note);font:inherit;font-size:var(--fs-control);line-height:1;cursor:pointer;flex:none}
.mb-ins:hover,.mb-ins.on{border-color:var(--line-brand);color:var(--ink-brand)}
.mb-x{border-color:transparent;background:transparent;margin-right:2px}
.mb-x:hover{color:var(--bad);background:var(--bad-soft)}
.mb-ins:focus-visible,.mb-x:focus-visible{outline:var(--focus-ring);outline-offset:var(--focus-offset)}
.mb-inspick{border-style:solid;border-color:color-mix(in srgb,var(--line-brand) 55%,var(--line-card))}

/* v156: variants to compare */
.mb-card.mb-alt{border-style:dashed;border-color:color-mix(in srgb,var(--info) 55%,var(--line-card))}
.mb-cmp{display:flex;flex-wrap:wrap;gap:var(--gap-tight) var(--gap-cluster);align-items:center;margin:0;font-size:var(--fs-body-sm)}
.mb-cmp .good{color:var(--good-strong)} .mb-cmp .bad{color:var(--bad)}
.mb-vtag{font-style:normal;font-size:var(--fs-caption);color:var(--info)}
/* v156: take a ship out of the chain; swap the next CCU when inserting */
.mb-nodew{position:relative;display:inline-flex}
.mb-nodex{position:absolute;top:-7px;right:-7px;display:inline-grid;place-items:center;width:var(--icon-md);height:var(--icon-md);padding:0;border:1px solid var(--line-card);border-radius:var(--r-round);background:var(--surface-control);color:var(--ink-note);font:inherit;font-size:var(--fs-caption);line-height:1;cursor:pointer}
.mb-nodex:hover{color:var(--bad);border-color:var(--bad);background:var(--bad-soft)}
.mb-nodex:focus-visible{outline:var(--focus-ring);outline-offset:var(--focus-offset)}
.mb-rep{display:grid;gap:var(--gap-cluster);padding-top:10px;border-top:1px dashed var(--line-card)}
.mb-rep h4{margin:0;font-size:var(--fs-body-sm);font-weight:var(--fw-semibold);color:var(--ink-secondary)}
.mb-nodex.on{color:var(--ink-brand);border-color:var(--line-brand)}
.mb-nodeedit:hover{color:var(--ink-brand);border-color:var(--line-brand);background:var(--surface-active)}
/* v157: account CCUs in a select; the protected ships box from the planner, without the planner's own "base en el plan" mark */
.mb-field select{flex:1;min-width:0}
#view-manual #bases .pill.acc{display:none}
.mb-rail{display:grid;gap:var(--gap-block);align-content:start;min-width:0}
/* v166: purchase calendar of the hand-made chains, on the right as in the planner (variants are not counted) */
.mb-main{grid-template-columns:330px minmax(0,1fr) 300px;grid-template-areas:"rail col cal"}
.mb-main>.mb-rail{grid-area:rail}.mb-main>.mb-col{grid-area:col}.mb-main>.mb-cal{grid-area:cal}
@media (min-width:1900px){.mb-main{grid-template-columns:360px minmax(0,1fr) 340px}}
@media (max-width:1240px){.mb-main{grid-template-columns:minmax(0,1fr) 320px;grid-template-areas:"rail cal" "col cal"}.mb-rail{position:static;max-height:none}}
@media (max-width:980px){.mb-main{grid-template-columns:minmax(0,1fr);grid-template-areas:"rail" "col" "cal"}}
/* v167: planner and builder cards line up: same bar (two rows) and same room for + and × in the chain */
.ch-pad{display:inline-block;width:20px;height:20px;flex:none}
.ch-pad.x{margin-right:2px}
.card .viewbar{flex-direction:row;align-items:flex-start}
.mb-viewbar .opts,.mb-viewbar .viewbar-r{min-height:27.39px}
.viewbar.mb-viewbar>.opts,.mb-viewbar .viewbar-r{flex-direction:row;align-items:center}

/* v267: usar el mismo CCU en varias cadenas */
.mb-reuse{display:flex;align-items:center;gap:var(--gap-icon);font-size:var(--fs-note);color:var(--ink-secondary);margin:8px 0;cursor:pointer}

/* v283: modo edición: la cadena a todo el ancho de la página, por encima del resto, con los pasos más grandes */
.mb-card.mb-edit{align-content:start;position:fixed;inset:16px max(16px,calc((100vw - 1500px)/2));z-index:60;overflow:auto;overscroll-behavior:contain;
  box-shadow:0 0 0 100vmax rgba(4,10,12,.72),0 18px 60px rgba(0,0,0,.5);padding:22px 26px}
.mb-edit .card-top .shipimg{width:300px;height:auto}
.mb-edit .shipname{font-size:28px}
.mb-edit .chain{gap:12px 8px;padding:18px}
.mb-edit .chain .node{padding:9px 14px;font-size:15px}
.mb-edit .chain .node b{font-size:17px}
.mb-edit .chain .node small{font-size:var(--fs-body-sm)}
.mb-edit .chain .edge .lab{font-size:var(--fs-body);padding:5px 10px}
.mb-edit .mb-ins,.mb-edit .mb-nodex{transform:scale(1.25)}
.mb-edit .mb-opt{font-size:var(--fs-body);padding:9px 12px}
.mb-edit .chcol table{font-size:15px}
.mb-edit .chcol td{padding:11px 10px}
.btn.mb-editbtn{display:inline-flex;align-items:center;gap:var(--gap-icon)}
.btn.mb-editbtn svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.mb-editx{position:absolute;top:10px;right:10px;width:var(--ctl-h-icon);height:var(--ctl-h-icon);font-size:22px;line-height:1;z-index:2}
.mb-edit .card-top .money{padding-right:44px}
@media (max-width:640px){.mb-card.mb-edit{inset:0;padding:14px 12px}.mb-edit .card-top .shipimg{width:100%}}

/* v286: the builder's own unused hangar CCUs, under the chains */
.mb-left{margin-top:20px}
/* v294: the card's column never grows with its content (on phones the chain, the bar and the texts stayed out of the card) */
.mb-card{grid-template-columns:minmax(0,1fr)}
.mb-card>*{min-width:0}
.mb-viewbar,.mb-viewbar .viewbar-r{flex-wrap:wrap}
.mb-viewbar .viewbar-r{max-width:100%}
/* #441: target size ≥ 24 px (≥ 44 px on touch) for the insert and take-out buttons of the chain */
.mb-ins,.mb-nodex{min-width:24px;min-height:24px}
/* #441: the insert button sits between two chain nodes; a little side room keeps its 24 px target clear of them */
.mb-ins{margin-inline:var(--space-1)}
@media (pointer:coarse){.mb-ins,.mb-nodex{min-width:44px;min-height:44px}}

/* Herramientas: reglas compartidas por todas las vistas (barra de búsqueda, tablas con desplazamiento, estados de carga, tarjetas, casillas, campos, pestañas de página, enlace para saltar al contenido) */
.ty-wrap{padding:16px 0 40px;display:flex;flex-direction:column;gap:var(--gap-block-md)}
.ty-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--gap-cluster) var(--gap-block)}
.ty-head h2{margin:0;font-family:var(--f-display);font-size:var(--fs-stat-lg)}
.ty-head .ty-src{font-size:var(--fs-caption);color:var(--ink-note)}
.ty-bar{display:flex;flex-wrap:wrap;gap:var(--gap-cluster) var(--gap-section);align-items:center;background:var(--surface-card);border:1px solid var(--line-card);border-radius:var(--r-card);padding:var(--pad-notice)}
/* #233 the search bar keeps the panel gap with whatever comes below (hangar, wikelo, components, trade, mining gear) and above (a page hero) */
.ty-bar{margin-bottom:var(--gap-panel)}
.mn-hero + .ty-pg{margin-top:var(--gap-panel)}
.ty-bar input[type=search],.ty-bar input[type=text],.ty-bar input[type=number],.ty-bar select,.ty-in{background:var(--surface-field);color:var(--ink-body);border:1px solid var(--line-field);border-radius:var(--r-control);padding:var(--field-pad);font:inherit;font-size:var(--fs-control);min-width:0}
.ty-bar input[type=search]{flex:1 1 220px}
.ty-bar input[type=number]{width:110px}
.ty-bar label{display:inline-flex;gap:var(--gap-cluster-sm);align-items:center;font-size:var(--fs-body-sm);color:var(--ink-secondary)}
.ty-sub{display:flex;flex-wrap:wrap;gap:var(--gap-cluster-sm)}
.ty-sub button{border:1px solid var(--line-chip);background:var(--surface-control);color:var(--ink-secondary);border-radius:var(--r-chip);padding:5px 12px;font:inherit;font-size:var(--fs-control);cursor:pointer}
.ty-sub button[aria-pressed="true"]{background:var(--surface-active);border-color:var(--line-brand);color:var(--ink-body)}
.ty-sub button .ty-n{color:var(--ink-note);margin-left:var(--gap-tight);font-size:var(--fs-caption)}
.ty-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:var(--gap-panel)}
.ty-card{background:var(--surface-card);border:1px solid var(--line-card);border-radius:var(--r-card);overflow:hidden;display:flex;flex-direction:column}
.ty-card .ty-img{aspect-ratio:16/9;background:var(--surface-sunken) center/cover no-repeat;display:block;width:100%;object-fit:cover}
.ty-card img.ty-img.fit{object-fit:contain}
.ty-card .ty-body{padding:8px 10px 10px;display:flex;flex-direction:column;gap:var(--gap-tight);font-size:var(--fs-body-sm)}
.ty-card .ty-ttl{font-weight:var(--fw-semibold);color:var(--ink-body);line-height:var(--lh-125)}
.ty-meta{font-size:var(--fs-caption);color:var(--ink-note)}
.ty-tag{display:inline-block;font-size:var(--fs-caption);line-height:var(--lh-130);border-radius:var(--r-chip);padding:var(--pad-badge-sm);border:1px solid var(--line-card);color:var(--ink-secondary);margin:0 var(--stack-tight) var(--stack-micro) 0;white-space:nowrap}
.ty-tag.good{border-color:var(--good);color:var(--good-strong);background:var(--good-soft)}
.ty-tag.warn{border-color:var(--warn);color:var(--warn-strong);background:var(--warn-soft)}
.ty-tag.bad{border-color:var(--bad);color:var(--bad);background:var(--bad-soft)}
.ty-tag.yel{border-color:var(--wb);color:var(--wb-strong);background:var(--wb-soft)}
.ty-tag.org{border-color:var(--line-accent);color:var(--ink-accent);background:var(--surface-accent)}
.ty-tag.pur{border-color:var(--pred);color:var(--pred);background:var(--pred-soft)}
.ty-tag.info{border-color:var(--info);color:var(--info);background:var(--info-soft)}
.ty-tbl{width:100%;border-collapse:collapse;font-size:var(--fs-cell);background:var(--surface-card);border:1px solid var(--line-card);border-radius:var(--r-card);overflow:hidden}
.ty-tbl th{position:sticky;top:0;background:var(--surface-sunken);text-align:left;font-weight:var(--fw-semibold);color:var(--ink-head);padding:var(--pad-head);border-bottom:1px solid var(--line-row);cursor:pointer;white-space:nowrap;font-size:var(--fs-head)}
.ty-tbl th.r,.ty-tbl td.r{text-align:right}
.ty-tbl td{padding:var(--pad-cell);border-bottom:1px solid var(--line-row);vertical-align:top}
.ty-tbl tr.ty-row{cursor:pointer}
.ty-tbl tr.ty-row:hover td{background:var(--surface-active)}
.ty-tbl tr.ty-det td{background:var(--surface-sunken);cursor:default}
.ty-tbl .num{font-variant-numeric:tabular-nums;white-space:nowrap}
/* UX-032: la tabla que se desplaza deja la primera columna fija y sombrea el borde con más contenido (fondo bajo la tabla, que es transparente);
   el alto limitado solo en pantallas anchas, para no anidar dos desplazamientos en móvil */
.ty-scroll{overflow:auto;border-radius:var(--r-card);background:
  linear-gradient(90deg,var(--surface-card) 30%,transparent) left center/32px 100% no-repeat local,
  linear-gradient(270deg,var(--surface-card) 30%,transparent) right center/32px 100% no-repeat local,
  linear-gradient(90deg,var(--tint-scroll-edge),transparent) left center/12px 100% no-repeat scroll,
  linear-gradient(270deg,var(--tint-scroll-edge),transparent) right center/12px 100% no-repeat scroll,var(--surface-card)}
.ty-scroll>.ty-tbl{background:transparent}
@media (min-width:981px){.ty-scroll{max-height:72vh}}
.ty-tbl tr.ty-row td:first-child,.ty-tbl thead th:first-child{position:sticky;left:0;z-index:1}
.ty-tbl tr.ty-row td:first-child{background:var(--surface-card)}
.ty-tbl thead th:first-child{z-index:2}
@media (max-width:700px){.ty-tbl tr.ty-row td:first-child{max-width:44vw;white-space:normal;overflow-wrap:anywhere}}
.ty-sortb,.ty-openb{display:inline;padding:0;margin:0;border:0;background:none;color:inherit;font:inherit;text-align:inherit;cursor:pointer;min-height:var(--target-min)}
.ty-sortb:hover,.ty-openb:hover{color:var(--ink-link);text-decoration:underline}
.ty-sortb:focus-visible,.ty-openb:focus-visible{outline:var(--focus-ring);outline-offset:var(--focus-offset)}
.ty-openb::before{content:"▸ ";color:var(--ink-note)}
.ty-openb[aria-expanded="true"]::before{content:"▾ "}
.ty-empty p{margin:0 0 var(--stack-detail)}
.ty-empty p:last-child{margin:0}
.ty-more{align-self:center}
/* UX-043: loading and error states keep roughly the height of the view they stand for, so the page does not jump when the data arrives */
.ty-load{min-height:60vh}
.ty-load .c-estado--carga .c-estado__texto::before{content:"";display:inline-block;width:.9em;height:.9em;margin-right:.5em;vertical-align:-.1em;border:2px solid var(--line-card);border-top-color:var(--line-accent);border-radius:var(--r-round);animation:tyspin .8s linear infinite}
@keyframes tyspin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.ty-load .c-estado--carga .c-estado__texto::before{animation:none;border-top-color:var(--line-muted)}}
.ty-empty{padding:24px;text-align:center;color:var(--ink-note);background:var(--surface-card);border:1px dashed var(--line-card);border-radius:var(--r-card)}
.ty-cols{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(280px,1fr);gap:var(--gap-block-md);align-items:start}
@media (max-width:900px){.ty-cols{grid-template-columns:1fr}}
.ty-panel{background:var(--surface-card);border:1px solid var(--line-card);border-radius:var(--r-card);padding:var(--pad-card)}
.ty-panel h3{margin:0 0 var(--stack-item);font-size:var(--fs-subtitle);font-family:var(--f-display)}
.ty-kv{display:grid;grid-template-columns:1fr auto auto;gap:var(--gap-tight-sm) var(--gap-panel);font-size:var(--fs-body-sm);align-items:baseline}
.ty-kv .k{color:var(--ink-secondary)}
.ty-kv .v{font-variant-numeric:tabular-nums;text-align:right;font-weight:var(--fw-semibold)}
.ty-kv .d{font-size:var(--fs-caption);text-align:right;min-width:52px}
.ty-up{color:var(--good-strong)}
.ty-down{color:var(--bad)}
.ty-meter{height:8px;border-radius:var(--r-thumb-lg);background:var(--surface-sunken);overflow:hidden;border:1px solid var(--line-card)}
.ty-meter>span{display:block;height:100%;background:var(--fill-meter)}
.ty-meter.over>span{background:var(--bad)}
.ty-slot{display:grid;grid-template-columns:minmax(120px,170px) minmax(0,1fr);gap:var(--gap-cluster-sm) var(--gap-panel);align-items:center;padding:var(--pad-row);border-bottom:1px solid var(--line-row);font-size:var(--fs-body-sm)}
.ty-slot:last-child{border-bottom:0}
.ty-slot .ty-sl{color:var(--ink-secondary)}
.ty-slot select{width:100%;background:var(--surface-field);color:var(--ink-body);border:1px solid var(--line-field);border-radius:var(--r-control);padding:var(--field-pad);font:inherit;font-size:var(--fs-control)}
.ty-slot select.chg{border-color:var(--line-brand);box-shadow:0 0 0 1px var(--line-brand)}
.ty-slot.child{padding-left:18px}
.ty-grp{margin:var(--stack-detail) 0 var(--stack-micro);font-size:var(--fs-label);text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--ink-label)}
.ty-lights{display:flex;gap:var(--gap-panel);justify-content:center;margin:var(--stack-detail) 0}
.ty-lights i{width:34px;height:34px;border-radius:var(--r-round);border:2px solid var(--line-card);background:var(--surface-sunken);display:block}
.ty-lights i.g{background:var(--good);border-color:var(--good);box-shadow:0 0 14px var(--good)}
.ty-lights i.r{background:var(--bad);border-color:var(--bad);box-shadow:0 0 10px var(--bad)}
.ty-big{font-family:var(--f-display);font-size:var(--fs-hero-sm);font-weight:var(--fw-bold);text-align:center;font-variant-numeric:tabular-nums;line-height:var(--lh-110)}
.ty-phase{text-align:center;font-size:var(--fs-stat-md);font-weight:var(--fw-semibold)}
.ty-phase.open{color:var(--good-strong)}
.ty-phase.closed{color:var(--bad)}
.ty-phase.reset{color:var(--warn-strong)}
.ty-prog{display:flex;align-items:center;gap:var(--gap-cluster-sm)}
.ty-prog input{width:64px}
.ty-req{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(110px,170px);gap:var(--gap-cluster-sm) var(--gap-panel);align-items:center;font-size:var(--fs-body-sm);padding:var(--pad-tight) 0;border-bottom:1px dashed var(--line-row)}
.ty-req.done .ty-rn{text-decoration:line-through;color:var(--ink-note)}
.ty-bar2{height:6px;border-radius:var(--r-thumb);background:var(--surface-sunken);overflow:hidden}
.ty-bar2>span{display:block;height:100%;background:var(--good)}
.ty-note{font-size:var(--fs-caption);color:var(--ink-secondary)} /* UX-051: same secondary text token as p.note */
.ty-desc{white-space:pre-wrap;font-size:var(--fs-note);color:var(--ink-secondary);max-height:220px;overflow:auto;margin:var(--stack-detail-sm) 0}
.ty-two{display:grid;grid-template-columns:1fr 1fr;gap:var(--gap-panel)}
@media (max-width:700px){.ty-two{grid-template-columns:1fr}.ty-slot{grid-template-columns:1fr}}
.ty-chk .ty-tag{margin:0}
.ty-chk input:not(:checked)+.ty-tag{opacity:.45}
/* v359 the ship configurator and its windows in the site's turquoise (the SC of the title) instead of orange */
#view-builds,#view-missions,#view-mine,#ty-comp,#ty-craft,#ty-paint{--accent:var(--brand);--accent-soft:var(--brand-soft);--accent-strong:var(--brand-strong);--ink-accent:var(--accent-strong);--fill-primary:var(--accent-strong);--line-accent:var(--accent);--surface-accent:var(--accent-soft);--fill-accent:var(--accent);--line-primary:var(--accent-strong);--ink-highlight:var(--accent-strong)}
/* the amounts' labels in the fleet planner and the manual fleet builder */
#view-planner .eyebrow,#view-manual .eyebrow{color:var(--ink-link)}
/* UX-029: checkboxes of the tools are at least 24x24 px (WCAG 2.5.8); the coarse-pointer rule at the end of this file uses the same size */
html .ty-wrap input[type=checkbox]{width:var(--target-min);height:var(--target-min);margin:0}
/* v367 page tabs (Hangar, Equipación, Minería) drawn like the missions tabs: text with a turquoise underline */
.ty-sub.ty-ptabs{flex-wrap:nowrap;gap:var(--gap-stack);padding:var(--pad-tab-row);margin:0 0 var(--stack-tabs);border-bottom:1px solid var(--line-row);overflow-x:auto;scrollbar-width:none}
.ty-sub.ty-ptabs button{flex:none;background:none;border:0;border-bottom:2px solid transparent;border-radius:0;padding:var(--pad-tab);color:var(--ink-secondary);font-weight:var(--fw-semibold);font-size:var(--fs-control)}
.ty-sub.ty-ptabs button:hover{color:var(--ink-body)}
.ty-sub.ty-ptabs button[aria-pressed="true"]{background:none;color:var(--ink-link);border-bottom-color:var(--line-brand)}
.ty-sub.ty-ptabs button .ty-n{font-weight:var(--fw-regular)}
/* UX-022: the page tabs are real tabs (SY.c.pestanas, variant ptabs) drawn as before; UX-017: skip button, visible only on focus */
.c-tabs--ptabs{flex-wrap:nowrap;gap:var(--gap-stack);padding:var(--pad-tab-row);margin:0 0 var(--stack-tabs);scrollbar-width:none}
.c-tabs--ptabs .c-tabs__tab{flex:none;min-height:0;min-width:0;border-bottom-width:2px;padding:var(--pad-tab);color:var(--ink-secondary);font-weight:var(--fw-semibold);font-size:var(--fs-body-sm)}
.c-tabs--ptabs .c-tabs__tab:hover{background:none;color:var(--ink-body)}
.c-tabs--ptabs .c-tabs__tab[aria-selected="true"]{color:var(--ink-link);border-bottom-color:var(--line-brand)}
.c-tabs--ptabs .c-tabs__n{font-weight:var(--fw-regular);margin-left:var(--gap-tight);font-size:var(--fs-caption)}
/* #180 the sub-tabs that scroll sideways fade at the right edge, like the main bar: a cut tab reads as «more this way»; the
   end padding is the fade, so a row that fits loses nothing */
.ty-sub.ty-ptabs,.c-tabs--ptabs{overflow-x:auto;padding-inline-end:var(--gap-cluster-x);--pt-fade:linear-gradient(90deg,currentColor calc(100% - var(--gap-cluster-x)),transparent);-webkit-mask-image:var(--pt-fade);mask-image:var(--pt-fade)}
.ty-pnl{outline-offset:var(--focus-offset)}
.ty-skip:not(:focus){position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.ty-skip{margin:0 0 var(--stack-item)}
.ty-end{height:0;overflow:hidden}
/* v378 pantallas táctiles: controles de al menos 24 px (WCAG 2.5.8). Las asas de arrastrar crecen por dentro (mismo dibujo).
   Los segmentos de energía de Configuraciones se quedan: sus botones − / + hacen lo mismo */
@media (pointer:coarse){
html input[type=checkbox],html input[type=radio]{width:var(--target-min);height:var(--target-min);margin:1px}
html .cat-grip,html .grip{display:inline-flex;align-items:center;justify-content:center;min-width:var(--target-min);min-height:var(--target-min);box-sizing:border-box}
html button.cmp-mini,html button.fl-undo,html button.tb-ib,html button.tb-pab{min-width:var(--target-min);min-height:var(--target-min)}
html button.sortbtn{min-height:var(--target-min)}
}
/* v378: región principal y enlace para saltar a ella (solo se ve al llegar con el tabulador) */
.sy-main{display:grid;gap:var(--gap-page);min-width:0}
.sy-main>*,.sy-main>*>*{min-width:0}
.sy-main:focus{outline:none}
.skip-link{position:absolute;left:-9999px;top:8px;z-index:var(--z-float);padding:8px 14px;background:var(--surface-card);color:var(--ink-body);border:2px solid var(--line-accent);border-radius:var(--r-control);font-weight:var(--fw-semibold);text-decoration:none}
.skip-link:focus{left:16px}
.ty-scroll:focus-visible{outline:var(--focus-ring);outline-offset:var(--focus-offset)}   /* v378: las tablas que se desplazan reciben el foco (teclado) */
/* v397: campos con búsqueda (Mercancía, Compra en, Venta en) */
.ty-combo{position:relative}
.ty-cb-x{position:absolute;right:4px;top:50%;transform:translateY(-50%);border:0;background:none;color:var(--ink-note);font-size:var(--fs-title);line-height:var(--lh-100);padding:var(--pad-field-xs);cursor:pointer;border-radius:var(--r-thumb-lg)}
.ty-cb-x:hover{color:var(--bad)}
.ty-cb-list{position:absolute;z-index:var(--z-dropdown);left:0;right:0;top:calc(100% + 4px);max-height:320px;overflow:auto;margin:0;padding:var(--pad-tight);list-style:none;background:var(--surface-card);border:1px solid var(--line-brand);border-radius:var(--r-control);box-shadow:0 10px 30px rgba(0,0,0,.3);text-transform:none;letter-spacing:0}
.ty-cb-list li[role=option]{display:flex;justify-content:space-between;align-items:baseline;gap:var(--gap-panel);padding:var(--pad-cell);border-radius:var(--r-thumb-lg);cursor:pointer;font-size:var(--fs-control);color:var(--ink-body)}
.ty-cb-list li[role=option] span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ty-cb-list li[role=option] em{flex:none;font-style:normal;font-family:var(--f-mono);font-size:var(--fs-caption);color:var(--ink-note)}
.ty-cb-list li[role=option]:hover{background:var(--surface-hover)}
.ty-cb-list li.on{background:var(--surface-active);box-shadow:inset 2px 0 0 var(--line-brand)}
.ty-cb-list li.on em{color:var(--ink-secondary)}
.ty-cb-g{padding:8px 8px 3px;font-size:var(--fs-label);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--ink-label);font-weight:var(--fw-semibold)}
.ty-cb-none{padding:8px;font-size:var(--fs-caption);color:var(--ink-note)}
@media (pointer:coarse){.ty-cb-list li[role=option]{min-height:44px;align-items:center}}

/* Hangar y Equipación: pestañas unidas a la barra de búsqueda y filtros a la izquierda */
/* v304 Hangar / Equipación: tabs joined to the search bar, filters on the left */
.ty-invtop{display:flex;flex-direction:column}
.ty-tabs{position:relative;z-index:1;gap:24px;padding:0 24px;margin-bottom:-1px;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}
.ty-tabs button{position:relative;z-index:1;flex:none;background:transparent;border:0;border-radius:0;padding:8px 10px 9px;color:var(--ink-secondary)}
.ty-tabs button:hover{color:var(--ink-body)}
.ty-tabs button[aria-pressed="true"]{background:transparent;color:var(--ink-body);font-weight:var(--fw-semibold)}
.ty-tabsvg{position:absolute;left:0;top:0;z-index:0;pointer-events:none}
.ty-tabsvg .f{fill:var(--surface-card)}
.ty-tabsvg .l{fill:none;stroke:var(--line-card)}
.ty-tabsvg .on{fill:none;stroke:var(--line-brand);stroke-width:2}
.ty-invcols{display:grid;grid-template-columns:190px minmax(0,1fr);gap:var(--gap-section);align-items:start}
.ty-side{display:flex;flex-direction:column;gap:var(--gap-block-md);background:var(--surface-card);border:1px solid var(--line-card);border-radius:var(--r-card);padding:var(--pad-card);position:sticky;top:calc(var(--top-fix,0px) + 8px)}
.ty-fl{display:flex;flex-direction:column;gap:var(--gap-cluster-sm);font-size:var(--fs-caption);font-weight:var(--fw-semibold);color:var(--ink-note)}
.ty-fl select{background:var(--surface-field);color:var(--ink-body);border:1px solid var(--line-field);border-radius:var(--r-control);padding:var(--field-pad);font:inherit;font-size:var(--fs-control);font-weight:var(--fw-regular);width:100%}
.ty-side .ty-chk{display:flex;gap:var(--gap-cluster-sm);align-items:center;font-size:var(--fs-body-sm);font-weight:var(--fw-regular);color:var(--ink-secondary)}
.ty-main{display:flex;flex-direction:column;gap:var(--gap-panel);min-width:0}
@media (max-width:700px){.ty-invcols{grid-template-columns:1fr}.ty-side{position:static}}

/* Barra de secciones principal (.vt-), barras fijas (también las pestañas de cada herramienta al bajar), destello de la pestaña Objetos, cinta de la versión PTU y aura de la página abierta */
.viewtabs.tooltabs{margin-top:0}
.viewtabs.tooltabs button{font-size:var(--fs-body);padding:8px 12px 9px}
.viewtabs.tooltabs .vt-lead{align-self:center;font-family:var(--f-body);font-size:var(--fs-label);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--ink-label);padding:0 6px 0 2px;white-space:nowrap}
/* Main section bar (.viewtabs:not(.tooltabs)): ALL its rules live here (the shared button base is in advisor.css, .tooltabs below it).
   ALWAYS ONE ROW, icon always visible; text is clipped with an ellipsis (the full text stays in the DOM, and every tab has a title).
   >=1200px:the five packs fill the bar, icon above the name; the description is only the tab title (shown on hover), so the name gets the room.
   900-1199px: same, without the subtitle (secondary information goes first).
   561-899px: icon beside the name, compact; the 15 tabs scroll sideways (edge fade) when they do not fit.
   <=560px: the same scroll strip with bigger touch targets (rules at the end of this file, next to the mobile header).
   Separator = left edge of every pack but the first: the same margin on both sides, so the two gaps are equal. */
.viewtabs .vt-lbl{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--gap-icon);white-space:nowrap;text-align:center;min-width:0;max-width:100%}
.viewtabs .vt-nm{display:block;font-size:var(--fs-body);min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.viewtabs .vt-ico{width:20px;height:20px;flex:none;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}
.viewtabs:not(.tooltabs){flex-wrap:nowrap;gap:0}
.viewtabs .vt-pack{display:flex;flex:1 1 auto;min-width:0;position:relative}
.viewtabs .vt-pack+.vt-pack{margin-left:var(--gap-panel)}
.viewtabs .vt-pack+.vt-pack::before{content:"";position:absolute;left:calc(var(--gap-panel) / -2);top:var(--gap-panel);bottom:var(--gap-panel);border-left:1px solid var(--line-row)}
.viewtabs .vt-pack>a{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:var(--gap-stack);white-space:nowrap;text-align:center;padding:var(--pad-cell-lg);padding-inline:var(--gap-cluster-xs);font-size:var(--fs-tab);line-height:var(--lh-120);letter-spacing:0;margin-bottom:0}
@media (max-width:899px){
.viewtabs:not(.tooltabs){overflow-x:auto;padding-inline:var(--gap-cluster-x);scroll-snap-type:x proximity;scroll-padding-inline:var(--gap-cluster-x);
  --vt-fade:linear-gradient(90deg,transparent,#000 var(--gap-cluster-x),#000 calc(100% - var(--gap-cluster-x)),transparent);-webkit-mask-image:var(--vt-fade);mask-image:var(--vt-fade)}
.viewtabs .vt-pack,.viewtabs .vt-pack+.vt-pack{flex:none}
.viewtabs .vt-pack+.vt-pack::before{top:var(--gap-cluster);bottom:var(--gap-cluster)}
.viewtabs .vt-lbl{flex-direction:row}
.viewtabs .vt-nm{overflow:visible}
.viewtabs .vt-ico{width:16px;height:16px}
.viewtabs .vt-pack>a{flex:none;flex-direction:row;scroll-snap-align:start;padding:var(--pad-tab)}
}
/* Fixed bars: the main bar and the tool's own tabs stay on top while scrolling; past the top (html.vt-mini, set in app/barra.js)
   names fade out and only icons remain (names stay in the DOM and in title). --vt-h and --top-fix also come from barra.js. */
.viewtabs:not(.tooltabs){position:sticky;top:0;z-index:var(--z-dropdown);background:var(--surface-page)}
.viewtabs .vt-nm{transition:opacity var(--dur-nm),max-height var(--dur-tab),max-width var(--dur-tab)}
.viewtabs .vt-pack>a{transition:padding var(--dur-tab),gap var(--dur-tab)}
.vt-mini .viewtabs .vt-nm{opacity:var(--op-hidden);max-height:0}
@media (max-width:899px){.vt-mini .viewtabs .vt-nm{max-width:0}}
.vt-mini .viewtabs .vt-lbl,.vt-mini .viewtabs .vt-pack>a{gap:0}
.vt-mini .viewtabs .vt-pack>a{padding-block:var(--gap-cluster-xs)}
.vt-mini .viewtabs .vt-pack+.vt-pack::before{top:var(--gap-cluster-xs);bottom:var(--gap-cluster-xs)}
/* PTU chosen (html.sy-ptu, consejero-parche.js): the bar's edges become yellow/black hazard tape sliding right to left.
   Tile 16x4 px with 45deg stripes of period 16/sqrt(2) px, so the tiles join seamlessly and moving 16px loops. */
.sy-ptu .viewtabs:not(.tooltabs){--tape:repeating-linear-gradient(45deg,var(--tape-a) 0 5.657px,var(--tape-b) 5.657px 11.314px);
  --tape2:repeating-linear-gradient(-45deg,var(--tape-a) 0 5.657px,var(--tape-b) 5.657px 11.314px);
  background:var(--tape) 0 0/16px 2px repeat-x,var(--tape2) 0 100%/16px 2px repeat-x,var(--surface-page);box-shadow:none;border-bottom:0;
  padding-block:var(--space-1);animation:sy-tape var(--dur-tape) linear infinite}
/* the top tape replaces the header's bottom line, which hides; both tapes sit at the same distance from the tabs */
.sy-ptu header.top{border-bottom-color:transparent}
@keyframes sy-tape{to{background-position:-16px 0,-16px 100%,0 0}}
@media (prefers-reduced-motion:reduce){.sy-ptu .viewtabs:not(.tooltabs){animation:none}}
/* owner 2026-11-10: the open page carries a diffuse aura, no block: a glow rising from the bottom centre that fades out on every side,
   with a soft underline that fades at its ends (no hard edge), and a lit icon; no size change */
.viewtabs:not(.tooltabs) .vt-pack>a[aria-current="page"]{color:var(--ink-body);border-bottom-color:transparent;
  background:linear-gradient(90deg,transparent 10%,color-mix(in srgb,var(--brand) 55%,transparent) 50%,transparent 90%) 50% 100%/100% 2px no-repeat,
    radial-gradient(46% 92% at 50% 100%,color-mix(in srgb,var(--brand) 45%,transparent),color-mix(in srgb,var(--brand) 14%,transparent) 50%,transparent 100%)}
.viewtabs:not(.tooltabs) .vt-pack>a[aria-current="page"] .vt-ico{color:var(--brand);filter:drop-shadow(0 0 4px color-mix(in srgb,var(--brand) 70%,transparent))}
.top-right:has([aria-expanded="true"]),.lang-pick:is(:focus-within,:has([aria-expanded="true"])){z-index:var(--z-popover)} /* an open language/theme menu goes over the fixed bar (same z, the bar comes later) */
.ty-invtop{display:contents}
:is(.c-tabs--ptabs,.ty-invtop>.ty-ptabs,.ms-tabs){position:sticky;top:var(--vt-h,0px);z-index:var(--z-subbar);background:var(--surface-page)}
:is(.c-tabs--ptabs,.ty-invtop>.ty-ptabs,.ms-tabs)>button{transition:min-height var(--dur-tab),padding var(--dur-tab)}
.vt-mini :is(.c-tabs--ptabs,.ty-invtop>.ty-ptabs,.ms-tabs){padding-block:0}
.vt-mini :is(.c-tabs--ptabs,.ty-invtop>.ty-ptabs,.ms-tabs)>button{min-height:28px;padding-block:var(--gap-stack);font-size:var(--fs-body-sm)}
@media (prefers-reduced-motion:reduce){.viewtabs .vt-nm,.viewtabs .vt-pack>a,:is(.c-tabs--ptabs,.ty-invtop>.ty-ptabs,.ms-tabs)>button{transition:none}}
.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
/* v378 móvil: la cabecera y las pestañas ocupaban ~580 de 844 px antes del contenido. Las pestañas van en una sola fila que se
   desliza de lado (la elegida se centra sola) y la marca se compacta */
@media (max-width:560px){
.viewtabs .vt-pack>a{font-size:var(--fs-body);padding:12px 10px 11px;min-height:44px}
header.top .brand-eyebrow{display:none}
header.top .brand{display:grid;grid-template-columns:36px minmax(0,1fr);gap:var(--gap-cluster) var(--gap-panel);align-items:center;width:100%}
header.top .brand>div{display:contents!important}
header.top .brand-mark{width:36px;height:36px}
header.top h1.wordmark{font-size:var(--fs-heading-lg);margin:0}
header.top .stamp,header.top .stamp-patch{grid-column:1/-1}
header.top .stamp{font-size:var(--fs-caption);gap:var(--gap-stack) var(--gap-panel)}
header.top .stamp-patch{font-size:var(--fs-caption);gap:var(--gap-tight) var(--gap-cluster)}
}
/* #362 the Objetos tab flashes three times in the site colours after parts go to the shopping list */
@keyframes vt-flash{0%,100%{box-shadow:none;background:transparent}40%{box-shadow:var(--shadow-flash);background:color-mix(in srgb,var(--brand) 22%,transparent)}}
#vt-items.vt-flash{animation:vt-flash var(--dur-flash) ease-in-out 3;border-radius:var(--r-box)}
@media (prefers-reduced-motion:reduce){#vt-items.vt-flash{animation:none;box-shadow:var(--shadow-ring-brand)}}

/* Inicio (.hm-): cuadro de mandos con tarjetas, banda móvil y luces */
/* owner 2026-11-08: Inicio as a control deck: square HUD boxes, a faint grid, lights running along the lines (.hm-leds), a moving strip
   of the tools and the tools as modules; motion off with prefers-reduced-motion */
/* the home glows follow --hm-c / --hm-a of each element (they change per section), so they are resolved on every element */
.hm,.hm *{--hm-glow-c:0 0 10px var(--hm-c);--hm-glow-a:0 0 10px var(--hm-a);--hm-glow-c-sm:0 0 8px var(--hm-c);--hm-glow-cta:var(--glow-duo-sm),0 0 18px color-mix(in srgb,var(--hm-c) 30%,transparent);--hm-glow-card:0 0 18px color-mix(in srgb,var(--hm-c) 14%,transparent)}
.hm{--hm-c:var(--ink-link);--hm-a:var(--accent);max-width:1320px;margin:0 auto;display:flex;flex-direction:column;gap:var(--gap-block);font-family:var(--f-body)}
.hm h2,.hm h3,.hm h4{margin:0}
.hm-led{display:inline-block;width:8px;height:8px;border-radius:var(--r-round);background:var(--good);box-shadow:var(--glow-good-led);animation:hm-blink var(--dur-hm-blink) ease-in-out infinite;flex:none}
@keyframes hm-blink{50%{opacity:var(--op-disabled)}}
.hm-leds{position:relative;overflow:hidden;border:1px solid color-mix(in srgb,var(--hm-c) 25%,var(--line-card));border-radius:var(--r-1);
  background:linear-gradient(color-mix(in srgb,var(--hm-c) 5%,transparent) 1px,transparent 1px) 0 0/32px 32px,linear-gradient(90deg,color-mix(in srgb,var(--hm-c) 5%,transparent) 1px,transparent 1px) 0 0/32px 32px,
  radial-gradient(ellipse at 15% 0%,color-mix(in srgb,var(--hm-c) 12%,transparent),transparent 60%),var(--surface-card)}
.hm-leds::before,.hm-leds::after{content:"";position:absolute;height:2px;width:22%;pointer-events:none;background:linear-gradient(90deg,transparent,var(--hm-c),transparent);box-shadow:var(--hm-glow-c);animation:hm-run var(--dur-hm-run) linear infinite}
.hm-leds::before{top:-1px;left:-22%}
.hm-leds::after{bottom:-1px;left:-22%;animation-delay:calc(-1 * var(--dur-hm-run) / 2);animation-direction:reverse;background:linear-gradient(90deg,transparent,var(--hm-a),transparent);box-shadow:var(--hm-glow-a)}
@keyframes hm-run{to{left:100%}}
.hm-hero{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(300px,1fr);gap:var(--gap-block);align-items:center;padding:calc(var(--space-6) + var(--space-4)) calc(var(--space-6) + var(--space-2))}
.hm-badge{display:inline-flex;align-items:center;gap:var(--gap-panel);margin:0 0 var(--gap-page);padding:var(--gap-icon) var(--space-3);border:1px solid color-mix(in srgb,var(--hm-c) 45%,transparent);border-radius:var(--r-1);background:color-mix(in srgb,var(--hm-c) 6%,transparent);font-family:var(--f-mono);font-size:var(--fs-caption);text-transform:uppercase;letter-spacing:var(--tracking-6)}
.hm-badge b{color:var(--ink-body)}
.hm-badge span:last-child{color:var(--ink-secondary)}
.hm-t{font-family:var(--f-display);font-weight:var(--fw-bold);text-transform:uppercase;font-size:var(--fs-hm-hero);line-height:var(--lh-100);letter-spacing:var(--tracking-1);color:var(--ink-body)}
.hm-t span{display:block;color:var(--hm-c);text-shadow:0 0 calc(var(--gap-page) + var(--gap-stack)) color-mix(in srgb,var(--hm-c) 45%,transparent)}
.hm-sub{max-width:620px;margin:var(--gap-page) 0 0;font-family:var(--f-mono);font-size:var(--fs-body-sm);text-transform:uppercase;letter-spacing:var(--tracking-4);line-height:var(--lh-155);color:var(--ink-secondary)}
.hm-feat{position:relative;padding:var(--gap-page);border:1px solid color-mix(in srgb,var(--hm-c) 35%,var(--line-card));border-radius:var(--r-1);background:color-mix(in srgb,var(--surface-page) 70%,transparent)}
.hm-fh{display:flex;justify-content:space-between;align-items:center;gap:var(--gap-panel);font-family:var(--f-mono);font-size:var(--fs-caption);text-transform:uppercase;letter-spacing:var(--tracking-6);color:var(--ink-secondary)}
.hm-fh>span:first-child{display:inline-flex;gap:var(--space-2);align-items:center}
.hm-dots{display:inline-flex;gap:var(--gap-icon)}
.hm-dots button{width:10px;height:6px;padding:0;border:0;border-radius:var(--r-1);background:color-mix(in srgb,var(--ink-secondary) 45%,transparent);cursor:pointer;min-height:0}
.hm-dots button[aria-pressed="true"]{width:24px;background:var(--hm-c);box-shadow:var(--hm-glow-c-sm)}
@media (pointer:coarse){.hm-dots button{height:12px;width:16px}.hm-dots button[aria-pressed="true"]{width:30px}}
.hm-fb{min-height:150px;display:flex;flex-direction:column;gap:var(--space-3);margin-top:var(--space-4)}
.hm-fb h3{display:flex;align-items:center;gap:var(--gap-panel);font-family:var(--f-display);font-size:var(--fs-stat-lg);font-weight:var(--fw-bold);letter-spacing:normal;text-transform:uppercase}
.hm-fb p{margin:0;font-family:var(--f-mono);font-size:var(--fs-body-sm);color:var(--ink-secondary)}
.hm-fi{display:inline-flex;color:var(--hm-c)}
.hm-fi svg,.hm-gi svg,.hm-ci svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.hm-fbar{position:absolute;left:0;bottom:0;height:2px;width:0;background:var(--hm-c);box-shadow:var(--hm-glow-c-sm)}
.hm-fbar.run{animation:hm-fill var(--dur-hm-fill) linear forwards}
@keyframes hm-fill{to{width:100%}}
.hm-cta{align-self:flex-start;display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--gap-panel) var(--gap-page);border-radius:var(--r-1);font-family:var(--f-display);font-weight:var(--fw-bold);text-transform:uppercase;letter-spacing:var(--tracking-6);text-decoration:none;
  color:var(--on-fill);background:var(--fill-duo);box-shadow:var(--hm-glow-cta)}
.hm-cta:hover{filter:brightness(1.1);color:var(--on-fill)}
.hm-cta.sm{padding:var(--space-2) var(--space-4);margin-top:auto}
.hm-strip{display:flex;align-items:stretch;max-width:1100px;width:100%;margin:0 auto;border:1px solid var(--line-card);border-radius:var(--r-1);background:var(--surface-card);overflow:hidden}
.hm-sl{position:relative;flex:none;display:flex;flex-direction:column;justify-content:center;gap:var(--gap-stack);padding:var(--space-2) var(--space-4) var(--space-2) calc(var(--space-5) + var(--space-1));border-right:1px solid var(--line-card);font-family:var(--f-mono);font-size:var(--fs-caption);text-transform:uppercase;letter-spacing:var(--tracking-5)}
.hm-sl i{font-style:normal;color:var(--ink-secondary)}
.hm-sl .hm-led{position:absolute;left:12px;top:50%;margin-top:calc(-1 * var(--space-1))}
.hm-sv{flex:1;overflow:hidden;cursor:grab;touch-action:pan-y;user-select:none;-webkit-user-select:none;-webkit-mask-image:linear-gradient(90deg,transparent,black 6%,black 94%,transparent);mask-image:linear-gradient(90deg,transparent,black 6%,black 94%,transparent)}
.hm-st{display:flex;width:max-content;align-items:center;height:100%;will-change:transform}
.hm-sv.drag{cursor:grabbing}
.hm-tk{display:inline-flex;gap:var(--space-2);align-items:baseline;padding:var(--gap-panel) 0;font-family:var(--f-mono);font-size:var(--fs-caption);text-transform:uppercase;white-space:nowrap}
.hm-tk b{color:var(--ink-body)}
.hm-tk i{font-style:normal;color:var(--hm-c);padding:calc(var(--gap-stack) / 2) var(--gap-icon);border:1px solid color-mix(in srgb,var(--hm-c) 40%,transparent);border-radius:var(--r-1);font-size:var(--fs-1)}
.hm-sep{padding:0 calc(var(--space-4) + var(--gap-stack));color:var(--ink-note);font-family:var(--f-mono)}
.hm-proj{--hm-c:var(--accent);--hm-a:var(--ink-link);display:grid;grid-template-columns:minmax(0,1.6fr) minmax(260px,1fr);gap:var(--gap-block);align-items:center;padding:calc(var(--space-6) + var(--space-1)) calc(var(--space-6) + var(--space-2));
  background:radial-gradient(ellipse at 90% 50%,color-mix(in srgb,var(--accent) 16%,transparent),transparent 60%),var(--surface-card);border-color:color-mix(in srgb,var(--accent) 40%,var(--line-card))}
.hm-tags{display:flex;flex-wrap:wrap;gap:var(--space-2);margin:0 0 var(--space-4)}
.hm-tags span{padding:var(--gap-tight-sm) var(--gap-panel);border:1px solid color-mix(in srgb,var(--accent) 50%,transparent);border-radius:var(--r-1);font-family:var(--f-mono);font-size:var(--fs-1);text-transform:uppercase;letter-spacing:var(--tracking-5);color:var(--ink-secondary)}
.hm-tags span:first-child{color:var(--ink-body);background:color-mix(in srgb,var(--accent) 22%,transparent)}
.hm-proj h3{font-family:var(--f-display);font-weight:var(--fw-bold);font-size:var(--fs-hm-h3);text-transform:uppercase;line-height:var(--lh-105)}
.hm-proj h3 span{background:var(--fill-duo);-webkit-background-clip:text;background-clip:text;color:transparent}
.hm-pt>p:last-child{margin:var(--space-4) 0 0;max-width:760px;font-family:var(--f-mono);font-size:var(--fs-body-sm);line-height:var(--lh-155);color:var(--ink-secondary)}
.hm-don{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--gap-page);border:1px solid color-mix(in srgb,var(--accent) 40%,var(--line-card));border-radius:var(--r-1);background:color-mix(in srgb,var(--surface-page) 55%,transparent)}
.hm-dk{margin:0;font-family:var(--f-mono);font-size:var(--fs-caption);text-transform:uppercase;letter-spacing:var(--tracking-8);color:var(--ink-body)}
.hm-don p:not(.hm-dk){margin:0;color:var(--ink-secondary);font-size:var(--fs-body-sm)}
.hm-mh{display:flex;align-items:center;gap:var(--space-4);margin-bottom:var(--gap-section)}
.hm-mh h3{padding-left:var(--space-3);border-left:4px solid var(--hm-c);font-family:var(--f-display);font-size:var(--fs-5);text-transform:uppercase;letter-spacing:var(--hm-track-wide)}
.hm-rule{flex:1;height:1px;background:linear-gradient(90deg,var(--line-card),transparent)}
.hm-mn{font-family:var(--f-mono);font-size:var(--fs-caption);text-transform:uppercase;letter-spacing:var(--tracking-6);color:var(--ink-secondary)}
.hm-grp{margin-bottom:var(--gap-block)}
.hm-gh{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap;margin-bottom:var(--space-3);font-family:var(--f-mono);font-size:var(--fs-caption);text-transform:uppercase;letter-spacing:var(--tracking-6)}
.hm-gh b{font-family:var(--f-display);font-size:var(--fs-3);letter-spacing:var(--tracking-brand);color:var(--ink-body)}
.hm-gl{color:var(--ink-note);flex:1;min-width:0}
.hm-gi{display:inline-flex;padding:var(--space-1);border:1px solid color-mix(in srgb,var(--hm-c) 45%,transparent);border-radius:var(--r-1);color:var(--hm-c)}
.hm-gi svg{width:16px;height:16px}
.hm-gn{padding:var(--gap-stack) var(--space-2);border:1px solid color-mix(in srgb,var(--hm-c) 50%,transparent);color:var(--hm-c);border-radius:var(--r-1);font-size:var(--fs-1)}
.hm-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(380px,1fr));gap:var(--gap-section)}
.hm-card{display:flex;align-items:center;gap:calc(var(--space-4) + var(--gap-stack));padding:var(--gap-page);border:1px solid color-mix(in srgb,var(--hm-c) 22%,var(--line-card));border-radius:var(--r-1);background:var(--surface-card);transition:border-color var(--dur-3),box-shadow var(--dur-3)}
.hm-card:hover{border-color:color-mix(in srgb,var(--hm-c) 60%,transparent);box-shadow:var(--hm-glow-card)}
.hm-ci{flex:none;display:inline-flex;padding:var(--space-3);border:1px solid color-mix(in srgb,var(--hm-c) 40%,var(--line-card));border-radius:var(--r-1);color:var(--hm-c);background:color-mix(in srgb,var(--hm-c) 6%,transparent)}
.hm-cb{flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--space-1)}
.hm-cb b{font-family:var(--f-display);font-weight:var(--fw-bold);font-size:var(--fs-5);text-transform:uppercase}
.hm-cb small{font-family:var(--f-mono);font-size:var(--fs-caption);text-transform:uppercase;letter-spacing:var(--tracking-4);color:var(--ink-secondary)}
.hm-open{flex:none;padding:var(--gap-icon) var(--gap-block-md);border:1px solid color-mix(in srgb,var(--hm-c) 55%,transparent);border-radius:var(--r-1);font-family:var(--f-mono);font-size:var(--fs-caption);font-weight:var(--fw-bold);text-transform:uppercase;letter-spacing:var(--tracking-8);color:var(--hm-c);text-decoration:none;background:color-mix(in srgb,var(--hm-c) 6%,transparent)}
.hm-open:hover{background:var(--fill-duo);color:var(--on-fill);border-color:transparent;box-shadow:var(--glow-duo-sm)}
.hm-note{text-align:center}
@media (max-width:900px){.hm-hero,.hm-proj{grid-template-columns:1fr;padding:calc(var(--space-5) + var(--space-1)) var(--gap-page)}.hm-grid{grid-template-columns:1fr}.hm-strip{flex-direction:column}.hm-sl{border-right:0;border-bottom:1px solid var(--line-card)}}
@media (max-width:480px){.hm-card{flex-wrap:wrap}.hm-open{margin-left:auto}}
@media (prefers-reduced-motion:reduce){.hm-leds::before,.hm-leds::after,.hm-led,.hm-fbar.run{animation:none}}

/* Configurador de naves: tablero de recuadros, columnas, nave, energía, piezas y cifras */
/* v303 configurador de naves */
.tb-wrap{display:grid;grid-template-columns:minmax(280px,340px) minmax(0,1fr);gap:var(--gap-section);align-items:start;margin-top:var(--stack-section)}
@media (max-width:1000px){.tb-wrap{grid-template-columns:1fr}}
.tb-side,.tb-main{display:flex;flex-direction:column;gap:var(--gap-section);min-width:0}
.tb-card{background:var(--surface-card);border:1px solid var(--line-card);border-radius:var(--r-card);padding:var(--pad-card);min-width:0}
.tb-card h3,.tb-card h4{margin:0 0 var(--stack-item);font-size:var(--fs-label-lg);text-transform:uppercase;letter-spacing:var(--tracking-label-lg);color:var(--ink-accent);display:flex;justify-content:space-between;align-items:baseline;gap:var(--gap-cluster)}
.tb-card h4 small{font-size:var(--fs-caption);text-transform:none;letter-spacing:0;color:var(--ink-secondary)}
.tb-ship{padding:0;overflow:hidden}
.tb-ship img{display:block;width:100%;aspect-ratio:16/9;object-fit:cover;background:var(--surface-sunken)}
.tb-ship>div{padding:10px 12px 12px}
.tb-ship h3{font-size:var(--fs-stat-lg);text-transform:none;letter-spacing:0;color:var(--ink-body);margin:2px 0 var(--stack-item)}
.tb-chip{display:inline-block;font-size:var(--fs-micro);padding:var(--pad-badge);margin:0 var(--stack-tight) var(--stack-tight) 0;border-radius:var(--r-micro);background:var(--fill-primary);color:var(--on-fill);font-weight:var(--fw-semibold)}
.tb-bigs{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,112px),1fr));gap:var(--gap-cluster-sm);margin-bottom:var(--stack-item)}
.tb-big{background:var(--surface-sunken);border:1px solid var(--line-card);border-radius:var(--r-box);padding:var(--pad-compact);display:flex;flex-direction:column;min-width:0}
.tb-big b{font-size:var(--fs-figure);font-variant-numeric:tabular-nums;color:var(--ink-body);line-height:var(--lh-115);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tb-big span{font-size:var(--fs-label);text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--ink-label)}
.tb-big i{font-style:normal;font-size:var(--fs-caption);font-variant-numeric:tabular-nums}
.tb-big.hi b{color:var(--ink-accent)} /* owner 2026-11-01: the key figure of a box, only the number in turquoise (a frame read as selected) */
.tb-kv{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--gap-tight) var(--gap-panel);font-size:var(--fs-note);align-items:center}
.tb-kv>span{color:var(--ink-secondary)}
.tb-kv>b{text-align:right;font-variant-numeric:tabular-nums;font-weight:var(--fw-semibold)}
.tb-mini{font-style:normal;font-weight:var(--fw-badge);line-height:var(--lh-130);font-size:var(--fs-caption);border:1px solid var(--line-card);border-radius:var(--r-micro);padding:0 5px;margin-left:3px;white-space:nowrap}
.tb-row3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--gap-section)}
@media (max-width:1300px){.tb-row3{grid-template-columns:1fr 1fr}}
@media (max-width:700px){.tb-row3{grid-template-columns:1fr}}
.tb-qd{display:flex;align-items:center;gap:var(--gap-cluster-sm);margin-top:var(--stack-item);font-size:var(--fs-note);color:var(--ink-secondary);flex-wrap:wrap}
.tb-qd input{width:70px;background:var(--surface-field);color:var(--ink-body);border:1px solid var(--line-field);border-radius:var(--r-control);padding:var(--field-pad);font-size:var(--fs-control)}
.tb-cols{columns:2 420px;column-gap:var(--gap-section)}
.tb-cols>.tb-grp{break-inside:avoid;margin-bottom:var(--stack-section);display:block}
.tb-slot{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;gap:var(--gap-cluster);align-items:center;background:var(--surface-sunken);border:1px solid var(--line-card);border-left:3px solid var(--line-row);border-radius:var(--r-box);padding:7px 8px;margin-top:var(--stack-detail-sm)}
.tb-slot.chg{border-left-color:var(--line-accent)}
.tb-kids{margin-left:16px;padding-left:8px;border-left:1px dashed var(--line-row)}
.tb-sz{display:inline-grid;place-items:center;min-width:28px;height:24px;padding:var(--pad-badge-x);border-radius:var(--r-micro);background:var(--fill-primary);color:var(--on-fill);font-weight:var(--fw-bold);font-size:var(--fs-badge)}
.tb-sm{display:flex;flex-direction:column;min-width:0;gap:1px}
.tb-sm b{font-size:13.5px;color:var(--ink-body);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tb-sm b em{font-style:normal;color:var(--ink-accent)}
.tb-sn{font-size:var(--fs-label);text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--ink-note)}
.tb-gr{font-size:var(--fs-caption);color:var(--ink-secondary)}
.tb-ln{font-size:var(--fs-caption);color:var(--ink-note);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tb-slot .tb-big{background:transparent;border:0;padding:0;text-align:right;align-items:flex-end}
.tb-slot .tb-big b{font-size:var(--fs-stat-md);color:var(--ink-accent)}
.tb-chb{background:transparent;border:1px solid var(--line-accent);color:var(--ink-accent);border-radius:var(--r-control);padding:var(--pad-control-xs);font-size:var(--fs-control-sm);cursor:pointer}
.tb-chb:hover,.tb-chb[aria-expanded=true]{background:var(--fill-primary);color:var(--on-fill)}
.tb-lock{font-size:var(--fs-caption);color:var(--ink-note)}
.tb-pick{border:1px solid var(--line-accent);border-radius:var(--r-control);margin-top:var(--stack-tight);padding:6px;background:var(--surface-page)}
.tb-pick input{width:100%;background:var(--surface-field);color:var(--ink-body);border:1px solid var(--line-field);border-radius:var(--r-control);padding:var(--field-pad);margin-bottom:var(--stack-detail-sm);font-size:var(--fs-control)}
.tb-pl{max-height:320px;overflow:auto;display:flex;flex-direction:column;gap:var(--gap-stack)}
.tb-pl button{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;gap:var(--gap-cluster);align-items:center;text-align:left;background:transparent;border:1px solid transparent;border-radius:var(--r-control);padding:var(--pad-box-xs);color:var(--ink-body);cursor:pointer;font-size:var(--fs-chip)}
.tb-pl button:hover{background:var(--surface-hover);border-color:var(--line-card)}
.tb-pl button.on{border-color:var(--line-brand);background:var(--surface-active)}
.tb-pl button small{color:var(--ink-note)}
.tb-pl .r{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
/* v310 power management */
.tb-pm h4 small.tb-neg{color:var(--bad);font-weight:var(--fw-semibold)}
.tb-sigs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--gap-cluster-sm);margin-bottom:var(--stack-detail)}
.tb-sig{display:flex;flex-direction:column;background:var(--surface-sunken);border:1px solid var(--line-card);border-radius:var(--r-box);padding:var(--pad-compact);font-size:var(--fs-label);text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--ink-note);min-width:0;cursor:help}
.tb-sig b{order:-1;font-size:var(--fs-stat-md);text-transform:none;letter-spacing:0;color:var(--ink-body);font-variant-numeric:tabular-nums;line-height:var(--lh-115)}
.tb-sig i{font-style:normal;font-size:var(--fs-caption);text-transform:none;letter-spacing:0}
.tb-sig[data-hl]:hover,.tb-sig[data-hl]:focus-visible{border-color:var(--line-brand)}
.tb-bars{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:var(--gap-cluster-sm) var(--gap-cluster);align-items:center;font-size:var(--fs-caption);color:var(--ink-secondary);margin-bottom:var(--stack-section)}
.tb-bars b{font-variant-numeric:tabular-nums;color:var(--ink-body)}
.tb-pwr{display:flex;gap:var(--gap-cluster-xs);align-items:flex-end;justify-content:space-between;margin-bottom:var(--stack-detail)}
.tb-pcol{display:flex;flex-direction:column;align-items:center;gap:var(--gap-tight-sm);flex:1 1 0;min-width:0;max-width:44px;border-radius:var(--r-box)}
.tb-lv{font-size:var(--fs-caption);font-weight:var(--fw-bold);color:var(--ink-accent);min-height:15px;font-variant-numeric:tabular-nums}
.tb-pips{display:flex;flex-direction:column-reverse;gap:0;width:100%;min-height:150px;justify-content:flex-start}
/* UX-029: each segment is a 24 px target (WCAG 2.5.8); the drawn bar is the ::before inside it, so it looks as before */
.tb-pips button{position:relative;isolation:isolate;flex:0 0 24px;min-height:var(--target-min);width:100%;padding:0;border:0;background:transparent;cursor:pointer}
.tb-pips button::before{content:"";position:absolute;z-index:-1;inset:5px 0;border:1px solid var(--line-card);border-radius:var(--r-swatch);background:var(--surface-sunken)}
.tb-pips button.on::before{background:var(--fill-primary);border-color:var(--line-primary)}
.tb-pips button.tb-pj{display:grid;place-items:center;font:inherit;font-size:var(--fs-control-sm);font-weight:var(--fw-bold);color:var(--ink-note)}
.tb-pips button.tb-pj::before{inset:5px 0}
.tb-pips button.tb-pj.on{color:var(--on-fill)}
.tb-pips button:hover:not(:disabled)::before{border-color:var(--line-hover)}
.tb-pips button:disabled{cursor:not-allowed}
.tb-pips button.on:hover::before{filter:brightness(1.15)}
.tb-pips>i{flex:1 1 auto;max-height:60px;display:grid;place-items:center;font-style:normal;font-size:var(--fs-caption);color:var(--ink-note);background:var(--surface-sunken);border:1px solid var(--line-card);border-radius:var(--r-1)}
.tb-pab{font:inherit;background:transparent;border:0;padding:2px 0;line-height:0;color:var(--ink-secondary);cursor:pointer;white-space:nowrap}
.tb-pab:hover:not(:disabled){color:var(--ink-link)}
.tb-pab:disabled{cursor:default;color:var(--ink-note)}
.tb-pp{font-size:var(--fs-caption);color:var(--ink-note);font-variant-numeric:tabular-nums}
.tb-pcol.off .tb-pab{color:var(--ink-note);opacity:.6}
.tb-modes{display:flex;justify-content:space-between;align-items:center;gap:var(--gap-cluster);margin-bottom:var(--stack-detail)}
.tb-seg{display:inline-flex;border:1px solid var(--line-chip);border-radius:var(--r-control);overflow:hidden}
.tb-seg button{font:inherit;font-size:var(--fs-control-sm);background:transparent;border:0;padding:5px 10px;color:var(--ink-secondary);cursor:pointer}
.tb-seg button[aria-pressed="true"]{background:var(--surface-hover);color:var(--ink-body);font-weight:var(--fw-semibold)}
.tb-modes .btn[aria-pressed="true"]{border-color:var(--line-brand);color:var(--ink-link)}
/* pointing at IR or EM: the parts that give it blink and show their share; the rest fade */
@keyframes tbBlink{0%,100%{box-shadow:0 0 0 1px var(--line-accent)}50%{box-shadow:0 0 0 3px var(--line-accent)}}
.tb-wrap.hl-em .tb-slot:not([data-em]),.tb-wrap.hl-ir .tb-slot:not([data-ir]){opacity:var(--op-dim)}
.tb-wrap.hl-em .tb-slot[data-em],.tb-wrap.hl-ir .tb-slot[data-ir],.tb-wrap.hl-em .tb-pcol[data-em],.tb-wrap.hl-ir .tb-pcol[data-ir]{animation:tbBlink .8s ease-in-out infinite;position:relative}
.tb-wrap.hl-em .tb-slot[data-em]::after,.tb-wrap.hl-ir .tb-slot[data-ir]::after{position:absolute;top:-9px;right:8px;background:var(--fill-primary);color:var(--on-fill);font-size:var(--fs-badge);font-weight:var(--fw-bold);padding:1px 6px;border-radius:var(--r-micro);z-index:2}
.tb-wrap.hl-em .tb-slot[data-em]::after{content:attr(data-em)}
.tb-wrap.hl-ir .tb-slot[data-ir]::after{content:attr(data-ir)}
@media (prefers-reduced-motion:reduce){.tb-wrap.hl-em .tb-slot[data-em],.tb-wrap.hl-ir .tb-slot[data-ir],.tb-wrap.hl-em .tb-pcol[data-em],.tb-wrap.hl-ir .tb-pcol[data-ir]{animation:none;box-shadow:0 0 0 2px var(--line-accent)}}
/* v316 daño: piloto / tripulación / todas, fijas / gimbal; vida efectiva */
.tb-dsel{display:flex;justify-content:space-between;gap:var(--gap-cluster);flex-wrap:wrap;margin-bottom:var(--stack-item)}
.tb-seg button:disabled{opacity:var(--op-disabled);cursor:not-allowed}
.tb-ord,.tb-ehp{display:flex;align-items:baseline;justify-content:space-between;gap:var(--gap-cluster);background:var(--surface-sunken);border:1px solid var(--line-card);border-radius:var(--r-box);padding:var(--pad-chip);margin-bottom:var(--stack-item)}
.tb-ord span,.tb-ehp span{font-size:var(--fs-label);text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--ink-label)}
.tb-ord b,.tb-ehp b{font-size:var(--fs-figure);font-variant-numeric:tabular-nums;color:var(--ink-body)}
.tb-ehp{border-color:var(--line-accent);background:var(--surface-accent)}
.tb-ehp b{color:var(--ink-accent);margin-left:auto}
.tb-ehp i{font-style:normal;font-size:var(--fs-caption)}
.tb-ast{color:var(--ast-ink);cursor:help;font-weight:var(--fw-bold);margin-left:2px;font-size:max(.83em,var(--fs-1))}
.tb-ast:focus-visible{outline:var(--focus-ring);border-radius:var(--r-1)}
/* v319 defensa */
.tb-big small{font-size:var(--fs-caption);font-weight:var(--fw-medium);color:var(--ink-note);margin-left:1px}
.tb-rg{display:block;height:4px;border-radius:var(--r-swatch);background:var(--surface-track);margin:var(--stack-tight) 0 2px;overflow:hidden}
.tb-rg>span{display:block;height:100%;background:var(--fill-accent)}
.tb-absc{margin:var(--stack-item) 0;border:1px solid var(--line-card);border-radius:var(--r-box);padding:var(--pad-compact)}
.tb-absh{font-size:var(--fs-label);text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--ink-note)}
.tb-absc svg{width:100%;height:auto;display:block}
.tb-absl{fill:none;stroke:var(--line-accent);stroke-width:2}
.tb-rz{stroke:var(--line-muted);stroke-dasharray:3 3}
.tb-kv2{margin-top:var(--stack-item);padding-top:8px;border-top:1px solid var(--line-row)}
.tb-strong{font-size:var(--fs-value)}
.tb-mini.tb-neg{color:var(--bad);border-color:var(--bad)}
.tb-mini.tb-pos{color:var(--good-strong);border-color:var(--good)}
/* v320 colores por tipo de daño: físico naranja, energía rojo, distorsión azul */
.tb-mini.dt0{color:var(--dt0);border-color:var(--dt0)}
.tb-mini.dt1{color:var(--bad);border-color:var(--bad)}
.tb-mini.dt2{color:var(--info);border-color:var(--info)}
/* v321 fabricación por calidad de materiales y detalle de las armas */
.tb-acts{display:flex;gap:var(--gap-tight);align-items:center}
.tb-cr{background:var(--surface-card);border:1px solid var(--line-card);color:var(--ink-accent);border-radius:var(--r-control);width:28px;height:26px;display:inline-grid;place-items:center;cursor:pointer;padding:0}
.tb-cr:hover,.tb-cr.on{border-color:var(--line-brand);color:var(--ink-link)}
.tb-ws{display:flex;gap:var(--gap-section)}
.tb-ws span{display:flex;flex-direction:column;align-items:flex-end;line-height:var(--lh-115)}
.tb-ws b{font-size:var(--fs-body);font-variant-numeric:tabular-nums}
.tb-ws span:first-child b{color:var(--ink-accent);font-size:var(--fs-stat-md)}
.tb-ws i{font-style:normal;font-size:var(--fs-label);text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--ink-label)}
.tb-wd{border:1px solid var(--line-card);border-top:2px solid var(--line-accent);border-radius:0 0 var(--r-box) var(--r-box);padding:var(--pad-chip);background:var(--surface-card);margin-bottom:var(--stack-tight)}
.tb-grp h3{display:flex;align-items:center;justify-content:space-between;gap:var(--gap-cluster)}
.tb-slot .ty-tag{font-size:var(--fs-caption);vertical-align:middle}
@media (max-width:560px){.tb-slot{grid-template-columns:minmax(0,1fr) auto}.tb-slot>.tb-acts{grid-column:2;grid-row:1}.tb-slot>.tb-ws,.tb-slot>.tb-big{grid-column:1/-1;grid-row:2;justify-self:start}.tb-ws span{align-items:flex-start}}
.ty-cd-sl output{grid-area:v;text-align:right;font-weight:var(--fw-bold);font-variant-numeric:tabular-nums}
/* v322 tamaño, grado y clase en recuadros; detalle de escudos */
.tb-slot{grid-template-columns:minmax(0,1fr) auto auto}
.tb-tags{display:flex;flex-wrap:wrap;align-items:center;gap:var(--gap-tight);margin:2px 0 1px}
.tb-tags>i{font-style:normal;font-size:var(--fs-caption);font-weight:var(--fw-bold);line-height:var(--lh-100);padding:3px 6px;border:1px solid var(--line-card);border-radius:var(--r-micro);color:var(--ink-secondary);background:var(--surface-card)}
.tb-tags>i.tb-szt{background:var(--fill-primary);border-color:var(--line-primary);color:var(--on-fill)}
.tb-tags .tb-gr{margin-left:2px}
.tb-shb{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--gap-cluster-sm);padding:4px 0 8px}
.tb-shb span{display:flex;flex-direction:column;align-items:center;text-align:center;min-width:0}
.tb-shb b{font-size:var(--fs-stat-sm);font-variant-numeric:tabular-nums}
.tb-shb b.hi{color:var(--ink-accent)}
.tb-shb small{font-size:var(--fs-caption);font-weight:var(--fw-medium);color:var(--ink-note)}
.tb-shb i{font-style:normal;font-size:var(--fs-label);text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--ink-label)}
.tb-sht{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border:1px solid var(--line-card);border-radius:var(--r-box)}
.tb-sht>div{display:grid;grid-template-columns:1fr auto;gap:var(--gap-stack) var(--gap-cluster-sm);padding:var(--pad-compact);font-size:var(--fs-caption)}
.tb-sht>div+div{border-left:1px solid var(--line-row)}
.tb-sht>div>b{grid-column:1/-1;font-size:var(--fs-label);text-transform:uppercase;letter-spacing:var(--tracking-label)}
.tb-sht .dt0>b{color:var(--dt0)}
.tb-sht .dt1>b{color:var(--bad)}
.tb-sht .dt2>b{color:var(--info)}
.tb-sht span{color:var(--ink-label)}
.tb-sht em{font-style:normal;font-weight:var(--fw-bold);text-align:right;font-variant-numeric:tabular-nums}
@media (max-width:560px){.tb-slot{grid-template-columns:minmax(0,1fr) auto}.tb-shb{grid-template-columns:repeat(2,minmax(0,1fr))}.tb-sht{grid-template-columns:1fr}.tb-sht>div+div{border-left:0;border-top:1px solid var(--line-row)}}
/* v325 tarjeta de arma */
.tb-acts{flex-direction:column;align-items:flex-end;gap:var(--gap-cluster-xs)}
.tb-crr{display:flex;align-items:center;gap:var(--gap-cluster-sm)}
.tb-crr small{font-size:var(--fs-caption);color:var(--ink-note);white-space:nowrap}
.tb-cr.on+small{color:var(--ink-link);font-weight:var(--fw-bold)}
.tb-wl{grid-column:1/-1;display:grid;grid-template-columns:minmax(0,1fr);gap:var(--gap-cluster-xs);padding-top:2px;container-type:inline-size}
.tb-wk{display:flex;flex-wrap:wrap;align-items:center;gap:var(--gap-tight) var(--gap-cluster-x);font-size:var(--fs-caption);color:var(--ink-note)}
.tb-wk b{color:var(--ink-body);font-variant-numeric:tabular-nums}
.tb-ef{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:var(--gap-cluster);font-size:var(--fs-caption)}
.tb-ef .ty-meter{margin:0}
.tb-ef b{font-weight:var(--fw-semibold);color:var(--ink-secondary)}
.tb-heat{display:flex;flex-wrap:wrap;align-items:center;gap:var(--gap-tight) var(--gap-cluster);font-size:var(--fs-caption);color:var(--ink-note)}
.tb-heat b{text-transform:uppercase;letter-spacing:var(--tracking-label);font-size:var(--fs-label)}
.tb-heat span{color:var(--ink-secondary)}
.tb-heat.on{color:var(--bad)}
.tb-vr{display:grid;grid-template-columns:auto minmax(30px,1fr) auto auto minmax(30px,1fr) auto;align-items:center;gap:var(--gap-cluster-sm) var(--gap-cluster);font-size:var(--fs-caption);color:var(--ink-note)}
.tb-vr>span:not(.tb-mb){text-transform:uppercase;letter-spacing:var(--tracking-5)}
.tb-vr b{color:var(--ink-body);font-variant-numeric:tabular-nums}
.tb-mb{height:4px;border-radius:var(--r-swatch);background:var(--surface-track);overflow:hidden}
.tb-mb>span{display:block;height:100%;background:var(--fill-muted)}
.tb-tags>i.tb-gim{color:var(--ink-accent);border-color:var(--line-accent)}
@media (max-width:560px){.tb-vr{grid-template-columns:auto minmax(30px,1fr) auto}}
@container (max-width:300px){.tb-vr{grid-template-columns:auto minmax(30px,1fr) auto}}/* UX-121: la tarjeta del arma puede medir ~150 px */
/* v327 DPS grande y calidad a la izquierda del martillo */
.tb-dpsb{display:flex;align-items:baseline;gap:var(--gap-cluster-xs);justify-self:end}
.tb-dpsb b{font-size:32px;line-height:var(--lh-100);font-weight:800;color:var(--ink-accent);font-variant-numeric:tabular-nums}
.tb-dpsb span{font-size:var(--fs-body-sm);font-weight:var(--fw-bold);color:var(--ink-secondary)}
.tb-cr.on~small,.tb-crr small:has(+.tb-cr.on){color:var(--ink-link);font-weight:var(--fw-bold)}
/* UX-113: the figure sits under the name at every width, so the name keeps the whole card width */
.tb-slot>.tb-dpsb{grid-column:1/-1;grid-row:2;justify-self:start}
/* v328 cifras con la fuente Rajdhani (autoalojada), más futurista */
.tb-big b,.tb-dpsb b,.tb-ws b,.tb-wk b,.tb-shb b,.tb-kv>b,.tb-sig b,.tb-vr b,.tb-sht em,.tb-ehp b,.tb-ord b,.tb-crr small,.tb-ef b,.tb-heat span,.tb-lv,.tb-pp,.ty-cd-t td.num,.ty-cd-sl output{font-family:"Rajdhani",var(--f-display);font-weight:var(--fw-bold);letter-spacing:var(--tracking-1)}
.tb-dpsb b{font-size:36px}
.tb-big b{font-size:var(--fs-stat-lg)}
.tb-wk b,.tb-kv>b,.tb-vr b,.tb-heat span,.tb-ef b,.tb-sht em,.tb-crr small{font-size:var(--fs-figure-em)}
/* v329 planta de energía: segmentos que da */
.tb-ppl{grid-column:1/-1;display:grid;gap:var(--gap-tight)}
.tb-ppl>span{font-size:var(--fs-label);text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--ink-accent);font-weight:var(--fw-bold)}
.tb-ppb{display:flex;gap:var(--gap-tight-sm);height:22px}
.tb-ppb i{flex:1;min-width:3px;border-radius:var(--r-swatch);background:var(--surface-track)}
.tb-ppb i.on{background:var(--fill-brand)}
/* v330 ocho recuadros iguales arriba (4, 2 o 1 por fila), después las piezas, el coste y los gráficos */
.tb-wrap{display:flex;flex-direction:column;align-items:stretch;gap:var(--gap-section);margin-top:var(--stack-section)}
.tb-cols{columns:3 420px}
.tb-top{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:1fr;gap:var(--gap-section)}
@media (max-width:1400px){.tb-top{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:700px){.tb-top{grid-template-columns:1fr;grid-auto-rows:auto}}
.tb-top>.tb-card{min-width:0;margin:0}
.tb-desc p[lang]{margin:0 0 var(--stack-item);font-size:13.5px;line-height:var(--lh-155);color:var(--ink-secondary)}
/* v331 columna izquierda fija al bajar (nave con descripción y gestión de energía); a la derecha el resto */
.tb-wrap{display:grid;grid-template-columns:minmax(300px,380px) minmax(0,1fr);align-items:start;gap:var(--gap-section);margin-top:var(--stack-section)}
.tb-side{position:sticky;top:calc(var(--top-fix,0px) - 2px);max-height:calc(100vh - var(--top-fix,0px) - 4px);overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}
.tb-main{display:flex;flex-direction:column;gap:var(--gap-section);min-width:0}
.tb-row2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--gap-section)}
.tb-row3{grid-auto-rows:1fr}
.tb-ds{margin:var(--stack-detail) 0 var(--stack-tight);font-size:var(--fs-body-sm);line-height:var(--lh-155);color:var(--ink-secondary)}
.tb-cols{columns:2 420px}
@media (max-width:1000px){.tb-wrap{grid-template-columns:1fr}.tb-side{position:static;max-height:none;overflow:visible}}
@media (max-width:700px){.tb-row2{grid-template-columns:1fr}}
/* v332 cuatro cifras de defensa: 4 en fila o 2 × 2 */
.tb-bigs.tb-b4{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:1500px){.tb-bigs.tb-b4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:1000px) and (min-width:701px){.tb-bigs.tb-b4{grid-template-columns:repeat(4,minmax(0,1fr))}}
/* v332 las tres de vuelo / casco / cuántico: 3 en fila o 1 por fila, nunca 2 + 1 */
@media (max-width:1300px){.tb-row3{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:700px){.tb-row3{grid-template-columns:1fr}}
/* v333 refrigeradores */
.tb-dpsu{grid-column:2;grid-row:2;justify-self:end;font-size:var(--fs-label);text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--ink-note);margin-top:-6px}
.tb-col{grid-column:1/-1;display:flex;align-items:center;gap:14px}
.tb-col svg{flex:none}
.tb-col>div{display:flex;flex-direction:column;gap:var(--gap-stack)}
.tb-col b{font-family:"Rajdhani",var(--f-display);font-size:var(--fs-figure-lg);font-weight:var(--fw-bold);line-height:var(--lh-100)}
.tb-col span{font-size:var(--fs-label);text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--ink-label)}
.tb-colg{display:flex;align-items:center;gap:var(--gap-cluster-sm);margin-top:var(--stack-tight)}
.tb-colg i{width:9px;height:9px;border-radius:var(--r-swatch);display:inline-block}
.tb-colg i.g1{background:var(--fill-accent)}
.tb-colg i.g2{background:var(--fill-muted)}
.tb-ga0{fill:none;stroke:var(--line-grid);stroke-width:7;stroke-linecap:round}
.tb-ga1{fill:none;stroke:var(--line-accent);stroke-width:7;stroke-linecap:round}
.tb-ga2{fill:none;stroke:var(--line-muted);stroke-width:7;stroke-linecap:round}
@media (max-width:560px){.tb-dpsu{grid-column:1/-1;grid-row:3;justify-self:start;margin-top:0}}
.tb-colg{text-transform:none!important;letter-spacing:0!important;font-size:var(--fs-caption)!important;color:var(--ink-secondary)!important}
/* v336 refrigerador: barra del frío de la nave (este, los demás y la marca de lo que pide) */
.tb-cbal{grid-column:1/-1;display:flex;flex-direction:column;gap:var(--gap-cluster-sm);margin-top:var(--stack-tight)}
.tb-cbt{display:flex;justify-content:space-between;align-items:baseline;font-size:var(--fs-label);text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--ink-note)}
.tb-cbt b{font-family:"Rajdhani",var(--f-display);font-size:var(--fs-title);font-weight:var(--fw-bold);letter-spacing:0;text-transform:none}
.tb-cbt b.ok{color:var(--good-strong)}
.tb-cbt b.bad{color:var(--bad)}
.tb-cbar{position:relative;display:flex;height:12px;border-radius:var(--r-1);background:var(--surface-sunken);border:1px solid var(--line-card)}
.tb-cbar i{display:block;height:100%}
.tb-cbar i.me{background:var(--fill-accent);border-radius:var(--r-cap-start)}
.tb-cbar i.ot{background:var(--fill-accent);opacity:var(--op-dim)}
.tb-cbar em{position:absolute;top:-4px;bottom:-4px;width:2px;margin-left:-1px;background:var(--fill-marker)}
.tb-cbl{display:flex;flex-wrap:wrap;gap:var(--gap-tight) var(--gap-section);font-size:var(--fs-caption);color:var(--ink-secondary)}
.tb-cbl span{display:inline-flex;align-items:center;gap:var(--gap-cluster-xs)}
.tb-cbl small{color:var(--ink-note)}
.tb-cbl i{width:9px;height:9px;border-radius:var(--r-swatch);display:inline-block;background:var(--fill-accent)}
.tb-cbl i.ot{opacity:var(--op-dim)}
.tb-cbl i.dm{width:2px;height:11px;border-radius:0;background:var(--fill-marker)}
/* v337 soporte de armas: recuadro estrecho a la izquierda, con la altura de sus armas */
.tb-mrow{display:grid;grid-template-columns:118px minmax(0,1fr);gap:var(--gap-cluster-sm);margin-top:var(--stack-detail-sm);align-items:stretch}
.tb-mrow>.tb-mnt{margin:0;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:var(--gap-cluster-xs);padding:8px}
.tb-mnt b{font-size:var(--fs-note);line-height:var(--lh-125);color:var(--ink-body);overflow-wrap:anywhere}
.tb-mnt b em{font-style:normal;color:var(--ink-accent)}
.tb-mnt .tb-tags{display:flex;flex-wrap:wrap;gap:var(--gap-tight)}
.tb-mnt .tb-gr{font-size:var(--fs-caption);color:var(--ink-note);line-height:var(--lh-120)}
.tb-mguns{min-width:0;display:flex;flex-direction:column;gap:var(--gap-cluster-sm)}
.tb-mguns>.tb-slot,.tb-mguns>.tb-mrow{margin-top:0}
.tb-mguns>.tb-slot.sub{flex:1}
.tb-mpk{margin-top:var(--stack-detail-sm)}
@media (max-width:560px){.tb-mrow{grid-template-columns:88px minmax(0,1fr)}}
/* v338 soporte más ancho: las etiquetas en una línea */
.tb-mrow{grid-template-columns:150px minmax(0,1fr)}
.tb-mnt .tb-tags{flex-wrap:nowrap}
@media (max-width:560px){.tb-mrow{grid-template-columns:96px minmax(0,1fr)}.tb-mnt .tb-tags{flex-wrap:wrap}}
/* v339 una barra para todos los refrigeradores bajo el título */
.tb-grp>.tb-cbal{margin:2px 0 var(--stack-item)}
.tb-cbar i.c0{background:var(--fill-accent)}
.tb-cbar i.c1{background:var(--fill-accent);opacity:var(--op-seg-mid)}
.tb-cbar i.c2{background:var(--fill-accent);opacity:var(--op-seg-low)}
.tb-cbar i:first-child{border-radius:var(--r-cap-start)}
.tb-cbar i+i{box-shadow:inset 1px 0 0 var(--surface-card)}
.tb-cbl i.c0{opacity:1}
.tb-cbl i.c1{opacity:var(--op-seg-mid)}
.tb-cbl i.c2{opacity:var(--op-seg-low)}
.tb-cbt span{display:inline-flex;align-items:center;gap:var(--gap-tight)}
/* v340 misiles y torpedos: buscador, carga del lanzamisiles y selector con filtro */
.tb-sk{display:flex;flex-wrap:wrap;align-items:center;gap:var(--gap-tight) var(--gap-cluster);border:1px solid var(--line-card);border-radius:var(--r-box);padding:var(--pad-box-sm);font-size:var(--fs-caption);color:var(--ink-secondary);background:var(--surface-card)}
.tb-sk>b{font-family:"Rajdhani",var(--f-display);font-size:var(--fs-body-sm);letter-spacing:var(--tracking-4)}
.tb-sk>em{margin-left:auto;font-style:normal;color:var(--ink-note)}
.tb-sk>em b{font-family:"Rajdhani",var(--f-display);font-size:var(--fs-figure-em);color:var(--ink-body)}
.tb-sk.ir{border-color:color-mix(in srgb,var(--dt0) 40%,transparent);background:color-mix(in srgb,var(--dt0) 8%,transparent)}
.tb-sk.ir>svg,.tb-sk.ir>b{color:var(--dt0)}
.tb-sk.em{border-color:color-mix(in srgb,var(--sk-em) 40%,transparent);background:color-mix(in srgb,var(--sk-em) 8%,transparent)}
.tb-sk.em>svg,.tb-sk.em>b{color:var(--sk-em)}
.tb-sk.cs{border-color:color-mix(in srgb,var(--sk-cs) 40%,transparent);background:color-mix(in srgb,var(--sk-cs) 8%,transparent)}
.tb-sk.cs>svg,.tb-sk.cs>b{color:var(--sk-cs)}
.tb-skt{display:inline-flex;align-items:center;gap:var(--gap-tight-sm);font-style:normal;font-size:var(--fs-caption);font-weight:var(--fw-semibold);border:1px solid var(--line-card);border-radius:var(--r-micro);padding:var(--pad-badge-x);vertical-align:middle;color:var(--ink-note)}
.tb-skt.ir{color:var(--dt0);border-color:color-mix(in srgb,var(--dt0) 53%,transparent)}
.tb-skt.em{color:var(--sk-em);border-color:color-mix(in srgb,var(--sk-em) 53%,transparent)}
.tb-skt.cs{color:var(--sk-cs);border-color:color-mix(in srgb,var(--sk-cs) 53%,transparent)}
.tb-skt svg{width:11px;height:11px}
.tb-ld{font-size:var(--fs-caption);color:var(--ink-note)}
.tb-ld b{font-family:"Rajdhani",var(--f-display);font-size:1.3em;color:var(--ink-body)}
.tb-tub{display:flex;gap:var(--gap-tight-sm);width:100%}
.tb-tub i{flex:1;height:5px;border-radius:var(--r-swatch);background:var(--surface-track)}
.tb-tub i.on{background:var(--fill-brand)}
.tb-pkf{display:flex;gap:var(--gap-cluster-sm);align-items:flex-start;margin-bottom:var(--stack-detail-sm)}
.tb-pkf input{margin-bottom:0;flex:1;min-width:0}
.tb-pfs{display:inline-flex;border:1px solid var(--line-card);border-radius:var(--r-control);overflow:hidden;flex:none}
.tb-pfs button{background:transparent;border:0;color:var(--ink-secondary);padding:5px 9px;font-size:var(--fs-control-sm);cursor:pointer}
.tb-pfs button+button{border-left:1px solid var(--line-row)}
.tb-pfs button.on{background:var(--fill-primary);color:var(--on-fill);font-weight:var(--fw-semibold)}
.tb-plm button,.tb-plh{grid-template-columns:auto minmax(0,1fr) 62px 62px 70px}
.tb-plh{display:grid;gap:var(--gap-cluster);padding:2px 6px;font-size:var(--fs-label);text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--ink-note)}
.tb-plh .r{text-align:right}
.tb-plm button b{font-weight:var(--fw-semibold)}
@media (max-width:560px){.tb-plm button,.tb-plh{grid-template-columns:auto minmax(0,1fr) 52px}.tb-plm button>span:nth-child(n+4),.tb-plh>span:nth-child(n+4){display:none}}
@media (max-width:560px){
  .tb-mrow{grid-template-columns:minmax(0,1fr)}
  .tb-mrow>.tb-mnt{flex-direction:row;flex-wrap:wrap;align-items:center;column-gap:var(--gap-cluster)}
  .tb-mnt .tb-tags{flex-wrap:nowrap}
  .tb-mnt .tb-tub{flex:1 1 100%}
  .tb-mnt>.tb-chb,.tb-mnt>.tb-lock{margin-left:auto}
  .tb-pkf{flex-wrap:wrap}.tb-pkf input{flex:1 1 100%}
}
@media (max-width:560px){.tb-mrow>.tb-mnt{justify-content:flex-start}}
/* v341 la tarjeta entera abre las piezas que caben; franja de fabricación encima de las piezas fabricables */
.tb-slot.pk{cursor:pointer;transition:border-color var(--dur-1),background-color var(--dur-1),box-shadow var(--dur-1)}
.tb-slot.pk:hover{border-color:var(--line-brand);background:color-mix(in srgb,var(--fill-brand) 7%,var(--surface-sunken))}
.tb-slot.pk:focus-visible{outline:var(--focus-ring);outline-offset:var(--focus-offset)}
.tb-slot.pk.open{border-color:var(--line-accent);box-shadow:0 0 0 1px var(--line-accent) inset}
.tb-crw{margin-top:var(--stack-detail-sm);display:flex;flex-direction:column}
.tb-crw>.tb-slot{margin-top:0;border-top-left-radius:0;border-top-right-radius:0;flex:1}
.tb-crb{display:flex;align-items:center;gap:var(--gap-cluster-sm);width:100%;background:var(--surface-card);border:1px solid var(--line-card);border-bottom:0;border-radius:var(--r-control) var(--r-control) 0 0;padding:3px 9px;color:var(--ink-note);cursor:pointer;font:inherit;font-size:var(--fs-label);text-transform:uppercase;letter-spacing:var(--tracking-label);text-align:left}
.tb-crb svg{width:14px;height:14px}
.tb-crb b{margin-left:auto;font-family:"Rajdhani",var(--f-display);font-size:var(--fs-value);font-weight:var(--fw-bold);letter-spacing:0;color:var(--ink-secondary)}
.tb-crb:hover{color:var(--ink-link);border-color:var(--line-brand)}
.tb-crb:hover b{color:var(--ink-link)}
.tb-crb:focus-visible{outline:var(--focus-ring);outline-offset:var(--focus-offset)}
.tb-crb.on{color:var(--ink-link);background:var(--surface-active);border-color:var(--line-brand)}
.tb-crb.on b{color:var(--ink-link)}
.tb-mguns>.tb-crw{margin-top:0;flex:1}
.tb-kids>.tb-crw{margin-top:var(--stack-detail-sm)}
/* #357 in a wide box the guns of a mount sit side by side, and so do the mounts under a turret (a narrow box keeps one under another) */
.tb-mguns:has(>:nth-child(2)){display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,380px),1fr))}
.tb-kids:has(>.tb-mrow+.tb-mrow){display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,460px),1fr));column-gap:var(--gap-cluster-sm);align-items:start}
/* v342 vuelo: blade, giro base › con impulso según los segmentos; radar; ventana de pieza */
.tb-flh{display:flex;align-items:center;gap:var(--gap-cluster);flex-wrap:wrap;margin-bottom:var(--stack-item)}
.tb-flh h4{margin:0;margin-right:auto}
.tb-bls{display:inline-flex;border:1px solid var(--line-card);border-radius:var(--r-control);overflow:hidden}
.tb-bls button{background:transparent;border:0;color:var(--ink-secondary);padding:4px 9px;font-size:var(--fs-control-sm);cursor:pointer}
.tb-bls button+button{border-left:1px solid var(--line-row)}
.tb-bls button:hover{color:var(--ink-link)}
.tb-bls button.on{background:var(--fill-primary);color:var(--on-fill);font-weight:var(--fw-semibold)}
.tb-ib{display:inline-flex;align-items:center;justify-content:center;width:28px;height:26px;border:1px solid var(--line-card);border-radius:var(--r-control);background:transparent;color:var(--ink-secondary);cursor:pointer}
.tb-ib:hover{color:var(--ink-link);border-color:var(--line-brand)}
.tb-rot b{display:flex;align-items:baseline;gap:var(--gap-tight)}
.tb-rot b i{font-size:var(--fs-body-sm);color:var(--ink-label)}
.tb-rot b em{font-style:normal;color:var(--ink-accent)}
.tb-kv small{font-size:var(--fs-caption);color:var(--ink-note);font-weight:var(--fw-medium)}
.tb-rad{grid-column:1/-1;display:flex;flex-direction:column;gap:var(--gap-cluster-sm)}
.tb-rds{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--gap-cluster-sm)}
.tb-rds>div{border:1px solid var(--line-card);border-radius:var(--r-box);padding:var(--pad-box-xs);text-align:center;background:var(--surface-card)}
.tb-rds b{display:block;font-family:"Rajdhani",var(--f-display);font-size:var(--fs-stat-md);font-weight:var(--fw-bold);line-height:var(--lh-110)}
.tb-rds b small{font-size:var(--fs-caption);color:var(--ink-note);margin-left:1px}
.tb-rds span{font-size:var(--fs-caption);letter-spacing:var(--tracking-6);color:var(--ink-label)}
.ty-cp .ty-cd-ic.tb-szt{width:auto;padding:var(--pad-badge-md);font-weight:var(--fw-bold)}
/* v343 botoncitos por pieza, desglose de lanzamisiles, motor cuántico y panel de acciones */
.tb-ibs{display:inline-flex;gap:var(--gap-tight);margin:2px 0}
.tb-sm>.tb-ibs{align-self:flex-start}
.tb-ibs .tb-ib{width:24px;height:22px}
.tb-ibs .tb-ib svg{width:13px;height:13px}
.tb-exp{border:1px solid var(--line-card);background:transparent;color:var(--ink-secondary);border-radius:var(--r-box);width:26px;height:22px;cursor:pointer;font-size:var(--fs-caption);line-height:var(--lh-100)}
.tb-exp:hover,.tb-exp[aria-expanded="true"]{color:var(--ink-link);border-color:var(--line-brand)}
.tb-qrow{display:grid;grid-template-columns:minmax(0,1fr) 230px;gap:var(--gap-cluster-sm);margin-top:var(--stack-detail-sm);align-items:stretch}
.tb-qrow .tb-qmain>.tb-slot,.tb-qrow .tb-qmain>.tb-crw{margin-top:0;height:100%}
.tb-qside{display:flex;flex-direction:column;gap:var(--gap-cluster-sm)}
.tb-qside>.tb-slot,.tb-qside>.tb-crw{margin-top:0;flex:1}
.tb-qmain{container-type:inline-size}
/* #357 div: the «Viaje de … Gm» line of the quantum box is a label.tb-qd too */
div.tb-qd{grid-column:1/-1;display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,2fr) minmax(0,.8fr);gap:var(--gap-cluster-sm)}
.tb-qb{border:1px solid var(--line-card);border-radius:var(--r-box);padding:var(--pad-box-sm);background:var(--surface-card);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;min-width:0}
.tb-qb b{font-family:"Rajdhani",var(--f-display);font-size:var(--fs-figure);font-weight:var(--fw-bold);white-space:nowrap}
.tb-qb b small{font-size:var(--fs-caption);color:var(--ink-note);margin-left:1px;font-weight:var(--fw-semibold)}
.tb-qb b i{font-style:normal;color:var(--ink-label);margin:0 var(--stack-item);font-weight:var(--fw-regular)}
.tb-qb span{font-size:var(--fs-label);text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--ink-label)}
.tb-qb.hi{background:var(--fill-primary);border-color:var(--line-primary)}
.tb-qb.hi b,.tb-qb.hi span,.tb-qb.hi b small,.tb-qb.hi b i{color:var(--on-fill)}
.tb-qk{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:var(--gap-tight) var(--gap-cluster-x);font-size:var(--fs-caption);color:var(--ink-note)}
.tb-qk b{font-family:"Rajdhani",var(--f-display);font-size:1.25em;color:var(--ink-body)}
.tb-acts2 .tb-acg{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--gap-cluster-sm);margin-bottom:var(--stack-item)}
.tb-acts2 .tb-acg .btn{white-space:normal;line-height:var(--lh-125);min-height:34px}
.tb-acts2 .btn.danger,.tb-acts2 .btn.danger:hover{border-color:var(--bad);color:var(--bad);background:var(--bad-soft)}
.tb-acl{display:flex;flex-direction:column;gap:var(--gap-tight-sm);font-size:var(--fs-label);text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--ink-note);margin-bottom:var(--stack-detail-sm)}
.tb-acl select{text-transform:none;letter-spacing:0;font-size:var(--fs-control)}
.tb-acs{display:flex;gap:var(--gap-cluster-sm)}
.tb-acs input{flex:1;min-width:0}
.tb-acd{margin-top:var(--stack-detail-sm)}
@container (max-width:340px){div.tb-qd{grid-template-columns:minmax(0,1fr)}.tb-qb.hi{order:-1}}/* UX-112: la columna del recuadro es de ~190 px */
@media (max-width:700px){.tb-qrow{grid-template-columns:minmax(0,1fr)}div.tb-qd{grid-template-columns:repeat(2,minmax(0,1fr))}.tb-qb.hi{grid-column:1/-1;order:-1}}
/* owner 2026-11-10 (#487): lo mismo cuando la caja es estrecha (columna lateral o caja reducida), no solo en móvil: con 230 px fijos
   para las cifras, la pieza quedaba en ~90 px y los textos se montaban */
[data-bx]:has(>.tb-qrow){container:tbq / inline-size}
@container tbq (max-width:600px){.tb-qrow{grid-template-columns:minmax(0,1fr)}div.tb-qd{grid-template-columns:repeat(2,minmax(0,1fr))}.tb-qb.hi{grid-column:1/-1;order:-1}}
/* v344 recuadros que se arrastran y cambian de tamaño; a la derecha un tablero de 12 columnas */
.tb-cv{position:relative;display:block;min-height:40px}
.tb-cv>[data-bx],.tb-cv>.tb-ph{position:absolute;top:0;left:0;margin:0;box-sizing:border-box}
.tb-cv.flat{display:flex;flex-direction:column;gap:var(--gap-section);height:auto!important}
.tb-cv.flat>[data-bx]{position:relative}
[data-bx]{position:relative;min-width:0}
.lyfh{overflow:auto;scrollbar-width:thin}
.lyfh>.tb-rz{bottom:calc(1px - var(--sy,0px));right:calc(1px - var(--sx,0px))}
.lyfh>.tb-grip{top:calc(1px + var(--sy,0px));left:calc(50% + var(--sx,0px))}
.tb-grip{position:absolute;top:1px;left:50%;transform:translateX(-50%);width:40px;height:14px;padding:0;border:0;border-radius:var(--r-2);background:transparent;cursor:grab;opacity:0;transition:opacity var(--dur-2);z-index:3;display:flex;align-items:center;justify-content:center}
.tb-grip::before{content:"";width:24px;height:7px;background-image:radial-gradient(circle,var(--fill-muted) 1.2px,transparent 1.6px);background-size:6px 3.5px}
.tb-grip:hover::before{background-image:radial-gradient(circle,var(--fill-brand) 1.2px,transparent 1.6px)}
.tb-rz{position:absolute;right:1px;bottom:1px;width:16px;height:16px;padding:0;border:0;background:linear-gradient(135deg,transparent 52%,var(--fill-muted) 52%,var(--fill-muted) 60%,transparent 60%,transparent 70%,var(--fill-muted) 70%,var(--fill-muted) 78%,transparent 78%);cursor:nwse-resize;opacity:0;transition:opacity var(--dur-2);z-index:3;border-radius:0 0 var(--r-card) 0}
[data-bx]:hover>.tb-grip,[data-bx]:hover>.tb-rz,.tb-grip:focus-visible,.tb-rz:focus-visible,.ly-ns .tb-rz{opacity:1}
[data-bx]>h3,[data-bx]>h4,[data-bx]>.tb-flh,[data-bx].tb-ship h3{cursor:grab}
.tb-ph{border:2px dashed var(--line-accent);border-radius:var(--r-card);background:color-mix(in srgb,var(--fill-accent) 8%,transparent)}
.tb-side>.tb-ph{position:static;flex:none}
.lydrg{position:fixed!important;z-index:var(--z-float);pointer-events:none;opacity:.9;box-shadow:0 14px 36px rgba(0,0,0,.5);overflow:hidden}
.ly-ns,.ly-ns *{user-select:none!important;cursor:grabbing!important}
.tb-cv.lyanim>[data-bx],.tb-cv.lyanim>.tb-ph{transition:top .16s ease,left .16s ease,width .16s ease}
@media (min-width:1001px){.tb-wrap.lysw{grid-template-columns:var(--lysw) minmax(0,1fr)}}
.tb-wrap.noside{grid-template-columns:minmax(0,1fr)}
.tb-wrap.noside>.tb-side{display:none}
.tb-wrap.noside.lydrag{grid-template-columns:240px minmax(0,1fr)}
.tb-wrap.noside.lydrag>.tb-side{display:flex;min-height:160px;border:2px dashed var(--line-card);border-radius:var(--r-card)}
/* owner 2026-11-10: tres columnas fijas: a la izquierda la nave, la interfaz y la energía; en el centro las piezas; a la derecha las cifras */
.tb-wrap{grid-template-columns:minmax(300px,380px) minmax(0,1fr) minmax(340px,460px);grid-template-areas:"side main stats"}
.tb-side{grid-area:side}
.tb-main{grid-area:main}
/* owner 2026-11-10 (#487): sin barra propia; fija bajo las barras si cabe y, si es más alta, baja con la página hasta su final (configurador-reparto.js) */
.tb-stats{grid-area:stats;display:flex;flex-direction:column;gap:var(--gap-section);min-width:0;position:sticky;top:calc(var(--top-fix,0px) - 2px)}
.tb-qtx{margin:0 0 var(--stack-item)}
.tb-chk{display:flex;align-items:center;gap:var(--gap-cluster-sm);min-height:24px;font-size:var(--fs-control);cursor:pointer}
.tb-chk input{width:18px;height:18px;margin:0;accent-color:var(--fill-brand)}
@media (max-width:1400px){.tb-wrap{grid-template-columns:minmax(300px,380px) minmax(0,1fr);grid-template-areas:"side main" "stats main"}.tb-stats,.tb-side{position:static;max-height:none;overflow:visible}}
@media (max-width:1000px){.tb-wrap{grid-template-columns:1fr;grid-template-areas:"side" "stats" "main"}}
/* resumen: sin «Información detallada» solo quedan las cifras principales de cada recuadro */
.tb-res .tb-stats .tb-kv,.tb-res .tb-stats .tb-ord,.tb-res .tb-stats .tb-fl2,.tb-res .tb-stats .tb-fl1~.tb-fl1,
.tb-res .tb-wl,.tb-res .tb-dpsu,.tb-res .tb-shd,.tb-res .tb-qk,.tb-res .tb-rad,.tb-res .tb-ppl,.tb-res .tb-cbl,.tb-res .tb-mk,.tb-res .tb-qtx .tb-kv,.tb-res [data-bx="g-mod"] p.muted,.tb-res .tb-side .tb-kv{display:none}
.tb-acts2 .tb-acw{grid-column:1/-1}
/* UX-034: no drag handles on touch screens; on narrow ones, a sticky strip of anchors to the folded boxes */
@media (pointer:coarse){.tb-grip,.tb-rz{display:none}}
.tb-secnav{position:sticky;top:var(--top-fix,0px);z-index:5;display:flex;gap:var(--gap-cluster-sm);overflow-x:auto;padding:6px 0;margin:0 0 var(--stack-item);background:var(--surface-page);border-bottom:1px solid var(--line-row);scrollbar-width:thin}
.tb-secnav button{flex:none;min-height:36px;padding:4px 12px;border:1px solid var(--line-chip);border-radius:var(--r-control);background:var(--surface-control);color:var(--ink-body);font:inherit;font-size:var(--fs-control);cursor:pointer}
.tb-secnav button:focus-visible{outline:2px solid var(--line-brand);outline-offset:var(--focus-offset)}
[data-bx]{scroll-margin-top:128px}
@media (max-width:700px){.tb-grip,.tb-rz{display:none}.tb-wrap.lysw{grid-template-columns:1fr}}
/* v345 imagen de la nave entera; ficha de pieza como hoja de datos; pintura */
.tb-ship img{aspect-ratio:auto;height:auto;object-fit:contain}
.tb-desc .tb-ds{margin:0 0 var(--stack-tight)}
.tb-paint h4{align-items:center}
/* v346 icono en el título de cada recuadro y flecha para minimizarlo; distribuciones guardadas */
.ly-t{display:flex!important;align-items:center!important;justify-content:flex-start!important;gap:var(--gap-cluster)}
.ly-ic{flex:none;display:inline-grid;place-items:center;color:var(--ink-accent)}
.tb-flh.ly-t h4{margin-right:0;display:flex;align-items:center;gap:var(--gap-cluster)}
.tb-flh.ly-t>.tb-bls{margin-left:auto}
.ly-t>small,.ly-t>.tb-ptr{margin-left:auto}
.tb-min{flex:none;margin-left:auto;width:26px;height:26px;padding:0;border:1px solid transparent;border-radius:var(--r-2);background:transparent;color:var(--ink-note);display:grid;place-items:center;cursor:pointer;transition:transform var(--dur-2),color var(--dur-2)}
.ly-t>small~.tb-min,.ly-t>.tb-ptr~.tb-min,.tb-flh.ly-t>.tb-bls~.tb-min,.tb-flh.ly-t>.tb-ib~.tb-min{margin-left:2px}
.tb-min:hover,.tb-min:focus-visible{color:var(--ink-link);border-color:var(--line-card)}
.lymin .tb-min{transform:rotate(-90deg)}
.lymin>*:not(.ly-hd):not(.tb-grip):not(.tb-rz){display:none!important}
.lymin>.ly-hd{margin-bottom:0}
.lymin.tb-ship .ly-hd>*:not(h3){display:none}
.lymin.tb-ship h3{margin:0}
.lymin.tb-ship .ly-hd{padding:var(--pad-card)}
.tb-ship h3.ly-t .ly-ic svg{width:var(--icon-md);height:var(--icon-md)}
.tb-acl2{margin-top:var(--stack-detail)}
.tb-flh.ly-t{position:relative;padding-right:32px}
.tb-flh.ly-t>.tb-min{position:absolute;right:0;top:0}
.ly-t>small{text-align:right}
/* owner 2026-11-10: both side columns stick at the same height just under the tool tabs (their 10px inner room for the halo leaves the boxes 8px below); a column taller than the window scrolls inside, as the right one */
.tb-wrap>.tb-side{max-height:none;overflow:visible} /* the left column never scrolls on its own (top set by configurador-reparto.js stick()) */
/* v350 recuadro de vuelo como ficha: blade STD/PHB/TSB, giros, velocidad, motor, impulso y combustibles */
.tb-bll{margin-left:auto;font-size:var(--fs-label);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--ink-note)}
.tb-flh.ly-t>.tb-bll{margin-left:auto}
.tb-flh.ly-t>.tb-bls{margin-left:0}
.tb-rot b small{font-size:var(--fs-caption);color:var(--ink-note);margin-left:2px;font-weight:var(--fw-semibold)}
.tb-fls{display:flex;flex-direction:column;gap:9px;margin-top:var(--stack-detail);padding-top:10px;border-top:1px solid var(--line-row);font-size:var(--fs-body-sm);color:var(--ink-secondary)}
.tb-fls b{font-family:"Rajdhani",var(--f-display);font-size:var(--fs-stat-sm);color:var(--ink-body);font-weight:var(--fw-bold);margin:0 2px}
.tb-fls em{font-style:normal;font-family:"Rajdhani",var(--f-display);font-size:var(--fs-stat-sm);font-weight:var(--fw-bold);color:var(--ink-accent);margin:0 2px}
.tb-fls i{font-style:normal;color:var(--ink-label);margin:0 3px}
.tb-fls small{color:var(--ink-note)}
.tb-fls b.ac{color:var(--ink-accent)}
.tb-fl2{display:flex;flex-wrap:wrap;align-items:center;gap:var(--gap-cluster-sm) var(--gap-cluster)}
.tb-fl2>span:first-child{margin-right:4px}
.tb-flc{border:1px solid var(--line-card);border-radius:var(--r-chip);padding:3px 10px;background:var(--surface-sunken);font-size:var(--fs-caption)}
.tb-flc b{font-size:var(--fs-value)}
.tb-fl3{display:flex;flex-wrap:wrap;gap:var(--gap-tight) 18px;padding-top:9px;border-top:1px solid var(--line-row)}
/* v353 part cards: size and grade squares on the left, name with its buttons, maker and class under it */
.tb-hd{display:flex;align-items:flex-start;gap:var(--gap-cluster);min-width:0;margin:2px 0}
.tb-szg{display:inline-flex;gap:var(--gap-tight);flex:none}
.tb-szg>i{font-style:normal;display:inline-flex;align-items:center;justify-content:center;min-width:30px;height:30px;padding:0 6px;border-radius:var(--r-badge-size);font-family:"Rajdhani",var(--f-display);font-size:15px;font-weight:var(--fw-bold);border:1px solid var(--line-card);background:var(--surface-card);color:var(--ink-secondary)}
.tb-szg>i.tb-szt{background:var(--fill-primary);border-color:var(--line-primary);color:var(--on-fill)}
.tb-hn{display:flex;flex-direction:column;min-width:0;flex:1}
.tb-hl{display:flex;align-items:center;gap:var(--gap-cluster-sm);min-width:0}
.tb-hl>b{min-width:0}
.tb-hl>.tb-ibs{margin:0;flex:none}
.tb-mk{font-size:var(--fs-caption);color:var(--ink-note);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* UX-113: part name and maker wrap to two lines (the full text is in title) instead of cutting at one */
.tb-sm .tb-hl>b,.tb-sm .tb-mk{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;white-space:normal;overflow-wrap:break-word;overflow:hidden}
.tb-sm .tb-hd{flex-wrap:wrap}
.tb-sm .tb-hn{flex:1 1 8.5rem}
.tb-sm .tb-hl{align-items:flex-start;flex-wrap:wrap}
/* v356 under a gun's DPS: Gimbal / Fijo and the sheet figure with what is taken off */
.tb-dpsx{grid-column:1/-1;justify-self:end;display:flex;flex-direction:column;align-items:flex-end;gap:var(--gap-cluster-xs);text-transform:none;letter-spacing:0;margin-top:2px}
.tb-dpsx small{font-size:var(--fs-caption);color:var(--ink-note);text-align:right}
.tb-gbs button{padding:2px 8px;font-size:var(--fs-control-sm)}
@media (max-width:560px){.tb-dpsx{align-items:flex-start}.tb-dpsx small{text-align:left}}
/* v378: botón real sobre cada tarjeta de pieza de Configuraciones (antes la tarjeta era role=button con botones dentro) */
.tb-slot.pk{position:relative}
.tb-open{position:absolute;inset:0;z-index:1;margin:0;padding:0;border:0;background:none;border-radius:inherit;cursor:pointer}
.tb-open:focus-visible{outline:var(--focus-ring);outline-offset:var(--focus-offset)}
.tb-slot.pk :is(button:not(.tb-open),a,input,select,summary,[title],[data-tip],[data-craftbp]){position:relative;z-index:2}
/* #357 compact part cards (owner 2026-11-04, at every resolution): the main figure beside the name, the crafting quality as a narrow
   rail on the left, no «Arma» label inside a mount, one-line maker and overheat, the shield figures in one line and its resistances
   two per row, smaller figures and paddings: a weapon goes from ~300 px to ~165 px and a shield from ~305 px to ~165 px */
.tb-cv .tb-slot{padding:var(--pad-cfg-slot);gap:var(--gap-stack) var(--gap-cluster-sm);row-gap:var(--gap-tight-sm)}
.tb-cv .tb-dpsb b{font-size:var(--fs-stat-xl)}
.tb-cv .tb-dpsb span{font-size:var(--fs-caption)}
.tb-cv .tb-slot.sub .tb-sm>.tb-sn{display:none}
.tb-cv .tb-sm .tb-hd{margin:0}
.tb-cv .tb-sm .tb-hl>b,.tb-cv .tb-sm .tb-mk{-webkit-line-clamp:1;line-clamp:1}
.tb-cv .tb-wl{gap:var(--gap-stack)}
.tb-cv .tb-heat{flex-wrap:nowrap;white-space:nowrap;overflow:hidden}
.tb-cv .tb-heat span{overflow:hidden;text-overflow:ellipsis}
.tb-cv .tb-crw{flex-direction:row}
.tb-cv .tb-crb{width:22px;flex:none;flex-direction:column;justify-content:center;gap:var(--gap-tight);padding:var(--gap-tight) 0;border-bottom:1px solid var(--line-card);border-right:0;border-radius:var(--r-control) 0 0 var(--r-control)}
.tb-cv .tb-crb>span{display:none}
.tb-cv .tb-crb b{margin:0;writing-mode:vertical-rl;transform:rotate(180deg);font-size:var(--fs-caption)}
.tb-cv .tb-crw>.tb-slot{border-radius:0 var(--r-box) var(--r-box) 0;min-width:0}
.tb-cv .tb-shd{padding-top:0;container-type:inline-size}
.tb-cv .tb-shb{padding:var(--gap-tight-sm) 0 var(--gap-cluster-xs);gap:var(--gap-tight)}
.tb-cv .tb-shb b{font-size:var(--fs-body-sm)}
.tb-cv .tb-sht>div{padding:var(--gap-tight-sm) var(--gap-cluster-sm);row-gap:var(--gap-hair)}
.tb-cv .tb-sht em{white-space:nowrap}
/* with room (a wide box) each shield figure goes on one line and the resistance and absorption of a damage type side by side */
@container (min-width:600px){.tb-cv .tb-shb>span{display:flex;flex-direction:row;align-items:baseline;justify-content:center;gap:var(--gap-tight)}.tb-cv .tb-shb i{font-size:var(--fs-label)}
  .tb-cv .tb-sht>div{grid-template-columns:auto minmax(0,1fr) auto minmax(0,1fr);column-gap:var(--gap-cluster-sm)}.tb-cv .tb-sht>div>b{grid-column:1/-1}.tb-cv .tb-sht em{text-align:right}}
/* the guns of a mount fill the width they have */
.tb-mguns:has(>:nth-child(2)){grid-template-columns:repeat(auto-fit,minmax(min(100%,380px),1fr))}
.tb-kids:has(>.tb-mrow+.tb-mrow){grid-template-columns:repeat(auto-fit,minmax(min(100%,640px),1fr))}
@media (min-width:561px){
  .tb-cv .tb-slot>.tb-sm{grid-column:1;grid-row:1/span 2;align-self:start}
  .tb-cv .tb-slot>.tb-dpsb{grid-column:2/-1;grid-row:1;justify-self:end;align-self:start}
  .tb-cv .tb-slot>.tb-dpsu{grid-column:2/-1;grid-row:2;justify-self:end;align-self:start;margin-top:0}}
/* #357 the left column, compact: the ship picture cropped top and bottom, the description folded under an arrow beside the name,
   «Interfaz» with icon buttons, and smaller power pips (owner 2026-11-04: 12 px a segment instead of the 24 px target of UX-029) */
.tb-ship img{aspect-ratio:21/8;height:auto;object-fit:cover;object-position:center 55%}
.tb-ship h3{display:flex;align-items:center;justify-content:flex-end;gap:var(--gap-tight)}
.tb-dsb{flex:none;display:inline-grid;place-items:center;width:24px;height:24px;padding:0;border:1px solid var(--line-chip);border-radius:var(--r-control);background:transparent;color:var(--ink-secondary);cursor:pointer}
.tb-dsb svg{transition:transform var(--dur-1)}
.tb-dsb[aria-expanded="true"] svg{transform:rotate(180deg)}
.tb-dsb:hover{color:var(--ink-link);border-color:var(--line-brand)}
.tb-dsx .tb-ds{margin:var(--stack-detail) 0 var(--stack-tight)}
.tb-acts2 .tb-acg{display:flex;gap:var(--gap-cluster-sm);flex-wrap:wrap}
.tb-acts2 .tb-acg .btn{min-height:30px}
.tb-acts2 .tb-acg>.tb-chk{align-self:center;margin:0 0 0 var(--gap-cluster-sm)} /* «Información detallada» beside the buttons (owner 2026-11-10) */
.tb-icb{display:inline-grid;place-items:center;min-width:34px;padding:var(--space-1) var(--space-2)}
.tb-acs .btn{display:inline-grid;place-items:center;min-width:34px}
.tb-acs+.tb-acd{margin-top:var(--stack-tight)}
@media (min-width:561px){
  .tb-pips{min-height:72px}
  .tb-pips button{flex-basis:12px;min-height:12px}
  .tb-pips button::before,.tb-pips button.tb-pj::before{inset:2px 0}
  .tb-pips button.tb-pj{font-size:var(--fs-label);line-height:var(--lh-100)}
  .tb-pips>i{max-height:36px}}
/* #363 slanted warning stripes born at the top edge of each main box, all along it, fading downwards just past its name; muted so
   the name reads well. The side column (ship, Interfaz, power) has none */
:is(.tb-main,.tb-cv)>[data-bx]{--stripe:color-mix(in srgb,var(--brand) 55%,var(--warn))}
.tb-main:not(.tb-cv)>[data-bx]{position:relative}
:is(.tb-main,.tb-cv)>[data-bx]::before{content:"";position:absolute;inset:0 0 auto;height:58px;border-radius:inherit;pointer-events:none;z-index:0;
  background:repeating-linear-gradient(-50deg,color-mix(in srgb,var(--stripe) 15%,transparent) 0 4px,transparent 4px 11px);
  -webkit-mask-image:linear-gradient(to bottom,var(--mask-solid) 0,var(--mask-half) 45%,transparent 100%);mask-image:linear-gradient(to bottom,var(--mask-solid) 0,var(--mask-half) 45%,transparent 100%)}
:is(.tb-main,.tb-cv)>[data-bx]>*{position:relative;z-index:1}
:is(.tb-main,.tb-cv)>[data-bx]>:is(.tb-grip,.tb-rz){position:absolute;z-index:3}
/* owner 2026-11-10: invisible grab strips on every side (6px) and corner (12px) resize the box; inside its edges so nothing overflows;
   --sx/--sy keep them on the edges of a fixed-height box that scrolls (as the grip and the corner) */
:is(.tb-main,.tb-cv)>[data-bx]>.tb-rze{position:absolute;z-index:2}
.tb-rze-n,.tb-rze-s{left:12px;right:12px;height:6px;cursor:ns-resize}
.tb-rze-e,.tb-rze-w{top:12px;bottom:12px;width:6px;cursor:ew-resize}
.tb-rze-nw,.tb-rze-ne,.tb-rze-sw{width:12px;height:12px}
.tb-rze-nw{cursor:nwse-resize}
.tb-rze-ne,.tb-rze-sw{cursor:nesw-resize}
.tb-rze-n,.tb-rze-nw,.tb-rze-ne{top:var(--sy,0px)}
.tb-rze-s,.tb-rze-sw{bottom:calc(0px - var(--sy,0px))}
.tb-rze-w,.tb-rze-nw,.tb-rze-sw{left:var(--sx,0px)}
.tb-rze-e,.tb-rze-ne{right:calc(0px - var(--sx,0px))}
@media (pointer:coarse),(max-width:700px){.tb-rze{display:none}}
/* #363 the crafting quality rail of a part, lit like a fluorescent tube: brighter and more yellow than the stripes */
.tb-cv .tb-crb{--tube:var(--tube-lit);border-color:color-mix(in srgb,var(--tube) 70%,transparent);color:var(--glow-dark);
  background:linear-gradient(90deg,color-mix(in srgb,var(--tube) 55%,transparent) 0,var(--tube) 35%,color-mix(in srgb,var(--tube) 60%,var(--ink-on-glow)) 50%,var(--tube) 65%,color-mix(in srgb,var(--tube) 55%,transparent) 100%);
  --tube-glow:0 0 6px color-mix(in srgb,var(--tube) 70%,transparent),0 0 16px color-mix(in srgb,var(--tube) 35%,transparent);--tube-glow-hi:0 0 8px var(--tube),0 0 22px color-mix(in srgb,var(--tube) 55%,transparent);box-shadow:var(--tube-glow)}
.tb-cv .tb-crb b,.tb-cv .tb-crb:hover b,.tb-cv .tb-crb.on b{color:var(--glow-dark)}
.tb-cv .tb-crb:hover,.tb-cv .tb-crb.on{color:var(--glow-dark);border-color:var(--tube);box-shadow:var(--tube-glow-hi)}
.tb-acts2>h4{justify-content:flex-start}
/* owner 2026-11-10: en la montura las etiquetas bajan de línea cuando no caben (antes «Tripulación» quedaba tapada por el arma) */
.tb-mrow>.tb-mnt>.tb-tags{max-width:100%;flex-wrap:wrap}
/* owner 2026-11-10: the side and figures columns of the Configurador stand out as key information: the site's duo light, very translucent
   (a faint tinted edge, a soft outer glow and a hint of colour inside); the middle board keeps its own look */
:is(.tb-side,.tb-stats)>.tb-card{--shadow-key-col:0 0 10px color-mix(in srgb,var(--duo-a) 28%,transparent),0 0 22px color-mix(in srgb,var(--duo-b) 16%,transparent),inset 0 1px 0 color-mix(in srgb,var(--duo-a) 34%,transparent),inset 0 0 18px color-mix(in srgb,var(--duo-a) 8%,transparent);border-color:color-mix(in srgb,var(--line-duo) 55%,var(--line-card));
  background-image:linear-gradient(160deg,color-mix(in srgb,var(--duo-a) 16%,transparent),color-mix(in srgb,var(--duo-a) 4%,transparent) 50%,color-mix(in srgb,var(--duo-b) 13%,transparent));
  box-shadow:var(--shadow-key-col)}
/* room for that halo inside the columns, given back outside, so the boxes line up with the middle board; only with three columns:
   with the stats under the ship (1001–1400 px) the negative margins made them overlap by 8 px (#487) */
@media (min-width:1401px){:is(.tb-side,.tb-stats){padding:var(--gap-panel);margin:var(--inset-halo)}}
/* the boxes of a height-capped column keep their size (the column scrolls instead of squeezing them) */
.tb-wrap>:is(.tb-side,.tb-stats)>*{flex-shrink:0}
/* owner 2026-11-10: the ship's maker and name sit on the picture, over a dark fade at its foot (white text in both themes) */
.tb-ship>.tb-shimg{position:relative;padding:0}
.tb-shimg>.tb-shnm{padding:var(--gap-panel) var(--space-3) 0}
.tb-shimg>img+.tb-shnm{position:absolute;inset:auto 0 0;padding:var(--space-6) var(--space-3) var(--space-2);background:var(--fade-ship)}
.tb-shimg>img+.tb-shnm .tb-gr{color:var(--ink-on-photo-soft)}
.tb-shimg>img+.tb-shnm h3{margin:0;color:var(--ink-on-photo);text-shadow:var(--shadow-text-photo)}
.tb-shimg>img+.tb-shnm h3 :is(button,a){color:var(--ink-on-photo)}
/* owner 2026-11-10: without «Información detallada» the missiles keep their damage each and their seeker as a small coloured chip
   (icon + IR/EM/CS…; the full name stays for screen readers) */
.tb-res [data-bx="g-ord"] .tb-dpsu{display:block}
.tb-res .tb-wl:has(>.tb-sk){display:flex;padding-top:0}
.tb-res .tb-wl:has(>.tb-sk)>:not(.tb-sk){display:none}
.tb-res .tb-wl>.tb-sk{padding:var(--pad-badge-2xs);gap:var(--gap-tight);font-size:var(--fs-caption)}
.tb-res .tb-wl>.tb-sk>em{display:none}
.tb-res .tb-wl>.tb-sk>span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* Configurador de naves: ventanas (elegir pieza, ficha de pieza, coste de los cambios y compra, distribuciones guardadas) */
.ty-cd{width:min(680px,calc(100vw - 32px));max-height:calc(100vh - 32px);overflow:auto}
.ty-cd-h{display:flex;align-items:center;gap:var(--gap-panel);padding:14px 18px;border-bottom:1px solid var(--line-row)}
.ty-cd-h h3{margin:0;font-size:var(--fs-subtitle);flex:1;min-width:0;display:flex;flex-direction:column}
.ty-cd-h h3 small{font-size:var(--fs-caption);font-weight:var(--fw-medium);color:var(--ink-note)}
.ty-cd-ic{color:var(--ink-accent);display:inline-grid}
.ty-cd-tabs{display:flex;flex-wrap:wrap;gap:var(--gap-stack);padding:var(--pad-tab-row);border-bottom:1px solid var(--line-row)}
.ty-cd-tabs button{background:none;border:0;border-bottom:2px solid transparent;padding:var(--pad-tab);color:var(--ink-secondary);cursor:pointer;font-weight:var(--fw-semibold);font-size:var(--fs-control)}
.ty-cd-tabs button[aria-pressed=true]{color:var(--ink-link);border-bottom-color:var(--line-brand)}
.ty-cd-b{padding:var(--pad-dialog);display:grid;grid-template-columns:minmax(0,1fr);gap:var(--gap-panel)}
.ty-cd-st{overflow-x:auto}
.ty-cd-s{margin:var(--stack-tight) 0 0;font-size:var(--fs-label);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--ink-label)}
.ty-cd-t td{padding:var(--pad-cell)}
.ty-cd-t th{padding:var(--pad-head)}
.ty-cd-pre{display:flex;flex-wrap:wrap;gap:var(--gap-cluster-sm);justify-content:center}
.ty-cd-sl{display:grid;grid-template-columns:minmax(0,170px) minmax(0,1fr) 44px;grid-template-areas:"n s v" "e e e";gap:var(--gap-stack) var(--gap-section);align-items:center;padding:var(--pad-row-md);border-top:1px solid var(--line-row)}
.ty-cd-sl .n{grid-area:n;display:flex;flex-direction:column;min-width:0}
.ty-cd-sl .n small{color:var(--ink-note);font-size:var(--fs-caption)}
.ty-cd-sl input[type=range]{grid-area:s;width:100%;accent-color:var(--fill-accent)}
.ty-cd-ef{grid-area:e;font-size:var(--fs-caption);color:var(--ink-note)}
.ty-cd-mat{border-top:1px solid var(--line-row);padding-top:var(--pad-rule)}
.ty-cd-f{display:flex;justify-content:flex-end;gap:var(--gap-cluster);padding:var(--pad-dialog);border-top:1px solid var(--line-row)}
@media (max-width:560px){.ty-cd-h,.ty-cd-b,.ty-cd-f{padding-left:var(--pad-card);padding-right:var(--pad-card)}.ty-cd-t td,.ty-cd-t th{padding:5px 4px;font-size:var(--fs-head)}.ty-cd-sl{grid-template-columns:minmax(0,1fr) 44px;grid-template-areas:"n v" "s s" "e e"}}
.ty-cp .ty-cd-tabs button{display:inline-flex;align-items:center;gap:var(--gap-cluster-sm)}
.ty-cp-r{display:flex;justify-content:space-between;gap:var(--gap-section);padding:var(--pad-row);border-bottom:1px solid var(--line-row);font-size:var(--fs-body-sm)}
.ty-cp-r span{color:var(--ink-secondary)}
.ty-cp-r b{font-family:"Rajdhani",var(--f-display);font-size:var(--fs-title);text-align:right}
.ty-cp-r b small{font-family:var(--f-body,inherit);font-size:var(--fs-caption);color:var(--ink-note);font-weight:var(--fw-medium)}
.ty-cp-sum{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--gap-cluster);margin-bottom:var(--stack-detail)}
.ty-cp-sum>div{border:1px solid var(--line-card);border-radius:var(--r-control);padding:var(--pad-panel-sm);background:var(--surface-sunken)}
.ty-cp-sum b{display:block;font-family:"Rajdhani",var(--f-display);font-size:var(--fs-figure-lg);font-weight:var(--fw-bold);color:var(--ink-accent);line-height:var(--lh-110)}
.ty-cp-sum span{font-size:var(--fs-label);text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--ink-label)}
.ty-cp-pl{margin:var(--stack-tight) 0 var(--stack-detail)}
.ty-cp-pl>.faint{display:block;font-size:var(--fs-caption);margin-bottom:var(--stack-tight)}
.ty-cp-sh{display:flex;justify-content:space-between;align-items:center;gap:var(--gap-panel);border:1px solid var(--line-card);border-radius:var(--r-control);padding:var(--pad-cell-lg);background:var(--surface-sunken);margin-bottom:var(--stack-tight)}
.ty-cp-sh>span{display:flex;flex-direction:column;min-width:0}
.ty-cp-sh small{color:var(--ink-note);font-size:var(--fs-caption)}
.ty-cp-sh>b{font-family:"Rajdhani",var(--f-display);font-size:var(--fs-stat-sm);white-space:nowrap}
.ty-cp-x{margin-bottom:var(--stack-detail)}
.ty-cp{width:min(560px,calc(100vw - 32px))}
.ty-cp-hd{display:flex;align-items:center;gap:var(--gap-section);padding:16px 18px 6px}
.ty-cp-sz{flex:none;width:46px;height:46px;border-radius:var(--r-card);background:var(--fill-primary);color:var(--on-fill);display:grid;place-items:center;font-family:"Rajdhani",var(--f-display);font-weight:var(--fw-bold);font-size:var(--fs-stat)}
.ty-cp-tt{flex:1;min-width:0}
.ty-cp-tt h3{margin:0;font-size:var(--fs-heading);line-height:var(--lh-120)}
.ty-cp-sub{display:flex;flex-wrap:wrap;align-items:center;gap:var(--gap-cluster-sm);margin-top:3px;font-size:var(--fs-note);color:var(--ink-secondary)}
.ty-cp-sub .tb-mini{font-size:var(--fs-label)}
.ty-cp-mf{display:flex;justify-content:space-between;align-items:center;gap:var(--gap-cluster);padding:6px 18px;font-size:var(--fs-body-sm);color:var(--ink-secondary)}
.ty-cp-gr{border:1px solid var(--line-card);border-radius:var(--r-control);padding:var(--pad-badge);font-size:var(--fs-caption);font-weight:var(--fw-semibold);color:var(--ink-body)}
.ty-cp-id{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--gap-tight-sm) var(--gap-cluster-x);margin:0;padding:4px 18px 12px;font-size:var(--fs-caption);align-items:baseline}
.ty-cp-id dt{color:var(--ink-label);text-transform:uppercase;letter-spacing:var(--tracking-label);font-size:var(--fs-label)}
.ty-cp-id dd{margin:0;font-family:ui-monospace,Consolas,monospace;color:var(--ink-secondary);overflow-wrap:anywhere}
.ty-cp .ty-cd-b{gap:var(--gap-section)}
.ty-cp-bigs{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));border:1px solid var(--line-card);border-radius:var(--r-control);overflow:hidden}
.ty-cp-bigs>div{padding:var(--pad-notice);border-left:1px solid var(--line-row);min-width:0}
.ty-cp-bigs>div:first-child{border-left:0}
.ty-cp-bigs b{display:block;font-family:"Rajdhani",var(--f-display);font-size:27px;font-weight:var(--fw-bold);color:var(--ink-accent);line-height:var(--lh-110)}
.ty-cp-bigs b small{font-size:var(--fs-body)}
.ty-cp-bigs span{font-size:var(--fs-label);text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--ink-label)}
.ty-cp-ds{margin:0;font-size:var(--fs-body-md);line-height:var(--lh-155);color:var(--ink-secondary)}
.ty-cp-sec{border-top:1px solid var(--line-row)}
.ty-cp-sec>summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;padding:12px 0 6px;font-size:var(--fs-label);font-weight:var(--fw-bold);letter-spacing:var(--tracking-kicker);text-transform:uppercase;color:var(--ink-accent)}
.ty-cp-sec>summary::-webkit-details-marker{display:none}
.ty-cp-sec>summary::after{content:"";width:7px;height:7px;border-right:2px solid var(--line-muted);border-bottom:2px solid var(--line-muted);transform:rotate(45deg);margin-right:var(--gap-tight);transition:transform var(--dur-2)}
.ty-cp-sec:not([open])>summary::after{transform:rotate(-45deg)}
.ty-cp-sec>div{padding-bottom:8px}
.ty-cp-sec .ty-cp-r{border-bottom:1px dashed var(--line-row);align-items:center}
.ty-cp-sec .ty-cp-r:last-child{border-bottom:0}
.ty-cp-r b{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--gap-tight);align-items:baseline}
.ty-cp-bar{display:grid;grid-template-columns:90px minmax(0,1fr) 64px;align-items:center;gap:var(--gap-panel);padding:7px 0;font-size:var(--fs-body-sm);border-bottom:1px dashed var(--line-row)}
.ty-cp-bar>span{color:var(--ink-secondary)}
.ty-cp-bar i{height:6px;border-radius:var(--r-thumb);background:var(--surface-sunken);overflow:hidden}
.ty-cp-bar em{display:block;height:100%;background:var(--fill-accent)}
.ty-cp-bar.dt0 em{background:var(--dt0)}
.ty-cp-bar.dt1 em{background:var(--bad)}
.ty-cp-bar.dt2 em{background:var(--info)}
.ty-cp-bar b{text-align:right;font-family:"Rajdhani",var(--f-display);font-size:var(--fs-title)}
.ty-cp .tb-shd{margin-top:var(--stack-tight)}
.ty-cp-swap{flex:1;justify-content:center;font-weight:var(--fw-bold)}
.tb-pth{display:inline-flex;align-items:center;gap:var(--gap-cluster)}
.tb-ptr{background:none;border:0;color:var(--ink-secondary);font-size:var(--fs-caption);text-transform:none;letter-spacing:0;cursor:pointer;padding:2px 4px}
.tb-ptr:hover{color:var(--ink-link)}
.tb-pte{display:flex;align-items:center;gap:var(--gap-section);border:1.5px dashed color-mix(in srgb,var(--line-accent) 55%,transparent);border-radius:var(--r-box);padding:var(--pad-card);background:color-mix(in srgb,var(--fill-accent) 6%,transparent);cursor:pointer}
.tb-pte:hover,.tb-pte:focus-visible{border-color:var(--line-brand);background:color-mix(in srgb,var(--fill-brand) 12%,transparent)}
.tb-pte>span:nth-child(2){flex:1;min-width:0;display:flex;flex-direction:column}
.tb-pte small{color:var(--ink-note);font-size:var(--fs-caption)}
.tb-ptp{flex:none;width:34px;height:34px;border:1.5px dashed var(--line-muted);border-radius:var(--r-2);display:grid;place-items:center;color:var(--ink-accent);font-size:20px}
.tb-pte .btn{flex:none;border-color:var(--line-brand);color:var(--ink-link)}
.tb-ptc{display:flex;align-items:center;gap:var(--gap-panel);border:1px solid var(--line-accent);border-radius:var(--r-box);padding:var(--pad-notice);background:var(--surface-sunken)}
.tb-ptc>b{flex:1;min-width:0}
.tb-ptx:hover{color:var(--bad)}
.ty-pt{width:min(560px,calc(100vw - 32px))}
.ty-pt input[type=search]{width:100%}
.ty-ptl{display:flex;flex-direction:column;gap:var(--gap-cluster-sm);max-height:min(460px,55vh);overflow:auto}
.ty-ptl button{text-align:left;border:1px solid var(--line-chip);border-radius:var(--r-control);background:var(--surface-sunken);color:var(--ink-body);padding:9px 12px;font-weight:var(--fw-semibold);cursor:pointer}
.ty-ptl button:hover,.ty-ptl button.on{border-color:var(--line-brand)}
.ty-ptf{justify-content:space-between;align-items:center}
.ty-ptf b{color:var(--ink-accent)}
@media (max-width:560px){.ty-cp-hd,.ty-cp-mf,.ty-cp-id{padding-left:var(--pad-card);padding-right:var(--pad-card)}.ty-cp-bar{grid-template-columns:72px minmax(0,1fr) 56px}.tb-pte{flex-wrap:wrap}}
.tb-ptc .tb-szt{background:var(--fill-primary);color:var(--on-fill);border-radius:var(--r-badge-size);padding:var(--pad-badge-md);font-weight:var(--fw-bold);font-size:var(--fs-badge)}
.tb-paint h4{padding-right:4px}
/* v348 ventana para elegir pieza: columnas por tipo, comparadas con la equipada */
.ty-pk{width:min(1060px,calc(100vw - 32px))}
.ty-pk .ty-cd-h h3 small{font-size:var(--fs-caption)}
.ty-pk .tb-pkf{display:flex;gap:var(--gap-cluster);align-items:center;flex-wrap:wrap}
.ty-pk .tb-pkf input{flex:1;min-width:180px;background:var(--surface-field);color:var(--ink-body);border:1px solid var(--line-field);border-radius:var(--r-control);padding:var(--field-pad);font-size:var(--fs-control)}
.tb-pkl{margin:0;font-size:var(--fs-caption)}
.tb-pkt{display:flex;flex-direction:column;gap:var(--gap-tight-sm);max-height:min(560px,58vh);overflow:auto;--pkg:minmax(240px,1fr) repeat(var(--pkn),minmax(74px,auto)) 96px}
.tb-pkh,.tb-pkt>button{display:grid;grid-template-columns:var(--pkg);gap:var(--gap-panel);align-items:center;min-width:calc(240px + var(--pkn) * 84px + 106px)}
.tb-pkh{position:sticky;top:0;z-index:1;background:var(--surface-card);padding:var(--pad-chip);font-size:var(--fs-label);text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--ink-head);border-bottom:1px solid var(--line-row)}
.tb-pkh button{background:none;border:0;padding:0;color:inherit;font:inherit;letter-spacing:inherit;text-transform:inherit;cursor:pointer;white-space:nowrap}
.tb-pkh button:hover,.tb-pkh button.on{color:var(--ink-link)}
.tb-pkt>button{text-align:left;background:var(--surface-sunken);border:1px solid transparent;border-radius:var(--r-control);padding:8px 10px;color:var(--ink-body);cursor:pointer}
.tb-pkt>button:hover{border-color:var(--line-card);background:var(--surface-control)}
.tb-pkt>button.on{border-color:var(--line-brand);background:var(--surface-active)}
.tb-pkt>*{flex:none}/* UX-111: sin esto las filas se encogen a 24 px y se solapan */
.tb-pkt [hidden]{display:none!important}
.tb-pkn{display:flex;align-items:center;gap:var(--gap-panel);min-width:0}
.tb-pkn>span{display:flex;flex-wrap:wrap;align-items:center;gap:var(--gap-tight);min-width:0}
.tb-pkn>span>b{font-weight:var(--fw-bold)}
.tb-pkn small{flex-basis:100%;color:var(--ink-note);font-size:var(--fs-caption)}
.tb-pkn .tb-szt{flex:none}
.tb-skt.on{color:var(--ink-link);border-color:var(--line-brand)}
.tb-pkt .r{text-align:right;font-family:"Rajdhani",var(--f-display);font-size:var(--fs-title);font-weight:var(--fw-semibold);font-variant-numeric:tabular-nums;white-space:nowrap}
.tb-pkt .r.up{color:var(--good-strong)}
.tb-pkt .r.dn{color:var(--bad)}
.tb-pkt .r.faint{font-size:var(--fs-body);color:var(--ink-note)}
.tb-pkt .r small{font-size:var(--fs-caption)}
.tb-pkn .tb-szt{font-style:normal;background:var(--fill-primary);color:var(--on-fill);border-radius:var(--r-badge-size);padding:var(--pad-badge-md);font-weight:var(--fw-bold);font-size:var(--fs-badge);min-width:30px;text-align:center}
.tb-pkh{text-transform:none;font-size:var(--fs-caption);letter-spacing:0;font-weight:var(--fw-semibold)}
@media (max-width:560px){.tb-pkt{--pkg:minmax(170px,1fr) repeat(var(--pkn),minmax(64px,auto)) 84px}.tb-pkh,.tb-pkt>button{min-width:calc(170px + var(--pkn) * 74px + 94px)}}
/* v349 coste de los cambios: tienda por tienda con su lugar y la ruta de compra */
.tb-cm{margin-bottom:var(--stack-detail)}
.tb-ctot{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--gap-tight) var(--gap-panel);margin-bottom:var(--stack-detail)}
.tb-ctot>b{font-family:"Rajdhani",var(--f-display);font-size:28px;font-weight:var(--fw-bold);color:var(--ink-accent);line-height:var(--lh-100)}
.tb-ctot>small{color:var(--ink-note);font-size:var(--fs-caption)}
.tb-ctot>span{flex-basis:100%;font-size:var(--fs-note);color:var(--ink-secondary)}
.tb-shp{border:1px solid var(--line-card);border-radius:var(--r-card);overflow:hidden;margin-bottom:var(--stack-detail);background:var(--surface-sunken)}
.tb-shh{display:flex;align-items:center;gap:var(--gap-panel);padding:var(--pad-notice);background:var(--surface-card);border-bottom:1px solid var(--line-row)}
.tb-shh>span:nth-child(2){flex:1;min-width:0;display:flex;flex-direction:column}
.tb-shh small{font-size:var(--fs-caption);color:var(--ink-note)}
.tb-shi{flex:none;color:var(--ink-note);display:inline-grid;place-items:center;width:20px;font-weight:var(--fw-bold)}
.tb-sht2{font-family:"Rajdhani",var(--f-display);font-size:var(--fs-stat-md);white-space:nowrap}
.tb-sht2 small,.tb-shr>b small{font-family:var(--f-body,inherit);font-size:var(--fs-caption);color:var(--ink-note);font-weight:var(--fw-medium)}
.tb-shr{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;gap:var(--gap-panel);align-items:center;padding:9px 12px;border-top:1px dashed var(--line-row)}
.tb-shr:first-of-type{border-top:0}
.tb-shr .tb-szt{font-style:normal;background:var(--fill-primary);color:var(--on-fill);border-radius:var(--r-badge-size);padding:2px 6px;font-weight:var(--fw-bold);font-size:var(--fs-badge)}
.tb-shr>span{display:flex;flex-direction:column;min-width:0}
.tb-shr small{font-size:var(--fs-caption);color:var(--ink-note)}
.tb-shq{color:var(--ink-secondary);font-weight:var(--fw-bold)}
.tb-shr>b{font-family:"Rajdhani",var(--f-display);font-size:var(--fs-title);white-space:nowrap;text-align:right}
.tb-shn .tb-shh{color:var(--ink-secondary)}
.tb-route{border:1px solid var(--line-card);border-radius:var(--r-card);padding:var(--pad-notice);margin-bottom:var(--stack-item)}
.tb-route h5{margin:0 0 var(--stack-item);font-size:var(--fs-caption);color:var(--ink-secondary);font-weight:var(--fw-bold)}
.tb-route ol{margin:0;padding:0;list-style:none;counter-reset:rt;display:flex;flex-direction:column;gap:var(--gap-cluster-sm)}
.tb-route li{counter-increment:rt;display:flex;align-items:center;gap:var(--gap-cluster);font-size:var(--fs-body-sm)}
.tb-route li::before{content:counter(rt);flex:none;width:20px;height:20px;border-radius:var(--r-round);background:var(--surface-accent);color:var(--ink-accent);display:grid;place-items:center;font-size:var(--fs-caption);font-weight:var(--fw-bold)}
/* v351 compra editable: cantidad, quitar, tienda elegida a mano, copiar y vaciar */
.tb-shtip{margin:-4px 0 var(--stack-item);font-size:var(--fs-caption)}
.tb-shr{grid-template-columns:auto auto minmax(0,1fr) auto auto auto}
.tb-shn2{background:none;border:0;padding:0;color:var(--ink-body);font:inherit;font-weight:var(--fw-bold);text-align:left;cursor:pointer;display:inline-flex;align-items:center;gap:var(--gap-cluster-sm)}
.tb-shn2:hover{color:var(--ink-link)}
.tb-shn2 i{font-style:normal;color:var(--ink-label);font-size:var(--fs-caption)}
.tb-qty{display:inline-flex;align-items:center;border:1px solid var(--line-card);border-radius:var(--r-2);overflow:hidden}
.tb-qty button{width:28px;height:var(--ctl-h-sm);border:0;background:transparent;color:var(--ink-secondary);font-size:var(--fs-icon);cursor:pointer}
.tb-qty button:hover:not(:disabled){background:var(--surface-control);color:var(--ink-link)}
.tb-qty button:disabled{opacity:var(--op-disabled);cursor:default}
.tb-qty b{min-width:26px;text-align:center;font-family:"Rajdhani",var(--f-display);font-size:var(--fs-title)}
.tb-shx{background:none;border:0;color:var(--ink-note);font-size:15px;cursor:pointer;padding:4px}
.tb-shx:hover{color:var(--bad)}
.tb-sha{display:flex;flex-direction:column;gap:var(--gap-tight);padding:6px 12px 10px 46px;background:var(--surface-card)}
.tb-sha button{display:flex;justify-content:space-between;align-items:center;gap:var(--gap-panel);text-align:left;border:1px solid var(--line-chip);border-radius:var(--r-control);background:var(--surface-sunken);color:var(--ink-body);padding:7px 10px;cursor:pointer}
.tb-sha button:hover,.tb-sha button.on{border-color:var(--line-brand)}
.tb-sha button>span{display:flex;flex-direction:column;min-width:0}
.tb-sha small{font-size:var(--fs-caption);color:var(--ink-note)}
.tb-sha button>b{font-family:"Rajdhani",var(--f-display);font-size:var(--fs-title);white-space:nowrap}
.tb-shout{display:flex;flex-wrap:wrap;align-items:center;gap:var(--gap-cluster-sm);margin-bottom:var(--stack-detail);font-size:var(--fs-note);color:var(--ink-note)}
.tb-shout .tb-chip{cursor:pointer;border:1px dashed var(--line-card);background:transparent;color:var(--ink-secondary)}
.tb-cbt{display:flex;flex-wrap:wrap;gap:var(--gap-cluster);margin:var(--stack-tight) 0 var(--stack-item)}
.tb-cbt .btn.danger{border-color:var(--bad);color:var(--bad);background:var(--bad-soft)}
@media (max-width:560px){.tb-shr{grid-template-columns:auto auto minmax(0,1fr) auto;row-gap:var(--gap-cluster-sm)}.tb-shr>b{grid-column:3}.tb-sha{padding-left:12px}}
.tb-shr>.tb-qty{display:inline-flex;flex-direction:row}
.tb-cbt{justify-content:flex-start}
.tb-cbt .btn{flex:none;margin:0}
/* owner 2026-11-10: «Coste de los cambios» in the right column (summary) and its breakdown window: one checklist row per part */
.tb-cdlg{width:min(860px,calc(100vw - 32px))}
.tb-cdlg .tb-shr>input{width:18px;height:18px;margin:0}
.tb-shok>span :is(b,button){text-decoration:line-through;opacity:var(--op-past)}
.tb-shok>b{opacity:var(--op-past)}
.tb-stats [data-bx="cost"] .tb-route{margin:var(--stack-tight) 0}
.tb-stats [data-bx="cost"] .tb-cbt .btn{white-space:normal;text-align:left}
.tb-sha{max-height:340px;overflow:auto}
/* v352 the blade selector stays centred in the Vuelo title whatever buttons sit on the right */
.tb-flh.ly-t{display:grid;grid-template-columns:minmax(max-content,1fr) auto minmax(max-content,1fr);padding-right:0}
.tb-blc{display:inline-flex;align-items:center;gap:var(--gap-cluster)}
.tb-blc>.tb-bll,.tb-flh.ly-t .tb-blc>.tb-bll{margin-left:0}
.tb-flr{display:inline-flex;align-items:center;gap:var(--gap-cluster);justify-self:end;margin-right:32px}
/* owner 2026-11-10: in the breakdown each part shows its shop as a dropdown (like the part picker); open, every place with its price */
.tb-shsel{display:flex;align-items:center;justify-content:space-between;gap:var(--gap-cluster-sm);width:100%;max-width:420px;margin-top:var(--space-1);padding:var(--pad-select);text-align:left;font:inherit;color:var(--ink-body);background:var(--surface-sunken);border:1px solid var(--line-chip);border-radius:var(--r-control);cursor:pointer}
.tb-shsel:hover,.tb-shsel[aria-expanded="true"]{border-color:var(--line-brand)}
.tb-shsel>span{display:flex;flex-direction:column;min-width:0}
.tb-shsel>span>b{font-size:var(--fs-body-sm);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tb-shsel>i{font-style:normal;color:var(--ink-note)}
.tb-sha button[aria-current]{background:var(--surface-active)}
.tb-shnow{font-style:normal;font-size:var(--fs-caption);font-weight:var(--fw-semibold);color:var(--ink-link);margin-left:var(--gap-tight)}
/* the shop list of the breakdown keeps each option whole (the list scrolls instead of squeezing them) */
.tb-sha>button{flex-shrink:0}
/* owner 2026-11-10: the delete confirmation of a saved setup, under its name field */
.tb-acts2 .tb-dconf{align-items:center;margin:var(--stack-tight) 0 0;font-size:var(--fs-body-sm);color:var(--ink-body)}
.tb-acts2 .tb-dconf>span{flex:1 1 100%}

/* Objetos: lista de la compra, Buscador de objetos (.ob-) y objetos del Universo Persistente añadidos a mano */
/* v315 lista de la compra */
.ty-stop{border-top:1px solid var(--line-row);padding:var(--pad-row);display:flex;flex-direction:column;gap:var(--gap-stack)}
.ty-stop:first-of-type{border-top:0}
.ty-cl{display:grid;grid-template-columns:minmax(0,1fr) 72px auto;gap:var(--gap-cluster);align-items:center;padding:5px 0;border-top:1px solid var(--line-row)}
.ty-cl:first-of-type{border-top:0}
.ty-cl small{display:block;color:var(--ink-note);font-size:var(--fs-caption)}
.ty-cl .ty-in{width:64px}
/* owner 2026-10-31: objetos del Universo Persistente añadidos a mano */
.ty-tag.pu{border-color:var(--brand-strong);color:var(--brand-strong);background:var(--surface-card)}
.ty-puadd{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);margin:0 0 var(--gap-panel);padding:var(--gap-panel);border:1px solid var(--line-card);border-radius:var(--r-card);background:var(--surface-card)}
.ty-puadd .ty-pu-h{flex:1 0 100%;font-weight:var(--fw-semibold);font-size:var(--fs-body-sm)}
.ty-puadd input{flex:1 1 200px;min-width:0}
.ty-puadd select{flex:0 1 auto;max-width:100%}
/* #290: the label above and the field across the card, so a place such as «Stanton Gateway (Pyro)» is not cut */
.ty-puloc{display:flex;flex-direction:column;align-items:stretch;gap:var(--gap-icon)}
.ty-puloc input{width:100%;min-width:0}
.ty-locv{overflow-wrap:anywhere}
.ty-locv b{font-weight:inherit;color:var(--ink-body)}
/* owner 2026-10-31: Buscador de objetos — coincidencias al escribir, categorías agrupadas, ficha, favoritos y objetos por lugar */
.ob-combo{position:relative;margin:0 0 var(--gap-panel)}
.ob-combo input{width:100%;min-height:40px;font-size:var(--fs-body)}
.ob-sug{position:absolute;left:0;right:0;top:100%;z-index:var(--z-dropdown);list-style:none;margin:var(--space-1) 0 0;padding:var(--space-1);max-height:380px;overflow:auto;background:var(--surface-card);border:1px solid var(--line-card);border-radius:var(--r-card);box-shadow:var(--shadow)}
.ob-sug li{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-3);padding:var(--space-2) var(--gap-panel);min-height:24px;border-radius:var(--r-chip);cursor:pointer}
.ob-sug li small{color:var(--ink-secondary);font-size:var(--fs-caption);white-space:nowrap}
.ob-sug li:hover,.ob-sug li[aria-selected="true"]{background:var(--surface-active)}
.ob-dh{display:flex;flex-wrap:wrap;align-items:center;gap:var(--gap-panel)}
.ob-dn{margin:var(--space-2) 0 var(--space-1)}
.ob-dact{display:flex;flex-wrap:wrap;gap:var(--space-2);margin:0 0 var(--gap-panel)}
.ob-dimg img,.ob-noimg{display:flex;align-items:center;justify-content:center;width:100%;aspect-ratio:16/9;object-fit:contain;border-radius:var(--r-card);background:var(--surface-card);border:1px solid var(--line-card);color:var(--ink-secondary)}
.ob-det .ty-panel{margin:0 0 var(--space-3)}
.ob-desc{white-space:pre-line;line-height:var(--lh-150);margin:0}
.ob-list{list-style:none;margin:0;padding:0;display:grid;gap:var(--gap-icon)}
.ob-list li{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1) var(--gap-panel)}
.ob-fav li{padding:var(--space-2) 0;border-bottom:1px solid var(--line-card)}
.ob-fav li .btn{margin-left:auto}
.ob-place select{max-width:100%}
.ob-shop{margin:0 0 var(--space-3)}
.ob-det .ty-kv{grid-template-columns:minmax(0,1fr) auto}
.ob-det .ty-panel h4{margin:0 0 var(--space-2)}
.ob-shop summary{cursor:pointer;min-height:24px;display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-1) var(--gap-panel)}
.ob-shop[open] summary{margin:0 0 var(--space-2)}
.ob-sug:focus{outline:none}
.ob-hero{text-align:center;padding:var(--space-4) var(--gap-panel);margin:0 0 var(--space-3);background:var(--surface-card);border:1px solid var(--line-card);border-radius:var(--r-card)}
.ob-hero h3{margin:0;font-size:var(--fs-heading);letter-spacing:var(--tracking-label);text-transform:uppercase}
.ob-hero p{margin:var(--space-1) 0 var(--space-3);color:var(--ink-secondary);font-size:var(--fs-body-sm)}
.ob-hero .ob-combo{max-width:960px;margin:0 auto}
.ob-hero .ob-combo input{text-align:center}
.ob-sug li{text-align:left}
.ob-sug li.off span{color:var(--bad)}
@media (pointer:coarse){.ob-sug li[role=option]{min-height:44px;align-items:center}} /* #454 same target size as the Minería lists */
.ob-secs{text-align:center;padding:var(--space-3) var(--gap-panel);background:var(--surface-card);border:1px solid var(--line-card);border-radius:var(--r-card)}
.ob-sech{margin:0 0 var(--space-3);font-size:var(--fs-title);letter-spacing:var(--tracking-label);text-transform:uppercase}
.ob-sec{margin:0 0 var(--space-3)}
.ob-sec h4{margin:0 0 var(--space-2);font-size:var(--fs-body-sm);text-transform:uppercase;letter-spacing:var(--tracking-label)}
.ob-sec .ty-sub{justify-content:center}
.ob-lh{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-1) var(--gap-panel);margin:0 0 var(--space-2)}
.ob-lh h3{margin:0;font-size:var(--fs-title)}
.ob-dtop{text-align:center}
.ob-dtop .ob-dh{justify-content:space-between}
.ob-dk{margin:var(--space-2) 0 0;color:var(--ink-secondary);font-size:var(--fs-label);text-transform:uppercase;letter-spacing:var(--tracking-label)}
.ob-dcols{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--space-3);align-items:start}
@media (max-width:900px){.ob-dcols{grid-template-columns:minmax(0,1fr)}}
.ob-dimg img{display:block;width:100%;aspect-ratio:16/9;object-fit:contain}
.ob-loc td:first-child{min-width:220px}
.ob-sim{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:var(--space-2)}
.ob-sim .btn{justify-content:center;text-align:center;white-space:normal}
.ob-sim .btn.off{color:var(--bad);border-color:var(--bad)}
.ty-puadd .ty-pu-combo{flex:1 1 200px;min-width:0;margin:0}
.ty-pu-combo input{width:100%;min-height:0;font-size:inherit}
.ty-card .ty-tag.dim{opacity:var(--op-dim)}
.ty-tag.bb{border-color:var(--bb-soft);color:var(--bb-ink);background:var(--bb-soft)}
/* owner 2026-11-01: universal finder: centred search with the match list under it, categories in sections, two-column item sheet */
/* owner 2026-11-01: the symmetric Buscador with the site's touches: teal accent line and kicker headings, status tags and the price under the name */
.ob-hero,.ob-dtop{border-top:3px solid var(--brand-strong)}
.ob-hero h3,.ob-dtop .ob-dn{font-size:var(--fs-heading-lg)}
.ob-hero h3{text-transform:none;letter-spacing:normal}
.ob-sech,.ob-sec h4,.ob-det .ty-panel h4{font-family:var(--f-display);font-size:var(--fs-label);text-transform:uppercase;letter-spacing:var(--tracking-kicker);color:var(--ink-link)}
.ob-sec h4::after{content:"";display:block;width:32px;height:2px;margin:var(--space-1) auto 0;background:var(--line-card)}
.ob-dk{color:var(--ink-link)}
.ob-dsum{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-1);margin:var(--space-2) 0 0}
.ob-dsum .ty-tag{margin:0}
.ob-dpr{margin:var(--space-2) 0 0;color:var(--ink-secondary)}
.ob-dpr b{font-family:var(--f-display);font-size:var(--fs-figure-lg);color:var(--good-strong);font-variant-numeric:tabular-nums}
.ob-sim .btn{flex-direction:column;gap:var(--space-1);padding-top:var(--space-2);padding-bottom:var(--space-2)}
.ob-sim .btn small{display:block;width:100%;margin-top:var(--space-1);font-weight:var(--fw-regular);font-size:var(--fs-caption);color:var(--ink-secondary);font-variant-numeric:tabular-nums}
/* owner 2026-11-01: the search field lights up with a single line */
.ty-wrap .ob-combo input:is(:focus,:focus-visible){outline:none;box-shadow:none;border-color:var(--brand-strong)}
/* owner 2026-11-01: the Buscador categories look like the site buttons (.btn.sm), as in Wikelo */
.ob-sec .ty-sub button{border:1px solid var(--line-chip);background:var(--surface-control);border-radius:var(--r-control);padding:var(--pad-control-xs);font-size:var(--fs-control-sm);font-weight:var(--fw-medium);color:var(--ink-body);box-shadow:var(--shadow-raise);transition:border-color var(--dur-2),background var(--dur-2)}
.ob-sec .ty-sub button:hover{border-color:var(--line-brand);background:var(--surface-hover)}

/* Wikelo (.wk-): seguimiento de proyectos */
/* Wikelo: seguimiento de proyectos (petición del propietario 2026-10-31) */
.wk-follow{margin-bottom:var(--gap-panel)}
.wk-fl{list-style:none;margin:var(--space-2) 0 0;padding:0;display:grid;gap:var(--space-2);grid-template-columns:repeat(auto-fill,minmax(min(100%,420px),1fr))}
.wk-fl li{display:grid;grid-template-columns:96px 1fr;gap:var(--gap-icon) var(--gap-panel);align-items:center;padding:var(--space-2);border:1px solid var(--line-card);border-radius:var(--r-card);background:var(--surface-sunken)}
.wk-th{display:block;width:96px;aspect-ratio:16/9;object-fit:cover;border-radius:var(--r-swatch);background:var(--surface-card);grid-row:span 2}
.wk-fm{min-width:0;display:grid;gap:var(--gap-tight-sm)}
.wk-fm b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wk-fa{display:flex;gap:var(--gap-icon);flex-wrap:wrap}
.wk-fv{margin:var(--space-3) 0 var(--space-2)}
.wk-pp{display:flex;flex-wrap:wrap;gap:var(--space-1)}
.wk-pc{display:inline-flex;align-items:center;gap:var(--gap-icon);min-height:24px;padding:var(--stack-micro) var(--space-2);border:1px solid var(--line-card);border-radius:var(--r-pill);background:var(--surface-card);color:inherit;font:inherit;font-size:var(--fs-note);cursor:pointer}
.wk-pc i{font-style:normal;color:var(--ink-secondary);font-weight:var(--fw-bold)}
.wk-pc[aria-pressed=true]{background:var(--good-soft);border-color:var(--good-strong)}
.wk-pc[aria-pressed=true] i{color:var(--good-strong)}
.wk-pc:hover,.wk-pc:focus-visible{border-color:var(--good-strong)}
.wk-done{display:grid;gap:var(--gap-panel);grid-template-columns:repeat(auto-fill,minmax(min(100%,360px),1fr))}
.wk-dp{padding:var(--space-2);border:1px solid var(--line-card);border-radius:var(--r-card);background:var(--surface-sunken)}
.wk-dp h4{margin:0 0 var(--gap-icon)}
@media (pointer:coarse){.wk-pc{min-height:44px}}
.wk-fl .ty-bar2{background:var(--surface-card)}
.wk-dp .ty-req{grid-template-columns:minmax(0,1fr) auto}

/* Hangares ejecutivos (.ex-): luces, cuenta atrás, ciclos y próximas aperturas */
/* v369 fracture progress fills the window from right to left, as in the game */
/* v374 executive hangars: lights, countdown, cycle figures, upcoming windows and the reward pool */
.ex-main{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--gap-block-md);min-width:0}
.ex-head{display:flex;justify-content:space-between;align-items:baseline;gap:var(--gap-panel);flex-wrap:wrap}
.ex-head h3,.ex-pool h3{margin:0;font-size:var(--fs-label-lg);text-transform:uppercase;letter-spacing:var(--tracking-kicker);color:var(--ink-link)}
.ex-st{font-size:var(--fs-body-sm);font-weight:var(--fw-semibold);color:var(--ink-secondary)}
.ex-lights{display:grid;grid-template-columns:repeat(5,1fr);gap:var(--gap-cluster);margin:var(--stack-section) 0 var(--stack-detail)}
.ex-lights i{height:26px;border-radius:var(--r-control);border:1px solid var(--line-card);background:var(--surface-sunken);display:block}
.ex-lights i.g{background:var(--good);border-color:var(--good);box-shadow:0 0 12px var(--good)}
.ex-lights i.r{background:var(--bad);border-color:var(--bad);opacity:.8}
.ex-src{border-top:1px solid var(--line-row);margin-top:var(--stack-detail);padding-top:var(--pad-rule);display:flex;flex-wrap:wrap;gap:var(--gap-tight) var(--gap-cluster);align-items:center}
.ex-count{text-align:center;padding:20px 12px}
.ex-count.closed{border-color:var(--bad);background:linear-gradient(var(--bad-soft),transparent 70%),var(--surface-card)}
.ex-count.open{border-color:var(--good);background:linear-gradient(var(--good-soft),transparent 70%),var(--surface-card)}
.ex-count.reset{border-color:var(--warn);background:linear-gradient(var(--warn-soft),transparent 70%),var(--surface-card)}
.ex-state{font-family:var(--f-display);font-size:var(--fs-display);font-weight:var(--fw-bold);letter-spacing:.18em;text-transform:uppercase}
.ex-time{font-family:var(--f-display);font-size:56px;font-weight:var(--fw-bold);line-height:var(--lh-105);font-variant-numeric:tabular-nums}
.ex-count.closed .ex-state,.ex-count.closed .ex-time{color:var(--bad)}
.ex-count.open .ex-state,.ex-count.open .ex-time{color:var(--good-strong)}
.ex-count.reset .ex-state,.ex-count.reset .ex-time{color:var(--warn-strong)}
.ex-sub{margin:var(--stack-detail-sm) 0 var(--stack-tight);color:var(--ink-secondary)}
.ex-sub b{color:var(--ink-body)}
.ex-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--gap-panel)}
.ex-stats .ty-panel{text-align:center;padding:10px 6px}
.ex-stats span{display:block;font-size:var(--fs-label);text-transform:uppercase;letter-spacing:var(--tracking-kicker);color:var(--ink-label)}
.ex-stats b{font-size:var(--fs-stat-md);font-variant-numeric:tabular-nums}
@media (max-width:520px){.ex-stats{grid-template-columns:repeat(2,1fr)}.ex-time{font-size:var(--fs-hero-sm)}.ex-state{font-size:var(--fs-stat-xl)}}
.ex-win{width:100%;border-collapse:collapse;font-size:var(--fs-cell);font-variant-numeric:tabular-nums}
.ex-win th{text-align:left;font-size:var(--fs-label);font-weight:var(--fw-semibold);text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--ink-head);padding:var(--pad-head);border-bottom:1px solid var(--line-row)}
.ex-win td{padding:var(--pad-cell);border-bottom:1px solid var(--line-row)}
.ex-win td:first-child,.ex-win th:first-child{width:14px}
.ex-win td i{display:block;width:7px;height:7px;border-radius:var(--r-round);background:var(--fill-muted)}
.ex-win tr.now td{color:var(--good-strong);font-weight:var(--fw-semibold)}
.ex-win tr.now td i{background:var(--good);box-shadow:0 0 6px var(--good)}
.ex-sync{margin-top:var(--stack-detail)}
.ex-pool .ty-note{margin:var(--stack-micro) 0 var(--stack-item)}
.ex-rw{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--gap-tight) var(--gap-panel);padding:var(--pad-row-md);border-bottom:1px solid var(--line-row);font-size:var(--fs-body-sm);color:var(--ink-secondary)}
.ex-rw:last-child{border-bottom:0}
.ex-rw b{font-variant-numeric:tabular-nums}
.ex-rw .ty-meter{grid-column:1/-1;height:5px}
.ex-rw:not(.hi) .ty-meter>span{opacity:.5}
.ex-rw.hi{color:var(--ink-body)}
.ex-rw.hi b{color:var(--ink-link)}
/* owner 2026-11-01: PYAM-Exec in three columns: rewards | lights, countdown and phase lengths | next openings */
.ex3c{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.35fr) minmax(0,1fr);grid-template-areas:"pool main next";gap:var(--gap-block-md);align-items:start}
.ex3c>.ex-pool{grid-area:pool}
.ex3c>.ex-main{grid-area:main}
.ex3c>.ex-nextp{grid-area:next}
.ex-nextp h3{margin:0 0 var(--stack-item);font-size:var(--fs-label);text-transform:uppercase;letter-spacing:var(--tracking-kicker);color:var(--ink-link)}
@media (max-width:1180px){.ex3c{grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-areas:"main main" "pool next"}}
@media (max-width:720px){.ex3c{grid-template-columns:minmax(0,1fr);grid-template-areas:"main" "next" "pool"}}
/* #251 executive hangars: the state box lit from two corners in two greens (open), two reds (closed) or two ambers (alarm) */
.ex-count{--ex-a:var(--good);--ex-b:color-mix(in srgb,var(--good) 55%,var(--brand));position:relative;
  background:radial-gradient(circle at 0 0,color-mix(in srgb,var(--ex-a) 22%,transparent),transparent 45%),radial-gradient(circle at 100% 100%,color-mix(in srgb,var(--ex-b) 20%,transparent),transparent 45%),var(--surface-card);
  border-color:color-mix(in srgb,var(--ex-a) 60%,var(--ex-b));--ex-glow:0 0 18px color-mix(in srgb,var(--ex-a) 18%,transparent),0 0 40px color-mix(in srgb,var(--ex-b) 10%,transparent);box-shadow:var(--ex-glow)}
.ex-count.open{--ex-a:var(--good);--ex-b:color-mix(in srgb,var(--good) 55%,var(--brand))}
.ex-count.closed{--ex-a:var(--bad);--ex-b:color-mix(in srgb,var(--bad) 60%,var(--ochre-strong))}
.ex-count.reset{--ex-a:var(--warn);--ex-b:color-mix(in srgb,var(--warn) 60%,var(--bad))}
.ex-count.open,.ex-count.closed,.ex-count.reset{background:radial-gradient(circle at 0 0,color-mix(in srgb,var(--ex-a) 22%,transparent),transparent 45%),radial-gradient(circle at 100% 100%,color-mix(in srgb,var(--ex-b) 20%,transparent),transparent 45%),var(--surface-card);border-color:color-mix(in srgb,var(--ex-a) 60%,var(--ex-b))}
/* #251 the hangar lights like the game's: a dark housing with a short, bright lamp and its bloom (the pipe lights) */
.ex-lights i{position:relative;height:26px;border-radius:var(--r-control);border:1px solid var(--line-card);background:color-mix(in srgb,var(--glow-dark) 85%,var(--surface-sunken));opacity:unset;box-shadow:none}
.ex-lights i::after{content:"";position:absolute;left:50%;top:50%;width:34%;height:7px;transform:translate(-50%,-50%);border-radius:var(--r-micro);background:color-mix(in srgb,var(--ink-3) 30%,transparent)}
.ex-lights i.g,.ex-lights i.r{border-color:var(--line-card);background:color-mix(in srgb,var(--glow-dark) 85%,var(--surface-sunken));box-shadow:none;opacity:unset}
.ex-lights i.g{--lamp:var(--good)}
.ex-lights i.r{--lamp:var(--bad)}
.ex-lights i:is(.g,.r)::after{--lamp-glow:0 0 4px var(--lamp),0 0 12px var(--lamp),0 0 26px color-mix(in srgb,var(--lamp) 55%,transparent);background:color-mix(in srgb,var(--lamp) 55%,var(--ink-on-glow));box-shadow:var(--lamp-glow)}

/* Herramientas: controles compartidos (campos de texto y listas, segmentos y subpestañas #173, relleno turquesa #251, botones encendidos) con algunos retoques suyos por vista (Inicio, Configurador, Misiones, Minería, Comercio, Wikelo y Buscador) que deben ir tras ellos. Su sitio en la cascada: orden.txt */
/* v364 every text box and list in the tool pages and their windows in the site's dark style (they showed the browser's grey) */
.ty-wrap :where(input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]),select,textarea),dialog.ty-cd :where(input:not([type=checkbox]):not([type=radio]):not([type=range]),select,textarea){background:var(--surface-field);color:var(--ink-body);border:1px solid var(--line-field);border-radius:var(--r-control);padding:var(--field-pad);min-height:32px;box-sizing:border-box;font-size:var(--fs-control)}
.ty-wrap :is(input,select,textarea):focus-visible,dialog.ty-cd :is(input,select,textarea):focus-visible{outline:none;border-color:var(--focus);box-shadow:var(--focus-field)}
.ty-wrap ::placeholder,dialog.ty-cd ::placeholder{color:var(--ink-note);opacity:1}
.ty-wrap select option,dialog.ty-cd select option{background:var(--surface-control);color:var(--ink-body)}
/* UX-035: a number outside what the field accepts is marked once the user leaves it */
.ty-bar input[type=number]:user-invalid,.tr-form input:user-invalid,.ms-lb input[type=number]:user-invalid{border-color:var(--bad)}
/* the same lit yellow tube as the configurator quality rail (.tb-cv .tb-crb, #363); also «Recogida» of a finished refinery order and «Volver» of the Buscador sheet */
/* wide buttons: the lit band runs along their length (gradient top to bottom); the configurator rail is upright, so its band is vertical */
.msim-back,.rt-got-on,.ob-back{--tube:var(--tube-lit);color:var(--glow-dark);font-weight:var(--fw-bold);border-color:color-mix(in srgb,var(--tube) 70%,transparent);
  background:linear-gradient(180deg,color-mix(in srgb,var(--tube) 55%,transparent) 0,var(--tube) 35%,color-mix(in srgb,var(--tube) 60%,var(--ink-on-glow)) 50%,var(--tube) 65%,color-mix(in srgb,var(--tube) 55%,transparent) 100%);
  box-shadow:var(--glow-tube)}
.msim-back:hover,.rt-got-on:hover,.ob-back:hover{color:var(--glow-dark);border-color:var(--tube);background:var(--tube);box-shadow:var(--glow-tube-hover)}
/* owner 2026-11-01: Wikelo's follow/complete buttons and the Buscador categories in the format of Minería's «Más datos» and «Comparar»:
   same width side by side, text centred, with the button shadow */
.wk-fa .btn,.wk-act .btn{flex:1;justify-content:center;text-align:center}
.ob-sec .ty-sub button{min-width:150px;text-align:center}
/* owner 2026-11-01: they light up in the brand turquoise like Minería's «Comparar», not in the blue of the other buttons */
.wk-fa .btn:hover,.wk-act .btn:hover,.ob-sec .ty-sub button:hover{border-color:var(--line-brand)}
.wk-act .btn.on{background:var(--surface-active);border-color:var(--line-brand);color:var(--ink-body)}
/* #251: the tools' turquoise fills in the two-tone lit look (tokens in base.css) */
.tb-chip,.tb-tags>i.tb-szt,.tb-szg>i.tb-szt,.tb-ptc .tb-szt,.tb-pkn .tb-szt,.tb-shr .tb-szt,.tb-pfs button.on,.tb-bls button.on,.tb-key.a{background:var(--fill-duo);border-color:var(--line-duo);box-shadow:var(--glow-duo-sm)}
.tb-qb.hi{background:var(--fill-duo);border-color:var(--line-duo);box-shadow:var(--glow-duo)}
.ty-meter>span,.tb-rg>span,.tb-ppb i.on,.tb-tub i.on,.ty-cp-bar em,.tb-cbar i.me,.tb-cbar i.ot,.tb-cbar i.c0,.tb-cbar i.c1,.tb-cbar i.c2,.tb-colg i.g1{background:var(--fill-duo);box-shadow:var(--glow-duo-sm)}
.tb-bar,.tb-bar.gen,.tb-tv.b{fill:url(#sy-duo);filter:var(--glow-duo-svg)}
/* #173 (owner 2026-11-03, ADR 0046): one active look for every segmented control and sub-tab. Segments (one value out of a joined
   group: language, cards/table, SCM/NAV, fixed/gimbal, the advisor's currency, the account tabs…) fill the chosen one with the
   two-tone lit fill, like the configurator's STD; sub-tabs keep the tab shape (same 39 px everywhere, the Planner's included) and
   light their underline with the same fill. The main view bar keeps its own underline */
:is(.seg,.tb-seg,.mn-seg,.mn-lang,.ty-sub:not(.ty-ptabs),.tb-bls,.tb-pfs,.acc-tabs)>button:is([aria-pressed="true"],[aria-selected="true"],.on){background:var(--fill-duo);color:var(--on-fill);font-weight:var(--fw-semibold);border-color:var(--line-duo);box-shadow:var(--glow-duo-sm)}
:is(.seg,.tb-seg,.mn-seg,.mn-lang,.ty-sub:not(.ty-ptabs),.tb-bls,.tb-pfs,.acc-tabs)>button:is([aria-pressed="true"],[aria-selected="true"],.on):hover{color:var(--on-fill);filter:brightness(1.08)}
:is(.tabs,.ty-cd-tabs,.ty-sub.ty-ptabs,.c-tabs--ptabs)>button{min-height:39px;box-sizing:border-box}
:is(.tabs,.ty-cd-tabs,.ty-sub.ty-ptabs,.c-tabs--ptabs)>button:is([aria-pressed="true"],[aria-selected="true"]){color:var(--ink-body);border-bottom-color:transparent;background:var(--fill-duo) left bottom/100% 2px no-repeat;font-weight:var(--fw-semibold)}
/* #181: a card without picture shows a picture mark in a low box instead of an empty 16:9 grey box */
.ty-card span.ty-img{aspect-ratio:4/1;display:grid;place-items:center;color:var(--ink-note)}
.ty-card span.ty-img::before{content:"";width:28px;height:28px;background:currentColor;opacity:var(--op-seg-mid);-webkit-mask:var(--ico-noimg) center/contain no-repeat;mask:var(--ico-noimg) center/contain no-repeat}
:root{--ico-noimg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='16' rx='2'/%3E%3Ccircle cx='9' cy='10' r='2'/%3E%3Cpath d='M21 16l-5-5-9 9'/%3E%3Cpath d='M3 3l18 18'/%3E%3C/svg%3E")}
/* owner 2026-11-08: the sections of each tool (Hangar, Equipación, Configurador, Misiones, Minería, Objetos) are centred buttons like
   the Buscador categories, a little larger and in the nav's display font; the chosen one lit with the site's duo fill */
:is(.c-tabs--ptabs,.ty-invtop>.ty-ptabs,.ms-tabs){display:flex;flex-wrap:wrap;justify-content:center;gap:var(--gap-cluster-sm);border-bottom:0;overflow:visible;
  -webkit-mask-image:none;mask-image:none;padding:var(--gap-tight) 0;margin-inline:auto}
:is(.c-tabs--ptabs,.ty-invtop>.ty-ptabs,.ms-tabs)>button{flex:none;min-height:38px;min-width:0;padding:var(--gap-icon) calc(var(--space-4) + var(--gap-stack));box-sizing:border-box;font-family:var(--f-display);font-size:var(--fs-body-md);
  font-weight:var(--fw-semibold);color:var(--ink-secondary);background:var(--surface-control);border:1px solid var(--line-chip);border-radius:var(--r-control);cursor:pointer}
:is(.c-tabs--ptabs,.ty-invtop>.ty-ptabs,.ms-tabs)>button:hover{color:var(--ink-body);background:var(--surface-active);border-color:var(--line-brand)}
:is(.c-tabs--ptabs,.ty-invtop>.ty-ptabs,.ms-tabs)>button:is([aria-selected="true"],[aria-pressed="true"]){background:var(--fill-duo);color:var(--on-fill);border-color:var(--line-duo);box-shadow:var(--glow-duo-sm)}
:is(.c-tabs--ptabs,.ty-invtop>.ty-ptabs,.ms-tabs)>button:is([aria-selected="true"],[aria-pressed="true"]):hover{color:var(--on-fill);filter:brightness(1.08)}
:is(.c-tabs--ptabs,.ty-invtop>.ty-ptabs,.ms-tabs)>button:is([aria-selected="true"],[aria-pressed="true"]) :is(.c-tabs__n,.ty-n){color:inherit;opacity:var(--op-past)}
@media (pointer:coarse){:is(.c-tabs--ptabs,.ty-invtop>.ty-ptabs,.ms-tabs)>button{min-height:44px}}
/* owner 2026-11-10: in the light theme the blue-green duo fill was too loud: translucent everywhere, no glow, and its text goes dark (contrast) */
:root[data-theme="light"]{--fill-duo:linear-gradient(110deg,color-mix(in srgb,var(--duo-a) 32%,transparent) 15%,color-mix(in srgb,var(--duo-b) 32%,transparent));--line-duo:color-mix(in srgb,var(--duo-a) 50%,transparent);--glow-duo:none;--glow-duo-sm:none}
@media not (prefers-color-scheme:dark){:root:not([data-theme="dark"]){--fill-duo:linear-gradient(110deg,color-mix(in srgb,var(--duo-a) 32%,transparent) 15%,color-mix(in srgb,var(--duo-b) 32%,transparent));--line-duo:color-mix(in srgb,var(--duo-a) 50%,transparent);--glow-duo:none;--glow-duo-sm:none}}
:root[data-theme="light"] :is(.btn.brand,.bm-btn,.btn.acc-main,.btn.fb-send,.btn.ref-go,:is(#view-builds,#view-missions,#view-mine,#view-trade,#ty-comp,#ty-craft,#ty-paint) .btn.primary,.role-n,.more-ico,.tb-chip:not(.tb-shout .tb-chip),.tb-tags>i.tb-szt,.tb-szg>i.tb-szt,.tb-ptc .tb-szt,.tb-pkn .tb-szt,.tb-shr .tb-szt,.tb-pfs button.on,.tb-bls button.on,.tb-key.a,.tb-qb.hi,.tb-qb.hi :is(b,span,small,i),.hm-cta,.hm-open:hover,header .btn.hdr-btn.hdr-import,header .btn.hdr-btn.hdr-import *,:is(.seg,.tb-seg,.mn-seg,.mn-lang,.ty-sub:not(.ty-ptabs),.tb-bls,.tb-pfs,.acc-tabs)>button:is([aria-pressed="true"],[aria-selected="true"],.on),:is(.c-tabs--ptabs,.ty-invtop>.ty-ptabs,.ms-tabs)>button:is([aria-selected="true"],[aria-pressed="true"]),:is(.c-tabs--ptabs,.ty-invtop>.ty-ptabs,.ms-tabs)>button:is([aria-selected="true"],[aria-pressed="true"]) :is(.c-tabs__n,.ty-n)){color:var(--ink-body)}
@media not (prefers-color-scheme:dark){:root:not([data-theme="dark"]) :is(.btn.brand,.bm-btn,.btn.acc-main,.btn.fb-send,.btn.ref-go,:is(#view-builds,#view-missions,#view-mine,#view-trade,#ty-comp,#ty-craft,#ty-paint) .btn.primary,.role-n,.more-ico,.tb-chip:not(.tb-shout .tb-chip),.tb-tags>i.tb-szt,.tb-szg>i.tb-szt,.tb-ptc .tb-szt,.tb-pkn .tb-szt,.tb-shr .tb-szt,.tb-pfs button.on,.tb-bls button.on,.tb-key.a,.tb-qb.hi,.tb-qb.hi :is(b,span,small,i),.hm-cta,.hm-open:hover,header .btn.hdr-btn.hdr-import,header .btn.hdr-btn.hdr-import *,:is(.seg,.tb-seg,.mn-seg,.mn-lang,.ty-sub:not(.ty-ptabs),.tb-bls,.tb-pfs,.acc-tabs)>button:is([aria-pressed="true"],[aria-selected="true"],.on),:is(.c-tabs--ptabs,.ty-invtop>.ty-ptabs,.ms-tabs)>button:is([aria-selected="true"],[aria-pressed="true"]),:is(.c-tabs--ptabs,.ty-invtop>.ty-ptabs,.ms-tabs)>button:is([aria-selected="true"],[aria-pressed="true"]) :is(.c-tabs__n,.ty-n)){color:var(--ink-body)}}

/* Configurador · Componentes (#196): una tabla por recuadro de componentes */
/* owner 2026-11-01 (#196): Configurador · Componentes, one table per component box (componentes.js); the Configurador's cards
   and colours, the Catálogo's table (sticky header and name, sort buttons, a grip on each header edge) */
.cx-list{display:grid;gap:var(--gap-section)}
.cx-card h4{display:flex;align-items:center;gap:var(--gap-cluster-sm)}
.cx-card .ly-ic{color:var(--ink-accent);display:inline-flex}
.cx-fold{display:inline-flex;align-items:center;gap:var(--gap-cluster-sm);min-height:var(--target-min);background:none;border:none;padding:0;color:inherit;font:inherit;letter-spacing:inherit;text-transform:inherit;cursor:pointer}
.cx-chev{color:var(--ink-secondary);flex:none}
.cx-fold:hover .cx-chev{color:var(--ink-accent)}
.cx-bar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--gap-cluster-sm) var(--gap-cluster);margin-bottom:var(--stack-item)}
.cx-bar input[type=search]{flex:1 1 220px;background:var(--surface-field);color:var(--ink-body);border:1px solid var(--line-field);border-radius:var(--r-box);padding:var(--pad-chip)}
.cx-bar select{background:var(--surface-field);color:var(--ink-body);border:1px solid var(--line-field);border-radius:var(--r-box);padding:var(--pad-field-xs)}
.cx-bar label{display:inline-flex;align-items:center;gap:var(--gap-cluster-sm);font-size:var(--fs-body-sm);color:var(--ink-secondary)}
.cx-zoom{display:inline-flex;align-items:center;gap:var(--gap-cluster-sm);font-size:var(--fs-body-sm);color:var(--ink-secondary);font-variant-numeric:tabular-nums}
.cx-cols summary,.cx-pick summary{cursor:pointer;font-size:var(--fs-body-sm);color:var(--ink-secondary)}
.cx-pick,.cx-cols{flex:1 1 100%;border-top:1px solid var(--line-row);padding-top:var(--pad-chip)}
.cx-pick>div{display:flex;flex-wrap:wrap;gap:var(--gap-cluster-sm) var(--gap-cluster);padding:var(--pad-chip) 0}
.cx-pick label,.cx-cols label{white-space:nowrap}
.cx-get-kv{grid-template-columns:1fr auto}
.cx-tbl th .linkbtn{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;text-align:left}
.cx-cols>div{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:var(--gap-cluster-sm) var(--gap-cluster);padding:var(--pad-chip) 0}
.cx-wrap{overflow:auto;max-height:70vh;border:1px solid var(--line-card);border-radius:var(--r-box);background:var(--surface-sunken);scrollbar-width:thin}
.cx-card[data-cxg]{align-items:stretch;min-width:0}
.cx-card[data-cxg]>.cx-body{min-width:0}
.cx-card[data-cxg] .cx-wrap{width:fit-content;max-width:100%;margin-inline:auto}
.cx-tbl thead th:last-child .cx-rz{right:0}
.cx-tbl{border-collapse:separate;border-spacing:0;table-layout:fixed;font-size:var(--fs-cell)}
.cx-tbl th,.cx-tbl td{padding:var(--pad-cell);border-bottom:1px solid var(--line-row);text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cx-tbl thead th{position:sticky;top:0;z-index:2;background:var(--surface-card);font-size:var(--fs-head);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--ink-accent);font-weight:var(--fw-semibold)}
.cx-tbl thead th:first-child{left:0;z-index:3}
.cx-tbl tbody th{position:sticky;left:0;z-index:1;background:var(--surface-card);font-weight:var(--fw-medium);color:var(--ink-body);text-transform:none;letter-spacing:normal;font-size:var(--fs-cell)}
.cx-tbl tbody tr:hover td,.cx-tbl tbody tr:hover th{background:var(--surface-hover)}
.cx-tbl .r{text-align:right}
.cx-tbl td.num{font-variant-numeric:tabular-nums;color:var(--ink-body)}
.cx-sort{all:unset;cursor:pointer;display:flex;align-items:center;width:100%;min-height:24px}
.cx-tbl th.r .cx-sort{justify-content:flex-end}
.cx-sort:focus-visible{outline:2px solid var(--line-brand);outline-offset:var(--focus-offset)}
.cx-tbl thead th{overflow:visible;white-space:normal;vertical-align:bottom;line-height:var(--lh-125)}
.cx-rz{position:absolute;top:0;right:-4px;width:8px;height:100%;cursor:col-resize;touch-action:none;z-index:4}
.cx-rz::after{content:"";position:absolute;top:15%;bottom:15%;left:calc(50% - 1px);width:2px;border-radius:var(--r-swatch);background:var(--line-field)}
.cx-rz:hover::after{background:var(--line-brand)}
.cx-n{margin:var(--space-2) 0 0}

/* Misiones (.ms-): buscador con filtros, tabla y tarjetas, camino de reputación */
/* v363 missions: a finder (filters on the left, cards or a table, a window per mission) and the reputation path */
.ms-tabs{margin:0 0 var(--stack-tabs)}
.ms-fl{display:grid;grid-template-columns:250px minmax(0,1fr);gap:var(--gap-block);align-items:start}
.ms-side{position:sticky;top:calc(var(--top-fix,0px) + 12px);max-height:calc(100vh - var(--top-fix,0px) - 24px);overflow:auto;overscroll-behavior:contain;display:flex;flex-direction:column;gap:var(--gap-section);background:var(--surface-card);border:1px solid var(--line-card);border-radius:var(--r-box);padding:var(--pad-card)}
.ms-sh{display:flex;align-items:center;justify-content:space-between}
.ms-sh b{font-size:var(--fs-label);letter-spacing:var(--tracking-kicker);text-transform:uppercase;color:var(--ink-secondary)}
.ms-clr{background:none;border:0;color:var(--ink-link);font-size:var(--fs-control-sm);cursor:pointer;padding:0}
.ms-lb{display:flex;flex-direction:column;gap:var(--gap-cluster-xs);font-size:var(--fs-label);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--ink-label)}
.ms-lb input:not([type=checkbox]),.ms-lb select{width:100%;text-transform:none;letter-spacing:0;font-size:var(--fs-control)}
.ms-chips{display:flex;flex-wrap:wrap;gap:var(--gap-cluster-xs);text-transform:none;letter-spacing:0}
.ms-chips button{border:1px solid var(--line-chip);background:var(--surface-sunken);color:var(--ink-secondary);border-radius:var(--r-control);padding:var(--pad-chip-sm);font-size:var(--fs-chip);cursor:pointer}
.ms-chips button[aria-pressed=true]{border-color:var(--line-brand);color:var(--ink-link);background:var(--surface-active)}
.ms-seg{display:flex;text-transform:none;letter-spacing:0}
.ms-seg button{flex:1 1 auto;white-space:nowrap;padding-inline:var(--gap-cluster-sm);font-size:var(--fs-control-sm)}
.ms-chk{display:flex;align-items:center;gap:7px;font-size:var(--fs-body-sm);text-transform:none;letter-spacing:0;color:var(--ink-secondary);cursor:pointer}
.ms-chk input{accent-color:var(--fill-meter)}
.ms-bar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--gap-panel);margin-bottom:var(--stack-detail)}
.ms-n{margin-right:auto;font-size:var(--fs-body-sm);color:var(--ink-note)}
.ms-n b{color:var(--ink-body);font-size:var(--fs-value)}
.ms-sort{display:flex;align-items:center;gap:var(--gap-cluster-sm);font-size:var(--fs-note);color:var(--ink-note)}
.ms-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:var(--gap-panel)}
.ms-card{display:flex;flex-direction:column;gap:9px;text-align:left;background:var(--surface-card);border:1px solid var(--line-card);border-radius:var(--r-card);padding:var(--pad-card);color:var(--ink-body);cursor:pointer;font:inherit}
.ms-card:hover,.ms-card:focus-visible{border-color:var(--line-brand)}
.ms-hd{display:flex;gap:var(--gap-panel);align-items:flex-start;min-width:0}
.ms-ini{flex:none;width:34px;height:34px;display:grid;place-items:center;border:1px solid var(--line-card);border-radius:var(--r-box);background:var(--surface-sunken);font-family:var(--f-mono);font-size:var(--fs-caption);font-weight:var(--fw-bold);color:var(--ink-secondary)}
.ms-ini.big{width:46px;height:46px;font-size:var(--fs-value)}
.ms-tt{display:flex;flex-direction:column;min-width:0}
.ms-tt b{font-size:var(--fs-body);line-height:var(--lh-130)}
.ms-tt small{font-size:var(--fs-caption);color:var(--ink-note)}
.ms-tok{font-family:var(--f-mono);font-size:max(.82em,var(--fs-1));color:var(--ink-link);background:var(--surface-active);border-radius:var(--r-micro);padding:var(--pad-badge-x);text-transform:uppercase;letter-spacing:var(--tracking-3)}
/* a value the game fills in at play time: a blank to fill, drawn as one continuous line (underscores break apart with the pill letter-spacing) */
.ms-blank{display:inline-block;width:1.25em;height:.8em;border-bottom:2px solid currentColor}
.ms-tags{display:flex;flex-wrap:wrap;gap:var(--gap-tight)}
.ms-t{font-style:normal;font-size:var(--fs-badge);font-weight:var(--fw-semibold);padding:2px 6px;border-radius:var(--r-micro);border:1px solid var(--line-card);color:var(--ink-secondary);background:var(--surface-sunken)}
.ms-t.sys{color:var(--wb-strong);border-color:color-mix(in srgb,var(--wb) 45%,transparent)}
.ms-t.ty{color:var(--pred-strong);border-color:color-mix(in srgb,var(--pred-strong) 45%,transparent)}
.ms-t.il{color:var(--bad);border-color:color-mix(in srgb,var(--bad) 50%,transparent);text-transform:uppercase}
.ms-t.cb{color:var(--warn-strong);border-color:color-mix(in srgb,var(--warn) 45%,transparent)}
.ms-t.bp{color:var(--ink-link);border-color:color-mix(in srgb,var(--line-brand) 45%,transparent)}
.ms-t.warn{color:var(--warn-strong);border-color:var(--warn)}
.ms-kv{display:flex;flex-direction:column;gap:var(--gap-tight-sm);margin-top:auto;padding-top:var(--pad-rule);border-top:1px solid var(--line-row)}
.ms-kv>span{display:flex;justify-content:space-between;gap:var(--gap-panel);font-size:var(--fs-caption)}
.ms-kv i{font-style:normal;color:var(--ink-label);font-size:var(--fs-label);letter-spacing:var(--tracking-label);text-transform:uppercase}
.ms-kv b{font-variant-numeric:tabular-nums}
.ms-kv b.rw{color:var(--ink-link)}
.ms-kv b.rp{color:var(--good-strong)}
.ms-kv small{color:var(--ink-note);font-weight:var(--fw-regular)}
.ms-tbl tbody tr{cursor:pointer}
.ms-tbl tbody tr:hover td,.ms-tbl tbody tr:focus td{background:var(--surface-hover)}
.ms-tbl td b{display:block}
.ms-tbl td small{color:var(--ink-note)}
.ms-more{display:flex;justify-content:center;margin-top:var(--stack-section)}
.ms-dlg{width:min(760px,calc(100vw - 24px))}
.ms-dtags{margin:0 0 var(--stack-detail);padding:0 18px}
.ms-ds{font-size:var(--fs-body-md);line-height:var(--lh-155);color:var(--ink-secondary);margin-bottom:var(--stack-section)}
.ms-ds p{margin:0 0 var(--stack-item)}
.ms-y{color:var(--good-strong)}
.ms-no{color:var(--bad)}
.ms-lcs{display:flex;flex-wrap:wrap;gap:var(--gap-cluster-xs)}
.ms-lcs span{font-size:var(--fs-badge);border:1px solid var(--line-card);border-radius:var(--r-2);padding:3px 8px;background:var(--surface-sunken)}
/* the reputation path */
.ms-rp{max-width:980px}
.ms-rph{display:flex;flex-wrap:wrap;gap:var(--gap-section);align-items:flex-end;margin-bottom:14px}
.ms-rph>.ms-lb{min-width:200px}
.ms-rph>.ms-lb:first-child{flex:1 1 320px}
.ms-sum{display:flex;flex-wrap:wrap;background:var(--surface-card);border:1px solid var(--line-card);border-left:3px solid var(--line-brand);border-radius:var(--r-box);margin-bottom:var(--stack-detail)}
.ms-sum>div{display:flex;flex-direction:column;gap:var(--gap-stack);padding:10px 16px;border-right:1px solid var(--line-row)}
.ms-sum>div:last-child{border-right:0}
.ms-sum b{font-family:"Rajdhani",var(--f-display);font-size:var(--fs-stat-lg);line-height:var(--lh-110)}
.ms-sum span{font-size:var(--fs-label);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--ink-label)}
.ms-sum .ms-span b{font-size:var(--fs-value);font-family:inherit;padding-top:4px}
.ms-sum .ms-span span{text-transform:none;letter-spacing:0;font-size:var(--fs-caption)}
.ms-line{list-style:none;margin:14px 0 0;padding:0 0 0 22px;border-left:2px solid color-mix(in srgb,var(--line-brand) 35%,transparent)}
.ms-line>li{position:relative;margin:0 0 18px}
.ms-line>li::before{content:"";position:absolute;left:-29px;top:4px;width:10px;height:10px;border-radius:var(--r-round);background:var(--fill-meter);box-shadow:0 0 0 3px var(--surface-page)}
.ms-line>li.stuck::before{background:var(--bad)}
.ms-lh{display:flex;flex-wrap:wrap;align-items:center;gap:var(--gap-cluster);margin-bottom:var(--stack-detail-sm);font-size:var(--fs-body-sm);color:var(--ink-note)}
.ms-lh b{color:var(--ink-body);font-size:var(--fs-value)}
.ms-lh>span>i{font-style:normal;color:var(--ink-link);margin:0 3px}
.ms-need{margin-left:auto;color:var(--ink-link);font-size:var(--fs-caption)}
.ms-step{display:flex;align-items:center;gap:var(--gap-section);background:var(--surface-card);border:1px solid var(--line-card);border-left:3px solid var(--line-brand);border-radius:var(--r-box);padding:var(--pad-card-sm);margin-bottom:5px}
.ms-sm{flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--gap-tight-sm);text-align:left;background:none;border:0;padding:0;color:var(--ink-body);font:inherit;cursor:pointer}
.ms-sm:hover b{color:var(--ink-link)}
.ms-sm small{font-size:var(--fs-caption);color:var(--ink-note)}
.ms-sm .ms-wh{color:var(--ink-secondary)}
.ms-sm .ms-wh-no{color:var(--warn-strong)}
.ms-nums{display:flex;gap:var(--gap-block);flex:none}
.ms-nums>span{display:flex;flex-direction:column;align-items:flex-end}
.ms-nums b{font-family:"Rajdhani",var(--f-display);font-size:var(--fs-stat-md);line-height:var(--lh-100)}
.ms-nums>span:first-child b{color:var(--good-strong)}
.ms-nums i{font-style:normal;font-size:var(--fs-label);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--ink-label)}
.ms-alt{margin:var(--stack-micro) 0 var(--stack-tight) var(--stack-tight);font-size:var(--fs-caption);color:var(--ink-note)}
.ms-alt summary{cursor:pointer;color:var(--ink-link);font-size:var(--fs-label);letter-spacing:var(--tracking-label);text-transform:uppercase}
.ms-altb{display:flex;justify-content:space-between;gap:var(--gap-panel);width:100%;background:none;border:0;border-bottom:1px solid var(--line-row);padding:5px 4px;color:var(--ink-secondary);font:inherit;font-size:var(--fs-note);text-align:left;cursor:pointer}
.ms-altb:hover{color:var(--ink-body)}
.ms-altb b{color:var(--good-strong)}
.ms-cum{display:block;text-align:right;font-size:var(--fs-caption);color:var(--ink-note)}
.ms-stk{color:var(--bad);font-size:var(--fs-body-sm);margin:var(--stack-tight) 0}
@media (max-width:820px){.ms-fl{grid-template-columns:1fr}.ms-side{position:static;max-height:none;overflow:visible}}
@media (max-width:560px){.ms-step{flex-direction:column;align-items:stretch}.ms-nums{justify-content:space-between}.ms-sum>div{flex:1 1 45%;border-right:0;border-bottom:1px solid var(--line-row)}}
/* v364 reputation path: what it does in one line, recommended or chosen mission, and the other missions to pick from */
.ms-how{font-size:var(--fs-body-sm);color:var(--ink-secondary);margin:var(--stack-detail-sm) 0 var(--stack-item)}
.ms-t.rec{color:var(--good-strong);border-color:color-mix(in srgb,var(--good) 45%,transparent)}
.ms-t.pick{color:var(--ink-link);border-color:var(--line-brand);background:var(--surface-active)}
.ms-step.mine{border-left-color:var(--good)}
.ms-back{background:none;border:0;padding:0 0 4px 4px;color:var(--ink-link);font-size:var(--fs-control-sm);cursor:pointer}
.ms-alt{background:var(--surface-card);border:1px solid var(--line-card);border-radius:var(--r-box);padding:6px 10px;margin:var(--stack-tight) 0 var(--stack-detail-sm)}
.ms-alt[open]{padding-bottom:8px}
.ms-alth,.ms-altr{display:grid;grid-template-columns:minmax(0,1fr) 80px 56px 70px auto;gap:var(--gap-panel);align-items:center}
.ms-alth{margin:var(--stack-item) 0 var(--stack-micro);font-size:var(--fs-head);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--ink-label)}
.ms-alth span:nth-child(2),.ms-alth span:nth-child(3),.ms-alth span:nth-child(4){text-align:right}
/* owner 2026-11-09: the last column is as wide as the «Usar esta» button of the rows; an invisible copy keeps the header columns over theirs */
.ms-alth .ms-alth-b{visibility:hidden;text-transform:none;letter-spacing:normal}
.ms-altr{border-top:1px solid var(--line-row);padding:5px 0}
.ms-altr .ms-altb{display:flex;flex-direction:column;align-items:flex-start;gap:1px;border:0;padding:0;width:auto;min-width:0}
.ms-altr .ms-altb small{font-size:var(--fs-caption);color:var(--ink-note)}
.ms-altr>b,.ms-altr>span{text-align:right;font-variant-numeric:tabular-nums;font-size:var(--fs-cell)}
.ms-altr>b.hi{color:var(--good-strong)}
.ms-altr>b.lo{color:var(--ink-secondary)}
@media (max-width:560px){.ms-alth{display:none}.ms-altr{grid-template-columns:minmax(0,1fr) auto auto}.ms-altr>span{display:none}}
/* v365 reputation path centred on the page */
.ms-rp{margin-left:auto;margin-right:auto}
/* v365 the mobiGlas section a mission is listed in */
.ms-t.ty small{font-size:.9em;font-weight:var(--fw-medium)}  /* sin opacidad: baja el contraste del texto pequeño */
.ms-tbl td small{display:block}
/* v366 the reputation path is wide enough for its filters and summary to sit on one line */
.ms-rp{max-width:1320px}
.ms-rph{flex-wrap:nowrap}
.ms-rph>.ms-lb:first-child{flex:1 1 300px;min-width:240px}
.ms-sum .ms-span{flex:1 1 260px}
@media (max-width:1100px){.ms-rph{flex-wrap:wrap}}
.ms-rph .ms-chips{flex-wrap:nowrap}
.ms-rph .ms-chips button{min-height:34px}
/* v365 finder filters: categories that include or leave out, sharing, availability and the rank asked */
.ms-cat.out{border-color:color-mix(in srgb,var(--bad) 55%,transparent);color:var(--bad);background:color-mix(in srgb,var(--bad) 10%,transparent);text-decoration:line-through}
.ms-hint{font-size:var(--fs-caption);letter-spacing:0;text-transform:none;color:var(--ink-note)}
.ms-lbr{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--gap-cluster)}
.ms-lbr .ms-seg{flex:none}
.ms-lbr .ms-seg button{flex:none;padding:3px 9px;font-size:var(--fs-control-sm)}
.ms-rk{position:relative;height:44px;margin:4px 9px 0;--a:0%;--b:100%}
.ms-rkt{position:absolute;left:0;right:0;top:9px;height:4px;border-radius:var(--r-swatch);background:var(--surface-track);
  background-image:linear-gradient(90deg,transparent var(--a),var(--fill-meter) var(--a),var(--fill-meter) var(--b),transparent var(--b))}
.ms-rk.x .ms-rkt{background-image:none}
.ms-rk input[type=range]{position:absolute;left:-9px;right:-9px;top:0;width:calc(100% + 18px);height:24px;margin:0;padding:0;background:none;border:0;
  -webkit-appearance:none;appearance:none;pointer-events:none}
.ms-rk input[type=range]::-webkit-slider-runnable-track{background:none;border:0;height:24px}
.ms-rk input[type=range]::-moz-range-track{background:none;border:0}
.ms-rk input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;pointer-events:auto;width:var(--thumb-size);height:var(--thumb-size);margin-top:3px;border-radius:var(--r-round);
  background:var(--surface-control);border:3px solid var(--line-brand);cursor:grab;box-shadow:0 0 0 3px var(--surface-card)}
.ms-rk input[type=range]::-moz-range-thumb{pointer-events:auto;width:12px;height:12px;border-radius:var(--r-round);background:var(--surface-control);border:3px solid var(--line-brand);cursor:grab}
.ms-rk input[type=range]:focus-visible::-webkit-slider-thumb{box-shadow:0 0 0 3px var(--surface-active)}
.ms-rkn{position:absolute;left:0;right:0;top:26px;display:flex;justify-content:space-between;pointer-events:none}
.ms-rkn i{width:0;display:flex;justify-content:center;font-style:normal;font-family:var(--f-mono);font-size:var(--fs-caption);color:var(--ink-note)}
.ms-rkn i.on{color:var(--ink-link)}
.ms-fl{grid-template-columns:280px minmax(0,1fr)}
@media (max-width:820px){.ms-fl{grid-template-columns:1fr}}
/* Misiones (lote 2b-2f): filtros plegables, tri-estado con icono, recompensa fija en la tabla móvil, unidades sin mayúsculas */
.ms-fd{display:flex;flex-direction:column;gap:var(--gap-section)}
.ms-fd>summary{cursor:pointer;font-size:var(--fs-label);font-weight:var(--fw-bold);letter-spacing:var(--tracking-kicker);text-transform:uppercase;color:var(--ink-secondary);min-height:var(--target-min);display:flex;align-items:center}
.ms-fd>.ms-sh{justify-content:flex-end}
.ms-see{display:none}
.ms-sum b small{font-size:var(--fs-caption);font-weight:var(--fw-semibold);text-transform:none;letter-spacing:0;color:var(--ink-note);font-family:var(--f-body)}
.ms-rwm{display:none;color:var(--ink-link);font-weight:var(--fw-semibold)}
.ms-cat.out{text-decoration:none}
@media (max-width:820px){
  .ms-fl{grid-template-columns:minmax(0,1fr)}
  .ms-side{padding:0 12px}
  .ms-see{display:block;width:100%}
  .ms-fd>summary{min-height:var(--target-coarse)}
  .ms-tbl td:first-child,.ms-tbl th:first-child{position:sticky;left:0;z-index:1;background:var(--surface-card);box-shadow:1px 0 0 var(--line-row)}
  .ms-tbl td:first-child{width:min(260px,72vw);min-width:min(200px,64vw);max-width:72vw;white-space:normal;overflow-wrap:break-word}
  .ms-tbl .ms-rwm{display:block}
}
@media (pointer:coarse){.ms-fd>summary{min-height:var(--target-coarse)}.ms-clr{min-height:var(--target-coarse);padding:0 8px}}

/* Fabricación (.cx-): lista de planos a la izquierda y plano a la derecha */
/* v400 Fabricación (Misiones y fabricación): list on the left, the blueprint on the right */
.cx{display:grid;grid-template-columns:300px minmax(0,1fr);gap:var(--gap-page);align-items:start;margin-top:var(--space-3)}
.cx-side{position:sticky;top:calc(var(--top-fix,0px) + 8px);display:flex;flex-direction:column;gap:var(--gap-cluster);max-height:calc(100vh - var(--top-fix,0px) - 24px);background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:var(--gap-panel)}
.cx-side>:not(.cx-tree){flex:none}
.cx-modes{display:flex}
.cx-modes button{flex:1}
.cx-q{width:100%}
.cx-rwb[aria-pressed="true"]{border-color:var(--line-brand);color:var(--ink-link);background:color-mix(in srgb,var(--brand) 12%,transparent)}
.cx-tree{overflow:auto;min-height:120px;margin:0 calc(var(--space-1) * -1);padding:0 var(--space-1)}
.cx-g{border-bottom:1px solid color-mix(in srgb,var(--line) 60%,transparent)}
.cx-gh{display:flex;width:100%;align-items:center;justify-content:space-between;gap:var(--gap-cluster);background:none;border:0;color:var(--ink);font:inherit;font-size:var(--fs-label);font-weight:var(--fw-semibold);letter-spacing:var(--tracking-3);text-transform:uppercase;padding:var(--space-2) var(--space-1);cursor:pointer;text-align:left}
.cx-gh::before{content:"›";display:inline-block;width:10px;color:var(--ink-3);transition:transform var(--dur-2)}
.cx-gh[aria-expanded="true"]::before{transform:rotate(90deg)}
.cx-gh span{flex:1}
.cx-gh em{font-style:normal;font-family:var(--f-mono);font-size:var(--fs-caption);color:var(--ink-3);background:var(--panel-2);border-radius:var(--r-1);padding:var(--pad-badge-2xs)}
.cx-gl{padding:0 0 var(--gap-cluster-sm) var(--gap-panel)}
.cx-sub .cx-gh{text-transform:none;letter-spacing:0;font-weight:var(--fw-medium);color:var(--ink-2)}
.cx-it{display:flex;width:100%;align-items:center;gap:var(--gap-cluster-sm);background:none;border:0;border-left:2px solid transparent;color:var(--ink-2);font:inherit;font-size:var(--fs-body-sm);padding:var(--pad-box-sm);cursor:pointer;text-align:left;border-radius:0 var(--r-1) var(--r-1) 0}
.cx-it span{flex:1}
.cx-it small{font-family:var(--f-mono);font-size:var(--fs-caption);color:var(--warn)}
.cx-it:hover{background:var(--panel-2);color:var(--ink)}
.cx-it.on{border-left-color:var(--brand);background:color-mix(in srgb,var(--brand) 14%,transparent);color:var(--ink)}
.cx-rw{width:7px;height:7px;border-radius:var(--r-round);background:var(--brand);flex:none}
.cx-mt{display:flex;align-items:flex-start;gap:var(--gap-cluster-sm)}
.cx-mt .cx-g{flex:1}
.cx-hk{padding-top:var(--space-2)}
.cx-hv{display:flex;align-items:center;justify-content:space-between;gap:var(--gap-cluster);font-size:var(--fs-caption);color:var(--ink-3);padding:var(--gap-stack) 0 var(--gap-cluster-sm)}
.cx-none{padding:var(--space-2) var(--space-1)}
.cx-main{min-width:0;display:flex;flex-direction:column;gap:var(--gap-section)}
.cx-back{align-self:flex-start}
.cx-intro{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:var(--space-4)}
.cx-intro h3{margin:0 0 var(--gap-cluster-sm)}
.cx-head{text-align:center}
.cx-head h2{margin:var(--gap-tight) 0 var(--gap-stack);font-size:var(--fs-heading-lg)}
.cx-tags{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--gap-cluster-sm);margin:0}
.cx-h{margin:var(--space-2) 0 0;font-size:var(--fs-caption);letter-spacing:var(--tracking-label-lg);text-transform:uppercase;color:var(--ink-3)}
.cx-parts{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:var(--gap-panel)}
.cx-part{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:var(--space-3);display:flex;flex-direction:column;gap:var(--gap-cluster)}
.cx-pm{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--gap-cluster-sm) var(--gap-cluster-x);margin:0}
.cx-pm span{display:flex;flex-direction:column}
.cx-pm small{font-size:var(--fs-caption);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--ink-3)}
.cx-pm b{font-size:var(--fs-title)}
.cx-pm span:nth-child(4n+1) b{color:var(--good)}
.cx-ql{display:flex;align-items:center;gap:var(--gap-cluster-sm);font-size:var(--fs-caption);color:var(--ink-3)}
.cx-ql input{flex:1;min-width:60px}
.cx-ql .cx-qn{flex:none;width:5.2em;min-width:0;font-family:var(--f-mono);text-align:right;color:var(--ink)}
.cx-efs{display:flex;flex-wrap:wrap;gap:var(--gap-cluster-sm)}
.cx-ef{font-size:var(--fs-caption);background:var(--panel-2);border-radius:var(--r-1);padding:var(--pad-field-compact);color:var(--ink-2)}
.cx-pre{display:flex;flex-wrap:wrap;align-items:center;gap:var(--gap-cluster-sm);font-size:var(--fs-caption);color:var(--ink-3)}
.cx-comb{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:var(--gap-cluster)}
.cx-cm{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:var(--pad-notice)}
.cx-cmh{display:flex;justify-content:space-between;gap:var(--gap-cluster);font-size:var(--fs-body-sm)}
.cx-cmh b{font-family:var(--f-mono)}
.cx-cmv{display:flex;justify-content:space-between;gap:var(--gap-cluster);margin-top:var(--gap-cluster-sm);font-family:var(--f-mono);font-size:var(--fs-body-sm)}
.cx-cmv span{display:flex;flex-direction:column}
.cx-cmv span+span{text-align:right}
.cx-cmv small{font-family:inherit;font-size:var(--fs-caption);text-transform:uppercase;color:var(--ink-3)}
.cx-qty{margin:0}
.cx-mis{background:color-mix(in srgb,var(--brand) 5%,var(--panel));border:1px solid color-mix(in srgb,var(--brand) 55%,var(--line));border-radius:var(--r);padding:var(--space-3);box-shadow:var(--glow-panel-brand)} /* owner 2026-11-01: brand turquoise, lit */
.cx-mis .cx-h{margin-top:0;color:var(--ink-link)}
.cx-ml{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:var(--gap-cluster-sm) var(--gap-cluster-x);margin-top:var(--space-2)}
.cx-mi{display:flex;flex-direction:column;align-items:flex-start;gap:var(--gap-tight);background:none;border:0;border-radius:var(--r-1);color:var(--ink-2);font:inherit;font-size:var(--fs-body-sm);text-align:left;padding:var(--gap-cluster-sm);cursor:pointer}
.cx-mi:hover{background:var(--panel-2);color:var(--ink)}
.cx-mi em{font-style:normal;font-family:var(--f-mono);font-size:var(--fs-caption);color:var(--ink-link)}
.cx-mt2{display:flex;flex-wrap:wrap;gap:var(--gap-tight)}
.cx-mt2 i{font-style:normal;font-size:var(--fs-caption);border:1px solid var(--line);border-radius:var(--r-1);padding:var(--pad-tier);color:var(--ink-3)}
.cx-mt2 i.ko{color:var(--bad);border-color:color-mix(in srgb,var(--bad) 50%,var(--line))}
.cx-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:var(--gap-cluster)}
.cx-card{display:flex;flex-direction:column;align-items:flex-start;gap:var(--gap-tight-sm);background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:var(--gap-panel);color:var(--ink);font:inherit;text-align:left;cursor:pointer}
.cx-card:hover{border-color:var(--brand)}
.cx-miss{font-size:var(--fs-caption);color:var(--ink-link)}
@media (max-width:900px){.cx{grid-template-columns:1fr}.cx-side{position:static;max-height:none}.cx-tree{max-height:50vh}}
/* v400 the blueprint centred: a limited width, its cards and buttons in the middle */
.cx-det{width:100%;max-width:1080px;margin:0 auto;display:flex;flex-direction:column;gap:var(--gap-section)}
.cx-det .cx-h{text-align:center}
.cx-det .cx-parts{grid-template-columns:repeat(auto-fit,minmax(240px,300px));justify-content:center}
.cx-det .cx-comb{grid-template-columns:repeat(auto-fit,minmax(220px,260px));justify-content:center}
.cx-det .cx-pre,.cx-det .cx-qty{justify-content:center}
.cx-det>.ty-note,.cx-det>.ty-meta{text-align:center}
.cx-det .cx-ml{justify-content:center;grid-template-columns:repeat(auto-fit,minmax(280px,340px))}
.cx-det .cx-mis .cx-h{text-align:center}

/* Minería (.mn-, .rt-): tarjetas de minerales, métodos, comparar y refinería (#227) */
/* v317 lugares de minería */
.ty-mg{border-top:1px solid var(--line-row);padding:var(--pad-row)}
.ty-mr{display:grid;grid-template-columns:minmax(0,1fr) 64px 50px;gap:var(--gap-cluster);align-items:center;font-size:var(--fs-body-sm);padding:2px 0}
.ty-mr>b{text-align:right;font-variant-numeric:tabular-nums}
.ty-mr .ty-bar2{margin:0}
/* owner 2026-11-08: Minería tab, side bar of filters (what is listed, minerals and places ticked) beside the list */
.mn-lay{display:grid;grid-template-columns:260px minmax(0,1fr);gap:var(--gap-block);align-items:start}
.mn-side{position:sticky;top:calc(var(--top-fix,0px) + var(--gap-block));max-height:calc(100vh - var(--top-fix,0px) - 2 * var(--gap-block));overflow:auto;display:flex;flex-direction:column;gap:var(--gap-section);
  padding:var(--pad-box-md);background:var(--surface-card);border:1px solid var(--line-card);border-radius:var(--r-box)}
.mn-side{min-width:0;max-width:100%}
.mn-side .ms-seg{display:flex;flex-wrap:wrap;max-width:100%}
.mn-side .ms-seg button{flex:1}
.mn-fg summary{cursor:pointer;font-weight:var(--fw-semibold);padding:var(--gap-tight) 0}
.mn-fg summary small{color:var(--ink-secondary);font-weight:normal}
.mn-cks{display:flex;flex-direction:column;gap:var(--gap-stack)}
.mn-ck{display:flex;align-items:center;gap:var(--gap-cluster-sm);min-height:24px;font-size:var(--fs-body-sm);cursor:pointer}
.mn-ck small{color:var(--ink-secondary)}
.mn-ck.off{color:var(--ink-disabled,var(--ink-secondary));opacity:var(--op-seg-mid);cursor:not-allowed}
@media (max-width:900px){.mn-lay{grid-template-columns:minmax(0,1fr)}.mn-side{position:static;max-height:none}}
@media (pointer:coarse){.mn-ck{min-height:44px}}
/* v392: minería y comercio con tarjetas de minerales, comparación, simulación de operaciones y mercado */
.mn-hero{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:var(--gap-section) 24px;padding:16px 18px 16px 22px;border:1px solid var(--line-card);border-radius:var(--r-card);
  background:linear-gradient(120deg,var(--surface-active),var(--surface-card) 55%);position:relative;overflow:hidden}
.mn-hero::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--fill-meter)}
.mn-h{margin:0;font-family:var(--f-display);font-size:var(--fs-display);font-weight:var(--fw-semibold);letter-spacing:var(--tracking-1);color:var(--ink-body)}
.mn-sub{margin:var(--stack-micro) 0 0;font-size:var(--fs-body-sm);color:var(--ink-secondary)}
.mn-badges{display:flex;flex-wrap:wrap;gap:var(--gap-cluster)}
.mn-badges>span{display:flex;flex-direction:column;align-items:flex-start;min-width:86px;padding:6px 10px;border:1px solid var(--line-card);border-radius:var(--r-box);background:var(--surface-card)}
.mn-badges b{font-family:var(--f-mono);font-size:var(--fs-stat-sm);color:var(--ink-link);line-height:var(--lh-120);order:1}
.mn-badges small{font-size:var(--fs-caption);color:var(--ink-note);line-height:var(--lh-120);order:2}
.mn-ctl{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:var(--gap-cluster)}
.mn-views button{border-radius:var(--r-control)}
.mn-count{margin:0}
.mn-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:var(--gap-section)}
.mn-card{--tc:var(--line-card);--mn-top:inset 0 var(--accent-w) 0 var(--tc);background:var(--surface-card);border:1px solid var(--line-card);box-shadow:var(--mn-top);border-radius:var(--r-card);padding:var(--pad-card-accent) var(--pad-card) var(--pad-card);display:flex;flex-direction:column;gap:var(--gap-cluster-sm);transition:border-color var(--dur-2),box-shadow var(--dur-2)}
.mn-card:hover{border-color:var(--tc);box-shadow:var(--mn-top),0 2px 10px rgba(0,0,0,.08)}
.mn-card[data-t=uncommon]{--tc:var(--info)}
.mn-card[data-t=rare]{--tc:var(--good)}
.mn-card[data-t=epic]{--tc:var(--pred)}
.mn-card[data-t=legendary]{--tc:var(--wb)}
.mn-card.open{grid-column:1/-1}
.mn-top{display:flex;justify-content:space-between;align-items:center;gap:var(--gap-cluster-sm);min-height:20px}
.mn-top .ty-tag{margin:0;font-size:var(--fs-label);font-weight:var(--fw-badge)}
.mn-kinds{display:flex;gap:var(--gap-tight);margin-left:auto}
.mn-kinds span{font-size:var(--fs-badge);padding:var(--pad-badge-2xs);border-radius:var(--r-control);background:var(--surface-sunken);color:var(--ink-secondary)}
.mn-name{margin:var(--stack-micro) 0 0;font-family:var(--f-display);font-size:var(--fs-title);font-weight:var(--fw-semibold);line-height:var(--lh-115)}
.mn-form{font-family:var(--f-body);font-size:var(--fs-caption);font-weight:var(--fw-regular);color:var(--ink-note)}
.mn-price{display:flex;align-items:baseline;gap:var(--gap-cluster-sm);flex-wrap:wrap}
.mn-price b{font-family:var(--f-mono);font-size:var(--fs-stat-lg);color:var(--ink-link);line-height:var(--lh-110)}
.mn-price span{font-size:var(--fs-caption);color:var(--ink-note)}
.mn-at{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mn-stats{display:flex;flex-direction:column;gap:var(--gap-cluster-xs);padding:8px 0 4px;border-top:1px solid var(--line-row);margin-top:var(--stack-micro)}
.mn-st{display:grid;grid-template-columns:88px minmax(0,1fr);gap:var(--gap-cluster);align-items:center;font-size:var(--fs-caption);color:var(--ink-secondary)}
.mn-st>i{position:relative;height:16px;border-radius:var(--r-bar);background:var(--surface-meter);overflow:hidden}
.mn-st>i>b{position:absolute;left:0;top:0;bottom:0;border-radius:var(--r-bar);background:var(--sev-low)}
.mn-st>i.l1>b{background:var(--sev-mid)}
.mn-st>i.l2>b{background:var(--sev-high)}
.mn-st>i.l3>b{background:var(--bad)}
.mn-st>i>em{position:absolute;top:1px;right:1px;bottom:1px;display:flex;align-items:center;padding:var(--pad-badge-x);border-radius:var(--r-bar);background:color-mix(in srgb,var(--surface-card) 55%,transparent);text-shadow:0 0 2px var(--surface-card),0 0 3px var(--surface-card);transition:background-color var(--dur-2);font-style:normal;line-height:var(--lh-100);white-space:nowrap;font-size:var(--fs-caption);font-weight:var(--fw-semibold);color:var(--ink-body)}
.mn-win>i>b{background:var(--fill-meter);opacity:.4}
.mn-win>i>s{position:absolute;top:0;bottom:0;width:2px;margin-left:-1px;background:var(--fill-meter)}
.mn-win>i>em{font-family:var(--f-mono);font-weight:var(--fw-regular)}
/* the label lets the bar show through; the halo keeps the figure legible on any fill, and hovering the row makes the label solid */
.mn-st:hover>i>em{background:var(--surface-card)}
.mn-locs{display:flex;flex-wrap:wrap;gap:var(--gap-tight)}
.mn-loc{position:relative;font-size:var(--fs-badge);line-height:var(--lh-140);white-space:nowrap;padding:var(--pad-badge-md);border:1px solid var(--line-card);border-radius:var(--r-chip);color:var(--ink-secondary);background:var(--surface-page)}
.mn-loc b{color:var(--ink-body);font-family:var(--f-mono);font-weight:var(--fw-medium)}
.mn-loc.more{color:var(--ink-note)}
.mn-act{display:flex;gap:var(--gap-cluster-sm);margin-top:auto;padding-top:6px}
.mn-act .btn{flex:1}
.mn-cbtn[aria-pressed=true]{background:var(--surface-active);border-color:var(--line-brand);color:var(--ink-body)}
.mn-det{border-top:1px solid var(--line-row);padding-top:10px;margin-top:var(--stack-tight)}
.mn-cmp td.k{color:var(--ink-secondary);font-weight:var(--fw-semibold);white-space:nowrap}
.mn-cmp th.mn-ch{border-top:3px solid var(--line-card);font-family:var(--f-display);font-size:var(--fs-subtitle);color:var(--ink-body);cursor:default}
.mn-cmp th[data-t=uncommon]{border-top-color:var(--info)}
.mn-cmp th[data-t=rare]{border-top-color:var(--good)}
.mn-cmp th[data-t=epic]{border-top-color:var(--pred)}
.mn-cmp th[data-t=legendary]{border-top-color:var(--wb)}
.mn-cmp td.mn-best{color:var(--good-strong);font-weight:var(--fw-semibold);background:var(--good-soft)}
.mn-x{border:0;background:none;color:var(--ink-note);font-size:var(--fs-icon);cursor:pointer;padding:var(--pad-badge-x);vertical-align:middle}
.mn-x:hover{color:var(--bad)}
.ty-bar2.t-common>span{background:var(--fill-muted)}
.ty-bar2.t-uncommon>span{background:var(--info)}
.ty-bar2.t-rare>span{background:var(--good)}
.ty-bar2.t-epic>span{background:var(--pred)}
.ty-bar2.t-legendary>span{background:var(--wb)}
@media (max-width:600px){.mn-hero{padding:12px 12px 12px 16px;gap:var(--gap-panel)}.mn-h{font-size:20px}.mn-badges{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:100%;gap:var(--gap-cluster-sm)}.mn-badges>span{min-width:0;padding:5px 7px}.mn-badges b{font-size:var(--fs-value)}.mn-badges small{font-size:var(--fs-caption)}.mn-badges .mn-ver{grid-column:span 2}}
/* v393: firma de radar en la tarjeta y ficha emergente del mineral */
.mn-rs{display:flex;flex-direction:column;gap:var(--gap-cluster-sm);padding:var(--pad-panel-sm);border:1px solid var(--line-card);border-radius:var(--r-box);background:var(--surface-sunken)}
.mn-rsf{display:flex;flex-wrap:wrap;align-items:flex-start;gap:var(--gap-cluster);margin:var(--stack-tight) 0;padding:var(--pad-panel-sm);border:1px solid var(--line-card);border-radius:var(--r-box);background:var(--surface-sunken)}
.mn-rsf .ms-lb{flex:0 1 16em}
.mn-rsf input{font-family:var(--f-mono)}
.mn-rsr{flex:1 1 20em;min-width:0}
.mn-rsl{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--gap-stack)}
.mn-rsl li{display:flex;flex-wrap:wrap;align-items:center;gap:var(--gap-cluster-sm);font-size:var(--fs-body-sm);color:var(--ink-secondary)}
.mn-rsl li b{color:var(--ink-body);font-variant-numeric:tabular-nums}
.mn-rsl li em{font-style:normal;font-family:var(--f-mono);color:var(--ink-note)}
.mn-rsl li.ok b{color:var(--good-strong)}
.mn-rsh{display:flex;justify-content:space-between;align-items:baseline;gap:var(--gap-cluster)}
.mn-rsh span{display:flex;flex-direction:column;font-size:var(--fs-label);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--ink-link);font-weight:var(--fw-semibold)}
.mn-rsh span small{display:block;font-size:var(--fs-caption);letter-spacing:0;text-transform:none;color:var(--ink-note);font-weight:var(--fw-regular)}
.mn-rsh>b{font-family:var(--f-mono);font-size:var(--fs-figure);color:var(--ink-body)}
.mn-rsh>b small,.mn-kpis b small{font-size:var(--fs-caption);color:var(--ink-note);font-weight:var(--fw-regular)}
.mn-mult{display:flex;flex-direction:column;gap:var(--gap-cluster-sm)}
.mn-mv{display:flex;gap:var(--gap-tight);overflow-x:auto;padding-bottom:2px;scrollbar-width:thin}
.mn-mv span{flex:0 0 auto;font-family:var(--f-mono);font-size:var(--fs-badge);padding:var(--pad-badge-md);border:1px solid var(--line-card);border-radius:var(--r-control);background:var(--surface-card);color:var(--ink-body);white-space:nowrap}
.mn-mv small{color:var(--ink-note);margin-right:4px}
.mn-copy{align-self:stretch}
dialog.mn-dlg{width:min(1080px,calc(100vw - 24px));max-height:calc(100vh - 24px)}
.mn-dh{--tc:var(--line-brand);position:relative;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:var(--gap-block-md) 24px;padding:20px 52px 18px 22px;border-bottom:1px solid var(--line-row);
  background:linear-gradient(120deg,color-mix(in srgb,var(--tc) 14%,transparent),transparent 60%);border-top:3px solid var(--tc)}
.mn-dh[data-t=uncommon]{--tc:var(--info)}
.mn-dh[data-t=rare]{--tc:var(--good)}
.mn-dh[data-t=epic]{--tc:var(--pred)}
.mn-dh[data-t=legendary]{--tc:var(--wb)}
.mn-dt{display:flex;flex-direction:column;gap:var(--gap-tight);min-width:0}
.mn-dt .mn-top{justify-content:flex-start}
.mn-kind{font-size:var(--fs-badge);padding:var(--pad-badge);border:1px solid var(--line-card);border-radius:var(--r-control);color:var(--ink-secondary);background:var(--surface-card)}
.mn-dn{margin:var(--stack-micro) 0 0;font-family:var(--f-display);font-size:40px;line-height:var(--lh-100);font-weight:var(--fw-bold);letter-spacing:var(--tracking-2);text-transform:uppercase;color:var(--ink-body)}
.mn-dn small{font-family:var(--f-body);font-size:var(--fs-body-sm);font-weight:var(--fw-regular);text-transform:none;letter-spacing:0;color:var(--ink-note)}
.mn-dsub{margin:var(--stack-micro) 0 0;font-size:var(--fs-label);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--ink-label)}
.mn-dx{position:absolute;top:10px;right:10px}
.mn-kpis{display:flex;flex-wrap:wrap;gap:var(--gap-cluster)}
.mn-kpis>div{display:flex;flex-direction:column;gap:var(--gap-stack);min-width:150px;padding:9px 12px;border:1px solid var(--line-card);border-radius:var(--r-card);background:var(--surface-card)}
.mn-kpis span{font-size:var(--fs-label);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--ink-label)}
.mn-kpis b{font-family:var(--f-mono);font-size:var(--fs-stat-lg);color:var(--ink-link);line-height:var(--lh-115)}
.mn-kpis em{font-style:normal;font-size:var(--fs-caption);color:var(--ink-note);max-width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mn-db{padding:16px 22px 20px;display:flex;flex-direction:column;gap:var(--gap-block-md)}
.mn-panel{border:1px solid var(--line-card);border-radius:var(--r-card);background:var(--surface-sunken);padding:var(--pad-card);min-width:0}
.mn-panel h4,.mn-dcols h4{margin:0;font-size:var(--fs-note);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--ink-body);font-weight:var(--fw-bold)}
.mn-ph{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:var(--gap-cluster) var(--gap-section);margin-bottom:var(--stack-detail)}
.mn-ph .ty-meta{margin:3px 0 0}
.mn-chip{display:inline-block;margin-left:6px;font-size:var(--fs-badge);line-height:var(--lh-130);letter-spacing:var(--tracking-4);padding:var(--pad-badge-sm);border:1px solid var(--line-brand);border-radius:var(--r-box);color:var(--ink-link);background:var(--surface-active);vertical-align:middle}
.mn-pa{display:flex;gap:var(--gap-cluster-sm)}
.mn-rsp{border-top:3px solid var(--line-brand)}
.mn-rsg{display:grid;grid-template-columns:repeat(10,minmax(0,1fr));gap:var(--gap-cluster-sm)}
.mn-rsg>div{display:flex;flex-direction:column;align-items:center;gap:var(--gap-stack);padding:8px 4px;border:1px solid var(--line-card);border-radius:var(--r-box);background:var(--surface-card)}
.mn-rsg small{font-size:var(--fs-label);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--ink-label);white-space:nowrap}
.mn-rsg b{font-family:var(--f-mono);font-size:var(--fs-title);color:var(--ink-body)}
.mn-rsg span{font-size:var(--fs-1);color:var(--ink-note)}
@media (max-width:820px){.mn-rsg{grid-template-columns:repeat(5,minmax(0,1fr))}}
.mn-chat{margin:var(--stack-detail) 0 0}
.mn-chat b{color:var(--ink-link)}
.mn-chat code{font-family:var(--f-mono);font-size:var(--fs-caption);color:var(--ink-body)}
.mn-beh{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--gap-section)}
@media (max-width:820px){.mn-beh{grid-template-columns:1fr}}
.mn-bh{display:flex;justify-content:space-between;align-items:baseline;gap:var(--gap-cluster);margin-bottom:var(--stack-item)}
.mn-bh>b{font-size:var(--fs-label-lg);text-transform:uppercase;letter-spacing:var(--tracking-label-lg)}
.mn-bh>b.l0{color:var(--good-strong)}
.mn-bh>b.l1{color:var(--ink-link)}
.mn-bh>b.l2{color:var(--sev-high-strong)}
.mn-bh>b.l3{color:var(--bad)}
.mn-grad{display:block;position:relative;height:5px;border-radius:var(--r-bar);overflow:hidden;background:linear-gradient(90deg,var(--sev-low),var(--sev-mid) 35%,var(--sev-high) 65%,var(--bad))}
.mn-grad>b{position:absolute;top:0;bottom:0;right:0;background:var(--surface-card)}
.mn-panel>.ty-meta{margin:var(--stack-item) 0 0}
.mn-comp{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--gap-cluster)}
.mn-comp>div{display:flex;flex-direction:column;gap:var(--gap-tight-sm);min-width:0}
.mn-comp small{font-size:var(--fs-label);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--ink-label)}
.mn-comp b{font-size:var(--fs-body-sm)}
.mn-comp b small{font-family:var(--f-mono);letter-spacing:0;text-transform:none}
.mn-dcols{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(260px,1fr);gap:var(--gap-block-md);align-items:start}
@media (max-width:820px){.mn-dcols{grid-template-columns:1fr}}
.mn-dside{display:flex;flex-direction:column;gap:var(--gap-block-md);min-width:0}
.mn-refs{display:flex;flex-direction:column;gap:var(--gap-cluster-sm)}
.mn-refs .mn-sell b.ko{border-color:var(--bad);color:var(--bad);background:var(--bad-soft)}
.mn-refs .mn-sell b:not(.ok):not(.ko){border-color:var(--line-card);color:var(--ink-secondary);background:none}
.mn-ref .ok{color:var(--good-strong);font-weight:var(--fw-semibold)}
.mn-ref .ko{color:var(--bad)}
.mn-meth{margin-top:var(--stack-tight)}
.mn-meth summary{cursor:pointer;font-size:var(--fs-body-sm);color:var(--ink-secondary)}
.mn-seg{display:flex;gap:var(--gap-stack);padding:var(--pad-seg-inset);border:1px solid var(--line-chip);border-radius:var(--r-box);background:var(--surface-sunken)}
.mn-seg button{border:0;background:none;color:var(--ink-secondary);font:inherit;font-size:var(--fs-control-sm);padding:3px 10px;border-radius:var(--r-micro);cursor:pointer}
.mn-seg button[aria-pressed=true]{background:var(--surface-active);color:var(--ink-body);box-shadow:var(--shadow-ring-active)}
.mn-dist{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--gap-cluster)}
@media (max-width:600px){.mn-dist{grid-template-columns:1fr}}
.mn-dc{--tc:var(--line-brand);position:relative;display:flex;justify-content:space-between;gap:var(--gap-cluster);padding:10px 12px 14px;border:1px solid var(--line-card);border-radius:var(--r-card);background:var(--surface-sunken);overflow:hidden}
.mn-dc[data-t=uncommon]{--tc:var(--info)}
.mn-dc[data-t=rare]{--tc:var(--good)}
.mn-dc[data-t=epic]{--tc:var(--pred)}
.mn-dc[data-t=legendary]{--tc:var(--wb)}
.mn-dc>div{display:flex;flex-direction:column;gap:var(--gap-tight-sm);min-width:0}
.mn-dc>div>b{font-size:13.5px;text-transform:uppercase;letter-spacing:var(--tracking-3)}
.mn-dc small{font-size:var(--fs-caption);color:var(--ink-note)}
.mn-dp{align-items:flex-end;text-align:right}
.mn-dp b{font-family:var(--f-mono);font-size:var(--fs-title);color:var(--tc)}
.mn-dc>i{position:absolute;left:0;right:0;bottom:0;height:3px;background:var(--surface-card)}
.mn-dc>i>b{display:block;height:100%;background:var(--tc)}
.mn-sells{display:flex;flex-direction:column;gap:var(--gap-cluster-sm)}
.mn-sells h5{margin:var(--stack-detail-sm) 0 0;font-size:var(--fs-label);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--ink-label);font-weight:var(--fw-semibold)}
.mn-sell{display:flex;justify-content:space-between;align-items:center;gap:var(--gap-cluster);padding:7px 10px;border:1px solid var(--line-card);border-radius:var(--r-box);background:var(--surface-card);font-size:var(--fs-note)}
.mn-sell span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mn-sell small{color:var(--ink-note)}
.mn-sell b{flex:0 0 auto;font-family:var(--f-mono);font-size:var(--fs-badge);padding:var(--pad-badge-xs);border:1px solid var(--good);border-radius:var(--r-chip);color:var(--good-strong);background:var(--good-soft)}
@media (max-width:600px){.mn-dn{font-size:30px}.mn-dh{padding:16px 48px 14px 16px}.mn-db{padding:12px 14px 16px}.mn-kpis>div{min-width:0;flex:1 1 140px}.mn-ph .mn-pa{width:100%}.mn-pa .btn{flex:1}}
.mn-mv{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--gap-tight-sm);overflow:visible;padding:0}
.mn-mv span{display:flex;flex-direction:column;align-items:center;padding:3px 0;font-size:var(--fs-badge);min-width:0}
.mn-mv small{margin:0;font-size:var(--fs-1)}
@media (max-width:600px){.mn-rsg{gap:var(--gap-tight)}.mn-rsg>div{padding:6px 2px}.mn-rsg b{font-size:var(--fs-note)}.mn-rsg small{font-size:var(--fs-1);letter-spacing:0;white-space:normal;text-align:center}}
/* v394: métodos de minería con el aspecto de las pestañas de página; Tarjetas/Tabla/Comparar a su derecha */
.mn-ctl{align-items:flex-end;flex-wrap:nowrap;border-bottom:1px solid var(--line-row);gap:var(--gap-section)}
.mn-ctl .ty-ptabs{flex:1 1 auto;min-width:0;margin:0;border-bottom:0}
.mn-ctl .mn-views{flex:none;padding-bottom:6px}
@media (max-width:700px){.mn-ctl{flex-wrap:wrap}.mn-ctl .ty-ptabs{flex-basis:100%}}
/* v396: selector de nombres de materiales (español / originales del juego) en la cabecera de Minería y comercio */
.mn-lang{display:inline-flex;flex-wrap:wrap;align-items:center;gap:var(--gap-stack);margin-top:var(--stack-detail);padding:var(--pad-seg-inset);border:1px solid var(--line-card);border-radius:var(--r-box);background:var(--surface-card)}
.mn-lang span{font-size:var(--fs-label);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--ink-label);padding:0 8px 0 6px}
.mn-lang button{border:0;background:none;color:var(--ink-secondary);font:inherit;font-size:var(--fs-chip);padding:var(--pad-chip-sm);border-radius:var(--r-micro);cursor:pointer}
.mn-lang button:hover{color:var(--ink-body)}
.mn-lang button[aria-pressed=true]{background:var(--surface-active);color:var(--ink-body);box-shadow:var(--shadow-ring-active)}
/* #180 on a phone the label takes its own row and the two choices share the next one evenly (they wrapped into three uneven lines) */
@media (max-width:600px){.mn-lang{display:grid;grid-template-columns:1fr 1fr;width:100%;box-sizing:border-box}.mn-lang span{grid-column:1/-1;padding-block:var(--stack-micro)}.mn-lang button{text-align:center}}
/* UX-122: selection tray of «Comparar» */
.mn-tray{position:sticky;bottom:0;z-index:5;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--gap-cluster) var(--gap-section);margin-top:var(--stack-detail);padding:var(--pad-card-sm);background:var(--surface-card);border:1px solid var(--line-card);border-radius:var(--r-card);color:var(--ink-body);box-shadow:0 -4px 14px rgba(0,0,0,.18)}
.mn-tray-a{display:flex;gap:var(--gap-cluster)}
.mn-var{white-space:nowrap}
/* #227 refinery work orders */
.rt{display:flex;flex-direction:column;gap:var(--gap-block-md)}
.rt-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--gap-cluster)}
@media (max-width:700px){.rt-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
.rt-kpis>div{display:flex;flex-direction:column;gap:var(--gap-stack);padding:var(--pad-notice);background:var(--surface-card);border:1px solid var(--line-card);border-radius:var(--r-card)}
.rt-kpis span{font-size:var(--fs-body-sm);color:var(--ink-secondary)}
.rt-kpis b{font-size:var(--fs-figure);font-variant-numeric:tabular-nums}
.rt-new{padding:var(--pad-box-md);background:var(--surface-card);border:1px solid var(--line-card);border-radius:var(--r-card)}
.rt-new h4{margin:0 0 var(--stack-tight)}
.rt-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--gap-cluster);align-items:end}
.rt-form .ms-lb{display:flex;flex-direction:column;gap:var(--gap-tight);min-width:0}
.rt-form select,.rt-form input{min-width:0;width:100%}
.rt-dur{display:flex;align-items:center;gap:var(--gap-cluster-sm)}
.rt-dur input{width:5em}
.rt-mats{grid-column:1/-1}
.rt-mats>.btn{align-self:flex-start}
.rt-row{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr) auto auto;gap:var(--space-2);align-items:center}
@media (max-width:520px){.rt-row{grid-template-columns:minmax(0,1fr) minmax(0,7em) auto}.rt-row .rt-b{grid-column:1/-1;grid-row:2}}
.rt-b{font-size:var(--fs-body-sm);color:var(--ink-secondary);white-space:nowrap}
.rt-form>.btn.primary{grid-column:1/-1;justify-self:start}
.rt-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:var(--gap-cluster)}
.rt-o{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3);background:var(--surface-card);border:1px solid var(--line-card);border-left:3px solid var(--line-card);border-radius:var(--r-card)}
.rt-o.s0{border-left-color:var(--line-accent)}
.rt-o.s1{border-left-color:var(--good)}
.rt-o.s2{opacity:var(--op-past)}
.rt-oh{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--gap-tight) var(--gap-panel)}
.rt-oh span{font-size:var(--fs-body-sm);color:var(--ink-secondary)}
.rt-left{margin-left:auto;font-style:normal;font-variant-numeric:tabular-nums;font-weight:var(--fw-semibold)}
.rt-o.s1 .rt-left{color:var(--good-strong)}
.rt-o.s2 .rt-left{color:var(--ink-secondary);font-weight:normal}
.rt-it{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--gap-stack)}
.rt-it li{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:var(--gap-panel);font-size:var(--fs-body-sm)}
.rt-it small{color:var(--ink-secondary);min-width:7em;text-align:right}
.rt-of{display:flex;flex-wrap:wrap;gap:var(--gap-tight) var(--gap-cluster-x);align-items:center;font-size:var(--fs-body-sm);border-top:1px solid var(--line-card);padding-top:var(--space-2)}
.rt-of .ok{color:var(--good-strong)}
.rt-of .ko{color:var(--bad)}
.rt-acts{margin-left:auto;display:flex;gap:var(--gap-cluster-sm)}
.rt-dur>span,.rt-u{text-transform:none;letter-spacing:normal}
.rt-row{max-width:760px}

/* Simulador de minería (.msim-, .mh-): equipo, roca y pantalla de la partida */
/* v366 mining simulator: equipment and rock side by side, then the run (charge bar with the window, throttle, fracture and danger) */
.msim{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--gap-block);align-items:start;max-width:1100px;margin:0 auto}
.msim-col{display:flex;flex-direction:column;gap:var(--gap-section);background:var(--surface-card);border:1px solid var(--line-card);border-radius:var(--r-box);padding:var(--pad-box-md)}
.msim-sv{display:flex;flex-direction:column;gap:var(--gap-tight-sm)}
.msim-pre{grid-template-columns:repeat(auto-fill,minmax(11em,1fr))}
.msim-pre .btn{white-space:normal;text-align:left}
.msim-cost{border:1px solid var(--line-card);border-radius:var(--r-box);background:var(--surface-sunken);padding:var(--pad-panel-sm)}
.msim-cost summary{display:flex;justify-content:space-between;gap:var(--gap-cluster);cursor:pointer;font-size:var(--fs-body-sm);color:var(--ink-secondary)}
.msim-cost summary b{font-variant-numeric:tabular-nums;color:var(--ink-body)}
.msim-cost ul{list-style:none;margin:var(--stack-tight) 0 0;padding:0;display:flex;flex-direction:column;gap:var(--gap-stack)}
.msim-cost li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--gap-stack) var(--gap-cluster-sm);font-size:var(--fs-body-sm);color:var(--ink-body)}
.msim-cost li b{font-variant-numeric:tabular-nums}
.msim-cost li small{grid-column:1/-1;color:var(--ink-note)}
.msim-sol{margin-top:var(--stack-tight);padding-top:var(--stack-tight);border-top:1px solid var(--line-row)}
.msim-solh{display:block;font-size:var(--fs-label);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--ink-label);margin-bottom:var(--gap-stack)}
.msim-sol ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--gap-stack)}
.msim-sol li{display:flex;flex-wrap:wrap;align-items:center;gap:var(--gap-cluster-sm);font-size:var(--fs-body-sm);color:var(--ink-body)}
.msim-sol li span{flex:1 1 12em;min-width:0}
.msim-sol li em{font-style:normal;font-variant-numeric:tabular-nums;color:var(--good-strong)}
/* #441: h4 → h3 for heading order; keep the old h4 weight (h3 is semibold in base.css) */
.msim-h{margin:0;font-size:var(--fs-label);font-weight:var(--fw-bold);letter-spacing:var(--tracking-kicker);text-transform:uppercase;color:var(--ink-link)}
.msim-card{background:var(--surface-sunken);border:1px solid var(--line-card);border-radius:var(--r-box);padding:var(--pad-tile);display:flex;flex-direction:column;gap:var(--gap-cluster-sm)}
.msim-ch{display:flex;justify-content:space-between;align-items:baseline;gap:var(--gap-panel);margin-bottom:var(--stack-micro)}
.msim-ch b{font-size:var(--fs-body)}
.msim-ch span{font-family:var(--f-mono);font-size:var(--fs-caption);color:var(--ink-link)}
.msim-mb{display:grid;grid-template-columns:130px minmax(0,1fr) 64px;gap:var(--gap-panel);align-items:center;font-size:var(--fs-note);color:var(--ink-secondary)}
.msim-mbt{position:relative;height:6px;border-radius:var(--r-bar);background:var(--surface-track)}
.msim-mbt::before{content:"";position:absolute;left:50%;top:-2px;bottom:-2px;width:1px;background:var(--fill-muted)}
.msim-mbt b{position:absolute;top:0;bottom:0;border-radius:var(--r-bar)}
.msim-mbt b.up{left:50%}
.msim-mbt b.dn{right:50%}
.msim-mbt b.ok{background:var(--good)}
.msim-mbt b.ko{background:var(--bad)}
.msim-mb em{font-style:normal;text-align:right;font-family:var(--f-mono);font-size:var(--fs-caption)}
.msim-mb em.ok,.msim .ok{color:var(--good-strong)}
.msim-mb em.ko,.msim .ko{color:var(--bad)}
.msim-qs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--gap-cluster-sm);text-transform:none;letter-spacing:0}
.msim-q{border:1px solid var(--line-card);background:var(--surface-sunken);border-radius:var(--r-control);padding:8px 4px;font:inherit;font-size:var(--fs-control);font-weight:var(--fw-bold);cursor:pointer;color:var(--ink-body)}
.msim-q.good{color:var(--good-strong);border-color:color-mix(in srgb,var(--good) 45%,transparent)}
.msim-q.info{color:var(--ink-link);border-color:color-mix(in srgb,var(--line-brand) 45%,transparent)}
.msim-q.warn{color:var(--warn-strong);border-color:color-mix(in srgb,var(--warn) 45%,transparent)}
.msim-q.bad{color:var(--bad);border-color:color-mix(in srgb,var(--bad) 45%,transparent)}
.msim-q:hover{background:color-mix(in srgb,currentColor 10%,var(--surface-hover))}
.msim-pr{display:grid;grid-template-columns:130px minmax(0,1fr) 64px;gap:var(--gap-panel);align-items:center;text-transform:none;letter-spacing:0;font-size:var(--fs-body-sm);color:var(--ink-secondary)}
.msim-pr b{text-align:right;font-family:var(--f-mono);font-size:var(--fs-caption);color:var(--ink-body)}
.msim-pr.in{color:var(--ink-note)}
.msim-pr input[type=range]{width:100%;accent-color:var(--fill-meter);background:none;border:0;padding:0}
.msim-kv{display:flex;justify-content:space-between;gap:var(--gap-panel);font-size:var(--fs-body-sm);color:var(--ink-secondary)}
.msim-kv b{font-variant-numeric:tabular-nums;color:var(--ink-body)}
.msim-kv b small{color:var(--ink-note);font-weight:var(--fw-regular);margin-left:4px}
.msim-kv b.ok{color:var(--good-strong)}
.msim-kv b.ko{color:var(--bad)}
.msim-verdict{margin:var(--stack-tight) 0 0;font-size:var(--fs-body-sm)}
/* owner 2026-11-02: the setup area (Equipo, Roca) looks like the ship screen of the run, in the site palette (so it follows the theme):
   corner brackets on each column, monospaced labels and figures, a marked rule under each heading, cards with a lit left edge */
.msim-col{position:relative;background:var(--hud-bg);border-color:var(--hud-line)}
.msim-col::before{content:"";position:absolute;inset:-1px;pointer-events:none;border-radius:inherit;
  background:linear-gradient(var(--hud-amber),var(--hud-amber)) left top/16px 2px no-repeat,linear-gradient(var(--hud-amber),var(--hud-amber)) left top/2px 16px no-repeat,
  linear-gradient(var(--hud-amber),var(--hud-amber)) right bottom/16px 2px no-repeat,linear-gradient(var(--hud-amber),var(--hud-amber)) right bottom/2px 16px no-repeat}
.msim-h{display:flex;align-items:center;gap:var(--gap-cluster-sm);font-family:var(--f-mono);color:var(--hud-amber);padding-bottom:var(--stack-tight);border-bottom:1px solid var(--hud-amber2)}
.msim-h::before{content:"";width:8px;height:8px;border-radius:var(--r-round);background:var(--hud-green);flex:none}
.msim .ms-lb{font-family:var(--f-mono);color:var(--hud-ink2)}
.msim .ms-lb input:not([type=checkbox]),.msim .ms-lb select{font-family:var(--f-body)}
.msim .ms-lb button,.msim .ms-lb .ty-meta,.msim .msim-pr span{font-family:var(--f-body);text-transform:none;letter-spacing:0}
.msim .msim-card{background:var(--hud-panel);border-color:var(--hud-line);border-left:2px solid var(--hud-amber2)}
.msim .msim-kv span{font-family:var(--f-mono);font-size:var(--fs-caption);text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--hud-ink2)}
.msim .msim-kv b{font-family:var(--f-mono)}
.msim .msim-verdict{padding-left:var(--gap-cluster-sm);border-left:2px solid currentColor}
.msim .msim-go{font-family:var(--f-mono);text-transform:uppercase;letter-spacing:var(--tracking-label)}
.msim-go{align-self:stretch;padding:var(--pad-card);font-size:var(--fs-body)}
/* the run */
.msim-run{max-width:1100px;margin:0 auto;background:var(--surface-card);border:1px solid var(--line-card);border-radius:var(--r-box);padding:var(--pad-card)}
.msim-top{display:flex;flex-wrap:wrap;align-items:center;gap:18px;padding-bottom:10px;border-bottom:1px solid var(--line-row);font-size:var(--fs-body-sm);color:var(--ink-note)}
.msim-top b{color:var(--ink-body);font-variant-numeric:tabular-nums}
.msim-top .btn{margin-left:auto}
.msim-t{font-family:var(--f-mono);font-size:var(--fs-stat-lg);color:var(--ink-link)!important}
.msim-st{font-family:"Rajdhani",var(--f-display);font-size:var(--fs-stat-md);font-weight:var(--fw-bold);text-transform:uppercase;letter-spacing:var(--tracking-6);color:var(--ink-secondary)}
.msim-st[data-s=charge]{color:var(--warn-strong)}
.msim-st[data-s=win],.msim-st[data-s=done]{color:var(--good-strong)}
.msim-st[data-s=danger],.msim-st[data-s=boom]{color:var(--bad)}
.msim-gauge{display:flex;flex-direction:column;align-items:center;gap:var(--gap-cluster)}
.msim-gl{font-size:var(--fs-label);letter-spacing:var(--tracking-kicker);text-transform:uppercase;color:var(--ink-link)}
.msim-thr{position:relative;width:34px;height:min(56vh,460px);border:1px solid var(--line-card);border-radius:var(--r-box);background:var(--surface-sunken);cursor:ns-resize;touch-action:none;--t:30%;--a:0%}
.msim-thr:focus-visible{outline:var(--focus-ring);outline-offset:var(--focus-offset)}
.msim-tm{position:absolute;left:0;right:0;bottom:0;height:var(--m,0%);background:repeating-linear-gradient(135deg,color-mix(in srgb,var(--ink-secondary) 30%,transparent) 0 3px,transparent 3px 7px);border-top:1px dashed var(--ink-secondary);pointer-events:none}
.msim-tf{position:absolute;left:0;right:0;bottom:0;height:var(--a);background:color-mix(in srgb,var(--fill-meter) 30%,transparent)}
.msim-tt{position:absolute;left:-4px;right:-4px;bottom:var(--t);height:3px;margin-bottom:-1px;background:var(--fill-meter);border-radius:var(--r-swatch)}
.msim-tv{font-family:var(--f-mono);font-size:var(--fs-body-sm)}
.msim-ctl{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--gap-cluster)}
.msim-fire{min-width:180px}
.msim-am small{margin-left:6px;font-family:var(--f-mono);color:var(--ink-note)}
.msim-am.on{border-color:var(--line-brand);color:var(--ink-link);background:var(--surface-active)}
.msim-help{text-align:center;font-size:var(--fs-caption);color:var(--ink-note);margin:var(--stack-detail) 0 0}
.msim-end{margin:14px auto 0;max-width:560px;display:flex;flex-direction:column;gap:var(--gap-panel)}
.msim-res.ok{border-color:color-mix(in srgb,var(--good) 50%,transparent)}
.msim-res.ko{border-color:color-mix(in srgb,var(--bad) 50%,transparent)}
.msim-res.ok .msim-ch b{color:var(--good-strong)}
.msim-res.ko .msim-ch b{color:var(--bad)}
/* owner 2026-11-08: the refinery orders, a third box of the same size beside Equipo and Roca; under 1200 px it takes its own row */
@media (max-width:820px){.msim{grid-template-columns:1fr}.msim-arena{grid-template-columns:auto auto}.msim-info{grid-column:1/-1;order:3}}
@media (max-width:420px){.msim-mb,.msim-pr{grid-template-columns:96px minmax(0,1fr) 56px}.msim-qs{grid-template-columns:repeat(2,1fr)}}
.msim-pr{grid-template-columns:170px minmax(0,1fr) 64px}
@media (max-width:420px){.msim-pr{grid-template-columns:110px minmax(0,1fr) 56px}}
/* v368 simulator: vehicles and multitool, the MOLE's three turrets and the end chart */
.msim-ships{flex-wrap:wrap}
.msim-ships button{white-space:nowrap}
.msim-tc .ms-lb{margin:0}
.msim-thrs{display:flex;gap:var(--gap-block-md)}
.msim-tg.on .msim-tf{background:color-mix(in srgb,var(--fill-meter) 45%,transparent)}
.msim-ctl+.msim-ctl{margin-top:var(--stack-item)}
.msim-end{max-width:820px}
.msim-gbox{position:relative}
.msim-g{display:block;width:100%;height:auto;touch-action:none}
.msim-gdz{fill:color-mix(in srgb,var(--bad) 14%,transparent)}
.msim-gwin{fill:color-mix(in srgb,var(--good) 22%,transparent)}
.msim-gax{stroke:var(--line-row);stroke-width:1}
.msim-gtx{fill:var(--ink-note);font-size:var(--fs-caption);font-family:var(--f-mono)}
.msim-g polyline{fill:none;stroke-width:1.6;stroke-linejoin:round}
.msim-gq{stroke:var(--line-brand);stroke-width:2.6!important}
.msim-gl1{stroke:var(--warn)}
.msim-gl2{stroke:var(--pred)}
.msim-gl3{stroke:var(--line-guide);stroke-dasharray:6 3}
/* v399 more ships on the rock: six laser colours, then they repeat */
.msim-gl4{stroke:var(--line-accent)}
.msim-gl5{stroke:var(--good);stroke-dasharray:2 3}
.msim-gl6{stroke:var(--bad);stroke-dasharray:8 3 2 3}
.msim-gx{stroke:var(--line-guide);stroke-width:1;stroke-dasharray:3 3}
.msim-tip{position:absolute;top:6px;z-index:2;display:flex;flex-direction:column;gap:var(--gap-stack);padding:6px 9px;background:var(--surface-card);border:1px solid var(--line-card);border-radius:var(--r-box);font-size:var(--fs-caption);color:var(--ink-secondary);white-space:nowrap;pointer-events:none;box-shadow:0 4px 14px rgba(0,0,0,.25)}
.msim-tip b{color:var(--ink-body);font-family:var(--f-mono)}
.msim-lg{display:flex;flex-wrap:wrap;gap:var(--gap-cluster-sm) var(--gap-block-md);font-size:var(--fs-caption);color:var(--ink-note)}
.msim-lg span::before,.msim-tip span[class]::before{content:"";display:inline-block;width:10px;height:3px;margin-right:6px;vertical-align:middle;background:currentColor}
.msim-lg .q::before,.msim-tip .q::before{background:var(--line-brand)}
.msim-lg .l1::before,.msim-tip .l1::before{background:var(--warn)}
.msim-lg .l2::before,.msim-tip .l2::before{background:var(--pred)}
.msim-lg .l3::before,.msim-tip .l3::before{background:var(--line-guide)}
.msim-lg .l4::before,.msim-tip .l4::before{background:var(--line-accent)}
.msim-lg .l5::before,.msim-tip .l5::before{background:var(--good)}
.msim-lg .l6::before,.msim-tip .l6::before{background:var(--bad)}
.msim-xs{gap:var(--gap-cluster)}
.msim-xs .msim-tc{background:var(--surface-card);padding:var(--pad-panel-sm)}
.msim-xs .msim-ch span{display:inline-flex;align-items:center;gap:var(--gap-tight)}
.msim-x1{margin:0}
.msim-add{align-self:flex-start}
.msim-lg .w::before{height:8px;background:color-mix(in srgb,var(--good) 40%,transparent)}
.msim-lg .z::before{height:8px;background:color-mix(in srgb,var(--bad) 30%,transparent)}
@media (max-width:820px){.msim-thrs{gap:var(--gap-cluster)}.msim-thr{width:28px}}
.msim-alt{margin-top:var(--stack-item);font-size:var(--fs-caption)}
.msim-alt summary{cursor:pointer;min-height:var(--target-min);color:var(--ink-secondary)}
/* owner 2026-11-01: the mining run as the game display (dark in both themes): power arc, charge arc with optimal and overcharge bands, rock, modules and scan */
.msim-run{user-select:none;-webkit-user-select:none}
.msim-hud{background:var(--hud-bg);border:1px solid var(--hud-line);border-radius:var(--r-box);color:var(--hud-ink);overflow:hidden;margin:0 0 var(--space-3)}
.mh-top{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2) var(--space-4);padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--hud-line);font-size:var(--fs-body-sm);color:var(--hud-ink2)}
.mh-top b{color:var(--hud-ink);font-variant-numeric:tabular-nums}
.mh-sp{flex:1}
.mh-mode{font-family:var(--f-display);font-weight:var(--fw-bold);letter-spacing:var(--tracking-kicker);text-transform:uppercase;color:var(--hud-amber)}
.msim-hud .msim-t{color:var(--hud-amber)!important}
.msim-hud .msim-st{color:var(--hud-ink2)}
.msim-hud .msim-st[data-s=charge]{color:var(--hud-orange)}
.msim-hud .msim-st[data-s=win],.msim-hud .msim-st[data-s=done]{color:var(--hud-green)}
.msim-hud .msim-st[data-s=danger],.msim-hud .msim-st[data-s=boom]{color:var(--hud-red)}
.mh-body{display:grid;grid-template-columns:minmax(0,220px) minmax(0,1fr) minmax(0,240px);align-items:start}
@media (max-width:900px){.mh-body{grid-template-columns:minmax(0,1fr)}.mh-c{order:-1}}
.mh-side{padding:var(--space-3);font-size:var(--fs-body-sm);display:flex;flex-direction:column;gap:var(--space-1)}
.mh-side h4{margin:var(--space-3) 0 var(--space-1);padding-bottom:var(--space-1);font-size:var(--fs-label);letter-spacing:var(--tracking-kicker);text-transform:uppercase;color:var(--hud-amber);border-bottom:1px solid var(--hud-amber2)}
.mh-side h4:first-child{margin-top:0}
.mh-ls{display:flex;flex-direction:column;gap:var(--space-1);margin-bottom:var(--space-2)}
.mh-ls>span,.mh-none{color:var(--hud-ink2);font-size:var(--fs-caption)}
.mh-m{display:flex;flex-wrap:wrap;align-items:center;gap:0 var(--space-1)}
.mh-m i{width:var(--space-2);height:var(--space-2);border:1px solid var(--hud-ink2);border-radius:var(--r-round)}
.mh-m.act.on i{background:var(--hud-green);border-color:var(--hud-green)}
.mh-m small{flex-basis:100%;color:var(--hud-ink2);font-size:var(--fs-caption)}
.mh-m.act small:first-of-type{flex-basis:auto;color:var(--hud-amber)}
.mh-mod,.mh-kv{display:flex;justify-content:space-between;gap:var(--space-2)}
.mh-mod span,.mh-kv span{color:var(--hud-ink2)}
.mh-mod.ok b{color:var(--hud-green)}
.mh-mod.ko b{color:var(--hud-orange)}
.mh-kv b{font-variant-numeric:tabular-nums}
.mh-mat{color:var(--hud-amber);text-transform:uppercase;letter-spacing:var(--tracking-label)}
.mh-dif{margin:var(--space-1) 0;padding:var(--space-1) var(--space-2);text-align:center;font-weight:var(--fw-bold);text-transform:uppercase;letter-spacing:var(--tracking-label);border:1px solid currentColor;border-radius:var(--r-chip)}
.mh-dif.good{color:var(--hud-green);background:color-mix(in srgb,var(--hud-green) 16%,transparent)}
.mh-dif.info{color:var(--hud-amber);background:color-mix(in srgb,var(--hud-amber) 16%,transparent)}
.mh-dif.warn{color:var(--hud-orange);background:color-mix(in srgb,var(--hud-orange) 16%,transparent)}
.mh-dif.bad{color:var(--hud-red);background:color-mix(in srgb,var(--hud-red) 16%,transparent)}
.mh-cp{display:flex;gap:var(--space-2)}
.mh-cp b{min-width:4.5em;color:var(--hud-amber);font-variant-numeric:tabular-nums}
.mh-cp.in,.mh-cp.in b{color:var(--hud-ink2)}
.mh-c{min-width:0}
.msim-hsvg{display:block;width:100%;height:auto;aspect-ratio:680/520;max-height:560px;margin:0 auto;touch-action:none}
.mh-r3{display:block;width:100%;height:100%;color:var(--hud-rock);outline:0 solid var(--hud-red);pointer-events:none}
.mh-rn{fill:var(--hud-ink);font-size:var(--fs-6);font-weight:var(--fw-bold);text-transform:uppercase;letter-spacing:var(--tracking-label)}
.mh-rm{fill:var(--hud-ink2);font-size:var(--fs-5)}
.mh-beam{stroke:var(--hud-beam);stroke-width:4;stroke-linecap:round;filter:url(#mh-glow);opacity:var(--op-hidden)}
.mh-track{fill:none;stroke:var(--hud-amber2);stroke-width:6}
.mh-tick{stroke:var(--hud-amber2);stroke-width:2}
.mh-min{fill:color-mix(in srgb,var(--hud-ink) 18%,transparent);stroke:var(--hud-ink);stroke-width:1;stroke-dasharray:3 3;opacity:var(--op-min)}
.mh-pvm{display:block;font-size:var(--fs-caption);color:var(--ink-secondary)}
.mh-pw{fill:none;stroke:var(--hud-amber);stroke-width:12}
.mh-tgt{fill:var(--hud-ink)}
.mh-hit{fill:none;stroke:transparent;stroke-width:72;pointer-events:stroke;cursor:grab}
.msim-arc:focus{outline:none}
.msim-arc:focus-visible .mh-hit{stroke:color-mix(in srgb,var(--hud-amber) 14%,transparent)}
.mh-win{fill:color-mix(in srgb,var(--hud-green) 78%,transparent)}
.mh-ovr{fill:var(--hud-red)}
.mh-q{fill:none;stroke:var(--hud-orange);stroke-width:12}
.mh-q.win,.mh-q.done{stroke:var(--hud-green)}
.mh-q.danger,.mh-q.boom{stroke:var(--hud-red)}
.mh-cr{fill:none;stroke:var(--hud-green);stroke-width:5}
.mh-dg{fill:none;stroke:var(--hud-red);stroke-width:5}
.mh-lbl{font-size:var(--fs-5)}
.mh-tw,.mh-to{font-size:var(--fs-4)}
.mh-tw,.mh-to,.mh-lbl,.mh-pvl{font-weight:var(--fw-bold);letter-spacing:var(--tracking-label);text-transform:uppercase}
.mh-tw{fill:var(--hud-green)}
.mh-to{fill:var(--hud-red)}
.mh-lbl{fill:var(--hud-orange)}
.mh-pvl{color:var(--hud-ink2);font-size:var(--fs-label)}
.mh-pv{color:var(--hud-ink);font-size:var(--fs-stat-xl);font-weight:var(--fw-bold);font-variant-numeric:tabular-nums}
/* owner 2026-11-02: the laser power readout above the modifiers, out of the drawing (it covered the rock) */
.mh-pvb{display:flex;flex-direction:column;margin-bottom:var(--space-2)}
.mh-mod b{white-space:nowrap}
.msim-thrs{justify-content:center;flex-wrap:wrap;align-items:flex-end;margin:0 0 var(--space-3)}
.msim-thrs .msim-thr{height:120px}
/* owner 2026-11-02: the laser heads in the right panel, under the composition */
/* owner 2026-11-02: fracture mode as wide as the page, in three boxes: mining modules | rock (modifiers, rock, scan) | laser heads;
   the side boxes are as tall as the rock's and scroll on their own, so the rock never moves */
.msim-run:has(.mh-lay){max-width:none}
.mh-lay{display:grid;grid-template-columns:minmax(0,210px) minmax(0,1fr) minmax(0,210px);gap:var(--gap-panel);align-items:stretch;margin:0 0 var(--space-3)}
.mh-lay>.msim-hud{margin:0}
.mh-body{grid-template-columns:minmax(0,165px) minmax(0,1fr) minmax(0,185px)}
.mh-box{background:var(--hud-bg);border:1px solid var(--hud-line);border-radius:var(--r-box);color:var(--hud-ink)}
.mh-col{height:0;min-height:100%;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}
/* below 1300px the rock box spans the width (the drawing's text stays readable) and the two other boxes go under it */
@media (max-width:1300px){.mh-lay{grid-template-columns:repeat(2,minmax(0,1fr))}.mh-lay>.msim-hud{grid-column:1/-1;order:-1}.mh-col{height:auto;min-height:0;overflow:visible}}
@media (max-width:700px){.mh-lay{grid-template-columns:minmax(0,1fr)}}
@media (max-width:900px){.mh-body{grid-template-columns:minmax(0,1fr)}}
.mh-hd{display:flex;flex-direction:column;gap:var(--stack-item)}
.mh-hd .msim-thrs{margin:0}
.mh-hd .msim-ctl+.msim-ctl{margin-top:0}
/* owner 2026-11-01: each ship's bars with their laser button below and the link button as wide as the bars */
.msim-grp{display:flex;flex-direction:column;align-items:center;gap:var(--space-2)}
.msim-gr{display:flex;gap:var(--gap-cluster)}
.msim-tg .msim-fire{min-width:0;white-space:nowrap}
.msim-tg .msim-fire[aria-pressed=true]{background:var(--hud-beam);border-color:var(--hud-beam);color:var(--hud-bg)}
.msim-tg.sel .msim-thr{border-color:var(--hud-amber)}
.msim-lk{width:0;min-width:100%;display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);text-align:center}
.msim-lki{flex:none;width:22px;height:11px;fill:none;stroke:currentColor;stroke-width:2.4}
.msim-lk[aria-pressed=false] .msim-lki{opacity:var(--op-disabled)}
.msim-lk[aria-pressed=true]{border-color:var(--hud-amber2)}

/* Minería y comercio, pestaña de comercio (.tr-): rutas, simulador de operaciones y mercado */
/* owner 2026-11-08: the simulator and the best routes, two boxes of the same width and height */
.tr-top{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--gap-section);align-items:stretch}
@media (max-width:900px){.tr-top{grid-template-columns:1fr}}
.tr-sim{border-top:3px solid var(--line-brand)}
.tr-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--gap-cluster) var(--gap-panel)}
.tr-form label{display:flex;flex-direction:column;gap:var(--gap-tight-sm);font-size:var(--fs-label);color:var(--ink-label);text-transform:uppercase;letter-spacing:var(--tracking-label);min-width:0}
.tr-form label:first-child{grid-column:1/-1}
.tr-form select,.tr-form input{background:var(--surface-field);color:var(--ink-body);border:1px solid var(--line-field);border-radius:var(--r-control);padding:var(--field-pad);font:inherit;font-size:var(--fs-control);text-transform:none;letter-spacing:0;min-width:0;width:100%}
.tr-res{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--gap-cluster);margin-top:var(--stack-section)}
.tr-res>div{background:var(--surface-sunken);border:1px solid var(--line-card);border-radius:var(--r-control);padding:var(--pad-panel-sm);display:flex;flex-direction:column;gap:var(--gap-stack);min-width:0}
.tr-res span{font-size:var(--fs-label);color:var(--ink-label);text-transform:uppercase;letter-spacing:var(--tracking-label)}
.tr-res b{font-family:var(--f-mono);font-size:var(--fs-title);overflow:hidden;text-overflow:ellipsis}
.tr-res .tr-net.ok{border-color:var(--good);background:var(--good-soft)}
.tr-res .tr-net.ko{border-color:var(--bad);background:var(--bad-soft)}
.tr-res .tr-net b{font-size:var(--fs-figure)}
.tr-res .ok,.tr-net.ok b,.tr-m.ok{color:var(--good-strong)}
.tr-res .ko,.tr-net.ko b,.tr-m.ko{color:var(--bad)}
@media (max-width:600px){.tr-res{grid-template-columns:1fr 1fr}}
.tr-best{display:flex;flex-direction:column;gap:var(--gap-cluster-sm)}
.tr-route{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--gap-stack) var(--gap-panel);text-align:left;font:inherit;color:var(--ink-body);background:var(--surface-sunken);border:1px solid var(--line-card);border-left:3px solid var(--good);border-radius:var(--r-control);padding:var(--pad-cell-lg);cursor:pointer}
.tr-route:hover{border-color:var(--line-brand);border-left-color:var(--good)}
.tr-c{font-weight:var(--fw-semibold);font-size:var(--fs-body-md)}
.tr-p{font-family:var(--f-mono);font-weight:var(--fw-semibold);color:var(--good-strong);text-align:right;white-space:nowrap}
.tr-p small{font-weight:var(--fw-regular);color:var(--ink-note)}
.tr-leg{grid-column:1/-1;display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--gap-stack) var(--gap-cluster-sm);font-size:var(--fs-caption);color:var(--ink-secondary);min-width:0}
.tr-leg i{font-style:normal;overflow-wrap:anywhere;min-width:0}
.tr-leg i+i::before{content:"→ ";color:var(--ink-link)}
.tr-route .ty-meta{grid-column:1/-1}
.tr-mkt{display:flex;flex-direction:column;gap:var(--gap-cluster)}
.tr-mkt h3,.tr-h{margin:0;font-family:var(--f-display);font-size:var(--fs-title)}
.tr-mkt>.btn{align-self:flex-start}
.tr-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:var(--gap-cluster-sm)}
.tr-tile{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--gap-stack) var(--gap-cluster-sm);align-items:baseline;text-align:left;font:inherit;color:var(--ink-body);background:var(--surface-card);border:1px solid var(--line-card);border-radius:var(--r-control);padding:var(--pad-cell);cursor:pointer}
.tr-tile:hover,.tr-tile.on{border-color:var(--line-brand);background:var(--surface-active)}
.tr-tile>b{font-size:var(--fs-note);font-weight:var(--fw-semibold);overflow-wrap:anywhere}
.tr-m{font-family:var(--f-mono);font-size:var(--fs-caption);font-weight:var(--fw-semibold)}
.tr-bs{grid-column:1/-1;display:flex;justify-content:space-between;font-family:var(--f-mono);font-size:var(--fs-caption);color:var(--ink-note)}
.tr-bs i{font-style:normal}
.tr-bs i:first-child::before{content:"↓ " / "";color:var(--bad)}
.tr-bs i:last-child::before{content:"↑ " / "";color:var(--good-strong)}
/* v395: rutas encadenadas: añadir tramo, qué comprar en la estación y mapa de paradas */
.tr-form optgroup{font-style:normal;color:var(--ink-note)}
.tr-acts{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:var(--gap-cluster) var(--gap-section);margin-top:var(--stack-detail)}
.tr-acts .ty-note{margin:0}
.tr-acts [data-leg-add]{order:2;margin-left:auto}
.tr-next{margin-top:var(--stack-section);padding-top:10px;border-top:1px solid var(--line-row);display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:var(--gap-cluster-sm)}
.tr-next h4{grid-column:1/-1;margin:0 0 var(--stack-micro);font-size:var(--fs-label);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--ink-label);font-weight:var(--fw-semibold)}
.tr-next .ty-note{grid-column:1/-1;margin:0}
.tr-nb{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:1px var(--gap-cluster);text-align:left;font:inherit;color:var(--ink-body);background:var(--surface-sunken);border:1px solid var(--line-card);border-radius:var(--r-control);padding:6px 9px;cursor:pointer}
.tr-nb:hover{border-color:var(--line-brand);background:var(--surface-active)}
.tr-nb b{font-size:var(--fs-note);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tr-nb em{font-style:normal;font-family:var(--f-mono);font-size:var(--fs-caption);font-weight:var(--fw-semibold);color:var(--good-strong)}
.tr-nb span{grid-column:1/-1;font-size:var(--fs-caption);color:var(--ink-note);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tr-plan{border-top:3px solid var(--line-accent);margin-bottom:var(--gap-section);display:flex;flex-direction:column;gap:var(--gap-section)}
.tr-ph{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:var(--gap-cluster)}
.tr-ph h3{margin:0}
.tr-pa{display:flex;gap:var(--gap-cluster-sm)}
.tr-kp{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--gap-cluster)}
@media (max-width:600px){.tr-kp{grid-template-columns:1fr 1fr}}
.tr-kp>div{background:var(--surface-sunken);border:1px solid var(--line-card);border-radius:var(--r-control);padding:var(--pad-panel-sm);display:flex;flex-direction:column;gap:var(--gap-stack)}
.tr-kp span{font-size:var(--fs-label);color:var(--ink-label);text-transform:uppercase;letter-spacing:var(--tracking-label)}
.tr-kp b{font-family:var(--f-mono);font-size:var(--fs-stat-sm)}
.tr-kp .ok{color:var(--good-strong)}
.tr-kp .ko{color:var(--bad)}
.tr-stops{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;align-items:stretch;gap:var(--gap-panel) 28px}
.tr-stop{position:relative;display:flex;gap:var(--gap-panel);min-width:220px;max-width:340px;flex:1 1 240px;padding:var(--pad-notice);border:1px solid var(--line-card);border-radius:var(--r-card);background:var(--surface-sunken)}
.tr-stop+.tr-stop::before{content:"→";position:absolute;left:-21px;top:50%;transform:translateY(-50%);color:var(--ink-link);font-weight:var(--fw-bold)}
.tr-cash{margin:var(--gap-icon) 0 0;padding-top:var(--gap-icon);border-top:1px dashed var(--line-card);font-size:var(--fs-note);color:var(--ink-secondary)}
.tr-cash b.ok,.tr-stops small .ok{color:var(--good-strong)}
.tr-cash b.ko,.tr-stops small .ko{color:var(--bad)}
.tr-stop.jump{border-color:var(--brand-strong);box-shadow:var(--glow-panel-brand)}
.tr-stop.jump::after{content:"otro sistema";position:absolute;top:-9px;left:10px;font-size:var(--fs-caption);padding:0 6px;border-radius:var(--r-chip);background:var(--surface-card);color:var(--brand-strong);border:1px solid var(--brand-strong)}
.tr-stop>i{flex:none;display:grid;place-items:center;width:24px;height:24px;border-radius:var(--r-round);background:var(--fill-brand);color:var(--on-fill);font-style:normal;font-weight:var(--fw-bold);font-size:var(--fs-caption)}
.tr-stop>div{min-width:0;display:flex;flex-direction:column;gap:var(--gap-stack)}
.tr-stop>div>b{font-size:var(--fs-body-sm);line-height:var(--lh-125)}
.tr-stop>div>small{font-size:var(--fs-caption);color:var(--ink-note)}
.tr-stop ul{list-style:none;margin:var(--stack-detail-sm) 0 0;padding:0;display:flex;flex-direction:column;gap:var(--gap-tight)}
.tr-stop li{display:flex;justify-content:space-between;align-items:center;gap:var(--gap-cluster-sm);font-size:var(--fs-caption);padding:var(--pad-seg-sm);border-radius:var(--r-control);background:var(--surface-card)}
.tr-stop li.buy{border-left:3px solid var(--bad)}
.tr-stop li.sell{border-left:3px solid var(--good)}
.tr-stop li em{font-style:normal;font-family:var(--f-mono);font-weight:var(--fw-semibold)}
.tr-stop li em.ok{color:var(--good-strong)}
.tr-stop li em.ko{color:var(--bad)}
@media (max-width:600px){.tr-stops{flex-direction:column;gap:22px}.tr-stop{max-width:none}.tr-stop+.tr-stop::before{content:"↓";left:20px;top:-19px;transform:none}}
.tr-form .ty-combo input{padding-right:28px}
/* owner 2026-11-01: the leg profit on its own line under the sale */
.tr-stop li.sell{flex-direction:column;align-items:flex-start}
/* owner 2026-11-10: the leg is removed from its destination (the sale), in its top right corner */
.tr-stop li.sell{position:relative;padding-right:var(--space-6)}
.tr-stop li.sell>.mn-x{position:absolute;top:var(--gap-stack);right:var(--gap-stack);min-width:28px;min-height:28px;color:var(--ink-secondary);font-size:var(--fs-icon-lg);line-height:var(--lh-100)}
.tr-stop li.sell>.mn-x:hover{color:var(--bad)}
.tr-net{color:var(--ink-secondary)}
.tr-net em{font-size:var(--fs-body)}

/* Idiomas */
.lang-pick{position:absolute;top:0;right:0;z-index:var(--z-dropdown)}
.lang-btn{display:inline-flex;align-items:center;gap:var(--gap-cluster);border:1px solid var(--line-chip);background:var(--surface-control);color:var(--ink-body);border-radius:var(--r-control);padding:var(--pad-chip);font-size:var(--fs-control);cursor:pointer;box-shadow:var(--shadow-raise)}
.lang-btn:hover,.lang-btn[aria-expanded="true"]{border-color:var(--line-brand)}
.lang-caret{color:var(--ink-note);font-size:var(--fs-caption)}
.lang-flag{display:block;flex:none;border-radius:var(--r-swatch);box-shadow:0 0 0 1px rgba(0,0,0,.25)}
.lang-list{position:absolute;right:0;top:calc(100% + 6px);margin:0;padding:6px;list-style:none;background:var(--surface-card);border:1px solid var(--line-card);border-radius:var(--r-card);box-shadow:var(--shadow-raise);min-width:220px;display:grid;gap:var(--gap-stack)}
.lang-list li{display:flex;align-items:center;gap:var(--gap-section);padding:8px 10px;border-radius:var(--r-control);cursor:pointer;font-size:var(--fs-body)}
.lang-list li:hover,.lang-list li:focus{background:var(--surface-hover)}
.lang-list li[aria-selected="true"]{background:var(--surface-active);color:var(--ink-body);font-weight:var(--fw-semibold)}
@media (max-width:560px){.lang-btn span:not(.lang-caret){display:none}}
.lang-list[hidden]{display:none}

/* top right corner: language picker, then Ko-fi */
.top-right{position:absolute;top:0;right:0;z-index:var(--z-dropdown);display:flex;align-items:center;gap:var(--gap-cluster)}
.top-right .lang-pick{position:relative;top:auto;right:auto}
.theme-ico{width:var(--icon-md);height:var(--icon-md);flex:none;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.kofi-btn{display:inline-flex;align-items:center;gap:var(--pill-btn-gap);padding:var(--btn-pad);border:1px solid var(--line-chip);border-radius:var(--r-control);background:var(--surface-control);color:var(--ink-body);text-decoration:none;font-size:var(--fs-control);font-weight:var(--fw-semibold);box-shadow:var(--shadow-raise);white-space:nowrap}
.kofi-btn:hover{border-color:var(--line-brand);color:var(--ink-brand)}
.kofi-btn:focus-visible{outline:var(--focus-ring);outline-offset:var(--focus-offset)}
.kofi-btn svg{width:var(--icon-md);height:var(--icon-md);fill:none;stroke:currentColor;stroke-width:1.6;stroke-linejoin:round}
.kofi-btn .kofi-heart{fill:#ff5e5b;stroke:none}
@media (max-width:560px){.kofi-btn span{display:none}.kofi-btn{padding:var(--pill-btn-pad-compact)}}
/* v155: visible focus in the language list (keyboard) */
.lang-list li:focus-visible{outline:var(--focus-ring);outline-offset:var(--focus-offset-inset)}

/* Sugerencias */
.fb-btn{display:inline-flex;align-items:center;gap:var(--pill-btn-gap);padding:var(--btn-pad);border:1px solid var(--line-chip);border-radius:var(--r-control);background:var(--surface-control);color:var(--ink-body);font-size:var(--fs-control);font-weight:var(--fw-semibold);box-shadow:var(--shadow-raise);white-space:nowrap;cursor:pointer}
.fb-btn:hover{border-color:var(--line-brand);color:var(--ink-brand)}
.fb-btn:focus-visible{outline:var(--focus-ring);outline-offset:var(--focus-offset)}
.fb-btn svg{width:var(--icon-md);height:var(--icon-md);fill:none;stroke:currentColor;stroke-width:1.6;stroke-linejoin:round;stroke-linecap:round}
.fb-dlg{width:min(560px,calc(100vw - 32px))}
.fb-field{display:grid;gap:6px;font-size:var(--fs-body-sm);font-weight:var(--fw-semibold)}
.fb-field select,.fb-field textarea{font:inherit;font-weight:var(--fw-regular);color:var(--ink-body);background:var(--surface-field);border:1px solid var(--line-field);border-radius:var(--r-control);padding:var(--field-pad);font-size:var(--fs-control)}
.fb-field textarea{resize:vertical;min-height:120px;line-height:var(--lh-145)}
.fb-field select:focus,.fb-field textarea:focus{outline:none;border-color:var(--focus);box-shadow:var(--focus-field)}
.fb-hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}
.fb-foot{display:flex;justify-content:space-between;gap:var(--gap-section);font-size:var(--fs-caption);color:var(--ink-note)}
.fb-msg.bad{color:var(--bad)}
.btn.fb-send{background:var(--fill-brand);border-color:var(--fill-brand);color:var(--on-fill);font-weight:var(--fw-semibold)}
@media (max-width:560px){.fb-btn span{display:none}.fb-btn{padding:var(--pill-btn-pad-compact)}}

/* Cuenta */
.acc-btn{position:relative;display:inline-flex;align-items:center;gap:var(--pill-btn-gap);padding:var(--btn-pad);border:1px solid var(--line-chip);border-radius:var(--r-control);background:var(--surface-control);color:var(--ink-body);font-size:var(--fs-control);font-weight:var(--fw-semibold);box-shadow:var(--shadow-raise);white-space:nowrap;cursor:pointer;max-width:220px}
.acc-btn:hover{border-color:var(--line-brand);color:var(--ink-brand)}
.acc-btn:focus-visible{outline:var(--focus-ring);outline-offset:var(--focus-offset)}
.acc-btn svg{width:var(--icon-md);height:var(--icon-md);flex:none;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round}
.acc-label{overflow:hidden;text-overflow:ellipsis}
.acc-dot{width:8px;height:8px;border-radius:var(--r-round);flex:none;background:var(--good)}
.acc-btn[data-sync="saving"] .acc-dot{background:var(--fill-meter);animation:acc-pulse 1s ease-in-out infinite}
.acc-btn[data-sync="error"] .acc-dot,.acc-btn[data-sync="conflict"] .acc-dot{background:var(--bad)}
@keyframes acc-pulse{50%{opacity:.35}}
@media (prefers-reduced-motion:reduce){.acc-btn[data-sync="saving"] .acc-dot{animation:none}}
.acc-dlg{width:min(480px,calc(100vw - 32px))}
.acc-head{display:flex;justify-content:space-between;align-items:center}
.acc-head h2{margin:0}
.acc-x{border:0;background:none;color:var(--ink-note);font-size:var(--fs-title);cursor:pointer;padding:4px 6px;border-radius:var(--r-control)}
.acc-x:hover{color:var(--ink-body);background:var(--surface-hover)}
.acc-pane{display:grid;gap:var(--gap-section)}
.acc-pane[hidden]{display:none}
.acc-intro{margin:0;font-size:var(--fs-body-sm)}
.acc-tabs{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--line-card);border-radius:var(--r-box);overflow:hidden}
.acc-tabs button{border:0;background:transparent;color:var(--ink-secondary);padding:8px;font-weight:var(--fw-semibold);cursor:pointer}
.acc-tabs button[aria-selected="true"]{background:var(--surface-active);color:var(--ink-body);box-shadow:inset 0 -2px 0 var(--line-brand)}
.btn.acc-google{display:flex;align-items:center;justify-content:center;gap:var(--gap-panel);font-weight:var(--fw-semibold);text-decoration:none;color:var(--ink-body)}
.btn.acc-google[hidden]{display:none}
.acc-google svg{width:var(--icon-md);height:var(--icon-md)}
.acc-or{display:flex;align-items:center;gap:var(--gap-panel);color:var(--ink-note);font-size:var(--fs-caption)}
.acc-or::before,.acc-or::after{content:"";flex:1;height:1px;background:var(--surface-track)}
.acc-or[hidden]{display:none}
.acc-form{display:grid;gap:var(--gap-panel)}
.acc-field{display:grid;gap:5px;font-size:var(--fs-body-sm);font-weight:var(--fw-semibold)}
.acc-field[hidden]{display:none}
.acc-field input{font:inherit;font-weight:var(--fw-regular);color:var(--ink-body);background:var(--surface-field);border:1px solid var(--line-field);border-radius:var(--r-control);padding:var(--field-pad);font-size:var(--fs-control)}
.acc-field input:focus{outline:none;border-color:var(--focus);box-shadow:var(--focus-field)}
.acc-hint{margin:0;font-size:var(--fs-caption);color:var(--ink-note)}
.acc-hint[hidden]{display:none}
.acc-msg{margin:0;font-size:var(--fs-body-sm);min-height:0}
.acc-msg:empty{display:none}
.acc-msg.bad{color:var(--bad)}
.acc-msg.good{color:var(--ink-secondary)}
.acc-row{display:flex;justify-content:space-between;align-items:center;gap:var(--gap-panel);flex-wrap:wrap}
.btn.acc-main{background:var(--fill-brand);border-color:var(--fill-brand);color:var(--on-fill);font-weight:var(--fw-semibold)}
.acc-card{display:grid;gap:var(--gap-tight);padding:var(--pad-card);border:1px solid var(--line-card);border-radius:var(--r-box);background:var(--surface-sunken)}
.acc-email{font-weight:var(--fw-bold);overflow-wrap:anywhere}
.acc-verify,.acc-sync,.acc-sub{font-size:var(--fs-note);color:var(--ink-secondary)}
.acc-ok{color:var(--good)}
.acc-warn{color:var(--bad)}
.acc-list{display:grid;gap:var(--gap-cluster)}
.acc-item{display:flex;justify-content:space-between;align-items:center;gap:var(--gap-panel);flex-wrap:wrap;padding:10px 12px;border:1px solid var(--line-card);border-radius:var(--r-box)}
.acc-item a.btn{text-decoration:none;color:inherit;display:inline-flex}
.acc-more{display:block}
.acc-more summary{cursor:pointer}
.acc-more[open] summary{margin-bottom:var(--stack-detail)}
.acc-danger summary b{color:var(--bad)}
.acc-check{display:flex;align-items:center;gap:var(--gap-cluster);font-size:var(--fs-body-sm);cursor:pointer}
.acc-choice{display:grid;gap:var(--gap-panel)}
.acc-opt{display:grid;gap:var(--gap-tight);text-align:left;padding:var(--pad-card);border:1px solid var(--line-card);border-radius:var(--r-box);background:var(--surface-card);color:var(--ink-body);cursor:pointer}
.acc-opt:hover{border-color:var(--line-brand);background:var(--surface-active)}
.acc-opt span{font-size:var(--fs-note);color:var(--ink-secondary)}
@media (max-width:560px){.acc-btn .acc-label{display:none}.acc-btn{padding:var(--pill-btn-pad-compact)}}

/* notice after the .json export (v135) */
.acc-done{width:min(340px,calc(100vw - 32px));padding:0}
.acc-done-body{display:flex;align-items:center;justify-content:space-between;gap:var(--gap-section);padding:18px 16px 18px 22px}
.acc-done-body p{margin:0;font-size:var(--fs-subtitle);font-weight:var(--fw-semibold)}
.acc-done-x{flex:none}
/* v262: hangar sincronizado sin sesión: botón de cuenta en rojo y parpadeando hasta iniciar sesión */
.acc-btn.acc-nudge,.top-util .acc-btn.acc-nudge{color:var(--bad);border-color:var(--bad);background:color-mix(in srgb,var(--bad) 14%,var(--surface-card));animation:acc-nudge 1.1s ease-in-out infinite}
.acc-btn.acc-nudge:hover{color:var(--bad);border-color:var(--bad)}
@keyframes acc-nudge{50%{box-shadow:0 0 0 3px color-mix(in srgb,var(--bad) 35%,transparent),0 0 14px 2px color-mix(in srgb,var(--bad) 55%,transparent);background:color-mix(in srgb,var(--bad) 30%,var(--surface-card))}}
@media (prefers-reduced-motion:reduce){.acc-btn.acc-nudge{animation:none;box-shadow:0 0 0 2px color-mix(in srgb,var(--bad) 40%,transparent)}}
.acc-nudge-note{display:block;margin-top:var(--stack-detail);padding:var(--pad-notice);border:1px solid var(--line-error);border-radius:var(--r-box);background:color-mix(in srgb,var(--bad) 10%,transparent)}
.acc-row .linkbtn{display:inline-flex;align-items:center;min-block-size:var(--target-min)}
@media (pointer:coarse){.acc-row .linkbtn{min-block-size:var(--target-coarse)}}

/* Cabecera: utilidades arriba a la derecha y acciones del hangar. v136: account, changelog, language, Ko-fi / add by hand, sync, delete: one grid, all the size of Ko-fi */
header.top{flex-direction:row;flex-wrap:wrap;align-items:flex-start;justify-content:space-between}
.top-right{position:static;margin-left:auto;display:grid;gap:var(--gap-cluster);justify-items:end}
/* UX: small utilities on top, the two hangar actions below */
.top-util{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--gap-tight)}
.top-util .acc-btn,.top-util .fb-btn,.top-util .lang-btn,.top-util .kofi-btn,.top-util .priv-btn{width:auto;height:var(--ctl-h-top);padding:var(--pad-top-btn);gap:var(--gap-icon);font-size:var(--fs-chip);font-weight:var(--fw-semibold);border-color:transparent;background:transparent;box-shadow:none;color:var(--ink-secondary)}
.top-util .acc-btn:hover,.top-util .fb-btn:hover,.top-util .lang-btn:hover,.top-util .kofi-btn:hover:hover,.top-util .priv-btn:hover{border-color:var(--line-card);color:var(--ink-brand)}
.top-util .lang-pick{position:relative}
.top-util .priv-btn{display:inline-flex;align-items:center}
.top-main{display:grid;grid-template-columns:repeat(2,minmax(0,220px));gap:var(--gap-cluster)}
.top-main .btn.hdr-btn{height:46px!important}
.top-main .hdr-btn small{display:block!important;font-weight:var(--fw-regular);font-size:var(--fs-caption);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.acc-local{display:flex;align-items:center;justify-content:space-between;gap:var(--gap-section);margin-top:var(--stack-section)}
.btn.acc-reset{border-color:var(--bad);color:var(--bad);flex:none}
.btn.acc-reset:hover{background:var(--bad);color:var(--ink-inverse)}
.top-main>*{min-width:0}
.top-main .acc-btn,.top-main .fb-btn,.top-main .lang-pick,.top-main .lang-btn,.top-main .kofi-btn,.top-main .btn.hdr-btn{width:100%;height:34px;box-sizing:border-box}
.top-main .acc-btn,.top-main .fb-btn,.top-main .lang-btn,.top-main .kofi-btn,.top-main .btn.hdr-btn{justify-content:center;padding:var(--pad-chip);gap:var(--pill-btn-gap);font-size:var(--fs-control);font-weight:var(--fw-semibold);border-radius:var(--r-control);white-space:nowrap;overflow:hidden}
.top-main .btn.hdr-btn{font-family:inherit;letter-spacing:0;flex:none;box-shadow:var(--shadow-raise)}
.top-main .hdr-btn svg{width:var(--icon-md);height:var(--icon-md)}
.top-main .hdr-btn span{min-width:0;overflow:hidden;text-overflow:ellipsis;display:block}
.top-main .hdr-btn small{display:none}
@media (max-width:900px){.top-right{margin-left:0;width:100%;justify-items:stretch}.top-util{justify-content:flex-start}}
@media (max-width:560px){.top-main{grid-template-columns:repeat(2,minmax(0,1fr));width:100%}.top-util .priv-lbl,.top-util .fb-btn span{display:none}}

/* UX-006 (#177, owner 2026-11-03): compact header on phones: the data status and the patch fold behind one button, and the button
   subtitles get two lines instead of an ellipsis. Wide screens keep their layout: the status line needs the whole width */
.hdr-st{display:contents}
.hdr-st-btn{display:none}
@media (max-width:560px){
header.top .hdr-st-btn{grid-column:1/-1;justify-self:start;display:inline-flex;align-items:center;gap:var(--gap-icon);min-height:var(--target-min);padding:var(--pad-chip-sm);border:1px solid var(--line-chip);border-radius:var(--r-chip);background:var(--surface-control);color:var(--ink-secondary);font:inherit;font-size:var(--fs-caption);cursor:pointer}
header.top .hdr-st-btn::after{content:"";width:6px;height:6px;border:solid currentColor;border-width:0 1.5px 1.5px 0;transform:translateY(-2px) rotate(45deg);transition:transform var(--dur-2)}
header.top .hdr-st-btn[aria-expanded="true"]::after{transform:translateY(1px) rotate(-135deg)}
header.top .hdr-st{grid-column:1/-1;display:grid;gap:var(--gap-cluster)}
header.top .hdr-st-btn[aria-expanded="false"]+.hdr-st{display:none}
.top-main .hdr-btn span{overflow:visible}
.top-main .hdr-btn small{white-space:normal;overflow:visible;text-overflow:clip;line-height:var(--lh-125)}
.top-main .btn.hdr-btn{height:auto!important;min-height:46px}
}

/* Owner 2026-11-07: importes, tutorial, sugerencias y tema, solo con icono (el nombre sale al poner el puntero encima), en 2x2 junto a
   «Sincronizar hangar»: así el bloque de la derecha cabe en la línea del logo */
.top-acciones{display:flex;align-items:stretch;justify-content:flex-end;gap:var(--gap-cluster)}
.top-tools{display:grid;grid-template-columns:repeat(2,var(--ctl-h-top));grid-auto-rows:var(--ctl-h-top);gap:var(--gap-tight)}
.top-tools>*{position:relative;min-width:0}
.top-tools :is(.priv-btn,.fb-btn,.tut-btn,.lang-btn){display:inline-grid;place-items:center;width:var(--ctl-h-top);height:var(--ctl-h-top);padding:0;gap:0;border:1px solid var(--line-chip);border-radius:var(--r-control);background:var(--surface-control);color:var(--ink-secondary);box-shadow:none}
.top-tools :is(.priv-btn,.fb-btn,.tut-btn,.lang-btn):hover{border-color:var(--line-brand);color:var(--ink-brand)}
.top-tools button>span{display:none}
.top-tools .theme-pick{width:var(--ctl-h-top);height:var(--ctl-h-top)}
.top-tools .theme-pick .lang-list{right:0;left:auto;min-width:max-content}
.top-acciones .top-main .btn.hdr-btn{height:auto!important;min-height:46px}
@media (max-width:900px){.top-acciones{justify-content:flex-start}}
@media (max-width:560px){.top-acciones{flex-wrap:wrap;justify-content:flex-start;width:100%}.top-tools{grid-template-columns:repeat(4,var(--ctl-h-top));width:100%}.top-acciones .top-main{width:100%}}

/* Changelog del juego: ventana (reutiliza .patch-dlg de advisor.css) */
.cl-wrap{display:grid;gap:var(--gap-section);align-content:start}
.cl-seg{justify-self:start}
.cl-seg button.on{background:var(--fill-brand);color:var(--on-fill)}
.cl-ctl{display:flex;flex-wrap:wrap;gap:var(--gap-section)}
.cl-f{display:grid;gap:var(--gap-tight);font-size:var(--fs-body-sm);font-weight:var(--fw-semibold);min-width:0}
.cl-f select{font:inherit;font-weight:var(--fw-regular);color:var(--ink-body);background:var(--surface-field);border:1px solid var(--line-field);border-radius:var(--r-control);padding:var(--pad-chip);max-width:100%}
.cl-f select:focus{outline:none;border-color:var(--focus);box-shadow:var(--focus-field)}
.cl-body{display:grid;gap:var(--gap-panel);overflow-wrap:anywhere}
.cl-body :is(h3,h4,h5){margin:var(--stack-tight) 0 0}
.cl-body h5{font-size:var(--fs-note)} /* UA default (.83em) computed to 11.6 px */
.cl-dlg .srcs a{display:inline-block;padding-block:var(--space-1);min-block-size:var(--target-min)}
@media (pointer:coarse){.cl-dlg .srcs a{min-block-size:var(--target-coarse)}}
.cl-body p{margin:0;color:var(--ink-secondary);line-height:var(--lh-145)}
.cl-ed{display:grid;gap:var(--gap-panel);padding:var(--pad-card);border:1px solid var(--line-card);border-radius:var(--r-card);background:var(--surface-card)}
/* #482 (owner 2026-11-10): todos los parches seguidos, el más nuevo arriba; barra fija con LIVE/PTU, «Parche» (salta y sigue la
   lectura) y «Nave». Cada parche: cambios en cifras por categoría y objeto (miniatura, «+ (nuevo)», grupo ▸ cifra con % en verde/rojo)
   y notas de RSI (PTU: lo nuevo primero, la nota completa plegada). */
.cl-dlg{width:min(900px,calc(100vw - 32px))}
.cl-fijo{position:sticky;top:0;z-index:4;display:grid;gap:var(--gap-panel);padding-block:var(--space-2);margin-inline:calc(-1 * var(--space-2));padding-inline:var(--space-2) calc(var(--space-6) + var(--space-4));background:var(--surface-card);border-bottom:1px solid var(--line-card)}
.cl-ctl{display:flex;flex-wrap:wrap;gap:var(--gap-section)}
.cl-aviso{margin:0}
.cl-pars{display:grid;gap:var(--gap-section)}
.cl-par{display:grid;gap:var(--gap-panel);min-height:120px}
/* owner 2026-11-10: una línea bien clara entre parches */
.cl-par+.cl-par{border-top:3px solid var(--line-brand);padding-top:var(--space-5);margin-top:var(--space-4)}
.cl-par-h{padding:var(--space-2) var(--space-3);border-radius:var(--r-control);background:var(--surface-sunken);border-inline-start:4px solid var(--line-brand)}
.cl-par-h h3{margin:0;font-size:var(--fs-heading-sm)}
.cl-par-c{display:grid;gap:var(--gap-section);min-width:0}
.cl-cifras,.cl-notas{display:grid;gap:var(--gap-tight);min-width:0}
.cl-cifras h4,.cl-notas h4{margin:0}
.cl-notas>p{margin:0}
.cl-cat{margin:var(--space-2) 0 0;text-align:center;letter-spacing:var(--tracking-kicker);text-transform:uppercase;color:var(--ink-head)}
.cl-cif{list-style:none;margin:0;padding:0;display:grid}
.cl-obj{padding-block:var(--space-2);border-bottom:1px solid var(--line-row)}
.cl-obj:last-child{border-bottom:0}
.cl-obj-h{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}
.cl-img{width:48px;height:32px;object-fit:cover;border-radius:var(--r-control);border:1px solid var(--line-card);background:var(--surface-sunken)}
.cl-on{font-weight:var(--fw-semibold);color:var(--ink-head)}
.cl-signo{font-weight:var(--fw-semibold);font-size:var(--fs-icon);line-height:var(--lh-100)}
.cl-mas{color:var(--good)}
.cl-menos{color:var(--bad)}
.cl-est{font-size:var(--fs-body-sm)}
.cl-campos{margin:var(--space-1) 0 0;padding-inline-start:var(--space-4)}
.cl-campos ul{margin:0;padding-inline-start:var(--space-4);list-style:square}
.cl-grupo{font-weight:var(--fw-semibold);color:var(--ink-head)}
.cl-grupo li{font-weight:var(--fw-regular);color:var(--ink-body)}
.cl-k{color:var(--ink-brand)}
.cl-pct{font-size:var(--fs-body-sm)}
.cl-mejor .cl-pct{color:var(--good)}
.cl-peor .cl-pct{color:var(--bad)}
.cl-nuevo{display:grid;gap:var(--gap-panel)}
.cl-nuevo h5{margin:0}
.cl-todo>summary{cursor:pointer;font-weight:var(--fw-semibold);min-block-size:var(--target-min);display:flex;align-items:center}
.cl-todo[open]>summary{margin-bottom:var(--gap-panel)}
.cl-dlg .sheet-scroll{overflow-anchor:none} /* la compensación al cargar parches de encima es propia (changelog.js) */
.cl-img-w{object-fit:contain;background:var(--surface-sunken)}
.cl-chks{display:flex;flex-wrap:wrap;column-gap:var(--gap-section);align-self:end} /* owner 2026-11-11: las dos casillas en la misma línea */
.cl-chk{display:flex;align-items:center;gap:var(--space-2);align-self:end;min-block-size:var(--target-min);font-size:var(--fs-body-sm);font-weight:var(--fw-semibold);cursor:pointer}
.cl-chk input{inline-size:var(--space-4);block-size:var(--space-4);accent-color:var(--fill-brand)}
/* #537: con una ventana modal abierta, la página de detrás no se desplaza (una sola barra) */
html:has(dialog:modal),html:has(dialog.cl-dlg:modal) .adv-side{overflow:hidden}
/* #538: cifras que da la nota, «antes → después» destacado y la línea original al lado */
.cl-na{font-weight:var(--fw-semibold);color:var(--ink-head);font-variant-numeric:tabular-nums}
.cl-nt{color:var(--ink-secondary);font-size:var(--fs-body-sm)}
.cl-nota-cif .cl-campos{list-style:square}

/* v158: ocultar importes */
.priv-btn{display:inline-grid;place-items:center;width:34px;height:34px;padding:0;border:1px solid var(--line-field);border-radius:var(--r-control);background:var(--surface-card);color:var(--ink-secondary);box-shadow:var(--shadow);cursor:pointer;flex:none}
.priv-btn:hover{border-color:var(--line-brand);color:var(--ink-brand)}
.priv-btn:focus-visible{outline:2px solid var(--focus);outline-offset:var(--focus-offset)}
.priv-btn svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.priv-btn .eye-off,.sy-priv .priv-btn .eye-on{display:none}
.sy-priv .priv-btn .eye-off{display:block}
.sy-priv .priv-btn{border-color:var(--line-brand);color:var(--ink-brand);background:color-mix(in srgb,var(--fill-meter) 10%,var(--surface-card))}
.sy-priv :is(input[data-fe],input[data-fn],input.priceinput,#ms-paid,#mc-paid,#cf-price,#opt-budget,#opt-wbmin):not(:focus){color:transparent;text-shadow:0 0 7px var(--ink-body)}

/* Tutorial (v266): botón arriba y mensajes paso a paso junto a la zona iluminada */
.tut-btn{display:inline-flex;align-items:center;gap:var(--pill-btn-gap);padding:var(--btn-pad);border:1px solid var(--line-chip);border-radius:var(--r-control);background:var(--surface-control);color:var(--ink-body);font-size:var(--fs-control);font-weight:var(--fw-semibold);box-shadow:var(--shadow-raise);white-space:nowrap;cursor:pointer}
.tut-btn svg{width:var(--icon-md);height:var(--icon-md);flex:none;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linejoin:round;stroke-linecap:round}
.tut-btn:focus-visible{outline:var(--focus-ring);outline-offset:var(--focus-offset)}
.top-util .tut-btn{width:auto;height:var(--ctl-h-top);padding:var(--pad-top-btn);gap:var(--gap-icon);font-size:var(--fs-chip);font-weight:var(--fw-semibold);border-color:transparent;background:transparent;box-shadow:none;color:var(--ink-secondary)}
.top-util .tut-btn:hover{border-color:var(--line-card);color:var(--ink-brand)}
.tut-hole{position:fixed;z-index:var(--z-tour-hole);border-radius:var(--r-card);pointer-events:none;box-shadow:0 0 0 2px var(--line-brand),0 0 18px 2px color-mix(in srgb,var(--line-brand) 45%,transparent);transition:top .18s,left .18s,width .18s,height .18s}
.tut-pop{position:fixed;z-index:var(--z-tour-pop);width:min(360px,calc(100vw - 24px));display:grid;gap:var(--gap-panel);padding:14px 16px;background:var(--surface-card);color:var(--ink-body);border:1px solid var(--line-brand);border-radius:var(--r-4);box-shadow:0 18px 50px rgba(0,0,0,.5);font-size:13.5px;line-height:var(--lh-145)}
.tut-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--gap-panel)}
.tut-t{font-size:var(--fs-subtitle);color:var(--ink-brand)}
.tut-n{font-size:var(--fs-caption);color:var(--ink-note);white-space:nowrap}
.tut-x{margin:0;color:var(--ink-secondary)}
.tut-act{display:flex;align-items:center;gap:var(--gap-cluster);flex-wrap:wrap}
.tut-sp{flex:1}
.tut-skip{font-size:var(--fs-note);color:var(--bad);font-weight:var(--fw-semibold);text-shadow:0 0 8px color-mix(in srgb,var(--bad) 60%,transparent)}
.tut-skip:hover{color:var(--bad);text-shadow:0 0 12px var(--bad)}
.tut-end{background:var(--good-strong);border-color:var(--good-strong);color:var(--on-fill)}
.tut-end:hover{filter:brightness(1.1)}
@media (max-width:560px){.top-util .tut-btn span{display:none}.top-util .tut-btn{padding:var(--pad-control-sm)}}
@media (prefers-reduced-motion:reduce){.tut-hole{transition:none}}
.tut-dim{position:fixed;z-index:var(--z-tour-dim);background:rgba(3,9,11,.62);pointer-events:none}

.toast{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(16px + env(safe-area-inset-bottom,0px));background:var(--surface-card);color:var(--ink-body);border:1px solid color-mix(in srgb,var(--line-brand) 50%,var(--line-card));border-left:3px solid var(--line-brand);padding:9px 16px;border-radius:var(--r-box);font-size:var(--fs-body-sm);font-weight:var(--fw-medium);box-shadow:var(--shadow-raise),0 0 18px color-mix(in srgb,var(--line-brand) 18%,transparent);max-width:calc(100vw - 32px);opacity:0;transition:opacity var(--dur-3),transform var(--dur-3);transform:translate(-50%,6px);pointer-events:none;z-index:var(--z-toast)}
.toast.on{opacity:1;transform:translate(-50%,0)}
footer.site-foot{font-size:var(--fs-caption);color:var(--ink-note);display:grid;gap:var(--gap-icon);padding-top:18px;border-top:1px solid var(--line-card);letter-spacing:var(--tracking-1)}
footer.site-foot p{margin:0}
/* owner 2026-11-10: pie compacto a lo ancho (pensado para 1920 px): a la izquierda los dos avisos, a la derecha los enlaces */
@media (min-width:1000px){footer.site-foot{grid-template-columns:minmax(0,1fr) auto;column-gap:var(--space-6);align-items:center;padding-top:var(--gap-panel);row-gap:var(--gap-stack)}footer.site-foot>p{grid-column:1}footer.site-foot>.foot-links{grid-column:2;grid-row:1/span 2;margin-top:0;flex-wrap:nowrap}}
.foot-links{display:flex;flex-wrap:wrap;margin-top:8px}
.foot-link{font:inherit;font-size:var(--fs-body-sm);color:var(--ink-secondary);background:none;border:0;border-left:1px solid var(--line-card);padding:2px 18px;cursor:pointer;text-decoration:none}
.foot-link:first-child{border-left:0;padding-left:0}
.foot-link:hover{color:var(--ink-brand)}
.dlg-sources{width:min(640px,calc(100vw - 32px))}
.src-list{display:grid;gap:var(--gap-panel);font-size:var(--fs-body-sm);line-height:var(--lh-150);color:var(--ink-secondary)}
.src-list p{margin:0}
dialog.dlg[open]{position:fixed;top:0;right:0;bottom:0;left:0;inset:0;margin:auto;height:fit-content;max-height:calc(100vh - 32px);overflow:auto;z-index:var(--z-modal)}
dialog.dlg:not([open]){display:none}
dialog.dlg.dlg-float{box-shadow:0 0 0 100vmax var(--scrim),var(--shadow-modal)}

@media (prefers-reduced-motion:reduce){*{transition:none!important}}
/* UX-049: reserve the space JS fills in later (header lines, patch bar, utility column, tab bar) so mobile does not shift */
.stamp{min-height:17px}
#stamp-patch:empty{display:block;min-height:26px}
.top-right{min-height:84px}
#viewtabs{min-height:var(--target-coarse)}
@media (max-width:560px){.stamp{min-height:34px}#stamp-patch:empty{min-height:55px}}
@media (min-width:561px) and (max-width:900px){.top-right{min-height:118px}}
@media (max-width:340px){.top-right{min-height:118px}}
/* UX-029: minimum 24px targets; 44px with a coarse pointer */
button,.viewtabs a,select,summary,input:not([type=checkbox]):not([type=radio]):not([type=range]){min-height:var(--target-min)}
.sortbtn,.px-ast,.tb-ast{min-width:var(--target-min)}
.foot-link{min-height:var(--target-min);display:inline-flex;align-items:center}
.foot-links{gap:var(--gap-tight) 0}
@media (pointer:coarse){.btn,.sortbtn,.chipbtn,footer a,.foot-link,select,input:not([type=checkbox]):not([type=radio]):not([type=range]){min-height:var(--target-coarse)}}
/* UX-052: lighter tracking on small uppercase labels */
.eyebrow,th,.cat-tbl thead th{letter-spacing:var(--tracking-6)}
/* guía de colores del Planificador (columna derecha) */
/* owner 2026-10-31: in the options bar of Planificador and Cadenas, to the left of the filters */
.controls .cc-guide{padding-right:var(--gap-page);border-right:1px solid var(--line-card)}
.controls .cc-guide h3{margin:0;font-size:var(--fs-body-sm)}
@media (max-width:1100px){.controls .cc-guide{padding:0 0 var(--space-3);border-right:0;border-bottom:1px solid var(--line-card)}}
.cc-guide p{margin:var(--gap-icon) 0 0;font-size:var(--fs-note);line-height:var(--lh-145);color:var(--ink-secondary)}
.cc-guide .sw{display:inline-block;vertical-align:middle;margin-right:var(--gap-icon);width:16px;height:4px;border-radius:var(--r-swatch)}
.cc-guide .sw.s-wb{background:var(--wb)}
.cc-guide .sw.s-now{background:var(--fill-accent)}
/* the text of a long option wraps beside its box instead of falling under it */
.controls .ctl-col>.check{flex-wrap:nowrap;align-items:flex-start}.controls .ctl-col>.check input{flex:none;margin-top:var(--stack-micro)}
/* owner 2026-11-01: every info asterisk in the brand turquoise with a white-hot core and a glow, like the logo */
.px-ast,.tb-ast{text-shadow:var(--ast-glow)}

/* owner 2026-11-01: every field, list and checkbox of the site in its own dark style (some still showed the browser grey); zero specificity, so any
   control with its own style keeps it */
:where(input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]):not([type=file]):not([type=submit]):not([type=button]):not([type=reset]),select,textarea){background-color:var(--surface-field);color:var(--ink-body);border:1px solid var(--line-field);border-radius:var(--r-control)}
:where(select) option{background:var(--surface-control);color:var(--ink-body)}
:where(input,textarea)::placeholder{color:var(--ink-note)}
:where(input[type=checkbox]){-webkit-appearance:none;appearance:none;width:16px;height:16px;flex:none;margin:0;vertical-align:middle;border:1px solid var(--line-field);border-radius:var(--r-micro);background:var(--surface-field) no-repeat center/100%;cursor:pointer}
:where(input[type=checkbox]):checked{background-color:var(--fill-brand);border-color:var(--fill-brand);background-image:var(--chk-mark)}
:where(input[type=checkbox]):focus-visible{outline:var(--focus-ring);outline-offset:var(--focus-offset)}
:where(input[type=checkbox]):disabled{opacity:var(--op-disabled);cursor:not-allowed}/* #232 main boxes get a faint version of the export button glow: brand-lit left edge, accent-lit right edge, plain middle,
   a lightly tinted border and a soft halo. One block on purpose: deleting it reverts the whole effect. */
:root{--shadow-glow-sync:0 0 14px color-mix(in srgb,var(--brand) 60%,transparent),0 0 44px color-mix(in srgb,var(--accent) 40%,transparent);--shadow-glow-sync-hover:0 0 18px color-mix(in srgb,var(--brand) 75%,transparent),0 0 56px color-mix(in srgb,var(--accent) 50%,transparent);--shadow-glow-soft:0 0 16px color-mix(in srgb,var(--brand) 22%,transparent);--shadow-glow-soft-hover:0 0 20px color-mix(in srgb,var(--brand) 34%,transparent);--shadow-glow-export:0 0 12px color-mix(in srgb,var(--brand) 45%,transparent),0 0 30px color-mix(in srgb,var(--accent) 28%,transparent);--shadow-glow-export-hover:0 0 16px color-mix(in srgb,var(--brand) 60%,transparent),0 0 40px color-mix(in srgb,var(--accent) 40%,transparent);--shadow-glow-export-on:0 0 0 2px color-mix(in srgb,var(--brand) 55%,transparent),0 0 16px color-mix(in srgb,var(--brand) 60%,transparent),0 0 40px color-mix(in srgb,var(--accent) 40%,transparent);--box-glow-a:color-mix(in srgb,var(--brand) 6%,transparent);--box-glow-b:color-mix(in srgb,var(--accent) 5%,transparent);--box-glow-line:color-mix(in srgb,var(--line-card) 78%,var(--brand));--box-glow-halo:0 0 22px color-mix(in srgb,var(--brand) 7%,transparent);--pad-cfg-slot:5px 7px /* off-scale */;--gap-hair:1px /* off-scale */;--dur-flash:.7s;--shadow-ring-brand:0 0 0 2px var(--line-brand);--shadow-flash:0 0 0 2px var(--line-brand),0 0 18px color-mix(in srgb,var(--brand) 70%,transparent),0 0 34px color-mix(in srgb,var(--accent) 50%,transparent);--mask-solid:#000;--mask-half:rgba(0,0,0,.55);--op-ghost:.6;--inset-halo:-10px;--op-src:.3;--op-min:.7;--shadow-ghost:0 8px 28px rgba(0,0,0,.45),0 0 12px color-mix(in srgb,var(--brand) 35%,transparent);--dur-nm:.18s;--dur-tab:.22s;--dur-tape:.8s;--z-subbar:29;--tape-a:#f5c518;--tape-b:#111;--opts-rise:-27px;--pad-select:5px 9px /* off-scale */;--fade-ship:linear-gradient(to top,rgba(5,10,15,.9),rgba(5,10,15,.6) 55%,transparent);--ink-on-photo:#fff;--ink-on-photo-soft:rgba(255,255,255,.78);--shadow-text-photo:0 1px 3px rgba(0,0,0,.8)}
body :is(.card,.box,.adv-card,.ty-card,.ty-panel,.ty-bar,.mn-card,.fl-ship,.ms-card,.tb-card,.summary,.controls,.tablewrap,.ty-puadd,.ms-side,.ob-secs){background-image:linear-gradient(110deg,var(--box-glow-a),transparent 28%,transparent 72%,var(--box-glow-b));border-color:var(--box-glow-line)}
body :is(.card,.box,.summary){box-shadow:var(--shadow-raise),var(--box-glow-halo)}
body .summary{position:relative}
body .summary::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:linear-gradient(110deg,var(--box-glow-a),transparent 28%,transparent 72%,var(--box-glow-b))}
body .adv-card{box-shadow:var(--shadow),var(--box-glow-halo)}
body .mn-card{box-shadow:var(--mn-top),var(--box-glow-halo)}
body :is(.ty-card,.ty-panel,.ty-bar,.fl-ship,.tb-card,.controls,.ty-puadd,.ms-side,.ob-secs){box-shadow:var(--box-glow-halo)}
/* #251 (owner 2026-11-02): the turquoise fills take the sync button's two-tone lit look, a bit softer. --duo-a/--duo-b resolve on :root,
   so the tools that remap --accent to turquoise still get the teal → blue pair */
:root{--duo-a:var(--fill-brand);--duo-b:color-mix(in srgb,var(--fill-accent) 85%,var(--fill-brand));--fill-duo:linear-gradient(110deg,var(--duo-a) 15%,var(--duo-b));
  --line-duo:color-mix(in srgb,var(--duo-a) 60%,var(--duo-b));--glow-duo:0 0 8px color-mix(in srgb,var(--duo-a) 38%,transparent),0 0 22px color-mix(in srgb,var(--duo-b) 22%,transparent);
  --glow-duo-sm:0 0 5px color-mix(in srgb,var(--duo-a) 35%,transparent);--glow-duo-svg:drop-shadow(0 0 3px color-mix(in srgb,var(--duo-a) 40%,transparent))}
.sy-defs{position:absolute;width:0;height:0;overflow:hidden}.sy-duo-a{stop-color:var(--duo-a)}.sy-duo-b{stop-color:var(--duo-b)}
.btn.brand,.bm-btn,.btn.acc-main,.btn.fb-send,.btn.ref-go,:is(#view-builds,#view-missions,#view-mine,#view-trade,#ty-comp,#ty-craft,#ty-paint) .btn.primary{background:var(--fill-duo);border-color:var(--line-duo);box-shadow:var(--glow-duo)}
:where(input[type=checkbox]):checked{background-image:var(--chk-mark),var(--fill-duo);border-color:var(--line-duo);box-shadow:var(--glow-duo-sm)}
.role-n,.more-ico{background:var(--fill-duo);box-shadow:var(--glow-duo-sm)}
.sync-bar i,.cmp-hbar i{background:var(--fill-duo)}
.fl-bar.mine rect{fill:url(#sy-duo)}
/* #181: items beyond «Cargar más» on phones (rutas.js) */
[data-sy-more]{display:none!important}
.btn.sy-more{display:flex;width:100%;justify-content:center;margin-top:var(--gap-cluster);min-height:var(--target-min)}
