:root{--bg:#f4f4ee;--paper:#fff;--ink:#182821;--muted:#6e7972;--line:#e2e6dd;--lime:#c8f36a;--green:#234d40;--red:#ae3a35;--mono:ui-monospace,SFMono-Regular,Consolas,monospace;font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:var(--bg);font-size:14px}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a,input,select,summary{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.42}a{color:inherit;text-decoration:none}:is(button,a,input,select,summary):focus-visible{outline:3px solid #8fb64c;outline-offset:3px}[hidden]{display:none!important}.dot{display:inline-block;width:6px;height:6px;border-radius:100%;background:#9ca79e}main{max-width:1560px;padding:38px 4.5% 0;margin:0 auto}.page-heading{display:flex;justify-content:space-between;align-items:center;margin:0 0 30px;gap:20px}.eyebrow,.section-label{font:10px var(--mono);letter-spacing:1.2px;color:var(--muted)}h1{font-size:42px;letter-spacing:-1.7px;line-height:1.1;margin:10px 0 10px;font-weight:630}.heading-dot{color:#789c44}.page-heading p{font-size:13px;color:var(--muted);margin:0}h2{font-size:16px;font-weight:650;letter-spacing:-.3px;margin:0}h3{font-size:12px;margin:0 0 14px}.workspace{display:grid;grid-template-columns:235px minmax(340px,1fr) 260px;gap:22px;align-items:start}.left-rail,.right-rail,.editor-column{display:grid;gap:20px;min-width:0}.panel{border:1px solid var(--line);border-radius:13px;background:var(--paper);overflow:hidden}.connection-panel,.quick-panel,.session-panel,.status-note{padding:22px}.button{border:1px solid transparent;border-radius:7px;padding:11px 15px;display:inline-flex;align-items:center;justify-content:center;gap:10px;font-size:12px;font-weight:600;line-height:1.3;transition:background .15s,transform .15s}.button:not(:disabled):active{transform:translateY(1px)}.primary{background:var(--lime);color:#203020}.primary:hover:not(:disabled){background:#b7e954}.secondary{background:#fff;border-color:var(--line);color:var(--ink)}.secondary:hover:not(:disabled){background:#f4f6ef;border-color:#bbc9b8}.text{padding:7px 0;background:transparent;color:var(--muted)}.text:hover{color:var(--ink)}.full{width:100%}.compact{padding:7px 10px;font-size:11px}.stop{color:#a32e2e;background:#faece7;border-color:#ebcfc6;padding:12px 22px}.stop:hover:not(:disabled){background:#f4d7cc}.stop-icon{display:block;width:9px;height:9px;background:currentColor;border-radius:2px}.device-icon{width:51px;height:51px;border-radius:14px;background:#f0f4eb;color:var(--green);font-size:40px;line-height:1;display:grid;place-items:center;margin:22px 0 16px}.connection-panel h2{margin-bottom:12px}.status-pill{display:inline-flex;align-items:center;gap:6px;font-size:10px;padding:5px 8px;border-radius:4px;background:#f2f3ee;color:#6d796e}.status-pill.connected{background:#edf4df;color:#41612e}.status-pill.connected .dot{background:#6e9b43}.muted{color:var(--muted)}.small{font-size:11px;line-height:1.65}.connection-panel p{margin:18px 0}.device-details{border-top:1px solid var(--line);margin-top:15px;padding-top:14px;display:grid;gap:12px}.device-details div{display:flex;justify-content:space-between;font-size:10px}.device-details span{color:var(--muted)}.device-details strong{font-weight:500}.quick-panel{padding-bottom:15px}.quick-panel .section-label{margin-bottom:15px}.preset{display:flex;align-items:center;gap:10px;padding:13px 0;text-align:left;border:0;border-bottom:1px solid var(--line);background:transparent;width:100%}.preset:last-of-type{border:0}.preset-dots{color:#5e8052;min-width:28px;letter-spacing:2px;font-size:9px}.preset strong,.preset small{display:block;font-size:11px;font-weight:500}.preset small{font-size:9px;color:var(--muted);margin-top:5px;font-weight:400}.preset>span:last-child{margin-left:auto;font-size:12px}.quick-panel p{font-size:10px;margin-bottom:0}.local-note{padding:0 10px;display:flex;gap:11px;color:#839080;font-size:19px}.local-note p{font-size:10px;line-height:1.8;margin:0}.ball-editor{padding:21px 24px 0}.icon-button{background:none;border:1px solid var(--line);color:var(--ink);border-radius:5px;height:26px;width:26px;display:grid;place-content:center}.small-button{font-size:10px}.control label{display:flex;align-items:center;justify-content:space-between;font-size:11px;margin-bottom:8px;gap:8px}.control label span{font-size:8px;color:#8a958c}input[type=range]{width:100%;height:4px;accent-color:#4a6e3d;min-width:20px;cursor:pointer}input:not([type=range]):not([type=checkbox]):not([type=file]),select{border:1px solid var(--line);border-radius:5px;color:var(--ink);background:#fff;padding:9px;font-size:12px;max-width:100%}input[type=checkbox]{accent-color:#496b35}.editor-footer{margin:0 -24px;padding:11px 24px;background:#fafbf7;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:9px;color:var(--muted)}.editor-footer>div{display:flex;gap:14px}.field-label{display:block;font-size:10px;margin:22px 0 8px}#drill-name{width:100%;font-size:12px}.session-number{padding:20px 0 16px;border-bottom:1px solid var(--line)}.session-number>label{display:block;font-size:11px;margin-bottom:6px}.session-number>div{display:flex;align-items:baseline;gap:8px}.session-number input[type=number]{width:85px;font-size:34px;letter-spacing:-1.7px;padding:0;border:0;background:transparent;font-weight:500}.session-number span{font-size:10px;color:var(--muted)}.random-options{padding:21px 0}.random-options h3{font-size:11px;margin-bottom:16px}.random-options label{display:flex;align-items:center;justify-content:space-between;font-size:10px;margin:14px 0}.random-options input{appearance:none;width:27px;height:16px;background:#dfe5d9;border-radius:20px;position:relative;cursor:pointer;transition:background .2s}.random-options input:before{content:"";position:absolute;width:10px;height:10px;top:3px;left:3px;background:white;border-radius:50%;transition:left .2s}.random-options input:checked{background:#4b7039}.random-options input:checked:before{left:14px}.start-button{font-size:13px;padding:14px;margin-top:10px}.centered{text-align:center}#start-hint{font-size:9px;margin:12px 0 0;line-height:1.6}.status-note{background:#edf0e6}.status-note p{font-size:11px;line-height:1.7;color:#6d7966;margin:12px 0}.status-note a{font-size:10px;font-weight:600}.status-note a span{margin-left:5px}.run-progress{border-top:1px solid var(--line);padding-top:17px;margin-top:15px}.run-progress>div{display:flex;justify-content:space-between;font-size:11px}progress{width:100%;height:6px;accent-color:#87ac52;margin-top:10px;border:0}.run-progress p{font-size:9px}.run-result{padding:12px;background:#eff5e7;border-radius:7px;font-size:10px;line-height:1.6;margin-top:14px}.run-result.failed{background:#faeae5;color:#913d30}.activity-panel{margin-top:24px}.activity-heading{padding:18px 23px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.activity-heading h2{font-size:13px}.activity-heading h2 span{font-size:9px;color:var(--muted);font-weight:400;margin-left:9px}.activity{max-height:170px;overflow:auto;padding:5px 23px}.activity-row{display:grid;grid-template-columns:80px 1fr;gap:16px;border-bottom:1px solid #f0f2eb;padding:9px 0;font-size:10px;line-height:1.6}.activity-row time{font:9px var(--mono);color:var(--muted);padding-top:2px}.activity-row.protocol span{font-family:var(--mono);font-size:9px;color:#7a8576;overflow-wrap:anywhere}.empty-activity{color:#91998b;font-size:10px;margin:20px 0}.banner{padding:13px 18px;border-radius:6px;font-size:12px;margin-bottom:20px}.banner.demo{background:#f1e7cd;color:#826121}.banner.error{background:#f9e4dd;color:#943f30}.auth{padding:20px;display:flex;align-items:center;justify-content:space-between;margin-bottom:25px;gap:20px}.auth p{font-size:11px;color:var(--muted)}.auth form{display:flex;gap:8px}.auth input{width:220px}.toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);z-index:20;max-width:min(600px,90vw);padding:14px 22px;border:1px solid #3c5948;border-radius:8px;background:#203b2e;color:#f0f6e8;font-size:12px;box-shadow:0 6px 30px #14241922}.toast.failed{background:#803c30;border-color:#a95643}dialog{border:1px solid var(--line);border-radius:15px;padding:28px;max-width:800px;width:90%;color:var(--ink)}dialog::backdrop{background:#142b2366;backdrop-filter:blur(3px)}.dialog-heading{display:flex;justify-content:space-between;align-items:center}.dialog-heading h2{margin-top:8px;font-size:23px}dialog p{font-size:12px}pre{white-space:pre-wrap;overflow-wrap:anywhere;background:#f3f5ef;padding:20px;border-radius:8px;font:11px/1.8 var(--mono);max-height:55vh;overflow:auto}footer{display:flex;justify-content:space-between;font:9px var(--mono);color:#8a9487;padding:25px 0 30px;gap:15px}.footer-divider{margin:0 12px;color:#c1c9ba}.api-layout{display:grid;grid-template-columns:220px 1fr;gap:45px;align-items:start}.api-nav{position:sticky;top:25px;display:grid;gap:15px;font-size:12px;color:var(--muted)}.api-content{max-width:950px}.api-content section{margin-bottom:42px;scroll-margin-top:20px}.api-content h2{font-size:23px;margin-bottom:14px}.api-content p,.api-content li{font-size:13px;line-height:1.85;color:#66735f}.api-content table{border-collapse:collapse;width:100%;font-size:11px;background:#fff}.api-content td,.api-content th{padding:12px;text-align:left;border:1px solid var(--line);line-height:1.6}.api-content th{background:#edf1e7}.api-content code{font:11px var(--mono);color:#375131}.api-content a{text-decoration:underline}.architecture{display:flex;gap:10px;align-items:center;flex-wrap:wrap;background:#eaf0e4;padding:24px;border-radius:10px;font-size:12px}.architecture strong{padding:11px;background:white;border:1px solid #d5dfca;border-radius:5px}
@media(min-width:1500px){main{padding-left:50px;padding-right:50px}.workspace{grid-template-columns:250px 1fr 280px;gap:26px}}
@media(max-width:1150px){.workspace{grid-template-columns:200px minmax(300px,1fr)}.right-rail{grid-column:1/-1;grid-template-columns:1fr 1fr}.session-panel{display:grid;grid-template-columns:1fr 1fr;column-gap:25px}.session-panel>.section-label,.session-panel>.field-label,.session-panel>#drill-name,.session-panel>.run-progress,.session-panel>.run-result,.session-panel>#start-hint{grid-column:1/-1}.random-options{grid-column:1/-1;display:flex;gap:20px;flex-wrap:wrap;align-items:center;padding-bottom:8px}.random-options h3{margin:0}.random-options label{gap:10px}.session-panel>.start-button{margin-top:0}.status-note{align-self:start}.right-rail{grid-template-columns:2fr 1fr}.connection-panel,.quick-panel{padding:18px}.editor-footer{flex-wrap:wrap}}
@media(max-width:760px){main{padding:28px 18px 0}.page-heading{gap:10px;align-items:center;margin-bottom:22px}h1{font-size:34px}.page-heading .eyebrow{font-size:8px}.page-heading p{font-size:11px;max-width:190px;line-height:1.6}.stop{padding:12px 15px;position:fixed;right:16px;bottom:16px;z-index:10;box-shadow:0 3px 14px #0001}.workspace{grid-template-columns:1fr;gap:18px}.left-rail{grid-template-columns:1fr}.quick-panel,.local-note{display:none}.connection-panel{display:grid;grid-template-columns:1fr auto;column-gap:15px;padding:18px}.connection-panel>.section-label{grid-column:1/-1}.device-icon{display:none}.connection-panel h2{margin:16px 0 10px}.status-pill{align-self:center;justify-self:end}.connection-panel p{grid-column:1/-1;margin:3px 0 13px}.device-details{grid-column:1/-1;grid-template-columns:1fr 1fr;column-gap:25px}.right-rail{grid-column:auto;grid-template-columns:1fr}.status-note{display:none}.ball-editor{padding:18px 18px 0}.editor-footer{margin:0 -18px;padding:10px 18px}.control label span{font-size:7px}.control label{font-size:10px}.session-panel{padding:20px}.activity-heading{padding:16px}.activity-heading label{font-size:9px}.activity{padding:5px 16px}.activity-row{grid-template-columns:65px 1fr;gap:8px}.auth{display:block}.auth form{margin-top:15px}.auth input{width:100%;min-width:0}.banner{font-size:10px}.toast{bottom:78px}footer{padding-bottom:80px;font-size:8px;flex-wrap:wrap}.api-layout{grid-template-columns:1fr;gap:25px}.api-nav{position:static;display:flex;flex-wrap:wrap;gap:14px;font-size:10px}.api-content table{font-size:9px}.api-content td,.api-content th{padding:8px}.api-content pre{font-size:10px}.api-content p{font-size:12px}}
