@import url(https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap);*,:after,:before{box-sizing:border-box}#root,body,html{height:100%}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"tnum";background-color:#f4f4f1;color:#1b1d22;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;margin:0}:root{--bg:#f4f4f1;--panel:#fff;--panel-2:#f6f6f3;--panel-3:#ebebe6;--border:#e4e4de;--border-strong:#cfcfc7;--text:#1b1d22;--muted:#5d6169;--faint:#8f93a0;--ink:#16181d;--ink-2:#23262d;--ink-border:#2c2f37;--ink-text:#b7bac2;--brand:#f0a11c;--brand-2:#d98f0b;--brand-soft:#f0a11c29;--on-brand:#221803;--ok:#189a4a;--warn:#f0a11c;--danger:#d92d20;--danger-soft:#d92d201a;--radius:8px;--radius-lg:8px;--shadow:0 8px 24px #181a2029;--mono:ui-monospace,SFMono-Regular,Menlo,monospace}::selection{background:#f0a11c29;background:var(--brand-soft)}::-webkit-scrollbar{height:10px;width:10px}::-webkit-scrollbar-thumb{background:#cfcfc7;background:var(--border-strong);border-radius:6px}::-webkit-scrollbar-track{background:#0000}.shell{display:flex;min-height:100vh}.sidebar{background:#16181d;background:var(--ink);border-right:1px solid #2c2f37;border-right:1px solid var(--ink-border);display:flex;flex-direction:column;flex-shrink:0;height:100vh;padding:20px 14px;position:-webkit-sticky;position:sticky;top:0;width:232px}.brand{align-items:center;display:flex;gap:10px;padding:4px 8px}.brand-name{color:#fff;font-size:17px;font-weight:700;letter-spacing:.05em}.badge-alpha{border:1px solid #f0a11c73;border-radius:999px;color:#f0a11c;color:var(--brand);font-size:10px;font-weight:600;letter-spacing:.1em;line-height:1.4;padding:2px 8px;text-transform:uppercase}.nav{display:flex;flex:1 1;flex-direction:column;gap:2px;margin-top:26px}.nav-item{align-items:center;background:none;border:none;border-radius:8px;border-radius:var(--radius);color:#b7bac2;color:var(--ink-text);cursor:pointer;display:flex;font:inherit;font-size:14px;font-weight:500;gap:10px;padding:9px 12px;text-align:left;transition:background .15s ease,color .15s ease}.nav-item.active,.nav-item:hover{background:#23262d;background:var(--ink-2);color:#fff}.nav-item.active{box-shadow:inset 2px 0 0 #f0a11c;box-shadow:inset 2px 0 0 var(--brand)}.nav-item.active svg{color:#f0a11c;color:var(--brand)}.side-foot{border-top:1px solid #2c2f37;border-top:1px solid var(--ink-border);display:flex;flex-direction:column;gap:12px;padding-top:14px}.conn-pill{background:#23262d;background:var(--ink-2);border-radius:999px;display:inline-flex;font-size:12px;font-weight:500;padding:6px 12px}.conn-pill,.user-row{align-items:center;color:#b7bac2;color:var(--ink-text);gap:8px}.user-row{display:flex;font-size:13px;min-width:0;padding:0 4px}.user-row .user-name{color:#fff;flex:1 1;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar .btn-ghost{border-color:#2c2f37;border-color:var(--ink-border);color:#b7bac2;color:var(--ink-text)}.sidebar .btn-ghost:hover{background:#23262d;background:var(--ink-2);color:#fff}.main{flex:1 1;min-width:0}.page{margin:0 auto;max-width:1240px;padding:26px 30px 80px}.page-head{align-items:center;display:flex;flex-wrap:wrap;gap:14px;margin-bottom:22px}.page-title h2{font-size:21px;font-weight:600;letter-spacing:-.01em;margin:0}.page-title p{color:#5d6169;color:var(--muted);font-size:13px;margin:3px 0 0}.page-actions{display:flex;flex-wrap:wrap;gap:10px;margin-left:auto}.btn{align-items:center;background:#fff;background:var(--panel);border:1px solid #cfcfc7;border:1px solid var(--border-strong);border-radius:8px;border-radius:var(--radius);color:#1b1d22;color:var(--text);cursor:pointer;display:inline-flex;font:inherit;font-size:14px;font-weight:500;gap:8px;justify-content:center;padding:8px 15px;transition:background .15s ease,border-color .15s ease,transform .1s ease;white-space:nowrap}.btn:hover{background:#f6f6f3;background:var(--panel-2)}.btn:active{transform:translateY(1px)}.btn:disabled{cursor:default;opacity:.5}.btn:focus-visible{outline:2px solid #f0a11c;outline:2px solid var(--brand);outline-offset:2px}.btn-primary{background:#f0a11c;background:var(--brand);border-color:#f0a11c;border-color:var(--brand);color:#221803;color:var(--on-brand);font-weight:600}.btn-primary:hover{background:#d98f0b;background:var(--brand-2);border-color:#d98f0b;border-color:var(--brand-2)}.btn-ghost{background:#0000;border-color:#0000;color:#5d6169;color:var(--muted)}.btn-ghost:hover{background:#ebebe6;background:var(--panel-3);color:#1b1d22;color:var(--text)}.btn-danger{background:#0000;border-color:#0000;color:#d92d20;color:var(--danger)}.btn-danger:hover{background:#d92d201a;background:var(--danger-soft)}.btn-icon{padding:8px}.btn-sm{font-size:13px;padding:5px 11px}.btn-lg{font-size:15px;padding:11px 24px}.label{color:#5d6169;color:var(--muted);display:block;font-size:12px;font-weight:500;letter-spacing:.02em;margin:0 0 6px}.input,.select,.textarea{background:#fff;background:var(--panel);border:1px solid #cfcfc7;border:1px solid var(--border-strong);border-radius:8px;border-radius:var(--radius);color:#1b1d22;color:var(--text);font:inherit;font-size:14px;padding:8px 11px;transition:border-color .15s ease,box-shadow .15s ease;width:100%}.input:focus,.select:focus,.textarea:focus{border-color:#f0a11c;border-color:var(--brand);box-shadow:0 0 0 3px #f0a11c29;box-shadow:0 0 0 3px var(--brand-soft);outline:none}.textarea{line-height:1.5;resize:vertical}.input-color{background:#fff;background:var(--panel);border:1px solid #cfcfc7;border:1px solid var(--border-strong);border-radius:8px;border-radius:var(--radius);cursor:pointer;height:36px;padding:3px;width:100%}.field{margin-bottom:12px}.field-row{display:flex;gap:10px}.field-row>*{flex:1 1;min-width:0}.card{background:#fff;background:var(--panel);border:1px solid #e4e4de;border:1px solid var(--border);border-radius:8px;border-radius:var(--radius)}.card-pad{padding:18px}.grid-cards{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}.thumb{background:#000;border-bottom:1px solid #e4e4de;border-bottom:1px solid var(--border);border-radius:8px 8px 0 0;border-radius:var(--radius) var(--radius) 0 0;display:block;overflow:hidden;width:100%}.empty{background:#f6f6f3;background:var(--panel-2);border:1px dashed #cfcfc7;border:1px dashed var(--border-strong);border-radius:8px;border-radius:var(--radius);color:#5d6169;color:var(--muted);font-size:14px;padding:34px 24px;text-align:center}.error-text{color:#d92d20;color:var(--danger);font-size:13px}.skel{animation:skel-shimmer 1.4s linear infinite;background:linear-gradient(100deg,#ebebe6 40%,#f6f6f3 50%,#ebebe6 60%);background:linear-gradient(100deg,var(--panel-3) 40%,var(--panel-2) 50%,var(--panel-3) 60%);background-size:200% 100%;border-radius:8px;border-radius:var(--radius)}@keyframes skel-shimmer{0%{background-position:120% 0}to{background-position:-80% 0}}.mono{color:#8f93a0;color:var(--faint);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-family:var(--mono);font-size:12px;letter-spacing:0}.status-dot{border-radius:50%;display:inline-block;flex-shrink:0;height:8px;width:8px}.status-dot.on{animation:dot-pulse 2.2s infinite;background:#189a4a;background:var(--ok);box-shadow:0 0 0 0 #189a4a80}.status-dot.off{background:#cfcfc7;background:var(--border-strong)}.status-dot.warn{background:#f0a11c;background:var(--warn)}@keyframes dot-pulse{0%{box-shadow:0 0 0 0 #189a4a66}70%{box-shadow:0 0 0 6px #189a4a00}to{box-shadow:0 0 0 0 #189a4a00}}.pair-card{background:#f6f6f3;background:var(--panel-2);border:1px dashed #cfcfc7;border:1px dashed var(--border-strong);border-radius:8px;border-radius:var(--radius);margin-bottom:20px;padding:16px 18px}.pair-card .pair-head{align-items:center;display:flex;font-weight:600;gap:8px;margin-bottom:6px}.pair-card .pair-head svg{color:#d98f0b;color:var(--brand-2)}.pair-card p{color:#5d6169;color:var(--muted);font-size:13px;line-height:1.5;margin:0 0 12px}.pair-form{display:flex;gap:10px}.pair-form .input{flex:1 1}.fleet{background:#fff;background:var(--panel);border:1px solid #e4e4de;border:1px solid var(--border);border-radius:8px;border-radius:var(--radius);overflow:hidden}.fleet-row{grid-gap:16px;align-items:center;display:grid;gap:16px;grid-template-columns:136px minmax(200px,1fr) auto;padding:12px 14px}.fleet-row+.fleet-row{border-top:1px solid #e4e4de;border-top:1px solid var(--border)}.fleet-thumb{aspect-ratio:16/9;background:#000;border:1px solid #e4e4de;border:1px solid var(--border);border-radius:4px;overflow:hidden;width:136px}.fleet-name{font-size:14px;font-weight:600}.fleet-id{margin-top:1px}.fleet-status{align-items:center;color:#5d6169;color:var(--muted);display:flex;font-size:12.5px;gap:7px;margin-top:6px}.fleet-status .sep{color:#cfcfc7;color:var(--border-strong)}.fleet-actions{align-items:center;display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.fleet-actions .select{width:210px}.editor-bar{align-items:center;display:flex;flex-wrap:wrap;gap:12px;margin-bottom:18px}.editor-bar .input{font-weight:500;max-width:320px}.editor-grid{align-items:flex-start;display:flex;flex-wrap:wrap;gap:16px}.palette{background:#fff;background:var(--panel);border:1px solid #e4e4de;border:1px solid var(--border);border-radius:8px;border-radius:var(--radius);flex-shrink:0;padding:14px;width:168px}.palette-title,.props-title{color:#8f93a0;color:var(--faint);font-size:11px;font-weight:600;letter-spacing:.08em;margin-bottom:10px;text-transform:uppercase}.palette-btn{align-items:center;background:#fff;background:var(--panel);border:1px solid #e4e4de;border:1px solid var(--border);border-radius:8px;border-radius:var(--radius);color:#1b1d22;color:var(--text);cursor:pointer;display:flex;font:inherit;font-size:13px;font-weight:500;gap:8px;margin-bottom:6px;padding:7px 10px;transition:border-color .15s ease,background .15s ease;width:100%}.palette-btn:hover{background:#f0a11c29;background:var(--brand-soft);border-color:#f0a11c;border-color:var(--brand)}.palette-btn svg{color:#d98f0b;color:var(--brand-2)}.canvas-col{flex:1 1;min-width:320px}.canvas-frame{border-radius:8px;border-radius:var(--radius);box-shadow:0 0 0 1px #16181d,0 4px 16px #181a202e;box-shadow:0 0 0 1px var(--ink),0 4px 16px #181a202e;overflow:hidden;position:relative}.props-panel{background:#fff;background:var(--panel);border:1px solid #e4e4de;border:1px solid var(--border);border-radius:8px;border-radius:var(--radius);flex-shrink:0;padding:14px;width:280px}.props-head{align-items:center;display:flex;justify-content:space-between;margin-bottom:12px}.props-head .type{font-weight:600;text-transform:capitalize}.props-hint{color:#8f93a0;color:var(--faint);font-size:13px}.plan-stage{aspect-ratio:16/9;background-color:#f6f6f3;background-color:var(--panel-2);background-position:50%;background-repeat:no-repeat;background-size:contain;border:1px solid #e4e4de;border:1px solid var(--border);border-radius:8px;border-radius:var(--radius);max-width:1100px;overflow:hidden;position:relative;width:100%}.plan-stage .stage-hint{color:#8f93a0;color:var(--faint);font-size:14px;inset:0;position:absolute}.marker,.plan-stage .stage-hint{align-items:center;display:flex;justify-content:center}.marker{background:#8f93a0;background:var(--faint);border:2px solid #fff;border-radius:50%;box-shadow:0 2px 8px #00000059;color:#fff;cursor:pointer;height:44px;width:44px}.marker.online{background:#189a4a;background:var(--ok)}.marker.selected{border:3px solid #f0a11c;border:3px solid var(--brand)}.toast{align-items:center;animation:toast-in .18s ease;background:#16181d;background:var(--ink);border:1px solid #2c2f37;border:1px solid var(--ink-border);border-radius:8px;border-radius:var(--radius);bottom:22px;box-shadow:0 8px 24px #181a2029;box-shadow:var(--shadow);color:#fff;display:flex;font-size:13px;gap:10px;max-width:min(420px,80vw);padding:11px 16px;position:fixed;right:22px;z-index:70}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.debug-panel{background:#16181d;background:var(--ink);border:1px solid #2c2f37;border:1px solid var(--ink-border);border-radius:8px;border-radius:var(--radius);margin-top:22px;max-height:260px;overflow-y:auto;padding:14px 16px}.debug-line{color:#b7bac2;color:var(--ink-text);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-family:var(--mono);font-size:12px;padding:3px 0}.debug-line .ts{color:#6b6f7a;margin-right:8px}.auth-wrap{background:#f4f4f1;background:var(--bg);display:grid;min-height:100vh;padding:20px;place-items:center}.auth-card{background:#fff;background:var(--panel);border:1px solid #e4e4de;border:1px solid var(--border);border-radius:8px;border-radius:var(--radius);max-width:400px;padding:36px 32px;text-align:center;width:100%}.auth-brand{align-items:center;display:flex;gap:10px;justify-content:center;margin-bottom:8px}.auth-brand .brand-name{color:#1b1d22;color:var(--text);font-size:22px}.auth-card .tagline{color:#5d6169;color:var(--muted);font-size:14px;margin:4px 0 24px}.auth-card .status-icon{margin-bottom:10px}.loading-screen{color:#5d6169;color:var(--muted);display:grid;font-weight:500;min-height:100vh;place-items:center}.chip-row{display:flex;flex-wrap:wrap;gap:6px}.chip{background:#ebebe6;background:var(--panel-3);border-radius:999px;color:#5d6169;color:var(--muted);font-size:12px;padding:2px 9px;white-space:nowrap}.chip-var{background:#f0a11c29;background:var(--brand-soft);color:#9a6a06;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-family:var(--mono)}.var-badge{background:#f0a11ceb;border-radius:8px;color:#221803;color:var(--on-brand);font:700 26px ui-monospace,SFMono-Regular,Menlo,monospace;font:700 26px var(--mono);padding:2px 12px;pointer-events:none;position:absolute;right:8px;top:8px}.modal-overlay{align-items:center;background:#181a2073;display:flex;inset:0;justify-content:center;position:fixed;z-index:100}.modal{background:#fff;background:var(--panel);border:1px solid #e4e4de;border:1px solid var(--border);border-radius:8px;border-radius:var(--radius);box-shadow:0 8px 24px #181a2029;box-shadow:var(--shadow);max-height:85vh;overflow:auto;padding:20px;width:min(720px,calc(100vw - 40px))}.modal h3{font-weight:600}.modal-sm{width:min(440px,calc(100vw - 40px))}.modal-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:18px}.modal-actions .btn-danger{background:#d92d20;background:var(--danger);border-color:#d92d20;border-color:var(--danger);color:#fff}.modal-actions .btn-danger:hover{background:#b42318}.code-block{background:#16181d;background:var(--ink);border:1px solid #2c2f37;border:1px solid var(--ink-border);border-radius:8px;border-radius:var(--radius);color:#e8eaf0;font:12.5px/1.55 ui-monospace,SFMono-Regular,Menlo,monospace;font:12.5px/1.55 var(--mono);margin:8px 0 16px;overflow-x:auto;padding:12px 14px;position:relative;white-space:pre}.code-block .copy-btn{position:absolute;right:8px;top:8px}.code-block .copy-btn.btn-ghost{color:#b7bac2;color:var(--ink-text)}.code-block .copy-btn.btn-ghost:hover{background:#23262d;background:var(--ink-2);color:#fff}@media (max-width:920px){.shell{flex-direction:column}.sidebar{align-items:center;border-bottom:1px solid #2c2f37;border-bottom:1px solid var(--ink-border);border-right:none;gap:8px;height:auto;padding:10px 14px;position:static;width:100%}.nav,.sidebar{flex-direction:row}.nav{margin:0 0 0 10px}.nav-item{font-size:13px;padding:8px 10px}.nav-item span{display:none}.side-foot{align-items:center;border-top:none;flex-direction:row;margin-left:auto;padding-top:0}.user-row .user-name{max-width:90px}.page{padding:18px 16px 70px}.palette,.props-panel{width:100%}.fleet-row{grid-template-columns:104px 1fr}.fleet-thumb{width:104px}.fleet-actions{grid-column:1/-1;justify-content:flex-start}}.billing-grid{grid-gap:16px;align-items:start;display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(280px,380px))}.muted-text{color:#5d6169;color:var(--muted);font-size:14px;line-height:1.5}.muted-text.small{font-size:12.5px;margin-top:10px}.plan-price{font-size:30px;font-weight:700;margin:6px 0 14px}.plan-price span{color:#5d6169;color:var(--muted);font-size:14px;font-weight:400}.plan-list{list-style:none;margin:0 0 16px;padding:0}.plan-list li{align-items:center;color:#1b1d22;color:var(--text);display:flex;font-size:14px;gap:8px;padding:4px 0}.plan-list svg{color:#f0a11c;color:var(--brand);flex-shrink:0}.plan-pill{border-radius:999px;font-size:11px;font-weight:700;letter-spacing:.08em;margin-left:8px;padding:3px 9px;text-transform:uppercase;vertical-align:middle}.plan-pill.current{background:#f0a11c;background:var(--brand);color:#221803;color:var(--on-brand)}
/*# sourceMappingURL=main.87c2ca47.css.map*/