:root{--paper:oklch(97.5% .018 93);--paper-muted:oklch(86% .018 86);--ink:oklch(20% .029 240);--muted:oklch(45% .032 236);--line:oklch(78% .035 83);--line-strong:oklch(32% .03 238);--wash:oklch(93% .04 92);--celadon:oklch(86% .075 158);--vermilion:oklch(55% .18 34);--blue:oklch(43% .12 247);--sans:"Noto Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;--song:"Songti SC", "STSong", "SimSun", serif;color:var(--ink);background:linear-gradient(90deg, color-mix(in oklch, var(--line) 42%, transparent) 1px, transparent 1px) 0 0 / 44px 44px, var(--paper);font-family:var(--sans);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px;line-height:1.5}*{box-sizing:border-box}body{min-width:320px;margin:0}button,input{font-family:inherit}button:focus-visible,label:focus-within{outline:3px solid color-mix(in oklch, var(--blue), var(--paper) 25%);outline-offset:3px}::selection{background:var(--celadon);color:var(--ink)}.workspace{min-height:100svh;color:var(--ink);padding:clamp(20px,4vw,54px)}.masthead{grid-template-columns:auto minmax(0,1fr) auto;align-items:end;gap:clamp(18px,4vw,48px);padding-bottom:clamp(28px,6vw,72px);display:grid}.brand-mark{aspect-ratio:1;background:var(--ink);width:clamp(64px,9vw,112px);color:var(--paper);font-family:var(--song);place-items:center;font-size:clamp(30px,5vw,58px);font-weight:700;display:grid}.masthead-copy{max-width:920px}.kicker{color:var(--vermilion);margin:0 0 12px;font-size:.9rem;font-weight:800}h1,h2,h3,p{margin:0}h1{max-width:12ch;font-family:var(--song);font-size:clamp(3.2rem,9vw,8.6rem);font-weight:800;line-height:.94}h2{font-size:1.08rem;line-height:1.2}h3{font-size:.95rem;line-height:1.25}.status-strip{color:var(--muted);white-space:nowrap;flex-direction:column;align-items:flex-end;gap:10px;font-size:.82rem;display:flex}.status-strip span{border-bottom:1px solid var(--line-strong)}.flow{grid-template-columns:minmax(0,1.45fr) minmax(360px,.8fr);align-items:start;gap:clamp(24px,4vw,54px);display:grid}.left-rail,.right-rail{gap:28px;display:grid}.upload-band{border-block:2px solid var(--ink);grid-template-columns:minmax(0,1fr) minmax(220px,.42fr);min-height:190px;display:grid}.upload-target,.sample-target{cursor:pointer;align-content:center;gap:14px;transition:background .18s,color .18s;display:grid;position:relative}.upload-target{padding:clamp(28px,5vw,56px)}.sample-target{border-left:1px solid var(--line);background:var(--wash);padding:28px}.upload-target:hover,.sample-target:hover{background:var(--ink);color:var(--paper)}.upload-target input,.sample-target input{opacity:0;cursor:pointer;position:absolute;inset:0}.upload-target svg{width:34px;height:34px}.sample-target svg{width:26px;height:26px}.upload-title{overflow-wrap:anywhere;max-width:100%;font-family:var(--song);font-size:clamp(1.6rem,4vw,3.7rem);font-weight:750;line-height:1.02}.upload-meta,.sample-target span{color:currentColor;max-width:36ch;font-size:.92rem;line-height:1.5}.template-switcher{border:1px solid var(--line);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.template-choice{border:0;border-right:1px solid var(--line);min-height:112px;color:var(--ink);text-align:left;cursor:pointer;background:0 0;padding:18px}.template-choice:last-child{border-right:0}.template-choice span,.template-choice small{display:block}.template-choice span{margin-bottom:10px;font-weight:800}.template-choice small{color:var(--muted);font-size:.8rem;line-height:1.45}.template-choice.active{background:var(--celadon)}.rule-ledger{gap:18px;display:grid}.section-heading{color:var(--ink);align-items:center;gap:10px;display:flex}.section-heading svg{width:20px;height:20px;color:var(--vermilion)}.rule-list{border-top:1px solid var(--line);display:grid}.rule-row{border-bottom:1px solid var(--line);grid-template-columns:30px minmax(0,1fr);gap:16px;padding:20px 0;display:grid}.rule-row svg{width:22px;height:22px;color:var(--blue)}.rule-row p,.extractor p,.stage p{color:var(--muted);font-size:.9rem;line-height:1.55}.extractor{background:var(--ink);color:var(--paper);gap:18px;padding:24px;display:grid}.extractor .section-heading,.extractor .section-heading svg{color:var(--paper)}.extractor-grid{grid-template-columns:1fr .72fr;gap:22px;display:grid}.extractor p{color:var(--paper-muted)}.metric{font-family:var(--song);margin-bottom:8px;font-size:clamp(1.9rem,4vw,3.8rem);font-weight:800;line-height:1;display:block}.pipeline{border-block:1px solid var(--line);display:grid}.stage{border-bottom:1px solid var(--line);grid-template-columns:42px minmax(0,1fr);gap:16px;padding:18px 0;display:grid}.stage:last-child{border-bottom:0}.stage-index{background:var(--blue);width:30px;height:30px;color:var(--paper);place-items:center;font-weight:800;display:grid}.export-panel{grid-template-columns:1fr auto;gap:12px;display:grid}.task-message{color:var(--blue);margin-top:-10px;font-size:.9rem;line-height:1.5}.task-message.error{color:var(--vermilion)}button{font:inherit}.run-button,.download-button{border:1px solid var(--ink);cursor:pointer;justify-content:center;align-items:center;gap:10px;min-height:56px;padding:0 18px;display:inline-flex}.run-button{background:var(--vermilion);color:var(--paper);border-color:var(--vermilion);font-weight:850}.download-button{color:var(--ink);background:0 0}.run-button:disabled,.download-button:disabled{cursor:not-allowed;opacity:.42}.run-button svg,.download-button svg{width:20px;height:20px}.spin{animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (width<=980px){.masthead,.flow,.upload-band,.template-switcher,.extractor-grid,.export-panel{grid-template-columns:1fr}.masthead{align-items:start}.status-strip{flex-flow:wrap;align-items:flex-start}.sample-target{border-left:0;border-top:1px solid var(--line)}}@media (width<=620px){.workspace{padding:18px}.brand-mark{width:58px}.upload-target,.sample-target,.extractor{padding:20px}.template-choice{min-height:auto}}
