:root{--bg:#ffffff;--surface:#f6f4f9;--text:#1f1b24;--muted:#5d5766;--border:#d9d4e2;--accent:#5b2a86;--accent-text:#ffffff;--accent-soft:#ece4f5;--danger:#a31d2b;--danger-soft:#fbe9eb;--warn:#8a5a00;--pump:#2563b8;--system:#c0392b;--duty:#1f1b24}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#17141c;--surface:#211d28;--text:#f1eef5;--muted:#a9a2b5;--border:#3a3445;--accent:#b48be0;--accent-text:#17141c;--accent-soft:#2f2640;--danger:#ff8d99;--danger-soft:#3a1f25;--warn:#f0c36a;--pump:#6aa6f2;--system:#ff8a7a;--duty:#f1eef5}}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;font-size:16px;line-height:1.5}main{max-width:760px;margin:0 auto;padding:16px}h1{font-size:1.5rem;margin:0}h2{font-size:1.25rem;margin:24px 0 12px}h3{font-size:1.05rem;margin:22px 0 8px}.top{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap}.badge{margin:0;padding:2px 10px;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-size:.875rem}.progress{display:flex;gap:4px;list-style:none;padding:0;margin:16px 0 0;overflow-x:auto}.progress li{flex:1 0 auto}.progress button{width:100%;padding:8px 10px;border:0;border-bottom:3px solid var(--border);background:none;color:var(--muted);font:inherit;font-size:.875rem;cursor:pointer;white-space:nowrap}.progress button:disabled{cursor:default;opacity:.6}.progress .done button{border-bottom-color:var(--accent);color:var(--text)}.progress .current button{border-bottom-color:var(--accent);color:var(--accent);font-weight:600}.progress .num{display:inline-block;min-width:1.4em;height:1.4em;line-height:1.4em;border-radius:50%;background:var(--surface);text-align:center;margin-right:4px;font-size:.8em}.choices{display:flex;gap:8px;flex-wrap:wrap}.choice{position:relative;display:flex;flex-direction:column;min-width:140px;padding:10px 16px;border:2px solid var(--accent);border-radius:8px;color:var(--accent);cursor:pointer;background:var(--bg)}.choice.on{background:var(--accent);color:var(--accent-text)}.card input,.choice input{position:absolute;opacity:0;inset:0;margin:0;cursor:pointer}.card:focus-within,.choice:focus-within{outline:3px solid var(--accent);outline-offset:2px}.choice-label{font-weight:600}.choice-hint{font-size:.8rem;opacity:.85}.field{display:block;margin:12px 0}.field-label{display:block;font-weight:600;margin-bottom:4px}.field-hint{display:block;color:var(--muted);font-size:.875rem;margin-top:4px}input:not([type]),input[inputmode],input[type=text],select{width:100%;max-width:360px;padding:10px 12px;font:inherit;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:6px}fieldset{border:0;padding:0;margin:12px 0}legend{font-weight:600;padding:0;margin-bottom:4px}.note{font-size:.9rem;margin:6px 0}.fine,.note{color:var(--muted)}.fine{font-size:.8rem}.req{font-size:.75rem;color:var(--danger);font-weight:400}.warn{color:var(--warn);font-weight:600}.error,.info,.result{padding:12px 16px;border-radius:8px;margin:16px 0}.info{background:var(--accent-soft)}.error{background:var(--danger-soft);color:var(--danger)}.error p{margin:4px 0 0}.result{background:var(--surface);border:1px solid var(--border)}.result h3{margin-top:0}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));grid-gap:8px;gap:8px}.card{position:relative;display:flex;flex-direction:column;gap:2px;padding:12px;border:2px solid var(--border);border-radius:8px;cursor:pointer;background:var(--bg)}.card.on{border-color:var(--accent);background:var(--accent-soft)}.card.off{opacity:.5}.card.off,.card.off input{cursor:not-allowed}.card-title{font-weight:600}.card-title small{font-weight:400;color:var(--muted)}.card-sub{color:var(--muted);font-size:.875rem}.card-note{font-size:.8rem;color:var(--warn);margin-top:4px}.tag{align-self:flex-start;margin-top:6px;padding:1px 8px;border-radius:999px;background:var(--accent);color:var(--accent-text);font-size:.75rem}.tag.muted{background:var(--surface);color:var(--muted);border:1px solid var(--border)}.actions{display:flex;gap:8px;margin:24px 0 8px;flex-wrap:wrap}button{font:inherit}.actions button,.order>button,.qty button{padding:10px 20px;border:2px solid var(--accent);border-radius:8px;background:var(--bg);color:var(--accent);cursor:pointer}button.primary{background:var(--accent);color:var(--accent-text)}button:disabled{opacity:.45;cursor:not-allowed}button:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.link{border:0;background:none;color:var(--accent);padding:0;cursor:pointer;text-decoration:underline;font-size:.875rem}.lines{width:100%;border-collapse:collapse;margin:8px 0}.lines td,.lines th{text-align:left;padding:8px 6px;border-bottom:1px solid var(--border);vertical-align:top}.lines th{font-size:.8rem;color:var(--muted);font-weight:600}.lines .r,.order .r{text-align:right}.summary{font-weight:600;margin:4px 0}.qty{display:flex;align-items:center;gap:8px;margin:12px 0}.qty button{padding:4px 12px;font-size:1.1rem}.qty output{min-width:2ch;text-align:center;font-weight:600}.total{font-size:1.1rem;margin:8px 0}.total small{color:var(--muted)}.order{margin-top:32px;padding-top:8px;border-top:2px solid var(--border)}.order ul{list-style:none;padding:0;margin:0}.order li{display:flex;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid var(--border)}.preview{margin:8px 0 0;padding-left:20px;list-style:disc}.preview li{display:list-item;border:0;padding:2px 0}.chart{margin:12px 0 0}.chart svg{width:100%;height:auto;display:block}.chart figcaption{font-size:.85rem;color:var(--muted)}.chart .grid{stroke:var(--border);stroke-width:1}.chart .tick{fill:var(--muted);font-size:14px}.chart .axis{fill:var(--muted);font-size:15px}.chart .line{stroke-width:2.5}.chart .line.pump{stroke:var(--pump)}.chart .line.system{stroke:var(--system)}.chart .duty{fill:var(--duty);stroke:var(--bg);stroke-width:2}.key{display:inline-block;width:12px;height:12px;border-radius:3px;margin:0 4px 0 12px;vertical-align:-1px}.key:first-child{margin-left:0}.key.pump{background:var(--pump)}.key.system{background:var(--system)}.key.duty{background:var(--duty);border-radius:50%}@media (max-width:480px){.actions button,.choice{flex:1 1 100%}}