/* v0.3.41 UI structure modularization foundation: oni.css remains the legacy bridge. Tokens/themes/shell/components/dashboard/mobile rules are layered after this file. */
:root{--bg:#02070a;--panel:#081218;--panel2:#0b1720;--text:#f2f7f8;--muted:#7e9299;--cyan:#00f5ff;--red:#ff1f3d;--border:rgba(0,245,255,.18)}
*{box-sizing:border-box} body{margin:0;background:radial-gradient(circle at 80% 0%,rgba(255,31,61,.14),transparent 30%),radial-gradient(circle at 20% 20%,rgba(0,245,255,.10),transparent 35%),var(--bg);color:var(--text);font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif}.topbar{height:72px;display:flex;align-items:center;gap:28px;padding:0 28px;border-bottom:1px solid var(--border);background:rgba(2,7,10,.9);position:sticky;top:0}.brand{font-size:24px;font-weight:800}.brand small{display:block;font-size:12px;color:var(--muted);font-weight:500}.oni{color:var(--red);text-shadow:0 0 12px rgba(255,31,61,.5)}nav{flex:1}nav a{color:var(--muted);text-decoration:none;margin-right:18px}nav a:hover{color:var(--cyan)}button{background:linear-gradient(90deg,var(--red),#b60f6d);color:white;border:0;border-radius:8px;padding:10px 14px;cursor:pointer}input{background:#050d12;border:1px solid var(--border);color:var(--text);border-radius:8px;padding:10px;margin:4px}.page{padding:28px}.cards,.grid-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px}.card,.panel,.login-card{background:linear-gradient(180deg,rgba(8,18,24,.92),rgba(5,13,18,.9));border:1px solid var(--border);border-radius:16px;padding:20px;box-shadow:0 0 30px rgba(0,245,255,.06)}.card label{display:block;color:var(--muted);text-transform:uppercase;font-size:12px;letter-spacing:.08em}.card strong{display:block;font-size:28px;margin-top:10px}.panel{margin-top:20px}.badge{border:1px solid var(--cyan);color:var(--cyan);padding:3px 8px;border-radius:999px;font-size:12px}table{width:100%;border-collapse:collapse;margin-top:18px;background:rgba(8,18,24,.65);border:1px solid var(--border);border-radius:16px;overflow:hidden}th,td{text-align:left;padding:12px;border-bottom:1px solid rgba(255,255,255,.06)}th{color:var(--cyan);font-size:12px;text-transform:uppercase;letter-spacing:.08em}.login-card{width:min(420px,92vw);margin:12vh auto}.login-card h1{font-size:42px;margin:0 0 8px}.login-card label{display:block;color:var(--muted);margin-top:14px}.login-card input{width:100%;margin:4px 0 0}.login-card button{width:100%;margin-top:20px}.error{background:rgba(255,31,61,.15);border:1px solid rgba(255,31,61,.45);padding:10px;border-radius:8px}.inline-form,.asset-form{margin:18px 0}.grid-list a{text-decoration:none;color:var(--text)}
.form-row { display:flex; gap:12px; margin: 12px 0 24px; }
.form-row input { flex:1; }
.button-small { padding:6px 10px; border:1px solid rgba(0,245,255,.35); border-radius:8px; text-decoration:none; }
.asset-header { display:flex; justify-content:space-between; align-items:center; gap:24px; }
.status-pill { border:1px solid rgba(0,245,255,.35); border-radius:999px; padding:8px 14px; text-transform:uppercase; color:#00f5ff; }
.kpi-grid { display:grid; grid-template-columns: repeat(5, minmax(0,1fr)); gap:14px; margin: 20px 0; }
.card { background:rgba(8,18,24,.85); border:1px solid rgba(0,245,255,.15); border-radius:14px; padding:14px; }
.card span { display:block; color:#7e9299; font-size:.82rem; }
.card strong { display:block; margin-top:8px; font-size:1.25rem; }
.card small { color:#7e9299; }
.chart-card { background:rgba(5,11,16,.9); border:1px solid rgba(0,245,255,.18); border-radius:16px; padding:8px; margin:12px 0 24px; }
.chart-toolbar { display:flex; gap:8px; margin:16px 0 8px; }
.chart-toolbar button { background:rgba(8,18,24,.9); color:#c8d7dc; border:1px solid rgba(0,245,255,.25); border-radius:8px; padding:7px 12px; }
.muted { color:#7e9299; }
@media (max-width: 1100px) { .kpi-grid { grid-template-columns: repeat(2, minmax(0,1fr)); } }
.hero-panel { margin-bottom: 18px; }
.grid { display: grid; gap: 16px; }
.cards { grid-template-columns: repeat(4, minmax(0, 1fr)); margin-bottom: 16px; }
.two-col { grid-template-columns: repeat(2, minmax(0, 1fr)); margin-bottom: 16px; }
.card, .panel { background: rgba(8,18,24,.86); border: 1px solid rgba(0,245,255,.18); border-radius: 16px; padding: 18px; box-shadow: 0 0 24px rgba(0,245,255,.05); }
.card .label { display:block; color:#7e9299; text-transform:uppercase; font-size:12px; letter-spacing:.08em; }
.card strong { display:block; font-size:30px; margin:8px 0; color:#f2f7f8; }
.card small, .muted { color:#7e9299; }
.inline-form { display:inline-block; margin: 6px 10px 6px 0; }
.stack-form { display:grid; gap:10px; margin-top:12px; }
.stack-form input { width:100%; }
.check { display:flex; gap:8px; align-items:center; }
.check input { width:auto; }
.btn { border: 1px solid rgba(0,245,255,.35); background:rgba(0,245,255,.08); color:#f2f7f8; padding:10px 14px; border-radius:10px; cursor:pointer; }
.btn.primary { border-color:rgba(0,245,255,.6); box-shadow:0 0 16px rgba(0,245,255,.12); }
.btn.danger { border-color:rgba(255,31,61,.65); background:rgba(255,31,61,.10); box-shadow:0 0 16px rgba(255,31,61,.12); }
.table { width:100%; border-collapse:collapse; font-size:14px; }
.table th, .table td { border-bottom:1px solid rgba(255,255,255,.08); padding:9px 8px; text-align:left; vertical-align:top; }
.table.compact { font-size:12px; }
.status { padding:3px 8px; border-radius:999px; background:rgba(126,146,153,.18); }
.status.ok { background:rgba(0,245,255,.16); color:#00f5ff; }
.status.running, .status.queued { background:rgba(255,205,64,.16); color:#ffd166; }
.status.failed { background:rgba(255,31,61,.16); color:#ff5a70; }
.truncate { max-width:460px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.list { padding-left:18px; }
hr { border:0; border-top:1px solid rgba(255,255,255,.09); margin:16px 0; }
@media (max-width: 1000px) { .cards, .two-col { grid-template-columns:1fr; } }

/* v0.2.1 admin progress / ETA */
.progress-cell { min-width: 220px; }
.progress-meta { font-size: 0.85rem; color: var(--text-muted, #8fa3ad); margin-bottom: 0.25rem; }
.progress { height: 8px; background: rgba(255,255,255,0.08); border: 1px solid rgba(0,245,255,0.18); border-radius: 999px; overflow: hidden; margin: 0.15rem 0 0.25rem; }
.progress span { display: block; height: 100%; max-width: 100%; background: linear-gradient(90deg, #00f5ff, #ff1f3d); box-shadow: 0 0 12px rgba(0,245,255,0.55); }
.status.partial { color: #ffd166; border-color: rgba(255,209,102,0.35); }
.status.running { color: #00f5ff; border-color: rgba(0,245,255,0.35); }
.status.failed { color: #ff4d6d; border-color: rgba(255,77,109,0.35); }
.status.ok { color: #6ef7b4; border-color: rgba(110,247,180,0.35); }


/* v0.2.14 maintenance UI polish */
a { color: var(--cyan); text-decoration: none; }
a:hover { color: #ffffff; }
.table-scroll { width: 100%; overflow-x: auto; }
.maintenance-table { min-width: 1280px; table-layout: fixed; }
.maintenance-table th:nth-child(1), .maintenance-table td:nth-child(1) { width: 44px; }
.maintenance-table th:nth-child(2), .maintenance-table td:nth-child(2) { width: 130px; }
.maintenance-table th:nth-child(3), .maintenance-table td:nth-child(3) { width: 88px; }
.maintenance-table th:nth-child(4), .maintenance-table td:nth-child(4) { width: 230px; }
.maintenance-table th:nth-child(5), .maintenance-table td:nth-child(5) { width: 210px; }
.maintenance-table th:nth-child(6), .maintenance-table td:nth-child(6) { width: 90px; }
.maintenance-table th:nth-child(7), .maintenance-table td:nth-child(7) { width: 70px; }
.maintenance-table th:nth-child(8), .maintenance-table td:nth-child(8) { width: 95px; }
.maintenance-table th:nth-child(10), .maintenance-table td:nth-child(10) { width: 100px; }
.maintenance-table th:nth-child(11), .maintenance-table td:nth-child(11) { width: 112px; }
.current-cell span, .message-cell span { display: block; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.links-cell { white-space: nowrap; }
.link-row { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.link-pill { display: inline-flex; align-items: center; justify-content: center; min-height: 30px; padding: 5px 10px; margin: 2px 4px 2px 0; border: 1px solid rgba(0,245,255,.35); border-radius: 999px; background: rgba(0,245,255,.07); color: #dffbff; font-weight: 700; font-size: 12px; text-decoration: none; }
.link-pill:hover { background: rgba(0,245,255,.18); color: #ffffff; box-shadow: 0 0 14px rgba(0,245,255,.16); }
.actions-cell { white-space: nowrap; }
.actions-cell .inline-form { display: inline-block; margin: 2px 4px 2px 0; }
.btn.small { padding: 7px 10px; border-radius: 9px; font-size: 12px; font-weight: 700; }
.status.imported, .status.imported_with_warnings { background: rgba(255,209,102,.16); color: #ffd166; }
.status.imported { background: rgba(110,247,180,.16); color: #6ef7b4; }
@media (max-width: 900px) { .page { padding: 16px; } .maintenance-table { min-width: 1180px; } }

/* v0.2.16 BNF sequence timing layer */
.sequence-panel { margin: 18px 0; }
.sequence-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 12px; margin-top: 12px; }
.sequence-grid div { border: 1px solid rgba(0,245,255,.14); border-radius: 12px; padding: 12px; background: rgba(5,11,16,.55); }
.sequence-grid span { display:block; color:#7e9299; font-size:12px; text-transform:uppercase; letter-spacing:.06em; }
.sequence-grid strong { display:block; margin-top:6px; font-size:16px; }
.candidate-table td strong { color:#f2f7f8; }
.badge.sequence-up { background:rgba(110,247,180,.16); color:#6ef7b4; }
.badge.sequence-down { background:rgba(255,31,61,.16); color:#ff5a70; }
.badge.sequence-neutral { background:rgba(255,209,102,.16); color:#ffd166; }
@media (max-width: 1100px) { .sequence-grid { grid-template-columns: repeat(2, minmax(0,1fr)); } }

/* v0.2.19 analysis lifecycle / typeahead additions */
.search-shell { margin: 1rem 0 1.25rem; }
.search-shell input { width: 100%; max-width: 920px; }
.typeahead-results { display: grid; gap: .55rem; margin: 1rem 0 1.5rem; }
.typeahead-row { display: block; padding: .9rem 1rem; border: 1px solid rgba(0,245,255,.22); border-radius: 14px; background: rgba(5,14,18,.86); text-decoration: none; }
.typeahead-row:hover { border-color: rgba(0,245,255,.55); transform: translateY(-1px); }
.typeahead-meta { margin-top: .35rem; color: #9fb2bb; font-size: .9rem; }
.mini-panel { padding: .85rem 1rem; }
.chart-source-note { margin: .75rem 0 .5rem; }

/* v0.2.20 watchlist add flow */
.add-watchlist-panel, .search-action-panel { margin: 16px 0; }
.watchlist-add-form { display: flex; flex-wrap: wrap; gap: 10px; align-items: end; margin-top: 10px; }
.watchlist-add-form label { display: grid; gap: 5px; color: #9fb2bb; font-size: 13px; }
.watchlist-add-form select, .watchlist-add-form input, .search-action-panel select { min-height: 38px; }
.hidden { display: none !important; }
.selected-asset-label { min-width: 260px; padding: 10px 12px; border: 1px solid rgba(0,245,255,.20); border-radius: 10px; background: rgba(5,11,16,.55); }
.result-with-actions { display: grid; grid-template-columns: 1fr auto; gap: 14px; align-items: center; }
.typeahead-main { display: block; text-decoration: none; }
.typeahead-actions { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.typeahead-button { width: 100%; color: inherit; text-align: left; cursor: pointer; }

/* v0.3.6 broker-style asset search mode */
.search-mode-toggle {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  width: fit-content;
  margin-top: 10px;
  padding: 9px 12px;
  border: 1px solid rgba(0,245,255,.24);
  border-radius: 999px;
  background: rgba(5,14,18,.78);
  color: var(--text);
  cursor: pointer;
}
.search-mode-toggle input {
  width: auto;
  accent-color: #00f5ff;
}
.search-mode-toggle span { display: grid; gap: 1px; line-height: 1.15; }
.search-mode-toggle strong { font-size: .9rem; letter-spacing: .02em; }
.search-mode-toggle small { color: #9fb2bb; font-size: .78rem; }
.search-mode-toggle.compact { margin: 8px 0 0; }
@media (max-width: 700px) {
  .search-mode-toggle { width: 100%; justify-content: flex-start; border-radius: 14px; }
}
@media (max-width: 900px) { .result-with-actions { grid-template-columns: 1fr; } .watchlist-add-form { display: grid; } }

/* v0.2.21 chart usability and form help */
.chart-toolbar button.active { border-color: rgba(0,245,255,.75); color: #ffffff; box-shadow: 0 0 14px rgba(0,245,255,.16); }
.chart-shell { position: relative; margin: 12px 0 10px; }
.chart-shell .chart-card { height: 560px; width: 100%; margin: 0; padding: 0; overflow: hidden; }
.chart-legend { min-height: 34px; margin: 8px 0; padding: 8px 10px; border: 1px solid rgba(0,245,255,.14); border-radius: 10px; background: rgba(5,11,16,.55); color: #c8d7dc; font-size: 13px; }
.chart-tooltip { position: absolute; z-index: 5; min-width: 230px; pointer-events: none; padding: 10px 12px; border: 1px solid rgba(0,245,255,.32); border-radius: 12px; background: rgba(5,11,16,.94); box-shadow: 0 10px 30px rgba(0,0,0,.35), 0 0 18px rgba(0,245,255,.12); color: #f2f7f8; font-size: 12px; }
.chart-tooltip-date { color: #00f5ff; font-weight: 800; margin-bottom: 7px; }
.chart-tooltip-grid { display: grid; grid-template-columns: 1fr auto; gap: 4px 14px; }
.chart-tooltip-grid span { color: #9fb2bb; }
.chart-tooltip-grid strong { color: #f2f7f8; font-weight: 700; }
.help-box { margin-top: 12px; padding: 10px 12px; border: 1px solid rgba(0,245,255,.16); border-radius: 12px; background: rgba(5,11,16,.42); }
.help-box summary { cursor: pointer; color: #00f5ff; font-weight: 700; }
.help-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; margin-top: 10px; color: #9fb2bb; }
.help-grid p { margin: 6px 0 0; line-height: 1.45; }
.help-grid strong { color: #f2f7f8; }
@media (max-width: 900px) { .help-grid { grid-template-columns: 1fr; } .chart-shell .chart-card { height: 460px; } }


/* v0.2.22 BNF strategy cluster defaults */
.strategy-default-list { display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:10px; margin-top:10px; }
.strategy-default-list div { border:1px solid rgba(0,245,255,.12); border-radius:10px; padding:10px; background:rgba(5,11,16,.45); }
.strategy-default-list strong { display:block; color:#f2f7f8; margin-bottom:4px; }
.strategy-default-list span { display:block; color:#9fb2bb; font-size:13px; line-height:1.35; }
.watchlist-add-form select { background:#050d12; border:1px solid var(--border); color:var(--text); border-radius:8px; padding:10px; }
.search-action-panel label { display:inline-grid; gap:5px; margin-right:10px; color:#9fb2bb; font-size:13px; }
.search-action-panel select { background:#050d12; border:1px solid var(--border); color:var(--text); border-radius:8px; padding:10px; }

/* v0.2.23 watchlist edit and research usability */
.watchlist-item-list { display: grid; gap: 1rem; }
.watchlist-item-card { border: 1px solid rgba(0, 255, 255, 0.18); border-radius: 16px; padding: 1rem; background: rgba(2, 14, 18, 0.7); }
.watchlist-item-card summary { cursor: pointer; display: flex; justify-content: space-between; gap: 1rem; align-items: center; font-weight: 700; }
.watchlist-item-edit-form { margin-top: 1rem; display: grid; gap: 1rem; }
.form-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: .75rem; align-items: end; }
.watchlist-item-edit-form textarea { width: 100%; min-height: 80px; resize: vertical; }
.button-row { display: flex; gap: .75rem; align-items: center; flex-wrap: wrap; }
.research-watchlist table td { vertical-align: top; }

/* v0.2.25 explicit asset chart time axis */
.chart-shell .chart-card {
  height: 540px;
  border-bottom-left-radius: 0;
  border-bottom-right-radius: 0;
  border-bottom: 0;
}
.chart-date-axis {
  position: relative;
  height: 38px;
  margin: 0 0 10px;
  padding: 0 56px 0 12px;
  border: 1px solid rgba(0,245,255,.18);
  border-top: 1px solid rgba(0,245,255,.25);
  border-bottom-left-radius: 16px;
  border-bottom-right-radius: 16px;
  background: rgba(5,11,16,.92);
  color: #9fb2bb;
  font-size: 12px;
  font-weight: 700;
  overflow: hidden;
}
.chart-date-axis::before {
  content: "";
  position: absolute;
  left: 12px;
  right: 56px;
  top: 10px;
  height: 1px;
  background: rgba(255,255,255,.08);
}
.chart-date-axis-tick {
  position: absolute;
  top: 15px;
  transform: translateX(-50%);
  white-space: nowrap;
}
.chart-date-axis-tick::before {
  content: "";
  position: absolute;
  top: -7px;
  left: 50%;
  width: 1px;
  height: 6px;
  background: rgba(0,245,255,.32);
}
.chart-date-axis-tick:first-child { transform: translateX(0); }
.chart-date-axis-tick:last-child { transform: translateX(-100%); }
@media (max-width: 900px) {
  .chart-shell .chart-card { height: 430px; }
  .chart-date-axis { padding-right: 24px; }
  .chart-date-axis::before { right: 24px; }
}

/* v0.2.26 chart axis/crosshair alignment fix */
.chart-date-axis { position: relative; }
.chart-crosshair-date {
  position: absolute;
  top: 2px;
  transform: translateX(-50%);
  padding: 2px 7px;
  border: 1px solid rgba(0,245,255,.38);
  border-radius: 999px;
  background: rgba(0,18,24,.98);
  color: #e7f7fb;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .02em;
  z-index: 3;
  pointer-events: none;
  white-space: nowrap;
}
.chart-date-axis-empty {
  position: absolute;
  top: 15px;
  left: 12px;
  color: #9fb2bb;
}

/* v0.2.27 roadmap features */
.tabs { display:flex; gap:.5rem; margin:1rem 0; flex-wrap:wrap; }
.tab { padding:.55rem .85rem; border:1px solid rgba(0,245,255,.28); border-radius:.8rem; color:#9fb2ba; text-decoration:none; }
.tab.active { color:#00f5ff; background:rgba(0,245,255,.08); }
.filter-panel .filter-form { display:flex; gap:.8rem; flex-wrap:wrap; align-items:end; }
.filter-panel label { display:flex; flex-direction:column; gap:.25rem; min-width:150px; }
.membership-badge { margin-left:.4rem; background:rgba(0,245,255,.12); }
.muted-badge,.badge.subtle { background:rgba(159,178,186,.12); color:#9fb2ba; }
.typeahead-row.is-member { border-color:rgba(0,245,255,.35); }
.pill-link { display:inline-block; margin:.15rem .25rem .15rem 0; padding:.2rem .45rem; border:1px solid rgba(0,245,255,.25); border-radius:999px; text-decoration:none; }
.grade-a { background:rgba(0,245,255,.20); }
.grade-b { background:rgba(0,200,160,.18); }
.grade-c { background:rgba(255,209,102,.18); }
.grade-d,.grade-e { background:rgba(255,31,61,.16); }
.oni-local-chart-canvas { display:block; width:100%; height:100%; }

/* v0.2.28 owner-only user management */
.notice { border: 1px solid var(--border, #0b4a4f); border-radius: 12px; padding: 10px 12px; margin: 12px 0; }
.notice.ok { color: #2fffd4; }
.notice.error { color: #ff4f7b; }
.grid-form { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 12px; align-items: end; }
.grid-form label, .user-row-form label, .inline-form label { color: var(--muted, #91a4ad); font-size: 0.95rem; }
.checkbox-label { display: inline-flex; gap: 6px; align-items: center; }
.table-wrap { overflow-x: auto; }
.user-row-form { display: grid; grid-template-columns: minmax(220px, 1.4fr) minmax(120px, .7fr) minmax(160px, 1fr) minmax(160px, .9fr) minmax(90px, .5fr) minmax(70px, .4fr) minmax(160px, .8fr) minmax(90px, .5fr); gap: 10px; align-items: center; }
.user-row-form input, .user-row-form select, .grid-form input, .grid-form select, .inline-form input { width: 100%; }
.user-secondary-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 8px; padding-left: 4px; }
.inline-form { display: inline-flex; gap: 8px; align-items: center; }
.help-card ul { margin-top: 8px; color: var(--muted, #91a4ad); }
@media (max-width: 980px) { .user-row-form { grid-template-columns: 1fr; } .inline-form { width: 100%; flex-wrap: wrap; } }


/* v0.2.29 profile/password self-service and HTML error pages */
.topbar-user { color: #9ca3af; font-size: 0.9rem; margin-left: auto; padding: 0 0.75rem; white-space: nowrap; }
.account-card .compact-form { max-width: 900px; }
.notice.error { border-color: #7f1d1d; background: #450a0a; color: #fecaca; }
.error-page-body { min-height: 100vh; display: flex; align-items: center; justify-content: center; background: radial-gradient(circle at top, #1f2937, #020617 55%); }
.error-page { width: min(720px, calc(100vw - 2rem)); }
.error-card { background: rgba(15, 23, 42, 0.96); border: 1px solid #334155; border-radius: 22px; padding: 2rem; box-shadow: 0 22px 70px rgba(0,0,0,0.35); text-align: left; }
.error-code { display: inline-flex; align-items: center; justify-content: center; min-width: 4.5rem; height: 2.5rem; padding: 0 0.75rem; border-radius: 999px; background: #111827; border: 1px solid #475569; color: #f8fafc; font-weight: 700; letter-spacing: 0.06em; margin-bottom: 1rem; }
.error-card h1 { margin-top: 0; }
.error-actions { display: flex; flex-wrap: wrap; gap: 0.75rem; margin-top: 1.5rem; }
.button-link { display: inline-flex; align-items: center; justify-content: center; border-radius: 10px; padding: 0.65rem 0.9rem; background: #2563eb; color: #fff; text-decoration: none; font-weight: 600; }
.button-link.secondary { background: #334155; color: #e5e7eb; }

/* v0.2.30 security hardening audit */
.badge.ok { border-color: rgba(20, 220, 150, .65); color: #2fffc1; }
.badge.danger { border-color: rgba(255, 42, 95, .75); color: #ff5f8f; }
.state-ready { color: #2fffc1; }
.state-review { color: #f5d35b; }
.state-blocked { color: #ff5f8f; }
.compact-stats .stat strong { font-size: 1.2rem; }

/* v0.2.34 MVP delta + mobile layout */
.page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:18px}.page-header h1{margin-top:0}.mobile-menu-toggle{display:none}.primary-nav{display:flex;flex-wrap:wrap;gap:6px 0}.logout-form{margin:0}.mvp-cards{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.cluster-heatmap{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px}.heat-card{border:1px solid rgba(0,245,255,.18);border-radius:14px;background:rgba(0,245,255,.05);padding:12px}.heat-card strong,.heat-card span,.heat-card small{display:block}.heat-card span{font-size:1.15rem;margin:.35rem 0}.target-grid-form input{max-width:110px}.danger-badge{border-color:rgba(255,31,61,.7);color:#ff5a70}.warn-badge{border-color:rgba(255,209,102,.7);color:#ffd166}.hidden{display:none!important}

@media (max-width: 932px){
  body{font-size:15px;overflow-x:hidden}
  .topbar{height:auto;min-height:64px;padding:10px 12px 8px;gap:8px 10px;align-items:center;flex-wrap:wrap;z-index:50;position:sticky;top:0;overflow:hidden}
  .brand{font-size:20px;line-height:1.05;order:1;flex:1 1 auto;min-width:210px}
  .brand small{font-size:10px}
  .mobile-menu-toggle{display:none!important}
  .topbar-user{order:2;margin-left:0;font-size:12px;color:var(--muted);max-width:96px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .logout-form{order:3;margin:0}
  .logout-form button{padding:8px 10px;min-height:38px}
  .primary-nav{order:10;display:flex!important;flex:0 0 100%;width:100%;max-width:100%;overflow-x:auto;overflow-y:hidden;flex-wrap:nowrap;gap:8px;padding:8px 0 2px;margin:0;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;scrollbar-width:none;border-top:1px solid rgba(0,245,255,.10)}
  .primary-nav::-webkit-scrollbar{display:none}
  .primary-nav.open{display:flex!important}
  .primary-nav a{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;margin:0;padding:10px 13px;border:1px solid rgba(0,245,255,.18);border-radius:12px;background:rgba(8,18,24,.92);color:#e8f8fb;scroll-snap-align:start;min-height:42px;white-space:nowrap;box-shadow:0 0 16px rgba(0,245,255,.03)}
  .primary-nav a.active{border-color:rgba(0,245,255,.62);color:var(--cyan);background:rgba(0,245,255,.10);box-shadow:0 0 20px rgba(0,245,255,.08)}
  .page{padding:14px;max-width:100vw;overflow-x:hidden}
  .page-header{display:block}.page-header .btn{display:inline-block;margin-top:8px}
  .cards,.mvp-cards,.two-col,.grid,.kpi-grid{grid-template-columns:1fr!important;gap:10px}
  .card,.panel,.login-card{padding:14px;border-radius:14px}.card strong{font-size:24px}
  .asset-header{display:block}.status-pill{display:inline-block;margin-top:8px}
  .chart-toolbar{overflow-x:auto;white-space:nowrap;padding-bottom:4px}.chart-toolbar button{min-width:56px}.chart-card{min-height:360px}
  .grid-form,.form-grid,.watchlist-add-form{grid-template-columns:1fr!important;display:grid;gap:10px}
  .grid-form label,.form-grid label,.watchlist-add-form label{display:block}
  .grid-form input,.grid-form select,.grid-form textarea,.form-grid input,.form-grid select,.form-grid textarea,.watchlist-add-form input,.watchlist-add-form select{width:100%;margin-left:0;margin-right:0}
  .table-scroll{overflow-x:visible}.responsive-table,.responsive-table thead,.responsive-table tbody,.responsive-table tr,.responsive-table th,.responsive-table td{display:block;width:100%}
  .responsive-table thead{display:none}.responsive-table tr{border:1px solid rgba(255,255,255,.08);border-radius:12px;margin:10px 0;padding:8px;background:rgba(8,18,24,.55)}
  .responsive-table td{border:0!important;padding:7px 4px 7px 46%;position:relative;min-height:34px}.responsive-table td:before{content:attr(data-label);position:absolute;left:4px;top:7px;width:40%;color:var(--muted);text-transform:uppercase;font-size:11px;letter-spacing:.06em}
  .maintenance-table{min-width:0}.watchlist-item-card summary{display:grid;gap:4px}.help-grid{grid-template-columns:1fr!important}.user-row-form{grid-template-columns:1fr}.typeahead-results{max-height:60vh;overflow:auto}.target-grid-form input{max-width:none;width:100%}
}

@media (max-width: 430px){
  .topbar{padding-left:10px;padding-right:10px}.brand{font-size:18px;min-width:180px}.topbar-user{max-width:74px}.logout-form button{padding:8px 9px}.primary-nav a{padding:10px 12px}.page{padding:10px}.card strong{font-size:22px}button,.btn{width:auto;min-height:42px}input,select,textarea{font-size:16px}.chart-card{min-height:340px}.chart-legend{font-size:12px}.responsive-table td{padding-left:42%}.responsive-table td:before{width:38%}
}

/* v0.2.37 mobile navigation strip */
.mobile-nav-note{display:none}
@media (max-width:932px){.mobile-nav-note{display:block;color:var(--muted);font-size:12px;margin-top:4px}}

/* v0.2.35 HKCM-inspired scenario overlay and BNF v2 */
.chart-toggle { display:inline-flex; gap:8px; align-items:center; margin-left:8px; color:#9fb2bb; font-size:13px; }
.chart-toggle input { width:auto; accent-color:#00f5ff; }
.chart-projection-summary { margin:8px 0 10px; padding:10px 12px; border:1px solid rgba(51,255,119,.18); border-radius:12px; background:linear-gradient(90deg, rgba(51,255,119,.08), rgba(255,31,61,.06)); line-height:1.45; }
.chart-projection-summary strong { color:#eafaf1; }
.chart-projection-summary span { color:#9fb2bb; font-size:12px; }
.bnf-challenge-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:12px; margin:12px 0; }
.bnf-challenge-card { border:1px solid rgba(0,245,255,.16); border-radius:14px; padding:12px; background:rgba(5,11,16,.55); }
.bnf-challenge-card strong { display:block; color:#f2f7f8; margin-bottom:6px; }
.bnf-challenge-card p { margin:0; color:#9fb2bb; line-height:1.45; }
.bnf-dimension-list { display:flex; flex-wrap:wrap; gap:6px; }
.bnf-dimension-list span { border:1px solid rgba(0,245,255,.18); border-radius:999px; padding:3px 8px; color:#9fb2bb; font-size:12px; }
.bnf-gate { color:#ffd166; font-size:12px; }
@media (max-width:900px){ .chart-toggle { width:100%; margin-left:0; } }

/* v0.2.36 sequence v2 + first-start onboarding */
.first-start-intro {
  border-color: rgba(0,245,255,.22);
  background: linear-gradient(135deg, rgba(0,245,255,.07), rgba(255,31,90,.045));
}
.first-start-intro h1, .first-start-intro h2 { margin-top: 0; }
.intro-steps { display:flex; flex-wrap:wrap; gap:8px; margin-top:10px; }
.intro-steps span { border:1px solid rgba(0,245,255,.22); border-radius:999px; padding:5px 10px; color:#d8f7fb; background:rgba(0,245,255,.05); font-size:12px; }
.sequence-v2-panel .sequence-v2-summary { margin-bottom:12px; }
.sequence-v2-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(170px,1fr)); gap:10px; margin:12px 0; }
.sequence-v2-grid > div { border:1px solid rgba(0,245,255,.18); border-radius:14px; padding:12px; background:rgba(5,11,16,.62); }
.sequence-v2-grid span { display:block; color:#9fb2bb; text-transform:uppercase; letter-spacing:.08em; font-size:11px; }
.sequence-v2-grid strong { display:block; color:#f2f7f8; font-size:18px; margin:.25rem 0; }
.sequence-v2-grid small { color:#9fb2bb; }
.compact-list { margin:.5rem 0 0; padding-left:1.1rem; }
.compact-list li { margin:.35rem 0; color:#dce9ed; }
.state-overheated,.state-high,.state-risk { color:#ff5a70; }
.state-medium,.state-review,.state-unknown { color:#ffd166; }
.state-normal,.state-ok,.state-pullback { color:#2fffc1; }
.sequence-review-link { white-space:nowrap; }
@media (max-width:932px){ .intro-steps{display:grid;grid-template-columns:1fr}.sequence-v2-grid{grid-template-columns:1fr}.first-start-intro{padding:14px} }

/* v0.2.38 terminal dashboard / research / portfolio / sequence validation */
.terminal-dashboard-layout { display: grid; gap: 16px; }
.terminal-kpi-row { display: grid; grid-template-columns: repeat(7, minmax(0,1fr)); gap: 12px; }
.terminal-main-grid { display: grid; grid-template-columns: minmax(0, 2.3fr) minmax(320px, .9fr); gap: 16px; align-items: start; }
.terminal-right-rail { display: grid; gap: 16px; }
.terminal-right-rail .panel { margin-top: 0; }
.terminal-focus-panel { min-height: 420px; }
.panel-header-row { display:flex; justify-content:space-between; gap:1rem; align-items:center; flex-wrap:wrap; }
.dashboard-focus-chart { min-height: 240px; border:1px solid rgba(0,245,255,.18); border-radius:16px; padding:22px; display:flex; justify-content:space-between; align-items:end; gap:18px; background:linear-gradient(135deg, rgba(0,245,255,.07), rgba(255,31,61,.06)), radial-gradient(circle at 78% 20%, rgba(0,245,255,.12), transparent 28%); margin:16px 0; }
.dashboard-focus-chart h2 { margin:.35rem 0; font-size: clamp(1.4rem, 2.4vw, 2.5rem); }
.dashboard-focus-chart.empty { align-items:center; justify-content:center; text-align:center; }
.dashboard-lower-grid .mini-panel { margin-top: 0; border:1px solid rgba(0,245,255,.14); border-radius:14px; padding:14px; background:rgba(5,11,16,.46); }
.markdown-preview { white-space: pre-wrap; overflow-x:auto; border:1px solid rgba(0,245,255,.14); border-radius:12px; padding:12px; background:rgba(5,11,16,.72); color:#dffbff; }
textarea { background:#050d12; border:1px solid var(--border); color:var(--text); border-radius:8px; padding:10px; width:100%; }
.warn-badge { border-color: rgba(255,209,102,.65); color:#ffd166; }
.danger-badge { border-color: rgba(255,31,61,.65); color:#ff5a70; }
@media (max-width: 1280px) { .terminal-kpi-row { grid-template-columns: repeat(3, minmax(0,1fr)); } .terminal-main-grid { grid-template-columns: 1fr; } }
@media (max-width: 760px) { .terminal-kpi-row { grid-template-columns: 1fr; } .dashboard-focus-chart { flex-direction:column; align-items:flex-start; min-height: 180px; } }

/* v0.2.39 ETF savings plan MVP */
.savings-plan-panel .savings-plan-hero{display:grid;grid-template-columns:minmax(220px,320px) 1fr;gap:22px;align-items:center;margin:16px 0 18px}
.savings-donut{width:260px;height:260px;border-radius:50%;display:grid;place-items:center;margin:auto;background:conic-gradient(#0b4c83 0 33.3%,#008c7a 33.3% 58.3%,#00a9a5 58.3% 75%,#7e5bb8 75% 91.7%,#e4ad19 91.7% 100%);box-shadow:0 0 28px rgba(0,245,255,.12)}
.savings-donut>div{width:132px;height:132px;border-radius:50%;background:rgba(242,247,248,.94);color:#071018;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;box-shadow:inset 0 0 0 1px rgba(0,0,0,.08)}
.savings-donut strong{font-size:34px;line-height:1;color:#071018}.savings-donut span{font-size:14px;color:#53636b}.savings-plan-table-wrap{min-width:0}.strategy-overview-card{margin:16px 0;padding:16px;border:1px solid rgba(255,255,255,.12);border-radius:16px;background:rgba(255,255,255,.035)}.strategy-row{display:grid;grid-template-columns:1fr 120px 120px;gap:14px;align-items:center;padding:10px 0;border-top:1px solid rgba(255,255,255,.08)}.strategy-row:first-of-type{border-top:0}.strategy-row span{color:var(--muted)}.strategy-pct{display:inline-block;text-align:center;border-radius:10px;padding:8px;background:rgba(0,245,255,.12);color:var(--cyan)!important;font-weight:700}.check-list{list-style:none;padding-left:0}.check-list li{margin:8px 0}.check-list li:before{content:'✓';display:inline-grid;place-items:center;width:20px;height:20px;border-radius:50%;margin-right:8px;background:rgba(0,245,255,.16);color:var(--cyan)}.mini-list{display:grid;gap:8px;margin-top:12px}.mini-list div{display:flex;justify-content:space-between;gap:12px;border-top:1px solid rgba(255,255,255,.08);padding-top:8px}@media (max-width: 760px){.savings-plan-panel .savings-plan-hero{grid-template-columns:1fr}.savings-donut{width:220px;height:220px}.strategy-row{grid-template-columns:1fr}.strategy-pct{text-align:left}.savings-plan-panel input,.savings-plan-panel select{width:100%}}


/* v0.2.40 terminal desktop target layout and contextual help */
@media (min-width: 1440px) {
  .desktop-side-nav { position: fixed; left: 0; top: 74px; bottom: 0; width: 152px; padding: 18px 12px; border-right: 1px solid rgba(0,245,255,.13); background: rgba(3,10,14,.74); backdrop-filter: blur(8px); display: flex; flex-direction: column; gap: 8px; z-index: 5; }
  .desktop-side-nav a { color: #9fb2bb; text-decoration: none; border: 1px solid transparent; border-radius: 12px; padding: 10px 11px; font-weight: 700; }
  .desktop-side-nav a:hover { color: #f2f7f8; border-color: rgba(0,245,255,.28); background: rgba(0,245,255,.07); }
  .page { margin-left: 152px; }
  .terminal-main-grid { grid-template-columns: minmax(0, 1fr) 360px; }
}
@media (max-width: 1439px) { .desktop-side-nav { display:none; } }
.contextual-help { border-left: 3px solid rgba(0,245,255,.65); }
.target-vector-panel .scenario-box { border: 1px solid rgba(0,245,255,.16); border-radius: 14px; padding: 14px; background: rgba(5,11,16,.50); }
.target-vector-panel .scenario-box.constructive { border-color: rgba(110,247,180,.35); }
.target-vector-panel .scenario-box.risk { border-color: rgba(255,31,61,.35); }
.mini-card { border:1px solid rgba(0,245,255,.14); border-radius:12px; padding:12px; background:rgba(5,11,16,.48); }
.mini-card label { display:block; color:#9fb2bb; font-size:12px; letter-spacing:.08em; text-transform:uppercase; margin-bottom:6px; }
.three-col { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; }
.four-col { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; }
.warning-list { margin-top: 12px; padding: 10px 12px; border:1px solid rgba(255,209,102,.25); border-radius:12px; background:rgba(255,209,102,.08); }
@media (max-width: 900px) { .three-col,.four-col { grid-template-columns:1fr; } }

.onboarding-steps { display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:12px; } .onboarding-step { display:block; border:1px solid rgba(0,245,255,.18); border-radius:14px; padding:14px; text-decoration:none; color:#dffbff; background:rgba(5,11,16,.55);} .onboarding-step span { display:block; color:#9fb2bb; margin-top:6px;} .onboarding-step.done { border-color:rgba(110,247,180,.35); background:rgba(110,247,180,.08);}

/* v0.2.54 asset chart readability: larger analysis canvas, focus mode, cleaner overlays */
.asset-chart-toolbar { align-items: center; flex-wrap: wrap; }
.asset-chart-toolbar .chart-toggle { min-height: 38px; padding: 7px 10px; border: 1px solid rgba(0,245,255,.18); border-radius: 10px; background: rgba(8,18,24,.72); }
.chart-readability-help { margin-bottom: 10px; }
.chart-shell {
  position: relative;
  margin: 14px 0 12px;
  border: 1px solid rgba(0,245,255,.22);
  border-radius: 18px;
  background: rgba(5,11,16,.96);
  box-shadow: 0 0 0 1px rgba(0,245,255,.04), 0 18px 70px rgba(0,0,0,.18);
}
.chart-shell .chart-card {
  height: clamp(720px, 72vh, 980px);
  min-height: 720px;
  border: 0;
  border-bottom-left-radius: 0;
  border-bottom-right-radius: 0;
  background: #050b10;
}
.chart-shell.chart-shell-tall .chart-card {
  height: clamp(860px, 84vh, 1120px);
  min-height: 860px;
}
.chart-shell .chart-date-axis {
  margin: 0;
  border-left: 0;
  border-right: 0;
  border-bottom: 0;
}
.chart-tooltip { z-index: 30; max-width: 320px; }
body.chart-focus-mode { overflow: hidden; }
body.chart-focus-mode .chart-shell.chart-shell-focus {
  position: fixed;
  inset: 10px;
  z-index: 3000;
  margin: 0;
  padding: 10px 10px 50px;
  border-radius: 18px;
  background: #050b10;
  box-shadow: 0 0 0 1px rgba(0,245,255,.35), 0 20px 80px rgba(0,0,0,.75);
}
body.chart-focus-mode .chart-shell.chart-shell-focus .chart-card {
  height: calc(100vh - 96px);
  min-height: 0;
}
body.chart-focus-mode .chart-shell.chart-shell-focus .chart-date-axis {
  position: absolute;
  left: 10px;
  right: 10px;
  bottom: 10px;
}
body.chart-focus-mode .chart-shell.chart-shell-focus .chart-tooltip { z-index: 3010; }
@media (max-width: 900px) {
  .asset-chart-toolbar { flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch; }
  .asset-chart-toolbar .chart-toggle { flex: 0 0 auto; }
  .chart-shell .chart-card { height: 62vh; min-height: 520px; }
  .chart-shell.chart-shell-tall .chart-card { height: 72vh; min-height: 620px; }
}
@media (max-width: 430px) {
  .chart-shell .chart-card { height: 58vh; min-height: 460px; }
  .chart-shell.chart-shell-tall .chart-card { height: 68vh; min-height: 560px; }
  body.chart-focus-mode .chart-shell.chart-shell-focus { inset: 4px; padding: 6px 6px 46px; }
  body.chart-focus-mode .chart-shell.chart-shell-focus .chart-card { height: calc(100vh - 74px); }
}

/* v0.2.56 professional navigation and chart workspace */
.topbar { gap: 16px; }
.pro-nav { align-items: stretch; gap: 4px; }
.pro-nav > a,
.pro-nav .nav-group > button {
  display: inline-flex;
  align-items: center;
  min-height: 42px;
  padding: 0 12px;
  border: 0;
  background: transparent;
  color: #9fb2bb;
  font: inherit;
  font-weight: 700;
  text-decoration: none;
  cursor: pointer;
  border-radius: 10px;
}
.pro-nav > a:hover,
.pro-nav .nav-group:hover > button,
.pro-nav .nav-group > button:focus-visible {
  color: #f2f7f8;
  background: rgba(0,245,255,.08);
}
.nav-group { position: relative; display: inline-flex; align-items: stretch; }
.nav-group > button::after { content: "▾"; margin-left: 6px; font-size: 10px; opacity: .7; }
.nav-menu {
  display: none;
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  min-width: 220px;
  padding: 8px;
  border: 1px solid rgba(0,245,255,.18);
  border-radius: 14px;
  background: rgba(4,12,16,.98);
  box-shadow: 0 16px 42px rgba(0,0,0,.42), 0 0 24px rgba(0,245,255,.08);
  z-index: 50;
}
.nav-group:hover .nav-menu,
.nav-group:focus-within .nav-menu { display: grid; gap: 2px; }
.nav-menu a {
  display: block;
  padding: 10px 12px;
  border-radius: 10px;
  color: #b7c7cc;
  text-decoration: none;
  font-weight: 700;
}
.nav-menu a:hover { color: #fff; background: rgba(0,245,255,.10); }
.desktop-side-nav { padding-top: 18px; }
.desktop-side-nav a { border-left: 3px solid transparent; }
.desktop-side-nav a:hover { border-left-color: #00f5ff; background: rgba(0,245,255,.07); }

.asset-chart-workstation {
  padding: 16px;
  border-color: rgba(0,245,255,.28);
  background: linear-gradient(180deg, rgba(5,18,22,.92), rgba(3,8,12,.96));
}
.asset-chart-title-row {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  align-items: start;
  margin-bottom: 10px;
}
.asset-chart-title-row h2 { margin: 0 0 4px; }
.asset-chart-toolbar {
  position: sticky;
  top: 68px;
  z-index: 20;
  padding: 8px;
  border: 1px solid rgba(0,245,255,.16);
  border-radius: 14px;
  background: rgba(3,10,14,.92);
  backdrop-filter: blur(10px);
}
.chart-mode-group {
  display: inline-flex;
  gap: 4px;
  padding: 3px;
  border: 1px solid rgba(0,245,255,.18);
  border-radius: 12px;
  background: rgba(255,255,255,.03);
}
.chart-mode-group button.active {
  color: #fff;
  border-color: rgba(0,245,255,.70);
  background: rgba(0,245,255,.14);
}
.chart-shell {
  border: 1px solid rgba(0,245,255,.24);
  border-radius: 18px;
  overflow: hidden;
  background: #050b10;
}
.chart-shell .chart-card {
  height: clamp(720px, 76vh, 1040px);
  border: 0;
  border-radius: 0;
}
.chart-shell-tall .chart-card { height: clamp(860px, 86vh, 1180px); }
.chart-shell-focus {
  position: fixed;
  left: 12px;
  right: 12px;
  top: 12px;
  bottom: 12px;
  z-index: 2000;
  margin: 0;
  border: 1px solid rgba(0,245,255,.42);
  box-shadow: 0 0 0 9999px rgba(0,0,0,.76), 0 24px 80px rgba(0,0,0,.65);
}
.chart-shell-focus .chart-card { height: calc(100vh - 78px); }
body.chart-focus-mode { overflow: hidden; }
body.chart-focus-mode .topbar,
body.chart-focus-mode .desktop-side-nav { display: none; }
.chart-projection-summary {
  padding: 10px 12px;
  border: 1px solid rgba(0,245,255,.16);
  border-radius: 12px;
  background: linear-gradient(90deg, rgba(0,245,255,.08), rgba(255,31,61,.06));
}
.chart-readability-help:not([open]) { padding: 7px 10px; }
.chart-readability-help[open] { display: block; }
.compact-intro { padding: 10px 14px; }
.compact-intro summary { cursor: pointer; font-weight: 900; color: #f2f7f8; }

@media (max-width: 1100px) {
  .pro-nav { overflow-x: auto; scrollbar-width: none; }
  .nav-group { position: static; }
  .nav-menu { position: fixed; left: 16px; right: 16px; top: 64px; min-width: auto; }
  .chart-shell .chart-card { height: 620px; }
  .chart-shell-tall .chart-card { height: 760px; }
}
@media (max-width: 760px) {
  .asset-chart-title-row { display: block; }
  .asset-chart-toolbar { position: static; }
  .chart-shell .chart-card { height: 560px; }
  .chart-shell-tall .chart-card { height: 680px; }
  .chart-shell-focus { left: 0; right: 0; top: 0; bottom: 0; border-radius: 0; }
  .chart-shell-focus .chart-card { height: calc(100vh - 72px); }
}

/* v0.2.58 mobile navigation hardening
   Desktop keeps grouped professional navigation. Mobile uses a separate flat
   horizontal chip strip with only direct links. This removes hover dropdowns
   from touch devices and prevents fixed dropdown overlays from stealing taps
   or routing Dashboard touches to Ops/Upgrade links. */
.mobile-primary-nav { display: none; }
.desktop-primary-nav { display: flex; }

@media (max-width: 1100px) {
  .desktop-primary-nav { display: flex; }
}

@media (max-width: 760px) {
  .topbar {
    height: auto;
    min-height: 122px;
    padding: calc(10px + env(safe-area-inset-top)) 12px 10px;
    gap: 8px 10px;
    align-items: center;
    flex-wrap: wrap;
    overflow: visible;
    z-index: 1000;
  }

  .brand {
    flex: 1 1 auto;
    min-width: 170px;
    max-width: calc(100% - 178px);
    font-size: 22px;
    line-height: 1.05;
  }
  .brand small { font-size: 11px; margin-top: 2px; }

  .topbar-user {
    order: 2;
    margin-left: auto;
    max-width: 86px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 13px;
    padding: 0 4px;
  }
  .logout-form { order: 3; margin: 0; }
  .logout-form button { min-height: 42px; padding: 10px 14px; border-radius: 14px; }

  .desktop-primary-nav {
    display: none !important;
  }

  .mobile-primary-nav {
    order: 10;
    display: flex !important;
    flex: 0 0 100%;
    width: 100%;
    max-width: 100%;
    gap: 8px;
    padding: 9px 2px 4px;
    overflow-x: auto;
    overflow-y: hidden;
    overscroll-behavior-x: contain;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    scroll-snap-type: x proximity;
    border-top: 1px solid rgba(0,245,255,.12);
  }
  .mobile-primary-nav::-webkit-scrollbar { display: none; }

  .mobile-primary-nav a {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 44px;
    padding: 0 16px;
    margin: 0;
    border: 1px solid rgba(0,245,255,.22);
    border-radius: 15px;
    background: rgba(8,18,24,.92);
    color: #e8f8fb;
    text-decoration: none;
    font-weight: 800;
    letter-spacing: .01em;
    white-space: nowrap;
    scroll-snap-align: start;
    box-shadow: 0 0 16px rgba(0,245,255,.04);
  }
  .mobile-primary-nav a.active {
    border-color: rgba(0,245,255,.72);
    background: rgba(0,245,255,.12);
    color: #00f5ff;
    box-shadow: 0 0 22px rgba(0,245,255,.10);
  }

  /* Ensure desktop dropdowns can never be visible or clickable on mobile. */
  .desktop-primary-nav .nav-menu,
  .desktop-primary-nav .nav-group:hover .nav-menu,
  .desktop-primary-nav .nav-group:focus-within .nav-menu {
    display: none !important;
    pointer-events: none !important;
  }

  .page { padding-top: 24px; }
}

@media (max-width: 430px) {
  .topbar { padding-left: 10px; padding-right: 10px; }
  .brand { font-size: 20px; min-width: 160px; max-width: calc(100% - 166px); }
  .topbar-user { max-width: 72px; font-size: 12px; }
  .logout-form button { padding: 9px 12px; }
  .mobile-primary-nav a { min-height: 42px; padding: 0 14px; border-radius: 14px; }
}

/* v0.2.61 global request timeout/error overlay */
.oni-error-overlay[hidden]{display:none!important}
.oni-error-overlay{position:fixed;inset:0;z-index:100000;display:grid;place-items:center;padding:22px}
.oni-error-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.68);backdrop-filter:blur(6px)}
.oni-error-card{position:relative;width:min(620px,calc(100vw - 32px));border:1px solid rgba(255,49,88,.42);border-radius:22px;background:linear-gradient(145deg,rgba(18,25,35,.98),rgba(13,18,25,.98));box-shadow:0 28px 80px rgba(0,0,0,.55);padding:24px;color:#e8eef5}
.oni-error-kicker{color:#00e5ff;text-transform:uppercase;letter-spacing:.16em;font-size:12px;font-weight:800;margin-bottom:8px}.oni-error-card h2{margin:0 0 10px;font-size:26px}.oni-error-message{color:#b7c5d5;line-height:1.55}.oni-error-details{margin:14px 0;border:1px solid rgba(0,229,255,.22);border-radius:14px;background:rgba(0,229,255,.05);padding:10px}.oni-error-details summary{cursor:pointer;color:#9eeeff;font-weight:700}.oni-error-details pre{max-height:240px;overflow:auto;white-space:pre-wrap;font-size:12px;background:#070a0f;border-radius:10px;padding:10px}.oni-error-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}.oni-error-actions .btn{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;background:#ff3158;color:white;border:0;border-radius:12px;padding:10px 14px;font-weight:800;cursor:pointer}.oni-error-actions .btn-secondary{background:#203044;color:#e8eef5}.oni-error-overlay-open{overflow:hidden}@media(max-width:720px){.oni-error-overlay{padding:14px;align-items:end}.oni-error-card{padding:18px;border-radius:18px}.oni-error-card h2{font-size:22px}.oni-error-actions .btn{width:100%}}

/* v0.2.83 chart help, split SMA controls and focus close */
.chart-help-icon { border-radius: 999px; width: 38px; min-width: 38px; font-weight: 900; }
.chart-focus-close { position: absolute; right: 16px; top: 16px; z-index: 3020; width: 42px; height: 42px; border-radius: 999px; border: 1px solid rgba(0,245,255,.45); background: rgba(3,10,14,.92); color: #f2f7f8; font-size: 28px; line-height: 1; cursor: pointer; box-shadow: 0 8px 30px rgba(0,0,0,.45); }
.chart-help-overlay { position: fixed; inset: 0; z-index: 5000; display: grid; place-items: center; padding: 18px; background: rgba(0,0,0,.72); backdrop-filter: blur(5px); }
.chart-help-overlay.hidden, .chart-focus-close.hidden { display: none; }
.chart-help-dialog { position: relative; width: min(960px, 96vw); max-height: 90vh; overflow: auto; border: 1px solid rgba(0,245,255,.32); border-radius: 22px; padding: 24px; background: linear-gradient(180deg, rgba(5,18,22,.98), rgba(3,8,12,.98)); box-shadow: 0 22px 90px rgba(0,0,0,.65); }
.chart-help-close { position: absolute; right: 16px; top: 16px; width: 44px; height: 44px; border-radius: 999px; border: 1px solid rgba(0,245,255,.42); background: rgba(8,18,24,.90); color: #fff; font-size: 28px; line-height: 1; cursor: pointer; }
.chart-help-dialog h2 { margin-top: 0; padding-right: 48px; }
@media (max-width: 760px) { .chart-help-dialog { padding: 18px; } .chart-focus-close { right: 10px; top: 10px; } }

/* v0.2.84 asset chart stability, help and metric tooltip UX */
.metric-card span { display: inline-flex; align-items: center; gap: 6px; }
.info-dot { display:inline-grid; place-items:center; width:20px; height:20px; border-radius:999px; border:1px solid rgba(0,245,255,.45); background:rgba(0,245,255,.08); color:#00f5ff; font-size:12px; font-weight:900; padding:0; cursor:help; }
.button-row { display:flex; flex-wrap:wrap; gap:10px; align-items:center; }
#asset-view-help-open { border-radius:999px; font-weight:800; }
.chart-help-dialog .help-grid > div { min-height: 120px; }

/* v0.2.94 layperson asset help and tap-friendly KPI popovers */
.asset-info-popover { position: absolute; z-index: 9000; padding: 12px 14px; border: 1px solid rgba(0,245,255,.42); border-radius: 14px; background: rgba(5,12,18,.98); color: #e8eef5; box-shadow: 0 16px 44px rgba(0,0,0,.48); line-height: 1.45; font-size: 13px; }
.asset-info-popover.hidden { display: none; }
.asset-help-dialog .help-lead { font-size: 1rem; line-height: 1.6; border: 1px solid rgba(0,245,255,.18); border-radius: 16px; padding: 12px; background: rgba(0,245,255,.05); }
.asset-help-dialog .help-section { margin: 16px 0; padding: 14px; border: 1px solid rgba(255,255,255,.08); border-radius: 16px; background: rgba(255,255,255,.03); }
.asset-help-dialog .help-section h3 { margin-top: 0; color: #00e5ff; }
.asset-help-dialog li { margin: 6px 0; }
@media (max-width: 760px) { .asset-info-popover { left: 12px !important; right: 12px; max-width: none !important; } }

/* Darvas Breakout Module */
.darvas-summary {
  margin: 0.6rem 0 0.8rem;
  padding: 0.55rem 0.75rem;
  border: 1px solid rgba(155, 92, 255, 0.28);
  border-radius: 0.75rem;
  background: rgba(155, 92, 255, 0.06);
}
.darvas-panel .panel-header-row {
  align-items: center;
}
.darvas-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 0.75rem;
  margin: 1rem 0;
}
.darvas-grid > div {
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 0.9rem;
  background: rgba(255,255,255,0.035);
  padding: 0.75rem;
}
.darvas-grid span {
  display: block;
  color: var(--muted, #9fb2ba);
  font-size: 0.78rem;
}
.darvas-grid strong {
  display: block;
  font-size: 1.05rem;
  margin-top: 0.15rem;
}
.darvas-grid small {
  color: var(--muted, #9fb2ba);
}
.status-pill.status-green { border-color: rgba(51,255,119,.45); color: #33ff77; }
.status-pill.status-orange { border-color: rgba(255,209,102,.55); color: #ffd166; }
.status-pill.status-red { border-color: rgba(255,31,61,.55); color: #ff6b7a; }
.status-pill.status-neutral { border-color: rgba(159,178,186,.35); color: #9fb2ba; }
.notice.warning {
  border-color: rgba(255, 209, 102, 0.45);
  background: rgba(255, 209, 102, 0.08);
}


/* v0.3.1 Darvas render/mobile readability guard */
.darvas-panel .panel-header-row { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:.75rem; }
.darvas-grid { grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 1rem; align-items: stretch; }
.darvas-grid > div { display:grid; grid-template-columns:1fr; gap:.2rem; min-width:0; line-height:1.35; }
.darvas-grid span, .darvas-grid strong, .darvas-grid small { overflow-wrap:anywhere; word-break:normal; }
.darvas-grid strong { line-height:1.2; }
.darvas-check-list { margin: .5rem 0 0; padding-left: 1.1rem; }
@media (max-width: 760px) {
  .darvas-grid { grid-template-columns: 1fr !important; gap: .85rem; }
  .darvas-grid > div { padding: .9rem; }
  .darvas-panel .panel-header-row .status-pill { width: auto; max-width: 100%; }
}


/* v0.3.2 Runtime UI smoke foundation: hard Darvas metric block layout */
.darvas-grid[data-ui-contract="darvas-metrics-v2"] {
  display: grid !important;
  grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
  gap: 1rem;
  align-items: stretch;
}
.darvas-grid[data-ui-contract="darvas-metrics-v2"] .darvas-metric {
  display: grid !important;
  grid-template-columns: 1fr;
  grid-template-areas: "label" "value" "help";
  gap: .38rem;
  min-width: 0;
  padding: 1rem;
  border: 1px solid rgba(0,245,255,.16);
  border-radius: 1rem;
  background: rgba(4,12,18,.72);
  line-height: 1.35;
}
.darvas-metric-label {
  grid-area: label;
  display: block !important;
  color: #9fb2ba;
  font-size: .76rem;
  line-height: 1.2;
  text-transform: uppercase;
  letter-spacing: .08em;
}
.darvas-metric-value {
  grid-area: value;
  display: block !important;
  color: #f2f7f8;
  font-size: 1.18rem;
  font-weight: 900;
  line-height: 1.18;
  overflow-wrap: anywhere;
}
.darvas-metric-help {
  grid-area: help;
  display: block !important;
  color: #9fb2ba;
  font-size: .86rem;
  line-height: 1.35;
  overflow-wrap: anywhere;
}
@media (max-width: 760px) {
  .darvas-grid[data-ui-contract="darvas-metrics-v2"] {
    grid-template-columns: 1fr !important;
    gap: .9rem;
  }
  .darvas-grid[data-ui-contract="darvas-metrics-v2"] .darvas-metric {
    padding: 1rem;
  }
}

/* v0.3.3 mobile submenu access and system-quality browser contract */
@media (max-width: 932px) {
  .mobile-primary-nav[data-mobile-submenu-contract="v0.3.3"] {
    align-items: flex-start;
    overflow-y: visible;
  }
  .mobile-nav-group {
    position: relative;
    flex: 0 0 auto;
    scroll-snap-align: start;
  }
  .mobile-nav-chip {
    min-height: 42px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid rgba(0,245,255,.28);
    background: rgba(6,18,24,.92);
    color: #e8f8fb;
    border-radius: 16px;
    padding: 0 16px;
    font-weight: 800;
    letter-spacing: .01em;
    white-space: nowrap;
    box-shadow: none;
  }
  .mobile-nav-chip.active,
  .mobile-nav-group.open .mobile-nav-chip {
    border-color: rgba(0,245,255,.72);
    color: var(--cyan);
    background: rgba(0,245,255,.12);
  }
  .mobile-nav-submenu {
    position: fixed;
    z-index: 1200;
    left: 14px;
    right: 14px;
    top: calc(108px + env(safe-area-inset-top));
    display: grid;
    gap: 8px;
    max-height: min(60vh, 420px);
    overflow: auto;
    padding: 12px;
    border: 1px solid rgba(0,245,255,.28);
    border-radius: 18px;
    background: rgba(4,12,18,.98);
    box-shadow: 0 20px 70px rgba(0,0,0,.72), 0 0 24px rgba(0,245,255,.08);
  }
  .mobile-nav-submenu[hidden] { display: none !important; }
  .mobile-nav-submenu a {
    margin: 0;
    width: 100%;
    min-height: 46px;
    justify-content: flex-start;
    border-radius: 14px;
    background: rgba(255,255,255,.035);
  }
  .mobile-nav-submenu a.active {
    color: var(--cyan);
    border-color: rgba(0,245,255,.62);
    background: rgba(0,245,255,.10);
  }
}

@media (max-width: 760px) {
  .darvas-grid[data-ui-contract="darvas-metrics-v2"] {
    display: grid !important;
    grid-template-columns: 1fr !important;
  }
  .darvas-grid[data-ui-contract="darvas-metrics-v2"] .darvas-metric {
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: .35rem !important;
    padding: 1rem !important;
  }
}


/* v0.3.4 mobile dropdown top-layer contract
   Mobile touch submenus must always render above Asset/Chart cards and other page content.
   They remain below global error/help overlays but above the sticky header's normal content. */
:root {
  --oni-topbar-z: 94000;
  --oni-mobile-submenu-z: 95000;
  --oni-mobile-submenu-top: calc(126px + env(safe-area-inset-top));
}
.topbar { z-index: var(--oni-topbar-z); isolation: isolate; }
@media (max-width: 932px) {
  body.mobile-submenu-open { overflow-x: hidden; }
  .topbar {
    z-index: var(--oni-topbar-z) !important;
    overflow: visible !important;
    background: rgba(2,7,10,.985) !important;
  }
  .mobile-primary-nav[data-mobile-submenu-contract="v0.3.4"] {
    position: relative;
    z-index: calc(var(--oni-topbar-z) + 2);
    overflow-y: visible !important;
  }
  .mobile-primary-nav[data-mobile-submenu-contract="v0.3.4"] .mobile-nav-group.open {
    z-index: var(--oni-mobile-submenu-z);
  }
  .mobile-primary-nav[data-mobile-submenu-contract="v0.3.4"] .mobile-nav-submenu {
    position: fixed !important;
    z-index: var(--oni-mobile-submenu-z) !important;
    top: var(--oni-mobile-submenu-top) !important;
    left: max(12px, env(safe-area-inset-left)) !important;
    right: max(12px, env(safe-area-inset-right)) !important;
    max-height: min(64vh, 440px);
    pointer-events: auto;
    overscroll-behavior: contain;
  }
  .mobile-primary-nav[data-mobile-submenu-contract="v0.3.4"] .mobile-nav-submenu[hidden] {
    display: none !important;
  }
  .mobile-primary-nav[data-mobile-submenu-contract="v0.3.4"] .mobile-nav-submenu a {
    width: 100%;
    margin: 0;
    text-align: left;
  }
}


/* v0.3.5 mobile dropdown portal contract
   Render touch submenus through a body-level portal to avoid sticky-header clipping,
   nested stacking-context issues and iOS/Safari fixed-position edge cases. */
@media (max-width: 932px) {
  .mobile-primary-nav[data-mobile-submenu-contract="v0.3.5"] {
    position: relative;
    overflow-y: visible !important;
  }
  .mobile-primary-nav[data-mobile-submenu-contract="v0.3.5"] .mobile-nav-submenu {
    display: none !important;
  }
  .oni-mobile-submenu-portal {
    position: fixed;
    z-index: var(--oni-mobile-submenu-z, 95000) !important;
    top: var(--oni-mobile-submenu-top, calc(126px + env(safe-area-inset-top))) !important;
    left: max(12px, env(safe-area-inset-left));
    right: max(12px, env(safe-area-inset-right));
    display: grid;
    gap: 8px;
    max-height: min(64vh, 440px);
    overflow: auto;
    overscroll-behavior: contain;
    padding: 12px;
    border: 1px solid rgba(0,245,255,.32);
    border-radius: 18px;
    background: rgba(4,12,18,.985);
    box-shadow: 0 24px 80px rgba(0,0,0,.78), 0 0 28px rgba(0,245,255,.10);
    pointer-events: auto;
    -webkit-overflow-scrolling: touch;
  }
  .oni-mobile-submenu-portal[hidden] {
    display: none !important;
  }
  .oni-mobile-submenu-portal a {
    width: 100%;
    min-height: 46px;
    display: flex;
    align-items: center;
    justify-content: flex-start;
    margin: 0;
    padding: 0 14px;
    border: 1px solid rgba(0,245,255,.22);
    border-radius: 14px;
    background: rgba(255,255,255,.04);
    color: #e8f8fb;
    text-decoration: none;
    font-weight: 800;
    white-space: nowrap;
  }
  .oni-mobile-submenu-portal a.active {
    color: var(--cyan);
    border-color: rgba(0,245,255,.66);
    background: rgba(0,245,255,.11);
  }
  .oni-mobile-submenu-empty {
    color: var(--muted);
    padding: 10px 12px;
  }
}

/* v0.3.10 reusable product modal framework.
   German-first welcome splash returns after every login/page session until the
   user explicitly checks "Don't show again" and confirms Start the journey.
   The modal mark uses only the Oni "O" symbol at 50% opacity, not the mockup image. */
.oni-product-modal-overlay {
  position: fixed;
  inset: 0;
  z-index: 99000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: max(18px, env(safe-area-inset-top)) max(14px, env(safe-area-inset-right)) max(18px, env(safe-area-inset-bottom)) max(14px, env(safe-area-inset-left));
  background: rgba(0, 3, 7, .58);
  backdrop-filter: blur(7px);
  -webkit-backdrop-filter: blur(7px);
}
.oni-product-modal-overlay[hidden] { display: none !important; }
body.oni-product-modal-open { overflow: hidden; }
.oni-product-modal-card {
  position: relative;
  width: min(730px, calc(100vw - 28px));
  max-height: min(84vh, 800px);
  overflow: auto;
  padding: clamp(1.2rem, 2.25vw, 1.8rem);
  border: 1px solid rgba(0,245,255,.42);
  border-radius: 22px;
  background: linear-gradient(180deg, rgba(7,15,21,.965), rgba(2,8,13,.985));
  box-shadow: 0 28px 100px rgba(0,0,0,.72), 0 0 34px rgba(0,245,255,.14), inset 0 0 0 1px rgba(255,255,255,.025);
  isolation: isolate;
}
.oni-product-modal-card::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  border-radius: inherit;
  background: radial-gradient(circle at 82% 22%, rgba(255,31,61,.18), transparent 34%), linear-gradient(90deg, rgba(2,8,13,.90), rgba(2,8,13,.78));
}
.oni-product-modal-mark {
  position: absolute;
  top: 1.05rem;
  right: 1.4rem;
  z-index: -2;
  width: min(34vw, 310px);
  aspect-ratio: 1 / 1;
  pointer-events: none;
  opacity: .50;
  background: url('/static/img/oniterminal-mark-o.svg') center / contain no-repeat;
  filter: drop-shadow(0 0 24px rgba(255, 31, 61, .12));
}
.oni-product-modal-close {
  position: absolute;
  top: 14px;
  right: 16px;
  z-index: 2;
  width: 40px;
  height: 40px;
  border-radius: 999px;
  border: 1px solid rgba(255,255,255,.14);
  background: rgba(0,0,0,.28);
  color: rgba(255,255,255,.92);
  font-size: 1.45rem;
  line-height: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.welcome-splash-overlay[data-welcome-splash-contract="v0.3.10-login-welcome-modal-framework"] {}
body.welcome-splash-open { overflow: hidden; }
.welcome-splash-brand {
  display: grid;
  gap: .15rem;
  justify-items: center;
  margin: .25rem 2.2rem 1.05rem;
  text-align: center;
}
.welcome-splash-logo {
  font-size: clamp(2rem, 6vw, 3.75rem);
  line-height: .95;
  font-weight: 950;
  letter-spacing: -.05em;
  color: #f2f7f8;
  text-shadow: 0 0 22px rgba(255,255,255,.10);
}
.welcome-splash-tagline {
  color: rgba(242,247,248,.82);
  letter-spacing: .33em;
  font-size: clamp(.72rem, 1.5vw, .96rem);
  text-transform: none;
}
.welcome-splash-copy {
  display: grid;
  gap: .72rem;
  color: rgba(242,247,248,.88);
  font-size: clamp(.96rem, 1.55vw, 1.04rem);
  line-height: 1.52;
}
.welcome-splash-copy h2 {
  margin: 0 0 .12rem;
  color: #f2f7f8;
  font-size: clamp(1.06rem, 2.05vw, 1.3rem);
  letter-spacing: .01em;
}
.welcome-splash-copy p { margin: 0; }
.welcome-splash-copy strong { color: #fff; font-weight: 900; }
.welcome-splash-actions,
.release-note-actions {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
  margin-top: 1.2rem;
  padding-top: 1.2rem;
  border-top: 1px solid rgba(255,255,255,.14);
}
.welcome-splash-check {
  display: inline-flex;
  align-items: center;
  gap: .65rem;
  color: rgba(242,247,248,.86);
  cursor: pointer;
  min-height: 44px;
}
.welcome-splash-check input {
  width: 22px;
  height: 22px;
  margin: 0;
  accent-color: var(--cyan);
}
.welcome-splash-start,
.release-note-ok {
  min-width: min(260px, 52vw);
  min-height: 48px;
  border-radius: 10px;
  font-weight: 900;
  letter-spacing: .01em;
}
.release-note-card {
  width: min(640px, calc(100vw - 28px));
}
.release-note-kicker {
  margin: 0 0 .45rem;
  color: var(--cyan);
  text-transform: uppercase;
  letter-spacing: .25em;
  font-size: .78rem;
  font-weight: 900;
}
.release-note-card h2 {
  margin: 0 0 1rem;
  color: #f2f7f8;
  font-size: clamp(1.55rem, 3.5vw, 2.2rem);
}
.release-note-copy {
  display: grid;
  gap: 1rem;
  color: rgba(242,247,248,.88);
}
.release-note-meta {
  display: grid;
  grid-template-columns: minmax(90px, auto) 1fr;
  gap: .4rem .8rem;
  margin: 0;
}
.release-note-meta dt {
  color: var(--cyan);
  font-weight: 900;
  text-transform: uppercase;
  letter-spacing: .12em;
  font-size: .78rem;
}
.release-note-meta dd {
  margin: 0;
  color: #f2f7f8;
  word-break: break-word;
}
.release-note-build-note {
  border: 1px solid rgba(0,245,255,.22);
  border-radius: 14px;
  padding: .9rem 1rem;
  background: rgba(255,255,255,.035);
  color: rgba(242,247,248,.9);
  line-height: 1.45;
}
@media (max-width: 680px) {
  .oni-product-modal-overlay {
    align-items: flex-start;
    padding-top: max(16px, env(safe-area-inset-top));
  }
  .oni-product-modal-card {
    width: min(94vw, 560px);
    max-height: calc(100vh - 34px - env(safe-area-inset-top) - env(safe-area-inset-bottom));
    padding: 1rem;
    border-radius: 18px;
  }
  .oni-product-modal-mark {
    width: min(52vw, 235px);
    top: .8rem;
    right: .4rem;
  }
  .welcome-splash-brand { margin: .15rem 2rem .8rem; }
  .welcome-splash-copy { font-size: .95rem; line-height: 1.48; gap: .62rem; }
  .welcome-splash-actions,
  .release-note-actions {
    flex-direction: column;
    align-items: stretch;
  }
  .welcome-splash-check { justify-content: flex-start; }
  .welcome-splash-start,
  .release-note-ok { width: 100%; min-width: 0; }
  .release-note-meta { grid-template-columns: 1fr; }
}

/* v0.3.11 release notes and upload guard UX */
.release-notes-hero .pill-row { display:flex; flex-wrap:wrap; gap:.5rem; margin-top:.9rem; }
.release-notes-panel { border-color: rgba(0,245,255,.20); }
.release-note-list { margin: .4rem 0 0; padding-left: 1.25rem; display:grid; gap:.45rem; color: rgba(242,247,248,.9); }
.release-note-markdown-block { max-height: none; white-space: pre-wrap; line-height: 1.5; }
.release-note-section { border: 1px solid rgba(0,245,255,.18); border-radius: 14px; padding: .75rem .9rem; background: rgba(255,255,255,.03); }
.release-note-section h3 { margin: 0 0 .5rem; color: var(--cyan); }
.release-note-section ul { margin: 0; padding-left: 1.1rem; display:grid; gap:.35rem; }
.upload-policy-card { border-color: rgba(0,245,255,.20); background: rgba(0,245,255,.035); }
.upload-policy-card strong { color: #fff; }


/* v0.3.12 compact upgrade summary + persistent release history chain */
.upgrade-summary-card { max-width: min(720px, calc(100vw - 32px)); }
.upgrade-summary-copy { display: grid; gap: .85rem; }
.upgrade-summary-meta { grid-template-columns: minmax(80px, 130px) 1fr; }
.upgrade-summary-build-note { max-height: 7.5rem; overflow: auto; }
.upgrade-summary-highlights ul { margin-top: .5rem; }
.upgrade-summary-link-row { margin: .25rem 0 0; }
.release-history-list { display: grid; gap: .8rem; margin-top: 1rem; }
.release-history-entry { border: 1px solid rgba(0,245,255,.18); border-radius: 16px; padding: .8rem 1rem; background: rgba(255,255,255,.025); }
.release-history-entry summary { cursor: pointer; color: rgba(242,247,248,.95); }
.release-note-list.compact { gap: .25rem; margin-top: .4rem; }
@media (max-width: 720px) {
  .upgrade-summary-meta { grid-template-columns: 1fr; }
  .upgrade-summary-build-note { max-height: 9rem; }
}

/* v0.3.13 BNF / Sequence Strategy v2.1 visual contracts */
.seq-token-row {
  display: flex;
  flex-wrap: wrap;
  gap: .45rem;
  margin-top: .7rem;
}
.seq-swing-token {
  display: inline-flex;
  align-items: center;
  gap: .3rem;
  border: 1px solid rgba(0,245,255,.22);
  border-radius: 999px;
  padding: .22rem .5rem;
  background: rgba(5,18,24,.72);
  color: var(--text);
  font-weight: 800;
  letter-spacing: .04em;
}
.seq-swing-token.sequence_high { border-color: rgba(255,77,109,.42); }
.seq-swing-token.sequence_low { border-color: rgba(0,245,255,.42); }
.seq-swing-token small { color: var(--muted); font-weight: 700; letter-spacing: 0; }
.gate-badge {
  display: inline-flex;
  margin: .15rem .2rem .15rem 0;
  border-color: rgba(255,209,102,.4);
  color: #ffd166;
}
@media (max-width: 720px) {
  .seq-token-row { gap: .35rem; }
  .seq-swing-token { width: 100%; justify-content: space-between; border-radius: 1rem; padding: .5rem .7rem; }
}

/* v0.3.14 Darvas phase 2 lifecycle/risk metrics */
.darvas-grid[data-ui-contract="darvas-metrics-v2"] .darvas-metric[data-darvas-metric="retest-status"],
.darvas-grid[data-ui-contract="darvas-metrics-v2"] .darvas-metric[data-darvas-metric="atr-risk"],
.darvas-grid[data-ui-contract="darvas-metrics-v2"] .darvas-metric[data-darvas-metric="overextension"],
.darvas-grid[data-ui-contract="darvas-metrics-v2"] .darvas-metric[data-darvas-metric="history"] {
  min-height: 5.25rem;
}
.darvas-metric-value.small-value {
  font-size: .95rem;
  line-height: 1.3;
}

/* v0.3.18 release-history quality display fix */
.release-history-section-list {
  display: grid;
  gap: .55rem;
  margin-top: .85rem;
}
.release-history-section {
  border: 1px solid rgba(0,245,255,.14);
  border-radius: 12px;
  padding: .65rem .75rem;
  background: rgba(0,245,255,.025);
}
.release-history-section h3 {
  margin: 0 0 .25rem;
  font-size: .92rem;
  color: rgba(0,245,255,.92);
}
.release-history-section p {
  margin: 0;
  color: rgba(242,247,248,.86);
  line-height: 1.45;
}


/* v0.3.21 mobile UX finalization
   iPhone Pro Max and small-touch workflows must not depend on a cramped topbar.
   The account/logout controls move into a dedicated mobile dock, responsive tables
   become card-like blocks, and a JS diagnostics hook records horizontal-overflow state. */
.mobile-account-dock { display: none; }
.mobile-ux-safe-area { max-width: 100%; }
@media (max-width: 760px) {
  html, body { width: 100%; max-width: 100%; overflow-x: hidden; }
  body[data-mobile-ux-contract="v0.3.21"] .topbar { min-height: 112px; padding-bottom: 8px; }
  body[data-mobile-ux-contract="v0.3.21"] .topbar > .topbar-user,
  body[data-mobile-ux-contract="v0.3.21"] .topbar > .logout-form { display: none !important; }
  .mobile-account-dock {
    order: 11;
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto auto;
    align-items: center;
    gap: 8px;
    flex: 0 0 100%;
    width: 100%;
    padding: 8px 2px 0;
    border-top: 1px solid rgba(0,245,255,.10);
  }
  .mobile-account-dock-user { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--muted); font-size: 12px; }
  .mobile-account-dock-link, .mobile-account-dock-logout button {
    min-height: 40px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0 12px;
    border: 1px solid rgba(0,245,255,.24);
    border-radius: 14px;
    background: rgba(8,18,24,.92);
    color: #e8f8fb;
    font-size: 13px;
    font-weight: 800;
    text-decoration: none;
  }
  .mobile-account-dock-logout { margin: 0; }
  .mobile-account-dock-logout button { background: linear-gradient(90deg,rgba(255,31,61,.92),rgba(182,15,109,.92)); border-color: rgba(255,31,61,.42); }
  .page { padding-left: max(12px, env(safe-area-inset-left)); padding-right: max(12px, env(safe-area-inset-right)); }
  .panel, .card, .login-card { max-width: 100%; }
  .grid-form, .form-grid, .compact-form, .stack-form, .watchlist-add-form { gap: 10px; }
  .grid-form input, .grid-form select, .grid-form textarea,
  .form-grid input, .form-grid select, .form-grid textarea,
  .compact-form input, .compact-form select, .compact-form textarea,
  .stack-form input, .stack-form select, .stack-form textarea,
  .watchlist-add-form input, .watchlist-add-form select, .watchlist-add-form textarea { width: 100%; max-width: 100%; font-size: 16px; }
  .button-row, .error-actions, .welcome-splash-actions, .release-note-actions { display: grid; grid-template-columns: 1fr; gap: 8px; }
  .button-row .btn, .error-actions .btn, .welcome-splash-actions button, .release-note-actions button { width: 100%; }
  .asset-chart-workstation { padding: 12px; }
  .asset-chart-toolbar { display: flex; gap: 8px; overflow-x: auto; overscroll-behavior-x: contain; -webkit-overflow-scrolling: touch; padding: 8px; margin: 0 -4px 8px; }
  .asset-chart-toolbar button, .asset-chart-toolbar .chart-toggle, .asset-chart-toolbar .chart-mode-group { flex: 0 0 auto; min-height: 42px; }
  .chart-mode-group { max-width: 100%; }
  .chart-shell { margin-left: -2px; margin-right: -2px; }
  .chart-shell .chart-card { min-height: 440px; height: 58vh; }
  .chart-shell.chart-shell-tall .chart-card { min-height: 540px; height: 68vh; }
  .watchlist-item-card summary { line-height: 1.35; }
  .mobile-card-table-wrap { overflow-x: visible; }
  .mobile-card-table.responsive-table { border: 0; background: transparent; }
  .mobile-card-table.responsive-table tbody tr { margin-bottom: 12px; border: 1px solid rgba(0,245,255,.16); border-radius: 16px; background: rgba(5,13,18,.86); padding: 10px; }
  .mobile-card-table.responsive-table td { border-bottom: 1px solid rgba(255,255,255,.06); min-height: 34px; padding: 8px 8px 8px 42%; }
  .mobile-card-table.responsive-table td:last-child { border-bottom: 0; }
  .mobile-card-table.responsive-table td:before { top: 8px; width: 38%; color: var(--muted); }
  .mobile-card-table.responsive-table input, .mobile-card-table.responsive-table select, .mobile-card-table.responsive-table textarea { width: 100%; min-width: 0; }
  .mobile-card-table.responsive-table .inline-form { margin-top: 8px; }
  body.mobile-overflow-detected::after {
    content: "Mobile layout overflow detected";
    position: fixed;
    left: 10px;
    right: 10px;
    bottom: max(10px, env(safe-area-inset-bottom));
    z-index: 98000;
    padding: 8px 10px;
    border: 1px solid rgba(255,209,102,.48);
    border-radius: 12px;
    background: rgba(25,19,4,.92);
    color: #ffd166;
    font-size: 12px;
    text-align: center;
    pointer-events: none;
  }
}
@media (max-width: 430px) {
  body[data-mobile-ux-contract="v0.3.21"] .topbar { min-height: 110px; }
  .mobile-account-dock { grid-template-columns: minmax(0, 1fr) auto auto; gap: 6px; }
  .mobile-account-dock-link, .mobile-account-dock-logout button { padding: 0 10px; min-height: 38px; }
  .mobile-card-table.responsive-table td { padding-left: 40%; }
  .mobile-card-table.responsive-table td:before { width: 36%; }
}

/* v0.3.22 Admin User mobile UX fix
   The owner-only Existing Users workflow must not render as a desktop table on phones.
   Each user is a responsive card with explicit field labels, compact status metadata,
   and touch-safe Save / Set password / Revoke sessions actions. */
.admin-users-panel[data-admin-user-mobile-contract="v0.3.22"] { overflow: hidden; }
.admin-user-list { display: grid; gap: 14px; }
.admin-user-card {
  border: 1px solid rgba(0,245,255,.18);
  border-radius: 18px;
  background: rgba(5,13,18,.72);
  padding: 14px;
  max-width: 100%;
  overflow: hidden;
}
.admin-user-card-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  padding-bottom: 12px;
  margin-bottom: 12px;
  border-bottom: 1px solid rgba(255,255,255,.08);
}
.admin-user-identity { min-width: 0; }
.admin-user-identity strong { display: block; overflow-wrap: anywhere; word-break: break-word; }
.field-label { display: block; color: var(--muted, #91a4ad); font-size: 0.72rem; line-height: 1.2; letter-spacing: .14em; text-transform: uppercase; margin-bottom: 4px; }
.admin-user-badges { display: flex; gap: 6px; flex-wrap: wrap; justify-content: flex-end; }
.admin-user-edit-form {
  grid-template-columns: minmax(180px, 1.25fr) minmax(130px, .8fr) minmax(160px, 1fr) minmax(150px, .85fr) minmax(100px, .55fr) minmax(100px, .55fr);
  align-items: end;
}
.admin-user-edit-form label { min-width: 0; }
.admin-user-edit-form input, .admin-user-edit-form select { min-width: 0; }
.admin-user-active-toggle { min-height: 42px; align-items: center; }
.admin-user-meta-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  margin: 12px 0 0;
}
.admin-user-meta-grid div {
  border: 1px solid rgba(255,255,255,.08);
  border-radius: 12px;
  padding: 8px 10px;
  background: rgba(0,245,255,.035);
  min-width: 0;
}
.admin-user-meta-grid dt { color: var(--muted, #91a4ad); font-size: 0.72rem; letter-spacing: .10em; text-transform: uppercase; margin-bottom: 4px; }
.admin-user-meta-grid dd { margin: 0; overflow-wrap: anywhere; }
.admin-user-secondary-actions { padding-top: 12px; margin-top: 12px; border-top: 1px solid rgba(255,255,255,.08); padding-left: 0; }
.admin-user-password-form { flex: 1 1 520px; }
.admin-user-password-form label:first-of-type { flex: 1 1 260px; }
.admin-user-revoke-form { flex: 0 0 auto; }
@media (max-width: 760px) {
  .admin-users-panel[data-admin-user-mobile-contract="v0.3.22"] { padding-left: 12px; padding-right: 12px; }
  .admin-user-card { padding: 12px; border-radius: 16px; }
  .admin-user-card-header { display: grid; grid-template-columns: 1fr; gap: 8px; }
  .admin-user-badges { justify-content: flex-start; }
  .admin-user-edit-form { grid-template-columns: 1fr !important; gap: 10px; }
  .admin-user-edit-form label, .admin-user-edit-form button { width: 100%; }
  .admin-user-edit-form button { min-height: 48px; }
  .admin-user-active-toggle { justify-content: flex-start; }
  .admin-user-meta-grid { grid-template-columns: 1fr; }
  .admin-user-secondary-actions { display: grid; grid-template-columns: 1fr; gap: 10px; }
  .admin-user-secondary-actions .inline-form, .admin-user-password-form, .admin-user-revoke-form { width: 100%; display: grid; grid-template-columns: 1fr; gap: 10px; }
  .admin-user-secondary-actions input, .admin-user-secondary-actions button { width: 100%; min-height: 46px; }
  .admin-user-secondary-actions .checkbox-label { justify-content: flex-start; }
}


/* v0.3.23 desktop dashboard terminal workstation
   Turns Dashboard Home into the daily operating surface: action queue, focus chart,
   right rail, market heat, holdings and drift panels. */
.dashboard-workstation { gap: 18px; }
.dashboard-command-header { display:flex; justify-content:space-between; align-items:flex-start; gap:18px; background:linear-gradient(135deg, rgba(0,245,255,.08), rgba(255,31,90,.045)); }
.dashboard-command-header h1 { margin:.15rem 0 .35rem; }
.dashboard-command-actions { display:flex; flex-wrap:wrap; gap:10px; justify-content:flex-end; }
.section-kicker { display:inline-block; color:var(--cyan); text-transform:uppercase; letter-spacing:.16em; font-size:11px; font-weight:900; }
.workstation-kpi-row .card { min-height: 112px; }
.workstation-main-grid { grid-template-columns: minmax(0, 1fr) minmax(320px, 400px); align-items:start; }
.workstation-primary-stack { display:grid; gap:16px; min-width:0; }
.today-action-panel { border-color:rgba(0,245,255,.24); }
.action-queue-list { display:grid; gap:10px; }
.action-queue-item, .action-queue-empty { display:grid; grid-template-columns:auto 1fr; gap:10px; align-items:start; padding:12px 13px; border:1px solid rgba(0,245,255,.14); border-radius:14px; background:rgba(3,12,17,.58); text-decoration:none; color:var(--text); }
.action-queue-item:hover { border-color:rgba(0,245,255,.38); background:rgba(0,245,255,.07); }
.action-queue-item strong, .action-queue-empty strong { display:block; margin-bottom:3px; }
.action-queue-item small, .action-queue-empty small { color:var(--muted); line-height:1.35; }
.action-severity-dot { width:10px; height:10px; border-radius:999px; margin-top:5px; background:var(--cyan); box-shadow:0 0 14px rgba(0,245,255,.35); }
.action-queue-item.severity-warning .action-severity-dot { background:#ffd166; box-shadow:0 0 14px rgba(255,209,102,.35); }
.action-queue-item.severity-critical .action-severity-dot { background:#ff3158; box-shadow:0 0 14px rgba(255,49,88,.42); }
.action-queue-item.severity-positive .action-severity-dot { background:#33ff77; box-shadow:0 0 14px rgba(51,255,119,.35); }
.workstation-focus-card { align-items:stretch; min-height:300px; padding:0; overflow:hidden; }
.focus-chart-main { min-width:0; flex:1; padding:22px; display:grid; gap:14px; }
.focus-chart-meta { display:flex; gap:8px; flex-wrap:wrap; align-items:center; }
.workstation-sparkline { min-height:160px; display:flex; align-items:end; gap:4px; padding:16px 12px 10px; border:1px solid rgba(0,245,255,.14); border-radius:16px; background:linear-gradient(180deg, rgba(0,245,255,.08), rgba(4,10,15,.35)); overflow:hidden; }
.spark-bar { flex:1 1 8px; min-width:4px; border-radius:999px 999px 3px 3px; background:linear-gradient(180deg, rgba(0,245,255,.85), rgba(0,245,255,.18)); box-shadow:0 0 12px rgba(0,245,255,.12); }
.spark-down { background:linear-gradient(180deg, rgba(255,49,88,.85), rgba(255,49,88,.18)); box-shadow:0 0 12px rgba(255,49,88,.12); }
.focus-price-row { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; }
.focus-price-row span, .focus-context-stack div { border:1px solid rgba(0,245,255,.14); border-radius:12px; padding:10px; background:rgba(0,0,0,.22); }
.focus-price-row strong, .focus-context-stack strong { display:block; margin-top:3px; color:#f6fbff; }
.focus-context-stack { width:220px; border-left:1px solid rgba(0,245,255,.16); padding:18px; display:grid; gap:10px; align-content:center; background:rgba(0,0,0,.16); }
.focus-context-stack label { color:var(--muted); text-transform:uppercase; letter-spacing:.08em; font-size:11px; font-weight:800; }
.workstation-lower-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
.holding-list, .drift-list { display:grid; gap:8px; }
.holding-row, .drift-row { display:flex; justify-content:space-between; align-items:center; gap:10px; padding:10px 12px; border:1px solid rgba(0,245,255,.14); border-radius:12px; background:rgba(3,12,17,.46); text-decoration:none; color:var(--text); }
.holding-row small, .drift-row small { display:block; color:var(--muted); margin-top:2px; }
.drift-row.severity-warning { border-color:rgba(255,209,102,.28); }
.drift-row.severity-critical { border-color:rgba(255,49,88,.34); }
.workstation-right-rail .panel { border-color:rgba(0,245,255,.13); }
.market-heat-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; margin:12px 0; }
.market-heat-grid span { border:1px solid rgba(0,245,255,.13); border-radius:10px; padding:8px; color:var(--muted); font-size:12px; text-transform:uppercase; letter-spacing:.06em; }
@media (max-width: 1180px) {
  .workstation-main-grid { grid-template-columns:1fr; }
  .workstation-right-rail { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width: 760px) {
  .dashboard-command-header, .dashboard-command-actions { display:grid; grid-template-columns:1fr; width:100%; }
  .workstation-right-rail, .workstation-lower-grid { grid-template-columns:1fr; }
  .workstation-focus-card { display:grid; }
  .focus-context-stack { width:auto; border-left:0; border-top:1px solid rgba(0,245,255,.16); grid-template-columns:repeat(2,minmax(0,1fr)); }
  .focus-price-row { grid-template-columns:1fr; }
  .workstation-sparkline { min-height:130px; }
}

/* v0.3.24 Admin Maintenance quality cleanup
   Mobile Admin Maintenance must not concatenate status/hash/limit fields or
   render quality actions as cramped inline forms. Status summaries use labeled
   blocks; hashes wrap; stale browser samples and D1 backfill gaps are presented
   as warnings/action-required instead of confusing hard failures. */
.panel-header-row { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; flex-wrap:wrap; }
.panel-header-row h2 { min-width:0; }
.panel-header-row .link-pill { max-width:100%; white-space:normal; text-align:center; }
.quality-latest-card[data-admin-maintenance-quality-card="v0.3.24"] {
  display:grid;
  gap:12px;
  padding:14px 16px;
  overflow:hidden;
}
.quality-latest-head { display:flex; justify-content:space-between; align-items:center; gap:10px; flex-wrap:wrap; }
.quality-latest-head span { color:var(--muted); font-size:.78rem; text-transform:uppercase; letter-spacing:.12em; font-weight:900; }
.quality-latest-head strong { font-size:1.05rem; overflow-wrap:anywhere; }
.quality-summary-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:8px; }
.quality-summary-grid span, .quality-meta-row, .quality-hash-row {
  min-width:0;
  border:1px solid rgba(0,245,255,.12);
  border-radius:12px;
  background:rgba(0,0,0,.18);
  padding:8px 10px;
}
.quality-summary-grid b { display:block; color:#f5fbff; font-size:1.18rem; line-height:1.1; }
.quality-summary-grid small, .quality-meta-row span, .quality-hash-row span { display:block; color:var(--muted); font-size:.72rem; text-transform:uppercase; letter-spacing:.10em; margin-top:2px; }
.quality-meta-row { display:flex; align-items:center; justify-content:space-between; gap:10px; flex-wrap:wrap; }
.quality-meta-row strong { overflow-wrap:anywhere; }
.quality-hash-row { display:grid; gap:4px; }
.quality-hash-row code { display:block; max-width:100%; white-space:normal; overflow-wrap:anywhere; word-break:break-all; font-size:.78rem; line-height:1.35; }
.quality-action-grid[data-admin-maintenance-action-grid="v0.3.24"] { display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:12px; margin:18px 0; }
.quality-action-form { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:10px; align-items:end; margin:0; }
.quality-action-form label { display:grid; gap:6px; min-width:0; color:var(--muted); font-weight:800; }
.quality-action-form input { width:100%; min-width:0; margin:0; }
.quality-action-form button { min-height:44px; white-space:normal; }
.status-card.warning, .quality-latest-card.warning { border-color:rgba(255,209,102,.36); box-shadow:0 0 24px rgba(255,209,102,.06); }
@media (max-width: 760px) {
  .panel-header-row { display:grid; grid-template-columns:1fr; gap:10px; }
  .panel-header-row .link-pill { width:100%; justify-content:center; }
  .quality-summary-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .quality-action-grid[data-admin-maintenance-action-grid="v0.3.24"] { grid-template-columns:1fr; }
  .quality-action-form { grid-template-columns:1fr; }
  .quality-action-form button { width:100%; min-height:48px; }
}
@media (max-width: 430px) {
  .quality-summary-grid { grid-template-columns:1fr; }
  .quality-latest-card[data-admin-maintenance-quality-card="v0.3.24"] { padding:12px; }
}


/* v0.3.25 legacy debt burn-down */
.audit-event-list { display: grid; gap: 0.75rem; }
.audit-event-card { border: 1px solid rgba(34, 211, 238, 0.24); border-radius: 14px; padding: 0.85rem; background: rgba(2, 6, 23, 0.34); display: grid; gap: 0.35rem; }
.audit-event-card code { white-space: pre-wrap; overflow-wrap: anywhere; word-break: break-word; max-width: 100%; display: block; }
.schema-identity-fail, .debt-fail { border-color: rgba(244, 63, 94, 0.55); }
@media (max-width: 760px) { .audit-event-card { font-size: 0.95rem; } }

/* v0.3.26 Maintenance split and legacy cleanup completion
   Admin Maintenance is now a structured operations console: Overview/Status,
   Data Foundation, Market Data, Broker/Provider, System Quality, Diagnostics,
   Advanced Repair, and clearly classified dangerous/long-running actions. */
.maintenance-overview-panel[data-maintenance-split-contract="v0.3.26"] { background: linear-gradient(135deg, rgba(0,245,255,.08), rgba(255,49,88,.04)); }
.maintenance-nav-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:10px; margin-top:16px; }
.maintenance-nav-grid a { display:flex; align-items:center; justify-content:center; min-height:42px; padding:9px 12px; border:1px solid rgba(0,245,255,.22); border-radius:999px; text-decoration:none; color:var(--text); background:rgba(0,245,255,.045); font-weight:800; text-align:center; }
.maintenance-nav-grid a:hover { border-color:rgba(0,245,255,.48); background:rgba(0,245,255,.09); }
.maintenance-status-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(210px,1fr)); gap:12px; margin:12px 0 18px; }
.maintenance-status-grid.compact { grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); }
.maintenance-identity-table code { overflow-wrap:anywhere; word-break:break-all; }
.maintenance-tool-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:14px; align-items:start; }
.maintenance-tool-grid .card { min-width:0; overflow:hidden; }
.provider-registry-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:12px; margin:14px 0 18px; }
.provider-registry-card { border:1px solid rgba(0,245,255,.18); border-radius:16px; padding:14px; background:rgba(2,6,23,.34); display:grid; gap:6px; min-width:0; }
.provider-registry-card strong { overflow-wrap:anywhere; }
.provider-registry-card span { color:var(--cyan); font-family:var(--mono, monospace); font-size:.86rem; }
.provider-registry-card small { color:var(--muted); line-height:1.35; }
.risk-badge { display:inline-flex; align-items:center; justify-content:center; min-height:30px; padding:5px 10px; border-radius:999px; border:1px solid rgba(0,245,255,.24); background:rgba(0,245,255,.06); color:var(--cyan); font-size:.75rem; font-weight:900; text-transform:uppercase; letter-spacing:.08em; text-align:center; }
.risk-badge.read-only { border-color:rgba(51,255,119,.28); color:#9affbd; background:rgba(51,255,119,.06); }
.risk-badge.writes-db, .risk-badge.long-running, .risk-badge.advanced { border-color:rgba(255,209,102,.34); color:#ffd166; background:rgba(255,209,102,.07); }
.risk-badge.danger { border-color:rgba(255,49,88,.40); color:#ff8ea4; background:rgba(255,49,88,.08); }
.classified-action { border-left:3px solid rgba(0,245,255,.24); padding-left:10px; }
.classified-action[data-risk*="long-running"], .classified-action[data-risk*="advanced"] { border-left-color:rgba(255,209,102,.55); }
.classified-action[data-risk*="schema"], .classified-action[data-risk*="danger"] { border-left-color:rgba(255,49,88,.65); }
.advanced-repair-panel { border-color:rgba(255,209,102,.26); }
.danger-zone-panel { border-color:rgba(255,49,88,.28); }
@media (max-width:760px) {
  .maintenance-nav-grid { grid-template-columns:1fr; }
  .maintenance-tool-grid, .provider-registry-grid, .maintenance-status-grid { grid-template-columns:1fr; }
  .risk-badge { width:100%; }
  .classified-action { padding-left:0; border-left:0; border-top:3px solid rgba(255,209,102,.45); padding-top:10px; }
}

/* v0.3.30 mobile anchor scroll stabilization + global Jump to top
   Long pages such as Admin Maintenance use same-page section links. On iOS Safari
   the native hash jump can be reversed by sticky/mobile-nav layout work; JS now
   re-applies a topbar-aware scroll offset. The global Jump to top control is
   intentionally available on all long pages, mobile and desktop. */
html { scroll-padding-top: calc(var(--oni-mobile-submenu-top, 126px) + 18px); }
[data-anchor-scroll-contract="v0.3.30"] [id],
[id][data-maintenance-section] { scroll-margin-top: calc(var(--oni-mobile-submenu-top, 126px) + 18px); }
.maintenance-nav-grid[data-anchor-scroll-contract="v0.3.30"] a[data-smooth-anchor="v0.3.30"] { scroll-margin-top: 0; }
.oni-jump-top {
  position: fixed;
  right: max(18px, env(safe-area-inset-right));
  bottom: max(18px, env(safe-area-inset-bottom));
  z-index: 92000;
  width: 52px;
  height: 52px;
  border-radius: 999px;
  border: 1px solid rgba(0,245,255,.46);
  background: linear-gradient(135deg, rgba(0,245,255,.17), rgba(255,31,61,.16));
  color: #f6fbff;
  font-size: 28px;
  font-weight: 900;
  line-height: 1;
  box-shadow: 0 12px 34px rgba(0,0,0,.45), 0 0 22px rgba(0,245,255,.16);
  cursor: pointer;
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}
.oni-jump-top[hidden] { display: none !important; }
.oni-jump-top:hover,
.oni-jump-top:focus-visible { border-color: rgba(0,245,255,.78); outline: none; transform: translateY(-1px); }
@media (max-width: 760px) {
  html { scroll-padding-top: calc(var(--oni-mobile-submenu-top, 136px) + 20px); }
  [data-anchor-scroll-contract="v0.3.30"] [id],
  [id][data-maintenance-section] { scroll-margin-top: calc(var(--oni-mobile-submenu-top, 136px) + 20px); }
  .oni-jump-top {
    right: max(16px, env(safe-area-inset-right));
    bottom: calc(86px + env(safe-area-inset-bottom));
    width: 50px;
    height: 50px;
    font-size: 26px;
  }
}


/* v0.3.32 Admin Error Cases foundation */
.bug-case-kpis .card strong { display:block; font-size:1.6rem; }
.bug-case-filter-form { display:flex; flex-wrap:wrap; align-items:end; gap:12px; }
.bug-case-filter-form label { display:flex; flex-direction:column; gap:4px; min-width:150px; color:var(--muted); font-size:.85rem; }
.bug-case-filter-form select { background:#050d12; border:1px solid var(--border); color:var(--text); border-radius:8px; padding:10px; }
.bug-severity { display:inline-flex; align-items:center; border-radius:999px; padding:4px 9px; font-size:.78rem; font-weight:800; text-transform:uppercase; border:1px solid rgba(159,178,186,.3); }
.bug-severity.severity-info { color:#9fb2ba; background:rgba(159,178,186,.10); }
.bug-severity.severity-warning { color:#ffd166; background:rgba(255,209,102,.14); border-color:rgba(255,209,102,.38); }
.bug-severity.severity-error { color:#ff8fa0; background:rgba(255,31,61,.12); border-color:rgba(255,31,61,.42); }
.bug-severity.severity-critical { color:#fff; background:rgba(255,31,61,.26); border-color:rgba(255,31,61,.72); box-shadow:0 0 18px rgba(255,31,61,.20); }
.status.triaged,.status.in_progress,.status.fixed_pending_release { background:rgba(255,209,102,.16); color:#ffd166; }
.status.fixed_released,.status.ignored,.status.duplicate,.status.wont_fix { background:rgba(159,178,186,.12); color:#9fb2ba; }
.detail-list { display:grid; grid-template-columns:minmax(140px, 220px) 1fr; gap:8px 14px; }
.detail-list dt { color:var(--muted); font-size:.82rem; text-transform:uppercase; letter-spacing:.04em; }
.detail-list dd { margin:0; min-width:0; overflow-wrap:anywhere; }
.diag-pre { max-width:100%; white-space:pre-wrap; word-break:break-word; background:rgba(0,0,0,.28); border:1px solid rgba(0,245,255,.13); border-radius:10px; padding:10px; color:#dffbff; }
.diag-pre.small { font-size:.78rem; max-height:130px; overflow:auto; }
.oni-error-case { margin:.65rem 0 0; padding:.55rem .7rem; border:1px solid rgba(0,245,255,.28); border-radius:10px; color:#bdf8ff; background:rgba(0,245,255,.08); font-weight:700; }
@media(max-width: 760px){ .detail-list { grid-template-columns:1fr; } .bug-case-filter-form label { width:100%; } }
/* compatibility marker for v0.3.32 release guard: bugcase-table */
.bugcase-table { width:100%; }

/* v0.3.33 Bug-Tracker naming and self-test tools
   Keeps the navigation label "Bug Cases" while the page title becomes the
   product-facing "Bug-Tracker". Adds a compact validation panel for synthetic
   case creation and direct 404/500 Admin error-page previews. */
.bug-tracker-selftest { border-color: rgba(0,245,255,.24); background: linear-gradient(135deg, rgba(0,245,255,.055), rgba(255,49,88,.025)); }
.bug-tracker-selftest-actions { display:flex; flex-wrap:wrap; gap:10px; align-items:center; margin:14px 0 8px; }
.bug-tracker-selftest-actions form { margin:0; }
.bug-tracker-selftest-actions .btn { min-height:42px; }
@media(max-width: 760px){ .bug-tracker-selftest-actions { display:grid; grid-template-columns:1fr; } .bug-tracker-selftest-actions .btn, .bug-tracker-selftest-actions button { width:100%; } }

/* v0.3.35 Fallback preview and branded error-page design cleanup.
   Application 404/500 previews are visually distinct from the Apache static
   503 service-down fallback; Bug-Tracker links expose both paths. */
.branded-error-page-body {
  min-height: 100vh;
  margin: 0;
  display: grid;
  place-items: center;
  padding: clamp(18px, 4vw, 42px);
  background:
    radial-gradient(circle at 18% 0%, rgba(41,244,255,.14), transparent 34%),
    radial-gradient(circle at 86% 6%, rgba(242,5,92,.13), transparent 30%),
    linear-gradient(135deg, #02070b, #06131a 55%, #031014);
  color: var(--text, #eef7f8);
}
.branded-error-shell { width: min(980px, 100%); }
.branded-error-card {
  border: 1px solid rgba(41,244,255,.35);
  border-radius: 28px;
  padding: clamp(24px, 5vw, 54px);
  background: linear-gradient(145deg, rgba(7,21,29,.94), rgba(3,11,16,.98));
  box-shadow: 0 0 0 1px rgba(41,244,255,.08), 0 28px 90px rgba(0,0,0,.48);
  overflow: hidden;
}
.branded-error-card.status-500 { border-color: rgba(242,5,92,.42); }
.branded-error-topline { display:flex; justify-content:space-between; align-items:flex-start; gap:16px; margin-bottom: clamp(22px, 4vw, 38px); }
.brand-lockup { font-size: clamp(24px, 4vw, 38px); font-weight: 900; letter-spacing: -.05em; color:#f2f7f8; }
.brand-lockup small { display:block; margin-top:2px; color:#8fa4ac; font-size: clamp(12px, 1.8vw, 15px); letter-spacing:.12em; text-transform: uppercase; }
.brand-red { color:#f2055c; }
.error-status-pill { display:inline-flex; align-items:center; justify-content:center; min-width:70px; border:1px solid rgba(41,244,255,.35); border-radius:999px; padding:9px 16px; color:#29f4ff; font-weight:900; letter-spacing:.08em; background:rgba(2,9,13,.55); }
.branded-error-card h1 { margin:0; max-width:780px; font-size: clamp(38px, 7vw, 78px); line-height:.96; letter-spacing:-.055em; }
.error-lead { color:#9aadb6; font-size: clamp(18px, 2.7vw, 25px); line-height:1.55; max-width:760px; margin:22px 0 0; }
.error-detail-box { margin:28px 0 0; border:1px solid rgba(41,244,255,.22); border-radius:18px; background:rgba(2,9,13,.62); padding:14px 16px; }
.error-detail-box summary { cursor:pointer; color:#29f4ff; font-weight:850; }
.error-detail-box pre { overflow:auto; white-space:pre-wrap; max-height:220px; margin:12px 0 0; padding:14px; border-radius:14px; background:rgba(0,0,0,.36); color:#dce8ea; }
.refined-error-actions { display:flex; flex-wrap:wrap; gap:12px; margin-top:30px; }
.refined-error-actions .btn { min-width: 150px; justify-content:center; text-align:center; text-decoration:none; }
.error-footnote { margin-top:22px; }
@media (max-width: 720px) {
  .branded-error-page-body { align-items: stretch; place-items: start center; padding: 16px; }
  .branded-error-card { border-radius:22px; padding:24px 20px; }
  .branded-error-topline { flex-direction:column; }
  .refined-error-actions .btn { width:100%; }
}

/* v0.3.34 User Session Console
   Owner-only Admin User Management is now a compact directory first. Full
   profile/security/session editing appears only in the detail pane so the list
   no longer behaves like a permanently expanded debug form. */
.admin-user-console {
  display: grid;
  grid-template-columns: minmax(0, 1.7fr) minmax(320px, .8fr);
  gap: 16px;
  align-items: start;
}
.admin-user-list-pane,
.admin-user-detail-pane,
.admin-session-console { overflow: hidden; }
.admin-user-toolbar {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: flex-start;
  margin-bottom: 14px;
}
.admin-user-kpis {
  display: grid;
  grid-template-columns: repeat(4, minmax(90px, 1fr));
  gap: 10px;
  margin: 12px 0 16px;
}
.admin-user-kpis div {
  border: 1px solid rgba(24,213,214,.22);
  background: rgba(0, 28, 31, .58);
  border-radius: 14px;
  padding: 10px 12px;
}
.admin-user-kpis span { display:block; color: var(--muted, #91a4ad); font-size: .74rem; text-transform: uppercase; letter-spacing: .10em; }
.admin-user-kpis strong { display:block; margin-top: 4px; font-size: 1.35rem; }
.admin-user-filters {
  display: grid;
  grid-template-columns: minmax(220px, 1.4fr) minmax(120px, .7fr) minmax(120px, .7fr) minmax(120px, .7fr) auto auto;
  gap: 10px;
  align-items: end;
  margin-bottom: 14px;
}
.admin-user-filters label { color: var(--muted, #91a4ad); font-size: .9rem; }
.admin-user-filters input,
.admin-user-filters select,
.admin-user-detail-form input,
.admin-user-detail-form select { width: 100%; }
.admin-user-table-wrap,
.admin-session-table-wrap { overflow-x: auto; }
.admin-user-table,
.admin-session-table { width: 100%; border-collapse: collapse; min-width: 940px; }
.admin-user-table th,
.admin-user-table td,
.admin-session-table th,
.admin-session-table td { padding: 10px 9px; border-bottom: 1px solid rgba(255,255,255,.08); text-align: left; vertical-align: top; }
.admin-user-table th,
.admin-session-table th { color: var(--muted, #91a4ad); font-size: .75rem; text-transform: uppercase; letter-spacing: .12em; }
.admin-user-row.is-selected,
.admin-session-row.is-current { background: rgba(24,213,214,.08); }
.session-dot {
  display: inline-block;
  width: 10px;
  height: 10px;
  border-radius: 999px;
  margin-right: 7px;
  background: rgba(145,164,173,.6);
  box-shadow: 0 0 0 2px rgba(145,164,173,.12);
}
.session-dot.online,
.session-dot.active { background: #26e6a4; box-shadow: 0 0 0 2px rgba(38,230,164,.18), 0 0 12px rgba(38,230,164,.45); }
.session-dot.idle { background: #ffcf5a; box-shadow: 0 0 0 2px rgba(255,207,90,.18); }
.session-dot.offline,
.session-dot.expired { background: #77838a; }
.session-dot.revoked { background: #ff4d7d; box-shadow: 0 0 0 2px rgba(255,77,125,.18); }
.status-copy { text-transform: capitalize; }
.admin-user-actions { white-space: nowrap; display: flex; gap: 6px; flex-wrap: wrap; }
.admin-user-detail-pane { position: sticky; top: 14px; }
.admin-user-detail-tabs { display: flex; gap: 6px; flex-wrap: wrap; margin: 12px 0; }
.admin-user-detail-tabs span {
  border: 1px solid rgba(24,213,214,.25);
  border-radius: 999px;
  padding: 5px 9px;
  color: var(--muted, #91a4ad);
  font-size: .78rem;
  letter-spacing: .04em;
  text-transform: uppercase;
}
.admin-user-detail-form { display: grid; gap: 10px; }
.admin-user-detail-form.compact { margin-top: 8px; }
.detail-actions { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; }
.admin-user-detail-meta {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
  margin: 14px 0;
}
.admin-user-detail-meta div {
  border: 1px solid rgba(255,255,255,.08);
  border-radius: 12px;
  padding: 8px 10px;
  background: rgba(255,255,255,.025);
}
.admin-user-detail-meta dt { color: var(--muted, #91a4ad); text-transform: uppercase; letter-spacing: .09em; font-size: .7rem; }
.admin-user-detail-meta dd { margin: 4px 0 0; overflow-wrap: anywhere; }
.admin-user-security-box { border-top: 1px solid rgba(255,255,255,.08); margin-top: 14px; padding-top: 12px; }
.admin-user-revoke-all-form { margin-top: 10px; }
.danger-button { background: linear-gradient(90deg, #f03, #b20d7a); }
.admin-session-row.revoked,
.admin-session-row.expired { opacity: .72; }

@media (max-width: 1120px) {
  .admin-user-console { grid-template-columns: 1fr; }
  .admin-user-detail-pane { position: static; }
  .admin-user-filters { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 760px) {
  .admin-user-toolbar { display: grid; grid-template-columns: 1fr; }
  .admin-user-kpis { grid-template-columns: 1fr 1fr; }
  .admin-user-filters { grid-template-columns: 1fr; }
  .admin-user-table,
  .admin-session-table { min-width: 0; }
  .admin-user-table thead,
  .admin-session-table thead { display: none; }
  .admin-user-table tr,
  .admin-session-table tr { display: block; border: 1px solid rgba(24,213,214,.18); border-radius: 16px; margin-bottom: 10px; padding: 8px; background: rgba(0, 12, 16, .46); }
  .admin-user-table td,
  .admin-session-table td { display: grid; grid-template-columns: 110px minmax(0, 1fr); gap: 8px; border-bottom: 0; padding: 7px 4px; }
  .admin-user-table td::before,
  .admin-session-table td::before { content: attr(data-label); color: var(--muted, #91a4ad); text-transform: uppercase; letter-spacing: .09em; font-size: .68rem; }
  .admin-user-actions { white-space: normal; }
  .admin-user-actions .btn,
  .admin-user-actions button,
  .detail-actions .btn,
  .detail-actions button { width: 100%; text-align: center; }
  .admin-user-detail-meta { grid-template-columns: 1fr; }
}

/* v0.3.39 Bug-Tracker context diagnostics and attached analysis logs */
.bug-diagnostic-snapshot h3 { margin-top: 18px; margin-bottom: 8px; }
.compact-detail-list { gap: 6px 18px; }
.compact-detail-list dt { min-width: 110px; }
.bug-case-kpis .card .small-strong { font-size: .95rem; word-break: break-word; }
.diagnostic-grid { display:grid; grid-template-columns:repeat(auto-fit, minmax(220px, 1fr)); gap:12px; margin:12px 0; }
.diagnostic-mini-card { border:1px solid rgba(0,245,255,.16); border-radius:14px; background:rgba(0,20,28,.44); padding:12px; display:flex; flex-direction:column; gap:6px; min-width:0; }
.diagnostic-mini-card strong { font-size:1.05rem; color:var(--accent); }
.diagnostic-mini-card code { white-space:normal; word-break:break-word; }
.diagnostic-details { border:1px solid rgba(0,245,255,.12); border-radius:12px; padding:10px 12px; margin-top:10px; background:rgba(0,0,0,.16); }
.diagnostic-details summary { cursor:pointer; font-weight:700; color:var(--text); }
.bug-diagnostic-snapshot.missing { border-style:dashed; }
@media(max-width: 760px){ .diagnostic-grid { grid-template-columns:1fr; } }

/* v0.3.33 product shell + dashboard design foundation
   App-Shell stabilization: desktop sidebar is the primary product navigation,
   topbar becomes a command/status bar, dashboard moves toward the target mockup,
   and local 1-n style switching is handled via data-oni-theme without DB/state migration.
   Mobile guards from v0.3.21/v0.3.30 remain preserved. */
:root {
  --oni-bg-main: #02070a;
  --oni-bg-shell: rgba(2, 7, 10, .94);
  --oni-bg-panel: rgba(8, 18, 24, .88);
  --oni-bg-panel-soft: rgba(5, 13, 18, .68);
  --oni-text-main: #f2f7f8;
  --oni-text-muted: #7e9299;
  --oni-accent-cyan: #00f5ff;
  --oni-accent-red: #ff1f3d;
  --oni-border-cyan: rgba(0,245,255,.18);
  --oni-border-red: rgba(255,31,61,.24);
  --oni-radius-card: 16px;
  --oni-radius-panel: 22px;
  --oni-shadow-card: 0 22px 70px rgba(0,0,0,.30), 0 0 26px rgba(0,245,255,.05);
  --oni-shell-sidebar-width: 238px;
  --oni-shell-topbar-height: 74px;
  --oni-shell-gap: 24px;
  --bg: var(--oni-bg-main);
  --panel: var(--oni-bg-panel);
  --panel2: var(--oni-bg-panel-soft);
  --text: var(--oni-text-main);
  --muted: var(--oni-text-muted);
  --cyan: var(--oni-accent-cyan);
  --red: var(--oni-accent-red);
  --border: var(--oni-border-cyan);
}
html[data-oni-theme="glass"] {
  --oni-bg-main: #05070c;
  --oni-bg-shell: rgba(10, 13, 20, .82);
  --oni-bg-panel: rgba(16, 23, 35, .72);
  --oni-bg-panel-soft: rgba(255, 255, 255, .045);
  --oni-border-cyan: rgba(114, 255, 244, .22);
  --oni-border-red: rgba(255, 72, 120, .20);
  --oni-shadow-card: 0 26px 80px rgba(0,0,0,.38), 0 0 34px rgba(114,255,244,.07);
}
html[data-oni-theme="focus"] {
  --oni-bg-main: #000b0d;
  --oni-bg-shell: rgba(0, 15, 18, .95);
  --oni-bg-panel: rgba(0, 25, 29, .84);
  --oni-bg-panel-soft: rgba(0, 245, 255, .055);
  --oni-accent-red: #ff2b66;
  --oni-border-cyan: rgba(0,245,255,.28);
}
html[data-oni-theme="contrast"] {
  --oni-bg-main: #000000;
  --oni-bg-shell: rgba(0,0,0,.98);
  --oni-bg-panel: rgba(2, 8, 12, .96);
  --oni-bg-panel-soft: rgba(10, 22, 28, .92);
  --oni-text-main: #ffffff;
  --oni-text-muted: #b9cbd2;
  --oni-border-cyan: rgba(0,245,255,.42);
  --oni-border-red: rgba(255,31,61,.42);
}
html[data-oni-theme] body {
  background:
    radial-gradient(circle at 82% 4%, rgba(255,31,61,.16), transparent 29%),
    radial-gradient(circle at 12% 14%, rgba(0,245,255,.12), transparent 34%),
    linear-gradient(180deg, var(--oni-bg-main), #020607 70%);
  color: var(--oni-text-main);
}
.panel, .card, .login-card {
  border-radius: var(--oni-radius-card);
  background: linear-gradient(180deg, var(--oni-bg-panel), rgba(5, 12, 17, .88));
  border-color: var(--oni-border-cyan);
  box-shadow: var(--oni-shadow-card);
}
.panel-hero { border-radius: var(--oni-radius-panel); }
.panel-compact { min-height: 96px; }

/* Desktop product shell */
.shell-sidebar {
  display: none;
}
.shell-topbar-inner {
  display: flex;
  align-items: center;
  gap: 16px;
  width: 100%;
  min-width: 0;
}
.topbar-brand { color: var(--oni-text-main); text-decoration: none; }
.shell-mobile-brand { font-size: 22px; font-weight: 900; line-height: 1.05; }
.shell-mobile-brand small { display: block; color: var(--oni-text-muted); font-size: 11px; font-weight: 600; }
.shell-command-search {
  flex: 1 1 420px;
  min-width: 240px;
  max-width: 640px;
  display: flex;
  align-items: center;
  gap: 10px;
  min-height: 44px;
  margin: 0;
  padding: 0 12px;
  border: 1px solid rgba(0,245,255,.14);
  border-radius: 14px;
  background: rgba(5, 12, 18, .66);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.02);
}
.shell-command-search input {
  flex: 1;
  min-width: 0;
  margin: 0;
  padding: 0;
  border: 0;
  outline: 0;
  background: transparent;
  color: var(--oni-text-main);
}
.shell-command-icon, .shell-command-shortcut { color: var(--oni-text-muted); font-weight: 800; }
.shell-command-shortcut { font-size: 12px; border: 1px solid rgba(255,255,255,.08); border-radius: 8px; padding: 3px 7px; }
.shell-market-strip {
  display: flex;
  align-items: center;
  gap: 14px;
  white-space: nowrap;
  color: var(--oni-text-muted);
  font-size: 13px;
}
.shell-market-strip strong { color: var(--oni-text-main); margin-right: 4px; }
.shell-theme-switch {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  color: var(--oni-text-muted);
  font-size: 12px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .08em;
}
.shell-theme-switch select {
  max-width: 118px;
  min-height: 36px;
  border: 1px solid rgba(0,245,255,.18);
  border-radius: 11px;
  background: rgba(5,13,18,.84);
  color: var(--oni-text-main);
  padding: 7px 9px;
}
.shell-user-area { display: flex; align-items: center; gap: 10px; margin-left: auto; }
.shell-account-link { color: var(--oni-text-muted); font-weight: 800; text-decoration: none; }
.shell-account-link:hover { color: var(--oni-accent-cyan); }
.shell-logout-form { margin: 0; }
.shell-logout-form button { min-height: 38px; padding: 8px 12px; }

@media (min-width: 1180px) {
  .oni-shell-topbar {
    min-height: var(--oni-shell-topbar-height);
    height: var(--oni-shell-topbar-height);
    margin-left: var(--oni-shell-sidebar-width);
    width: calc(100% - var(--oni-shell-sidebar-width));
    padding: 0 28px;
    border-bottom: 1px solid rgba(0,245,255,.12);
    background: var(--oni-bg-shell);
    backdrop-filter: blur(14px);
    z-index: 80;
  }
  .shell-sidebar.desktop-side-nav {
    display: grid;
    grid-template-rows: auto 1fr auto;
    gap: 22px;
    position: fixed;
    inset: 0 auto 0 0;
    width: var(--oni-shell-sidebar-width);
    padding: 24px 16px;
    border-right: 1px solid rgba(0,245,255,.12);
    background: linear-gradient(180deg, rgba(2,7,10,.98), rgba(2,7,10,.82));
    backdrop-filter: blur(16px);
    z-index: 95;
  }
  .shell-sidebar-brand {
    display: grid;
    gap: 2px;
    padding: 4px 6px 14px;
    color: var(--oni-text-main);
    text-decoration: none;
  }
  .shell-sidebar-logo { font-size: 25px; font-weight: 950; letter-spacing: -.04em; }
  .shell-sidebar-brand small { color: var(--oni-text-muted); font-size: 11px; font-weight: 700; letter-spacing: .02em; }
  .shell-sidebar-nav { display: grid; align-content: start; gap: 5px; }
  .shell-sidebar-nav a {
    display: flex;
    align-items: center;
    min-height: 38px;
    margin: 0;
    padding: 9px 12px;
    border: 1px solid transparent;
    border-left: 3px solid transparent;
    border-radius: 12px;
    color: var(--oni-text-muted);
    text-decoration: none;
    font-weight: 850;
  }
  .shell-sidebar-nav a:hover,
  .shell-sidebar-nav a.active {
    color: var(--oni-text-main);
    border-color: rgba(0,245,255,.18);
    border-left-color: var(--oni-accent-red);
    background: rgba(0,245,255,.06);
    box-shadow: 0 10px 28px rgba(0,0,0,.16);
  }
  .shell-sidebar-section {
    margin: 12px 8px 3px;
    color: var(--oni-text-muted);
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: .16em;
    font-weight: 950;
  }
  .shell-sidebar-footer {
    display: grid;
    gap: 5px;
    padding: 14px 12px;
    border: 1px solid rgba(0,245,255,.12);
    border-radius: 16px;
    background: rgba(255,255,255,.025);
  }
  .shell-sidebar-footer span { color: var(--oni-text-main); font-weight: 900; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .shell-sidebar-footer a { margin: 0; color: var(--oni-text-muted); text-decoration: none; font-size: 13px; }
  .shell-mobile-brand, .mobile-menu-toggle, .desktop-primary-nav { display: none !important; }
  .oni-shell-page { margin-left: var(--oni-shell-sidebar-width); padding: 28px 32px 42px; }
  .mobile-primary-nav, .mobile-account-dock { display: none !important; }
}

/* Dashboard mockup alignment */
.dashboard-product-shell { display: grid; gap: 18px; }
.dashboard-hero-card {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 22px;
  margin-top: 0;
  padding: 22px 24px;
  background:
    linear-gradient(135deg, rgba(0,245,255,.09), rgba(255,31,61,.07)),
    var(--oni-bg-panel);
}
.dashboard-hero-card h1 { margin: 3px 0 7px; font-size: clamp(2rem, 3vw, 3.1rem); letter-spacing: -.05em; }
.dashboard-kpi-strip { grid-template-columns: repeat(4, minmax(0,1fr)); }
.dashboard-kpi-strip .card { margin: 0; }
.dashboard-mockup-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(320px, 380px);
  gap: 22px;
  align-items: start;
}
.dashboard-main-column, .dashboard-right-column { display: grid; gap: 18px; }
.dashboard-market-overview-card { min-height: 360px; overflow: hidden; }
.dashboard-market-chart {
  display: grid;
  gap: 14px;
  min-height: 245px;
  margin-top: 16px;
  padding: 18px;
  border: 1px solid rgba(0,245,255,.15);
  border-radius: 18px;
  background:
    radial-gradient(circle at 18% 18%, rgba(0,245,255,.14), transparent 30%),
    radial-gradient(circle at 90% 10%, rgba(255,31,61,.10), transparent 34%),
    rgba(0, 0, 0, .18);
}
.dashboard-market-sparkline { min-height: 185px; }
.dashboard-market-meta { margin-top: auto; }
.dashboard-side-card { margin-top: 0; }
.dashboard-side-card h2 { margin-top: 0; }
.dashboard-detail-section { margin-top: 22px; }
@media (max-width: 1380px) {
  .dashboard-kpi-strip { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .dashboard-mockup-grid { grid-template-columns: 1fr; }
  .dashboard-right-column { grid-template-columns: repeat(2, minmax(0,1fr)); }
}
@media (max-width: 760px) {
  html, body { max-width: 100%; overflow-x: hidden; }
  .topbar.oni-shell-topbar {
    min-height: 136px;
    align-items: flex-start;
  }
  .shell-topbar-inner {
    display: grid;
    grid-template-columns: minmax(0,1fr) auto;
    gap: 8px 10px;
  }
  .shell-command-search { grid-column: 1 / -1; max-width: none; min-width: 0; width: 100%; order: 4; }
  .shell-market-strip { display: none; }
  .shell-theme-switch { order: 3; justify-content: flex-end; }
  .shell-theme-switch span { display: none; }
  .shell-theme-switch select { max-width: 108px; min-height: 34px; }
  .shell-user-area { display: none; }
  .dashboard-hero-card, .dashboard-command-actions { display: grid; grid-template-columns: 1fr; width: 100%; }
  .dashboard-kpi-strip, .dashboard-right-column, .workstation-lower-grid { grid-template-columns: 1fr; }
  .dashboard-market-overview-card { min-height: auto; }
  .dashboard-market-chart { min-height: 210px; padding: 12px; }
  .dashboard-market-sparkline { min-height: 130px; }
  .dashboard-mockup-grid { grid-template-columns: 1fr; gap: 14px; }
  .panel, .card { max-width: 100%; }
  .mobile-primary-nav[data-mobile-submenu-contract="v0.3.5"] { grid-column: 1 / -1; }
}
@media (max-width: 430px) {
  .shell-command-shortcut { display: none; }
  .shell-mobile-brand { font-size: 20px; min-width: 0; }
  .dashboard-hero-card { padding: 16px; }
}

/* v0.3.39 Identity Security Console: lifecycle, audit timeline and session drilldown */
.admin-identity-overview[data-admin-identity-security-contract="v0.3.39-identity-security-console"] { border-color: rgba(24,213,214,.22); }
.identity-state { display:inline-flex; align-items:center; gap:6px; border:1px solid rgba(255,255,255,.16); border-radius:999px; padding:3px 8px; font-size:.72rem; text-transform:uppercase; letter-spacing:.08em; }
.identity-state.active { color:#26e6a4; border-color:rgba(38,230,164,.36); background:rgba(38,230,164,.08); }
.identity-state.disabled { color:#ff6b8a; border-color:rgba(255,77,125,.42); background:rgba(255,77,125,.08); }
.identity-state.locked { color:#ffd166; border-color:rgba(255,209,102,.45); background:rgba(255,209,102,.08); }
.identity-state.password_reset_required { color:#ffb86b; border-color:rgba(255,184,107,.45); background:rgba(255,184,107,.08); }
.session-dot.stale { background:#ff9f43; box-shadow:0 0 0 2px rgba(255,159,67,.18), 0 0 12px rgba(255,159,67,.22); }
.admin-session-row.stale { background: rgba(255,159,67,.04); }
.admin-session-detail { margin-top:16px; }
.admin-user-audit-timeline { overflow-x:auto; }
.mini-table { width:100%; border-collapse:collapse; }
.mini-table th, .mini-table td { padding:8px 7px; border-bottom:1px solid rgba(255,255,255,.08); vertical-align:top; text-align:left; }
.mini-table th { color:var(--muted, #91a4ad); font-size:.72rem; text-transform:uppercase; letter-spacing:.10em; }
.admin-user-secondary-actions { display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.admin-user-secondary-actions form { margin:0; }
.notice.warning { border-color:rgba(255,209,102,.36); background:rgba(255,209,102,.08); color:#ffe0a3; }
@media (max-width: 760px) {
  .admin-user-secondary-actions { display:grid; grid-template-columns:1fr; }
  .admin-user-secondary-actions .btn, .admin-user-secondary-actions button { width:100%; min-height:46px; }
  .mini-table thead { display:none; }
  .mini-table tr { display:block; border:1px solid rgba(24,213,214,.18); border-radius:14px; padding:8px; margin-bottom:10px; }
  .mini-table td { display:block; border-bottom:0; padding:6px 4px; }
}

/* v0.3.59 Operational State / Maintenance async partials */
.status-summary { display:flex; gap:10px; align-items:center; flex-wrap:wrap; margin:10px 0 14px; }
.status-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); gap:12px; margin:12px 0 20px; }
.svc { border:1px solid var(--line, rgba(0,229,212,.22)); border-radius:16px; padding:14px; background:rgba(4,13,18,.72); overflow-wrap:anywhere; }
.svc-green { border-color:rgba(34,197,94,.55); background:rgba(4,35,20,.68); }
.svc-orange { border-color:rgba(245,158,11,.65); background:rgba(35,24,5,.68); }
.svc-red { border-color:rgba(239,68,68,.70); background:rgba(46,10,16,.75); }
.svc-neutral { border-color:rgba(100,116,139,.55); background:rgba(15,23,32,.72); }
.svc-title { font-weight:900; }
.svc-meta { color:var(--muted, #9fb1ba); font-size:.88rem; margin-top:6px; }
.dot { display:inline-block; width:10px; height:10px; border-radius:999px; margin-right:8px; vertical-align:1px; }
.dot-green { background:#22c55e; }
.dot-orange { background:#f59e0b; }
.dot-red { background:#ef4444; }
.dot-neutral { background:#64748b; }
[data-oni-async-panel].is-loading { opacity:.72; position:relative; }
[data-oni-async-panel][data-oni-panel-status="error"] { border:1px solid rgba(239,68,68,.55); border-radius:18px; }


/* v0.3.60 onboarding/help/mobile release summary hardening */
.context-help-bar{display:flex;align-items:center;gap:14px;margin:0 0 16px;padding:14px 16px;border:1px solid rgba(0,229,212,.26);border-left:4px solid rgba(0,229,212,.75);border-radius:18px;background:linear-gradient(135deg,rgba(0,229,212,.08),rgba(255,45,111,.035));box-shadow:0 12px 40px rgba(0,0,0,.18)}
.context-help-copy{flex:1;min-width:0}.context-help-kicker{display:block;color:#00f5ff;text-transform:uppercase;letter-spacing:.14em;font-size:.72rem;font-weight:900;margin-bottom:4px}.context-help-copy strong{display:block;color:#f5fbff;font-size:1rem}.context-help-copy p{margin:4px 0 0;color:#9fb2bb;line-height:1.45}.context-help-action{display:grid;place-items:center;width:38px;height:38px;border-radius:999px;border:1px solid rgba(0,245,255,.45);color:#00f5ff;text-decoration:none;font-weight:900;background:rgba(0,245,255,.08)}.context-help-link{color:#dffbff;text-decoration:none;border:1px solid rgba(0,245,255,.25);border-radius:999px;padding:8px 12px;font-weight:800;white-space:nowrap}.context-help-link:hover,.context-help-action:hover{border-color:rgba(0,245,255,.65);background:rgba(0,245,255,.12)}
.onboarding-hero{position:relative;overflow:hidden}.onboarding-flow-panel .section-heading-row,.onboarding-learning-panel .section-heading-row{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:18px}.onboarding-step-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}.onboarding-step-card{border:1px solid rgba(0,245,255,.18);border-radius:20px;background:rgba(5,11,16,.55);overflow:hidden;transition:transform .18s ease,border-color .18s ease,background .18s ease}.onboarding-step-card.active{grid-column:span 2;transform:translateY(-2px);border-color:rgba(0,245,255,.62);background:linear-gradient(135deg,rgba(0,245,255,.12),rgba(255,45,111,.05))}.onboarding-step-card.done{border-color:rgba(110,247,180,.42)}.onboarding-step-selector{display:flex;align-items:center;gap:12px;color:#e7fbff;text-decoration:none;padding:16px}.onboarding-step-number{display:grid;place-items:center;min-width:38px;height:38px;border-radius:999px;background:rgba(0,245,255,.1);border:1px solid rgba(0,245,255,.32);font-weight:900;color:#00f5ff}.onboarding-step-selector small{display:block;color:#9fb2bb;margin-top:4px}.onboarding-step-state{margin-left:auto;color:#b5c3ca;font-size:.78rem;text-transform:uppercase;letter-spacing:.08em;font-weight:900}.onboarding-step-detail{display:grid;gap:12px;padding:0 18px 18px}.onboarding-step-detail>div{border:1px solid rgba(255,255,255,.08);border-radius:16px;padding:13px;background:rgba(255,255,255,.035)}.onboarding-step-detail h3{margin:0 0 6px;color:#00f5ff}.onboarding-step-detail p{margin:0;color:#b8c9d1;line-height:1.48}.onboarding-step-detail .btn{margin-top:10px}.onboarding-operator-note{border:1px solid rgba(255,184,77,.28);border-radius:14px;padding:10px 12px;color:#ffdca0!important;background:rgba(255,184,77,.07)}.learning-module-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:14px}.learning-module-card{border:1px solid rgba(0,245,255,.18);border-radius:18px;padding:16px;background:rgba(5,11,16,.55)}.learning-module-card.active{grid-column:span 2;border-color:rgba(0,245,255,.62);background:linear-gradient(135deg,rgba(0,245,255,.10),rgba(255,45,111,.04))}.learning-module-title{display:flex;gap:10px;align-items:center;color:#f3fbff;text-decoration:none}.learning-module-title span{display:grid;place-items:center;width:30px;height:30px;border-radius:999px;border:1px solid rgba(0,245,255,.35);color:#00f5ff}.learning-module-copy h3{margin:14px 0 5px;color:#00f5ff}.learning-module-copy p{color:#b7c8d0;line-height:1.5}.release-note-card,.upgrade-summary-card{max-width:min(760px,calc(100vw - 28px));}.release-note-meta dd,.upgrade-summary-meta dd{overflow-wrap:anywhere;word-break:break-word}.release-note-build-note,.upgrade-summary-build-note{max-height:220px;overflow:auto;overflow-wrap:anywhere}.upgrade-summary-highlights li{overflow-wrap:anywhere}.mobile-primary-nav [data-nav-key="help"],.mobile-primary-nav a[href$="/onboarding"]{white-space:nowrap}@media(max-width:760px){.context-help-bar{align-items:flex-start;display:grid;grid-template-columns:1fr auto;gap:10px}.context-help-link{grid-column:1/-1;text-align:center}.onboarding-flow-panel .section-heading-row,.onboarding-learning-panel .section-heading-row{display:block}.onboarding-step-card.active,.learning-module-card.active{grid-column:auto}.onboarding-step-selector{align-items:flex-start}.onboarding-step-state{display:none}.release-note-card,.upgrade-summary-card{width:calc(100vw - 32px);max-height:calc(100vh - 48px);overflow:auto;padding:28px 24px}.release-note-copy,.upgrade-summary-copy{max-width:100%;overflow-wrap:anywhere}.release-note-build-note,.upgrade-summary-build-note{max-height:160px;font-size:.94rem}.upgrade-summary-highlights ul{padding-left:20px}.upgrade-summary-highlights li{font-size:.96rem;line-height:1.45}}

/* v0.3.62 mobile-first onboarding/navigation contract fix */
.mobile-primary-nav[data-mobile-navigation-groups="v0.3.62-core-strategy-research-steering-ops"] .mobile-nav-chip {
  min-width: 104px;
}
.onboarding-step-detail[data-onboarding-depth-toggle="v0.3.62-one-panel-visible"] {
  gap: 14px;
}
.onboarding-tier-switch {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  border: 1px solid rgba(255,255,255,.08);
  border-radius: 18px;
  padding: 12px;
  background: rgba(255,255,255,.03);
}
.onboarding-tier-radio {
  position: absolute;
  inline-size: 1px;
  block-size: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  white-space: nowrap;
}
.onboarding-tier-tab {
  display: inline-flex;
  justify-content: center;
  align-items: center;
  min-height: 42px;
  border: 1px solid rgba(0,245,255,.24);
  border-radius: 14px;
  padding: 0 12px;
  color: #dffbff;
  background: rgba(0,245,255,.045);
  font-weight: 900;
  cursor: pointer;
  text-align: center;
}
.onboarding-tier-panel {
  display: none;
  grid-column: 1 / -1;
  border: 1px solid rgba(255,255,255,.08);
  border-radius: 16px;
  padding: 13px;
  background: rgba(255,255,255,.035);
}
.onboarding-tier-panel h3 { margin: 0 0 6px; color: #00f5ff; }
.onboarding-tier-panel p { margin: 0; color: #b8c9d1; line-height: 1.48; }
.onboarding-tier-radio-beginner:checked ~ label[for$="-beginner"],
.onboarding-tier-radio-deep:checked ~ label[for$="-deep"] {
  border-color: rgba(0,245,255,.72);
  color: #00f5ff;
  background: rgba(0,245,255,.14);
  box-shadow: 0 0 20px rgba(0,245,255,.08);
}
.onboarding-tier-radio-beginner:checked ~ .onboarding-tier-panel-beginner,
.onboarding-tier-radio-deep:checked ~ .onboarding-tier-panel-deep {
  display: block;
}
.onboarding-step-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: center;
}
.learning-module-copy-active > p { margin-top: 12px; }
@media (max-width: 760px) {
  .mobile-primary-nav[data-mobile-navigation-groups="v0.3.62-core-strategy-research-steering-ops"] {
    gap: 10px;
  }
  .mobile-primary-nav[data-mobile-navigation-groups="v0.3.62-core-strategy-research-steering-ops"] .mobile-nav-chip {
    min-width: 116px;
    min-height: 46px;
  }
  .onboarding-tier-switch {
    grid-template-columns: 1fr 1fr;
    padding: 10px;
  }
  .onboarding-step-actions {
    display: grid;
    grid-template-columns: 1fr;
  }
  .onboarding-step-actions .btn {
    width: 100%;
    text-align: center;
    justify-content: center;
  }
}

/* v0.3.65 server-onboarding-admin-ops-performance: admin/Ops visual identity, Admin Assets search/edit, Netdata performance page. */
.shell-sidebar-nav a[data-nav-key^="admin-"],
.shell-sidebar-nav a[data-nav-key="ops"],
.shell-sidebar-nav a[data-nav-key="upgrade"],
.shell-sidebar-nav a[data-nav-key="import-center"],
.shell-sidebar-nav a[data-nav-key="bug-tracker"],
.shell-sidebar-nav a[data-nav-key="release-notes"] {
  border-color: rgba(125, 211, 252, 0.28);
  background: linear-gradient(135deg, rgba(14, 116, 144, 0.18), rgba(59, 130, 246, 0.09));
  box-shadow: inset 3px 0 0 rgba(56, 189, 248, 0.72);
}
.shell-sidebar-nav a[data-nav-key^="admin-"]:hover,
.shell-sidebar-nav a[data-nav-key="ops"]:hover,
.shell-sidebar-nav a[data-nav-key="upgrade"]:hover,
.shell-sidebar-nav a[data-nav-key="import-center"]:hover,
.shell-sidebar-nav a[data-nav-key="bug-tracker"]:hover,
.shell-sidebar-nav a[data-nav-key="release-notes"]:hover {
  background: linear-gradient(135deg, rgba(14, 116, 144, 0.28), rgba(59, 130, 246, 0.16));
}
.mobile-nav-group[data-nav-key="ops"] .mobile-nav-chip {
  border-color: rgba(125, 211, 252, 0.34);
  background: rgba(14, 116, 144, 0.2);
}
.mobile-nav-group[data-nav-key="ops"] .mobile-nav-submenu a {
  border-left: 3px solid rgba(56, 189, 248, 0.72);
}
.shell-sidebar-divider,
.mobile-nav-divider {
  display: block;
  min-height: 1px;
  margin: 8px 6px;
  padding: 0;
  border-top: 1px solid rgba(148, 163, 184, 0.18);
}
.admin-assets-grid {
  display: grid;
  grid-template-columns: minmax(260px, 0.85fr) minmax(300px, 1fr);
  gap: 18px;
  margin-block: 18px;
}
.admin-assets-search-row,
.card-head-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.admin-assets-search-row input,
.admin-asset-editor input {
  width: 100%;
}
.admin-asset-editor {
  display: grid;
  gap: 12px;
}
.admin-asset-editor label {
  display: grid;
  gap: 5px;
}
.admin-asset-editor .check-row {
  display: flex;
  align-items: center;
  gap: 8px;
}
.admin-assets-autocomplete {
  position: relative;
  z-index: 20;
  margin-top: 8px;
  border: 1px solid rgba(148, 163, 184, 0.22);
  border-radius: 16px;
  overflow: hidden;
  background: rgba(2, 8, 13, 0.96);
  box-shadow: 0 18px 50px rgba(0, 0, 0, 0.35);
}
.admin-assets-suggestion {
  display: grid;
  grid-template-columns: 92px minmax(0, 1fr) minmax(80px, auto);
  gap: 10px;
  padding: 10px 12px;
  text-decoration: none;
  color: inherit;
  border-bottom: 1px solid rgba(148, 163, 184, 0.12);
}
.admin-assets-suggestion:hover {
  background: rgba(59, 130, 246, 0.12);
}
.btn-small {
  padding: 6px 10px;
  font-size: 0.86rem;
}
.admin-performance-netdata-frame {
  width: 100%;
  min-height: min(72vh, 820px);
  border: 1px solid rgba(148, 163, 184, 0.18);
  border-radius: 18px;
  background: rgba(15, 23, 42, 0.7);
}
@media (max-width: 900px) {
  .admin-assets-grid,
  .admin-assets-search-row,
  .card-head-row {
    grid-template-columns: 1fr;
    display: grid;
  }
  .admin-assets-suggestion {
    grid-template-columns: 1fr;
  }
  .admin-performance-netdata-frame {
    min-height: 560px;
  }
}
/* explicit guard marker: [data-nav-key="admin-performance"] */

/* v0.3.66 contextual-help-coach-tablet-shell
   Full-scope help workflow: page help overlays, dashboard inline coach mode,
   tablet shell breakpoint, desktop/tablet sidebar scrolling and horizontal-overflow guards. */
html, body { max-width: 100%; }
body.oni-shell-body { overflow-x: hidden; }
.oni-shell-page, .panel, .card, .table-scroll, .dashboard-product-shell { min-width: 0; box-sizing: border-box; }

@media (min-width: 900px) {
  .shell-sidebar.desktop-side-nav {
    height: 100dvh;
    max-height: 100dvh;
    min-height: 0;
    overflow: hidden;
    box-sizing: border-box;
  }
  .shell-sidebar-nav {
    min-height: 0;
    overflow-y: auto;
    overflow-x: hidden;
    padding-right: 4px;
    overscroll-behavior: contain;
    scrollbar-gutter: stable;
  }
  .shell-sidebar-nav::-webkit-scrollbar { width: 8px; }
  .shell-sidebar-nav::-webkit-scrollbar-thumb { background: rgba(0,245,255,.22); border-radius: 999px; }
  .shell-sidebar-footer { min-width: 0; }
}

@media (min-width: 900px) and (max-width: 1179px) {
  :root { --oni-shell-sidebar-width: 214px; --oni-shell-topbar-height: 74px; }
  .shell-sidebar.desktop-side-nav {
    display: grid;
    grid-template-rows: auto minmax(0,1fr) auto;
    gap: 14px;
    position: fixed;
    inset: 0 auto 0 0;
    width: var(--oni-shell-sidebar-width);
    padding: 18px 12px;
    border-right: 1px solid rgba(0,245,255,.12);
    background: linear-gradient(180deg, rgba(2,7,10,.98), rgba(2,7,10,.86));
    backdrop-filter: blur(16px);
    z-index: 95;
  }
  .shell-sidebar-logo { font-size: 21px; }
  .shell-sidebar-brand small { font-size: 10px; }
  .shell-sidebar-nav { gap: 3px; }
  .shell-sidebar-nav a { min-height: 34px; padding: 7px 9px; font-size: 13px; border-radius: 10px; }
  .shell-sidebar-section { margin: 8px 7px 2px; font-size: 10px; letter-spacing: .13em; }
  .shell-sidebar-divider { margin: 6px 5px; }
  .shell-sidebar-footer { padding: 10px 9px; border-radius: 13px; }
  .shell-mobile-brand, .mobile-menu-toggle, .desktop-primary-nav, .mobile-primary-nav, .mobile-account-dock { display: none !important; }
  .oni-shell-topbar {
    min-height: var(--oni-shell-topbar-height);
    height: var(--oni-shell-topbar-height);
    margin-left: var(--oni-shell-sidebar-width) !important;
    width: calc(100vw - var(--oni-shell-sidebar-width)) !important;
    max-width: calc(100vw - var(--oni-shell-sidebar-width)) !important;
    padding: 0 14px !important;
    overflow: hidden;
    border-bottom: 1px solid rgba(0,245,255,.12);
    background: var(--oni-bg-shell);
    backdrop-filter: blur(14px);
    z-index: 80;
  }
  .shell-topbar-inner { gap: 9px; min-width: 0; overflow: hidden; }
  .shell-command-search { flex: 1 1 280px; min-width: 180px; max-width: 380px; }
  .shell-market-strip { gap: 8px; font-size: 12px; min-width: 0; overflow: hidden; }
  .shell-market-strip span { overflow: hidden; text-overflow: ellipsis; }
  .shell-density-switch { display: none !important; }
  .shell-theme-switch { flex: 0 0 auto; }
  .shell-theme-switch strong { display: none; }
  .shell-user-area { min-width: 0; flex-shrink: 0; }
  .shell-account-link { max-width: 92px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .oni-shell-page {
    margin-left: var(--oni-shell-sidebar-width) !important;
    width: calc(100vw - var(--oni-shell-sidebar-width)) !important;
    max-width: calc(100vw - var(--oni-shell-sidebar-width)) !important;
    padding: 20px 18px 36px !important;
    overflow-x: hidden;
  }
  .dashboard-product-shell, .dashboard-mockup-grid, .workstation-lower-grid, .terminal-kpi-row, .asset-header, .asset-chart-workstation { max-width: 100%; }
  .dashboard-mockup-grid { grid-template-columns: 1fr !important; gap: 16px; }
  .dashboard-right-column { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .dashboard-kpi-strip { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .dashboard-hero-card, .dashboard-beginner-guide, .context-help-bar { display: grid; grid-template-columns: minmax(0,1fr); }
  .dashboard-command-actions, .dashboard-guide-actions, .context-help-actions { justify-content: start; flex-wrap: wrap; }
  .asset-header { align-items: flex-start; }
  .asset-chart-toolbar { overflow-x: auto; padding-bottom: 4px; }
  .chart-help-dialog, .context-help-dialog { width: min(920px, calc(100vw - 56px)); max-height: calc(100dvh - 64px); }
}

.context-help-bar.context-help-chart-first {
  border-left-color: rgba(0,245,255,.95);
  border-color: rgba(0,245,255,.42);
  background:
    linear-gradient(135deg, rgba(0,245,255,.15), rgba(255,31,61,.06)),
    rgba(5,13,18,.82);
  box-shadow: 0 18px 58px rgba(0,0,0,.28), inset 0 0 0 1px rgba(0,245,255,.06);
}
.context-help-actions { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.context-help-actions button { font-family: inherit; }
.context-help-next {
  color: #001216;
  background: linear-gradient(135deg, #00f5ff, #91fff8);
  border: 1px solid rgba(0,245,255,.76);
  border-radius: 999px;
  padding: 9px 13px;
  font-weight: 950;
  text-decoration: none;
  white-space: nowrap;
}
.context-help-back {
  color: #9fb2bb;
  text-decoration: none;
  font-weight: 800;
  white-space: nowrap;
}
.context-help-overlay {
  position: fixed;
  inset: 0;
  z-index: 5100;
  display: grid;
  place-items: center;
  padding: 18px;
  background: rgba(0,0,0,.70);
  backdrop-filter: blur(5px);
}
.context-help-overlay.hidden { display: none; }
.context-help-dialog {
  position: relative;
  width: min(980px, 96vw);
  max-height: 90dvh;
  overflow: auto;
  border: 1px solid rgba(0,245,255,.34);
  border-radius: 24px;
  padding: 24px;
  background: linear-gradient(180deg, rgba(5,18,22,.98), rgba(3,8,12,.98));
  box-shadow: 0 22px 90px rgba(0,0,0,.66);
}
.context-help-close {
  position: absolute;
  right: 16px;
  top: 16px;
  width: 44px;
  height: 44px;
  border-radius: 999px;
  border: 1px solid rgba(0,245,255,.42);
  background: rgba(8,18,24,.90);
  color: #fff;
  font-size: 28px;
  line-height: 1;
  cursor: pointer;
}
.context-help-dialog-kicker { color:#00f5ff; text-transform:uppercase; letter-spacing:.14em; font-size:.74rem; font-weight:950; margin:0 48px 8px 0; }
.context-help-dialog h2 { margin-top: 0; padding-right: 48px; }
.context-help-dialog-lead { font-size: 1.02rem; line-height: 1.55; }
.context-help-section-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px,1fr)); gap: 14px; margin-top: 18px; }
.context-help-section-card { border:1px solid rgba(255,255,255,.09); border-radius:18px; padding:16px; background:rgba(255,255,255,.035); }
.context-help-section-card h3 { margin:0 0 8px; color:#00f5ff; }
.context-help-section-card p, .context-help-section-card li { color:#b8c9d1; line-height:1.5; }
.context-help-section-card ul { margin:0; padding-left:18px; }
.context-help-dialog-actions { display:flex; gap:10px; flex-wrap:wrap; margin-top:20px; }

/* v0.3.79 dashboard help coach keyboard/focus hardening: ArrowRight/ArrowLeft, Next → pulse, stronger fade, single Exit Guide. */
.dashboard-beginner-guide {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:18px;
  border-color: rgba(0,245,255,.36);
  background:
    radial-gradient(circle at 8% 20%, rgba(0,245,255,.13), transparent 36%),
    linear-gradient(135deg, rgba(0,245,255,.09), rgba(255,31,61,.045)),
    var(--oni-bg-panel);
}
.dashboard-guide-actions, .dashboard-coach-actions { display:flex; gap:10px; flex-wrap:wrap; align-items:center; }
.dashboard-coach-card {
  display:none;
  margin-top:14px;
  padding:16px;
  border:1px solid rgba(0,245,255,.34);
  border-left:5px solid rgba(0,245,255,.90);
  border-radius:18px;
  background:linear-gradient(135deg, rgba(0,245,255,.13), rgba(255,31,61,.055));
  box-shadow: 0 18px 45px rgba(0,0,0,.22);
}
.dashboard-coach-card p { color:#c4d4da; line-height:1.55; margin:8px 0 14px; }
.dashboard-help-all .dashboard-coach-card, .dashboard-coach-mode .dashboard-coach-card.is-active { display:block; }
.dashboard-guide-exit[hidden] { display:none !important; }
body.dashboard-coach-active .dashboard-guide-exit:not([hidden]) { display:inline-flex; }
.dashboard-coach-mode [data-dashboard-coach-section]:not([data-dashboard-coach-card]) { transition: opacity .18s ease, filter .18s ease, border-color .18s ease, box-shadow .18s ease; }
.dashboard-coach-mode [data-dashboard-coach-section]:not([data-dashboard-coach-card]):not(.is-coach-active) { opacity:.38; filter:saturate(.48) brightness(.66); }
.dashboard-coach-mode [data-dashboard-coach-section]:not([data-dashboard-coach-card]).is-coach-active {
  opacity:1;
  filter:none;
  outline:2px solid rgba(0,245,255,.62);
  box-shadow: 0 0 0 4px rgba(0,245,255,.10), var(--oni-shadow-card);
}
.dashboard-coach-next-primary { position:relative; }
.dashboard-coach-card.is-active .dashboard-coach-next-primary[data-dashboard-coach-next] {
  animation: dashboard-coach-next-pulse 1.45s ease-in-out infinite;
  box-shadow: 0 0 0 0 rgba(0,245,255,.48), 0 0 24px rgba(0,245,255,.18);
}
@keyframes dashboard-coach-next-pulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(0,245,255,.46), 0 0 24px rgba(0,245,255,.18); }
  50% { box-shadow: 0 0 0 6px rgba(0,245,255,.08), 0 0 34px rgba(0,245,255,.30); }
}
@media (prefers-reduced-motion: reduce) {
  .dashboard-coach-card.is-active .dashboard-coach-next-primary[data-dashboard-coach-next] {
    animation: none;
    box-shadow: 0 0 0 4px rgba(0,245,255,.12), 0 0 24px rgba(0,245,255,.20);
  }
}
.guided-focus-target {
  outline:2px solid rgba(0,245,255,.72);
  box-shadow: 0 0 0 5px rgba(0,245,255,.10), var(--oni-shadow-card);
}
.asset-guided-actions { margin-bottom: 18px; }

@media (max-width: 899px) {
  body { overflow-x: hidden; }
  .context-help-bar { display:grid; grid-template-columns: 1fr; align-items:start; }
  .context-help-actions { display:grid; grid-template-columns:1fr; width:100%; }
  .context-help-action { width:100%; min-height:42px; }
  .context-help-link, .context-help-next, .context-help-back { width:100%; text-align:center; justify-content:center; box-sizing:border-box; }
  .context-help-dialog, .chart-help-dialog { width:calc(100vw - 28px); max-height:calc(100dvh - 32px); padding:20px 16px; }
  .context-help-section-grid { grid-template-columns: 1fr; }
  /* v0.3.79 dashboard help coach keyboard/focus hardening: ArrowRight/ArrowLeft, Next → pulse, stronger fade, single Exit Guide. */
.dashboard-beginner-guide { display:grid; grid-template-columns:1fr; }
  .dashboard-guide-actions, .dashboard-coach-actions { display:grid; grid-template-columns:1fr; }
  .dashboard-guide-actions .btn, .dashboard-coach-actions .btn { width:100%; }
}

/* v0.3.68 release notes navigation buttons: match Admin Maintenance anchor grid instead of plain pills. */
.release-notes-quicklinks[data-release-notes-navigation="v0.3.68"] .release-notes-jump-links {
  margin-top: 16px;
}
.release-notes-quicklinks[data-release-notes-navigation="v0.3.68"] .release-notes-jump-links a {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 42px;
  padding: 9px 12px;
  border: 1px solid rgba(0,245,255,.22);
  border-radius: 999px;
  text-decoration: none;
  color: var(--text);
  background: rgba(0,245,255,.045);
  font-weight: 800;
  text-align: center;
}
.release-notes-quicklinks[data-release-notes-navigation="v0.3.68"] .release-notes-jump-links a:hover {
  border-color: rgba(0,245,255,.48);
  background: rgba(0,245,255,.09);
}
/* release notes navigation buttons */

/* v0.3.70 Bug-Tracker case diagnostic package export */
.bug-case-package-actions { display:flex; flex-wrap:wrap; gap:10px; align-items:center; justify-content:flex-end; }
.bug-case-package-panel { border-color: rgba(0,245,255,.24); background: linear-gradient(135deg, rgba(0,245,255,.055), rgba(255,49,88,.02)); }
.compact-package-grid .diagnostic-mini-card strong { font-size:.98rem; }
.compact-package-grid .diagnostic-mini-card small { color: var(--muted); line-height:1.35; }
@media(max-width: 760px){
  .bug-case-package-actions { display:grid; grid-template-columns:1fr; width:100%; justify-content:stretch; }
  .bug-case-package-actions .btn,
  .bug-case-package-panel .panel-header-row .btn { width:100%; text-align:center; }
}

/* v0.3.72 collapsible desktop sidebar: icon-only mode keeps navigation available while returning horizontal workspace. */
@media (min-width: 900px) {
  html.oni-sidebar-icon-mode,
  body.oni-sidebar-icon-mode {
    --oni-shell-sidebar-width: 76px;
  }
  .shell-sidebar-toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    min-height: 36px;
    margin: -8px 4px 2px;
    padding: 7px 10px;
    border: 1px solid rgba(0,245,255,.18);
    border-radius: 12px;
    color: var(--oni-text-muted, #7e9299);
    background: rgba(255,255,255,.035);
    cursor: pointer;
    font-weight: 850;
  }
  .shell-sidebar-toggle:hover,
  .shell-sidebar-toggle:focus-visible {
    color: var(--oni-text-main, #f2f7f8);
    border-color: rgba(0,245,255,.35);
    background: rgba(0,245,255,.08);
    outline: none;
  }
  .shell-sidebar-toggle .collapsed { display: none; }
  .shell-sidebar-nav a .shell-nav-icon {
    flex: 0 0 22px;
    width: 22px;
    text-align: center;
    font-size: 17px;
    line-height: 1;
  }
  .shell-sidebar-nav a .shell-nav-label { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  body.oni-sidebar-icon-mode .shell-sidebar.desktop-side-nav {
    padding-left: 10px !important;
    padding-right: 10px !important;
    gap: 14px !important;
  }
  body.oni-sidebar-icon-mode .shell-sidebar-brand {
    justify-items: center;
    padding-left: 0;
    padding-right: 0;
  }
  body.oni-sidebar-icon-mode .shell-brand-text,
  body.oni-sidebar-icon-mode .shell-sidebar-brand small,
  body.oni-sidebar-icon-mode .shell-sidebar-section,
  body.oni-sidebar-icon-mode .shell-sidebar-footer span,
  body.oni-sidebar-icon-mode .shell-sidebar-footer a,
  body.oni-sidebar-icon-mode .shell-nav-label,
  body.oni-sidebar-icon-mode .shell-sidebar-toggle-label,
  body.oni-sidebar-icon-mode .shell-sidebar-divider {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    padding: 0 !important;
    margin: -1px !important;
    overflow: hidden !important;
    clip: rect(0 0 0 0) !important;
    white-space: nowrap !important;
    border: 0 !important;
  }
  body.oni-sidebar-icon-mode .shell-sidebar-logo { font-size: 20px; }
  body.oni-sidebar-icon-mode .shell-sidebar-nav {
    gap: 7px !important;
    padding-right: 0 !important;
    justify-items: center;
  }
  body.oni-sidebar-icon-mode .shell-sidebar-nav a {
    width: 44px;
    min-height: 42px;
    justify-content: center;
    padding: 0 !important;
    border-left-width: 1px;
    border-radius: 14px;
  }
  body.oni-sidebar-icon-mode .shell-sidebar-nav a .shell-nav-icon {
    flex-basis: auto;
    width: auto;
    font-size: 19px;
  }
  body.oni-sidebar-icon-mode .shell-sidebar-footer {
    display: flex;
    justify-content: center;
    padding: 10px 0 !important;
  }
  body.oni-sidebar-icon-mode .shell-sidebar-footer::before {
    content: '☻';
    color: var(--oni-text-muted, #7e9299);
    font-weight: 900;
  }
  body.oni-sidebar-icon-mode .shell-sidebar-toggle {
    width: 44px;
    margin-left: auto;
    margin-right: auto;
    padding-left: 0;
    padding-right: 0;
  }
  body.oni-sidebar-icon-mode .shell-sidebar-toggle .expanded { display: none; }
  body.oni-sidebar-icon-mode .shell-sidebar-toggle .collapsed { display: inline; }
}


/* v0.3.74 UI ACID cache/loading/paging/title fix */
.compact-action-summary {
  border: 1px solid rgba(0,245,255,.18);
  border-radius: 16px;
  padding: 12px 14px;
  background: rgba(0, 28, 31, .45);
}
.advanced-settings[open] {
  border-color: rgba(0,245,255,.32);
}
.recent-runs-pager {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 10px;
  margin: 10px 0 12px;
  flex-wrap: wrap;
}
.recent-runs-pager button[disabled] {
  opacity: .45;
  cursor: not-allowed;
}
.admin-assets-console {
  margin-block: 18px;
}
.admin-assets-detail-pane .admin-asset-editor {
  display: grid;
  gap: 10px;
}
.admin-assets-table tr.is-selected {
  background: rgba(24,213,214,.08);
}
@media (max-width: 760px) {
  .recent-runs-pager {
    justify-content: stretch;
  }
  .recent-runs-pager .btn,
  .recent-runs-pager span {
    width: 100%;
  }
}

/* v0.3.82 chart data trust and view preset controls */
.chart-toolbar-v2 {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 10px;
}
.chart-toolbar-group {
  display: inline-flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 6px;
  padding: 4px;
  border: 1px solid rgba(0,245,255,.10);
  border-radius: 12px;
  background: rgba(0,245,255,.025);
}
.view-preset-group button.active,
.range-group button.active {
  box-shadow: 0 0 0 1px rgba(0,245,255,.34), 0 0 18px rgba(0,245,255,.16);
}
.chart-overlays-menu {
  position: relative;
  display: inline-block;
}
.chart-overlays-menu > summary {
  list-style: none;
  cursor: pointer;
  border: 1px solid rgba(0,245,255,.20);
  border-radius: 12px;
  padding: 8px 12px;
  background: rgba(0,245,255,.05);
  color: var(--oni-color-text-main, #e8f7fb);
  font-weight: 800;
}
.chart-overlays-menu > summary::-webkit-details-marker { display: none; }
.chart-overlays-menu[open] > summary {
  border-color: rgba(0,245,255,.40);
  background: rgba(0,245,255,.10);
}
.chart-overlays-panel {
  position: absolute;
  right: 0;
  top: calc(100% + 8px);
  z-index: 80;
  width: min(420px, calc(100vw - 48px));
  padding: 14px;
  border: 1px solid rgba(0,245,255,.22);
  border-radius: 16px;
  background: rgba(3,10,14,.98);
  box-shadow: 0 18px 50px rgba(0,0,0,.45), 0 0 28px rgba(0,245,255,.08);
}
.chart-overlays-panel fieldset {
  border: 1px solid rgba(255,255,255,.08);
  border-radius: 12px;
  margin: 0 0 10px;
  padding: 10px 12px;
}
.chart-overlays-panel legend {
  padding: 0 6px;
  color: var(--oni-color-text-muted, #8ea2aa);
  font-size: 12px;
  font-weight: 900;
  text-transform: uppercase;
  letter-spacing: .06em;
}
.chart-layer-state {
  display: grid;
  gap: 6px;
  margin: 8px 0 10px;
  padding: 10px;
  border: 1px solid rgba(0,245,255,.12);
  border-radius: 14px;
  background: rgba(0,245,255,.025);
}
.chart-layer-state-head,
.chart-layer-state-row {
  display: grid;
  grid-template-columns: minmax(120px, 1.2fr) minmax(110px, .8fr) minmax(180px, 2fr);
  gap: 10px;
  align-items: start;
}
.chart-layer-state-head {
  color: var(--oni-color-text-muted, #8ea2aa);
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: .05em;
}
.chart-layer-state-row {
  padding: 7px 8px;
  border-radius: 10px;
  background: rgba(255,255,255,.025);
  font-size: 12px;
}
.chart-layer-state-row strong { color: var(--oni-color-text-main, #eef8fb); }
.chart-layer-state-row.state-visible { border-left: 3px solid rgba(0,245,255,.8); }
.chart-layer-state-row.state-available { border-left: 3px solid rgba(255,209,102,.8); }
.chart-layer-state-row.state-unavailable { border-left: 3px solid rgba(255,31,61,.65); opacity: .92; }
.chart-data-trust {
  display: grid;
  grid-template-columns: minmax(260px, 1.5fr) minmax(260px, 1fr);
  gap: 14px;
  align-items: start;
  margin: 10px 0;
  padding: 12px 14px;
  border: 1px solid rgba(0,245,255,.14);
  border-radius: 16px;
  background: rgba(0,245,255,.025);
}
.chart-data-trust.state-warning {
  border-color: rgba(255,209,102,.35);
  background: rgba(255,209,102,.045);
}
.chart-data-trust.state-critical {
  border-color: rgba(255,31,61,.38);
  background: rgba(255,31,61,.045);
}
.chart-data-warnings { margin: 6px 0 0 18px; color: var(--oni-color-warning, #ffd166); }
.chart-reference-check {
  display: grid;
  grid-template-columns: 1fr 1fr auto;
  gap: 8px;
  align-items: end;
}
.chart-reference-check label { font-size: 12px; color: var(--oni-color-text-muted, #8ea2aa); }
.chart-reference-check input { width: 100%; }
.state-ok { color: var(--oni-color-positive, #42ff9a); }
.state-warning { color: var(--oni-color-warning, #ffd166); }
@media (max-width: 760px) {
  .chart-data-trust { grid-template-columns: 1fr; }
  .chart-reference-check { grid-template-columns: 1fr; }
  .chart-layer-state-head,
  .chart-layer-state-row { grid-template-columns: 1fr; }
  .chart-overlays-panel { left: 0; right: auto; }
}

/* v0.3.97 Admin Maintenance operational state badge: text + icon, no raw color word as the primary UI. */
.operational-state-card small { display: block; margin-top: 6px; line-height: 1.35; }
.operational-state-badge {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  width: fit-content;
  max-width: 100%;
  padding: 8px 14px;
  border-radius: 999px;
  border: 1px solid rgba(0,245,255,.24);
  background: linear-gradient(135deg, rgba(0,245,255,.10), rgba(0,0,0,.10));
  color: var(--oni-text-main, #f2f7f8);
  box-shadow: 0 0 18px rgba(0,245,255,.10);
  font-size: clamp(1.05rem, 1.6vw, 1.45rem);
  line-height: 1.05;
}
.operational-state-icon {
  width: 15px;
  height: 15px;
  border-radius: 999px;
  border: 2px solid currentColor;
  box-shadow: 0 0 16px currentColor;
  background: rgba(255,255,255,.08);
  flex: 0 0 15px;
}
.operational-state-badge.state-green { color: #61f6c2; border-color: rgba(97,246,194,.34); background: linear-gradient(135deg, rgba(97,246,194,.18), rgba(0,245,255,.06)); }
.operational-state-badge.state-orange { color: #ffd166; border-color: rgba(255,209,102,.42); background: linear-gradient(135deg, rgba(255,209,102,.18), rgba(255,154,60,.05)); }
.operational-state-badge.state-red { color: #ff4f7b; border-color: rgba(255,79,123,.46); background: linear-gradient(135deg, rgba(255,79,123,.18), rgba(255,49,88,.05)); }
.operational-state-badge.state-neutral,
.operational-state-badge.state-unknown { color: var(--oni-text-muted, #9fb2bb); border-color: rgba(159,178,187,.34); background: linear-gradient(135deg, rgba(159,178,187,.12), rgba(0,0,0,.06)); }


/* Historical release_guard compatibility markers retained by v0.4.1.
 * body[data-mobile-ux-contract=\
 */


/* CLEAN_MARKET_RESET_SUBMIT_FEEDBACK_FIX_v0.4.20
   Keep the destructive reset action usable on narrow mobile screens and make
   validation feedback visible inside the card, not only as a transient toast. */
.clean-market-reset-form .confirmation-hint { margin-top: -4px; }
.clean-market-reset-form .oni-form-result { margin-top: 2px; margin-bottom: 2px; }
.clean-market-reset-form .reset-danger-submit {
  width: 100%;
  max-width: 100%;
  white-space: normal;
  overflow-wrap: anywhere;
  text-align: center;
  justify-content: center;
  min-height: 48px;
}
@media (max-width: 680px) {
  .clean-market-reset-form .reset-danger-submit {
    font-size: 0.84rem;
    line-height: 1.25;
    padding-left: 12px;
    padding-right: 12px;
  }
}

/* CONFIG_CENTER_GLITCH_FOOTER_v0.4.22 / CONFIG_CENTER_PROVIDER_ADMIN_v0.4.22 */
.admin-config-center .provider-card.danger,
.admin-config-center .notice.danger {
  border-color: rgba(255, 38, 91, 0.68);
  box-shadow: 0 0 28px rgba(255, 38, 91, 0.16);
}
.admin-config-center .provider-card.warning,
.admin-config-center .notice.warning {
  border-color: rgba(255, 190, 70, 0.62);
}
.admin-config-center .provider-card.ok,
.admin-config-center .notice.ok {
  border-color: rgba(0, 255, 210, 0.45);
}
.admin-config-center .badge-stack,
.badge-stack { display: flex; flex-wrap: wrap; gap: 8px; justify-content: flex-end; }
.config-center-grid { align-items: stretch; }
.provider-links { display: flex; gap: 8px; flex-wrap: wrap; margin: 12px 0; }
.compact-dl { display: grid; grid-template-columns: auto 1fr; gap: 6px 12px; margin: 12px 0; }
.compact-dl dt { color: var(--muted); text-transform: uppercase; letter-spacing: .08em; font-size: .75rem; }
.compact-dl dd { margin: 0; color: var(--text); }
.config-section { border: 1px solid rgba(0, 255, 255, .14); border-radius: 18px; padding: 12px 14px; margin: 14px 0; background: rgba(4, 12, 22, .56); }
.config-section summary { cursor: pointer; font-weight: 800; color: #eafcff; letter-spacing: .02em; }
.config-field-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 14px; margin-top: 14px; }
.config-field { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.config-field span { font-weight: 800; color: #f7fbff; }
.config-field small { color: var(--muted); line-height: 1.35; }
.config-field em { color: #7fb0c6; font-style: normal; font-size: .82rem; line-height: 1.35; }
.config-field input,
.config-field select,
.inline-form input,
.inline-form select { width: 100%; min-width: 0; }
.inline-form { display: grid; gap: 8px; }
.sticky-actions { position: sticky; bottom: 72px; z-index: 5; background: linear-gradient(180deg, rgba(6, 9, 18, .72), rgba(6, 9, 18, .94)); backdrop-filter: blur(14px); padding: 12px; border: 1px solid rgba(0, 255, 255, .14); border-radius: 16px; }
.strong-link, .provider-links a { text-decoration: none; }

.oni-config-footer-alert {
  position: fixed;
  left: max(12px, env(safe-area-inset-left));
  right: max(12px, env(safe-area-inset-right));
  bottom: max(10px, env(safe-area-inset-bottom));
  z-index: 9999;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  gap: 14px;
  align-items: center;
  padding: 12px 16px;
  border: 1px solid rgba(0, 255, 255, .42);
  border-radius: 18px;
  color: #f6fbff;
  background: linear-gradient(90deg, rgba(10, 0, 18, .96), rgba(20, 4, 30, .94) 38%, rgba(0, 19, 27, .94));
  box-shadow: 0 0 34px rgba(255, 38, 91, .22), 0 0 22px rgba(0, 245, 255, .16);
  overflow: hidden;
  animation: oniConfigGlitchPulse 2.6s infinite steps(2, end);
}
.oni-config-footer-alert strong {
  color: #00fff2;
  letter-spacing: .16em;
  font-size: .76rem;
  text-shadow: 2px 0 rgba(255, 0, 92, .78), -2px 0 rgba(0, 245, 255, .72);
}
.oni-config-footer-alert span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 800; }
.oni-config-footer-alert a { color: #05070b; background: #00fff2; border-radius: 999px; padding: 7px 12px; font-weight: 900; text-decoration: none; box-shadow: 0 0 18px rgba(0, 255, 242, .32); }
.oni-config-footer-alert.critical { border-color: rgba(255, 38, 91, .82); box-shadow: 0 0 38px rgba(255, 38, 91, .36), 0 0 28px rgba(0, 245, 255, .18); }
.oni-config-footer-alert.warning { border-color: rgba(255, 190, 70, .72); }
.oni-config-footer-scanline { position: absolute; inset: 0; pointer-events: none; background: repeating-linear-gradient(180deg, rgba(255,255,255,.06) 0 1px, transparent 1px 5px); mix-blend-mode: screen; opacity: .35; }
@keyframes oniConfigGlitchPulse {
  0%, 91%, 100% { transform: translate(0,0); filter: none; }
  92% { transform: translate(1px,-1px); filter: hue-rotate(12deg); }
  94% { transform: translate(-2px,1px); filter: hue-rotate(-18deg); }
  96% { transform: translate(2px,0); }
}
@media (max-width: 720px) {
  .oni-config-footer-alert { grid-template-columns: 1fr; gap: 6px; padding: 10px 12px; border-radius: 14px; }
  .oni-config-footer-alert span { white-space: normal; }
  .oni-config-footer-alert a { justify-self: start; }
  .config-field-grid { grid-template-columns: 1fr; }
  .sticky-actions { bottom: 108px; }
}
@media (prefers-reduced-motion: reduce) {
  .oni-config-footer-alert { animation: none; }
}

/* v0.4.23 Market Data Evidence Store / Provider Bootstrap */
.market-data-evidence-panel[data-market-data-evidence-store="v0.4.23"] {
  border-color: rgba(0, 255, 255, 0.35);
  box-shadow: 0 0 24px rgba(0, 255, 255, 0.08), inset 0 0 18px rgba(255, 0, 96, 0.05);
}
.compact-kpi-grid .mini-kpi {
  border: 1px solid rgba(0, 255, 255, 0.18);
  border-radius: 14px;
  padding: 0.75rem;
  background: rgba(0, 0, 0, 0.22);
}
.compact-kpi-grid .mini-kpi span {
  display: block;
  color: var(--muted, #8ba0ad);
  font-size: 0.78rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.compact-kpi-grid .mini-kpi strong {
  display: block;
  font-size: 1.35rem;
  margin-top: 0.2rem;
}
.dryrun-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 0.65rem;
  margin: 1rem 0;
}
.wrap-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  align-items: flex-start;
}
.danger-inline input[name="confirm"] {
  min-width: min(100%, 220px);
  border-color: rgba(255, 0, 96, 0.45);
}
@media (max-width: 720px) {
  .wrap-actions,
  .danger-inline {
    display: grid;
    width: 100%;
  }
  .wrap-actions form,
  .wrap-actions button,
  .wrap-actions input {
    width: 100%;
  }
}

/* CONFIG_CENTER_SECTION_INDEX_v0.4.26: compact Config Center area index */
.config-section-index {
  border-color: rgba(0, 255, 255, 0.22);
}
.config-index-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: 0.75rem;
}
.config-index-card {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  padding: 0.85rem 0.95rem;
  border: 1px solid rgba(0, 255, 255, 0.24);
  border-radius: 16px;
  background: linear-gradient(135deg, rgba(0,255,255,0.08), rgba(255,255,255,0.03));
  color: inherit;
  text-decoration: none;
  min-height: 88px;
  box-shadow: 0 0 22px rgba(0, 255, 255, 0.05);
}
.config-index-card:hover,
.config-index-card:focus-visible {
  border-color: rgba(0, 255, 255, 0.6);
  box-shadow: 0 0 28px rgba(0, 255, 255, 0.16);
  transform: translateY(-1px);
}
.config-index-card strong {
  color: var(--oni-accent, #00ffff);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  font-size: 0.86rem;
}
.config-index-card span {
  color: var(--oni-muted, #9fb3c8);
  font-size: 0.82rem;
  line-height: 1.25;
}
.config-index-card.danger {
  border-color: rgba(255, 35, 91, 0.45);
  background: linear-gradient(135deg, rgba(255,35,91,0.12), rgba(0,255,255,0.04));
}
.config-index-card.warning {
  border-color: rgba(255, 198, 72, 0.42);
  background: linear-gradient(135deg, rgba(255,198,72,0.10), rgba(0,255,255,0.04));
}

/* v0.4.27 FMP deep capability confirmation feedback */
.form-field-label { display: block; margin: .4rem 0 .25rem; font-size: .72rem; letter-spacing: .08em; text-transform: uppercase; color: var(--muted, #9fb3c8); }
button.is-confirmation-locked, button[disabled].is-confirmation-locked { opacity: .55; cursor: not-allowed; filter: grayscale(.2); }
[data-fmp-deep-test-confirmation-feedback="v0.4.27"] { margin-top: .35rem; }

/* CONFIG_CENTER_BOUNDARY_FIX_v0.4.32 / CONFIG_CENTER_DIFF_PREVIEW_v0.4.32 */
.config-diff-preview {
  max-height: 22rem;
  overflow: auto;
  white-space: pre-wrap;
  border: 1px solid var(--oni-border, rgba(255,255,255,.14));
  border-radius: 12px;
  padding: 1rem;
  background: rgba(0, 0, 0, .24);
  font-size: .86rem;
  line-height: 1.45;
}
