/* build: v108_spa_bundle_cn */
    :root {
      --ink:#16202a; --muted:#607080; --line:#d4e0ea; --panel:#f8fafc;
      --accent:#075985; --accent2:#0f766e; --good:#1f7a4d; --warn:#9a6500; --bad:#b42318;
    }
    *{box-sizing:border-box}
    body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Microsoft YaHei",Arial,sans-serif;color:var(--ink);line-height:1.55;background:#f3f7fb}
    header{padding:28px 5vw 22px;border-bottom:1px solid var(--line);background:#fff}
    main{max-width:1320px;margin:0 auto;padding:22px 20px 56px}
    h1{margin:0 0 8px;font-size:27px;line-height:1.25;color:#063f5f}
    h2{margin:24px 0 12px;font-size:19px;color:#123044}
    h3{margin:18px 0 8px;color:var(--accent);font-size:16px}
    p{margin:8px 0}.subtitle{max-width:960px;color:var(--muted)}
    .grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;margin:14px 0}
    .card{border:1px solid var(--line);border-radius:6px;background:#fff;padding:13px 14px;box-shadow:0 1px 2px rgba(15,23,42,.04)}
    label{display:block;font-weight:650;margin-bottom:5px;color:#31485a;font-size:13px}
    input,select{width:100%;height:36px;padding:7px 9px;border:1px solid #c7d5e2;border-radius:5px;background:#fff}
    button{border:1px solid var(--accent);border-radius:5px;background:var(--accent);color:#fff;padding:9px 13px;font-weight:650;cursor:pointer}
    button.secondary{background:#fff;color:var(--accent)}button:disabled{opacity:.55;cursor:not-allowed}
    .export-legacy{display:none!important}
    .actions{display:flex;flex-wrap:wrap;gap:10px;margin:12px 0}
    .status{margin:12px 0;padding:10px 12px;border-left:4px solid var(--accent);background:#eef8fb}
    .status.warn{border-left-color:var(--warn);background:#fff8e8}.status.bad{border-left-color:var(--bad);background:#fff1f0}
    .progress{display:none;margin:-4px 0 12px;height:12px;border:1px solid #b9cfe0;border-radius:999px;background:#e8f1f7;overflow:hidden}
    .progress.show{display:block}
    .progress span{display:block;height:100%;width:0;background:linear-gradient(90deg,#0ea5e9,#10b981);transition:width .18s ease}
    table{width:100%;border-collapse:collapse;margin:12px 0 18px;font-size:14px}
    th,td{border:1px solid var(--line);padding:7px 9px;text-align:left;vertical-align:top}
    th{background:#eef3f7;font-weight:650}code,pre{font-family:Consolas,"SFMono-Regular",Menlo,monospace}
    pre{overflow:auto;max-height:320px;padding:12px;border-radius:8px;border:1px solid var(--line);background:#f4f7fa;white-space:pre-wrap}
    .metric{border:1px solid var(--line);border-radius:6px;padding:12px;background:#fff;min-height:76px;box-shadow:0 1px 2px rgba(15,23,42,.04)}
    .metric b{display:block;font-size:13px;color:var(--muted)}.metric span{font-size:21px;font-weight:700;color:var(--accent)}
    .configGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:10px;margin:12px 0 18px}
    .configCard{border:1px solid var(--line);border-radius:6px;background:#fff;padding:11px 12px;box-shadow:0 1px 2px rgba(15,23,42,.04)}
    .configCard b{display:block;color:var(--accent);font-size:14px;margin-bottom:6px}
    .configCard dl{display:grid;grid-template-columns:minmax(110px,45%) 1fr;gap:4px 10px;margin:0;font-size:13px}
    .configCard dt{color:var(--muted)}
    .configCard dd{margin:0;color:#102a3b;font-weight:600;word-break:break-word}
    #configWrap[hidden]{display:none!important}
    .note{border-left:4px solid var(--warn);background:#fff8e8;padding:10px 14px;margin:14px 0}
    .ok{color:var(--good);font-weight:650}.badtext{color:var(--bad);font-weight:650}
    .chartGrid{display:grid;grid-template-columns:1fr;gap:14px;margin:14px 0}
    .chartBox{border:1px solid var(--line);border-radius:6px;background:#fff;padding:12px;min-height:360px;box-shadow:0 1px 2px rgba(15,23,42,.04)}
    .chartBox h4{margin:0 0 8px;font-size:15px;color:var(--accent)}
    canvas{width:100%;height:300px;display:block;cursor:grab}
    .plotNav{height:24px;margin:6px 8px 0;border:1px solid #cbd5e1;border-radius:5px;background:#eef4f8;position:relative}
    .plotNav .window{position:absolute;top:3px;bottom:3px;border-radius:4px;background:#0ea5e9;border:1px solid #0284c7;box-shadow:0 1px 2px rgba(2,132,199,.2);cursor:grab}
    .plotNav .window:active{cursor:grabbing}
    .plotNav .hint{position:absolute;right:8px;top:3px;color:#64748b;font-size:12px;pointer-events:none}
    .wideChart{border:1px solid var(--line);border-radius:6px;background:#fff;padding:12px;margin:14px 0;box-shadow:0 1px 2px rgba(15,23,42,.04)}
    .wideChart canvas{height:520px}
    #spectrogramChart{height:440px}
    .diagramGrid{display:grid;grid-template-columns:1fr;gap:14px;margin:14px 0}
    .diagramGrid .wideChart{margin:0}
    .diagramGrid canvas{height:360px}
    .wideChart h4{margin:0 0 8px;color:var(--accent);font-size:15px}
    .detailGrid{display:grid;grid-template-columns:minmax(0,1fr) minmax(380px,430px);gap:14px;margin:14px 0;align-items:stretch}
    .detailGrid .wideChart{margin:0}
    .detailTools{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:8px 0 12px}
    .detailTools input[type=range]{flex:1;min-width:240px}
    .miniCanvas{height:300px}
    .scrollTable{max-height:520px;overflow:auto;border:1px solid var(--line);border-radius:8px}
    .exportLegacy,.export-legacy{display:none!important}
    .exportPanel{display:none;margin:10px 0 14px;border:1px solid var(--line);border-radius:6px;background:#fff;padding:12px;box-shadow:0 1px 2px rgba(15,23,42,.04)}
    .exportPanel.show{display:block}
    .exportPanel .checks{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:8px 14px;margin:8px 0 12px}
    .exportPanel label{display:flex;align-items:center;gap:8px;margin:0;font-weight:600}
    .exportPanel input[type=checkbox]{width:auto;height:auto}
    .viewControls{border:1px solid var(--line);border-radius:6px;background:#fff;padding:10px 12px;margin:10px 0 14px;display:flex;flex-wrap:wrap;gap:9px 16px;align-items:center;box-shadow:0 1px 2px rgba(15,23,42,.04)}
    .viewControls b{color:var(--accent);margin-right:4px}
    .viewControls label{display:flex;align-items:center;gap:6px;margin:0;font-weight:650;color:#31485a}
    .viewControls input[type=checkbox]{width:auto;height:auto}
    .spectralPanel[hidden], .lineGroup[hidden]{display:none!important}
    .modeTabs{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:10px 0 4px}
    .modeTabs label{margin:0}.modeTabs select{max-width:220px}
    .modeHidden,.waveSetting.modeHidden,.currentSetting.modeHidden{display:none!important}
    body.preInit .waveSetting,body.preInit .currentSetting,body.preInit .waveModeOnly,body.preInit .currentModeOnly{visibility:hidden}
    .waveSetting.waveCollapsed{display:none!important}
    .waveModeOnly.modeHidden,.currentModeOnly.modeHidden{display:none!important}
    .waveSettingsPanel{display:none;border:1px solid var(--line);border-radius:6px;background:#f8fbfd;padding:12px;margin:10px 0 14px}
    .waveSettingsPanel.show{display:grid}
    .waveSettingsPanel::before{content:"波浪参数设置";grid-column:1/-1;color:var(--accent);font-weight:750;font-size:15px;margin-bottom:2px}
    .workflowIntro{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:12px 0 16px}
    .workflowIntro .step{border:1px solid var(--line);border-radius:6px;background:#fff;padding:11px 12px;box-shadow:0 1px 2px rgba(15,23,42,.04)}
    .workflowIntro b{display:block;color:var(--accent);font-size:14px;margin-bottom:4px}
    .workflowIntro span{color:var(--muted);font-size:13px}
    @media(max-width:760px){
      header{padding:18px 14px}main{padding:12px 10px 36px}h1{font-size:22px}.subtitle{font-size:13px}
      .grid,.workflowIntro{grid-template-columns:1fr;gap:9px}.card{padding:10px}.actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}
      button{min-height:38px;padding:8px 10px}.actions button{width:100%}
      .wideChart,.chartBox{padding:8px;margin:10px 0}.wideChart canvas,#spectrogramChart{height:330px}.diagramGrid canvas{height:300px}
      .detailGrid{grid-template-columns:1fr}.viewControls{gap:8px}.plotNav .hint{display:none}
    }