:root{font-family:Inter,"Segoe UI","Microsoft YaHei",sans-serif;color:#263635;background:#f5f7f7;font-synthesis:none;--green:#137767;--line:#e1e7e5;--muted:#778580;--red:#ae3d41}*{box-sizing:border-box}body{margin:0;font-size:14px}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{opacity:.5;cursor:not-allowed}button,a,input,select,textarea{outline-offset:3px;accent-color:var(--green)}button:focus-visible,a:focus-visible{outline:2px solid #28a18d}button{transition:background .12s,border-color .12s}h1,h2,h3,p{margin-top:0}h1{font-size:28px;font-weight:650;letter-spacing:-.7px;margin-bottom:12px}h2{font-size:19px;letter-spacing:-.3px}h3{font-size:14px}.sidebar{position:fixed;inset:0 auto 0 0;width:218px;background:#fff;border-right:1px solid var(--line);padding:32px 18px;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:12px;color:inherit;text-decoration:none;font-size:23px;font-weight:750;padding:0 10px}.brand-icon{background:var(--green);color:white;width:39px;height:39px;border-radius:12px;display:grid;place-items:center;font-size:25px}.brand-sub{display:block;font-size:11px;color:var(--muted);font-weight:500;letter-spacing:1px;margin-top:2px}.nav-label{font-size:10px;letter-spacing:2px;color:#99a49f;margin:47px 14px 12px}.nav{width:100%;display:flex;align-items:center;gap:12px;background:transparent;border:0;text-align:left;color:#687773;padding:14px;border-radius:8px;margin-bottom:5px}.nav>span{font-size:20px;width:22px}.nav:hover{background:#f3f6f5}.nav.active{background:#eaf4f0;color:var(--green);font-weight:650}.nav b{margin-left:auto;background:#d9e9e3;border-radius:5px;padding:2px 6px;font-size:11px}.sidebar-foot{margin-top:auto;padding:16px 10px 0;border-top:1px solid var(--line);font-size:12px}.sidebar-foot small{display:block;color:var(--muted);font-size:10px;margin-top:10px}.text-button{padding:0;border:0;background:transparent;color:var(--muted);margin-top:15px;font-size:12px}.live-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#289783;margin-right:7px}.live-dot.off{background:#bc7979}.main-shell{margin-left:218px}.topbar{min-height:75px;padding:16px 36px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;background:#fff;gap:20px}.breadcrumb{color:#9aa39f;font-size:12px}.slash{color:#bdc6c2;margin:0 14px}.engine-controls{display:flex;gap:10px;align-items:center}.badge{font-size:11px;color:var(--green);background:#edf5f1;padding:7px 10px;border-radius:6px;white-space:nowrap}.badge.off{background:#f0f2f1;color:#7a8680}.button{border:1px solid #d8e1dc;border-radius:7px;background:white;color:#41564d;padding:10px 18px;font-weight:550;white-space:nowrap}.button:hover{background:#f1f6f3}.button.primary{background:var(--green);border-color:var(--green);color:white}.button.primary:hover{background:#0e6255}.button.danger{color:var(--red);border-color:#eedadb;background:#fffafa}.button.small{padding:8px 12px;font-size:12px}.button.ghost{border-color:transparent;background:transparent}.icon-button{border:1px solid var(--line);background:white;border-radius:5px;padding:4px 8px;color:#52665a}main{max-width:1450px;margin:auto;padding:36px}.page-heading{display:flex;justify-content:space-between;gap:20px;margin:0 0 28px;align-items:center}.eyebrow{font-size:10px;letter-spacing:2px;font-weight:700;color:#8a9e95;margin-bottom:12px}.page-heading p:not(.eyebrow){color:var(--muted);font-size:13px;line-height:1.7;margin-bottom:0}.runtime-note{white-space:nowrap;font-size:11px;color:#778780;text-align:right}.runtime-note small{display:block;margin-top:9px;font-size:10px;color:#9aa79f}.category-tabs{display:flex;gap:24px;border-bottom:1px solid #dfe6e3;margin-bottom:23px}.category-tabs button{border:0;border-bottom:3px solid transparent;padding:0 3px 15px;background:none;color:#89978f;font-weight:600}.category-tabs button.active{color:var(--green);border-bottom-color:var(--green)}.category-tabs small{font-size:10px;margin-left:8px;font-weight:400}.function-list{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:25px}.function-option{border:1px solid #dde6e1;background:white;border-radius:8px;padding:12px 18px;color:#617267;display:flex;gap:9px;align-items:center}.function-option.active{border-color:#81b3a3;background:#eef7f2;color:var(--green);box-shadow:0 0 0 1px #c4ded3}.function-option .symbol{font-size:16px;opacity:.65}.editor-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(285px,.43fr);gap:22px;align-items:start}.card{background:#fff;border:1px solid var(--line);border-radius:12px;overflow:hidden}.card-heading{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:22px 25px;border-bottom:1px solid #edf0ee}.card-heading h2,.card-heading h3{margin:0}.step-pill{font-size:10px;color:#809187;letter-spacing:1px}.card-body{padding:22px 25px}.section{padding-bottom:23px;margin-bottom:23px;border-bottom:1px solid #edf0ee}.section:last-child{padding-bottom:0;margin-bottom:0;border-bottom:0}.section h3{display:flex;gap:9px;align-items:center;margin-bottom:17px;font-size:13px}.step{width:20px;height:20px;background:#f0f4f2;color:#6a8376;font-size:10px;display:inline-grid;place-items:center;border-radius:5px}.row{display:flex;gap:13px;align-items:end;flex-wrap:wrap}.row.spread{justify-content:space-between;align-items:center}.field{display:flex;flex-direction:column;gap:8px;margin-bottom:14px;min-width:120px;flex:1}.field>span{font-size:11px;color:#7b8a81}.field.tight{flex:0 0 106px;min-width:0}.field input,.field select,textarea,#key-search{width:100%;padding:10px 11px;border:1px solid #dfe6e2;border-radius:6px;background:#fff;color:#364e40}.field input:focus,.field select:focus,textarea:focus,#key-search:focus{outline:2px solid #cee4d9;border-color:#94bcaa}.key-slot{width:106px;display:flex;flex-direction:column;gap:8px}.key-slot span{font-size:10px;color:#89978e}.key-slot button{height:44px;min-width:70px;padding:0 8px;border:1px solid #d5e1d9;border-bottom:3px solid #d5e1d9;border-radius:6px;background:#f9fbfa;color:#305341;font-weight:600;overflow:hidden;text-overflow:ellipsis}.key-slot button:hover{border-color:#86b29b;background:#eff7f2}.key-row{display:flex;gap:10px;flex-wrap:wrap;margin:8px 0 17px}.subcard{border:1px solid #e5eae7;border-radius:8px;background:#fafcfb;padding:17px;margin:14px 0}.subcard h3{margin-bottom:15px}.check{display:inline-flex;gap:8px;align-items:center;font-size:12px;color:#50675a;margin:8px 14px 8px 0}.check input{width:15px;height:15px}.card-footer{padding:18px 25px;border-top:1px solid #edf0ee;display:flex;align-items:center;justify-content:space-between;gap:15px}.muted{color:var(--muted);font-size:12px;line-height:1.8}.card-footer .muted{font-size:11px}.description{position:sticky;top:24px;background:#f8fbf9}.description .card-body{padding:23px;line-height:1.9}.description h3{color:var(--green)}#behavior{font-size:13px;color:#5d7466;white-space:pre-line;overflow-wrap:anywhere}.description-note{font-size:11px;color:#8c9d92;border-top:1px solid #e2eae4;margin-top:22px;padding-top:18px}.key-preview{font-size:23px;font-weight:600;margin-bottom:18px;color:#52745f;line-height:1.5;overflow-wrap:anywhere}.banner{border:1px solid #eed7ac;background:#fff9ea;color:#96723b;padding:13px 18px;border-radius:7px;margin-bottom:24px;font-size:12px;line-height:1.7}footer{margin-top:30px;color:#99a69d;font-size:10px;display:flex;gap:6px;align-items:center;flex-wrap:wrap}footer>span{margin-left:auto}kbd{background:#fff;border:1px solid #e0e6e2;border-bottom-width:2px;border-radius:3px;padding:2px 4px;font-size:9px}.macro-text{font:12px/1.9 "Cascadia Code",Consolas,monospace;min-height:330px;resize:vertical;tab-size:2;background:#f9fbfa;white-space:pre;overflow:auto}.record-bar{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:16px;flex-wrap:wrap}.record-state{font-size:11px;color:#819587}.record-state.active{color:#b24a4a}.table-wrap{overflow:auto;max-height:65vh}table{border-collapse:collapse;width:100%;text-align:left;font-size:12px}th{background:#f7f9f8;padding:14px 18px;color:#8c9b91;font-weight:500;white-space:nowrap;position:sticky;top:0}td{padding:16px 18px;border-top:1px solid #eef1ef;max-width:230px;overflow-wrap:anywhere}td.actions{white-space:nowrap;max-width:none}td.actions button{margin-right:5px}td strong{font-weight:600}.empty{padding:65px 24px;text-align:center}.empty p{margin:10px 0 20px}.empty-icon{font-size:33px;color:#bad1c3;margin-bottom:18px}.manager-toolbar{display:flex;gap:10px;margin-bottom:18px;align-items:center;justify-content:space-between}#toast{position:fixed;bottom:28px;left:50%;transform:translateX(-50%);background:#254c3d;color:#fff;padding:13px 23px;border-radius:8px;box-shadow:0 10px 30px #19352625;max-width:85vw;z-index:20;font-size:12px;line-height:1.7}#toast.error{background:#923d42}dialog{border:1px solid var(--line);border-radius:14px;width:min(760px,90vw);padding:25px;box-shadow:0 30px 90px #193b302d}dialog::backdrop{background:#14312650;backdrop-filter:blur(3px)}.dialog-heading{display:flex;justify-content:space-between;align-items:start}#key-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(67px,1fr));gap:8px;margin:20px 0;max-height:45vh;overflow:auto}#key-grid button{border:1px solid var(--line);border-bottom-width:3px;background:#f8faf9;border-radius:5px;padding:10px 4px;font-size:11px;min-height:38px}#key-grid button:hover{background:#e7f3ed;border-color:#83b59d}.busy #workspace{pointer-events:none;opacity:.72}.busy{cursor:progress}.actions-row{display:flex;gap:10px;align-items:center}.notice{font-size:11px;color:#6b8777;background:#f0f7f2;padding:13px 15px;border-radius:7px;line-height:1.8}.button.recording{color:#a4353b;background:#fff1f1;border-color:#e7bfc1}@media(max-width:1100px){.sidebar{width:184px;padding:26px 12px}.main-shell{margin-left:184px}.topbar{padding:16px 24px}main{padding:26px 24px}.editor-layout{grid-template-columns:minmax(0,1fr) 285px;gap:15px}.card-body,.card-heading,.card-footer{padding:20px}.runtime-note{display:none}h1{font-size:24px}}@media(max-width:850px){.sidebar{position:relative;width:auto;flex-direction:row;padding:15px;align-items:center;gap:15px;border-right:0;border-bottom:1px solid var(--line)}.brand{font-size:17px;padding:0}.brand-sub,.nav-label,.sidebar-foot{display:none}nav{display:flex;gap:4px;margin-left:auto}.nav{width:auto;padding:9px;font-size:11px;margin:0}.nav>span{display:none}.main-shell{margin:0}.editor-layout{grid-template-columns:1fr}.description{position:static}.topbar{padding:14px 20px}main{padding:22px 20px}.topbar>div:first-child{display:none}.engine-controls{width:100%;justify-content:flex-end}.category-tabs{gap:20px}.category-tabs small{display:none}.page-heading{margin-bottom:22px}footer>span{margin-left:0;width:100%;margin-top:6px}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}

/* Keep common rules compact; complex gestures may scroll without hiding Save. */
.rule-fields{display:grid;grid-template-columns:1fr 1fr;gap:18px}.rule-fields>.section{min-width:0;padding-bottom:14px;margin-bottom:0}.rule-fields>.parameters{grid-column:1/-1}.rule-fields .subcard{display:grid;grid-template-columns:1fr 1fr;gap:0 16px;padding:15px;margin:10px 0}.rule-fields .subcard>h3,.rule-fields .subcard>.key-row,.rule-fields .subcard>div:not(.field){grid-column:1/-1}.rule-fields .section h3{margin-bottom:12px}.rule-fields .key-row{margin-bottom:10px}.card-heading{padding-top:17px;padding-bottom:17px}.page-heading{margin-bottom:23px}.rule-fields .field{min-width:0}.rule-fields .field select{max-width:100%}.rule-fields .subcard>div:has(.check){grid-column:1/-1}@media(max-width:650px){.rule-fields{grid-template-columns:1fr}.rule-fields>.parameters{grid-column:auto}.rule-fields .subcard{grid-template-columns:1fr}.rule-fields .subcard>*{grid-column:auto!important}}

#key-dialog{width:min(1080px,96vw)}#key-grid.keyboard-map{display:block;max-height:60vh;overflow:auto}.main-keyboard{min-width:700px}.map-row{display:flex;gap:5px;margin-bottom:5px}.map-row .map-key{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis}.key-gap{flex:.4}.extra-keys{display:grid;grid-template-columns:repeat(auto-fill,minmax(65px,1fr));gap:5px;margin-top:18px;border-top:1px solid var(--line);padding-top:15px}.macro-author{padding:16px;border:1px solid var(--line);border-radius:8px;margin-bottom:16px}.macro-import{margin-bottom:16px;flex-wrap:wrap}

.macro-card .card-heading{position:sticky;top:0;background:white;z-index:2}.macro-table-wrap{max-height:52vh;overflow:auto;border:1px solid var(--line);border-radius:8px}.macro-step-table{min-width:610px}.macro-step-table td{padding:9px 12px;max-width:none}.macro-step-table .field{margin:0;position:relative}.macro-step-table .field>span{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.macro-step-table td:nth-child(4){width:150px}.macro-step-table td:nth-child(5){min-width:180px;width:50%}.macro-pager{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:14px}.macro-card .record-bar{margin-top:12px}

/* Fixed ANSI geometry: a 1u cap is 40 × 40 px, with a 5 px gutter. */
#key-dialog{width:min(1140px,96vw);max-height:92vh}#key-grid.keyboard-map{display:block;max-height:60vh;overflow:auto;margin:22px 0 14px;padding:0 0 6px} .keyboard-case{width:max-content;padding:16px;border:1px solid #d9e2de;background:#edf2ef;border-radius:12px}.keyboard-104{position:relative;width:1030px;height:287.5px}#key-grid .map-key{display:flex;align-items:center;justify-content:center;white-space:pre-line;line-height:1.2;min-height:0;padding:2px;border:1px solid #cdd8d2;border-bottom-width:3px;border-radius:5px;background:#fff;color:#34483e;font-size:10px;box-sizing:border-box;overflow:hidden}#key-grid .keyboard-104 .map-key{position:absolute}#key-grid .map-key:hover{background:#dff0e7;border-color:#599e7d}#key-grid .map-key:focus-visible{outline:2px solid #137767;outline-offset:1px}#key-grid.search-results{grid-template-columns:repeat(auto-fill,40px);gap:5px}#key-grid.search-results .map-key{width:40px;height:40px}#key-dialog .muted{margin-bottom:0}
#key-grid.full-key-picker{display:block;max-height:65vh;overflow:auto;margin:15px 0}.physical-scroll{overflow-x:auto;padding:4px 0 12px}.full-key-picker .keyboard-case{margin:auto}.picker-tabs{display:flex;gap:6px;padding:10px 0;position:sticky;top:0;background:#fff;z-index:2;border-top:1px solid var(--line)}.picker-tab{border:0;border-radius:6px;background:#f2f5f1;padding:9px 13px;color:#566c5e}.picker-tab.active{background:#dceee3;color:#126349;font-weight:600}.picker-extensions{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:7px;max-height:210px;overflow:auto;padding:3px 2px 8px}.extra-key{border:1px solid #d4ded5;border-bottom-width:3px;border-radius:6px;background:#f8faf6;min-height:48px;padding:8px;color:#30493c;font-size:12px;cursor:pointer}.extra-key:hover{background:#e2f1e6;border-color:#7eab8d}.extra-key:focus-visible{outline:2px solid #137767;outline-offset:1px}#key-description{min-height:40px;max-height:90px;overflow:auto;background:#f0f5f0;border-radius:6px;padding:9px 12px;white-space:normal;font-size:12px;line-height:1.5}#key-grid .map-key:disabled{opacity:.35;cursor:default}#key-dialog .dialog-heading h2{font-size:20px}
#key-grid .picker-tab{border:0;border-radius:6px;background:#f2f5f1;padding:9px 13px;font-size:13px;min-height:38px;color:#566c5e}#key-grid .picker-tab.active{background:#dceee3;color:#126349;font-weight:600}#key-grid .extra-key{min-height:48px;padding:8px;font-size:12px;background:#f8faf6;border-color:#d4ded5}
.profile-list{display:grid;gap:12px;margin:16px 0}.profile-item{display:flex;align-items:center;flex-wrap:wrap;gap:12px;padding:16px;border:1px solid var(--border,#dce2e9);border-radius:10px;background:#fff}.profile-item .field{flex:1;min-width:200px;margin:0}.profile-item input{width:100%}#profile-path{overflow-wrap:anywhere}.section>textarea,.section .field textarea{width:100%;font:inherit;padding:12px;border:1px solid #dce2e9;border-radius:8px}
.resource-usage{display:flex;gap:12px;flex-wrap:wrap;margin:10px 0 4px;font-size:12px;font-variant-numeric:tabular-nums;color:#48655e}.program-switches{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:28px}.program-switch-card{background:white;border:1px solid #dce2e9;border-radius:14px;padding:22px;display:flex;align-items:center;gap:18px}.program-switch-card h2{margin:0 0 8px;font-size:18px}.program-switch-card p{margin:0;font-size:12px;line-height:1.7}.program-toggle{border:0;background:none;display:grid;gap:7px;justify-items:center;white-space:nowrap;cursor:pointer;color:#64746e;font:inherit;font-size:12px}.toggle-track{display:block;width:44px;height:25px;border-radius:30px;background:#b6c4bd;padding:3px}.toggle-track:after{content:'';display:block;background:white;width:19px;height:19px;border-radius:50%;transition:transform .15s}.program-toggle.on{color:#137c67}.program-toggle.on .toggle-track{background:#137c67}.program-toggle.on .toggle-track:after{transform:translateX(19px)}.program-card{margin-bottom:20px}.program-card h2{font-size:18px}.program-path{display:block;overflow-wrap:anywhere;color:#81928d;margin-top:5px;font-size:12px}.rule-checklist{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.rule-choice{display:flex;gap:12px;align-items:center;border:1px solid #e0e8e4;border-radius:9px;padding:13px;cursor:pointer}.rule-choice:has(input:checked){background:#eff8f4;border-color:#99c6b7}.rule-choice input{accent-color:#147d68;width:16px;height:16px;flex-shrink:0}.rule-choice small{display:block;color:#81928d;margin-top:4px}.rule-selection-actions{display:flex;gap:16px;margin-bottom:12px}.exit-program-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px 0;border-bottom:1px solid #edf1ef}.program-save-bar{position:sticky;bottom:0;background:#f6f9f7;border:1px solid #e0e8e4;z-index:2;border-radius:10px}.program-card .card-heading>div{min-width:0}@media(max-width:1050px){.program-switches{grid-template-columns:1fr}.rule-checklist{grid-template-columns:1fr}.program-save-bar{position:static;flex-wrap:wrap}}
.input-with-unit{display:flex;align-items:center;gap:9px}.input-with-unit .field{flex:1;min-width:0;margin:0}.input-unit{flex-shrink:0;color:#64746e;font-size:13px}.category-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}
.gesture-card>h3{grid-column:1/-1}.gesture-card>h3 .check{margin:0;font-weight:700}.gesture-card:has(>h3 input:not(:checked)){background:#fafcfb}
#key-grid .map-key.dual-legend{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:2px;line-height:1;font-size:12px}

.auto-shift-scope{grid-column:1/-1;display:flex;align-items:center;gap:20px;flex-wrap:wrap;padding:16px;background:#edf5f1;border-radius:10px;margin-bottom:20px}

.macro-code-dialog{width:min(800px,94vw)}.macro-code-dialog textarea{width:100%;min-height:320px;max-height:60vh;resize:vertical;font-family:monospace;white-space:pre;overflow:auto;margin:14px 0}
