:root{color:#fff;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#050d20;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif}*{box-sizing:border-box}body{background:radial-gradient(circle at 15% 12%,#257cff59,#0000 34%),radial-gradient(circle at 85% 18%,#00dbad38,#0000 31%),linear-gradient(170deg,#030915 0%,#081733 55%,#071223 100%);min-height:100vh;margin:0}#root{min-height:100vh}.dashboard-shell{grid-template-columns:280px 1fr;min-height:100vh;display:grid}.sidebar{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:linear-gradient(#04112be6,#030c1fe6);border-right:1px solid #c4ddff24;flex-direction:column;justify-content:space-between;padding:1.4rem 1rem;display:flex}.sidebar-eyebrow{color:#95b7f2;letter-spacing:.1em;text-transform:uppercase;margin:0;font-size:.73rem}.sidebar-title{color:#f2f7ff;margin:.25rem 0 1.4rem;font-size:1.7rem;font-weight:700}.sidebar-nav{flex-direction:column;gap:.5rem;display:flex}.sidebar-link{color:#bad2ff;border:1px solid #0000;border-radius:12px;padding:.7rem .8rem;text-decoration:none;transition:all .2s;display:block}.sidebar-link:hover{background:#306cb833;border-color:#7dcdff57}.sidebar-link-active{color:#eff7ff;background:linear-gradient(90deg,#277bff59,#3ec9b840);border-color:#7dcdff6b}.sidebar-footer{border-top:1px solid #c4ddff26;padding-top:1rem}.sidebar-user{color:#ebf3ff;margin:0;font-weight:700}.sidebar-email{color:#94b8eb;overflow-wrap:anywhere;margin:.15rem 0 .8rem;font-size:.86rem}.logout-button{cursor:pointer;color:#04142f;background:linear-gradient(90deg,#58e1ff,#a6ffcb);border:0;border-radius:10px;width:100%;padding:.6rem .8rem;font-weight:700}.content-area{padding:1.6rem}.devices-page{flex-direction:column;gap:1rem;display:flex}.create-card{background:#07142dbd;border:1px solid #a5ccff40;border-radius:16px;flex-direction:column;gap:.9rem;padding:1rem;display:flex;box-shadow:0 16px 40px #0003}.create-card-header h3{color:#eff7ff;margin:0}.create-card-header p{color:#a3c7fb;margin:.25rem 0 0;font-size:.9rem}.create-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:.8rem;display:grid}.field{flex-direction:column;gap:.35rem;display:flex}.field span{color:#b8d7ff;letter-spacing:.02em;font-size:.82rem}.field input,.field select{color:#e8f2ff;background:#0a1c3acc;border:1px solid #89b5ec80;border-radius:10px;padding:.56rem .65rem}.field input::placeholder{color:#88a5cf}.field input:focus,.field select:focus{outline-offset:1px;outline:2px solid #66cbff7a}.create-actions{grid-column:1/-1}.create-actions button{color:#ecf6ff;cursor:pointer;background:linear-gradient(90deg,#277bff59,#3ec9b840);border:1px solid #7bc2ff73;border-radius:10px;padding:.56rem .8rem;font-weight:700}.create-actions button:disabled{opacity:.55;cursor:not-allowed}.filter-card{background:#07142dbd;border:1px solid #a5ccff40;border-radius:16px;margin-bottom:1.5rem;padding:1.5rem}.filter-header{margin-bottom:1rem}.filter-header h3{color:#f7fbff;margin:0;font-size:1rem}.filter-grid{grid-template-columns:repeat(auto-fit,minmax(250px,1fr));align-items:flex-end;gap:.8rem;display:grid}.filter-actions{gap:.5rem;display:flex}.filter-actions button{color:#ecf6ff;cursor:pointer;background:#1f5ca833;border:1px solid #7bc2ff73;border-radius:10px;padding:.56rem .8rem;font-weight:700}.filter-actions button:disabled{opacity:.55;cursor:not-allowed}.form-error{color:#ffbdbd;margin:0}.token-once{background:#10315f8c;border:1px solid #7ccdff73;border-radius:12px;justify-content:space-between;align-items:flex-start;gap:1rem;padding:.75rem;display:flex}.token-title{color:#d8ebff;margin:0;font-weight:700}.token-note{color:#bdd8ff;margin:.2rem 0 .5rem;font-size:.86rem}.token-once code{word-break:break-all;color:#fcffff;background:#041228b8;border:1px solid #91cbff59;border-radius:8px;padding:.4rem .55rem;display:inline-block}.token-once button{color:#e6f3ff;cursor:pointer;background:#1f5ca833;border:1px solid #91c7ff6b;border-radius:10px;padding:.42rem .7rem}.devices-header .eyebrow{text-transform:uppercase;letter-spacing:.14em;color:#9bc0ff;margin:0;font-size:.76rem}.devices-header h2{color:#f7fbff;margin:.35rem 0 0;font-size:clamp(1.7rem,2.6vw,2.3rem)}.table-card{background:#07142dbd;border:1px solid #a5ccff40;border-radius:16px;overflow:hidden;box-shadow:0 16px 40px #00000047}.table-wrap{overflow-x:auto}.data-grid{border-collapse:collapse;width:100%;min-width:820px}.data-grid th,.data-grid td{text-align:left;border-bottom:1px solid #97bceb26;padding:.82rem 1rem}.data-grid td{color:#e2eeff;font-size:.92rem}.data-row-clickable{cursor:pointer}.data-row-clickable:hover td,.data-row-clickable:focus-visible td{background:#2b6ebf38}.th-sortable,.th-static{color:#add3ff;background:0 0;border:none;align-items:center;gap:.5rem;padding:0;font-weight:700;display:inline-flex}.th-sortable{cursor:pointer}.sort-indicator{color:#69e0ff}.table-empty{text-align:center;color:#aecdff;padding:1.7rem}.table-error{color:#ffbdbd}.table-footer{background:#051025d1;justify-content:space-between;align-items:center;padding:.9rem 1rem;display:flex}.table-footer p{color:#9ec5ff;margin:0;font-size:.88rem}.table-pagination{align-items:center;gap:.45rem;display:flex}.table-pagination span{color:#c2dbff;font-size:.9rem}.table-pagination button{color:#e8f3ff;cursor:pointer;background:#20579c40;border:1px solid #95c7ff66;border-radius:10px;padding:.4rem .72rem}.table-pagination button:disabled{opacity:.4;cursor:not-allowed}.danger-inline{color:#ffd2d2;cursor:pointer;background:#a51a1a40;border:1px solid #ff868680;border-radius:10px;padding:.32rem .6rem}.row-action-menu{display:inline-block;position:relative}.row-action-menu summary{color:#d7eaff;cursor:pointer;-webkit-user-select:none;user-select:none;background:#163c7047;border:1px solid #8cbdfc66;border-radius:10px;place-items:center;width:2rem;height:2rem;list-style:none;display:grid}.row-action-menu summary::-webkit-details-marker{display:none}.row-action-panel{z-index:3;background:#061631fa;border:1px solid #8cbdfc4d;border-radius:10px;min-width:140px;padding:.4rem;position:absolute;top:calc(100% + .35rem);right:0;box-shadow:0 10px 24px #00000059}.row-action-panel .danger-inline{width:100%}.danger-overlay{z-index:20;background:#020814bf;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.danger-dialog{background:linear-gradient(#380909f2,#1e0404f2);border:1px solid #ff858580;border-radius:16px;flex-direction:column;gap:.7rem;width:min(640px,100%);padding:1rem;display:flex;box-shadow:0 24px 52px #00000080}.danger-dialog h3{color:#ffe8e8;margin:0}.danger-dialog p{color:#ffd2d2;margin:0}.danger-actions{justify-content:flex-end;gap:.55rem;display:flex}.danger-actions button{color:#ffeaea;cursor:pointer;background:#6519194d;border:1px solid #ffb9b973;border-radius:10px;padding:.45rem .72rem}.danger-actions .danger-confirm{background:linear-gradient(90deg,#ae141499,#db404080);border-color:#ffa7a7b3}.danger-actions button:disabled{opacity:.6;cursor:not-allowed}.device-details-page{flex-direction:column;gap:1rem;display:flex}.device-details-topbar{flex-direction:row;justify-content:space-between;align-items:center}.ghost-action{color:#e8f3ff;cursor:pointer;background:#20579c33;border:1px solid #95c7ff73;border-radius:10px;padding:.48rem .8rem;font-weight:700}.details-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:.7rem;display:grid}.detail-item{background:#091f4280;border:1px solid #8cbdfc4d;border-radius:12px;padding:.7rem .8rem}.detail-label{color:#8bb8ef;text-transform:uppercase;letter-spacing:.05em;margin:0;font-size:.8rem}.detail-value{color:#ecf6ff;word-break:break-word;margin:.25rem 0 0}.edit-card{background:#091f4273;border:1px solid #7bc2ff59;border-radius:12px;flex-direction:column;gap:.7rem;margin-top:1rem;padding:.8rem;display:flex}.edit-card h3{color:#e6f2ff;margin:0}.edit-actions{justify-content:flex-end;gap:.55rem;display:flex}.edit-actions button{color:#e8f3ff;cursor:pointer;background:#20579c33;border:1px solid #95c7ff73;border-radius:10px;padding:.45rem .72rem}.edit-actions button:disabled{opacity:.6;cursor:not-allowed}.bootstrap-error{text-align:center;place-content:center;min-height:100vh;padding:2rem;display:grid}@media (width<=1024px){.dashboard-shell{grid-template-columns:1fr}.sidebar{border-bottom:1px solid #c4ddff24;border-right:0;gap:1.25rem}.content-area{padding:1rem}.table-footer{flex-direction:column;align-items:flex-start;gap:.7rem}.create-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.token-once{flex-direction:column;align-items:flex-start}.details-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=640px){.create-grid,.details-grid{grid-template-columns:1fr}.device-details-topbar{flex-direction:column;align-items:flex-start;gap:.55rem}}.prov-settings-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:.8rem;display:grid}.prov-zip-field{grid-column:span 2}.prov-parts-summary{flex-wrap:wrap;grid-column:1/-1;gap:.4rem;display:flex}.prov-part-badge{color:#7de0c8;background:#0c265099;border:1px solid #64c4ff4d;border-radius:6px;padding:.2rem .55rem;font-family:monospace;font-size:.78rem}.prov-port-row{align-items:center;gap:.6rem;display:flex}.prov-port-info{color:#7de0c8;word-break:break-all;background:#050f2399;border:1px solid #89b5ec80;border-radius:10px;flex:1;padding:.5rem .65rem;font-size:.82rem;display:inline-block}.prov-port-change{color:#ecf6ff;cursor:pointer;background:linear-gradient(90deg,#277bff59,#3ec9b840);border:1px solid #7bc2ff73;border-radius:10px;flex-shrink:0;padding:.5rem .75rem;font-size:.85rem;font-weight:700}.prov-port-change:disabled{opacity:.5;cursor:not-allowed}.prov-hint{color:#c0dcff;background:#12376959;border:1px solid #7dbeff47;border-radius:10px;margin:0;padding:.65rem .85rem;font-size:.88rem;line-height:1.55}.prov-status{color:#a8d2ff;align-items:center;gap:.55rem;font-size:.9rem;display:inline-flex}@keyframes prov-spin{to{transform:rotate(360deg)}}.prov-spinner{border:2px solid #82c4ff47;border-top-color:#69ccff;border-radius:50%;flex-shrink:0;width:.95rem;height:.95rem;animation:.75s linear infinite prov-spin;display:inline-block}.prov-spinner--sm{width:.75rem;height:.75rem}.prov-columns{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:1rem;display:grid}.prov-steps-row{grid-template-columns:3fr 2fr}.prov-steps-col{flex-direction:column;gap:.6rem;display:flex}.step-card{background:#07142dbd;border:1px solid #a5ccff2e;border-radius:14px;align-items:flex-start;gap:.85rem;padding:.85rem 1rem;transition:border-color .2s,opacity .2s;display:flex}.step-card--pending{opacity:.45}.step-card--running{opacity:1;border-color:#69c8ff80}.step-card--done{opacity:1;border-color:#3bff9a66}.step-card--error{opacity:1;border-color:#ff6b6b73}.step-badge{color:#9ec8ff;background:#14376e80;border:2px solid #82b4ff4d;border-radius:50%;flex-shrink:0;place-items:center;width:2rem;height:2rem;font-size:.85rem;font-weight:700;display:grid}.step-badge--running{color:#d0edff;background:#1e50a080;border-color:#69c8ffb3}.step-badge--done{color:#3bff9a;background:#0a503280;border-color:#3bff9a99}.step-badge--error{color:#ff8f8f;background:#500a0a80;border-color:#ff6b6b99}.step-body{flex:1;min-width:0}.step-header{align-items:center;gap:.5rem;display:flex}.step-label{color:#e4f0ff;font-size:.95rem;font-weight:700}.step-check{color:#3bff9a;font-weight:700}.step-cross{color:#ff6b6b;font-weight:700}.step-desc{color:#6a8fba;margin:.25rem 0 0;font-size:.82rem}.step-msg{color:#a4ccf0;margin:.25rem 0 0;font-size:.84rem}.step-error{color:#ffadad;word-break:break-word;margin:.25rem 0 0;font-size:.84rem}.step-flash-parts{flex-direction:column;gap:.35rem;margin-top:.5rem;display:flex}.step-flash-row{align-items:center;gap:.5rem;display:flex}.step-flash-name{color:#8ab8e0;text-overflow:ellipsis;white-space:nowrap;flex-shrink:0;width:7rem;font-size:.78rem;overflow:hidden}.step-action-button{color:#ecf6ff;cursor:pointer;background:#1f5ca833;border:1px solid #7bc2ff73;border-radius:10px;margin-top:.6rem;padding:.45rem .72rem;font-weight:700}.step-action-button:hover{background:#286cbd47}.provision-reset-button{border-radius:12px;padding:.75rem 1.15rem;font-size:1.05rem}.provision-reset-button--success{color:#062915;background:linear-gradient(90deg,#2fb266bf,#5ce08db8);border-color:#72f4a4a6}.provision-reset-button--success:hover{background:linear-gradient(90deg,#3abe71d6,#6aeb9acc)}.prov-log-card{flex-direction:column;gap:.5rem;max-height:420px;display:flex}.prov-log{background:#030b1cb3;border:1px solid #64a2e633;border-radius:10px;flex:auto;min-height:8rem;max-height:100%;padding:.65rem .8rem;font-family:monospace;font-size:.8rem;overflow-y:auto}.prov-log-line{color:#8ec8f0;white-space:pre-wrap;word-break:break-all;line-height:1.5}.prov-log-empty{color:#4a6e9a;margin:0;font-size:.85rem;font-style:italic}.prov-result-row{gap:.8rem;display:flex}.prov-result-row .token-once{flex:1 1 0}@media (width<=900px){.prov-settings-grid{grid-template-columns:1fr 1fr}.prov-zip-field{grid-column:span 2}.prov-columns,.prov-steps-row{grid-template-columns:1fr}}@media (width<=640px){.prov-settings-grid{grid-template-columns:1fr}.prov-zip-field{grid-column:span 1}}.fw-parts-table-wrap{border:1px solid #64a2e633;border-radius:10px;overflow-x:auto}.fw-parts-table{border-collapse:collapse;width:100%;font-size:.86rem}.fw-parts-table th{text-align:left;color:#7ab4f0;background:#05122a99;border-bottom:1px solid #64a2e62e;padding:.5rem .75rem;font-weight:600}.fw-parts-table td{color:#cce3ff;border-bottom:1px solid #64a2e61a;padding:.45rem .75rem}.fw-parts-table tr:last-child td{border-bottom:none}.fw-addr{color:#7de0c8;font-family:monospace}.fw-prog-cell{align-items:center;gap:.5rem;min-width:120px;display:flex}.fw-prog-bar-wrap{background:#325a9666;border-radius:99px;flex:1;height:6px;overflow:hidden}.fw-prog-bar{background:linear-gradient(90deg,#3bc9ff,#58e1a0);border-radius:99px;height:100%;transition:width .15s}.fw-prog-bar.fw-prog-done{background:linear-gradient(90deg,#3bff9a,#a6ffc2)}.fw-prog-pct{color:#88c8f0;text-align:right;min-width:2.8rem;font-size:.78rem}
