:root{--shell:#0b3a66;--shell-2:#0e4a82;--shell-text:#e8f0f8;--accent:#0a6ed1;--accent-hover:#0858a8;--accent-soft:#e5f0fb;--bg:#eef1f4;--surface:#fff;--surface-2:#f6f8fa;--header-row:#e9edf1;--border:#c9d1d9;--border-soft:#dde3e9;--text:#1d2d3e;--text-2:#556b82;--text-3:#8396a8;--ok:#107e3e;--ok-bg:#e6f4ea;--warn:#b95000;--warn-bg:#fef3e2;--err:#b00;--err-bg:#fdecea;--info:#0a6ed1;--info-bg:#e5f0fb;--neutral-bg:#eceff2;--font:"Segoe UI", -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif;--mono:"SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--radius:3px;--row-h:30px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-family:var(--font);color:var(--text);background:var(--bg);font-size:13px;line-height:1.4}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg)}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3{margin:0;font-weight:600}code,pre,.mono{font-family:var(--mono);font-size:12px}button,input,select,textarea{font:inherit;color:inherit}.shell{grid-template-rows:40px 1fr 24px;grid-template-columns:220px 1fr;height:100%;display:grid}.shell-header{background:var(--shell);color:var(--shell-text);border-bottom:3px solid var(--accent);grid-column:1/-1;align-items:center;gap:16px;padding:0 14px;display:flex}.shell-brand{letter-spacing:.04em;align-items:center;gap:8px;font-size:14px;font-weight:700;display:flex}.shell-brand .logo{width:22px;height:22px;color:var(--shell);background:#fff;border-radius:3px;place-items:center;font-size:13px;font-weight:800;display:grid}.shell-brand small{opacity:.7;letter-spacing:0;font-weight:400}.shell-header .spacer{flex:1}.shell-user{align-items:center;gap:10px;font-size:12px;display:flex}.shell-user button{color:var(--shell-text);border-radius:var(--radius);cursor:pointer;background:0 0;border:1px solid #ffffff59;padding:3px 10px}.shell-user button:hover{background:#ffffff1a}.shell-nav{background:var(--surface);border-right:1px solid var(--border);padding:8px 0;overflow-y:auto}.nav-group{text-transform:uppercase;color:var(--text-3);letter-spacing:.06em;padding:10px 14px 4px;font-size:11px;font-weight:700}.nav-link{color:var(--text);border-left:3px solid #0000;align-items:center;gap:8px;padding:6px 14px 6px 12px;display:flex}.nav-link:hover{background:var(--surface-2);text-decoration:none}.nav-link.active{background:var(--accent-soft);border-left-color:var(--accent);color:var(--accent);font-weight:600}.nav-link .nav-icon{color:var(--text-3);flex-shrink:0}.nav-link:hover .nav-icon{color:var(--text-2)}.nav-link.active .nav-icon{color:var(--accent)}.nav-link .code{font-family:var(--mono);color:var(--text-3);margin-left:auto;font-size:10px}.shell-main{flex-direction:column;min-width:0;min-height:0;display:flex;overflow-y:auto}.shell-status{background:var(--header-row);border-top:1px solid var(--border);color:var(--text-2);grid-column:1/-1;align-items:center;gap:18px;padding:0 12px;font-size:11px;display:flex}.shell-status .spacer{flex:1}.status-msg{text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:5px;min-width:0;font-weight:600;display:inline-flex;overflow:hidden}.status-msg.ok{color:var(--ok)}.status-msg.err{color:var(--err)}.status-msg.warn{color:var(--warn)}.status-msg.info{color:var(--info)}.toasts{z-index:80;flex-direction:column;gap:8px;width:min(380px,100vw - 32px);display:flex;position:fixed;top:52px;right:16px}.toast{background:var(--surface);border:1px solid var(--border);border-left:4px solid var(--info);border-radius:var(--radius);align-items:flex-start;gap:10px;padding:10px 12px;font-size:12px;animation:.15s ease-out toast-in;display:flex;box-shadow:0 6px 20px #0000002e}.toast>svg{flex-shrink:0;margin-top:1px}.toast.ok{border-left-color:var(--ok)}.toast.ok>svg{color:var(--ok)}.toast.err{border-left-color:var(--err)}.toast.err>svg{color:var(--err)}.toast.warn{border-left-color:var(--warn)}.toast.warn>svg{color:var(--warn)}.toast.info>svg{color:var(--info)}.toast-body{word-break:break-word;flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.toast-body span{color:var(--text-2)}.toast button{cursor:pointer;color:var(--text-3);background:0 0;border:none;padding:0}@keyframes toast-in{0%{opacity:0;transform:translateY(-6px)}}.command{width:300px;position:relative}.command-box{border-radius:var(--radius);background:#ffffff1f;border:1px solid #ffffff40;align-items:center;gap:6px;height:26px;padding:0 8px;display:flex}.command-box:focus-within{background:#fff;border-color:#fff}.command-box.invalid{border-color:#ff8a80}.command-box input{min-width:0;font-family:var(--mono);color:var(--shell-text);text-transform:none;background:0 0;border:none;outline:none;flex:1;font-size:12px}.command-box input::placeholder{color:#e8f0f899;font-family:var(--font)}.command-box:focus-within input{color:var(--text)}.command-box:focus-within input::placeholder{color:var(--text-3)}.command-hint{font-family:var(--mono);color:#e8f0f8b3;flex-shrink:0;font-size:10px}.command-box:focus-within .command-hint{color:var(--text-3)}kbd.command-hint{border:1px solid #ffffff4d;border-radius:3px;padding:0 4px}.command-box:focus-within kbd.command-hint{border-color:var(--border)}.command-list,.command-error{z-index:60;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);position:absolute;top:calc(100% + 4px);left:0;right:0;box-shadow:0 6px 20px #0000002e}.command-list{max-height:320px;margin:0;padding:4px 0;list-style:none;overflow-y:auto}.command-list li{cursor:pointer;align-items:center;gap:8px;padding:5px 10px;font-size:12px;display:flex}.command-list li svg{color:var(--text-3);flex-shrink:0}.command-list li.active{background:var(--accent-soft)}.command-list li.active svg{color:var(--accent)}.command-list .code{font-family:var(--mono);color:var(--accent);width:36px;font-size:11px;font-weight:600}.command-list .arg{color:var(--text-3);margin-left:auto;font-size:11px}.command-error{color:var(--err);border-left:3px solid var(--err);padding:7px 10px;font-size:12px}.page-sticky{z-index:30;position:sticky;top:0;box-shadow:0 2px 6px #0f1e2d0f}.page-head{background:var(--surface);border-bottom:1px solid var(--border);padding:10px 16px 0}.breadcrumb{color:var(--text-3);margin-bottom:2px;font-size:11px}.breadcrumb a{color:var(--text-2)}.page-title{align-items:baseline;gap:10px;padding-bottom:8px;display:flex}.page-title h1{font-size:17px}.page-title .subtitle{color:var(--text-2);font-size:12px}.toolbar{background:var(--surface-2);border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:4px;padding:6px 16px;display:flex}.toolbar .sep{background:var(--border);width:1px;height:20px;margin:0 6px}.toolbar .spacer{flex:1}.content{flex-direction:column;gap:14px;padding:14px 16px 24px;display:flex}.btn{border:1px solid var(--border);background:var(--surface);border-radius:var(--radius);cursor:pointer;white-space:nowrap;align-items:center;gap:6px;height:26px;padding:0 12px;font-size:12px;display:inline-flex}.btn:hover:not(:disabled){background:var(--surface-2);border-color:var(--text-3)}.btn:disabled{opacity:.5;cursor:default}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.btn.primary:hover:not(:disabled){background:var(--accent-hover)}.btn.danger{color:var(--err);border-color:#e7b3b3}.btn.danger:hover:not(:disabled){background:var(--err-bg)}.btn.ghost{background:0 0;border-color:#0000}.btn.ghost:hover:not(:disabled){border-color:var(--border)}.btn .key{font-family:var(--mono);opacity:.7;font-size:10px}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.panel-head{background:var(--header-row);border-bottom:1px solid var(--border);text-transform:uppercase;letter-spacing:.03em;color:var(--text-2);align-items:center;gap:8px;padding:7px 12px;font-size:12px;font-weight:600;display:flex}.panel-head .spacer{flex:1}.panel-body{padding:12px}.panel-body.flush{padding:0}.provider-apps-info{border-bottom:1px solid var(--border);flex-direction:column;gap:8px;padding:10px 12px;display:flex}.provider-apps-summary{color:var(--text-2);flex-wrap:wrap;align-items:center;gap:6px 16px;font-size:12px;display:flex}.provider-apps-summary span{white-space:nowrap}.provider-apps-summary strong{color:var(--text);font-variant-numeric:tabular-nums}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;display:grid}.kpis{grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;display:grid}.kpi{background:var(--surface);border:1px solid var(--border);border-top:3px solid var(--accent);border-radius:var(--radius);padding:10px 12px}.kpi .label{text-transform:uppercase;color:var(--text-2);letter-spacing:.04em;font-size:11px}.kpi .value{font-variant-numeric:tabular-nums;margin-top:2px;font-size:26px;font-weight:300}.kpi.ok{border-top-color:var(--ok)}.kpi.err{border-top-color:var(--err)}.kpi.warn{border-top-color:var(--warn)}.table-wrap{overflow-x:auto}table.grid{border-collapse:collapse;width:100%;font-size:12px}table.grid th{text-align:left;background:var(--header-row);color:var(--text-2);border-bottom:1px solid var(--border);height:var(--row-h);white-space:nowrap;padding:0 10px;font-weight:600}table.grid td{height:var(--row-h);border-bottom:1px solid var(--border-soft);white-space:nowrap;padding:0 10px}table.grid tbody tr:nth-child(2n) td{background:#fafbfc}table.grid tbody tr:hover td{background:var(--accent-soft)}table.grid tbody tr.clickable{cursor:pointer}table.grid td.num,table.grid th.num{text-align:right;font-variant-numeric:tabular-nums}table.grid td.actions{text-align:right}.empty{text-align:center;color:var(--text-3);padding:28px}.badge{background:var(--neutral-bg);color:var(--text-2);white-space:nowrap;border-radius:10px;align-items:center;gap:5px;padding:1px 8px;font-size:11px;font-weight:600;display:inline-flex}.badge:before{content:"";background:currentColor;border-radius:50%;width:6px;height:6px}.badge.ok{background:var(--ok-bg);color:var(--ok)}.badge.warn{background:var(--warn-bg);color:var(--warn)}.badge.err{background:var(--err-bg);color:var(--err)}.badge.info{background:var(--info-bg);color:var(--info)}.badge.running:before{animation:1s infinite pulse}@keyframes pulse{50%{opacity:.2}}.meter{align-items:center;gap:6px;min-width:110px;display:flex}.meter .bar{background:var(--neutral-bg);border-radius:3px;flex:1;height:6px;overflow:hidden}.meter .fill{background:var(--ok);height:100%}.meter .fill.warn{background:var(--warn)}.meter .fill.err{background:var(--err)}.meter span{text-align:right;font-variant-numeric:tabular-nums;width:32px;font-size:11px}.form{grid-template-columns:170px 1fr;align-items:center;gap:8px 12px;display:grid}.form label{text-align:right;color:var(--text-2);font-size:12px}.form label.req:after{content:" *";color:var(--err)}.form .hint{color:var(--text-3);grid-column:2;margin-top:-4px;font-size:11px}.form .full{grid-column:1/-1}.input,select.input,textarea.input{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);width:100%;max-width:420px;height:26px;padding:0 8px}textarea.input{height:auto;padding:6px 8px}.input:focus{outline:2px solid var(--accent-soft);border-color:var(--accent)}.input[readonly]{background:var(--surface-2);color:var(--text-2)}.checkbox{align-items:center;gap:6px;display:inline-flex}fieldset.group{border:1px solid var(--border-soft);border-radius:var(--radius);margin:0;padding:10px 12px 12px}fieldset.group legend{text-transform:uppercase;color:var(--text-2);letter-spacing:.04em;padding:0 6px;font-size:11px;font-weight:700}.msg{border-radius:var(--radius);border-left:4px solid;padding:8px 12px;font-size:12px}.msg.err{background:var(--err-bg);border-color:var(--err);color:#7a0000}.msg.ok{background:var(--ok-bg);border-color:var(--ok);color:#0a5429}.msg.warn{background:var(--warn-bg);border-color:var(--warn);color:#7a3500}.msg.info{background:var(--info-bg);border-color:var(--info);color:#06427d}.msg ul{margin:4px 0 0;padding-left:18px}.tabs{background:var(--surface);border-bottom:1px solid var(--border);gap:0;padding:0 16px;display:flex}.tab{cursor:pointer;color:var(--text-2);background:0 0;border:none;border-bottom:3px solid #0000;margin-bottom:-1px;padding:8px 14px;font-size:12px}.tab:hover{color:var(--text)}.tab.active{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}.modal-backdrop{z-index:50;background:#0f1e2d73;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal{background:var(--surface);border-radius:var(--radius);flex-direction:column;width:min(640px,100%);max-height:90vh;display:flex;box-shadow:0 10px 40px #00000040}.modal-head{background:var(--shell);color:var(--shell-text);padding:9px 14px;font-weight:600;display:flex}.modal-head .spacer{flex:1}.modal-head button{color:inherit;cursor:pointer;background:0 0;border:none;font-size:16px;line-height:1}.modal-body{flex-direction:column;gap:12px;padding:14px;display:flex;overflow-y:auto}.modal-foot{background:var(--surface-2);border-top:1px solid var(--border);justify-content:flex-end;gap:6px;padding:8px 14px;display:flex}.props{grid-template-columns:150px 1fr;gap:6px 12px;font-size:12px;display:grid}.props dt{color:var(--text-2);text-align:right}.props dd{margin:0;font-weight:500}.console{color:#d7e1ea;font-family:var(--mono);white-space:pre-wrap;word-break:break-word;border-radius:0 0 var(--radius) var(--radius);background:#101a24;max-height:60vh;padding:10px 12px;font-size:12px;line-height:1.55;overflow:auto}.console .ln{grid-template-columns:70px 100px 1fr;gap:10px;display:grid}.console .t{color:#6f8499}.console .s{color:#7fa6cc}.console .debug{color:#8fa3b5}.console .success{color:#7fdc9a}.console .warning{color:#ffc46b}.console .error{color:#ff8a80}.steps{flex-wrap:wrap;gap:2px;display:flex}.step{text-align:center;background:var(--neutral-bg);min-width:80px;color:var(--text-3);letter-spacing:.03em;flex:1;padding:6px 4px;font-size:10px;font-weight:600}.step.done{background:var(--ok-bg);color:var(--ok)}.step.current{background:var(--accent);color:#fff}.step.failed{background:var(--err);color:#fff}.step:first-child{border-radius:var(--radius) 0 0 var(--radius)}.step:last-child{border-radius:0 var(--radius) var(--radius) 0}.check-list{grid-template-columns:repeat(2,1fr);gap:4px 16px;margin:0;padding:0;list-style:none;display:grid}.check-list li{align-items:center;gap:6px;display:flex}.check-list .y{color:var(--ok);font-weight:700}.check-list .n{color:var(--err);font-weight:700}.dropzone{border:2px dashed var(--border);border-radius:var(--radius);text-align:center;color:var(--text-2);background:var(--surface-2);cursor:pointer;padding:22px}.dropzone.over{border-color:var(--accent);background:var(--accent-soft)}.dropzone strong{color:var(--text)}.login-page{background:linear-gradient(160deg, var(--shell) 0 45%, var(--bg) 45%);place-items:center;min-height:100%;padding:16px;display:grid}.login-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);width:min(360px,100%);box-shadow:0 8px 30px #0000002e}.login-card .head{background:var(--shell);color:var(--shell-text);border-bottom:3px solid var(--accent);padding:16px 18px}.login-card .head h1{letter-spacing:.05em;font-size:16px}.login-card .head p{opacity:.75;margin:2px 0 0;font-size:12px}.login-card form{flex-direction:column;gap:10px;padding:18px;display:flex}.login-card label{color:var(--text-2);flex-direction:column;gap:4px;font-size:12px;display:flex}.login-card .input{max-width:none;height:30px}.login-card .btn{justify-content:center;height:30px}.muted{color:var(--text-3)}.nowrap{white-space:nowrap}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}@media (width<=1100px){.kpis{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-3{grid-template-columns:1fr}}@media (width<=800px){.shell{grid-template-rows:40px auto 1fr 24px;grid-template-columns:1fr}.shell-nav{border-right:none;border-bottom:1px solid var(--border);padding:0;display:flex;overflow-x:auto}.nav-group{display:none}.nav-link{white-space:nowrap;border-bottom:3px solid #0000;border-left:none}.nav-link.active{border-bottom-color:var(--accent)}.nav-link .nav-icon{color:var(--text-3);flex-shrink:0}.nav-link:hover .nav-icon{color:var(--text-2)}.nav-link.active .nav-icon{color:var(--accent)}.nav-link .code{display:none}.grid-2{grid-template-columns:1fr}.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.form{grid-template-columns:1fr}.form label{text-align:left}.form .hint{grid-column:1}.props{grid-template-columns:110px 1fr}.shell-brand small,.shell-user .who{display:none}.command{flex:1;width:auto}.shell-header{gap:10px}.check-list{grid-template-columns:1fr}}.console-term{cursor:text;min-height:420px;max-height:calc(100vh - 330px)}.term-entry{margin-bottom:8px}.term-prompt{color:#7fdc9a;white-space:nowrap;font-weight:600}.term-cmd{color:#fff}.term-out{white-space:pre-wrap;word-break:break-word;font:inherit;color:#d7e1ea;margin:2px 0 0}.term-out.error{color:#ffb3ab}.term-meta{margin-top:2px;font-size:10px}.term-meta.success{color:#6f8f7a}.term-meta.error{color:#ff8a80}.term-input{align-items:center;gap:8px;display:flex}.term-input input{color:#fff;min-width:0;font:inherit;caret-color:#7fdc9a;background:0 0;border:none;outline:none;flex:1;padding:2px 0}.term-input input::placeholder{color:#6f8499}.term-wrap{position:relative}.term-screen{color:#d7e1ea;height:calc(100vh - 290px);min-height:320px;font-family:var(--mono);white-space:pre;cursor:text;border-radius:0 0 var(--radius) var(--radius);background:#101a24;padding:8px 10px;font-size:12px;line-height:17px;overflow:auto}.term-screen.focused{box-shadow:inset 0 0 0 1px #3d6b99}.term-line{min-height:17px}.term-cursor{color:#101a24;background:#d7e1ea}.term-measure{visibility:hidden;white-space:pre;font-family:var(--mono);font-size:12px;line-height:17px;position:absolute;top:-9999px}.term-keys{opacity:0;resize:none;border:0;width:1px;height:1px;padding:0;position:absolute;bottom:0;left:0;overflow:hidden}.app-actions{align-items:center;gap:3px;display:inline-flex}.icon-btn{border:1px solid var(--border);background:var(--surface);border-radius:var(--radius);width:24px;height:22px;color:var(--text-2);cursor:pointer;place-items:center;padding:0;display:inline-grid}.icon-btn:hover:not(:disabled){background:var(--surface-2);color:var(--text);border-color:var(--text-3)}.icon-btn:disabled{opacity:.35;cursor:default}.icon-btn.go{color:var(--ok)}.icon-btn.warn{color:var(--warn)}.icon-btn.stop{color:var(--err)}.diag-list{flex-direction:column;gap:4px;display:flex}.diag-check{border:1px solid var(--border-soft);border-radius:var(--radius)}.diag-head{background:var(--surface);cursor:pointer;text-align:left;border:none;align-items:center;gap:8px;width:100%;padding:7px 10px;font-size:12px;display:flex}.diag-head:disabled{cursor:default}.diag-head strong{white-space:nowrap}.diag-summary{color:var(--text-2);flex:1}.diag-details{border-radius:0 0 var(--radius) var(--radius);max-height:260px;margin:0;font-size:11px}.dns-box{border-left:3px solid var(--border);background:var(--surface-2);flex-direction:column;gap:3px;max-width:420px;margin-top:6px;padding:7px 10px;font-size:12px;display:flex}.dns-box.info{border-color:var(--info);background:var(--info-bg)}.dns-box.ok{border-color:var(--ok);background:var(--ok-bg)}.dns-box.warn{border-color:var(--warn);background:var(--warn-bg)}table.grid th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}table.grid th.sortable:hover{color:var(--text);background:#dfe5eb}table.grid th.sorted{color:var(--accent)}table.grid th .sort-ind{opacity:.45;font-size:10px}table.grid th.sorted .sort-ind{opacity:1}.project-chip{white-space:nowrap;align-items:center;gap:4px;display:inline-flex}.chip-name{text-overflow:ellipsis;border:1px solid;border-radius:10px;align-items:center;gap:5px;max-width:240px;padding:1px 7px;font-size:11px;font-weight:600;display:inline-flex;overflow:hidden}.chip-dot{border-radius:50%;flex-shrink:0;width:7px;height:7px}.chip-count{opacity:.7;font-weight:700}.chip-role{text-transform:uppercase;letter-spacing:.03em;background:var(--neutral-bg);color:var(--text-2);border-radius:3px;padding:1px 6px;font-size:10px;font-weight:700}.chip-role.role-frontend{color:#0a5ab0;background:#e5f0fb}.chip-role.role-backend{color:#0c6b34;background:#e6f4ea}.chip-role.role-worker{color:#9a4400;background:#fef3e2}.chip-role.role-storage{color:#6b2fb0;background:#f1e8fb}table.grid.grouped tr.group-row td{height:34px}table.grid.grouped tr.group-row.open td{background:var(--accent-soft);font-weight:500}table.grid.grouped tr.group-children>td{height:auto;padding:0;background:#f7f9fb!important}.group-children-inner{padding:6px 10px 10px 30px}.group-children-inner table.grid{background:var(--surface);border:1px solid var(--border-soft)}.parts{flex-wrap:wrap;gap:3px;display:inline-flex}.chip-role.off{opacity:.45;text-decoration:line-through}.group-flag{border-radius:3px;align-items:center;gap:3px;margin-left:6px;padding:0 5px;font-size:10px;font-weight:600;display:inline-flex}.group-flag.warn{background:var(--warn-bg);color:var(--warn)}.cpu-meter{min-width:150px}.cpu-meter span{width:38px}.cpu-meter small{text-align:right;font-variant-numeric:tabular-nums;width:52px;font-size:10px}.live-dot{background:var(--text-3);border-radius:50%;width:8px;height:8px;display:inline-block}.live-dot.on{background:#e5352b;box-shadow:0 0 0 3px #e5352b2e}.live-dot.on.busy{animation:.8s infinite pulse}.btn.live-on{color:#b3261e;background:#fff5f4;border-color:#e5352b;font-weight:600}.cpu-meter.live .fill{transition:width .6s}.live-host{text-transform:none;color:var(--text-2);font-size:11px;font-weight:500}.live-host strong{color:var(--text)}.dev-layout{grid-template-columns:minmax(0,1fr) 400px;align-items:stretch;gap:12px;display:grid}.dev-page{flex-direction:column;flex:1;min-height:0;display:flex}.dev-page>.page-sticky{flex:none}.dev-content{flex:1;min-height:0;overflow:hidden}.dev-content .dev-layout{flex:1;grid-template-rows:minmax(0,1fr);height:100%;min-height:0}.dev-content .dev-layout>.panel{flex-direction:column;min-height:0;display:flex}.dev-content .dev-layout>.panel>.panel-body{flex-direction:column;flex:1;min-height:0;display:flex}.dev-chat{flex-direction:column;flex:1;height:100%;min-height:0;display:flex}.dev-log{flex-direction:column;flex:1;gap:16px;min-height:0;padding:12px 14px;display:flex;overflow-y:auto}.dev-turn{flex-direction:column;gap:6px;display:flex}.dev-turn.undone{opacity:.55}.dev-user{background:var(--accent-soft);border:1px solid #c7dcf3;border-radius:6px;align-self:flex-end;max-width:85%;padding:7px 10px}.dev-user-head{margin-bottom:2px;font-size:11px}.dev-user-text,.dev-text{white-space:pre-wrap;word-break:break-word;line-height:1.5}.dev-auto{color:var(--text-2);align-self:flex-end;align-items:center;gap:4px;font-size:11px;display:inline-flex}.dev-tool{color:var(--text-2);font-size:12px}.dev-dot{color:var(--ok)}.dev-tool .mono{color:var(--text);word-break:break-all}.dev-result{border-left:2px solid var(--border);color:var(--text-3);white-space:pre-wrap;word-break:break-word;max-height:140px;margin:0 0 0 14px;padding:3px 8px;font-size:11px;overflow:auto}.dev-result.error{color:var(--err);border-left-color:var(--err)}.dev-denied{background:var(--warn-bg);border-radius:var(--radius);border:1px solid #f3cf9c;flex-direction:column;gap:4px;padding:6px 10px;font-size:12px;display:flex}.dev-meta{color:var(--text-3);font-size:11px}.dev-meta.ok{color:var(--ok)}.dev-meta.err{color:var(--err)}.dev-working{color:var(--info);align-items:center;gap:6px;font-size:12px;display:flex}.dev-undo{align-self:flex-start;height:22px;font-size:11px}.dev-attachments{flex-wrap:wrap;gap:6px;margin-top:6px;display:flex}.dev-thumb{object-fit:cover;border:1px solid var(--border);border-radius:var(--radius);cursor:zoom-in;background:var(--surface);max-width:160px;height:72px}.dev-thumb.loading{width:90px;color:var(--text-3);place-items:center;font-size:10px;display:inline-grid;overflow:hidden}.dev-file{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);align-items:center;gap:4px;padding:2px 6px;font-size:11px;display:inline-flex}.dev-composer{border-top:1px solid var(--border);background:var(--surface-2);flex-direction:column;gap:6px;padding:8px 10px;display:flex}.dev-composer textarea{resize:vertical;width:100%;max-width:none;min-height:58px;font:inherit}.dev-composer-bar{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.dev-composer-bar .spacer,.dev-side-bar .spacer,.dev-change .spacer{flex:1}.dev-mode{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);padding:1px;display:inline-flex}.dev-mode .btn{border:none;height:24px}.dev-pending{flex-wrap:wrap;gap:6px;display:flex}.dev-chip{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);align-items:center;gap:4px;max-width:220px;padding:2px 4px;font-size:11px;display:inline-flex}.dev-chip img{object-fit:cover;border-radius:2px;width:40px;height:28px}.dev-chip span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.dev-chip button{cursor:pointer;color:var(--text-3);background:0 0;border:none;padding:0;display:inline-grid}.dev-side{flex:1;min-height:0;overflow:auto}.dev-side-bar{border-bottom:1px solid var(--border-soft);align-items:center;gap:6px;padding:6px 10px;display:flex}.dev-session{flex-direction:column;gap:12px;padding:12px;display:flex}.dev-account{border-top:1px solid var(--border-soft);flex-direction:column;gap:6px;padding-top:10px;display:flex}.dev-change{border:none;border-bottom:1px solid var(--border-soft);cursor:pointer;text-align:left;width:100%;font:inherit;color:var(--text);background:0 0;align-items:center;gap:6px;padding:5px 10px;display:flex}.dev-change:hover{background:var(--surface-2)}.dev-change .mono{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.dev-status{font-family:var(--mono);text-align:center;border-radius:2px;min-width:16px;font-size:10px;font-weight:700}.dev-status.added{color:var(--ok);background:var(--ok-bg)}.dev-status.modified{color:var(--warn);background:var(--warn-bg)}.dev-status.deleted{color:var(--err);background:var(--err-bg)}.dev-add{color:var(--ok);font-family:var(--mono);font-size:11px}.dev-del{color:var(--err);font-family:var(--mono);font-size:11px}.dev-diff{color:#d7e1ea;background:#101a24;max-height:420px;margin:0;padding:6px 0;font-size:11px;line-height:1.45;overflow-x:auto}.dev-diff div{white-space:pre;padding:0 10px}.dev-diff .add{color:#a6f0bb;background:#7fdc9a24}.dev-diff .del{color:#ffb3ab;background:#ff8a8024}.dev-diff .hunk{color:#7fa6cc}.spin{animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (width<=1100px){.dev-layout{grid-template-columns:minmax(0,1fr)}.dev-content{flex:none;min-height:auto;overflow:visible}.dev-content .dev-layout{flex:none;grid-template-rows:auto;height:auto;min-height:auto}.dev-content .dev-chat{flex:none;height:clamp(360px,62vh,560px)}.dev-side{max-height:none}}.dev-input{position:relative}.dev-suggest{z-index:20;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);max-height:320px;position:absolute;bottom:calc(100% + 4px);left:0;right:0;overflow-y:auto;box-shadow:0 6px 18px #101a2429}.dev-suggest-item{cursor:pointer;grid-template-columns:max-content max-content minmax(0,1fr);align-items:baseline;gap:10px;padding:5px 10px;font-size:12px;display:grid}.dev-suggest-item.active{background:var(--accent-soft)}.dev-suggest-name{font-family:var(--mono);color:var(--accent);font-weight:600}.dev-suggest-arg{font-family:var(--mono);color:var(--text-3);text-overflow:ellipsis;white-space:nowrap;max-width:260px;font-size:11px;overflow:hidden}.dev-suggest-desc{color:var(--text-2);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.dev-suggest-foot{color:var(--text-3);border-top:1px solid var(--border-soft);background:var(--surface-2);padding:4px 10px;font-size:10px}.dev-cmd-hint{text-overflow:ellipsis;white-space:nowrap;margin-bottom:4px;font-size:11px;overflow:hidden}.usage-button{align-items:center;gap:12px;height:26px;display:inline-flex}.usage-mini{align-items:center;gap:5px;font-size:11px;display:inline-flex}.usage-mini-label{color:var(--text-2)}.usage-mini-bar{background:var(--neutral-bg);border-radius:3px;width:46px;height:5px;display:inline-block;overflow:hidden}.usage-section{flex-direction:column;gap:8px;display:flex}.usage-section+.usage-section{border-top:1px solid var(--border-soft);padding-top:12px}.usage-title{letter-spacing:.06em;text-transform:uppercase;color:var(--text-2);align-items:center;gap:8px;font-size:11px;font-weight:700;display:flex}.usage-title .spacer,.usage-row .spacer,.usage-projects .spacer{flex:1}.usage-at{text-transform:none;letter-spacing:0;font-weight:400}.usage-props{grid-template-columns:130px 1fr;gap:6px 12px;margin:0;font-size:12px;display:grid}.usage-props dt{color:var(--text-2)}.usage-props dd{flex-wrap:wrap;align-items:center;gap:8px;margin:0;display:flex}.usage-row{flex-direction:column;gap:4px;font-size:13px;display:flex}.usage-bar{background:var(--neutral-bg);border-radius:3px;height:6px;overflow:hidden}.usage-fill{background:var(--accent);border-radius:3px;height:100%;display:block}.usage-fill.warn{background:var(--warn)}.usage-fill.err{background:var(--err)}.usage-reset,.usage-note{font-size:11px}.usage-link{align-items:center;gap:4px;font-size:12px;display:inline-flex}.usage-projects{flex-direction:column;gap:3px;font-size:12px;display:flex}.menu-anchor{display:inline-flex;position:relative}.chip-btn{height:24px;font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;white-space:nowrap;border-radius:12px;align-items:center;gap:5px;padding:0 8px;font-size:12px;display:inline-flex}.chip-btn:hover,.chip-btn.open{border-color:var(--text-3);background:var(--surface-2)}.chip-sub{color:var(--text-2);margin-left:2px}.chip-sub:before{content:"· "}.mode-chip{font-weight:600}.menu-pop{z-index:30;background:var(--surface);border:1px solid var(--border);border-radius:6px;width:340px;max-height:60vh;padding:4px 0;position:absolute;bottom:calc(100% + 6px);overflow-y:auto;box-shadow:0 8px 24px #101a242e}.menu-pop.left{left:0}.menu-pop.right{right:0}.menu-head{color:var(--text-2);justify-content:space-between;padding:6px 12px 4px;font-size:11px;font-weight:700;display:flex}.menu-head .muted{font-weight:400}.menu-item{text-align:left;width:100%;font:inherit;color:var(--text);cursor:pointer;background:0 0;border:none;align-items:flex-start;gap:10px;padding:7px 12px;display:flex}.menu-item:hover{background:var(--surface-2)}.menu-item.active{background:var(--accent-soft)}.menu-item-icon{color:var(--text-2);flex:none;margin-top:2px}.menu-item-text{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.menu-item-text .muted{font-size:11px}.menu-foot{border-top:1px solid var(--border-soft);justify-content:space-between;align-items:center;gap:10px;margin-top:4px;padding:8px 12px 6px;font-size:12px;display:flex}.effort-dots{align-items:center;gap:8px;display:inline-flex}.effort-dot{border:1px solid var(--text-3);background:var(--surface);cursor:pointer;border-radius:50%;width:10px;height:10px;padding:0}.effort-dot.on{background:var(--accent);border-color:var(--accent);transform:scale(1.25)}.dev-denied .row .btn{height:22px}.icon-btn.devai:not(:disabled){color:var(--accent)}.modal.wide{width:min(1100px,100%)}.tree{padding-bottom:8px;font-size:13px}.tree-head{letter-spacing:.04em;text-transform:uppercase;color:var(--text-2);border-bottom:1px solid var(--border-soft);background:var(--surface);z-index:1;align-items:center;gap:6px;padding:7px 10px;font-size:11px;font-weight:700;display:flex;position:sticky;top:0}.tree-head .spacer{flex:1}.tree-row{width:100%;height:24px;font:inherit;color:var(--text);text-align:left;cursor:pointer;white-space:nowrap;background:0 0;border:none;align-items:center;gap:5px;padding-right:10px;display:flex}.tree-row:hover{background:var(--surface-2)}.tree-row.generated{opacity:.55}.tree-row.changed .tree-name{color:#9a6700}.tree-chevron{width:13px;color:var(--text-2);flex:none;place-items:center;display:inline-grid}.tree-icon{color:var(--text-3);flex:none}.tree-icon.folder{color:#c09553}.tree-icon.ext-js,.tree-icon.ext-jsx,.tree-icon.ext-mjs,.tree-icon.ext-cjs,.tree-icon.ext-json{color:#b8a200}.tree-icon.ext-ts,.tree-icon.ext-tsx,.tree-icon.ext-md,.tree-icon.ext-py{color:#3b7fb4}.tree-icon.ext-html,.tree-icon.ext-htm{color:#e37933}.tree-icon.ext-css,.tree-icon.ext-scss{color:#42a5f5}.tree-icon.ext-png,.tree-icon.ext-jpg,.tree-icon.ext-jpeg,.tree-icon.ext-gif,.tree-icon.ext-webp,.tree-icon.ext-svg,.tree-icon.ext-ico{color:#a074c4}.tree-name{text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.tree-mark{font-family:var(--mono);color:#9a6700;font-size:10px;font-weight:700}.tree-mark.added{color:var(--ok)}.tree-mark.deleted{color:var(--err)}.viewer-code{background:var(--surface-2);border:1px solid var(--border-soft);border-radius:var(--radius);max-height:65vh;margin:0;padding:6px 0;font-size:12px;line-height:1.5;overflow:auto}.viewer-code div{white-space:pre;padding-right:12px}.viewer-code .ln{text-align:right;width:44px;color:var(--text-3);border-right:1px solid var(--border-soft);-webkit-user-select:none;user-select:none;margin-right:10px;padding-right:10px;display:inline-block}.viewer-image{object-fit:contain;background:repeating-conic-gradient(#eef1f4 0% 25%,#fff 0% 50%) 50%/16px 16px;align-self:center;max-width:100%;max-height:65vh}.dev-layout{grid-template-columns:minmax(340px,.9fr) minmax(0,1.3fr) 300px}.dev-editor{flex-direction:column;flex:1;height:100%;min-height:0;display:flex}.editor{flex-direction:column;height:100%;min-height:0;display:flex}.editor-empty{color:var(--text-3);text-align:center;flex:1;place-items:center;height:100%;padding:20px;display:grid}.editor-tabs{border-bottom:1px solid var(--border);background:var(--surface-2);flex:none;display:flex;overflow-x:auto}.editor-tab{border-right:1px solid var(--border-soft);cursor:pointer;white-space:nowrap;color:var(--text-2);align-items:center;gap:5px;padding:5px 6px 5px 10px;font-size:12px;display:inline-flex}.editor-tab.active{background:var(--surface);color:var(--text);box-shadow:inset 0 2px 0 var(--accent)}.editor-tab-name.changed{color:#9a6700}.editor-dirty{color:var(--accent);font-size:10px}.editor-tab-close{cursor:pointer;color:var(--text-3);background:0 0;border:none;border-radius:3px;padding:1px;display:inline-grid}.editor-tab-close:hover{background:var(--border-soft);color:var(--text)}.editor-bar{border-bottom:1px solid var(--border-soft);flex-wrap:wrap;flex:none;align-items:center;gap:6px;padding:5px 10px;display:flex}.editor-bar .spacer{flex:1}.editor-bar .btn{height:24px}.editor-path{text-overflow:ellipsis;white-space:nowrap;max-width:55%;overflow:hidden}.editor-live{background:var(--warn-bg);color:var(--warn);border-bottom:1px solid #f3cf9c;flex:none;padding:4px 10px;font-size:11px}.editor-body{flex-direction:column;flex:1;min-height:0;display:flex;overflow:auto}.editor-diff{border-radius:0;flex:1;max-height:none;margin:0}.code-area{min-height:0;font-family:var(--mono);background:var(--surface);flex:1;font-size:12px;line-height:1.55;display:flex}.code-area.readonly{background:var(--surface-2)}.code-gutter{text-align:right;min-width:44px;color:var(--text-3);background:var(--surface-2);border-right:1px solid var(--border-soft);-webkit-user-select:none;user-select:none;font:inherit;line-height:inherit;margin:0;padding:8px 8px 8px 6px;overflow:hidden}.code-input{resize:none;min-width:0;color:var(--text);font:inherit;line-height:inherit;white-space:pre;tab-size:2;background:0 0;border:none;outline:none;flex:1;margin:0;padding:8px 10px;overflow:auto}.code-area:not(.readonly) .code-input:focus{background:#fffdf5}@media (width<=1400px){.dev-layout{grid-template-columns:minmax(0,1fr) minmax(0,1.2fr)}.dev-layout>.panel:last-child{grid-column:1/-1}.dev-content{flex:none;min-height:auto;overflow:visible}.dev-content .dev-layout{flex:none;grid-template-rows:auto;height:auto;min-height:auto}.dev-content .dev-chat,.dev-content .dev-editor{flex:none;height:clamp(360px,62vh,560px)}.dev-side{max-height:420px}}@media (width<=1100px){.dev-layout{grid-template-columns:minmax(0,1fr)}}.dev-session-select{width:280px}.dev-mobile-tabs{background:var(--surface);border-bottom:1px solid var(--border-soft);z-index:25;gap:6px;padding:6px 10px;display:none;position:sticky;top:0}.dev-mobile-tab{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);height:34px;color:var(--text-2);cursor:pointer;white-space:nowrap;text-overflow:ellipsis;flex:1;justify-content:center;align-items:center;gap:6px;padding:0 8px;font-size:12px;font-weight:500;display:inline-flex;overflow:hidden}.dev-mobile-tab:hover{background:var(--surface-2)}.dev-mobile-tab.active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent);font-weight:600}@media (width<=900px){.dev-mobile-tabs{display:flex}.dev-session-select{width:100%!important;max-width:100%!important}.dev-layout{flex-direction:column;gap:0;display:flex!important}.dev-layout>.panel{border-top:none;border-left:none;border-right:none;border-radius:0;display:none!important}.dev-layout.mobile-view-chat>.panel:first-of-type,.dev-layout.mobile-view-editor>.panel:nth-of-type(2),.dev-layout.mobile-view-side>.panel:nth-of-type(3){flex:1;min-height:calc(100vh - 200px);display:flex!important}.dev-content .dev-chat,.dev-content .dev-editor{height:calc(100vh - 250px);min-height:380px}.dev-user{max-width:94%}.dev-composer{padding:8px}.dev-composer-bar{gap:4px}.dev-composer-bar .chip-btn{height:26px;padding:0 6px;font-size:11px}.menu-pop{width:min(340px,100vw - 20px);max-height:50vh}.menu-pop.right{right:-6px}.menu-pop.left{left:-6px}.dev-suggest-item{grid-template-columns:max-content minmax(0,1fr);gap:4px 8px}.dev-suggest-desc{color:var(--text-3);grid-column:1/-1;font-size:11px}.editor-bar{gap:4px;padding:6px 8px}.editor-path{max-width:45%;font-size:11px}.modal{max-width:calc(100vw - 16px);margin:8px auto}}
