:root{--canvas:#f4f6fb;--surface:#fff;--ink:#0f172a;--muted:#607188;--track-ink:#475569;--accent:#2563eb;--accent-strong:#1d4ed8;--accent-soft:#eef4ff;--success:#059669;--success-ink:#065f46;--success-pale:#ecfdf5;--amber:#b45309;--amber-ink:#78350f;--amber-pale:#fffbeb;--danger:#dc2626;--danger-ink:#7f1d1d;--danger-pale:#fef2f2;--line:#e6eaf2;--line-strong:#d4dbe7;--body:"PingFang SC", "Microsoft YaHei", system-ui, sans-serif;--mono:SFMono-Regular, "Cascadia Mono", Consolas, monospace;--radius:12px;--radius-small:9px;--shadow:0 1px 2px #0f172a0d, 0 8px 24px #0f172a0f;color:var(--ink);font-family:var(--body);font-synthesis:none;background:var(--canvas)}*{box-sizing:border-box}[hidden]{display:none!important}body{background:var(--canvas);min-width:320px;min-height:100vh;color:var(--ink);margin:0}button,input{font:inherit}button{color:inherit}.app-shell{width:min(1160px,100% - 48px);margin:0 auto;padding:36px 0 52px}.masthead{margin-bottom:24px}.eyebrow{align-items:center;gap:12px;display:flex}.local-badge{border:1px solid var(--line);background:var(--surface);min-height:28px;color:var(--muted);border-radius:999px;align-items:center;gap:7px;padding:4px 11px;font-size:.75rem;font-weight:650;display:inline-flex}.local-badge span{background:var(--success);width:7px;height:7px;box-shadow:0 0 0 3px var(--success-pale);border-radius:50%}.privacy-note{color:var(--muted);margin:0;font-size:.78rem}h1{letter-spacing:-.035em;margin:15px 0 7px;font-size:clamp(2rem,3.4vw,2.75rem);font-weight:800;line-height:1.08}h1 span{color:var(--accent);white-space:nowrap;font-weight:750}.lede{max-width:720px;color:var(--muted);margin:0;font-size:.95rem;line-height:1.7}.workflow-track{grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:20px;display:grid}.track-step{border:1px solid var(--line);border-radius:var(--radius-small);background:var(--surface);min-height:58px;color:var(--track-ink);grid-template-columns:28px minmax(0,1fr);align-items:center;gap:11px;padding:10px 14px;transition:border-color .16s,background-color .16s,box-shadow .16s;display:grid}.track-step>span{background:var(--canvas);width:28px;height:28px;color:var(--muted);font:700 .72rem var(--mono);border-radius:50%;place-items:center;display:grid}.track-step strong{color:var(--ink);font-size:.86rem;line-height:1.3;display:block}.track-step small{color:var(--muted);margin-top:3px;font-size:.75rem;line-height:1.25;display:block}[data-state=booting] .track-step[data-step=select],[data-state=idle] .track-step[data-step=select],[data-state=prechecking] .track-step[data-step=check],[data-state=ready] .track-step[data-step=check],[data-state=running] .track-step[data-step=build]{border-color:var(--accent);background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent)}[data-state=booting] .track-step[data-step=select]>span,[data-state=idle] .track-step[data-step=select]>span,[data-state=prechecking] .track-step[data-step=check]>span,[data-state=ready] .track-step[data-step=check]>span,[data-state=running] .track-step[data-step=build]>span{background:var(--accent);color:#fff}[data-state=prechecking] .track-step[data-step=select]>span,[data-state=ready] .track-step[data-step=select]>span,[data-state=blocked] .track-step[data-step=select]>span,[data-state=running] .track-step[data-step=select]>span,[data-state=running] .track-step[data-step=check]>span{background:var(--success);color:#fff}[data-state=blocked] .track-step[data-step=check]{border-color:var(--danger);background:var(--danger-pale);box-shadow:inset 0 0 0 1px var(--danger)}[data-state=blocked] .track-step[data-step=check]>span{background:var(--danger);color:#fff}[data-state=complete] .track-step{background:#f4fbf8;border-color:#b8ded3}[data-state=complete] .track-step>span{background:var(--success);color:#fff}.workspace{grid-template-columns:minmax(0,1.06fr) minmax(360px,.94fr);align-items:stretch;gap:20px;display:grid}.operation-pane,.inspection-pane{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);min-width:0;box-shadow:var(--shadow);padding:26px}.section-heading{margin-bottom:20px}.section-heading h2{letter-spacing:-.01em;margin:0;font-size:1.14rem;line-height:1.35}.section-index{color:var(--accent);letter-spacing:.1em;margin:0 0 5px;font-size:.75rem;font-weight:750}.dropzone{border:1.5px dashed var(--line-strong);border-radius:var(--radius-small);background:#f8faff;outline:none;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:16px;min-height:108px;padding:20px;transition:border-color .16s,background-color .16s;display:grid}.dropzone[data-dragging=true]{border-color:var(--accent);background:var(--accent-soft)}.dropzone[aria-disabled=true]{opacity:.65;cursor:wait}.dropzone strong{margin-bottom:5px;font-size:.94rem;display:block}.dropzone p{color:var(--muted);margin:0;font-size:.8rem;line-height:1.55}.file-mark{border:1px solid var(--accent-strong);background:linear-gradient(180deg, #3b82f6, var(--accent-strong));color:#fff;width:50px;height:60px;font:700 .62rem var(--mono);letter-spacing:.06em;border-radius:8px;place-items:center;display:grid;box-shadow:0 5px 12px #2563eb47}.button{border:1px solid var(--line-strong);border-radius:var(--radius-small);cursor:pointer;background:#fff;min-height:43px;padding:0 16px;font-size:.86rem;font-weight:650;transition:background-color .14s,border-color .14s,transform .14s,box-shadow .14s}.button:focus-visible,.dropzone:focus-visible{outline-offset:3px;outline:3px solid #2563eb47}.button:disabled{cursor:not-allowed;opacity:.46}.button-primary{border-color:var(--accent);background:var(--accent);color:#fff;width:100%;box-shadow:0 5px 14px #2563eb47}.button-primary:hover:not(:disabled){border-color:var(--accent-strong);background:var(--accent-strong)}.button-secondary{background:#fff}@media (hover:hover){.button:hover:not(:disabled){border-color:var(--accent-strong);transform:translateY(-1px)}}.selected-file{border-bottom:1px solid var(--line);justify-content:space-between;align-items:end;gap:16px;min-height:72px;margin-bottom:18px;padding:15px 2px;display:flex}.selected-file>div{min-width:0}.selected-file strong{text-overflow:ellipsis;white-space:nowrap;max-width:380px;margin-top:5px;font-size:.88rem;display:block;overflow:hidden}.field-label{color:var(--muted);font-size:.75rem}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:.78rem}.run-status{border-radius:var(--radius-small);background:var(--accent-soft);min-height:58px;color:var(--accent-strong);border:1px solid #bfd2ee;align-items:center;gap:12px;margin-bottom:16px;padding:12px 16px;display:none}.run-status strong,.run-status span{display:block}.run-status strong{font-size:.86rem}.status-pulse{background:var(--accent);border-radius:50%;flex:none;width:10px;height:10px;animation:1.2s ease-in-out infinite pulse}[data-state=running] .run-status{display:flex}.complete-actions,.recovery-action{display:none}[data-state=complete] .complete-actions{display:block}[data-state=complete] #generate{display:none}[data-state=runtime-error] .recovery-action{width:100%;display:block}.complete-actions{padding-top:2px}.complete-actions p{color:var(--muted);margin:0 0 14px;font-size:.8rem}.complete-actions p strong{color:var(--ink)}.button-row{grid-template-columns:1fr 1fr;gap:12px;display:grid}.button-row .button{width:100%}.status-banner{border:1px solid var(--line);border-radius:var(--radius-small);background:#f8faff;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:13px;min-height:94px;padding:15px;display:grid}.status-symbol{width:26px;height:26px;color:var(--muted);background:#e5ebf3;border-radius:50%;place-items:center;font-size:.8rem;font-weight:800;display:grid}.status-symbol:before{content:"i"}.status-copy{min-width:0}.status-copy>strong{font-size:.88rem;line-height:1.5;display:block}.status-copy p{color:var(--track-ink);margin:5px 0 0;font-size:.78rem;line-height:1.55}.period-stamp{border-left:1px solid var(--line-strong);min-width:138px;padding-left:15px}.period-stamp span{color:var(--muted);font-size:.72rem;display:block}.period-stamp strong{color:var(--accent);margin-top:7px;font-size:1.06rem;font-weight:750;display:block}[data-state=booting] .status-symbol,[data-state=prechecking] .status-symbol,[data-state=running] .status-symbol{background:var(--accent);color:#fff;animation:1.2s ease-in-out infinite pulse}[data-state=booting] .status-symbol:before,[data-state=prechecking] .status-symbol:before,[data-state=running] .status-symbol:before{content:"";background:#fff;border-radius:50%;width:8px;height:8px}[data-state=ready] .status-banner,[data-state=complete] .status-banner{background:var(--success-pale);border-color:#a8d7c9}[data-state=ready] .status-symbol,[data-state=complete] .status-symbol{background:var(--success);color:#fff}[data-state=ready] .status-symbol:before,[data-state=complete] .status-symbol:before{content:"✓"}[data-state=ready] .status-copy>strong,[data-state=complete] .status-copy>strong{color:var(--success-ink)}[data-state=ready] .status-copy p,[data-state=complete] .status-copy p{color:#0b6851}[data-state=ready] .period-stamp,[data-state=complete] .period-stamp{border-left-color:#a8d7c9}[data-state=ready] .period-stamp strong,[data-state=complete] .period-stamp strong{color:var(--success-ink)}[data-state=blocked] .status-banner,[data-state=runtime-error] .status-banner{background:var(--danger-pale);border-color:#efbdc3}[data-state=blocked] .status-symbol,[data-state=runtime-error] .status-symbol{background:var(--danger);color:#fff;border-radius:7px}[data-state=blocked] .status-symbol:before,[data-state=runtime-error] .status-symbol:before{content:"!"}[data-state=blocked] .status-copy>strong,[data-state=runtime-error] .status-copy>strong,[data-state=blocked] .status-copy p,[data-state=runtime-error] .status-copy p{color:var(--danger-ink)}[data-state=blocked] .period-stamp,[data-state=runtime-error] .period-stamp{border-left-color:#efbdc3}body[data-download=failed] .status-banner{background:var(--amber-pale);border-color:#e2c48d}body[data-download=failed] .status-symbol{background:var(--amber);color:#fff;border-radius:7px}body[data-download=failed] .status-symbol:before{content:"!"}body[data-download=failed] .status-copy>strong,body[data-download=failed] .status-copy p{color:var(--amber-ink)}.summary-grid{grid-template-columns:repeat(2,1fr);gap:10px;margin:18px 0 0;display:grid}.summary-grid div{border:1px solid var(--line);border-radius:var(--radius-small);background:#fbfcfe;min-height:72px;padding:12px 14px}.summary-grid dt{color:var(--muted);font-size:.75rem}.summary-grid dd{color:var(--ink);margin:7px 0 0;font-size:1.14rem;font-weight:750}.message-group{margin-top:14px}.message-group h3{align-items:center;gap:7px;margin:0 0 7px;font-size:.76rem;display:flex}.message-group h3 span{color:#fff;width:18px;height:18px;font:700 .64rem var(--mono);border-radius:5px;place-items:center;display:grid}.message-group ul{border-radius:var(--radius-small);margin:0;padding:11px 14px 11px 33px;font-size:.78rem;line-height:1.7}.blockers h3{color:var(--danger-ink)}.blockers h3 span{background:var(--danger)}.blockers ul{background:var(--danger-pale);color:#7f1d1d}.warnings h3{color:var(--amber-ink)}.warnings h3 span{background:var(--amber)}.warnings ul{background:var(--amber-pale);color:var(--amber-ink)}.runtime-stamp{border-top:1px solid var(--line);color:var(--muted);justify-content:space-between;gap:12px;margin-top:20px;padding-top:13px;font-size:.75rem;display:flex}.runtime-stamp code{font-family:var(--mono)}.visually-hidden{clip:rect(0, 0, 0, 0)!important;white-space:nowrap!important;border:0!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;position:absolute!important;overflow:hidden!important}@keyframes pulse{50%{opacity:.4;transform:scale(.78)}}@media (width<=860px){.app-shell{width:min(100% - 36px,700px)}.workspace{grid-template-columns:1fr}}@media (width<=620px){.app-shell{width:min(100% - 28px,560px);padding:26px 0 36px}.eyebrow{flex-direction:column;align-items:flex-start;gap:7px}h1{margin-top:16px;font-size:2rem}h1 span{margin-top:4px;display:block}.workflow-track{gap:6px}.track-step{grid-template-columns:24px minmax(0,1fr);gap:6px;min-height:50px;padding:8px}.track-step>span{width:24px;height:24px;font-size:.65rem}.track-step strong{font-size:.72rem}.track-step small{display:none}.operation-pane,.inspection-pane{padding:22px 18px}.dropzone{grid-template-columns:auto minmax(0,1fr);padding:18px 15px}.dropzone .button{grid-column:1/-1;width:100%}.selected-file{flex-direction:column;align-items:start}.selected-file strong{max-width:calc(100vw - 72px)}.status-banner{grid-template-columns:28px minmax(0,1fr)}.period-stamp{border-top:1px solid var(--line-strong);border-left:0;grid-column:2;min-width:0;padding:12px 0 0}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
