:root{--bg:#f1f5f1;--ink:#183f45;--muted:#718681;--line:#dbe5df;--teal:#16877f;--dark:#153b42;--mint:#94e2c2;color-scheme:light;font-family:"Segoe UI","Microsoft YaHei",system-ui,sans-serif;color:var(--ink);background:var(--bg);font-size:13px}*{box-sizing:border-box}body{margin:0;min-height:100vh;display:flex;flex-direction:column}button,input,select{font:inherit}button,select{color:var(--ink);background:white;border:1px solid #ccdad5;border-radius:7px;padding:7px 11px;cursor:pointer;white-space:nowrap}button:hover:not(:disabled){background:#e4f2e9}button:disabled{opacity:.45;cursor:default}.primary{background:var(--teal);border-color:var(--teal);color:white;font-weight:600}.primary:hover:not(:disabled){background:#126b65}.text-button{border:0;background:none;color:#4f716b;padding:5px 7px;font-size:12px}.small-button,.mini{font-size:12px;padding:5px 8px}input:not([type=range]):not([type=checkbox]){min-width:0;border:1px solid #ccdad5;border-radius:6px;background:#fff;padding:8px;color:var(--ink)}input[type=checkbox]{accent-color:var(--teal);vertical-align:middle}input[type=range]{width:100%;margin:8px 0 4px;height:16px;accent-color:var(--teal);cursor:pointer}button:focus-visible,select:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid #7acbbb;outline-offset:2px}h1,h2,h3,p{margin:0}h2{font-size:14px;font-weight:650}h3{font-size:14px}p{color:var(--muted);font-size:12px;line-height:1.7}small{font-size:11px;font-weight:400;color:var(--muted)}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}[hidden]{display:none!important}.topbar{display:flex;align-items:center;gap:18px;flex-wrap:wrap;padding:12px 20px;background:white;border-bottom:1px solid var(--line)}.brand{display:flex;gap:10px;align-items:center}.brand-icon{background:var(--dark);color:var(--mint);border-radius:9px;width:38px;height:38px;display:grid;place-items:center;font:700 18px Consolas,monospace}.brand h1{font-size:17px;letter-spacing:-.3px}.brand p{font-size:10px;letter-spacing:1px;color:var(--teal)}.toolbar,.settings{display:flex;gap:7px;align-items:center}.settings{margin-left:auto;font-size:12px;color:var(--muted)}.settings select{padding:6px}.status{margin-left:6px;white-space:nowrap;color:var(--teal)}.status:before{content:'';display:inline-block;width:7px;height:7px;background:#a6b6ac;border-radius:50%;margin-right:7px}.status.running:before{background:#20a588;box-shadow:0 0 0 3px #def2e9}.layout{display:grid;grid-template-columns:minmax(380px,1.22fr) minmax(280px,.9fr) minmax(300px,1fr);gap:14px;padding:16px 20px;max-width:1900px;width:100%;margin:0 auto;flex:1;align-items:start}.column{display:flex;flex-direction:column;gap:12px;min-width:0}.card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:16px;min-width:0}.card-title{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:13px}.card-title>span,.card-title>label{font-size:11px;color:var(--muted)}.card-title h2 small{margin-left:5px}.card-title button{margin:-5px -7px -5px 0}.display-card{padding:18px}.display-area{background:var(--dark);border-radius:9px;padding:23px 14px 10px;box-shadow:inset 0 1px 6px #0002}.digits{display:flex;gap:3px;width:100%}.digit{width:12.5%;height:auto;overflow:visible}.digit .segment{fill:#294a4c}.digit-labels{display:flex;justify-content:space-around;color:#86a49e;font:10px Consolas,monospace;letter-spacing:4px;padding-top:11px}.empty-state{padding:18px 0 9px;display:flex;gap:12px;align-items:center}.empty-state strong{font-size:13px}.empty-state p{font-size:11px}.empty-state button{margin-left:auto}.file-badge{font:700 13px Consolas,monospace;display:grid;place-items:center;flex-shrink:0;width:38px;height:42px;background:#e9f2eb;color:#298779;border:1px solid #d9e7db;border-radius:8px}.display-note{font-size:11px;color:var(--muted);display:flex;gap:7px;align-items:center;margin-top:14px}.display-note i{width:6px;height:6px;background:#75b9a0;border-radius:100%}.file-row{display:flex;gap:12px;align-items:center}.file-row>div{min-width:0;flex:1}.file-row h3{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.metrics{display:grid;grid-template-columns:1fr 1fr 1fr;margin-top:17px;border-top:1px solid var(--line);padding-top:13px}.metrics div{display:flex;flex-direction:column;gap:5px}.metrics span{font-size:11px;color:var(--muted)}.metrics strong{font:600 20px Consolas,monospace}.metrics small{margin-left:4px}.serial-card pre{height:180px;overflow:auto;background:#f4f7f4;border:1px solid #e2eae4;border-radius:7px;padding:12px;font:12px/1.65 Consolas,"Microsoft YaHei",monospace;white-space:pre-wrap;overflow-wrap:anywhere;color:#31564f;margin:0 0 10px}.serial-card form{display:flex;gap:8px}.serial-card form input{flex:1}.serial-options{display:flex;align-items:center;gap:15px;font-size:11px;color:var(--muted);margin-top:10px}.serial-options>span{margin-left:auto;font-family:Consolas,monospace}.keys{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.key{background:#f6f8f4;border:1px solid #dbe5db;border-bottom:3px solid #d1ded3;border-radius:8px;padding:10px 5px;min-height:48px;touch-action:none;user-select:none}.key b{font-size:14px}.key small{display:block;font-size:9px;line-height:1.6}.key.pressed{background:#16877f;color:white;border-color:#116c65}.key.pressed small{color:#c1eddf}.key.locked:after{content:' ·';font-weight:bold}.key:disabled{opacity:.25}.card-footer{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-top:9px;font-size:11px;color:var(--muted)}.card-footer .text-button{font-size:11px}.leds{display:flex;justify-content:space-between;gap:6px;padding-top:4px}.led{text-align:center;font:10px Consolas,monospace;color:var(--muted)}.led i{display:block;width:21px;height:21px;border-radius:50%;margin:0 auto 8px;background:#e5ece6;border:1px solid #d4e1d5}.outputs{display:flex;flex-direction:column;gap:14px}.outputs>div{display:flex;align-items:center;gap:9px;font-size:12px}.outputs strong{margin-left:auto;font-size:12px}.status-dot{width:8px;height:8px;border-radius:50%;background:#d6e2d8}.status-dot.on{background:#1caa88;box-shadow:0 0 0 4px #e0f5ea}.dac-symbol{font-size:20px;color:var(--teal);line-height:8px}.sound-toggle{font-size:11px;color:var(--muted)}.rtc{font:500 20px Consolas,monospace;letter-spacing:.6px;padding:5px 0}.connection-row{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:10px 0;font-size:12px}.connection-row select{font-size:11px;padding:5px;max-width:190px}.slider-label{display:flex;justify-content:space-between;align-items:baseline;font-size:12px;margin-top:12px}.slider-label small{margin-left:6px;font-size:10px}.slider-label output{font:600 14px Consolas,monospace;white-space:nowrap}.sensor-read{font-size:10px}.extra-input{margin-top:9px}.extra-input summary,.eeprom-card summary{font-size:11px;color:var(--muted);cursor:pointer}.eeprom{display:grid;grid-template-columns:25px repeat(8,1fr);gap:4px;font:11px/1.4 Consolas,monospace;margin-bottom:7px}.eeprom .address{color:#9aaca3;font-size:10px}.eeprom span{border-radius:3px;text-align:center;color:#9aaca3}.eeprom span.written{background:#e1f3e7;color:#14755f}.eeprom-card p{font-size:10px;margin-top:8px}.debug-card summary{cursor:pointer;font-weight:600;font-size:12px}.debug-card summary>span{font-size:10px;font-weight:400;float:right;color:var(--muted)}.registers{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin:14px 0;font:11px Consolas,monospace}.registers span{background:#f4f7f4;padding:6px;border-radius:4px}.registers b{float:right}.debug-actions{display:flex;align-items:center;flex-wrap:wrap;gap:7px;font-size:11px}.debug-actions button{font-size:11px;padding:5px 7px}.debug-actions input{width:65px}.debug-card p{font-size:10px;margin-top:8px}footer{display:flex;align-items:center;gap:20px;color:var(--muted);font-size:11px;padding:8px 22px;border-top:1px solid var(--line);background:#f8faf7}footer>span:nth-child(2){margin-left:auto}footer button{font-size:11px!important}.alert{position:fixed;z-index:20;top:76px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:15px;background:#fff7e9;border:1px solid #e3cfac;color:#82571a;border-radius:9px;padding:12px 16px;max-width:90vw;box-shadow:0 6px 25px #0001}.alert button{border:0;background:none;font-size:18px}dialog{max-width:650px;width:calc(100% - 30px);max-height:85vh;overflow:auto;border:1px solid var(--line);border-radius:15px;padding:24px;color:var(--ink);box-shadow:0 30px 100px #153b4230}dialog::backdrop{background:#153b4250;backdrop-filter:blur(3px)}.dialog-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.dialog-head button{border:0;font-size:20px}.dialog-head h2{font-size:18px}dialog li{font-size:13px;line-height:1.9;margin-bottom:8px}dialog a{color:var(--teal)}#diagnostics p{padding:10px 0;border-bottom:1px solid var(--line)}#drop-zone{position:fixed;inset:12px;z-index:50;background:#e9f6eeee;backdrop-filter:blur(6px);border:3px dashed var(--teal);border-radius:18px;display:grid;place-items:center;font-size:24px;font-weight:600;pointer-events:none}@media(min-width:1500px){.layout{gap:18px}.card{padding:19px}.display-area{padding:40px 20px 16px}.serial-card pre{height:240px}.key{min-height:56px}.topbar{padding:14px 22px}}@media(max-width:1199px){.layout{grid-template-columns:1fr 1fr}.display-column{grid-column:1/-1;display:grid;grid-template-columns:1.2fr 1fr;align-items:start}.display-card{grid-column:1;grid-row:1/3}.firmware-card{grid-column:2}.serial-card{grid-column:2}.debug-card{grid-column:1/-1}.serial-card pre{height:110px}.settings{margin-left:0}}@media(max-width:700px){.topbar{padding:12px;gap:12px}.brand{width:100%}.brand h1{font-size:16px}.toolbar{width:100%;flex-wrap:wrap}.toolbar button{padding:7px 9px}.settings{flex-wrap:wrap;gap:6px}.layout{display:flex;flex-direction:column;padding:12px;gap:12px}.column{width:100%;display:flex}.card{padding:14px}.display-area{padding-top:20px}.empty-state{flex-wrap:wrap}.empty-state button{margin-left:50px}.digits{gap:1px}.serial-card pre{height:150px}.settings select{font-size:11px}.header-actions{margin-left:auto}footer{flex-wrap:wrap;padding:9px 12px;gap:5px 10px}footer>span:nth-child(2){margin-left:0}.rtc{font-size:21px}.alert{top:15px;min-width:90vw}.eeprom{font-size:12px}.key{min-height:56px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

.digit{flex:1 1 0;min-width:0;width:0}.key.pressed:hover{background:#16877f}@media(max-width:700px){.display-column{align-items:stretch}}@media(min-width:1200px) and (max-height:950px){.layout{gap:12px;padding:12px 18px}.column{gap:10px}.card{padding:12px}.card-title{margin-bottom:9px}.display-card{padding:16px}.display-area{padding-top:18px}.key{min-height:42px;padding:7px 4px}.keys{gap:6px}.serial-card pre{height:140px}.outputs{gap:11px}.slider-label{margin-top:8px}.connection-row{margin:8px 0}.eeprom{gap:2px}.card-footer{margin-top:7px}.topbar{padding:10px 18px}.metrics{margin-top:13px}.rtc{font-size:19px}}

.frequency-entry{display:flex;align-items:center;gap:6px}.frequency-entry input{width:105px;text-align:right;font-family:Consolas,monospace;font-weight:600}
.header-actions{display:flex;align-items:center;gap:8px}.author{display:flex;align-items:center;border:1px solid var(--line);border-radius:8px;background:#f6faf6;font-size:12px}.author>*{border:0;background:none;border-radius:0;padding:5px 10px;font-size:12px;color:var(--ink);text-decoration:none;white-space:nowrap}.author>*+*{border-left:1px solid var(--line)}.author a{color:var(--teal)}.author a:hover,.author>button:hover:not(:disabled){background:#e7f1eb}.author-name{display:flex;align-items:center;gap:6px;font-weight:600}.author-name i{font-style:normal;width:20px;height:20px;border-radius:6px;background:var(--dark);color:var(--mint);display:grid;place-items:center;font-size:11px}.about-avatar{width:52px;height:52px;border-radius:14px;background:var(--dark);color:var(--mint);display:grid;place-items:center;font-size:22px;font-weight:600}#about-dialog{max-width:420px}#about-dialog h2{font-size:18px;margin-bottom:8px}.about-list{margin:18px 0 0;display:grid;gap:14px}.about-list dt{font-size:11px;color:var(--muted);margin-bottom:3px}.about-list dd{margin:0;font-size:14px}.about-list a{text-decoration:none}.about-list a:hover{text-decoration:underline}
