*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}button,input,select,textarea{font-family:inherit}body{font-family:Google Sans,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif;background:var(--bg);color:var(--text);line-height:1.6;-webkit-font-smoothing:antialiased}main{max-width:640px;margin:0 auto;padding:2rem 1.5rem 4rem}h2{font-size:1.1rem;font-weight:600;margin-bottom:.75rem;color:var(--text)}input[type=file]{display:block;margin-bottom:1rem;font-size:.88rem}select{display:block;width:100%;padding:.5rem 2rem .5rem .75rem;font-size:.93rem;border:1px solid var(--border);border-radius:8px;background:var(--card-bg);color:var(--text);margin-bottom:1rem;box-shadow:var(--shadow);appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='%236b7280' viewBox='0 0 16 16'%3E%3Cpath d='M8 11L3 6h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .75rem center}select:focus,button:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.banner{padding:.75rem 1rem;border:1px solid;border-radius:8px;font-size:.88rem;line-height:1.5}.banner-heading{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;margin-bottom:.3rem}.banner--info{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text);& a{color:var(--info-text);text-decoration:underline}}.banner--warning{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text);& a{color:var(--warning-text);text-decoration:underline}}.banner--error{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.banner--success{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}.banner--accent{background:var(--primary-light);border-color:var(--accent-border);color:var(--accent-text)}#step-connect>.banner{margin-bottom:1.5rem}#device-unknown-warning,#existing-tgz-warning{margin-bottom:1.5rem}#error-message{margin-top:1rem}.install-instructions .banner--warning{margin-bottom:.75rem}.install-instructions .banner--success{margin-top:0}.step .banner--success{margin-top:1rem}details.banner--accent{font-size:.8rem;line-height:1.55;& summary{cursor:pointer;font-size:.83rem}& ol{margin:.5rem 0 0 1.25rem;font-size:.8rem;color:inherit}& li{margin-bottom:.25rem}}.selection-cards{display:flex;flex-direction:column;gap:.75rem}.selection-card{display:flex;align-items:flex-start;gap:.75rem;padding:1rem 1.25rem;background:var(--card-bg);border:2px solid var(--border-light);border-radius:10px;cursor:pointer;transition:border-color .15s,box-shadow .15s;box-shadow:var(--shadow);&:hover{border-color:var(--border)}& input[type=radio]{margin-top:.2rem;flex-shrink:0;accent-color:var(--primary)}}.selection-card-icon{width:28px;height:28px;flex-shrink:0;color:var(--text-secondary)}.selection-card-title{display:flex;align-items:center;gap:.5rem;font-weight:600;font-size:.93rem;color:var(--text);margin-bottom:.25rem}.selection-card-desc{font-size:.83rem;color:var(--text-secondary);line-height:1.5}.recommended-label{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--primary);margin-bottom:.35rem}.selection-card--selected{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary),var(--shadow)}.selection-card--disabled{opacity:.45;cursor:not-allowed;&:hover{border-color:var(--border-light)}}.selection-card--recommended{border-left-color:var(--primary)}.selection-card--btn{text-align:left;width:100%;&:hover{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary),var(--shadow)}&:disabled{opacity:.45;cursor:not-allowed;box-shadow:var(--shadow);&:hover{border-color:var(--border-light);box-shadow:var(--shadow)}}}.selection-card--danger{&:not(.selection-card--disabled){border-color:var(--error-border);&:hover{border-color:var(--error-text)}}&.selection-card--selected{border-color:var(--error-text);box-shadow:0 0 0 1px var(--error-text),var(--shadow)}& input[type=radio]{accent-color:var(--error-text)}}#nm-uninstall-options{display:flex;flex-direction:column;margin-top:.5rem;margin-left:1.5rem;& input[type=checkbox]{accent-color:var(--error-text)}}#mode-patches-hint{margin-top:15px}button{font-size:.9rem;padding:.55rem 1.25rem;border-radius:8px;border:1px solid var(--border);cursor:pointer;font-weight:500;transition:all .15s ease;&.primary{background:var(--primary);color:#fff;border-color:var(--primary);box-shadow:var(--shadow);&:hover{background:var(--primary-hover);border-color:var(--primary-hover);box-shadow:var(--shadow-md)}}&.secondary{background:var(--card-bg);color:var(--text);box-shadow:var(--shadow);&:hover{background:#f9fafb;border-color:#9ca3af}}&.danger{background:#fff;color:var(--error-text);border-color:var(--error-border);&:hover{background:var(--error-bg);border-color:var(--error-text)}}&:disabled{opacity:.4;cursor:not-allowed;box-shadow:none}&.btn-success,&.btn-success:hover{background:var(--success-text);border-color:var(--success-text);color:#fff;cursor:default;opacity:.7}}.info-card{background:var(--card-bg);border:1px solid var(--border-light);border-radius:10px;padding:.75rem 1.25rem;margin-bottom:1rem;box-shadow:var(--shadow)}.info-row{display:flex;justify-content:space-between;align-items:center;padding:.5rem 0;border-bottom:1px solid var(--border-light);&:last-child{border-bottom:none}.label{font-weight:500;color:var(--text-secondary);font-size:.85rem;text-transform:uppercase;letter-spacing:.03em}.value{font-family:SF Mono,Fira Code,Cascadia Code,monospace;font-size:.88rem}}.step-nav{margin-bottom:1.5rem;& ol{display:flex;list-style:none;gap:0;counter-reset:step}& li{flex:1;text-align:center;padding:.5rem 0;font-size:.8rem;font-weight:500;color:var(--text-secondary);position:relative;counter-increment:step;&:before{content:counter(step);display:block;width:1.6rem;height:1.6rem;line-height:1.6rem;margin:0 auto .3rem;border-radius:50%;background:var(--border-light);color:var(--text-secondary);font-size:.75rem;font-weight:600}&.active{color:var(--primary);font-weight:600;&:before{background:var(--primary);color:#fff}}&.done{color:var(--success-text);&:before{background:var(--success-text);color:#fff;content:"\2713"}}+li:after{content:"";position:absolute;top:1.3rem;right:50%;width:100%;height:2px;background:var(--border-light);z-index:-1}&.done+li:after,&.done+li.active:after{background:var(--success-text)}}}.modal{border:none;border-radius:12px;padding:0;max-width:560px;width:calc(100% - 2rem);max-height:80vh;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);margin:0;box-shadow:0 20px 60px #00000026,0 0 0 1px #0000000d;&::backdrop{background:#0006}}.modal-content{display:flex;flex-direction:column;max-height:80vh}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.25rem;border-bottom:1px solid var(--border-light);flex-shrink:0;& h2{margin-bottom:0;font-size:1rem}}.modal-close{background:none;border:none;font-size:1.4rem;color:var(--text-secondary);cursor:pointer;padding:0 .25rem;line-height:1;box-shadow:none;&:hover{color:var(--text)}}.modal-body{padding:1.25rem;overflow-y:auto;font-size:.88rem;color:var(--text-secondary);line-height:1.7;& h3{font-size:.88rem;font-weight:600;color:var(--text);margin-top:1.25rem;margin-bottom:.5rem}& p{margin-bottom:.75rem}& ol,ul{margin:0 0 .75rem 1.25rem}& li{margin-bottom:.5rem}& a{color:var(--primary);text-decoration:none;&:hover{text-decoration:underline}}& code{font-size:.8rem;background:#f1f5f9;padding:.1rem .35rem;border-radius:3px}}.modal-footer{padding:1rem 1.25rem;border-top:1px solid var(--border-light);display:flex;justify-content:flex-end}.feedback{display:flex;align-items:center;gap:.75rem}.feedback-text{font-size:.88rem}.feedback-buttons{display:flex;gap:.35rem;margin-left:auto}.feedback-btn{font-size:1rem;padding:.2rem .55rem;background:transparent;border:1px solid var(--info-border);border-radius:999px;cursor:pointer;transition:all .15s ease;color:inherit;line-height:1.3}.feedback-btn:hover{background:#ffffff80}.feedback-btn--selected{background:#ffffff80;border-color:var(--info-text)}.feedback-thanks{font-size:.85rem;font-weight:600}.hero{margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:1px solid var(--border-light)}h1{font-size:1.75rem;font-weight:700;letter-spacing:-.02em}.hero-accent{color:var(--primary);font-weight:600}.beta-pill{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;background:var(--primary);color:#fff;padding:.35rem .7rem;border-radius:10px;vertical-align:middle;position:relative;top:-.15rem;margin-left:5px}.subtitle{color:var(--text-secondary);font-size:.95rem;margin-top:.25rem}.step{margin-bottom:1rem;& p{color:var(--text-secondary);margin-bottom:1rem;font-size:.93rem;line-height:1.6}& a{color:var(--primary);text-decoration:none;&:hover{text-decoration:underline}}.fallback-hint{margin-top:.5rem;margin-bottom:1rem;font-size:.78rem;color:var(--text-secondary);line-height:1.5}.install-summary{font-size:.93rem;color:var(--text);line-height:1.6;margin-bottom:.5rem}}.step-actions{display:flex;justify-content:space-between;gap:.75rem;margin-top:1.25rem;.primary:first-child,>[hidden]+.primary{margin-left:auto}}.step-actions-right{display:flex;gap:.75rem;margin-left:auto}@media(max-width:500px){.step-actions:has(.step-actions-right){flex-wrap:wrap}.step-actions-right{width:100%;justify-content:flex-end}}select+.fallback-hint{margin-top:-.5rem}.restart-hint{margin-top:1rem;font-size:.78rem;color:var(--text-muted)}.site-footer{max-width:640px;margin:0 auto;padding:1.5rem 1.5rem 2rem;border-top:1px solid var(--border-light);text-align:center;font-size:.8rem;color:var(--text-secondary);& a{color:var(--text-secondary);text-decoration:underline;&.site-footer-link{color:var(--primary)}&:hover{color:var(--text)}}& p{margin-bottom:.75rem;&:last-child{margin-bottom:0}}}.site-footer-attribution{font-size:.7rem}#connect-unsupported-hint{margin-top:20px;color:var(--error-text);& a{color:var(--error-text);text-decoration:underline}}.device-unknown-ack{display:flex;align-items:flex-start;gap:.6rem;padding:.5rem 0;font-size:.83rem;color:var(--text);cursor:pointer;& input[type=checkbox]{flex-shrink:0;margin-top:.15rem;accent-color:var(--primary)}}.patch-container-scroll{max-height:50vh;overflow-y:auto;border:1px solid var(--border);border-radius:5px}.patch-file-section{background:var(--card-bg);border-bottom:1px solid var(--border-light);&:last-child{border-bottom:none}& summary{padding:.6rem .75rem;cursor:pointer;display:flex;align-items:center;font-weight:500;font-size:.93rem;user-select:none;transition:background .1s;list-style:none;&::-webkit-details-marker{display:none}&:before{content:"\203a";display:inline-block;width:1rem;margin-right:.35rem;flex-shrink:0;text-align:center;font-size:1.1rem;font-weight:600;color:var(--text-secondary);transition:transform .15s ease}.patch-count{margin-left:auto}&:hover{background:#f9fafb}}&[open] summary{border-bottom:1px solid var(--border-light);&:before{transform:rotate(90deg) translate(.1rem)}}}.patch-count{font-weight:400;font-size:.8rem;background:var(--primary-light);color:var(--primary);padding:.15rem .6rem;border-radius:10px}.patch-list{padding:.25rem 0}.patch-item{padding:.4rem 1rem;+.patch-item{border-top:1px solid var(--border-light)}}.patch-header{display:flex;align-items:center;gap:.5rem;cursor:pointer;font-size:.85rem;& input{flex-shrink:0;accent-color:var(--primary)}}.patch-name{font-weight:500}.patch-name-none{color:var(--text-secondary)}.patch-disabled{opacity:.55}.patch-incompatible{font-size:.7rem;font-weight:500;color:var(--error, #c0392b);flex-shrink:0}.patch-desc-toggle{flex-shrink:0;margin-left:auto;background:none;border:none;padding:0 .3rem;font-size:.7rem;color:var(--text-secondary);cursor:pointer;box-shadow:none;opacity:.6;transition:opacity .1s;&:hover{opacity:1}}.patch-group{background:#f8fafc;border-left:3px solid var(--primary);margin:.35rem .5rem;border-radius:0 6px 6px 0;.patch-item{padding:.4rem .75rem}}.patch-group-label{font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em;color:var(--primary);padding:.45rem .75rem 0}.step .patch-description{margin-top:.3rem;margin-left:1.6rem;margin-bottom:0;font-size:.72rem;color:var(--text-secondary);white-space:pre-line;line-height:1.4;padding:.25rem 0}.patch-description[hidden]{display:none}#build-actions{display:flex;justify-content:space-between;gap:.75rem;margin-top:1.25rem}.build-header{display:flex;align-items:center;gap:.75rem;margin-bottom:.25rem;& p{margin-bottom:0;font-weight:500;color:var(--text)}}.spinner{width:22px;height:22px;border:2.5px solid var(--border-light);border-top-color:var(--primary);border-radius:50%;animation:spin .7s linear infinite;flex-shrink:0}@keyframes spin{to{transform:rotate(360deg)}}.build-log{margin-top:.75rem;padding:.75rem 1rem;background:#0f172a;color:#94a3b8;border-radius:6px;font-family:SF Mono,Fira Code,Cascadia Code,monospace;font-size:.73rem;white-space:pre-wrap;height:calc(15em + 1.5rem);overflow-y:auto;line-height:1.5}.log-details{margin-top:.5rem;margin-bottom:.25rem;& summary{font-size:.83rem;color:var(--text-secondary);cursor:pointer;padding:.25rem 0;&:hover{color:var(--text)}}}.done-log{height:calc(10.5em + 1.5rem)}.error-log{margin-top:.75rem;padding:.75rem 1rem;background:#0f172a;color:#e2e8f0;border-radius:6px;font-family:SF Mono,Fira Code,Cascadia Code,monospace;font-size:.78rem;white-space:pre-wrap;max-height:300px;overflow-y:auto}.selected-patches-list{margin:0 0 1rem;padding:.5rem 1rem .5rem 1.75rem;font-size:.85rem;color:var(--text-secondary);line-height:1.5;background:var(--card-bg);border:1px solid var(--border-light);border-radius:8px;box-shadow:var(--shadow);& li{padding:.05rem 0}}#firmware-download-url{display:inline-block;margin:.4rem 0;padding:.3rem .6rem;font-size:.7rem;word-break:break-all;color:#64748b;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:4px}#firmware-verify-notice{font-size:12px}.nm-config-options{display:flex;flex-direction:column}.nm-config-item{display:flex;align-items:flex-start;gap:.75rem;padding:.6rem 0;color:var(--text);cursor:pointer;+.nm-config-item{border-top:1px solid var(--border-light)}& input[type=checkbox]{flex-shrink:0;margin-top:.2rem;accent-color:var(--primary);&:disabled{opacity:.6}}}.nm-config-text{user-select:none}.nm-config-title{display:block;font-weight:600;font-size:.93rem;color:var(--text)}.nm-config-desc{display:block;font-size:.83rem;color:var(--text-secondary);line-height:1.5;margin-top:.1rem}.install-instructions{margin-top:1rem;background:var(--card-bg);border:1px solid var(--border-light);border-radius:10px;padding:1rem 1.25rem}.connect-steps{list-style:none;margin:.5rem 0 1rem;padding-left:2.35rem;counter-reset:connect-step;& li{padding:.4rem 0;font-size:.88rem;color:var(--text-secondary);line-height:1.6;counter-increment:connect-step;position:relative;&:before{content:counter(connect-step);display:inline-flex;align-items:center;justify-content:center;width:1.6rem;height:1.6rem;border-radius:50%;background:var(--primary);color:#fff;font-size:.78rem;font-weight:700;line-height:1;position:absolute;left:-2.35rem;top:calc(.55rem - 4px)}}}.install-steps{margin:.25rem 0 0 1.25rem;font-size:.88rem;color:var(--text-secondary);line-height:1.7;& li{padding:.15rem 0}& code{display:inline-block;background:var(--bg);border:1px solid var(--border-light);border-radius:4px;padding:.15rem .4rem;font-family:SF Mono,Fira Code,Cascadia Code,monospace;font-size:.82rem;word-break:break-all}}
