:root{--color-primary:#1f3a5f;--color-primary-hover:#16304f;--color-accent:#d9a441;--color-gold:#f2c94c;--color-bg:#faf8f5;--color-surface:#fff;--color-text:#1a1a1a;--color-text-muted:#6b6b6b;--color-border:#e5e5e5;--color-success:#2e8b57;--color-warning:#d9a441;--color-danger:#c0392b;--color-info:#2e5984;--font-sans:"montserrat", system-ui, sans-serif;--font-mono:"JetBrains Mono", "Consolas", monospace;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.25rem;--text-2xl:1.5rem;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-6:1.5rem;--space-8:2rem;--space-12:3rem;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--shadow-sm:0 1px 2px #0000000d;--shadow-md:0 4px 6px #00000012;--shadow-lg:0 10px 15px #0000001a}*,:before,:after{box-sizing:border-box}body{font-family:var(--font-sans);font-size:var(--text-base);color:var(--color-text);background:var(--color-bg);margin:0}.login-page{min-height:100vh;padding:var(--space-6);background:var(--color-bg);justify-content:center;align-items:center;display:flex}.login-card{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:var(--space-8);width:100%;max-width:380px}.login-title{font-size:var(--text-xl);color:var(--color-primary);margin:0 0 var(--space-6);letter-spacing:.04em;font-weight:700}.login-subtitle{font-size:var(--text-sm);color:var(--color-text-muted);margin:0 0 var(--space-6)}.field{gap:var(--space-1);margin-bottom:var(--space-4);flex-direction:column;display:flex}.field label{font-size:var(--text-sm);color:var(--color-text-muted);font-weight:500}.field input{padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--text-sm);font-family:var(--font-sans);background:var(--color-bg);color:var(--color-text)}.field input:focus{outline:2px solid var(--color-primary);outline-offset:1px}.form-error{color:var(--color-danger);font-size:var(--text-sm);margin:0 0 var(--space-3)}.btn{padding:var(--space-2) var(--space-4);border-radius:var(--radius-sm);font-size:var(--text-sm);font-family:var(--font-sans);cursor:pointer;align-items:center;gap:var(--space-2);border:none;font-weight:600;display:inline-flex}.btn:disabled{opacity:.6;cursor:default}.btn-primary{background:var(--color-primary);color:var(--color-surface)}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover)}.btn-accent{background:var(--color-accent);color:var(--color-text)}.btn-accent:hover:not(:disabled){background:var(--color-gold)}.btn-ghost{color:var(--color-text-muted);border:1px solid var(--color-border);background:0 0}.btn-ghost:hover:not(:disabled){background:var(--color-bg)}.btn-danger{color:var(--color-danger);background:0 0;border:1px solid #c0392b66}.btn-danger:hover:not(:disabled){background:#c0392b12}.btn-full{justify-content:center;width:100%}.shell{flex-direction:column;min-height:100vh;display:flex}.shell-header{background:var(--color-primary);color:var(--color-surface);padding:var(--space-4) var(--space-6);justify-content:space-between;align-items:center;gap:var(--space-4);box-shadow:var(--shadow-md);display:flex}.shell-title{font-size:var(--text-xl);letter-spacing:.04em;margin:0;font-weight:700}.shell-subtitle{font-size:var(--text-sm);color:#ffffffa6;margin:0}.shell-main{padding:var(--space-8) var(--space-6);flex:1;width:100%;max-width:1100px;margin:0 auto}.poll-error-banner{align-items:center;gap:var(--space-3);background:color-mix(in srgb, var(--color-danger) 12%, transparent);border:1px solid color-mix(in srgb, var(--color-danger) 40%, transparent);color:var(--color-danger);border-radius:var(--radius);padding:var(--space-3) var(--space-4);font-size:var(--text-sm);margin-bottom:var(--space-6);display:flex}.poll-error-retry{color:inherit;border-radius:var(--radius);padding:var(--space-1) var(--space-3);font-size:var(--text-sm);cursor:pointer;background:0 0;border:1px solid}.poll-error-retry:hover{background:color-mix(in srgb, var(--color-danger) 15%, transparent)}.dashboard-toolbar{margin-bottom:var(--space-6);justify-content:space-between;align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.dashboard-heading{font-size:var(--text-2xl);color:var(--color-primary);margin:0;font-weight:700}.tenant-table{border-collapse:collapse;background:var(--color-surface);border-radius:var(--radius-md);width:100%;box-shadow:var(--shadow-sm);overflow:hidden}.tenant-table th,.tenant-table td{padding:var(--space-3) var(--space-4);text-align:left;border-bottom:1px solid var(--color-border);font-size:var(--text-sm)}.tenant-table th{background:var(--color-bg);color:var(--color-text-muted);font-weight:600;font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.05em}.tenant-table tr:last-child td{border-bottom:none}.tenant-table td.id-cell{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text-muted)}.tenant-table .table-empty{text-align:center;color:var(--color-text-muted);padding:var(--space-12) 0}.status-badge{padding:2px var(--space-2);border-radius:var(--radius-sm);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.04em;font-weight:600;display:inline-block}.status-badge.provisioning{color:#9a6e00;background:#d9a44126}.status-badge.active{color:#1f6b40;background:#2e8b5726}.status-badge.destroying{color:var(--color-danger);background:#c0392b1f}.status-badge.destroyed{color:#6b7280;background:#e5e7eb}.status-badge.failed{color:var(--color-danger);background:#c0392b1f}.modal-backdrop{z-index:100;padding:var(--space-6);background:#0000008c;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--color-surface);border-radius:var(--radius-lg);width:100%;max-width:480px;padding:var(--space-6);gap:var(--space-4);flex-direction:column;display:flex;box-shadow:0 20px 60px #00000040}.modal-title{font-size:var(--text-lg);color:var(--color-primary);margin:0;font-weight:700}.modal-actions{justify-content:flex-end;gap:var(--space-3);padding-top:var(--space-2);border-top:1px solid var(--color-border);display:flex}.provision-status{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);background:var(--color-bg);border:1px solid var(--color-border);font-size:var(--text-sm);display:flex}.provision-status.active{color:#1f6b40;background:#2e8b5714;border-color:#2e8b574d}.spinner{border:2px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;flex-shrink:0;width:16px;height:16px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.btn-sm{font-size:var(--text-xs);padding:2px 10px}.tenant-table td.actions-cell{text-align:right;white-space:nowrap;justify-content:flex-end;align-items:center;gap:var(--space-2);display:flex}.tenant-row-expanded td{border-bottom:none}.expand-btn{cursor:pointer;color:var(--color-text-muted);border-radius:var(--radius-sm);background:0 0;border:none;padding:2px 4px;font-size:10px;line-height:1}.expand-btn:hover{background:var(--color-border)}.detail-row td{background:var(--color-bg)}.detail-panel{padding:var(--space-3) var(--space-4) var(--space-4);gap:var(--space-3);border-bottom:1px solid var(--color-border);grid-template-columns:repeat(auto-fill,minmax(260px,1fr));display:grid}.detail-field{flex-direction:column;gap:3px;display:flex}.detail-label{color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.06em;font-size:10px;font-weight:600}.detail-value-row{align-items:center;gap:var(--space-2);display:flex}.detail-value{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text)}.detail-value.empty{font-family:var(--font-sans);color:var(--color-text-muted)}.detail-link{font-size:var(--text-xs);color:var(--color-info);text-decoration:none}.detail-link:hover{text-decoration:underline}.copy-btn{border:1px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer;color:var(--color-text-muted);background:0 0;flex-shrink:0;padding:1px 5px;font-size:11px;line-height:1.4;transition:color .15s,border-color .15s}.copy-btn:hover{color:var(--color-text);border-color:#aaa}.copy-btn.copied{color:var(--color-success);border-color:var(--color-success)}.spinner-inline{width:11px;height:11px;margin-left:var(--space-2);vertical-align:middle;border-width:1.5px;display:inline-block}
