:root{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,sans-serif;color:#222936;background:#f7f8fa;font-synthesis:none;font-size:14px}*{box-sizing:border-box}body{margin:0}button,input{font:inherit}button{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid #dde2e8;background:#fff;color:#384050;border-radius:7px;padding:9px 13px;cursor:pointer;transition:background .15s}button:hover{background:#f0f3f7}button:disabled{opacity:.5;cursor:wait}button:focus-visible,input:focus-visible{outline:3px solid #95bcff;outline-offset:2px}input{border:1px solid #dde2e8;border-radius:7px;padding:10px 12px;min-width:0}button.primary{background:#2864e8;border-color:#2864e8;color:#fff;box-shadow:0 2px 3px #2864e81a}.primary:hover{background:#2057cf}h1,h2,h3,p{margin:0}h1{font-size:28px;letter-spacing:-1px;font-weight:650}h2{font-size:15px;font-weight:600}p{color:#808895;line-height:1.8}.logo{display:flex;align-items:center;gap:10px;color:#205fe6;font-size:23px;letter-spacing:-.7px}.logo strong{color:#202b3e;font-weight:700}.app{display:flex;min-height:100vh}aside{width:230px;position:fixed;inset:0 auto 0 0;border-right:1px solid #e4e8ee;background:#fff;padding:30px 18px;display:flex;flex-direction:column}aside .logo{padding-left:12px}.workspace{display:flex;gap:11px;align-items:center;border:1px solid #e7eaf0;border-radius:9px;margin:31px 0;padding:13px 10px;font-size:13px;font-weight:550}.workspace>svg{margin-left:auto;color:#8b95a4}small{display:block;color:#8b93a0;font-size:11px;font-weight:400;margin-top:5px}.avatar{background:#edf2fc;color:#4774d2;border:1px solid #dce7ff;display:grid;place-items:center;width:32px;height:32px;border-radius:7px}.nav-label{font-size:10px;color:#9ba3b0;padding:0 13px;margin-bottom:12px;letter-spacing:1.5px}nav{display:grid;gap:6px}nav button{border:0;justify-content:flex-start;padding:12px 13px;background:transparent;color:#768092}nav button.active{color:#2864e8;background:#edf3ff;font-weight:600}nav button span{margin-left:auto;border-radius:4px;background:#dce8ff;padding:2px 6px;font-size:10px}.sidebar-bottom{margin-top:auto;display:grid;gap:18px;padding:15px 8px 0}.sidebar-bottom button{border:0;justify-content:flex-start;font-size:12px;color:#808895}.preview{font-size:11px;color:#9099a8}.main{margin-left:230px;width:calc(100% - 230px)}header{height:68px;padding:0 36px;display:flex;align-items:center;justify-content:space-between;background:#fff;border-bottom:1px solid #e7eaf0;font-size:12px;color:#8390a1}header>span{display:flex;align-items:center;gap:12px}.header-status{display:flex;align-items:center;gap:8px;font-size:11px;color:#738173}.dot{width:6px;height:6px;background:#39a477;border-radius:50%;display:inline-block}.dot.warning{background:#ca8a04}main{padding:36px;max-width:1600px;margin:auto}.page-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:30px;gap:15px}.eyebrow{font-size:9px;letter-spacing:2px;color:#97a1b1;margin-bottom:10px}.page-heading p{font-size:12px;margin-top:8px}.actions{display:flex;gap:10px}.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;margin-bottom:28px}.metric{background:#fff;border:1px solid #e4e8ef;padding:20px;border-radius:10px;box-shadow:0 2px 3px #172b4d02}.metric>div{display:flex;justify-content:space-between;align-items:center;color:#7a8494;font-size:12px}.metric svg{width:17px;height:17px;color:#99a6bc}.metric strong{display:block;font-size:27px;letter-spacing:-.6px;margin-top:18px;font-weight:600}.metric small{margin-top:10px;font-size:10px;overflow-wrap:anywhere}.panel{border:1px solid #e3e7ee;border-radius:10px;background:#fff;overflow:hidden;box-shadow:0 3px 4px #172b4d02}.panel-toolbar{display:flex;align-items:center;justify-content:space-between;padding:20px;gap:14px;border-bottom:1px solid #edf0f4}.panel-toolbar h2 span{margin-left:7px;font-size:11px;background:#f2f4f7;border:1px solid #e9edf1;color:#8994a4;border-radius:5px;padding:2px 6px}.search{display:flex;align-items:center;gap:8px;border:1px solid #e4e8ee;border-radius:6px;padding:0 10px;color:#99a2ae}.search input{border:0;font-size:11px;padding:8px 0;width:180px}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;text-align:left}th{font-size:10px;font-weight:500;letter-spacing:.5px;background:#fafbfc;color:#8891a0;padding:13px 20px;border-bottom:1px solid #edf0f4;white-space:nowrap}td{padding:20px;font-size:12px;border-bottom:1px solid #f0f2f6}tr:last-child td{border-bottom:0}td strong{font-weight:550}td small{font-size:10px}.device-name{border:0;padding:0;justify-content:flex-start;text-align:left;white-space:nowrap;font-size:12px;font-weight:600}.device-name:hover{background:transparent;color:#2864e8}.device-icon{height:38px;width:42px;display:inline-flex;align-items:center;justify-content:center;background:#f1f5fa;color:#7e93b1;border:1px solid #e6edf5;border-radius:8px;margin-right:3px}.badge{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border-radius:5px;font-size:10px;white-space:nowrap;color:#778396;background:#f1f3f6}.badge.online{color:#35815f;background:#edf8f1}.badge.offline,.badge.pending{color:#a9822b;background:#fbf6e9}.badge.offline .dot,.badge.pending .dot{background:#c69b49}.badge.revoked .dot{background:#99a1ae}.muted{color:#939caa;font-size:11px}.mono{font-family:ui-monospace,SFMono-Regular,monospace;font-size:10px;overflow-wrap:anywhere}.icon-button{border:0;padding:3px;color:#99a4b5}.empty{padding:65px 25px;display:flex;flex-direction:column;align-items:center;gap:15px;color:#9aa9be;text-align:center}.empty h3{color:#46546a;font-size:16px}.empty p{font-size:12px;max-width:370px}.empty .primary{margin-top:5px}footer{display:flex;justify-content:space-between;font-size:10px;color:#a2aab6;margin:24px 0}.detail-top{display:flex;gap:16px;align-items:center;margin-bottom:24px;color:#8b95a5;font-size:11px;flex-wrap:wrap}.detail-top button{margin-left:auto}.danger{color:#c54f4f;border-color:#f1d8d8}.tabs{display:flex;gap:25px;border-bottom:1px solid #e0e5ec;margin-bottom:24px}.tabs button{background:transparent;border:0;border-radius:0;padding:12px 0;color:#8791a2}.tabs .selected{color:#2864e8;border-bottom:2px solid #2864e8}.info{padding:22px}dl{display:grid;grid-template-columns:150px 1fr;gap:20px;margin-top:24px;font-size:12px}dt{color:#9099a7}dd{margin:0}.audit-row{display:flex;align-items:center;gap:15px;padding:20px;border-bottom:1px solid #edf0f4;font-size:12px}.audit-row>svg{color:#879bbc}.audit-row>span{margin-left:auto;font-size:11px;color:#9ba4b1}.error,.notice{padding:13px 17px;border-radius:7px;background:#fff1ef;border:1px solid #f4dcd7;color:#b25144;font-size:12px;line-height:1.7;margin-bottom:22px}.notice{background:#fff9e8;color:#a28336;border-color:#efe5c7}.modal-backdrop{position:fixed;inset:0;background:#14213860;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;padding:24px;z-index:5}.modal{position:relative;width:550px;max-height:90vh;overflow:auto;padding:32px;background:#fff;border-radius:14px;box-shadow:0 20px 80px #14213830}.modal-close{position:absolute;right:20px;top:20px;border:0;padding:5px}.modal h2{font-size:22px;margin:18px 0 10px}.modal p{font-size:12px;margin:12px 0 20px}.modal label{display:block;font-size:11px;color:#8390a2;margin-top:22px}.modal button:not(.modal-close){margin-top:18px}.token{display:block;overflow-wrap:anywhere;padding:14px;background:#f2f5fa;border:1px solid #e0e7f0;border-radius:7px;margin-top:8px;font-size:12px;color:#375e9b}pre{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.9;font-size:11px;background:#f5f7fa;border-radius:7px;padding:14px}.login{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;background:radial-gradient(ellipse at 50% 30%,#e9f0ff,transparent 60%)}.login-card{width:420px;max-width:calc(100% - 32px);background:#fff;padding:36px;border:1px solid #e1e6ef;border-radius:14px;box-shadow:0 15px 50px #4059800d}.login h1{font-size:24px;margin:33px 0 10px}.login p{font-size:12px}.login form{display:grid;gap:13px;margin-top:28px}.login label{font-size:12px;color:#738095}.login small{line-height:1.8;margin:0}.login .primary{margin-top:8px}.login-note{margin-top:26px;font-size:11px;color:#96a2b4}.loading{padding:80px;text-align:center;color:#8695a8}@media(min-width:1500px){main{padding:45px 50px}}@media(max-width:1100px){aside{width:190px;padding:28px 12px}.main{margin-left:190px;width:calc(100% - 190px)}main{padding:25px}.metrics{gap:10px}.metric{padding:16px}td,th{padding:14px}.metric strong{font-size:22px}}@media(max-width:760px){aside{position:static;width:100%;padding:15px}.app{display:block}.workspace,.nav-label,.sidebar-bottom{display:none}nav{display:flex;margin-top:15px}nav button{padding:10px}.main{margin:0;width:100%}header{padding:0 20px;height:50px}main{padding:22px 16px}.metrics{grid-template-columns:repeat(2,1fr)}.page-heading{align-items:flex-start}h1{font-size:24px}.eyebrow{font-size:8px}.page-heading p{max-width:210px}.search input{width:130px}.panel-toolbar{padding:16px}footer{gap:15px;line-height:1.8}.header-status{display:none}}.container-actions{display:flex;gap:6px;flex-wrap:wrap;min-width:115px}.container-actions button{font-size:11px;padding:5px 8px}.task-note{padding:16px 20px;font-size:11px;color:#929aaa;border-top:1px solid #edf0f4}.log-modal{width:900px}.log-output{background:#172033;color:#d7e2ef;max-height:55vh;overflow:auto;line-height:1.7;font-size:12px;tab-size:4}.compose-project+.compose-project{border-top:1px solid #e2e8ef}.compose-project .panel-toolbar{align-items:flex-start}.compose-project small{overflow-wrap:anywhere;line-height:1.6}.compose-status{font-size:12px;padding:14px 20px}.compose-warning{margin:14px 20px}.deployment-report{padding:16px 20px;border-top:1px solid var(--border,#e5e7eb)}.deployment-report>small{display:block;margin-top:12px;color:#7c8494}.task-history table{min-width:760px}.task-history td:nth-child(2){white-space:nowrap}.task-history td:first-child{max-width:240px;overflow-wrap:anywhere}.terminal-panel .panel-toolbar h2{display:flex;align-items:center;gap:8px}.terminal-actions{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.terminal-actions [role=status]{font-size:13px;color:#667085}.terminal-help{padding:0 24px;color:#667085;font-size:13px;line-height:1.7}.terminal-host{height:440px;margin:16px 24px 24px;padding:14px;background:#111827;border-radius:10px;overflow:hidden;box-sizing:border-box}.terminal-host .xterm{height:100%}.terminal-panel .notice{margin:16px 24px}.terminal-panel .modal input{width:100%;box-sizing:border-box;margin:8px 0 20px}.terminal-panel .modal .primary{width:100%}@media(max-width:720px){.terminal-actions{gap:8px}.terminal-host{margin:12px;height:380px}.terminal-panel .panel-toolbar{align-items:flex-start;gap:12px;flex-wrap:wrap}}.device-tags{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}.device-tag{display:inline-block;background:#eef2ff;color:#4353a6;border-radius:5px;padding:2px 7px;font-size:12px;overflow-wrap:anywhere}.device-tags-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0 0 20px;padding:16px 20px;border:1px solid #e3e7ed;border-radius:12px;background:#fff}.device-tags-bar .modal input{width:100%}.compose-project .panel-toolbar{flex-wrap:wrap;gap:10px}.compose-project .panel-toolbar>div{flex:1 0 100%;min-width:0}.compose-project .panel-toolbar>button{flex-shrink:0;white-space:nowrap}.compose-history{padding:16px 20px;border-top:1px solid #eef1f5}.compose-history h3{font-size:14px;margin-bottom:6px}.compose-history .table-wrap{margin:10px 0}.rollback-preview-details .notice{margin:14px 0}.rollback-preview-details .table-wrap{margin:12px 0}.rollback-preview-details td{vertical-align:top}.rollback-image{overflow-wrap:anywhere;display:block;min-width:100px;max-width:240px}.compose-history button{white-space:nowrap}.rollback-confirmation{margin-top:18px;display:flex;flex-direction:column;gap:12px}.rollback-confirmation label{display:flex;align-items:flex-start;gap:8px;font-size:13px;line-height:1.7}.rollback-confirmation input{margin-top:5px;flex-shrink:0}.rollback-confirmation button{align-self:flex-end}.package-batches>p,.batch-detail{padding:0 24px}.batch-detail{padding-bottom:20px}.batch-detail li,.batch-modal li{margin:12px 0}.batch-modal{max-height:85vh;overflow:auto}.batch-choices{max-height:300px;overflow:auto;margin-bottom:20px}.batch-choices label{display:flex;gap:12px;align-items:center;margin:12px 0}.batch-modal input[type=checkbox]{width:auto}.batch-modal .container-actions{margin-top:20px}.container-details{min-width:180px;max-width:440px;margin-top:8px;white-space:normal}.container-details summary{cursor:pointer;color:var(--muted, #667085)}.container-details dl{display:block;margin:12px 0;padding:0}.container-details dt{margin-top:10px;font-weight:600}.container-details dd{margin:4px 0 0;overflow-wrap:anywhere}.container-details code{white-space:normal}.container-table{min-width:880px}.container-table td{vertical-align:top}.container-table td:first-child{width:290px}.container-table td:nth-child(2){min-width:160px;max-width:240px;overflow-wrap:anywhere}.settings-devices{table-layout:fixed;width:100%}.settings-devices td{vertical-align:top;overflow-wrap:anywhere}.settings-devices button{max-width:100%;white-space:normal}.webhook-toggle{display:flex;align-items:center;gap:8px;margin:14px 0}.webhook-toggle input{width:auto;margin:0}.webhook-deliveries{min-width:660px;width:100%}.webhook-deliveries td{vertical-align:top}.modal details pre{max-height:240px;overflow:auto;font-size:12px}.health-checks{margin-bottom:20px}.health-checks table{min-width:0;width:100%;table-layout:fixed}.health-checks th:nth-child(1){width:24%}.health-checks th:nth-child(2){width:14%}.health-checks th:nth-child(4){width:18%}.health-checks td{overflow-wrap:anywhere;white-space:normal}.health-checks td button{white-space:normal}.health-pass{color:#167448;background:#eaf7ef}.health-fail{color:#b42318;background:#fff0ed}.health-unknown{color:#925b12;background:#fff7df}.health-not_applicable{color:#667085;background:#f2f4f7}.workspace>div{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.workspace small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.workspace .avatar,.workspace>svg{flex-shrink:0}.install-command{white-space:pre-wrap;overflow-wrap:anywhere;max-height:220px;overflow-y:auto;font-size:12px;-webkit-user-select:all;user-select:all}
