:root{--ink:#1d2327;--quiet:#5b656c;--line:#d5dadd;--panel:#fffffff0;--accent:#1f6feb}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{color:var(--ink);background:#bcd3e6;font:14px/1.4 system-ui,-apple-system,Segoe UI,sans-serif}canvas{display:block}.panel{background:var(--panel);border-radius:12px;width:320px;max-height:calc(100% - 32px);padding:16px;position:absolute;top:16px;left:16px;overflow:auto;box-shadow:0 4px 24px #00000026}.panel h1{margin:0;font-size:20px}.panel h2{margin:18px 0 8px;font-size:14px}.lead{color:var(--quiet);margin:2px 0 12px}.warn{background:#fff4e5;border:1px solid #f0c27b;border-radius:8px;padding:8px;font-size:12.5px}.seg{border:1px solid var(--line);border-radius:8px;margin-bottom:12px;display:flex;overflow:hidden}.seg button{cursor:pointer;font:inherit;background:0 0;border:0;flex:1;padding:8px}.seg button.on{background:var(--accent);color:#fff}table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:12.5px}th,td{text-align:right;border-bottom:1px solid var(--line);padding:4px 2px}th:first-child,td:first-child{text-align:left}tr.total td{border-bottom:0;font-weight:600}.swatch{border-radius:2px;width:10px;height:10px;margin-right:6px;display:inline-block}.note,.credit{color:var(--quiet);margin:8px 0 0;font-size:11.5px}.row{align-items:center;gap:10px;margin:6px 0;display:flex}.row span{flex:none;width:92px}.row input[type=range]{flex:1}.presets{flex-wrap:wrap;gap:6px;margin-top:6px;display:flex}.presets button,details button{border:1px solid var(--line);cursor:pointer;font:inherit;background:#fff;border-radius:6px;padding:4px 8px;font-size:12px}details{margin-top:14px}summary{cursor:pointer;color:var(--quiet)}.sheet-toggle{display:none}@media (width<=600px){.panel{border-radius:12px 12px 0 0;width:100%;max-height:45%;top:auto;bottom:0;left:0}.sheet-toggle{float:right;border:1px solid var(--line);font:inherit;cursor:pointer;background:#fff;border-radius:6px;padding:6px 10px;font-size:12px;display:block}.panel.collapsed{max-height:58px;overflow:hidden}}
