:root { --bg:#100e0b; --panel:#1b1712; --line:rgba(203,174,126,.38); --paper:#efe4cf; --ink:#2a2117; --muted:#9e8f77; --amber:#dda65a; --sans-zh:"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans CJK SC",sans-serif; }
* { box-sizing:border-box; } html { background:var(--bg); } body { min-width:1080px; margin:0; color:#eee1c9; background:radial-gradient(ellipse at 50% 0,#302518 0%,var(--bg) 54%); font-family:var(--sans-zh); }
button,select,input { font:inherit; } button,a,label { -webkit-tap-highlight-color:transparent; } a { color:inherit; text-decoration:none; } button { cursor:pointer; } [hidden] { display:none!important; }
.wrap { width:min(1080px,calc(100vw - 72px)); margin-inline:auto; }.masthead { height:68px; display:flex; justify-content:space-between; align-items:center; border-bottom:1px solid rgba(203,174,126,.2); }.wordmark { color:#f3e3c8; font:700 17px/1 ui-monospace,SFMono-Regular,Menlo,monospace; letter-spacing:.17em; }.masthead__right,.locale-switch { display:flex; align-items:center; gap:15px; }.method-link,.locale-switch { color:#b7a68a; font:11px/1 ui-monospace,SFMono-Regular,Menlo,monospace; letter-spacing:.08em; }.locale-switch { gap:7px; }.locale-switch button { border:0; padding:4px 0; color:inherit; background:transparent; }.locale-switch button[aria-pressed=true] { color:#f0c47c; }
.hero { position:relative; height:350px; overflow:hidden; border-bottom:1px solid rgba(203,174,126,.28); }.hero__art { position:absolute; inset:0; background:linear-gradient(90deg,rgba(16,14,11,.3),rgba(16,14,11,.05) 55%,rgba(16,14,11,.34)),url("./assets/voxr-research-hero-v2.png") center 43%/cover no-repeat; opacity:.96; }.hero__content { position:relative; padding-top:72px; }.kicker,.eyebrow { margin:0 0 14px; color:#d2a568; font:11px/1 ui-monospace,SFMono-Regular,Menlo,monospace; letter-spacing:.18em; text-transform:uppercase; }.hero h1,.section-heading h2,.reader-intro h2 { margin:0; color:#f4e7d0; font:600 55px/1.07 var(--sans-zh); letter-spacing:-.065em; }.lede { max-width:520px; margin:19px 0 0; color:#cbbda3; font-size:16px; line-height:1.6; }
.workflow-preview { display:grid; grid-template-columns:minmax(0,1.15fr) minmax(320px,.85fr) auto; gap:32px; align-items:end; padding:25px 0 26px; border-bottom:1px solid var(--line); }.workflow-preview h2 { margin:0; color:#eddfc6; font:600 25px/1.25 var(--sans-zh); letter-spacing:-.035em; }.workflow-preview>div>p:last-child { max-width:620px; margin:9px 0 0; color:#a99a80; font-size:13px; line-height:1.55; }.workflow-preview .eyebrow { margin-bottom:8px; }.workflow-preview__steps { display:grid; gap:8px; margin:0; padding:0; list-style:none; }.workflow-preview__steps li { display:grid; grid-template-columns:30px 1fr; gap:8px; align-items:baseline; color:#cabca3; font-size:12px; line-height:1.35; }.workflow-preview__steps span { color:#d5a665; font:10px/1 ui-monospace,SFMono-Regular,Menlo,monospace; }.workflow-preview__steps strong { font-weight:600; }.workflow-preview__link { padding:11px 13px; border:1px solid #b88a4a; color:#f7e5c3; background:rgba(165,104,36,.13); white-space:nowrap; font:10px/1 ui-monospace,SFMono-Regular,Menlo,monospace; letter-spacing:.08em; }
.intake,.report,.reader { padding-block:58px 82px; }.section-heading { max-width:680px; }.section-heading h2 { font-size:39px; }.section-heading>p:last-child { margin:12px 0 0; color:#ad9d83; font-size:15px; line-height:1.55; }.intake-grid { display:grid; grid-template-columns:1.02fr 1fr 1fr; margin-top:34px; border:1px solid var(--line); background:rgba(27,23,18,.94); box-shadow:0 22px 60px rgba(0,0,0,.24); }.input-module { min-height:224px; padding:25px 27px; display:flex; flex-direction:column; gap:10px; border-right:1px solid var(--line); color:#e8dac2; }.input-module:last-child { border-right:0; }.purpose-module { background:rgba(126,91,47,.12); }.module-number { color:#d4a362; font:11px/1 ui-monospace,SFMono-Regular,Menlo,monospace; letter-spacing:.16em; }.module-label { color:#a89a82; font:11px/1 ui-monospace,SFMono-Regular,Menlo,monospace; letter-spacing:.16em; text-transform:uppercase; }.input-module strong { margin-top:16px; color:#f1e5d0; font-size:18px; font-weight:500; }.module-note,.file-status { color:#a89b84; font-size:12px; }.file-status { margin-top:auto; overflow:hidden; color:#d9ad6b; white-space:nowrap; text-overflow:ellipsis; font-family:ui-monospace,SFMono-Regular,Menlo,monospace; }.purpose-module select { width:100%; margin-top:13px; border:0; border-bottom:1px solid #b69a70; padding:8px 0 10px; color:#f4e6cb; background:transparent; font-size:17px; outline:none; }.purpose-module option { color:var(--ink); background:#eee0c6; }.purpose-module small { color:#918269; font-size:12px; }.drop-module { cursor:pointer; transition:background .2s; }.drop-module:hover,.drop-module.dragging { background:rgba(181,128,54,.11); }.drop-module.is-ready { background:rgba(181,128,54,.17); } input[type=file] { display:none; }
.intake-foot { min-height:94px; display:grid; grid-template-columns:1.45fr 1fr auto; gap:24px; align-items:center; padding:16px 22px; border:1px solid var(--line); border-top:0; background:rgba(21,18,14,.8); }.consent { display:flex; gap:8px; align-items:flex-start; color:#9c8e77; font-size:12px; line-height:1.4; }.consent input { margin:3px 0 0; accent-color:var(--amber); }.nano-player { min-width:0; padding-left:18px; border-left:1px solid var(--line); }.nano-label { display:block; margin-bottom:5px; color:#aa977a; font:10px/1 ui-monospace,SFMono-Regular,Menlo,monospace; letter-spacing:.12em; }.nano-player audio { display:none; width:100%; height:25px; }.nano-player.is-ready audio { display:block; }.nano-status { display:block; overflow:hidden; color:#9f9178; white-space:nowrap; text-overflow:ellipsis; font-size:12px; }.nano-player.is-ready .nano-status { color:#e1b672; }.analysis-control { display:grid; grid-template-columns:minmax(130px,190px) auto auto; align-items:center; gap:10px; }.analysis-control p { margin:0; color:#a69a83; text-align:right; font-size:12px; }.analysis-switch { min-width:164px; min-height:48px; border:1px solid #c69c5d; color:#f6e7ca; background:#2a1d12; font:11px/1 ui-monospace,SFMono-Regular,Menlo,monospace; letter-spacing:.12em; }.analysis-switch:disabled { cursor:not-allowed; opacity:.45; }.analysis-switch:not(:disabled):hover,.analysis-switch.is-running { background:#432917; box-shadow:0 0 20px rgba(227,160,62,.32); }.switch-light { display:inline-block; width:7px; height:7px; margin-right:7px; border-radius:50%; background:#756048; }.analysis-switch:not(:disabled) .switch-light,.analysis-switch.is-running .switch-light { background:var(--amber); box-shadow:0 0 9px var(--amber); }.quiet-button { border:0; color:#aa9677; background:transparent; font:11px/1 ui-monospace,SFMono-Regular,Menlo,monospace; letter-spacing:.08em; }.notice { margin:12px 0 0; padding:11px 14px; border-left:2px solid var(--amber); color:#f1c9a8; background:#3a1910; }
.report { position:relative; }.report-heading { padding-right:250px; }.report-heading .source-tag { position:absolute; top:64px; right:0; color:#9f8e72; font:11px/1 ui-monospace,SFMono-Regular,Menlo,monospace; letter-spacing:.12em; }.timeline-strip { position:relative; height:86px; margin:34px 0 21px; border-top:1px solid var(--line); border-bottom:1px solid var(--line); }.timeline-strip:before { content:""; position:absolute; left:0; right:0; top:50%; border-top:2px solid #766249; }.timeline-marker { position:absolute; top:10px; bottom:10px; width:1px; background:#d5b17a; }.timeline-marker span { position:absolute; top:-2px; transform:translateX(-50%); padding:3px 5px; color:#22180f; background:#e5bf7f; font:11px/1 ui-monospace,SFMono-Regular,Menlo,monospace; }.timeline-marker b { position:absolute; bottom:0; left:8px; width:150px; color:#bba98c; font-size:12px; font-weight:500; }.timeline-empty { display:grid; height:100%; place-items:center; color:#a9997e; font-size:13px; }.summary-actions { display:flex; gap:10px; flex-wrap:wrap; }.paper-button { border:1px solid #927853; padding:12px 15px; color:#e8d9bd; background:transparent; font:11px/1 ui-monospace,SFMono-Regular,Menlo,monospace; letter-spacing:.08em; }.paper-button--primary { color:#281d12; background:#e1b471; }.workflow-file { position:absolute; right:0; bottom:75px; width:220px; padding:20px; border:1px solid var(--line); color:#e4d0ac; background:rgba(31,25,18,.75); }.workflow-file p { margin:0 0 18px; color:#d9aa66; font:10px/1 ui-monospace,SFMono-Regular,Menlo,monospace; letter-spacing:.14em; }.workflow-file strong { display:block; margin-bottom:8px; font:18px/1.2 Georgia,serif; }.workflow-file span { color:#9d8c72; font-size:12px; line-height:1.45; }.workflow-file a { display:inline-block; margin-top:14px; color:#e8b76b; font-size:12px; }
.reader { color:var(--ink); background:var(--paper); border-top:1px solid #b99d72; }.reader-head { display:grid; grid-template-columns:1fr auto 1fr; align-items:center; padding-bottom:19px; border-bottom:1px solid #ad9270; }.reader-head p { margin:0; font:12px/1 ui-monospace,SFMono-Regular,Menlo,monospace; letter-spacing:.16em; }.reader-head p span { color:#8c7659; }.back-button,.reader-export { min-height:31px; padding:0 10px; border:1px solid #725a3a; color:#352818; background:#f2e6cf; font:10px/1 ui-monospace,SFMono-Regular,Menlo,monospace; letter-spacing:.08em; }.reader-export { justify-self:end; color:#f6e9cf; background:#392819; }.reader-intro { padding:35px 0 24px; }.reader-intro h2 { color:var(--ink); font-size:48px; }.reader-intro p { max-width:720px; margin:13px 0 0; color:#665741; font-size:16px; }.review-list { border-top:1px solid #ae9672; }.review-item { border-bottom:1px solid #ae9672; }.review-trigger { width:100%; display:grid; grid-template-columns:70px 150px 1fr auto; align-items:center; gap:14px; padding:18px 0; border:0; color:#2b2015; background:transparent; text-align:left; }.review-trigger__number { font:28px/1 Georgia,serif; }.review-trigger__time,.review-trigger__state { color:#6e5d44; font:12px/1 ui-monospace,SFMono-Regular,Menlo,monospace; }.review-trigger__title { font-size:18px; }.review-detail { display:none; grid-template-columns:1.1fr 1.1fr .85fr; gap:22px; padding:3px 0 25px 234px; color:#514532; }.review-item.is-open .review-detail { display:grid; }.review-detail h3 { margin:0 0 8px; color:#806b4e; font:10px/1 ui-monospace,SFMono-Regular,Menlo,monospace; letter-spacing:.14em; }.review-detail p { margin:0; font-size:14px; line-height:1.45; }.subtitle-excerpt { min-height:60px; padding:11px; border-left:2px solid #9a805d; background:rgba(122,98,65,.09); }.review-buttons { display:flex; gap:8px; margin-top:14px; }.review-buttons button { border:1px solid #827055; padding:9px 10px; color:#30271d; background:transparent; font:11px/1 ui-monospace,SFMono-Regular,Menlo,monospace; }.audio-evidence audio { width:100%; height:30px; }.audio-evidence small { display:block; margin-top:9px; color:#6d604d; font-size:11px; }.evidence-section { display:grid; grid-template-columns:1.2fr .8fr; gap:18px; padding:28px 0 6px; }.evidence-card { padding:20px; border:1px solid #a38d6b; }.evidence-card h3 { margin:0 0 13px; font:19px/1.2 Georgia,serif; }.evidence-card p,.evidence-card ul { margin:0; color:#625641; font-size:13px; line-height:1.5; }.evidence-card ul { margin-top:10px; padding-left:18px; }.reader-foot { display:flex; justify-content:space-between; padding-top:28px; color:#564734; font:11px/1 ui-monospace,SFMono-Regular,Menlo,monospace; letter-spacing:.1em; }.toast { position:fixed; z-index:20; right:32px; bottom:28px; padding:11px 14px; border:1px solid #b78b50; color:#f3e4c7; background:#291d12; box-shadow:0 10px 28px rgba(0,0,0,.42); }
@media (max-width:1180px) { body { min-width:0; }.wrap { width:min(100% - 40px,1080px); }.hero { height:320px; }.intake-foot { grid-template-columns:1fr; }.nano-player { padding-left:0; border-left:0; }.analysis-control { justify-content:start; }.analysis-control p { text-align:left; }.workflow-file { position:static; width:auto; margin-top:28px; }.report-heading { padding-right:0; }.report-heading .source-tag { position:static; margin-top:14px; }.reader { width:100%; }.review-detail { padding-left:0; }.reader-intro h2 { font-size:42px; } }
@media (max-width:720px) { .masthead { height:58px; }.hero { height:360px; }.hero__content { padding-top:60px; }.hero h1 { font-size:48px; }.intake-grid,.evidence-section { grid-template-columns:1fr; }.input-module { border-right:0; border-bottom:1px solid var(--line); }.input-module:last-child { border-bottom:0; }.reader-head { grid-template-columns:1fr; gap:13px; }.reader-export { justify-self:start; }.review-trigger { grid-template-columns:47px 1fr auto; }.review-trigger__time { grid-column:2; }.review-trigger__title { grid-column:2; }.review-trigger__state { grid-column:3; grid-row:1 / span 2; }.review-detail { grid-template-columns:1fr; }.reader-foot { flex-direction:column; gap:15px; } }

/* Research-institute wayfinding: use small functional marks, never decorative emoji. */
.module-icon { display:block; width:20px; height:20px; margin-top:5px; color:#deb068; font:25px/20px Georgia,serif; }
.module-icon--svg { fill:none; stroke:currentColor; stroke-width:1.55; stroke-linecap:round; stroke-linejoin:round; }
.input-module strong { margin-top:10px; font-weight:600; }
.reader-intro h2 { color:var(--ink); font-size:46px; }
.review-trigger__number { font:600 25px/1 var(--sans-zh); }
.evidence-card h3 { font:600 18px/1.2 var(--sans-zh); }

/* Second act: evidence before recommendation. These charts only render measured SRT/PCM data. */
.signal-deck { margin:0 0 32px; padding:19px 0 25px; border-top:1px solid #ae9672; border-bottom:1px solid #ae9672; }
.signal-deck__head { display:flex; align-items:baseline; justify-content:space-between; margin-bottom:16px; }.signal-deck__head p { margin:0; color:#70593a; font:11px/1 ui-monospace,SFMono-Regular,Menlo,monospace; letter-spacing:.14em; }.signal-deck__head span { color:#85765f; font-size:12px; }
.signal-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }.signal-card { min-height:156px; padding:15px; border:1px solid #bca580; background:rgba(255,250,237,.32); }.signal-card__head { display:flex; justify-content:space-between; align-items:baseline; gap:12px; }.signal-card__head span { color:#735b3b; font:10px/1 ui-monospace,SFMono-Regular,Menlo,monospace; letter-spacing:.11em; }.signal-card__head strong { color:#2c2115; font:600 16px/1 var(--sans-zh); }.signal-card>p { margin:10px 0 0; color:#705f48; font-size:12px; line-height:1.45; }
.signal-timeline { position:relative; height:52px; margin-top:18px; overflow:hidden; border-top:1px solid #c3ac86; border-bottom:1px solid #c3ac86; background:repeating-linear-gradient(90deg,transparent 0,transparent calc(25% - 1px),rgba(105,79,47,.12) calc(25% - 1px),rgba(105,79,47,.12) 25%); }.signal-timeline:before { content:""; position:absolute; inset:50% 0 auto; border-top:1px solid #ab8b5d; }.signal-timeline__clip { position:absolute; top:17px; height:16px; min-width:4px; border:1px solid #6a4c2a; background:#d7ab68; box-shadow:0 0 0 1px rgba(255,245,222,.35) inset; }
.cadence-chart { height:71px; display:flex; align-items:flex-end; gap:3px; margin-top:9px; padding:0 2px; border-bottom:1px solid #bca580; background:linear-gradient(to top,rgba(119,88,48,.06),transparent); }.cadence-bar { flex:1; min-width:4px; background:linear-gradient(to top,#765331,#d8ad68); }.pause-chart { display:grid; gap:7px; margin-top:14px; }.pause-row { display:grid; grid-template-columns:58px 1fr 18px; gap:8px; align-items:center; color:#6d5a42; font-size:11px; }.pause-row i { display:block; height:7px; overflow:hidden; background:rgba(105,79,47,.14); }.pause-row b { display:block; height:100%; background:#bd8a49; }.pause-row em { font-style:normal; text-align:right; }.signal-empty { margin-top:20px!important; }.signal-card--wave svg { display:block; width:100%; height:70px; margin-top:8px; overflow:visible; fill:none; stroke:#9b6535; stroke-width:1; }.signal-card--wave .wave-baseline { stroke:#b59b75; stroke-width:.8; stroke-dasharray:3 3; }.signal-card--empty { display:flex; flex-direction:column; justify-content:space-between; background:rgba(116,91,55,.06); }
@media (max-width:720px) { .signal-grid { grid-template-columns:1fr; }.signal-deck__head { display:block; }.signal-deck__head span { display:block; margin-top:7px; } }

/* One primary timeline, then supporting metrics: leave visual breathing room. */
.reader-head { grid-template-columns:1fr auto; }
.signal-card--timeline,.signal-card--wave { grid-column:1 / -1; }
.signal-card--timeline { min-height:172px; }.signal-card--timeline .signal-timeline { height:70px; margin-top:22px; }.signal-card--timeline .signal-timeline__clip { top:25px; height:18px; }
.signal-card--wave { min-height:168px; }.signal-card--wave svg { height:82px; margin-top:12px; }

/* The dossier is a page, not a card trapped between dark gutters. */
.reader.wrap { width:100%; }
.reader { padding:58px clamp(36px,5vw,96px) 96px; border-top:0; }

/* Evidence should read like an annotated lab sheet, not a dashboard of tinted tiles. */
.method-note { max-width:940px; margin:16px 0 0!important; padding:10px 0 0 13px; border-left:2px solid #b78b50; color:#7a694f!important; font-size:12px!important; line-height:1.55!important; }
.signal-grid { gap:22px 30px; }.signal-card { min-height:0; padding:16px 0 10px; border:0; border-top:1px solid #bca580; background:transparent; }.signal-card--timeline { min-height:156px; }.signal-card--wave { min-height:150px; }.signal-card__head strong { font-size:15px; }
.signal-timeline { height:56px; margin-top:17px; background:repeating-linear-gradient(90deg,transparent 0,transparent calc(25% - 1px),rgba(105,79,47,.1) calc(25% - 1px),rgba(105,79,47,.1) 25%); }.signal-timeline__clip { top:22px; height:12px; border-color:#9b7140; background:rgba(207,157,88,.22); box-shadow:none; }
.cadence-chart { height:58px; justify-content:space-around; gap:0; margin-top:14px; padding:0 16px; background:repeating-linear-gradient(0deg,transparent 0,transparent 14px,rgba(105,79,47,.08) 14px,rgba(105,79,47,.08) 15px); }.cadence-bar { flex:0 0 3px; min-width:3px; background:#9b6b38; box-shadow:0 0 0 1px rgba(155,107,56,.08); }
.pause-chart { gap:9px; margin-top:18px; }.pause-row i { height:3px; background:rgba(105,79,47,.18); }.pause-row b { background:#a97740; }
.signal-card--wave svg { stroke:#a2713c; stroke-width:.8; }.signal-card--empty { background:transparent; }

/* Institute affiliation and the handoff to the open-source workflow. */
.masthead__brand { display:flex; align-items:center; gap:15px; }.institute-nav { display:flex; align-items:center; gap:8px; color:#c7b695; }.institute-nav__mark { width:27px; height:27px; object-fit:contain; filter:drop-shadow(0 2px 3px rgba(0,0,0,.35)); }.institute-nav span { display:grid; gap:2px; }.institute-nav b { font-size:11px; font-weight:600; letter-spacing:.06em; }.institute-nav small { color:#8f816b; font:7px/1 ui-monospace,SFMono-Regular,Menlo,monospace; letter-spacing:.08em; }.brand-divider { width:1px; height:24px; background:rgba(203,174,126,.35); }
.workflow-guide { display:grid; grid-template-columns:minmax(0,1.15fr) minmax(310px,.85fr) auto; gap:28px; align-items:end; margin-top:44px; padding:25px 0; border-top:1px solid #ad9270; border-bottom:1px solid #ad9270; }.workflow-guide__intro p { max-width:570px; margin:8px 0 0; color:#665741; font-size:13px; line-height:1.55; }.workflow-guide__intro>p:first-child { margin:0; color:#80603a; font:10px/1 ui-monospace,SFMono-Regular,Menlo,monospace; letter-spacing:.14em; }.workflow-guide h3 { margin:8px 0 0; font:600 22px/1.2 var(--sans-zh); }.workflow-steps { display:grid; gap:9px; margin:0; padding:0; list-style:none; }.workflow-steps li { display:grid; grid-template-columns:30px 1fr; gap:8px; align-items:baseline; color:#4c3a27; font-size:12px; line-height:1.35; }.workflow-steps span { color:#a47740; font:10px/1 ui-monospace,SFMono-Regular,Menlo,monospace; }.workflow-steps strong { font-weight:600; }.workflow-guide__link { padding:11px 13px; border:1px solid #725a3a; color:#f5e8ce; background:#392819; white-space:nowrap; font:10px/1 ui-monospace,SFMono-Regular,Menlo,monospace; letter-spacing:.08em; }
@media (max-width:920px) { .institute-nav small { display:none; }.workflow-preview,.workflow-guide { grid-template-columns:1fr; align-items:start; }.workflow-preview__link,.workflow-guide__link { justify-self:start; } }
