:root{--yellow:#eab308;--yellow-soft:#fef9c3;--yellow-mid:#fde047;--ink:#171717;--muted:#5c5c5c;--paper:#fffbeb;--card:#fff;--line:#e5e0c8;--danger:#b91c1c;--shadow:0 1px 3px #17171714;--radius:8px;font-family:system-ui,-apple-system,Segoe UI,sans-serif}*,:before,:after{box-sizing:border-box}body{background:var(--paper);color:var(--ink);margin:0;line-height:1.45}.is-hidden{display:none!important}.app{margin:0 auto;padding:1.5rem 1.25rem 2.5rem}.app-header{border-bottom:2px solid var(--yellow);justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.5rem;padding-bottom:1rem;display:flex}.brand{align-items:center;gap:1rem;display:flex}.kvl-logo{color:var(--ink);flex-shrink:0;align-items:center;font-size:22px;font-weight:800;display:inline-flex}.kvl-logo span{background-color:var(--yellow);color:var(--ink);letter-spacing:1px;border-radius:3px;margin-left:8px;padding:3px 6px;font-size:11px;font-weight:700}.app-header h1{color:var(--muted);margin:0;font-size:1.15rem;font-weight:700}.btn-help{border:1px solid var(--yellow);background:var(--card);width:32px;height:32px;color:var(--ink);cursor:pointer;box-shadow:var(--shadow);border-radius:50%;font-size:1.1rem;font-weight:800;line-height:1}.btn-help:hover{background:var(--yellow)}.card,.theory,.results-card,.alert-warn{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.theory{margin-bottom:1.25rem}.theory summary{cursor:pointer;color:var(--muted);box-shadow:var(--shadow);padding:.6rem 1rem;font-weight:700;list-style:none}.theory summary::-webkit-details-marker{display:none}.theory summary:before{content:"❯";margin-right:.5rem;transition:transform .1s;display:inline-block}details.theory[open] summary:before{transform:rotate(90deg)}.theory-body{padding:0 1rem 1rem}.schematic-wrap{text-align:center;margin-top:1rem}.equation{text-align:center;color:var(--muted);background:var(--paper);border:1px solid var(--line);max-width:50%;box-shadow:var(--shadow);border-radius:6px;margin:.75rem auto;padding:.35rem .75rem;font-weight:600}.theory-copy{font-size:.9rem}.workspace{flex-direction:column;gap:1rem;display:flex}@media (width>=768px){.workspace{flex-direction:row;align-items:stretch}.sidebar-panel{flex-shrink:0;width:355px}}#calcForm{flex-direction:column;gap:.85rem;display:flex}.card{padding:.85rem}.card-title{color:var(--muted);border-bottom:1px solid var(--line);margin-bottom:.6rem;padding-bottom:.5rem;font-weight:700}.spec-grid{grid-template-columns:2.4fr 1fr 1fr 1fr 1fr;align-items:center;gap:.25rem;margin-bottom:.4rem;display:grid}.spec-head,.res-head{text-align:center;color:var(--ink);font-size:.8rem}.res-grid{grid-template-columns:2fr 5fr 3fr 2fr;align-items:center;gap:.25rem;margin-bottom:.5rem;display:grid}.field-label{color:var(--muted);text-align:right;padding-right:.25rem;font-size:.8rem;font-weight:700;line-height:1.15}.target-row{grid-template-columns:5fr 7fr;align-items:center;gap:.5rem;margin-bottom:.5rem;display:grid}a{align-items:center;gap:.5rem;margin-top:1rem;display:flex}.input,.select{border:1px solid var(--line);background:var(--card);width:100%;min-width:0;color:var(--ink);border-radius:4px;padding:.28rem .35rem;font-size:.85rem}.input:focus,.select:focus{outline:2px solid var(--yellow);outline-offset:0;border-color:var(--yellow)}.center{text-align:center}.end{text-align:right}.input-group{display:flex}.input-group .input{border-top-right-radius:0;border-bottom-right-radius:0}.addon{background:var(--yellow-soft);border:1px solid var(--line);color:var(--muted);border-left:0;border-radius:0 4px 4px 0;align-items:center;padding:0 .5rem;font-size:.8rem;display:flex}.sigma-hint{text-align:right;color:#a16207;margin-top:.15rem;font-size:.7rem}.card-actions{justify-content:flex-end;display:flex}.btn{cursor:pointer;background:var(--card);border:1px solid #0000;border-radius:4px;padding:.3rem .7rem;font-size:.85rem;font-weight:700}.btn-primary{background:var(--yellow);border-color:var(--yellow);color:var(--ink)}.btn-primary:hover{background:var(--yellow-mid)}.btn-danger{border-color:var(--danger);color:var(--danger);background:0 0}.btn-danger:hover{background:#fee2e2}.btn-ghost{border-color:var(--line);color:var(--muted)}.btn-ghost:disabled{opacity:.45;cursor:default}.btn-icon{cursor:pointer;color:var(--ink);vertical-align:middle;background:0 0;border:0;padding:.15rem}.results-col{flex-direction:column;flex:1;min-width:0;display:flex;position:relative}.loader{z-index:3;color:var(--muted);align-items:center;gap:.5rem;font-size:.85rem;font-weight:700;display:flex;position:absolute;top:.5rem;left:.5rem}.spinner{border:2px solid var(--line);border-top-color:var(--yellow);border-radius:50%;width:1rem;height:1rem;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.alert-warn{text-align:center;background:var(--yellow-soft);border-color:var(--yellow);padding:.85rem 1rem}.results-card{flex-direction:column;flex:1;min-height:12rem;display:flex}.results-toolbar{border-bottom:1px solid var(--line);color:var(--muted);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;padding:.5rem .75rem;font-size:.85rem;display:flex}.toolbar-right{align-items:center;gap:1rem;display:flex}.tradeoff{align-items:center;gap:.5rem;font-size:.8rem;font-weight:700;display:flex}.tradeoff input[type=range]{accent-color:var(--yellow);width:120px}.table-wrap{flex:1;overflow:auto}.results-table{border-collapse:collapse;text-align:center;width:100%;font-size:.8rem}.results-table thead{background:var(--yellow-soft);position:sticky;top:0}.results-table th{white-space:nowrap;cursor:pointer;padding:.45rem .35rem;font-weight:700}.results-table td{vertical-align:middle;padding:.35rem}.results-table tbody tr:nth-child(2n){background:#fffdf5}.results-table tbody tr:hover{background:var(--yellow-soft)}.results-table tbody tr.is-optimal{background:#fef08a;font-weight:600}.cell-strong{font-weight:700}.cell-muted{color:var(--muted)}.pager{text-align:center;padding:.5rem}.pager-label{color:var(--muted);margin:0 .5rem;font-size:.8rem}.tooltip{z-index:1080;opacity:0;pointer-events:none;background:var(--ink);color:#fff;border-radius:4px;max-width:220px;padding:.35rem .5rem;font-size:.75rem;transition:opacity .15s;position:fixed;top:0;left:0}dialog{border:0;border-radius:12px;width:min(75vw,960px);padding:0;box-shadow:0 12px 40px #17171733}dialog::backdrop{background:#17171766}.dialog-panel{padding:1rem 1.15rem 1.15rem}.dialog-header{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.dialog-header h2{color:var(--muted);margin:.5rem 0 0;font-size:1rem}.btn-close{background:linear-gradient(45deg, transparent 42%, var(--ink) 42%, var(--ink) 58%, transparent 58%), linear-gradient(-45deg, transparent 42%, var(--ink) 42%, var(--ink) 58%, transparent 58%);cursor:pointer;opacity:.6;border:0;width:1.4rem;height:1.4rem}.btn-close:hover{opacity:1}.dialog-body{font-size:.9rem}.howto{padding-left:1.2rem}.refs{border-top:1px solid var(--line);margin-top:1rem;padding-top:.75rem;font-size:.85rem}.refs-title{color:var(--muted);margin:0 0 .35rem;font-weight:700}.refs ul{color:var(--muted);margin:0;padding:0;list-style:none}.refs li span{margin-right:.25rem;font-weight:600}.dialog-actions{text-align:right;margin-top:.85rem}.ppm-grid{text-align:center;color:var(--muted);grid-template-columns:repeat(3,1fr);gap:.4rem;font-size:.8rem;display:grid}@media (width>=768px){.ppm-grid{grid-template-columns:repeat(4,1fr)}}.ppm-cell{border:1px solid var(--line);border-radius:4px;padding:.3rem .2rem}.ppm-cell--highlight{background:var(--yellow-soft);border-color:var(--yellow);color:#a16207;font-weight:700}
