/* Chemdu IR — research-layer styles (layered on top of styles.css) */
:root{
  --ir-ink:#0f1f30;
  --ir-blue:#1a3c5e;
  --ir-accent:#f4c542;
  --ir-mut:#5b6b7d;
  --ir-line:#dfe6ee;
  --ir-soft:#f5f8fb;
  --ir-mono:'JetBrains Mono','SFMono-Regular',Consolas,'Liberation Mono',Menlo,monospace;
}

/* ---- research hero ---- */
.rhero{ background:linear-gradient(135deg,#0d2438 0%,#1a3c5e 55%,#22507a 100%); color:#eaf2fb; padding:3.4rem 0 3rem; }
.rhero .container{ max-width:1080px; }
.rhero .eyebrow{ font-family:var(--ir-mono); letter-spacing:.14em; text-transform:uppercase; font-size:.72rem; color:var(--ir-accent); margin:0 0 .7rem; }
.rhero h1{ color:#fff; font-size:2.15rem; line-height:1.15; margin:0 0 .9rem; max-width:18ch; }
.rhero p.lede{ font-size:1.08rem; line-height:1.6; color:#cfe0f1; max-width:62ch; margin:0 0 1.4rem; }
.rhero .hero-cta{ display:flex; gap:.7rem; flex-wrap:wrap; }
.rhero .btn-ghost{ display:inline-block; padding:.6rem 1.2rem; border:1px solid rgba(255,255,255,.4); border-radius:8px; color:#fff; text-decoration:none; font-weight:600; font-size:.92rem; }
.rhero .btn-ghost:hover{ background:rgba(255,255,255,.1); }
.rhero .badges{ display:flex; gap:1.4rem; flex-wrap:wrap; margin-top:1.8rem; font-size:.82rem; color:#9db9d4; }
.rhero .badges b{ color:#fff; display:block; font-family:var(--ir-mono); font-size:1.05rem; }

/* ---- generic research section ---- */
.r-wrap{ max-width:1080px; }
.kicker{ font-family:var(--ir-mono); text-transform:uppercase; letter-spacing:.12em; font-size:.72rem; color:var(--ir-blue); margin:0 0 .4rem; }
.lede{ font-size:1.05rem; line-height:1.65; color:#334155; max-width:68ch; }
.mono{ font-family:var(--ir-mono); }
.cm{ font-family:var(--ir-mono); font-weight:600; color:var(--ir-blue); white-space:nowrap; }

/* ---- module portal cards ---- */
.module-grid{ display:grid; gap:1rem; grid-template-columns:repeat(auto-fit,minmax(250px,1fr)); margin-top:1.4rem; }
.module-card{ display:block; text-decoration:none; color:inherit; border:1px solid var(--ir-line); border-radius:12px; padding:1.2rem 1.3rem; background:#fff; transition:.15s; }
.module-card:hover{ border-color:var(--ir-blue); box-shadow:0 6px 22px rgba(15,31,48,.08); transform:translateY(-2px); }
.module-card .mc-tag{ font-family:var(--ir-mono); font-size:.7rem; letter-spacing:.1em; text-transform:uppercase; color:var(--ir-mut); }
.module-card h3{ margin:.45rem 0 .4rem; font-size:1.12rem; color:var(--ir-blue); }
.module-card p{ margin:0; font-size:.9rem; color:#475569; line-height:1.5; }
.module-card .arrow{ margin-top:.7rem; font-family:var(--ir-mono); font-size:.8rem; color:var(--ir-blue); }

/* ---- callout notes ---- */
.note{ border:1px solid var(--ir-line); border-left:4px solid var(--ir-blue); background:var(--ir-soft); border-radius:10px; padding:1rem 1.2rem; margin:1.4rem 0; font-size:.94rem; line-height:1.6; }
.note h4{ margin:0 0 .4rem; font-size:.95rem; color:var(--ir-blue); }
.note.warn{ border-left-color:#d4923a; background:#fff8ef; }
.note.warn h4{ color:#b9740f; }
.note.method{ border-left-color:#3a8d7a; background:#f0faf7; }
.note.method h4{ color:#1f6f5c; }

/* ---- dense scientific data tables ---- */
.dt-wrap{ overflow-x:auto; border:1px solid var(--ir-line); border-radius:10px; margin:1.2rem 0; }
table.dt{ width:100%; border-collapse:collapse; font-size:.9rem; min-width:640px; }
table.dt th,table.dt td{ padding:.55rem .8rem; text-align:left; border-bottom:1px solid #eef2f7; vertical-align:top; }
table.dt thead th{ background:var(--ir-blue); color:#fff; font-size:.74rem; text-transform:uppercase; letter-spacing:.04em; position:sticky; top:0; }
table.dt tbody tr:hover{ background:#f8fafc; }
table.dt .num{ font-family:var(--ir-mono); font-weight:600; color:var(--ir-blue); white-space:nowrap; }
table.dt .assign{ font-family:var(--ir-mono); font-size:.84rem; color:#334155; white-space:nowrap; }
.tag{ display:inline-block; font-family:var(--ir-mono); font-size:.68rem; padding:.06rem .42rem; border-radius:4px; background:#eef2f7; color:#475569; }
.tag.s{ background:#e7effa; color:#1a3c5e; } .tag.m{ background:#eef2f7; color:#475569; } .tag.w{ background:#f4f4f5; color:#8a8f98; }

/* ---- equation / parameter blocks ---- */
.eq{ font-family:var(--ir-mono); background:#0d2438; color:#dbe9fb; padding:.9rem 1.1rem; border-radius:8px; overflow-x:auto; font-size:.9rem; margin:1rem 0; }
.eq .c{ color:#f4c542; }

/* ---- band map (cm-1 axis) ---- */
.bandmap{ margin:1.4rem 0; }
.bandmap .axis{ position:relative; height:54px; border-radius:8px; overflow:hidden; display:flex; font-size:.72rem; color:#fff; font-family:var(--ir-mono); }
.bandmap .seg{ display:flex; align-items:center; justify-content:center; text-align:center; padding:.2rem; line-height:1.2; }
.bandmap .ticks{ display:flex; justify-content:space-between; font-family:var(--ir-mono); font-size:.7rem; color:var(--ir-mut); margin-top:.25rem; }

/* ---- reference list ---- */
.refs{ list-style:none; padding:0; margin:1rem 0 0; counter-reset:r; }
.refs li{ position:relative; padding:.45rem 0 .45rem 2.1rem; border-bottom:1px dashed #e6edf4; font-size:.86rem; color:#475569; line-height:1.5; }
.refs li:before{ counter-increment:r; content:"["counter(r)"]"; position:absolute; left:0; font-family:var(--ir-mono); color:var(--ir-blue); font-size:.8rem; }

/* ---- on-page toc ---- */
.toc{ border:1px solid var(--ir-line); border-radius:10px; padding:1rem 1.2rem; background:#fff; margin:1.4rem 0; }
.toc strong{ font-family:var(--ir-mono); font-size:.72rem; letter-spacing:.1em; text-transform:uppercase; color:var(--ir-mut); }
.toc ol{ margin:.5rem 0 0; padding-left:1.2rem; columns:2; column-gap:2rem; }
.toc a{ color:var(--ir-blue); text-decoration:none; font-size:.9rem; }
.toc a:hover{ text-decoration:underline; }

/* ---- interactive tool box ---- */
.tool{ border:1px solid var(--ir-line); border-left:4px solid var(--ir-accent); border-radius:10px; padding:1.2rem 1.3rem; background:#fffdf5; margin:1.4rem 0; }
.tool h3{ margin:0 0 .5rem; font-size:1.1rem; color:var(--ir-blue); }
.tool input,.tool select{ padding:.55rem .8rem; border:1px solid #cbd5e1; border-radius:8px; font-size:1rem; }
.tool .out{ margin-top:.9rem; }

.figure{ border:1px solid var(--ir-line); border-radius:10px; padding:1rem; background:#fff; margin:1.4rem 0; }
.figcaption{ font-size:.82rem; color:var(--ir-mut); margin-top:.6rem; line-height:1.5; }
.figcaption b{ color:var(--ir-blue); }

/* ---- spectrum simulator ---- */
.sim-layout{ display:grid; grid-template-columns:260px 1fr; gap:1.2rem; align-items:start; margin:1.2rem 0; }
.sim-panel{ border:1px solid var(--ir-line); border-radius:10px; padding:1rem; background:#fff; }
.sim-canvas-wrap{ border:1px solid var(--ir-line); border-radius:10px; padding:.6rem .6rem .2rem; background:#fff; }
.sim-canvas-wrap canvas{ width:100%; display:block; }
.sim-group-title{ font-family:var(--ir-mono); font-size:.7rem; letter-spacing:.08em; text-transform:uppercase; color:var(--ir-mut); margin:.8rem 0 .35rem; }
.sim-group-title:first-child{ margin-top:0; }
.sim-group{ display:flex; flex-direction:column; gap:.15rem; max-height:none; }
.sim-pick{ font-size:.85rem; color:#334155; display:flex; align-items:center; gap:.45rem; padding:.12rem 0; cursor:pointer; }
.sim-pick input{ accent-color:var(--ir-blue); }
.sim-controls{ display:flex; flex-wrap:wrap; gap:1rem; align-items:center; margin:.4rem 0 0; font-size:.85rem; color:#475569; }
.sim-controls label{ display:flex; align-items:center; gap:.4rem; }
.sim-controls select,.sim-controls input[type=range]{ accent-color:var(--ir-blue); }
.sim-readout{ font-family:var(--ir-mono); color:var(--ir-blue); min-width:90px; }
.sim-btns{ display:flex; gap:.5rem; margin-top:.8rem; }
.sim-btns button{ font-size:.78rem; padding:.35rem .7rem; border:1px solid var(--ir-line); border-radius:6px; background:#f8fafc; cursor:pointer; color:#475569; }
.sim-btns button:hover{ border-color:var(--ir-blue); color:var(--ir-blue); }
@media (max-width:720px){ .sim-layout{ grid-template-columns:1fr; } }

@media (max-width:640px){ .toc ol{ columns:1; } .rhero h1{ font-size:1.7rem; } }
