@import"https://fonts.googleapis.com/css2?family=Outfit:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap";:root{--ink: #1b2838;--ink-soft: #526376;--accent: #0f766a;--accent-strong: #0b5f55;--accent-soft: rgba(15, 118, 106, .13);--surface: #ffffff;--surface-soft: #f7fafc;--panel-border: rgba(27, 40, 56, .14);--radius: 14px;--radius-sm: 10px;--shadow: 0 10px 30px rgba(16, 33, 53, .09)}*{box-sizing:border-box}body{margin:0;font-family:Outfit,sans-serif;color:var(--ink);background:radial-gradient(circle at 12% 0%,rgba(126,171,240,.3),transparent 32%),radial-gradient(circle at 88% 16%,rgba(166,220,189,.3),transparent 30%),linear-gradient(165deg,#f4f8fb,#edf3f7 48%,#f7f8f4)}.appRoot{width:min(1120px,calc(100% - 1.5rem));margin:1rem auto 2rem;display:grid;gap:.8rem}.hero{border-radius:var(--radius);padding:1.05rem 1.15rem;background:linear-gradient(115deg,#0f766a29,#2766bd24);border:1px solid var(--panel-border);box-shadow:var(--shadow)}.hero h1{margin:0;font-size:clamp(1.3rem,1.15rem + 1vw,1.85rem);letter-spacing:.01em}.hero p{margin:.4rem 0 0;color:#2e4258;max-width:76ch}.metaRow{margin-top:.7rem;display:flex;flex-wrap:wrap;gap:.45rem}.metricPill{border:1px solid rgba(15,118,106,.28);border-radius:999px;padding:.22rem .56rem;font-size:.8rem;font-weight:600;background:#ffffffc7}.toolbar{display:grid;gap:.5rem;border-radius:var(--radius);border:1px solid var(--panel-border);background:#ffffffbd;padding:.7rem}.toolbarLabel{font-size:.73rem;letter-spacing:.08em;text-transform:uppercase;font-weight:700;color:#3f4f61}.toolbarHint{margin:-.1rem 0 0;color:var(--ink-soft);font-size:.84rem}.toolbarRow{display:flex;flex-wrap:wrap;gap:.45rem}.toolbarField{display:grid;gap:.22rem;min-width:min(440px,100%);font-size:.82rem;font-weight:600;color:#415365}.toolbarField select{width:100%;border:1px solid rgba(27,40,56,.2);border-radius:8px;padding:.45rem .54rem;background:#fff;font-family:Outfit,sans-serif;font-size:.9rem}.toolbarField select:focus{border-color:#0f766a70;outline:none;box-shadow:0 0 0 3px #0f766a1f}button,.fileButton{border:1px solid rgba(27,40,56,.2);background:var(--surface);color:var(--ink);font:inherit;font-weight:600;border-radius:var(--radius-sm);padding:.46rem .72rem;cursor:pointer;transition:background-color .12s ease,border-color .12s ease,transform .12s ease,box-shadow .12s ease}button:hover,.fileButton:hover{border-color:#0f766a7a;transform:translateY(-1px)}button:disabled{opacity:.58;cursor:wait;transform:none}button:focus-visible,.fileButton:focus-within{outline:2px solid rgba(15,118,106,.34);outline-offset:1px}.btnPrimary{background:linear-gradient(180deg,#0f766a,#0b655a);border-color:#0c5f54;color:#f7fffd;box-shadow:0 6px 16px #0f766a4d}.btnPrimary:hover{border-color:#09554b;background:linear-gradient(180deg,#0f7f72,#0b685d)}.btnGhost{background:#0f766a12;border-color:#0f766a5c;color:var(--accent-strong)}.btnMuted{background:var(--surface-soft);border-color:#1b28382e}.fileButton{position:relative;overflow:hidden;display:inline-flex;align-items:center;justify-content:center}.fileButtonAlt{background:#f8fbfd;border-style:dashed;border-color:#1b283847}.fileButton input{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer}.statusBar{display:flex;align-items:center;gap:.55rem;border-radius:var(--radius-sm);border:1px solid var(--panel-border);background:#ffffffd1;padding:.52rem .72rem}.statusBadge{border-radius:999px;padding:.17rem .5rem;font-size:.76rem;font-weight:700;letter-spacing:.02em}.statusReady{background:#0b985f24;color:#086846}.statusBusy{background:#d97c0c26;color:#945000}.statusText{flex:1}.statusInfoButton{width:1.55rem;height:1.55rem;border-radius:999px;border:1px solid rgba(27,40,56,.25);background:#ffffffe6;color:#1f3a58;font-weight:700;font-size:.85rem;line-height:1;display:inline-flex;align-items:center;justify-content:center;padding:0}.statusInfoPanel{border-radius:var(--radius-sm);border:1px solid rgba(27,40,56,.18);background:#ffffffe0;padding:.58rem .72rem;display:grid;gap:.35rem}.statusInfoPanel p{margin:0;font-size:.86rem;color:#33485f}.statusInfoList{margin:0;padding-left:1rem;display:grid;gap:.18rem;font-size:.82rem;color:#445b73}.tabs{display:flex;flex-wrap:wrap;gap:.35rem;border-radius:var(--radius-sm);padding:.28rem;border:1px solid var(--panel-border);background:#ffffffad}.tabButton{background:transparent;border-color:transparent}.tabActive{background:#fff;border-color:#0f766a5c;color:var(--accent-strong);box-shadow:0 4px 12px #122a4414}.panelGrid{display:grid;gap:.75rem;grid-template-columns:repeat(12,minmax(0,1fr))}.panel{grid-column:span 4;background:#ffffffe6;border:1px solid var(--panel-border);border-radius:var(--radius);padding:.8rem;display:grid;gap:.55rem;align-content:start;box-shadow:var(--shadow)}.panelTall{grid-column:span 5}.panelWide{grid-column:span 7}.panelFull{grid-column:span 12}.panel h2{margin:0;font-size:1rem;padding-bottom:.45rem;border-bottom:1px solid rgba(27,40,56,.1)}.panel label{display:grid;gap:.24rem;font-size:.82rem;font-weight:600;color:#415365}.panel input,.panel select,.panel textarea{width:100%;border:1px solid rgba(27,40,56,.2);border-radius:8px;padding:.45rem .54rem;background:#fff}.panel input,.panel select{font-family:Outfit,sans-serif;font-size:.92rem}.panel textarea{font-family:JetBrains Mono,monospace;font-size:.83rem;min-height:340px;resize:vertical}.panel input:focus,.panel select:focus,.panel textarea:focus{border-color:#0f766a70;outline:none;box-shadow:0 0 0 3px #0f766a1f}.gridTwo{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.48rem}.parameterGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.48rem}.parameterField{display:grid;gap:.24rem}.parameterField small{color:#5c6d80;font-size:.74rem}.buttonRow{display:flex;flex-wrap:wrap;gap:.4rem}.buttonRow button{flex:1 1 190px}.hint{margin:0;font-size:.82rem;color:var(--ink-soft)}.plotSvg{width:100%;border:1px solid rgba(27,40,56,.16);border-radius:var(--radius-sm);background:#fff}.plotLabel{font-family:JetBrains Mono,monospace;font-size:10px;fill:#2b3d52}.plotMetaLabel{font-family:JetBrains Mono,monospace;font-size:9px;fill:#57708a}.bifPointLabel{font-family:JetBrains Mono,monospace;font-size:9px;fill:#31485f}.panelEmpty{border:1px dashed rgba(27,40,56,.27);border-radius:var(--radius-sm);padding:.58rem;background:#ffffffc7;color:#33475d}.panelEmptyDetailed{display:grid;gap:.36rem}.panelEmptyDetailed p{margin:0}.diagnosticListCompact{margin:0;padding-left:1rem;display:grid;gap:.22rem;font-size:.83rem}.simpleDetails{border:1px solid rgba(27,40,56,.14);border-radius:var(--radius-sm);padding:.34rem .48rem;background:#ffffffa3}.simpleDetails>summary{cursor:pointer;font-weight:600;color:#42586f;list-style:none}.simpleDetails>summary::-webkit-details-marker{display:none}.simpleDetails[open]>summary{margin-bottom:.44rem}.axisControls{display:grid;gap:.45rem}.inlineCheck{display:inline-flex;align-items:center;gap:.4rem;font-size:.86rem;color:#33475d}.axisSummary{margin:0;font-size:.8rem;color:#4e6278}.axisControls input:disabled{background:#eef3f7;color:#8392a2;border-color:#1b283824}.legend{display:flex;flex-wrap:wrap;gap:.75rem}.legendItem{display:inline-flex;align-items:center;gap:.34rem;font-size:.85rem;color:#37485a}.dot{width:11px;height:11px;border-radius:999px;display:inline-block}.dot.lp{background:#d58b18}.dot.hb{background:#b43f24}.dot.bif{background:#0f766a}.dot.ep{background:#265bba}.dot.un{background:#7a818d}.dot.fi{background:#1d8b31}.inspector{border:1px dashed rgba(27,40,56,.25);border-radius:var(--radius-sm);padding:.52rem;display:grid;gap:.2rem;background:#ffffffbd}.pointList{display:grid;gap:.35rem;max-height:220px;overflow:auto;padding-right:.2rem}.pointList button{width:100%;text-align:left}.pointButtonActive{border-color:#0f766a8c}.buttonCol{display:grid;gap:.42rem}.buttonCol button{width:100%;text-align:left}.diagnosticList{margin:0;padding-left:1rem;display:grid;gap:.3rem;font-size:.86rem}@media (max-width: 980px){.panel,.panelTall,.panelWide{grid-column:span 12}.gridTwo{grid-template-columns:1fr}}@media (max-width: 760px){.appRoot{width:calc(100% - 1rem);margin-top:.65rem}.tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.toolbarRow{flex-direction:column}.toolbarRow button,.toolbarRow .fileButton,.toolbarField{width:100%}.buttonRow button{flex:1 1 100%}}
