*{box-sizing:border-box}:root{--bg: #0a0a0a;--fg: #00ff41;--fg-dim: #00aa2a;--border: #003300;--accent: #00ff41;--input-bg: #0d0d0d;--input-border: #004400;--space-xs: clamp(.25rem, .5vw, .5rem);--space-sm: clamp(.5rem, 1vw, .75rem);--space-md: clamp(.75rem, 1.5vw, 1rem);--space-lg: clamp(1rem, 2vw, 1.5rem);--font-xs: clamp(.7rem, 1.2vw, .8rem);--font-sm: clamp(.8rem, 1.5vw, .9rem);--font-base: clamp(.85rem, 1.8vw, 1rem);--font-lg: clamp(1rem, 2.2vw, 1.25rem);--font-xl: clamp(1.1rem, 2.5vw, 1.5rem);--radius: clamp(3px, .5vw, 6px)}html{font-size:clamp(14px,1.2vw + 10px,16px)}html,body{height:100%;margin:0;overflow:hidden}body{font-family:SF Mono,Fira Code,Consolas,Monaco,monospace;background:var(--bg);color:var(--fg);padding:var(--space-md);line-height:1.4}#app{height:100%;width:100%;max-width:min(var(--app-max-width, 1200px),98vw);margin:0 auto;display:flex;flex-direction:column}.top-bar{display:flex;align-items:center;gap:var(--space-md);margin-bottom:var(--space-md);flex-shrink:0}.top-bar .logo{max-width:clamp(120px,15vw,220px);height:auto;display:block}.top-bar .header-text{flex:1}.top-bar h1{margin:0;font-size:var(--font-lg)}.top-bar p{margin:var(--space-xs) 0 0;font-size:var(--font-sm);color:var(--fg-dim)}.two-col{display:grid;grid-template-columns:1.4fr 1fr;grid-template-rows:minmax(0,1fr);gap:var(--space-md);flex:1;min-height:0;overflow:hidden;align-items:stretch}.app-footer{flex-shrink:0;margin-top:var(--space-md);padding-top:var(--space-sm);border-top:1px solid var(--border);font-size:var(--font-xs);color:var(--fg-dim)}.app-footer a,.app-footer .footer-link{color:var(--fg-dim);text-decoration:none;background:none;border:none;padding:0;font:inherit;cursor:pointer}.app-footer a:hover,.app-footer .footer-link:hover{color:var(--accent)}.app-footer .footer-sep{margin:0 var(--space-xs);opacity:.6}.legal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000d9;display:flex;align-items:center;justify-content:center;z-index:1000;padding:var(--space-md)}.legal-modal{background:var(--bg);border:2px solid var(--border);border-radius:var(--radius);max-width:36rem;max-height:80vh;overflow:hidden;display:flex;flex-direction:column}.legal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-sm) var(--space-md);border-bottom:1px solid var(--border);flex-shrink:0}.legal-header h2{margin:0;font-size:var(--font-base)}.legal-header button{background:none;border:none;color:var(--fg);font-size:1.5rem;cursor:pointer;padding:0 .25rem;line-height:1}.legal-header button:hover{color:var(--accent)}.legal-content{padding:var(--space-md);overflow:auto;font-size:var(--font-sm);color:var(--fg-dim);white-space:pre-wrap;margin:0;flex:1;min-height:0}@media(max-width:700px){.two-col{grid-template-columns:1fr;grid-template-rows:auto;max-height:none}html,body{overflow:auto}}.col-left,.col-right{display:flex;flex-direction:column;min-height:0;overflow:hidden}.col-left{gap:var(--space-sm);overflow-y:auto}.col-right .log-section{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}.log-section h2{flex-shrink:0}.log-section #log{flex:1;min-height:0}section{padding:var(--space-sm);background:#00280026;border:1px solid var(--border);border-radius:var(--radius);transition:box-shadow .2s,border-color .2s;flex-shrink:0}.col-left section{margin-bottom:0}section.active{border-color:var(--fg-dim);box-shadow:0 0 16px #00ff4133}h1{margin:0;font-size:var(--font-xl);color:var(--fg)}h2{margin:0 0 var(--space-sm);font-size:var(--font-xs);color:var(--fg-dim);text-transform:uppercase;letter-spacing:.05em}button{padding:var(--space-sm) var(--space-md);background:var(--input-bg);color:var(--fg);border:2px solid var(--input-border);font-family:inherit;font-size:var(--font-base);cursor:pointer;border-radius:var(--radius)}button:hover:not(:disabled){border-color:var(--accent);background:#00ff4114;box-shadow:0 0 12px #00ff4140}button:disabled{opacity:.5;cursor:not-allowed}#flashBtn{padding:var(--space-sm) var(--space-lg);font-size:var(--font-base);border-width:2px}#flashBtn:hover:not(:disabled){box-shadow:0 0 16px #00ff4166}.firmware-select-wrap{display:flex;gap:var(--space-sm);align-items:center}.firmware-select-wrap select{flex:1;min-width:0}.firmware-select-wrap #versionSelect{flex:0 0 auto;max-width:10em}.firmware-select-wrap #downloadBtn{flex-shrink:0}select{padding:var(--space-sm) var(--space-sm);min-width:100%;width:100%;background:var(--input-bg);color:var(--fg);border:2px solid var(--input-border);font-family:inherit;font-size:var(--font-base);border-radius:var(--radius)}select:hover:not(:disabled){border-color:var(--fg-dim)}select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 8px #00ff4133}select option{background:#0a0a0a;color:var(--fg)}.port-row{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.port-row #portLabel{color:var(--fg-dim);font-size:var(--font-sm)}input[type=checkbox]{accent-color:var(--accent)}.confirm-label{font-size:var(--font-xs);line-height:1.35}input[type=file]{color:var(--fg);font-family:inherit}input[type=file]::file-selector-button{padding:var(--space-xs) var(--space-sm);background:var(--input-bg);color:var(--fg);border:2px solid var(--input-border);font-family:inherit;cursor:pointer;border-radius:var(--radius)}input[type=file]::file-selector-button:hover{border-color:var(--accent)}.notes{font-size:var(--font-sm);color:var(--fg-dim);margin-top:var(--space-sm)}.broken-warning{font-size:var(--font-sm);color:#f44;margin:var(--space-sm) 0 0;font-weight:600}.firmware-select-wrap.version-broken #versionSelect{border-color:#f44;color:#f44}.firmware-select-wrap.version-broken #versionSelect:focus{border-color:#f66;box-shadow:0 0 8px #ff44444d}#log{background:#050505;border:2px solid var(--input-border);padding:var(--space-sm);font-size:var(--font-xs);overflow:auto;white-space:pre-wrap;margin:0;color:var(--fg-dim);border-radius:var(--radius);flex:1;min-height:0}progress{vertical-align:middle;margin-right:var(--space-sm);accent-color:var(--accent)}.firmware-source{margin-top:var(--space-sm);padding-top:var(--space-sm);border-top:1px solid var(--border)}.firmware-source .local-bin-hint{font-size:var(--font-xs);color:var(--fg-dim);margin-bottom:var(--space-xs)}.firmware-source label{display:block;margin-bottom:var(--space-xs)}.firmware-source input[type=file]{margin-top:.25rem}.wifi-options{display:flex;align-items:center;gap:var(--space-sm);flex-wrap:wrap}.wifi-options .console-link{margin:0}.wifi-options button.console-link{border:2px solid var(--input-border)}.wifi-modal .wifi-gui{padding:var(--space-md)}.wifi-requirements{font-size:var(--font-sm);color:var(--fg-dim);margin-bottom:var(--space-md)}.wifi-modal .wifi-gui label{display:block;font-size:var(--font-xs);color:var(--fg-dim);margin-bottom:var(--space-xs)}.wifi-modal .wifi-gui input[type=text],.wifi-modal .wifi-gui input[type=password]{width:100%;padding:var(--space-sm);background:var(--input-bg);color:var(--fg);border:2px solid var(--input-border);font-family:inherit;font-size:var(--font-base);border-radius:var(--radius);margin-bottom:var(--space-sm)}.wifi-modal .wifi-gui input:focus{outline:none;border-color:var(--accent)}.wifi-status{margin-top:var(--space-sm);font-size:var(--font-sm)}.wifi-status.wifi-success{color:var(--accent)}.wifi-status.wifi-error{color:#f66}.wifi-output-wrap{margin-top:var(--space-md);border-top:1px solid var(--input-border);padding-top:var(--space-md)}.wifi-output-label{display:block;font-size:var(--font-xs);color:var(--fg-dim);margin-bottom:var(--space-xs)}.wifi-output{font-family:inherit;font-size:var(--font-sm);background:var(--input-bg);border:2px solid var(--input-border);border-radius:var(--radius);padding:var(--space-sm);max-height:180px;overflow:auto;white-space:pre-wrap;word-break:break-all;margin:0}.console-link{display:inline-block;padding:var(--space-sm) var(--space-md);background:var(--input-bg);color:var(--fg);border:2px solid var(--input-border);font-family:inherit;font-size:var(--font-base);text-decoration:none;border-radius:var(--radius);cursor:pointer}a.console-link{text-decoration:none}.console-link:hover{border-color:var(--accent);background:#00ff4114}:root{--app-max-width: 1200px}.menubar{display:flex;align-items:center;gap:var(--space-md);padding:var(--space-sm) 0;margin-bottom:var(--space-md);border-bottom:1px solid var(--border);flex-shrink:0}.menubar-brand{color:var(--fg);text-decoration:none;font-size:var(--font-base);font-weight:600;margin-right:var(--space-sm)}.menubar-brand:hover{color:var(--accent)}.menubar-link{color:var(--fg-dim);text-decoration:none;font-size:var(--font-sm);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius)}.menubar-link:hover{color:var(--accent);background:#00ff4114}.menubar-link.active{color:var(--accent);font-weight:600}
