:root{color:#18202f;background:#eef2f6;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:16px;letter-spacing:0}*{box-sizing:border-box}body{margin:0}#root button,#root input,#root select,#root textarea{font:inherit}.shell{min-height:100vh;display:grid;grid-template-columns:288px minmax(0,1fr)}.sidebar{background:#111827;color:#f8fafc;padding:24px 18px;display:flex;flex-direction:column;gap:28px}.brand{display:flex;align-items:center;gap:14px}.brand-mark{width:42px;height:42px;border-radius:8px;display:grid;place-items:center;background:#14b8a6;color:#06211f;font-weight:800}.brand strong,.brand small{display:block}.brand small{color:#9ca3af;margin-top:2px}nav{display:grid;gap:6px}.nav-section{display:grid;gap:4px;padding-top:12px;margin-top:6px;border-top:1px solid #263244}#root .nav-item,#root .nav-group{width:100%;background:transparent;border:0;color:#d1d5db;padding:11px 12px;border-radius:6px;justify-content:flex-start;text-align:left}#root .nav-group{color:#fff;font-weight:700;background:#172033}#root .nav-item.child{padding-left:34px;color:#cbd5e1}#root .nav-item.active,#root .nav-item:hover,#root .nav-group.active,#root .nav-group:hover{background:#253044;color:#fff}.main{padding:26px;overflow:auto}.topbar{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;margin-bottom:18px}.topbar-actions{display:flex;justify-content:flex-end;align-items:flex-end;gap:12px;flex-wrap:wrap}h1,h2,p{margin:0}h1{font-size:28px;line-height:1.2}h2{font-size:18px}.topbar p,.section-title span,.module p,small{color:#64748b}.auth-box{display:flex;gap:8px;align-items:center;justify-content:flex-end;min-width:260px}.auth-box span{color:#475569;background:#fff;border:1px solid #dbe3eb;border-radius:6px;padding:10px 11px}#root input,#root select,#root textarea{border:1px solid #cbd5e1;border-radius:6px;padding:10px 11px;background:#fff;color:#111827}code{border:1px solid #cbd5e1;border-radius:5px;padding:2px 6px;background:#eef6f5;color:#0f766e;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:.9em}#root .name-rename-trigger{display:inline;width:auto;max-width:100%;min-width:0;padding:0;border:0;border-bottom:1px dotted currentColor;border-radius:0;background:transparent;color:inherit;font-weight:700;line-height:1.25;white-space:normal;text-align:left;overflow-wrap:anywhere}#root .name-rename-trigger:hover,#root .name-rename-trigger:focus-visible{color:#0f766e}#root input[type=radio]{width:auto;padding:0;margin:0;accent-color:#0f766e}#root textarea{min-height:180px;resize:vertical;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;line-height:1.45}.project-switcher{display:grid;gap:6px;min-width:240px;color:#475569;font-size:13px}#root button{border:0;border-radius:6px;padding:10px 12px;background:#0f766e;color:#fff;cursor:pointer;white-space:nowrap;display:inline-flex;align-items:center;justify-content:center;gap:8px}.secondary-action{background:#e2e8f0;color:#1f2937}.danger-action{background:#b91c1c;color:#fff}#root button:disabled,#root input:disabled,#root select:disabled,#root textarea:disabled{opacity:.55;cursor:not-allowed}.activity-indicator{min-height:40px;display:inline-flex;align-items:center;gap:8px;border:1px solid #bae6fd;border-radius:6px;padding:9px 11px;background:#f0f9ff;color:#0369a1;font-size:13px;font-weight:700}.spinner{width:14px;height:14px;flex:0 0 auto;border:2px solid currentColor;border-right-color:transparent;border-radius:999px;animation:spin .75s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:18px}.stats div,.panel,.wide{background:#fff;border:1px solid #dbe3eb;border-radius:8px}.stats div{padding:18px}.stats strong{display:block;font-size:24px}.stats span{color:#64748b}.grid{display:grid;grid-template-columns:minmax(320px,.82fr) minmax(420px,1.18fr);gap:18px;margin-bottom:18px}.panel,.wide{padding:18px}.inline-form{display:flex;gap:8px;margin:14px 0}.inline-form input{min-width:0;flex:1}.list{display:grid;gap:8px}.row{width:100%;background:#f8fafc;color:#111827;border:1px solid #e2e8f0;display:flex;justify-content:space-between;gap:12px;text-align:left;align-items:center}.row.active{background:#ccfbf1;border-color:#5eead4}.row span,.row small{display:grid;min-width:0}.row em{color:#64748b;font-style:normal;font-size:13px}.toast-stack{position:fixed;right:18px;bottom:18px;z-index:40;display:grid;gap:8px;width:min(360px,calc(100vw - 36px));pointer-events:none}#root .toast{width:100%;justify-content:flex-start;white-space:normal;text-align:left;pointer-events:auto;border:1px solid #5eead4;background:#0f766e;color:#fff;box-shadow:0 14px 34px #0f172a38;animation:toast-in .18s ease-out}#root .toast.toast-leaving{animation:toast-out .2s ease-in forwards}@keyframes toast-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes toast-out{to{opacity:0;transform:translateY(12px)}}.service-form{margin-top:14px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.service-form input[name=name],.service-form .full-field,.service-form .domain-choice,.service-form input[name=customImage],.service-form textarea[name=dockerfile],.service-form input[name=domains],.service-form button{grid-column:1 / -1}.service-form label{color:#475569;display:grid;gap:6px;font-size:13px}.domain-choice{border:1px solid #e2e8f0;border-radius:6px;padding:12px;display:grid;gap:12px}.domain-choice legend{padding:0 6px;color:#475569;font-size:13px}.segmented{display:flex;flex-wrap:wrap;gap:8px}.segmented label{display:flex;align-items:center;gap:6px;border:1px solid #dbe3eb;border-radius:6px;padding:8px 10px;background:#f8fafc}.domain-suffix-field{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center}.domain-suffix-field input{border-radius:6px 0 0 6px}.domain-suffix-field span{border:1px solid #cbd5e1;border-left:0;border-radius:0 6px 6px 0;padding:10px 11px;background:#f8fafc;color:#475569}.purchased-domain-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px}.wide{margin-bottom:18px}.section-title{display:flex;justify-content:space-between;gap:16px;align-items:center;margin-bottom:12px}.table{display:grid;gap:8px}.service-row{display:grid;grid-template-columns:1.2fr 1fr .6fr .6fr .6fr;gap:10px;align-items:center;padding:12px;border:1px solid #e2e8f0;border-radius:6px;background:#f8fafc}.service-row span{color:#475569;min-width:0;overflow-wrap:anywhere}.service-row button{min-width:0}.row-actions{display:flex;gap:8px;justify-content:flex-end;align-items:center;flex-wrap:wrap;min-width:0}.web-instance-table .web-instance-row{grid-template-columns:42px minmax(180px,1.1fr) minmax(160px,1fr) minmax(160px,1fr) 88px minmax(128px,.6fr)}.database-table .database-row{grid-template-columns:42px minmax(180px,1fr) minmax(120px,.55fr) minmax(160px,1fr) minmax(180px,1fr) minmax(220px,.8fr)}.project-table .project-row{grid-template-columns:minmax(180px,1.2fr) minmax(120px,.7fr) minmax(200px,1fr) minmax(110px,.55fr) minmax(140px,.65fr);cursor:pointer}.project-table .project-row.selected{background:#ecfdf5;border-color:#5eead4}.project-table .project-row:focus-visible{outline:2px solid #14b8a6;outline-offset:2px}.state-indicator{position:relative;width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;font-size:14px;font-weight:800;line-height:1}.state-symbol{display:inline-flex;align-items:center;justify-content:center;width:1em;height:1em;line-height:1;transform:translateY(-1px)}.state-running{background:#0f766e;color:#fff}.state-stopped{background:#ca8a04;color:#fff}.state-deleting{background:#b91c1c;color:#fff}#root .icon-action{position:relative;width:38px;height:38px;padding:0;color:#fff;font-size:18px;font-weight:800}#root .icon-action span,#root .state-indicator,#root .state-indicator .state-symbol{color:#fff}#root [data-tooltip]{position:relative}#root [data-tooltip]:after{content:attr(data-tooltip);position:absolute;left:50%;bottom:calc(100% + 8px);z-index:30;transform:translate(-50%);opacity:0;pointer-events:none;white-space:nowrap;border-radius:5px;padding:5px 7px;background:#111827;color:#fff;font-size:12px;font-weight:700;line-height:1.2;box-shadow:0 8px 18px #0f172a2e}#root [data-tooltip]:hover:after,#root [data-tooltip]:focus-visible:after{opacity:1}.volume-table .volume-row{grid-template-columns:minmax(180px,1fr) minmax(180px,1.1fr) minmax(160px,1fr) 90px minmax(220px,.8fr)}.dropdown-action{position:relative}.dropdown-action summary{list-style:none;border-radius:6px;padding:10px 12px;background:#0f766e;color:#fff;cursor:pointer}.dropdown-action summary::-webkit-details-marker{display:none}.dropdown-action[open] button{position:absolute;right:0;top:calc(100% + 6px);z-index:5;min-width:180px;background:#fff;color:#111827;border:1px solid #dbe3eb;box-shadow:0 12px 30px #0f172a29}.ssh-user-table .ssh-row{grid-template-columns:1fr 1fr minmax(220px,1.4fr) 120px 120px}.ssh-row strong{min-width:0;overflow-wrap:anywhere}.module-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px}.module{border:1px solid #e2e8f0;border-radius:6px;background:#f8fafc;padding:14px;display:grid;gap:8px}.ssh-management{display:grid;gap:12px}.compact-form{grid-template-columns:minmax(0,1fr) minmax(120px,180px)}.compact-form textarea,.compact-form button{grid-column:1 / -1}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;display:grid;place-items:center;padding:24px;background:#0f172a8a}.modal{width:min(680px,100%);max-height:min(760px,calc(100vh - 48px));overflow:auto;background:#fff;border:1px solid #dbe3eb;border-radius:8px;padding:18px;box-shadow:0 22px 70px #0f172a3d}.explorer-modal,.snapshot-modal{width:min(900px,100%)}.path-actions{display:flex;justify-content:space-between;gap:12px;align-items:center;margin:12px 0}.path-actions span{color:#64748b;overflow-wrap:anywhere}.file-row{width:100%;display:grid;grid-template-columns:minmax(0,1fr) 120px;gap:12px;text-align:left;align-items:center;background:#f8fafc;color:#111827;border:1px solid #e2e8f0}.file-row.directory{background:#eef6f5}.file-row span{color:#64748b;text-align:right}.snapshot-table .snapshot-row{grid-template-columns:minmax(180px,1fr) 140px 180px minmax(240px,.8fr)}.status-pill{display:inline-flex;align-items:center;min-height:36px;border-radius:6px;padding:8px 10px;background:#e2e8f0;color:#475569;font-size:13px;font-weight:700}.status-pill.active{background:#d1fae5;color:#047857}.log-console{min-height:440px;max-height:calc(100vh - 260px);overflow:auto;border:1px solid #111827;border-radius:6px;padding:12px;background:#0b1220;color:#d1fae5;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:13px;line-height:1.45}.log-console .muted{color:#94a3b8}.log-line{display:grid;grid-template-columns:82px 72px minmax(0,1fr);gap:10px;padding:2px 0}.log-line time{color:#93c5fd}.log-line strong{color:#5eead4;overflow-wrap:anywhere}.log-line span{min-width:0;color:#e5e7eb;white-space:pre-wrap;overflow-wrap:anywhere}.log-line.error span,.log-line.error strong{color:#fca5a5}.modal-title{grid-column:1 / -1;margin-bottom:2px}.modal-actions{grid-column:1 / -1;display:flex;justify-content:flex-end;gap:8px}.modal-actions button{grid-column:auto}.ssh-prefix-field{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center}.ssh-prefix-field span{border:1px solid #cbd5e1;border-right:0;border-radius:6px 0 0 6px;padding:10px 11px;background:#f8fafc;color:#475569;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace}.ssh-prefix-field input{border-radius:0 6px 6px 0}.project-summary{margin-top:14px;display:grid;gap:8px;padding:14px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:6px}.project-summary span,.muted{color:#64748b}.login-screen{min-height:100vh;display:grid;place-items:center;padding:24px;background:#eef2f6}.login-panel{width:min(460px,100%);background:#fff;border:1px solid #dbe3eb;border-radius:8px;padding:28px;display:grid;gap:18px}.login-brand{color:#111827}.login-panel h1{font-size:26px}.login-panel p{color:#64748b}.primary-action{width:100%}.login-security{border-top:1px solid #e2e8f0;padding-top:16px;color:#64748b;font-size:13px}.empty-state{min-height:240px;display:grid;align-content:center;gap:8px}.empty-state p{color:#64748b}@media (max-width: 980px){.shell{grid-template-columns:1fr}.sidebar{position:static}.topbar,.topbar-actions,.auth-box{flex-direction:column;align-items:stretch;min-width:0;width:100%}.stats,.grid,.service-row,.ssh-user-table .ssh-row,.web-instance-table .web-instance-row,.database-table .database-row,.project-table .project-row,.volume-table .volume-row,.snapshot-table .snapshot-row,.log-line,.file-row{grid-template-columns:1fr}.row-actions,.path-actions{justify-content:flex-start}.file-row span{text-align:left}}
