.firmware-main{max-width:850px;margin:auto;display:grid;gap:17px}
.firmware-main .intro{padding:55px 0 20px}
.firmware-main .intro h1{font-size:clamp(39px,5vw,62px)}
.firmware-main .intro p{max-width:790px}
.warning{border-left-color:#d7a662;background:#302a27;color:#ded0bb}
.warning strong{color:#ffe0ac}
.warning a{color:#b4edcb}
.file-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:20px}
.file-grid label{display:grid;gap:8px;color:#c5dfd5;font-size:12px;font-weight:700;min-width:0}
.file-grid input{width:100%;color:#cedfda;background:#0e1c26;border:1px solid #37535d;border-radius:8px;padding:10px;font-size:12px}
.file-grid small{font-weight:400;color:#95b3ad;overflow-wrap:anywhere}
.file-grid .backup-file{grid-column:1/-1}
.hosted-package{display:grid;align-content:start;gap:11px;min-width:0;padding:15px;border:1px solid #37535d;border-radius:8px;background:#142832;color:#c5dfd5;font-size:12px}
.hosted-package .button{justify-self:start;white-space:normal;text-align:center}
.hosted-package small{line-height:1.5}
.selection-state{color:#a9d9c4;font-size:12px;margin:13px 0 0}
.instructions{color:#bed1ce;font-size:13px;line-height:1.65;padding-left:22px}
.instructions li{margin-bottom:5px}
.firmware-main .confirm{align-items:flex-start;line-height:1.5;margin:21px 0 16px}
.firmware-main .confirm input{margin-top:3px;accent-color:#8bdcb6}
.firmware-main .status-card{min-height:150px}
.firmware-main .hint{white-space:normal}
.firmware-main .log{max-height:220px}
.firmware-main [hidden]{display:none!important}
.backup-controls{margin-top:16px}
@media(max-width:620px){.file-grid{grid-template-columns:1fr}.firmware-main .intro{padding:36px 0 12px}}
.logo-step summary{display:inline-flex;align-items:center;gap:8px;cursor:pointer;list-style:none;border:1px solid #42606a;border-radius:8px;padding:10px 15px;font-size:12px;font-weight:700;color:#dbedeb;background:#19303b}
.logo-step summary::-webkit-details-marker{display:none}
.logo-step summary::before{content:"▸";transition:transform .15s}
.logo-step[open] summary::before{transform:rotate(90deg)}
.logo-step[open] summary{margin-bottom:6px}
.logo-step summary:hover{border-color:#93dfbe}
#logoGate.ready{color:#a9e8c8}
.hosted-package{position:relative;transition:border-color .25s,box-shadow .25s,opacity .25s,transform .25s}
.hosted-package .selected-badge{position:absolute;top:12px;right:12px;padding:3px 9px;border-radius:999px;background:#8bdcb6;color:#11302b;font-size:11px;font-weight:700;opacity:0;transform:scale(.6);transition:opacity .2s,transform .25s cubic-bezier(.3,1.6,.5,1)}
.hosted-package.selected{border-color:#8bdcb6;background:#173a30;box-shadow:0 0 0 1px #8bdcb6;animation:package-picked .7s ease-out}
.hosted-package.selected .selected-badge{opacity:1;transform:scale(1)}
.file-grid.has-selection .hosted-package:not(.selected){opacity:.55}
.file-grid.has-selection .hosted-package:not(.selected):hover{opacity:.85}
@keyframes package-picked{0%{box-shadow:0 0 0 0 #8bdcb6b3;transform:scale(.985)}45%{box-shadow:0 0 0 10px #8bdcb600;transform:scale(1.01)}100%{box-shadow:0 0 0 1px #8bdcb6;transform:scale(1)}}
.selection-state.chosen{color:#e9fff3;font-weight:700;animation:state-in .4s ease-out}
@keyframes state-in{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.hosted-package,.hosted-package .selected-badge{transition:none}.hosted-package.selected,.selection-state.chosen{animation:none}}
.plan-state{margin:12px 0 0;font-size:12px;color:#9bb5b9;white-space:normal}
.write-controls .button{transition:background .25s,border-color .25s,color .25s}
.firmware-main .intro a{color:#8ce0b5}
