/* SPDX-License-Identifier: MIT */
/* Copyright (c) 2026 James Lewis <james@baldengineer.com> */

:root,:root[data-theme="dark"] { color-scheme:dark; --bg:#0d1216; --panel:#151c21; --panel-raised:#1a2329; --field:#10171b; --ink:#e8edef; --muted:#8f9ba3; --soft:#242e34; --line:#2b363d; --orange:#F68B1E; --orange-deep:#AE6227; --blue:#69B0E0; --blue-strong:#3779B2; --blue-soft:#66A5D9; --focus:#69B0E0; --scope:#050809; --green:#7bffb2; --top:#090e11; }
:root[data-theme="light"] { color-scheme:light; --bg:#eef1f4; --panel:#fff; --panel-raised:#f8fafb; --field:#fff; --ink:#17212b; --muted:#697580; --soft:#e5eaed; --line:#dbe1e6; --orange:#AE6227; --orange-deep:#AE6227; --blue:#3779B2; --blue-strong:#3779B2; --blue-soft:#66A5D9; --focus:#3779B2; --scope:#090d0f; --green:#7bffb2; --top:#11191f; }
:root[data-theme="contrast"] { color-scheme:dark; --bg:#000; --panel:#000; --panel-raised:#080808; --field:#000; --ink:#fff; --muted:#fff; --soft:#171717; --line:#fff; --orange:#F68B1E; --orange-deep:#AE6227; --blue:#69B0E0; --blue-strong:#66A5D9; --blue-soft:#66A5D9; --focus:#69B0E0; --scope:#000; --green:#fff200; --top:#000; }
* { box-sizing:border-box; }
body { margin:0; min-width:0; height:100vh; height:100dvh; overflow:hidden; background:var(--bg); color:var(--ink); font:14px/1.35 Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif; }
button,input,select { font:inherit; }
button { color:inherit; }
.app-shell { height:100vh; height:100dvh; display:flex; flex-direction:column; }
.topbar { height:64px; flex:none; display:flex; align-items:center; justify-content:space-between; padding:0 22px; background:#11191f; color:#ecf0f2; border-bottom:1px solid #26313a; }
.brand,.file-actions { display:flex; align-items:center; gap:10px; }.brand { font-size:18px; font-weight:700; letter-spacing:-.02em; }.brand-mark { display:block; width:31px; height:31px; object-fit:cover; border-radius:8px; }.badge { margin-left:5px; padding:3px 7px; border:1px solid #53606a; border-radius:4px; color:#aeb8bf; font-size:9px; letter-spacing:.12em; }.ghost,.icon-btn,.tool { border:0; background:transparent; cursor:pointer; }.topbar .ghost { color:#bdc5ca; padding:8px 9px; }.topbar .ghost:hover { color:white; }.divider { width:1px; height:22px; background:#344049; margin:0 4px; }.icon-btn { border-radius:6px; padding:6px 9px; color:#8b969e; }.icon-btn:hover { background:#edf1f3; color:#26313a; }.topbar .icon-btn:hover { background:#263139; color:white; }
.primary { border:0; border-radius:7px; padding:10px 15px; background:var(--orange); color:white; cursor:pointer; font-weight:700; box-shadow:0 1px 0 rgba(0,0,0,.16); }.primary:hover { background:var(--orange-deep); }
.primary:disabled{cursor:not-allowed;filter:saturate(.15);opacity:.38;box-shadow:none}.primary:disabled:hover{background:var(--orange)}
.workspace { min-height:0; flex:1; display:grid; grid-template-columns:minmax(520px,1fr) 272px; gap:1px; background:var(--line); }.panel { background:var(--panel); }.inspector { min-height:0; overflow:auto; }.panel-heading { display:flex; align-items:flex-start; justify-content:space-between; padding:22px 18px 15px; }.panel-heading h2 { margin:3px 0 0; font-size:18px; letter-spacing:-.02em; }.eyebrow { color:#9aa4ac; font-size:10px; font-weight:800; letter-spacing:.14em; }
.preset-grid{grid-template-columns:1fr}.preset:disabled{cursor:not-allowed;filter:grayscale(.8);opacity:.38}.preset:disabled:hover{border-color:var(--line)}.preset:disabled canvas{opacity:.55}
.editor-column { min-width:0; min-height:0; display:flex; flex-direction:column; background:var(--bg); }.document-bar { height:61px; flex:none; display:flex; align-items:center; justify-content:space-between; gap:18px; padding:0 18px; background:white; }.document-leading{display:flex;align-items:center;gap:22px;min-width:0}.document-name { display:block; width:180px; border:0; outline:0; padding:0; font-size:16px; font-weight:750; color:var(--ink); }.save-state { display:block; color:#8d989f; font-size:10px; margin-top:2px; }.save-state::first-letter { color:#3db879; }.view-picker{position:relative;align-self:stretch;display:flex;align-items:center}.view-picker-button{display:flex;align-items:center;justify-content:space-between;gap:16px;min-width:106px;height:34px;padding:0 9px;color:var(--ink);background:var(--field);border:1px solid var(--line);border-radius:6px;cursor:pointer;font-size:11px;font-weight:700}.view-picker-button:hover,.view-picker-button[aria-expanded="true"]{border-color:var(--blue);background:var(--soft)}.view-picker-button>span:last-child{color:var(--muted);font-size:9px}.view-picker-menu{top:calc(100% + 8px);right:0;left:auto;min-width:132px}.view-picker-menu button::before{content:'';display:inline-block;width:16px}.view-picker-menu button[aria-checked="true"]{color:var(--blue);font-weight:800}.view-picker-menu button[aria-checked="true"]::before{content:'✓';}.view-tabs { align-self:stretch; display:flex; align-items:flex-end; gap:20px; }.view-tabs button { height:100%; border:0; border-bottom:2px solid transparent; background:none; cursor:pointer; color:#87919a; }.view-tabs button.active { border-color:var(--blue); color:var(--ink); font-weight:700; }
.project-identity{display:flex;align-items:center;gap:9px}.project-kind{display:none;color:var(--muted);font-size:7px;font-weight:800;letter-spacing:.13em}.project-name-box{display:flex;align-items:center;border:1px solid var(--line);border-radius:5px;background:var(--field);overflow:hidden}.document-name{width:180px;padding:6px 8px}.document-name[readonly]{cursor:text}.document-name[readonly]:hover{color:var(--orange)}.document-name.editing{width:240px;background:var(--field);border-color:var(--orange)}.project-actions{position:relative;display:flex;align-items:center;gap:3px}.project-actions .ghost{padding:6px 8px;color:var(--muted)}.project-actions .ghost:hover{color:var(--ink);background:var(--soft)}.project-actions .icon-btn{padding:6px 7px;color:var(--muted)}.project-actions .icon-btn:hover{background:var(--soft);color:var(--ink)}.file-button{white-space:nowrap}.file-button span{font-size:9px}.context-menu.file-menu{position:absolute;top:calc(100% + 8px);left:0;min-width:126px;padding:5px}.file-menu button{display:block;width:100%;padding:8px 10px;text-align:left}.file-menu button:hover{background:var(--soft)}.new-confirm{position:absolute;z-index:10;top:calc(100% + 8px);left:0;width:245px;padding:12px;color:var(--ink);background:var(--panel);border:1px solid var(--line);border-radius:7px;box-shadow:0 10px 24px #0004}.new-confirm strong,.new-confirm span{display:block}.new-confirm span{margin-top:4px;color:var(--muted);font-size:11px}.new-confirm>div{display:flex;justify-content:flex-end;gap:6px;margin-top:12px}.new-confirm .primary{padding:6px 9px;font-size:10px}.new-confirm .ghost{padding:6px 8px;font-size:10px}
.editor-wrap { min-height:0; flex:1; margin:14px 14px 8px; display:flex; overflow:hidden; border:1px solid #cfd6dc; border-radius:8px; box-shadow:0 4px 15px rgba(22,33,43,.06); }.toolrail { width:46px; flex:none; padding:8px 5px; background:#f8fafb; border-right:1px solid var(--line); display:flex; flex-direction:column; gap:3px; }.toolrail span { flex:1; }.tool { height:36px; border-radius:6px; color:#68747d; font-size:17px; }.tool-icon { width:18px; height:18px; fill:currentColor; vertical-align:middle; }.tool:hover,.tool.active { background:#e5eaed; color:#202b33; }.tool.active { box-shadow:inset 2px 0 var(--blue); }.canvas-area { position:relative; min-width:0; min-height:0; flex:1; padding:18px 18px 36px 48px; background:#cfd5d9; }.scope-frame { position:relative; width:100%; height:100%; overflow:hidden; background:var(--scope); border:1px solid #0b0f11; box-shadow:inset 0 0 26px #000, 0 1px 4px #9aa1a5; cursor:crosshair; }.scope-frame canvas { display:block; width:100%; height:100%; image-rendering:pixelated; }.axis-label { position:absolute; color:#6b747b; font-size:9px; font-weight:800; letter-spacing:.13em; }.y-label { left:10px; top:50%; transform:rotate(-90deg) translateX(-50%); transform-origin:left top; }.x-label { left:50%; bottom:10px; }.cursor-readout { position:absolute; display:none; top:9px; right:10px; padding:5px 7px; color:#a9b4b8; background:#11191fdd; border:1px solid #2c393d; border-radius:4px; font:10px ui-monospace, monospace; pointer-events:none; }
#waveCanvas.waveform-hover{cursor:url("pencil-cursor.svg") 4 20,crosshair}
.scope-view{min-height:0;flex:1;margin:14px 14px 8px;display:flex;flex-direction:column;overflow:hidden;border:1px solid var(--line);border-radius:8px;box-shadow:0 4px 15px #0003}.scope-toolbar{height:62px;flex:none;display:flex;align-items:center;padding:0 16px;border-bottom:1px solid var(--line)}.scope-controls{width:100%;display:flex;align-items:flex-end;gap:10px}.scope-controls label{display:flex;flex-direction:column;gap:3px;color:var(--muted);font-size:9px;font-weight:750;text-transform:uppercase;letter-spacing:.08em}.scope-control{width:116px;height:30px}.scope-position-control{width:95px}.scope-control-separator{align-self:stretch;width:1px;margin:0 auto 0 3px;background:var(--line)}.scope-control input{font:700 10px ui-monospace,monospace}.scope-refresh-button{display:grid;place-items:center;width:32px;height:30px;padding:0;color:var(--ink);background:var(--panel-raised);border:1px solid var(--line);border-radius:6px;cursor:pointer}.scope-refresh-button svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.scope-refresh-button:hover{color:var(--orange);border-color:var(--orange)}.scope-display-area{position:relative;min-height:0;flex:1;padding:18px 18px 36px 48px;background:var(--soft)}.scope-readonly{cursor:crosshair}.readonly-badge{position:absolute;left:10px;top:9px;padding:4px 6px;color:#a9b4b8;background:#11191fdd;border:1px solid #2c393d;border-radius:4px;font:800 8px ui-sans-serif,system-ui;letter-spacing:.12em;pointer-events:none}
.scope-readonly canvas{touch-action:none}.scope-zoom-selection{position:absolute;z-index:3;display:none;background:color-mix(in srgb,var(--blue) 16%,transparent);border:1px solid var(--blue);box-shadow:0 0 0 1px #0008;pointer-events:none}.scope-zoom-selection.open{display:block}
.statusbar { height:67px; flex:none; margin:0 14px 12px; padding:0 14px; display:flex; align-items:center; gap:16px; border:1px solid var(--line); border-radius:7px; }.control-group{display:flex;align-items:flex-end;gap:16px;width:100%}.control-group.hidden{display:none}.control-group-title{align-self:center;writing-mode:vertical-rl;transform:rotate(180deg);font-size:8px;color:var(--muted);font-weight:800;letter-spacing:.12em}.status-label { font-size:8px; color:#9aa4ac; font-weight:800; letter-spacing:.12em; }.status-timing-field{display:flex;flex-direction:column;gap:4px}.status-input{width:138px;height:31px}.status-input input{font:700 11px ui-monospace,monospace}.status-input.calculated{opacity:.72}.status-input.calculated input{cursor:default}.status-select{width:190px;height:33px;padding:0 8px;color:var(--ink);background:var(--field);border:1px solid var(--line);border-radius:4px;font:700 11px ui-sans-serif,system-ui}.status-select:focus{outline:0;border-color:var(--focus);box-shadow:0 0 0 2px color-mix(in srgb,var(--focus) 18%,transparent)}.field-error:empty{display:none}.timing-link-icon{align-self:flex-end;display:grid;place-items:center;width:18px;height:31px;color:var(--muted);opacity:.8}.timing-link-icon svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.timing-separator{align-self:stretch;width:1px;margin:0 2px;background:var(--line)}.timing-actions{display:flex;align-items:flex-end;gap:7px;margin-left:auto}.audio-volume-control{position:relative;display:flex;align-items:center;height:31px;color:var(--muted)}.audio-volume-button{display:grid;place-items:center;width:31px;height:31px;padding:0;color:var(--muted);background:var(--field);border:1px solid var(--line);border-radius:6px;cursor:pointer}.audio-volume-button:hover{color:var(--ink);border-color:var(--orange);background:var(--soft)}.audio-volume-button[aria-expanded="true"]{color:var(--blue);border-color:var(--blue)}.audio-volume-button svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.audio-volume-panel{display:flex;align-items:center;gap:6px;height:31px;padding:0 8px;color:var(--muted);background:var(--field);border:1px solid var(--line);border-radius:6px;white-space:nowrap}.audio-volume-panel label{font-size:8px;font-weight:800;letter-spacing:.12em}.audio-volume-panel input{width:90px;margin:0;accent-color:#3db879;cursor:pointer}.audio-volume-panel output{min-width:31px;color:var(--ink);font:700 10px ui-monospace,monospace;letter-spacing:0;text-align:right}.audio-volume-panel[hidden]{display:none}.audio-play-button{padding:8px 11px;font-size:10px;white-space:nowrap}
.inspector .section { padding:4px 18px 15px; border-top:1px solid var(--line); }.section-title { padding:14px 0 10px; font-size:11px; font-weight:800; text-transform:uppercase; letter-spacing:.08em; }.section label { display:flex; align-items:center; justify-content:space-between; gap:8px; margin:9px 0; color:#66727b; font-size:12px; }.unit-input { width:126px; height:33px; display:flex; align-items:center; border:1px solid #d4dbe0; border-radius:6px; overflow:hidden; background:white; }.unit-input:focus-within { border-color:var(--focus); box-shadow:0 0 0 2px color-mix(in srgb,var(--focus) 18%,transparent); }.unit-input input,.unit-input select { min-width:0; width:100%; height:100%; border:0; outline:0; padding:0 8px; background:transparent; color:#202a32; }.unit-input span { padding:0 7px; color:#8c969d; font-size:10px; border-left:1px solid #e5e9ec; }.range-label { display:grid!important; grid-template-columns:1fr auto; }.range-label input { grid-column:1/-1; width:100%; accent-color:var(--orange); }.toast { position:fixed; right:18px; bottom:18px; padding:12px 16px; color:white; background:#19242b; border-radius:7px; box-shadow:0 7px 20px #0003; transform:translateY(80px); transition:.25s; }.toast.show { transform:translateY(0); }
.unit-button{align-self:stretch;padding:0 7px;color:var(--muted);background:transparent;border:0;border-left:1px solid var(--line);cursor:pointer;font-size:10px;white-space:nowrap}.unit-button:hover{color:var(--ink);background:var(--soft)}.unit-button[aria-expanded="true"]{color:var(--blue);background:var(--soft)}.unit-menu{min-width:90px}.unit-menu button[aria-checked="true"]{color:var(--blue);font-weight:800}
@media(max-height:720px){.panel-heading{padding-top:14px}.preset canvas{height:31px}.preset{padding-top:5px}.preset span{margin-top:3px}.section label{margin:6px 0}.unit-input{height:29px}.section-title{padding-top:9px}}

/* Theme surface overrides */
.topbar{background:var(--top);border-color:var(--line)}
.theme-picker{display:flex;width:max-content;padding:3px;gap:2px;border:1px solid var(--line);border-radius:7px;background:var(--field)}.theme-option{border:0;padding:5px 8px;border-radius:4px;background:transparent;color:var(--muted);cursor:pointer;font-size:10px;font-weight:700}.theme-option:hover{color:var(--orange)}.theme-option.active{background:color-mix(in srgb,var(--blue) 22%,var(--soft));color:var(--blue);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--blue) 55%,transparent)}
.primary:hover{background:var(--orange);filter:brightness(.92)}
.icon-btn:hover{background:var(--soft);color:var(--ink)}
.eyebrow,.empty-state,.save-state,.view-tabs button,.section label,.unit-input span,.axis-label{color:var(--muted)}
.search,.unit-input{background:var(--field);border-color:var(--line)}.search input,.unit-input input,.unit-input select,.document-name{color:var(--ink);background:transparent}
.preset{color:var(--ink);background:var(--panel-raised);border-color:var(--line)}.preset canvas{background:var(--field)}.preset:hover{border-color:var(--muted)}
.document-bar{background:var(--panel)}
.editor-wrap{border-color:var(--line);box-shadow:0 4px 15px #0003}.toolrail{background:var(--panel-raised);border-color:var(--line)}.tool{color:var(--muted)}.tool:hover,.tool.active{background:var(--soft);color:var(--ink)}.canvas-area{background:var(--soft)}.scope-frame{border-color:var(--line);box-shadow:inset 0 0 26px #000,0 1px 4px #0008}
.unit-input{border-color:var(--line)}.unit-input span{border-color:var(--line)}
:root[data-theme="contrast"] .preset.active,:root[data-theme="contrast"] .tool.active{outline:2px solid var(--blue);outline-offset:1px}:root[data-theme="contrast"] button:focus-visible,:root[data-theme="contrast"] input:focus-visible,:root[data-theme="contrast"] select:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.open-dialog{width:min(540px,calc(100vw - 40px));padding:0;color:var(--ink);background:var(--panel);border:1px solid var(--line);border-radius:10px;box-shadow:0 20px 60px #0008}.open-dialog::backdrop{background:#030608bf;backdrop-filter:blur(3px)}.open-dialog form{padding:20px}.dialog-heading{display:flex;align-items:flex-start;justify-content:space-between}.dialog-heading h2{margin:3px 0 0}.open-dialog p{color:var(--muted);font-size:12px}.file-choice{width:100%;padding:12px;color:var(--ink);background:var(--panel-raised);border:1px dashed var(--muted);border-radius:7px;cursor:pointer}.file-choice:hover{border-color:var(--orange)}.or-divider{display:flex;align-items:center;gap:10px;margin:14px 0;color:var(--muted);font-size:10px}.or-divider::before,.or-divider::after{content:'';height:1px;flex:1;background:var(--line)}.open-dialog textarea{display:block;width:100%;height:170px;resize:vertical;padding:10px;color:var(--ink);background:var(--field);border:1px solid var(--line);border-radius:7px;font:11px/1.45 ui-monospace,monospace;outline:0}.open-dialog textarea:focus{border-color:var(--orange)}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}.open-error{min-height:18px;padding-top:5px;color:#ff6b6b;font-size:11px}
.filter-dialog{width:min(320px,calc(100vw - 24px))}
.bridge-dialog{width:min(620px,calc(100vw - 24px))}.bridge-connection-row{display:grid;grid-template-columns:1fr auto;align-items:end;gap:9px}.bridge-connection-row .primary{height:37px}.bridge-status{display:flex;align-items:center;gap:7px;margin:11px 0 17px;color:var(--muted);font-size:11px}.bridge-status::before{content:'';width:8px;height:8px;background:var(--muted);border-radius:50%}.bridge-status[data-status="connecting"]::before{background:var(--orange);box-shadow:0 0 0 3px color-mix(in srgb,var(--orange) 18%,transparent)}.bridge-status[data-status="online"]{color:var(--ink)}.bridge-status[data-status="online"]::before{background:#3db879;box-shadow:0 0 0 3px color-mix(in srgb,#3db879 18%,transparent)}.bridge-status[data-status="offline"]::before{background:#e25b5b}.bridge-resource-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px;color:var(--muted);font-size:11px}.bridge-resource-heading .ghost{padding:5px 8px}.bridge-resource-select{display:block;width:100%;padding:10px;color:var(--ink);background:var(--field);border:1px solid var(--line);border-radius:7px;outline:0;font:11px ui-monospace,monospace}.bridge-resource-select:focus{border-color:var(--orange)}.bridge-send-options{display:flex;align-items:flex-end;gap:22px;margin-top:12px}.bridge-send-options>label{display:flex;flex-direction:column;gap:6px;color:var(--muted);font-size:11px}.bridge-send-options select{min-width:82px;padding:7px 28px 7px 9px;color:var(--ink);background:var(--field);border:1px solid var(--line);border-radius:6px;outline:0}.bridge-send-options select:focus{border-color:var(--orange)}.bridge-send-options>.bridge-output-option{flex-direction:row;align-items:center;gap:8px;min-height:33px;color:var(--ink);cursor:pointer}.bridge-output-option input{width:15px;height:15px;margin:0;accent-color:var(--orange);cursor:pointer}.bridge-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}.bridge-actions .ghost{color:var(--ink);background:var(--panel-raised);border:1px solid var(--line);border-radius:7px}.bridge-actions .ghost:hover{border-color:var(--orange)}.bridge-result{min-height:54px;max-height:130px;margin:12px 0 0;padding:10px;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;color:var(--muted);background:var(--field);border:1px solid var(--line);border-radius:7px;font:11px/1.45 ui-monospace,monospace}.bridge-result:empty{display:none}.bridge-result.error{color:#ff6b6b;border-color:color-mix(in srgb,#ff6b6b 55%,var(--line))}
.save-filename-label{display:block;color:var(--muted);font-size:11px}.save-filename-label input{display:block;width:100%;box-sizing:border-box;margin-top:6px;padding:10px;color:var(--ink);background:var(--field);border:1px solid var(--line);border-radius:7px;outline:0;font:12px ui-monospace,monospace}.save-filename-label input:focus{border-color:var(--orange)}.save-name-option{display:flex;align-items:center;gap:8px;margin-top:14px;color:var(--muted);font-size:11px}.save-name-option input{accent-color:var(--orange)}
.view-panel.hidden{display:none}.samples-view{min-height:0;flex:1;margin:14px 14px 8px;overflow:hidden;border:1px solid var(--line);border-radius:8px;box-shadow:0 4px 15px #0003}.samples-heading{height:62px;display:flex;align-items:center;justify-content:space-between;padding:0 18px;border-bottom:1px solid var(--line)}.samples-heading h3{margin:2px 0 0;font-size:15px}.table-count{color:var(--muted);font-size:10px}.samples-scroll{position:relative;height:calc(100% - 62px);overflow:auto}.samples-loading{position:sticky;z-index:4;top:0;display:flex;align-items:center;gap:10px;height:48px;padding:0 16px;color:var(--ink);background:color-mix(in srgb,var(--panel) 94%,transparent);border-bottom:1px solid var(--line);backdrop-filter:blur(5px)}.samples-loading.done{display:none}.samples-loading small{margin-left:auto;color:var(--muted);font:10px ui-monospace,monospace}.loading-spinner{width:15px;height:15px;border:2px solid var(--line);border-top-color:var(--orange);border-radius:50%;animation:sample-spin .7s linear infinite}@keyframes sample-spin{to{transform:rotate(360deg)}}.samples-table{width:100%;border-collapse:collapse;font:12px ui-monospace,monospace}.samples-table th{position:sticky;z-index:2;top:0;padding:9px 16px;color:var(--muted);background:var(--panel-raised);border-bottom:1px solid var(--line);text-align:left;font:800 9px ui-sans-serif,system-ui;letter-spacing:.11em;text-transform:uppercase}.samples-table td{height:31px;padding:0 16px;border-bottom:1px solid color-mix(in srgb,var(--line) 55%,transparent)}.samples-table tr:hover td{background:var(--soft)}.samples-table td:first-child{width:50%;color:var(--muted)}.sample-voltage{width:100%;height:25px;margin-left:-7px;padding:0 7px;color:var(--ink);background:transparent;border:1px solid transparent;border-radius:4px;outline:0;font:inherit}.sample-voltage:hover{border-color:var(--line);background:var(--field)}.sample-voltage:focus{border-color:var(--focus);background:var(--field);box-shadow:0 0 0 2px color-mix(in srgb,var(--focus) 18%,transparent)}
.property-actions{display:flex;align-items:center;gap:3px}.property-actions>.icon-btn{display:none}.default-button{padding:6px 8px;color:var(--muted);border:1px solid var(--line);border-radius:6px;cursor:pointer;font-size:10px;font-weight:700}.default-button:hover{color:var(--ink);background:var(--soft)}.context-menu{position:fixed;z-index:20;display:none;min-width:145px;padding:5px;background:var(--panel-raised);border:1px solid var(--line);border-radius:7px;box-shadow:0 10px 28px #0007}.context-menu.open{display:block}.context-menu button{width:100%;padding:8px 10px;color:var(--ink);background:transparent;border:0;border-radius:4px;text-align:left;cursor:pointer;font-size:11px}.context-menu button:hover,.context-menu button:focus{background:var(--soft);outline:0}
.filters-menu{min-width:178px;overflow:visible}.filters-menu #noiseFilterBtn::before,.filters-menu #smoothingFilterBtn::before,.filters-menu #lowPassFilterBtn::before{content:'';display:inline-block;width:16px}.filters-menu #noiseFilterBtn[aria-checked="true"]::before,.filters-menu #smoothingFilterBtn[aria-checked="true"]::before,.filters-menu #lowPassFilterBtn[aria-checked="true"]::before{content:'✓';color:var(--blue);font-weight:900}.menu-divider{height:1px;margin:5px 0;background:var(--line)}.filter-menu-item{position:relative}.filter-submenu{position:absolute;z-index:1;top:-5px;left:calc(100% + 5px);display:none;min-width:150px;padding:5px;color:var(--ink);background:var(--panel-raised);border:1px solid var(--line);border-radius:7px;box-shadow:0 10px 28px #0007}.filter-menu-item:hover>.filter-submenu,.filter-menu-item:focus-within>.filter-submenu{display:block}.filter-submenu button{display:block;width:100%;padding:8px 10px;color:var(--ink);background:transparent;border:0;border-radius:4px;text-align:left;cursor:pointer;font-size:11px}.filter-submenu button:hover,.filter-submenu button:focus{background:var(--soft);outline:0}.filter-value{display:flex;align-items:center;justify-content:space-between;padding:7px 10px;color:var(--muted);font-size:10px}.filter-value strong{color:var(--ink);font:700 11px ui-monospace,monospace}
.scope-division-menu button::before{content:'';display:inline-block;width:16px}.scope-division-menu button[aria-checked="true"]::before{content:'✓';color:var(--blue);font-weight:900}
.inspector-heading{display:block;padding:14px 18px 0}.property-heading-row{display:flex;align-items:center;justify-content:space-between;padding-bottom:12px}
.function-select-button{width:150px;height:38px;display:grid;grid-template-columns:45px 1fr 12px;align-items:center;gap:7px;padding:3px 8px 3px 4px;color:var(--ink);background:var(--field);border:1px solid var(--line);border-radius:6px;cursor:pointer;text-align:left}.function-select-button:hover{border-color:var(--orange)}.function-select-button[aria-expanded="true"]{border-color:var(--blue)}.function-select-button canvas{width:45px;height:28px;background:var(--scope);border-radius:3px}.function-select-button>span{font-size:11px;font-weight:700}.function-select-button svg{width:10px;fill:none;stroke:var(--muted);stroke-width:1.5}.function-select-menu{width:170px;padding:5px}.function-select-menu button{display:grid;grid-template-columns:52px 1fr;align-items:center;gap:9px}.function-select-menu canvas{width:52px;height:28px;background:var(--scope);border-radius:3px}.function-select-menu button[aria-checked="true"]{color:var(--blue);font-weight:800}.function-select-menu button:disabled{cursor:not-allowed;opacity:.35}.function-select-menu button:disabled:hover{background:transparent}
.json-view{min-height:0;flex:1;margin:14px 14px 8px;overflow:hidden;border:1px solid var(--line);border-radius:8px;box-shadow:0 4px 15px #0003}.json-stats{display:block;margin-top:2px;color:var(--muted);font:9px ui-monospace,monospace}.copy-json-button{padding:7px 10px;color:var(--ink);background:var(--panel-raised);border:1px solid var(--line);border-radius:6px;cursor:pointer;font-size:10px;font-weight:700}.copy-json-button:hover{border-color:var(--orange);background:var(--soft)}.json-output{height:calc(100% - 62px);margin:0;padding:16px;overflow:auto;color:var(--ink);background:var(--field);font:11px/1.55 ui-monospace,monospace;tab-size:2;white-space:pre}
.range-label.disabled,.section label.disabled{opacity:.38}.range-label.disabled input,.section label.disabled input,.section label.disabled button{cursor:not-allowed}
.serial-section[hidden],.transition-property[hidden],.noise-property[hidden],.symmetry-property[hidden],.rc-property[hidden]{display:none}.serial-section label:has(.switch-input){position:relative}.switch-input{position:absolute;opacity:0;pointer-events:none}.switch-control{position:relative;width:34px;height:19px;padding:0!important;background:var(--line);border:0!important;border-radius:10px;cursor:pointer;transition:.15s}.switch-control::after{content:'';position:absolute;left:3px;top:3px;width:13px;height:13px;background:var(--muted);border-radius:50%;transition:.15s}.switch-input:checked+.switch-control{background:var(--orange)}.switch-input:checked+.switch-control::after{left:18px;background:#fff}.switch-input:focus-visible+.switch-control{outline:2px solid var(--focus);outline-offset:2px}
.serial-section select{color-scheme:dark;cursor:pointer}.serial-section select option{color:var(--ink);background:var(--panel-raised)}:root[data-theme="light"] .serial-section select{color-scheme:light}:root[data-theme="contrast"] .serial-section select option{color:#fff;background:#000}
.filter-value-input{display:flex;align-items:center;margin-top:6px;border:1px solid var(--line);border-radius:7px;background:var(--field);overflow:hidden}.filter-value-input:focus-within{border-color:var(--orange)}.filter-value-input input{min-width:0;width:100%;padding:10px;color:var(--ink);background:transparent;border:0;outline:0;font:12px ui-monospace,monospace}.filter-value-input span{padding:0 10px;color:var(--muted);font-size:11px;border-left:1px solid var(--line)}
#serialBaud::-webkit-inner-spin-button,#serialBaud::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}

/* Responsive layout */
@media (min-width: 901px) and (max-width: 1400px) {
  .statusbar { height:auto; min-height:120px; padding-top:10px; padding-bottom:10px; }
  #editorControls { display:grid; grid-template-columns:minmax(160px,1.3fr) repeat(2,minmax(120px,1fr)) 18px minmax(120px,1fr); gap:10px 12px; }
  #editorControls.hidden { display:none; }
  #editorControls .status-timing-field, #editorControls .status-input, #editorControls .status-select { width:100%; min-width:0; }
  #editorControls .timing-link-icon { grid-column:4; grid-row:1; }
  #editorControls #tsResolutionField { grid-column:5; grid-row:1; }
  #editorControls .timing-separator { display:none; }
  #editorControls #awgFrequencyField { grid-column:1; grid-row:2; }
  #editorControls #awgPeriodField { grid-column:2; grid-row:2; }
  #editorControls .timing-actions { grid-column:3 / 6; grid-row:2; margin-left:0; }
}

@media (min-width: 901px) and (max-width: 1100px) {
  .document-bar { height:auto; min-height:103px; align-items:flex-start; flex-wrap:wrap; gap:4px 16px; padding:8px 14px 0; }
  .document-leading { width:100%; justify-content:space-between; }
  .view-picker { width:100%; min-height:38px; justify-content:flex-end; }
  .view-picker-button { min-height:34px; }
}

@media (max-width: 900px) {
  body { height:auto; min-height:100vh; min-height:100dvh; overflow:auto; }
  .app-shell { min-height:100vh; min-height:100dvh; height:auto; }
  .workspace { display:flex; flex-direction:column; gap:1px; }
  .editor-column { min-height:0; }
  .document-bar { height:auto; min-height:61px; align-items:flex-start; flex-wrap:wrap; gap:8px 16px; padding:10px 14px 0; }
  .document-leading { min-width:0; flex:1 1 100%; justify-content:space-between; gap:12px; }
  .project-identity { min-width:0; flex:1; }
  .project-name-box { min-width:0; flex:1; }
  .document-name { width:100%; min-width:0; }
  .document-name.editing { width:100%; }
  .project-actions { flex:none; }
  .view-picker { width:100%; min-height:42px; justify-content:flex-end; }
  .view-picker-button { min-height:34px; }
  .editor-wrap { flex:none; height:clamp(320px, 58vh, 560px); margin:10px 10px 8px; }
  .canvas-area { padding:12px 12px 30px 38px; }
  .statusbar { height:auto; min-height:67px; margin:0 10px 10px; padding:12px; align-items:stretch; }
  .control-group { flex-wrap:wrap; align-items:flex-end; gap:12px; }
  .status-timing-field { flex:1 1 130px; min-width:0; }
  .status-input { width:100%; }
  .timing-actions { flex-wrap:wrap; margin-left:0; }
  .inspector { max-height:none; overflow:visible; }
  .inspector-heading { padding-top:18px; }
  .inspector .section { padding-left:14px; padding-right:14px; }
  .scope-view, .samples-view, .json-view { margin:10px 10px 8px; }
  .scope-controls { flex-wrap:wrap; align-items:flex-end; gap:8px; padding:10px 0; }
  .scope-control-separator { display:none; }
}

.bridge-result.success { color:#3db879; border-color:color-mix(in srgb,#3db879 55%,var(--line)); }
.bridge-heading-row{display:flex;align-items:center;gap:10px}.bridge-download-link,.bridge-error-help a{color:var(--blue);font-weight:700;text-decoration:none}.bridge-download-link{padding:4px 7px;border:1px solid var(--line);border-radius:5px;font-size:10px;letter-spacing:0;text-transform:none}.bridge-download-link:hover,.bridge-error-help a:hover{text-decoration:underline}.open-dialog .bridge-error-help{margin:7px 0 0;color:var(--muted);font-size:11px}.bridge-error-help[hidden]{display:none}
.bridge-adapter-field{display:flex;flex-direction:column;gap:6px;margin:0 0 12px;color:var(--muted);font-size:11px}.bridge-adapter-field select{padding:8px;color:var(--ink);background:var(--field);border:1px solid var(--line);border-radius:6px;outline:0}.bridge-adapter-field select:focus{border-color:var(--orange)}

.bridge-resource-control{position:relative}.bridge-resource-select{padding-right:62px}.bridge-resource-clear,.bridge-resource-dropdown-button{position:absolute;top:50%;width:24px;height:24px;padding:0;transform:translateY(-50%);color:var(--muted);background:transparent;border:0;border-radius:4px;cursor:pointer;line-height:1}.bridge-resource-clear{right:29px;font-size:18px}.bridge-resource-dropdown-button{right:4px;font-size:14px}.bridge-resource-clear:hover,.bridge-resource-dropdown-button:hover{color:var(--ink);background:var(--soft)}.bridge-resource-dropdown-button[aria-expanded="true"]{color:var(--blue);background:var(--soft)}.bridge-resource-menu{position:absolute;z-index:21;top:calc(100% + 6px);left:0;right:0;display:none;padding:5px;color:var(--ink);background:var(--panel-raised);border:1px solid var(--line);border-radius:7px;box-shadow:0 10px 28px #0007}.bridge-resource-menu.open{display:block}.bridge-resource-filter{display:block;width:100%;padding:8px;color:var(--ink);background:var(--field);border:1px solid var(--line);border-radius:5px;outline:0;font:11px ui-monospace,monospace}.bridge-resource-filter:focus{border-color:var(--orange)}.bridge-resource-menu .menu-divider{margin:5px 0}.bridge-resource-list{max-height:190px;overflow:auto}.bridge-resource-option{display:block;width:100%;padding:8px 10px;color:var(--ink);background:transparent;border:0;border-radius:4px;text-align:left;cursor:pointer;font:11px ui-monospace,monospace;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bridge-resource-option:hover{background:var(--soft)}.bridge-resource-empty{padding:9px 10px;color:var(--muted);font-size:11px}

.help-menu-anchor,.filters-menu-anchor,.edit-menu-anchor{position:relative;display:flex;align-items:center}.help-menu{min-width:190px;overflow:visible}.help-dialog{width:min(760px,calc(100vw - 32px));height:min(620px,calc(100vh - 32px));padding:0;color:var(--ink);background:var(--panel);border:1px solid var(--line);border-radius:9px;box-shadow:0 18px 60px #0009}.help-dialog::backdrop{background:#0008}.help-dialog-heading{display:flex;align-items:center;justify-content:space-between;height:48px;padding:0 12px 0 18px;border-bottom:1px solid var(--line)}.help-dialog-heading h2{margin:0;font-size:15px}.help-dialog iframe{display:block;width:100%;height:calc(100% - 101px);border:0;background:white}.help-dialog-actions{display:flex;justify-content:flex-end;align-items:center;height:52px;padding:8px 12px;border-top:1px solid var(--line)}.help-dialog-actions .primary{padding:7px 11px;font-size:11px}
.shortcut-dialog{width:min(440px,calc(100vw - 32px));padding:0;color:var(--ink);background:var(--panel);border:1px solid var(--line);border-radius:9px;box-shadow:0 18px 60px #0009}.shortcut-dialog::backdrop{background:#0008}.shortcut-dialog-form{padding:0}.shortcut-dialog .help-dialog-heading{height:auto;min-height:62px;padding-top:11px;padding-bottom:11px}.shortcut-dialog-intro{margin:0;padding:15px 18px 5px;color:var(--muted);font-size:11px}.shortcut-list{padding:5px 18px 13px}.shortcut-row{display:flex;align-items:center;justify-content:space-between;gap:18px;min-height:40px;border-bottom:1px solid color-mix(in srgb,var(--line) 65%,transparent);font-size:12px}.shortcut-row:last-child{border-bottom:0}.shortcut-keys{display:flex;align-items:center;gap:4px;white-space:nowrap}.shortcut-keys kbd{min-width:25px;padding:4px 7px;color:var(--ink);background:var(--field);border:1px solid var(--line);border-radius:4px;box-shadow:inset 0 -1px 0 color-mix(in srgb,var(--line) 70%,transparent);font:11px ui-monospace,monospace;text-align:center}.shortcut-plus{color:var(--muted);font-size:10px}

@media (max-width: 560px) {
  .document-bar { padding-left:10px; padding-right:10px; }
  .document-leading { display:block; }
  .brand { margin-bottom:8px; }
  .project-identity { width:100%; }
  .project-kind { display:inline; }
  .project-actions .ghost { padding-left:6px; padding-right:6px; }
  .project-actions .icon-btn { padding-left:5px; padding-right:5px; }
  .new-confirm { left:auto; right:0; }
  .view-picker { min-height:38px; }
  .view-picker-button { min-height:34px; font-size:12px; }
  .editor-wrap { height:clamp(280px, 54vh, 430px); margin-left:6px; margin-right:6px; }
  .toolrail { width:42px; padding-left:3px; padding-right:3px; }
  .tool { height:34px; }
  .canvas-area { padding:8px 8px 26px 30px; }
  .axis-label { font-size:8px; }
  .statusbar { margin-left:6px; margin-right:6px; padding:10px; }
  .control-group { gap:10px; }
  .status-timing-field { flex-basis:calc(50% - 5px); }
  .timing-actions { width:100%; }
  .waveform-mode-picker { width:100%; justify-content:space-between; }
  .scope-controls { padding:6px 0; }
  .scope-controls label { flex:1 1 130px; }
  .scope-control, .scope-position-control { width:100%; }
  .scope-refresh-button { flex:none; }
  .scope-display-area { padding:10px 10px 28px 34px; }
  .samples-heading { height:auto; min-height:62px; padding:12px; gap:10px; }
  .json-view .samples-heading { align-items:flex-start; }
  .copy-json-button { white-space:nowrap; }
  .samples-table th, .samples-table td { padding-left:10px; padding-right:10px; }
}

.symmetry-presets{display:flex;width:126px;margin:-3px 0 9px auto;border:1px solid var(--line);border-radius:5px;overflow:hidden}.symmetry-presets button{flex:1;padding:5px 0;color:var(--muted);background:var(--field);border:0;cursor:pointer;font:inherit;font-size:11px}.symmetry-presets button+button{border-left:1px solid var(--line)}.symmetry-presets button:hover{color:var(--ink);background:var(--soft)}.symmetry-presets button:focus-visible{outline:2px solid var(--focus);outline-offset:-2px}
.audio-play-button{background:#3db879}.audio-play-button:hover{background:#2f9d65}.audio-play-button.playing{background:#d9534f}.audio-play-button.playing:hover{background:#bb3f3b}

#exportDialog [hidden]{display:none}.save-filename-label select{display:block;width:100%;box-sizing:border-box;margin:6px 0 14px;padding:10px;color:var(--ink);background:var(--field);border:1px solid var(--line);border-radius:7px;font:inherit}.save-filename-label select:focus{outline:2px solid var(--focus)}
