/* Shared workspace layout and interaction patterns. Component colors live in
   styles.css, sentiment.css and supply-chain.css. */
:root {
  --bg: #111613;
  --sidebar: #151b17;
  --panel: #1b231d;
  --field: #131b16;
  --line: #354137;
  --text: #f0f2eb;
  --muted: #b3bdb0;
  --faint: #9eab99;
  --gold: #e7c591;
  --radius: 16px;
}
.ai-stack-preview { transform: none !important; }
.ai-stack-preview>span:nth-child(n) { margin-left:0; margin-right:0; box-shadow:none; }
.presets { display:block; }
.preset-group + .preset-group { margin-top:20px; }
.preset-group h3 { font-size:12px; color:var(--faint); font-weight:500; margin-bottom:10px; }
.preset-group>div { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
.preset-group .preset { min-height:44px; display:flex; justify-content:space-between; text-align:left; padding:10px 12px; font-size:13px; border-radius:8px; }
.preset-group .preset .icon { display:block; width:12px; height:12px; opacity:.5; }
.event-evidence { font-size:12px; color:var(--muted); margin:10px 0; line-height:1.8; }
.impact-topics { margin:20px 0; }
.impact-topics>h3,.related-us h3 { font-size:13px; color:var(--muted); font-weight:500; margin-bottom:12px; }
.impact-topic { border:1px solid var(--line); border-radius:9px; margin-bottom:8px; padding:0 12px; background:var(--field); }
.impact-topic summary { display:flex; flex-wrap:wrap; align-items:center; gap:8px; cursor:pointer; min-height:48px; list-style:none; }
.impact-topic summary strong { font-size:13px; font-weight:500; }
.impact-topic summary small { color:var(--faint); font-size:10px; margin-left:auto; }
.impact-topic summary .icon { width:12px; height:12px; }
.impact-topic p { font-size:13px; line-height:1.85; margin:8px 0 12px; color:var(--muted); }
.impact-topic ul,.stock-checks ul { padding-left:20px; font-size:13px; color:var(--muted); line-height:1.9; }
.impact-topic .impact-caveat { padding:10px 12px; border-left:2px solid var(--gold); background:#e7c59108; }
.layer-chip { display:inline-flex; color:var(--layer,var(--gold)); background:rgba(var(--layer-rgb,231,197,145),.08); border:1px solid rgba(var(--layer-rgb,231,197,145),.18); padding:3px 7px; border-radius:5px; font-size:10px; white-space:nowrap; }
.related-us { margin:22px 0; }
.related-us>div { display:flex; gap:7px; flex-wrap:wrap; }
.related-us button { min-height:36px; padding:7px 9px; color:var(--muted); border:1px solid var(--line); border-radius:7px; background:var(--field); font-size:12px; }
.related-us button strong { color:var(--gold); }
.analysis-stock { border-top:1px solid var(--line); padding:15px 0; }
.analysis-stock-heading { display:flex; align-items:center; justify-content:space-between; gap:8px; flex-wrap:wrap; margin-bottom:8px; }
.stock-identity { display:flex; align-items:center; gap:9px; color:var(--text); padding:0; border:0; background:transparent; min-height:36px; }
.stock-identity span { color:var(--gold); font-size:13px; }
.stock-identity .icon { width:12px; height:12px; color:var(--faint); }
.analysis-stock>p { font-size:13px; line-height:1.8; color:var(--muted); margin:8px 0; }
.stock-evidence { color:var(--faint); font-size:11px; line-height:1.8; }
.stock-tags { display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
.company-impact { display:inline-flex; align-items:center; border:1px solid; border-radius:5px; padding:2px 7px; font-size:11px; line-height:1.6; white-space:nowrap; font-weight:550; }
.company-impact.bullish { color:#b4d8a7; border-color:#526e43; background:#2b3d29; }
.company-impact.bearish { color:#efaaa5; border-color:#88514c; background:#412b2a; }
.company-impact.mixed,.company-impact.neutral { color:#e7c591; border-color:#6b5b3e; background:#363023; }
.related-us button { display:inline-flex; align-items:center; flex-wrap:wrap; gap:5px; text-align:left; }
.stock-checks .stock-impact-reason { font-size:12px; color:var(--gold); line-height:1.8; margin:6px 0 12px; }
.direct-tag.indirect { background:#e7c59110; color:var(--gold); }
.stock-checks summary { cursor:pointer; list-style:none; display:flex; align-items:center; gap:8px; font-size:12px; color:var(--gold); min-height:36px; }
.stock-checks .icon { width:12px; height:12px; }
.stock-checks a { font-size:12px; color:var(--gold); display:inline-flex; align-items:center; gap:8px; min-height:40px; }
.ai-detail-explore { margin-top:22px; padding-top:20px; border-top:1px solid var(--line); }
.ai-detail-explore h3 { font-size:14px; margin-bottom:12px; }
.ai-detail-explore>div { display:flex; flex-wrap:wrap; gap:8px; }
.risk-card { container-type:inline-size; }
.risk-overview { display:grid; grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr); gap:28px; align-items:stretch; }
.risk-card .risk-current { min-width:0; margin:0; display:flex; flex-direction:column; }
.risk-card .risk-current>.sentiment-card-heading { flex-wrap:wrap; align-items:center; min-height:44px; }
.risk-meters { flex:0 0 auto; display:flex; flex-direction:column; gap:32px; margin-top:0; padding:19px 0 18px; }
.risk-meters .sentiment-meter { margin:0; }
.risk-current .sentiment-scale-labels { margin:0; padding:0; border:0; }
.risk-current .sentiment-values { margin-top:16px; }
.risk-card .risk-history { min-width:0; margin:0; padding-left:28px; border-left:1px solid var(--line); }
.risk-history .history-heading { align-items:center; flex-wrap:wrap; gap:10px 12px; }
.risk-history h3 { font-size:18px; font-weight:550; line-height:1.5; white-space:nowrap; flex:0 0 auto; }
.risk-history .sentiment-period { flex:0 0 auto; margin-left:auto; }
.risk-card .sentiment-chart { display:block; max-width:100%; max-height:none; min-height:0; height:auto; aspect-ratio:620/215; margin:auto; width:100%; }
.risk-commentary { display:grid; grid-template-columns:auto minmax(0,1fr); gap:18px 24px; margin-top:24px; padding:22px 24px; border:1px solid var(--line); border-radius:12px; background:var(--field); }
.risk-commentary-label { display:flex; align-items:center; align-self:start; gap:8px; color:var(--gold); }
.risk-commentary-label .icon { width:18px; height:18px; }
.risk-commentary-label h3 { font-size:14px; font-weight:550; white-space:nowrap; line-height:1.8; }
.risk-commentary h4 { font-size:16px; font-weight:550; line-height:1.6; margin:0 0 6px; }
.risk-commentary p { font-size:13px; line-height:1.9; color:var(--muted); margin:0; overflow-wrap:anywhere; }
.risk-commentary .risk-watch { margin-top:10px; color:var(--text); }
.risk-watch span { color:var(--gold); margin-right:8px; font-weight:550; }
.risk-commentary .risk-trend { padding-top:10px; margin-top:12px; border-top:1px dashed var(--line); font-size:12px; font-variant-numeric:tabular-nums; }
.risk-recent-trends { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px; margin-top:18px; }
.risk-recent-trends h5 { margin:0 0 5px; font-size:13px; font-weight:600; color:var(--gold); }
.risk-commentary .risk-trend-direction { color:var(--text); font-weight:550; margin-bottom:4px; }
.risk-recent-trends small { display:block; color:var(--faint); font-size:11px; line-height:1.8; margin-top:6px; }
.risk-commentary .risk-trend-unavailable { margin-top:12px; font-size:12px; }
@media(max-width:640px) { .risk-recent-trends { grid-template-columns:minmax(0,1fr); gap:16px; } }
.risk-averages { grid-column:1/-1; min-width:0; border-top:1px solid var(--line); padding-top:18px; }
.risk-averages>h4 { margin-bottom:14px; font-size:14px; }
.average-sources { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px; }
.average-source { min-width:0; background:var(--panel); border:1px solid var(--line); border-radius:9px; padding:16px; }
.average-source-heading { display:flex; justify-content:space-between; align-items:baseline; flex-wrap:wrap; gap:6px 12px; margin-bottom:16px; }
.average-source-heading strong { font-size:14px; font-weight:550; }
.average-source-heading>span { font-size:11px; color:var(--faint); }
.average-values { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:8px; margin:0; font-variant-numeric:tabular-nums; }
.average-values dt { color:var(--muted); font-size:12px; margin-bottom:6px; }
.average-values dd { margin:0; }
.average-values dd strong { font-size:20px; font-weight:550; }
.average-values dd small { display:block; font-size:11px; color:var(--faint); margin-top:4px; }
.risk-averages .average-comparison { margin-top:14px; padding-top:12px; border-top:1px dashed var(--line); font-size:12px; }
.risk-averages .average-method { font-size:12px; margin-top:12px; color:var(--faint); }
@container (max-width:720px) {
  .risk-overview { grid-template-columns:minmax(0,1fr); gap:24px; }
  .risk-card .risk-history { padding:24px 0 0; border-left:0; border-top:1px solid var(--line); }
  .risk-commentary { grid-template-columns:minmax(0,1fr); gap:10px; padding:18px; }
  .average-sources { grid-template-columns:minmax(0,1fr); gap:12px; }
  .average-source { padding:14px 12px; }
  .average-values { gap:5px; }
  .average-values dd strong { font-size:18px; }
}
.community-comparison { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); align-items:start; gap:22px; }
.community-comparison .sentiment-card { min-width:0; }
.community-comparison .social-heading { display:flex; flex-direction:column; align-items:flex-start; gap:8px; min-height:63px; margin-bottom:12px; }
.community-comparison .social-heading h3 { font-size:18px; line-height:27px; }
.community-comparison .social-time { min-height:20px; line-height:20px; margin-bottom:14px; }
.community-ranking { width:100%; table-layout:fixed; border-collapse:collapse; font-variant-numeric:tabular-nums; }
.community-ranking .rank-column { width:38px; }
.community-ranking .change-column { width:52px; }
.community-ranking .mentions-column { width:94px; }
.community-ranking th { height:32px; padding:0 4px 8px; font-size:12px; font-weight:400; text-align:left; color:var(--faint); border-bottom:1px solid var(--line); }
.community-ranking tbody tr { height:64px; }
.community-ranking td { height:64px; padding:8px 4px; vertical-align:middle; border-bottom:1px solid var(--line); font-size:13px; }
.community-ranking tr:last-child td { border-bottom:0; }
.community-ranking td:first-child,.community-ranking th:first-child { padding-left:0; }
.community-ranking th:last-child,.community-ranking td:last-child { padding-right:0; text-align:right; }
.community-ranking .reddit-rank { display:inline-block; min-width:30px; }
.community-stock a,.community-stock strong,.community-stock small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.community-stock strong { font-weight:500; color:var(--text); font-size:14px; line-height:21px; }
.community-stock small,.community-mentions small { display:block; color:var(--faint); font-size:11px; line-height:18px; margin-top:3px; white-space:nowrap; }
.community-stock a:hover strong { color:var(--gold); }
.community-mentions strong { font-size:14px; font-weight:500; color:#c5d4ba; line-height:21px; }
.community-ranking .rank-change { font-size:12px; }
.rank-change.new { color:var(--gold); }
.rank-change.unavailable,.ranking-unavailable { color:var(--faint); font-size:11px; }
@media(max-width:1100px) {
  .community-ranking .rank-column { width:32px; }
  .community-ranking .change-column { width:42px; }
  .community-ranking .mentions-column { width:82px; }
  .community-ranking .reddit-rank { min-width:27px; }
}
.community-more { border-top:1px solid var(--line); margin-top:18px; }
.community-more>summary,.archive-compact>summary { display:flex; align-items:center; justify-content:space-between; list-style:none; cursor:pointer; min-height:48px; font-size:13px; color:var(--gold); gap:10px; }
.community-more>summary .icon,.archive-compact>summary .icon { width:15px; height:15px; }
.community-more .sample-compact { font-size:13px; color:var(--muted); margin:12px 0; }
.community-more .taiwan-posts { margin-top:10px; }
.stocktwits-more { margin:18px 0 24px; padding:0 4px; }
.archive-compact>summary>span { display:flex; align-items:center; gap:10px; }
.archive-compact.sentiment-card { padding:12px 24px; }
.archive-compact .archive-export { margin:12px 0; }
@media(max-width:850px) { .community-comparison { grid-template-columns:1fr; } }
@media(max-width:380px) { .preset-group>div { grid-template-columns:1fr; } .impact-topic summary small { display:none; } }
html { scroll-padding: 24px 0 100px; }
body { font-size: 15px; }
select { font: inherit; }
select:focus-visible { outline: 2px solid var(--gold); outline-offset: 4px; }
.skip-link { top: 0; width: 1px; height: 1px; padding: 0; overflow: hidden; clip-path: inset(50%); }
.skip-link:focus { top: 12px; width: auto; height: auto; padding: 10px 20px; clip-path: none; }
.sidebar { width: 216px; padding-top: 28px; }
.workspace { margin-left: 216px; }
.brand { font-size: 22px; }
.brand-caption { letter-spacing: 1px; font-size: 11px; }
.workspace-label { margin: 36px 14px 16px; letter-spacing: 1px; color: var(--muted); }
.workspace-label span { font-size: 11px; letter-spacing: 0; color: var(--faint); }
.nav-item { min-height: 50px; font-size: 14px; border-radius: 10px; }
.nav-item.active { background: #333427; border-color: #5a533b; box-shadow: inset 3px 0 var(--gold); }
.nav-item .icon { width: 19px; height: 19px; }
.nav-arrow { display: none; }
.sidebar-note { margin-bottom: 25px; }
.sidebar-note .eyebrow, .sidebar-footer { font-size: 10px; }
.topbar { height: 64px; background: transparent; padding: 0 32px; }
.breadcrumb { font-size: 13px; }
.topbar-actions { gap: 14px; }
.icon-button { width: 40px; height: 40px; }
.icon-button .icon { width: 20px; height: 20px; }
.avatar { display: none; }
main { max-width: 1500px; padding: 28px 32px 0; }
.page-heading { margin-bottom: 22px; }
.page-heading .eyebrow { font-size: 12px; letter-spacing: 1.2px; margin-bottom: 7px; color: var(--muted); }
h1 { font-size: 30px; letter-spacing: .4px; font-weight: 650; }
.heading-dot { display: none; }
.page-caption { color: var(--muted); font-size: 13px; }
.view-intro { font-size: 15px; line-height: 1.8; margin-bottom: 22px; }
.hero { min-height: 174px; margin-bottom: 24px; background: linear-gradient(110deg, #293425, #1e2a21 60%, #293325); }
.hero-copy { padding: 27px 28px; width: 66%; }
.hero-label { font-size: 12px; letter-spacing: 1px; color: #d0c4a3; }
.hero h2 { font-size: clamp(22px, 2.15vw, 32px); letter-spacing: .2px; line-height: 1.55; margin: 9px 0 8px; }
.hero-copy>p { font-size: 14px; color: #bdc7b6; }
.radar-art { width: 34%; }
.radar-node { min-width: 135px; padding: 8px 12px; }
.node-us { top: 14px; left: 3%; }
.node-tw { bottom: 16px; right: 5%; }
.node-caption, .radar-coordinate { display: none; }
.node-code { font-size: 12px; }
.radar-center { width: 38px; height: 38px; }
.analysis-grid { gap: 20px; grid-template-columns: minmax(0, 1fr) minmax(0, 1.14fr); }
.panel { padding: 24px; }
.panel h2 { font-size: 18px; letter-spacing: 0; }
.panel-heading { gap: 10px; flex-wrap: wrap; }
.panel-heading .text-button { font-size: 12px; }
.panel-description { font-size: 14px; margin-bottom: 20px; }
.step-number { font-size: 11px; padding: 3px 7px; }
textarea { font-size: 16px; line-height: 1.8; padding: 13px 14px; min-height: 106px; }
form>label { font-size: 14px; flex-wrap: wrap; gap: 5px; }
.label-hint { font-size: 12px; }
.primary-button { min-height: 48px; font-size: 15px; border-radius: 10px; }
.secondary-button, .filter-chip { min-height: 44px; font-size: 13px; }
.text-button, .copy-button { min-height: 40px; }
.summary-details { margin: 6px 0 12px; }
.summary-details summary { min-height: 40px; font-size: 13px; }
.presets { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.preset { padding: 12px 8px; gap: 6px; }
.preset strong { font-size: 12px; white-space: normal; }
.preset small { font-size: 11px; white-space: normal; }
.preset>.icon { display: none; }
.preset .company-glyph { width: 22px; }
.input-tip { font-size: 12px; align-items: flex-start; line-height: 1.8; }
.input-tip .icon { margin-top: 4px; flex-shrink: 0; }
.result-event { font-size: 17px; font-weight: 550; }
.ripple-text { font-size: 14px; }
.ripple-flow { font-size: 12px; gap: 8px; flex-wrap: wrap; }
.stock-name { font-size: 15px; flex-wrap: wrap; }
.stock-code { font-size: 13px; min-width: 48px; }
.stock-subsystem { font-size: 12px; line-height: 1.7; }
.direct-tag { font-size: 11px; }
.stock-row { padding: 14px 0; }
.stock-impact { font-size: 12px; }
.stocks-heading { flex-wrap: wrap; }
.stocks-heading h3 { font-size: 14px; }
.result-actions { flex-wrap: wrap; margin-top: 12px; }
.copy-button { padding: 8px 12px; font-size: 12px; }
.result-note { font-size: 12px; }
.result-panel { scroll-margin-top: 24px; }
.coverage-strip { margin: 22px 0 0; padding: 12px 0; min-height: 70px; gap: 0; }
.coverage-strip>div { padding: 0 20px; }
.coverage-strip strong { font-size: 24px; }
.coverage-strip>div>span:last-child { font-size: 12px; }
.coverage-note { font-size: 12px; }
.bottom-note { font-size: 12px; line-height: 1.8; margin: 18px 0 30px; flex-wrap: wrap; }
.footer { font-size: 11px; }
.footer>span:last-child { font-size: 11px; }
.search-field { min-height: 46px; }
.search-field input { font-size: 16px; min-width: 0; }
.news-tools { display: flex; align-items: center; gap: 20px; margin: 0 0 18px; }
.news-search { width: min(480px, 100%); }
.fetch-note { color: var(--faint); font-size: 12px; line-height: 1.8; }
.news-meta { font-size: 12px; flex-wrap: wrap; }
.filter-bar { margin-bottom: 20px; }
.news-card { gap: 16px; padding: 24px; }
.news-card h2 { font-size: 19px; font-weight: 550; line-height: 1.7; }
.news-summary { font-size: 14px; }
.news-card-header { font-size: 12px; gap: 10px; flex-wrap: wrap; }
.news-card-footer { border-top: 1px solid var(--line); padding-top: 12px; flex-wrap: wrap; font-size: 12px; }
.news-card-footer a { min-height: 40px; overflow-wrap: anywhere; }
.news-card .text-button { background: #303626; padding: 8px 12px; border-radius: 8px; font-size: 13px; margin-left: auto; }
.data-help { color: var(--muted); margin: -4px 0 22px; border: 1px solid var(--line); border-radius: 10px; padding: 0 16px; background: #18201a; }
.data-help summary { cursor: pointer; min-height: 44px; display: flex; align-items: center; gap: 12px; font-size: 13px; list-style: none; }
.data-help summary::-webkit-details-marker { display: none; }
.data-help summary>.icon { width: 14px; height: 14px; margin-left: auto; }
.data-help[open] summary>.icon { transform: rotate(180deg); }
.data-help p { font-size: 13px; line-height: 1.9; margin: 0 0 14px; max-width: 950px; }
.sentiment-shortcuts { display: flex; gap: 8px; flex-wrap: wrap; margin: 0 0 20px; }
.sentiment-shortcuts button { display: flex; align-items: center; gap: 12px; color: var(--muted); background: var(--panel); border: 1px solid var(--line); border-radius: 8px; padding: 8px 14px; min-height: 44px; font-size: 13px; }
.sentiment-shortcuts button:hover { border-color: var(--gold); color: var(--gold); }
.sentiment-shortcuts .icon { width: 13px; height: 13px; }
.sentiment-toolbar { gap: 12px; flex-wrap: wrap; margin-bottom: 16px; }
.sentiment-toolbar label { font-size: 14px; }
.sentiment-toolbar input { max-width: 180px; min-height: 44px; font-size: 16px; }
.sentiment-toolbar>span { margin-left: auto; font-size: 12px; }
#sentiment-today:disabled { cursor: default; opacity: .55; }
.sentiment-card-heading { flex-wrap: wrap; }
.sentiment-card-heading h2 { font-size: 21px; }
.sentiment-period { max-width: 145px; min-height: 44px; font-size: 14px; }
.sentiment-scale-labels { font-size: 12px; gap: 5px; }
.sentiment-value { font-size: 12px; gap: 8px; }
.sentiment-meter-heading { gap: 8px; }
.sentiment-explainer { font-size: 13px; line-height: 1.9; }
.sentiment-values summary, .taiwan-method summary, .stocktwits-details summary { min-height: 44px; font-size: 13px; }
.source-status { font-size: 12px; }
.sentiment-section-heading p { font-size: 14px; }
.community-market-tabs button { min-height: 44px; font-size: 14px; }
.social-heading { flex-wrap: wrap; }
.social-time, .social-badge { font-size: 12px; }
.reddit-tables { grid-template-columns: 1fr; gap: 0; }
.reddit-table:nth-child(2) .header { display: none; }
.reddit-row { grid-template-columns: 34px minmax(0,1fr) 58px 58px; gap: 9px; padding: 10px 0; }
.reddit-stock strong, .taiwan-rank-row strong { font-size: 15px; }
.reddit-stock small, .taiwan-rank-row small { font-size: 12px; }
.mention-count, .rank-change { font-size: 13px; }
.social-summary, .taiwan-posts article>a { font-size: 14px; }
.archive-card .sentiment-card-heading h2 { font-size: 22px; }
.archive-export .secondary-button { font-size: 13px; }
.map-mode-tabs button { font-size: 15px; min-height: 46px; }
.ai-map-hero { padding: 22px 28px; gap: 20px; min-height: 0; }
.ai-map-hero .eyebrow { font-size: 12px; letter-spacing: 1px; }
.ai-map-hero h2 { font-size: 26px; margin: 8px 0; line-height: 1.5; }
.ai-map-hero h2>span { display: inline; }
.ai-map-hero p:not(.eyebrow) { font-size: 14px; max-width: 530px; }
.ai-stack-preview { width: 170px; gap: 3px; padding: 0 8px; }
.ai-stack-preview>span { padding: 3px 10px; font-size: 12px; }
.ai-stack-preview>span>span { display: none; }
.ai-map-toolbar { margin-top: 20px; }
.ai-market-controls button, .ai-layer-filters button { min-height: 42px; font-size: 13px; }
.ai-search { width: 320px; }
.ai-layer { grid-template-columns: 168px minmax(0,1fr); }
.ai-layer-summary { font-size: 13px; color: var(--muted); }
.ai-layer-english { font-size: 12px; opacity: .85; }
.ai-company-grid { grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); }
.ai-company-node { padding: 12px; min-height: 102px; background: #151e18; }
.ai-node-heading strong { font-size: 16px; }
.ai-node-name { font-size: 14px; }
.ai-company-node small { font-size: 12px; color: var(--muted); }
.ai-node-heading>.icon { width: 13px; height: 13px; opacity: .6; }
.ai-market-label { font-size: 12px; }
.ai-market-label small { font-size: 10px; opacity: .85; }
.ai-layer-insight summary { min-height: 40px; font-size: 12px; }
.ai-layer-insight p, .ai-market-empty { font-size: 13px; }
.ai-map-footnote { font-size: 12px; }
.ai-map-meta, .ai-map-meta .text-button { font-size: 13px; }
.ai-detail-intro, .ai-detail-role p { font-size: 14px; }
.ai-detail-role a { min-height: 36px; font-size: 13px; }
.ai-detail-note { font-size: 12px; }
.guide-steps p { font-size: 14px; line-height: 1.8; }
.guide-steps strong { font-size: 15px; }
.guide-note { font-size: 13px; }
dialog { width: min(520px, calc(100% - 32px)); }
.ai-company-dialog { width: min(600px, calc(100% - 32px)); }

@media (max-width: 1150px) {
  .sidebar { width: 184px; }
  .workspace { margin-left: 184px; }
  .brand { font-size: 19px; gap: 8px; }
  .brand-caption { font-size: 10px; }
  .nav-item { padding: 0 12px; gap: 10px; }
  .workspace-label { margin-left: 10px; margin-right: 0; }
  .workspace-label span { font-size: 10px; }
  .sidebar-footer { font-size: 9px; }
  .sidebar-note { margin-left: 10px; margin-right: 10px; }
  .sidebar-note p { font-size: 13px; }
  main { padding: 24px 24px 0; }
  .topbar { padding: 0 24px; }
  .analysis-grid { grid-template-columns: minmax(0,1fr) minmax(0,1.12fr); gap: 16px; }
  .panel { padding: 20px; }
  .presets { grid-template-columns: 1fr; }
  .hero-copy { width: 70%; padding: 24px; }
  .hero h2 { font-size: 25px; }
  .radar-art { width: 30%; opacity: .6; }
  .radar-node { display: none; }
  .news-tools { align-items: flex-start; flex-direction: column; gap: 10px; }
  .news-search { width: 100%; }
  .ai-layer { grid-template-columns: 145px minmax(0,1fr); }
  .ai-layer-label { padding: 20px 16px; }
  .ai-layer-summary { font-size: 12px; }
  .ai-company-grid { grid-template-columns: repeat(auto-fill, minmax(118px,1fr)); }
}
@media (max-width: 1000px) {
  .analysis-grid { grid-template-columns: 1fr; }
  .presets { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .page-caption { display: none; }
  .ai-map-hero h2>span { display: block; }
  .sentiment-overview-grid, .sentiment-community-grid { grid-template-columns: 1fr; }
}
@media (max-width: 760px) {
  .ai-layer { grid-template-columns: 1fr; }
  .ai-layer-label { padding: 17px 18px; }
  .ai-layer-summary { font-size: 13px; }
  .ai-stack-preview { display: none; }
  .ai-map-toolbar { align-items: stretch; }
  .ai-market-controls { align-self: flex-start; }
  .ai-search { width: 100%; }
  .sentiment-toolbar>span { width: 100%; margin-left: 0; }
  .community-section-heading { flex-wrap: wrap; }
}
@media (max-width: 640px) {
  body { padding-bottom: calc(78px + env(safe-area-inset-bottom)); }
  .sidebar { position: relative; inset: auto; width: 100%; padding: 18px 20px; border-bottom: 1px solid var(--line); }
  .brand { font-size: 21px; }
  .brand-caption { font-size: 11px; }
  .main-nav { position: fixed; inset: auto 0 0; z-index: 50; display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 4px; margin: 0; padding: 8px 10px calc(8px + env(safe-area-inset-bottom)); background: #18211af5; backdrop-filter: blur(18px); border-top: 1px solid #485440; box-shadow: 0 -8px 30px #0003; }
  .nav-item { display: flex; flex-direction: column; min-height: 56px; height: auto; gap: 4px; padding: 6px 2px; border-radius: 9px; border: 1px solid transparent; font-size: 12px; line-height: 1.4; }
  .nav-item.active { background: #343828; border-color: #57583d; box-shadow: none; }
  .nav-item .icon { display: block; width: 20px; height: 20px; }
  .nav-item .nav-arrow { display: none; }
  .workspace { margin-left: 0; }
  .topbar { height: 49px; padding: 0 20px; }
  .breadcrumb { font-size: 12px; gap: 8px; }
  .breadcrumb>span:first-child, .breadcrumb-slash { display: none; }
  .local-clock { font-size: 11px; }
  .topbar .icon-button { width: 40px; height: 40px; }
  main { padding: 20px 18px 0; }
  .page-heading { margin-bottom: 19px; gap: 10px; }
  .page-heading .eyebrow { font-size: 11px; letter-spacing: .6px; }
  h1 { font-size: 27px; }
  .hero { min-height: 0; margin-bottom: 20px; }
  .hero-copy { width: 100%; padding: 18px 20px; background: none; }
  .hero h2 { font-size: 22px; margin: 0 0 8px; }
  .hero h2 span { display: block; }
  .hero-label { display: none; }
  .hero-copy>p { font-size: 13px; }
  .radar-art { width: 55%; right: -20%; opacity: .18; }
  .panel { padding: 20px 18px; }
  .panel h2 { font-size: 17px; }
  .analysis-grid { gap: 20px; }
  .presets { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .preset { gap: 4px; padding: 10px 6px; }
  .preset strong { font-size: 12px; }
  .preset small { font-size: 11px; }
  .preset .company-glyph { display: none; }
  .result-event { font-size: 16px; }
  .ripple-text { font-size: 14px; }
  .ripple-flow { font-size: 12px; }
  .stock-name { font-size: 14px; }
  .stock-code { min-width: 42px; font-size: 12px; }
  .direct-tag { font-size: 10px; }
  .stock-impact { font-size: 11px; }
  .coverage-strip { justify-content: space-around; margin-top: 14px; }
  .coverage-strip>div { padding: 0 10px; gap: 7px; }
  .coverage-strip>div>span:last-child { font-size: 11px; margin-top: 0; }
  .coverage-icon { display: none; }
  .coverage-strip strong { font-size: 23px; }
  .bottom-note { font-size: 12px; }
  .footer>span:last-child { display: none; }
  .view-intro { font-size: 14px; }
  .secondary-button { padding: 8px 11px; font-size: 13px; }
  .filter-bar { gap: 7px; }
  .filter-chip { font-size: 13px; padding: 7px 11px; }
  .news-tools { gap: 9px; }
  .news-meta { font-size: 12px; gap: 6px; }
  .news-card { padding: 20px; }
  .news-card h2 { font-size: 18px; }
  .news-list { gap: 16px; }
  .news-card-footer { gap: 8px; }
  .news-card .text-button { font-size: 13px; }
  .sentiment-shortcuts { gap: 6px; }
  .sentiment-shortcuts button { gap: 5px; padding: 8px 10px; font-size: 12px; }
  .sentiment-card { padding: 20px 17px; }
  .sentiment-card-heading h2 { font-size: 19px; }
  .source-status { font-size: 11px; }
  .sentiment-scale-labels { font-size: 11px; }
  .sentiment-meter-heading { flex-wrap: wrap; }
  .sentiment-meter-heading a { font-size: 14px; }
  .sentiment-value { font-size: 11px; margin-left: auto; }
  .sentiment-value strong { font-size: 28px; }
  .sentiment-period { font-size: 14px; }
  .sentiment-explainer { font-size: 12px; }
  .sentiment-section-heading h2 { font-size: 22px; }
  .sentiment-section-heading p { font-size: 13px; }
  .community-market-tabs { align-self: stretch; }
  .community-market-tabs button { flex: 1; font-size: 14px; }
  .social-badge { font-size: 11px; }
  .social-time { font-size: 12px; }
  .reddit-row { grid-template-columns: 28px minmax(0,1fr) 46px 42px; gap: 7px; }
  .taiwan-rank-row { grid-template-columns: 28px minmax(0,1fr) 54px; }
  .taiwan-rank-row strong, .reddit-stock strong { font-size: 14px; }
  .taiwan-rank-row strong span { display: block; margin-left: 0; }
  .social-summary { font-size: 14px; }
  .archive-export { display: grid; grid-template-columns: 1fr; }
  .archive-export .secondary-button { justify-content: center; }
  .map-mode-tabs { gap: 22px; }
  .map-mode-tabs button { font-size: 14px; }
  .ai-map-hero { padding: 20px; }
  .ai-map-hero h2 { font-size: 24px; }
  .ai-map-hero p:not(.eyebrow) { font-size: 13px; }
  .ai-map-hero .eyebrow { font-size: 11px; }
  .ai-search { min-width: 0; }
  .ai-market-controls { align-self: stretch; }
  .ai-market-controls button { flex: 1; padding: 7px 10px; font-size: 13px; }
  .ai-layer-filters { gap: 6px; }
  .ai-layer-filters button { font-size: 12px; padding: 7px 10px; }
  .ai-company-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .ai-company-node { padding: 10px; }
  .ai-node-heading strong { font-size: 15px; }
  .ai-node-name { font-size: 13px; }
  .ai-company-node small { font-size: 11px; }
  .ai-market-label { width: 25px; min-width: 25px; font-size: 11px; }
  .ai-market-label small { font-size: 10px; }
  .ai-map-meta, .ai-map-meta .text-button { font-size: 12px; }
  .ai-layer-insight summary { font-size: 12px; }
  .ai-layer-insight p, .ai-market-empty { font-size: 13px; }
  .ai-map-footnote { font-size: 12px; }
  .ai-detail-role p { font-size: 14px; }
  .ai-detail-role a { font-size: 13px; }
  .toast { bottom: calc(94px + env(safe-area-inset-bottom)); font-size: 13px; }
}
@media (max-width: 360px) {
  main { padding-left: 14px; padding-right: 14px; }
  .panel { padding: 18px 14px; }
  .panel h2 { font-size: 16px; }
  .subtle-tag { font-size: 11px; }
  .stocks-heading>span { font-size: 11px; }
  .stock-row { gap: 7px; }
  .stock-name { gap: 4px; }
  .sentiment-shortcuts button { flex: 1; font-size: 11px; padding: 8px 5px; }
  .sentiment-shortcuts .icon { display: none; }
  .sentiment-toolbar label>.icon { display: none; }
  .sentiment-toolbar input { width: 136px; }
  #sentiment-today { font-size: 13px; }
  .ai-layer-body { padding: 14px 10px 10px; }
  .ai-company-node { padding: 9px 7px; }
  .ai-layer-insight { margin-left: 0; }
}

/* Workspace navigation and quick search. */
.nav-lock-label { font-size:10px; margin-left:auto; font-weight:400; }
.community-stock-main { display:flex; align-items:center; gap:3px; min-width:0; }
.community-stock-main>a { flex:1; min-width:0; }
.community-tools { display:flex; align-items:center; flex-wrap:wrap; gap:12px; margin:-4px 0 16px; }
.community-tools .search-field { flex:1; max-width:390px; min-width:180px; }
.community-tools>span { color:var(--gold); font-size:12px; }
.community-ranking .is-search-match { background:#dfc38a14; box-shadow:inset 3px 0 var(--gold); }
.community-ranking .is-search-muted { opacity:.5; }
.date-prev .icon { transform:rotate(180deg); }
.sentiment-toolbar .icon-button { width:38px; height:40px; }
.sentiment-toolbar .icon-button:disabled { cursor:default; opacity:.35; }
.ai-map-hero { min-height:0; padding:24px 28px; gap:28px; }
.ai-map-hero h2 { font-size:28px; }
.ai-map-hero .ai-stack-preview { width:225px; flex-shrink:0; }
.ai-map-toolbar { gap:12px; flex-wrap:wrap; }
.ai-map-toolbar .ai-search { order:2; margin-left:auto; }
.ai-map-footnote>summary { cursor:pointer; min-height:40px; display:flex; align-items:center; color:var(--muted); }
.ai-map-footnote>p { margin:10px 0; }
.ai-detail-actions { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin:18px 0; }
@media(max-width:640px) {
  .sidebar { display:flex; flex-direction:row; align-items:center; justify-content:space-between; gap:12px; }
  .nav-lock-label { display:none; }
  .sentiment-toolbar { gap:7px; }
  .sentiment-toolbar label>.icon { display:none; }
  .sentiment-toolbar input { width:136px; }
  .sentiment-toolbar .icon-button { width:30px; }
  .community-tools { gap:8px; }
  .community-tools .search-field { max-width:none; width:100%; }
  .community-ranking .change-column { width:38px; }
  .community-ranking .mentions-column { width:77px; }
  .community-stock-main { gap:0; }
  .community-stock strong { font-size:12px; }
  .ai-map-hero { padding:18px 20px; }
  .ai-map-hero h2 { font-size:24px; }
  .ai-map-toolbar .ai-search { margin-left:0; }
}

/* Leave a clear pause between the brand and desktop navigation. */
@media(min-width:641px) {
  .sidebar > .main-nav { margin-top:36px; }
}
.nav-development .nav-lock-label { color:var(--faint); }
.nav-development:hover .nav-lock-label, .nav-development.active .nav-lock-label { color:inherit; }
.company-glyph.taiwan { color:#a1d7b7; background:#264635; font-size:13px; }
.news-market { border:1px solid #655438; border-radius:5px; padding:2px 6px; font-size:10px; font-weight:500; line-height:1.4; color:var(--gold); white-space:nowrap; }
.news-market.tw { color:#a1d7b7; border-color:#3b6650; }
