 :root{color-scheme:dark;--bg:#07111f;--panel:#0d1b2d;--text:#f4f7fb;--muted:#91a3ba;--border:rgba(255,255,255,.09);--accent:#42d3ff;--success:#46d98b;--shadow:0 20px 50px rgba(0,0,0,.28)}:root.light{color-scheme:light;--bg:#eef3f8;--panel:#fff;--text:#132033;--muted:#68788e;--border:rgba(19,32,51,.1);--shadow:0 18px 45px rgba(33,50,75,.1)}*{box-sizing:border-box}html,body{margin:0;min-height:100%}body{background:radial-gradient(circle at 80% 0%,rgba(66,211,255,.1),transparent 30%),var(--bg);color:var(--text);font-family:Inter,system-ui,sans-serif}.app-shell{min-height:100vh;display:grid;grid-template-columns:260px 1fr}.sidebar{position:sticky;top:0;height:100vh;padding:24px 18px;border-right:1px solid var(--border);background:rgba(7,17,31,.88)}:root.light .sidebar{background:rgba(255,255,255,.9)}.brand{display:flex;align-items:center;gap:12px}.brand-mark{width:44px;height:44px;display:grid;place-items:center;border-radius:14px;font-weight:900;color:#06111e;background:linear-gradient(135deg,var(--accent),#a3f4ff)}.brand strong,.brand span{display:block}.brand span{color:var(--muted);font-size:.82rem}.nav{display:grid;gap:6px;margin-top:32px}.nav a,.nav span{padding:12px 14px;border-radius:12px;color:var(--muted);text-decoration:none}.nav .active{color:var(--text);background:rgba(66,211,255,.14)}.nav span{opacity:.65}.topbar{min-height:88px;padding:18px 28px;display:flex;align-items:center;gap:18px;border-bottom:1px solid var(--border)}.topbar h1{margin:0;font-size:1.25rem}.topbar p{margin:4px 0 0;color:var(--muted)}.top-actions{margin-left:auto;display:flex;align-items:center;gap:10px}.icon-button,.logout-button{border:1px solid var(--border);background:var(--panel);color:var(--text);border-radius:12px;padding:10px 12px;cursor:pointer}#menuToggle{display:none}.user-pill{padding:9px 12px;border-radius:999px;background:var(--panel);border:1px solid var(--border);color:var(--muted)}.content{padding:28px;max-width:1500px;margin:auto}.hero{display:flex;justify-content:space-between;gap:24px;align-items:center;padding:28px;border-radius:24px;border:1px solid var(--border);background:linear-gradient(135deg,rgba(66,211,255,.12),rgba(122,108,255,.08)),var(--panel);box-shadow:var(--shadow)}.hero h2{margin:8px 0;font-size:clamp(1.7rem,3vw,2.5rem)}.hero p{margin:0;color:var(--muted)}.eyebrow{color:var(--accent);font-size:.78rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase}.status-online,.ok{color:var(--success)}.cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-top:20px}.card,.panel{border:1px solid var(--border);background:var(--panel);border-radius:20px;box-shadow:var(--shadow)}.card,.panel{padding:22px}.card span,.card small{color:var(--muted)}.card strong{display:block;font-size:1.8rem;margin:10px 0 6px}.grid-two{display:grid;grid-template-columns:1.2fr .8fr;gap:18px;margin-top:18px}.status-list,.module-list{display:grid;margin-top:18px}.status-list div,.module-list div{display:flex;justify-content:space-between;gap:20px;padding:14px 0;border-bottom:1px solid var(--border)}.badge{border-radius:999px;padding:5px 9px;font-size:.75rem}.badge.ready{color:var(--success);background:rgba(70,217,139,.12)}.badge.next{color:var(--muted);background:rgba(255,255,255,.04)}.guest-body{min-height:100vh;display:grid;place-items:center;padding:24px}.guest-shell{width:min(440px,100%)}.login-card{padding:32px;border-radius:24px;background:var(--panel);border:1px solid var(--border);box-shadow:var(--shadow)}.brand-login{margin-bottom:28px}.login-card>p{color:var(--muted)}.login-form{display:grid;gap:16px}.login-form label{display:grid;gap:7px;color:var(--muted)}.login-form input{width:100%;border:1px solid var(--border);background:rgba(255,255,255,.04);color:var(--text);border-radius:12px;padding:13px 14px}.login-form button{border:0;border-radius:12px;padding:14px;font-weight:800;cursor:pointer;color:#06111e;background:linear-gradient(135deg,var(--accent),#a4f0ff)}.alert{padding:12px 14px;margin-bottom:18px;border-radius:12px;color:#ffd6da;background:rgba(255,107,122,.12)}@media(max-width:1050px){.cards{grid-template-columns:repeat(2,1fr)}.grid-two{grid-template-columns:1fr}}@media(max-width:760px){.app-shell{display:block}.sidebar{position:fixed;z-index:30;width:270px;transform:translateX(-105%);transition:.2s}.sidebar.open{transform:translateX(0)}#menuToggle{display:inline-flex}.topbar{padding:14px 16px}.topbar p,.user-pill{display:none}.content{padding:16px}.hero{align-items:flex-start;flex-direction:column}.cards{grid-template-columns:1fr}}


/* Project Manager 3.0.2 */
.primary-button, .secondary-button, .danger-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    border-radius: 12px;
    padding: 11px 15px;
    font-weight: 800;
    text-decoration: none;
    cursor: pointer;
}
.primary-button { border: 0; color: #06111e; background: linear-gradient(135deg, var(--accent), #a4f0ff); }
.secondary-button { color: var(--text); border: 1px solid var(--border); background: var(--panel-2); }
.danger-button { color: #ffd6da; border: 1px solid rgba(255,107,122,.30); background: rgba(255,107,122,.12); }
.page-heading { display: flex; justify-content: space-between; align-items: center; gap: 20px; margin-bottom: 22px; }
.page-heading h2 { margin: 7px 0; font-size: clamp(1.7rem,3vw,2.4rem); }
.page-heading p, .muted { color: var(--muted); }
.project-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 18px; }
.project-card { padding: 22px; border-radius: 20px; border: 1px solid var(--border); background: var(--panel); box-shadow: var(--shadow); }
.project-card-top { display: flex; justify-content: space-between; gap: 12px; }
.project-card h3 { margin: 18px 0 8px; font-size: 1.25rem; }
.project-card p { color: var(--muted); min-height: 48px; }
.project-card dl { margin: 18px 0; }
.project-card dl div { display:flex; justify-content:space-between; gap:15px; padding:9px 0; border-bottom:1px solid var(--border); }
.project-card dt { color:var(--muted); }
.project-card dd { margin:0; text-align:right; }
.type-badge, .status-badge { display:inline-flex; border-radius:999px; padding:6px 9px; font-size:.72rem; font-weight:800; }
.type-badge { color:var(--accent); background:rgba(66,211,255,.11); }
.status-badge { color:#ffd58a; background:rgba(255,190,80,.12); }
.full-button { width:100%; }
.empty-state, .form-panel { padding:36px; text-align:center; border-radius:22px; border:1px solid var(--border); background:var(--panel); box-shadow:var(--shadow); }
.empty-icon { width:62px; height:62px; display:grid; place-items:center; margin:0 auto 16px; border-radius:18px; background:var(--panel-2); color:var(--accent); font-size:2rem; }
.project-form { display:grid; gap:18px; text-align:left; }
.form-grid { display:grid; grid-template-columns:1fr 1fr; gap:18px; }
.project-form label { display:grid; gap:8px; color:var(--muted); font-weight:600; }
.project-form input, .project-form select, .project-form textarea {
    width:100%; padding:13px 14px; border-radius:12px; border:1px solid var(--border);
    background:var(--panel-2); color:var(--text); outline:none;
}
.project-form input:focus, .project-form select:focus, .project-form textarea:focus { border-color:var(--accent); }
.button-row { display:flex; flex-wrap:wrap; gap:10px; margin-top:18px; }
.success-alert { padding:13px 15px; margin-bottom:18px; border-radius:12px; color:#baf8d5; background:rgba(70,217,139,.12); border:1px solid rgba(70,217,139,.24); }
.code-value { font-family:ui-monospace,SFMono-Regular,Menlo,monospace; font-size:.82rem; overflow-wrap:anywhere; }

@media (max-width: 1050px) { .project-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width: 760px) {
    .page-heading { align-items:flex-start; flex-direction:column; }
    .project-grid, .form-grid { grid-template-columns:1fr; }
    .form-panel { padding:22px; }
}


/* App Builder 3.1.0 */
.builder-note {
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding: 16px;
    border: 1px solid rgba(66,211,255,.22);
    border-radius: 14px;
    background: rgba(66,211,255,.08);
}
.builder-note span { color: var(--muted); }
.builder-note code, .generated-list code {
    font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
}
.status-ready { color: #baf8d5; background: rgba(70,217,139,.12); }
.status-build_error { color: #ffd6da; background: rgba(255,107,122,.12); }
.generated-list { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 18px; }
.generated-list code {
    padding: 8px 10px;
    border: 1px solid var(--border);
    border-radius: 9px;
    color: var(--accent);
    background: var(--panel-2);
}
.panel-separator { border: 0; border-top: 1px solid var(--border); margin: 24px 0; }


/* File Manager 3.2.0 */
.file-toolbar { margin-bottom: 18px; }
.create-inline { display: grid; grid-template-columns: minmax(180px, 1fr) 180px auto; gap: 12px; }
.create-inline input, .create-inline select {
    min-height: 46px; border: 1px solid var(--border); border-radius: 12px;
    background: var(--panel-2); color: var(--text); padding: 10px 12px;
}
.file-panel { overflow: hidden; padding: 0; }
.file-table { width: 100%; }
.file-row {
    display: grid; grid-template-columns: minmax(220px, 1fr) 120px 170px 190px;
    gap: 14px; align-items: center; padding: 14px 18px; border-bottom: 1px solid var(--border);
}
.file-row:last-child { border-bottom: 0; }
.file-header { color: var(--muted); font-size: .82rem; text-transform: uppercase; letter-spacing: .08em; font-weight: 800; }
.file-name { display: flex; align-items: center; gap: 10px; min-width: 0; }
.file-name a { color: var(--text); font-weight: 750; text-decoration: none; overflow: hidden; text-overflow: ellipsis; }
.file-name a:hover { color: var(--accent); }
.file-icon { font-size: 1.2rem; }
.file-actions { display: flex; align-items: center; gap: 8px; }
.file-actions form { margin: 0; }
.small-button, .small-danger {
    display: inline-flex; align-items: center; justify-content: center; min-height: 34px;
    padding: 7px 10px; border-radius: 9px; text-decoration: none; font-weight: 800; font-size: .82rem;
}
.small-button { color: var(--text); background: var(--panel-2); border: 1px solid var(--border); }
.small-danger { color: #ffd6da; background: rgba(255,107,122,.10); border: 1px solid rgba(255,107,122,.25); cursor: pointer; }
.editor-panel { padding: 0; overflow: hidden; }
.editor-panel form { display: flex; flex-direction: column; }
.editor-meta { display: flex; justify-content: space-between; gap: 16px; padding: 12px 16px; color: var(--muted); border-bottom: 1px solid var(--border); }
.code-editor {
    width: 100%; min-height: 62vh; resize: vertical; border: 0; outline: 0; border-radius: 0;
    background: #07111f; color: #d8e6f5; padding: 20px; font: 14px/1.65 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    tab-size: 4; white-space: pre;
}
.editor-panel .button-row { padding: 16px; border-top: 1px solid var(--border); }
.empty-state { padding: 42px 20px; text-align: center; color: var(--muted); }
@media (max-width: 900px) {
    .create-inline { grid-template-columns: 1fr; }
    .file-header { display: none; }
    .file-row { grid-template-columns: 1fr; gap: 8px; }
    .file-actions { flex-wrap: wrap; }
}


/* Code Editor e Project Explorer 3.3.0 */
.editor-heading { display:flex; align-items:center; justify-content:space-between; gap:18px; margin-bottom:16px; }
.editor-heading h2 { margin:6px 0 0; }
.studio-editor {
    min-height:72vh; display:grid; grid-template-columns:280px minmax(0,1fr);
    overflow:hidden; border:1px solid var(--border); border-radius:18px; background:#07111f; box-shadow:var(--shadow);
}
.project-explorer { min-width:0; background:#0a1626; border-right:1px solid rgba(255,255,255,.08); color:#cbd8e7; overflow:auto; }
.explorer-title { min-height:48px; display:flex; align-items:center; justify-content:space-between; padding:8px 10px 8px 16px; border-bottom:1px solid rgba(255,255,255,.08); font-size:.74rem; letter-spacing:.08em; }
.explorer-project { padding:11px 15px; font-size:.78rem; font-weight:850; text-transform:uppercase; background:rgba(255,255,255,.035); }
.explorer-tree { padding:7px 0 20px; font-family:Inter,system-ui,sans-serif; font-size:.86rem; }
.explorer-list { list-style:none; padding-left:15px; margin:0; }
.explorer-tree > .explorer-list { padding-left:5px; }
.explorer-folder summary { cursor:pointer; padding:5px 7px; border-radius:6px; user-select:none; white-space:nowrap; }
.explorer-folder summary:hover { background:rgba(255,255,255,.055); }
.explorer-file { display:flex; align-items:center; gap:7px; padding:5px 8px; color:#cbd8e7; text-decoration:none; border-left:2px solid transparent; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.explorer-file:hover { background:rgba(255,255,255,.055); }
.explorer-file.active { color:#fff; background:rgba(66,211,255,.12); border-left-color:var(--accent); }
.explorer-collapsed { grid-template-columns:0 minmax(0,1fr); }
.explorer-collapsed .project-explorer { visibility:hidden; }
.code-workspace { min-width:0; display:flex; flex-direction:column; background:#07111f; color:#d8e6f5; }
.editor-tabs { min-height:42px; display:flex; overflow-x:auto; background:#091423; border-bottom:1px solid rgba(255,255,255,.08); }
.editor-tab { display:flex; align-items:center; gap:10px; min-width:130px; max-width:220px; padding:0 8px 0 13px; color:#8fa4bc; text-decoration:none; border-right:1px solid rgba(255,255,255,.07); }
.editor-tab span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.editor-tab button { margin-left:auto; border:0; background:transparent; color:inherit; font-size:1.1rem; cursor:pointer; }
.editor-tab.active { color:#fff; background:#07111f; border-top:2px solid var(--accent); }
.editor-toolbar { min-height:54px; display:flex; align-items:center; justify-content:space-between; gap:14px; padding:8px 12px; border-bottom:1px solid rgba(255,255,255,.08); }
.editor-file-info,.editor-controls { display:flex; align-items:center; gap:9px; flex-wrap:wrap; }
.language-badge { padding:4px 7px; border-radius:6px; color:#07111f; background:var(--accent); font-size:.68rem; font-weight:900; }
.dirty-indicator { color:#79dca9; font-size:.76rem; }
.dirty-indicator.is-dirty { color:#ffd07a; }
.tool-button { min-height:34px; padding:7px 10px; color:#c9d6e5; background:#101f32; border:1px solid rgba(255,255,255,.1); border-radius:8px; cursor:pointer; }
.tool-button:disabled { opacity:.4; cursor:not-allowed; }
.find-panel { display:grid; grid-template-columns:minmax(120px,1fr) minmax(120px,1fr) repeat(4,auto); gap:7px; padding:8px 12px; background:#0d1b2d; border-bottom:1px solid rgba(255,255,255,.08); }
.find-panel input { min-width:0; padding:8px 10px; color:#fff; background:#07111f; border:1px solid rgba(255,255,255,.12); border-radius:8px; }
.editor-status { order:5; min-height:28px; display:flex; justify-content:space-between; align-items:center; gap:12px; padding:4px 12px; color:#a9bdd3; background:#0b5f79; font-size:.73rem; }
.code-form { min-height:0; flex:1; display:flex; }
.code-surface { position:relative; min-height:62vh; width:100%; display:grid; grid-template-columns:auto minmax(0,1fr); overflow:hidden; }
.line-numbers {
    width:max-content; min-width:54px; height:62vh; margin:0; overflow:hidden; padding:18px 13px 18px 8px;
    color:#52677f; background:#07111f; border-right:1px solid rgba(255,255,255,.06);
    text-align:right; user-select:none; font:14px/1.65 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
}
.advanced-code-editor {
    width:100%; height:62vh; min-height:62vh; resize:none; overflow:auto; margin:0; padding:18px;
    color:#d8e6f5; background:#07111f; border:0; outline:0; border-radius:0;
    font:14px/1.65 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace; tab-size:4; white-space:pre;
    caret-color:#fff;
}
.editor-message { padding:10px 13px; font-size:.85rem; border-top:1px solid rgba(255,255,255,.08); }
.editor-message.success { color:#aef0ca; background:rgba(70,217,139,.1); }
.editor-message.error { color:#ffd2d7; background:rgba(255,107,122,.12); }
.editor-welcome { min-height:65vh; display:grid; place-content:center; justify-items:center; padding:30px; text-align:center; color:#8fa4bc; }
.editor-welcome h3 { margin:15px 0 5px; color:#e9f1fa; }
.welcome-icon { width:82px; height:82px; display:grid; place-items:center; border:1px solid rgba(66,211,255,.25); border-radius:24px; color:var(--accent); font:900 1.5rem ui-monospace,monospace; background:rgba(66,211,255,.07); }
.shortcut-grid { display:flex; gap:18px; margin-top:22px; }
kbd { padding:3px 6px; border:1px solid rgba(255,255,255,.16); border-radius:5px; background:#101f32; box-shadow:0 2px 0 rgba(255,255,255,.08); }
@media (max-width: 980px) {
    .studio-editor { grid-template-columns:220px minmax(0,1fr); }
    .find-panel { grid-template-columns:1fr 1fr; }
}
@media (max-width: 720px) {
    .editor-heading { align-items:flex-start; flex-direction:column; }
    .studio-editor { display:block; }
    .project-explorer { max-height:260px; border-right:0; border-bottom:1px solid rgba(255,255,255,.08); }
    .editor-toolbar { align-items:flex-start; flex-direction:column; }
    .find-panel { grid-template-columns:1fr; }
    .code-surface,.line-numbers,.advanced-code-editor { height:58vh; min-height:58vh; }
}


/* Web Terminal 3.4.0 */
.terminal-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:20px; margin-bottom:16px; }
.terminal-heading h2 { margin:6px 0; }
.terminal-heading p { max-width:760px; margin:0; color:var(--muted); }
.terminal-shell { overflow:hidden; border:1px solid var(--border); border-radius:18px; background:#050b12; color:#d8e6f5; box-shadow:var(--shadow); }
.terminal-topbar { min-height:50px; display:flex; justify-content:space-between; gap:10px; background:#0a1420; border-bottom:1px solid rgba(255,255,255,.08); }
.terminal-tabs { min-width:0; display:flex; overflow-x:auto; }
.terminal-tab { min-width:145px; max-width:220px; display:flex; align-items:center; gap:10px; padding:0 10px 0 14px; color:#8fa4bc; background:transparent; border:0; border-right:1px solid rgba(255,255,255,.07); cursor:pointer; }
.terminal-tab span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.terminal-tab b { margin-left:auto; font-size:1.1rem; }
.terminal-tab.active { color:#fff; background:#050b12; border-top:2px solid #42d3ff; }
.terminal-actions { display:flex; align-items:center; gap:7px; padding:7px; }
.terminal-security { display:flex; align-items:center; gap:12px; padding:8px 14px; color:#9edbb9; background:rgba(67,210,139,.08); border-bottom:1px solid rgba(67,210,139,.15); font-size:.78rem; }
.terminal-security span { color:#8fa4bc; }
.terminal-output { min-height:56vh; max-height:66vh; overflow:auto; padding:18px; font:14px/1.55 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace; white-space:pre-wrap; word-break:break-word; }
.terminal-line { min-height:1.55em; }
.terminal-line.command { margin-top:8px; color:#75dcff; }
.terminal-line.output { color:#d7e3ef; }
.terminal-line.error { color:#ffabb5; }
.terminal-line.system { color:#8fa4bc; }
.terminal-command-line { display:flex; align-items:center; gap:9px; padding:10px 12px; background:#08121d; border-top:1px solid rgba(255,255,255,.08); }
.terminal-prompt { flex:0 0 auto; color:#72e6ad; font:700 14px ui-monospace,SFMono-Regular,Menlo,Consolas,monospace; }
.terminal-command-line input[type="text"] { min-width:0; flex:1; padding:10px 2px; color:#fff; background:transparent; border:0; outline:0; font:14px ui-monospace,SFMono-Regular,Menlo,Consolas,monospace; }
.terminal-footer { display:flex; justify-content:space-between; gap:15px; padding:6px 12px; color:#bcd2e5; background:#0b6079; font-size:.73rem; }
.terminal-dialog { width:min(720px,90vw); max-height:78vh; overflow:auto; padding:0; color:var(--text); background:var(--panel); border:1px solid var(--border); border-radius:16px; }
.terminal-dialog::backdrop { background:rgba(0,0,0,.68); }
.dialog-heading { position:sticky; top:0; display:flex; justify-content:space-between; align-items:center; padding:13px 16px; background:var(--panel); border-bottom:1px solid var(--border); }
.dialog-heading h3 { margin:0; }
.terminal-dialog [data-history-list],.terminal-dialog [data-audit-list] { display:grid; gap:8px; padding:14px; }
.history-command { width:100%; padding:10px 12px; color:var(--text); background:var(--panel-2); border:1px solid var(--border); border-radius:8px; text-align:left; font-family:ui-monospace,monospace; cursor:pointer; }
.audit-entry { display:flex; flex-direction:column; gap:5px; padding:10px 12px; background:var(--panel-2); border:1px solid var(--border); border-radius:9px; }
.audit-entry strong { font-family:ui-monospace,monospace; }
.audit-entry span { color:var(--muted); font-size:.78rem; }
@media (max-width:760px) {
    .terminal-heading,.terminal-topbar { flex-direction:column; }
    .terminal-actions { overflow-x:auto; }
    .terminal-security { align-items:flex-start; flex-direction:column; }
    .terminal-command-line { align-items:stretch; flex-wrap:wrap; }
    .terminal-command-line input[type="text"] { flex-basis:60%; }
}


/* Database Manager 3.5.0 */
.database-heading{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;margin-bottom:16px}.database-heading h2{margin:6px 0}.database-heading p{margin:0;color:var(--muted)}
.database-status,.database-error{display:flex;align-items:center;gap:14px;padding:13px 16px;margin-bottom:14px;border:1px solid var(--border);border-radius:14px;background:var(--panel)}.database-status span{color:var(--muted);flex:1}.database-error{align-items:flex-start;flex-direction:column;border-color:#ef7c8b;background:rgba(239,124,139,.08)}.database-error small{color:var(--muted)}
.database-layout{display:grid;grid-template-columns:250px minmax(0,1fr);gap:14px;min-height:650px}.database-sidebar,.sql-panel,.database-table-panel{border:1px solid var(--border);border-radius:16px;background:var(--panel);overflow:hidden}.database-sidebar-title{display:flex;justify-content:space-between;padding:14px;border-bottom:1px solid var(--border)}.database-sidebar nav{max-height:720px;overflow:auto}.database-table-link{display:flex;flex-direction:column;gap:3px;padding:10px 14px;border-bottom:1px solid var(--border);color:var(--text);text-decoration:none}.database-table-link small{color:var(--muted)}.database-table-link:hover,.database-table-link.active{background:var(--panel-2)}.database-table-link.active{box-shadow:inset 3px 0 #42d3ff}
.database-main{min-width:0;display:grid;gap:14px;align-content:start}.panel-heading,.table-toolbar{display:flex;justify-content:space-between;align-items:center;gap:15px;padding:13px 15px;border-bottom:1px solid var(--border)}.panel-heading div{display:flex;flex-direction:column}.panel-heading small,.table-toolbar span{color:var(--muted)}.sql-panel textarea{width:100%;min-height:130px;padding:15px;resize:vertical;border:0;border-bottom:1px solid var(--border);outline:0;background:#08121d;color:#dceaff;font:14px/1.55 ui-monospace,monospace}.sql-panel>.button-row{padding:10px 14px}.query-result{border-top:1px solid var(--border)}.query-meta,.query-empty,.query-error{padding:10px 14px;margin:0}.query-meta{color:var(--muted)}.query-error{color:#ffabb5;background:rgba(239,80,100,.08)}
.table-toolbar h3{margin:0}.table-toolbar>div{display:flex;align-items:baseline;gap:10px}.database-search{display:flex;gap:7px;margin-left:auto}.database-search input{min-width:180px}.database-tabs{display:flex;border-bottom:1px solid var(--border)}.database-tabs button{padding:11px 16px;border:0;border-right:1px solid var(--border);background:transparent;color:var(--muted);cursor:pointer}.database-tabs button.active{color:var(--text);background:var(--panel-2)}.database-pane{display:none}.database-pane.active{display:block}.table-scroll{overflow:auto;max-height:520px}.database-table-panel table,.query-result table{width:max-content;min-width:100%;border-collapse:collapse;font-size:.83rem}.database-table-panel th,.database-table-panel td,.query-result th,.query-result td{padding:9px 11px;border-right:1px solid var(--border);border-bottom:1px solid var(--border);text-align:left;vertical-align:top;white-space:nowrap;max-width:360px;overflow:hidden;text-overflow:ellipsis}.database-table-panel th,.query-result th{position:sticky;top:0;z-index:1;background:var(--panel-2)}.database-table-panel em,.query-result em{color:var(--muted)}.pagination{display:flex;justify-content:center;align-items:center;gap:18px;padding:12px}.pagination a{color:var(--accent)}
@media(max-width:900px){.database-heading{flex-direction:column}.database-layout{grid-template-columns:1fr}.database-sidebar nav{max-height:260px}.table-toolbar{align-items:stretch;flex-direction:column}.database-search{width:100%;margin:0}.database-search input{flex:1}}

.gitdeploy-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.git-output{min-height:180px;max-height:420px;overflow:auto;padding:14px;border-radius:12px;background:#071019;color:#d5e7f5;white-space:pre-wrap;font:13px/1.5 ui-monospace,monospace}.inline-form{display:flex;gap:10px;margin:14px 0}.inline-form input{flex:1}.stack-form{display:grid;gap:12px;margin:12px 0}.stack-form label{display:grid;gap:6px}.environment-list,.deploy-log-list{display:grid;gap:8px}.environment-list article,.deploy-log-list article{display:flex;justify-content:space-between;gap:10px;padding:10px;border:1px solid var(--border);border-radius:9px}.deploy-log-list article{flex-direction:column}.deploy-log-list span{color:var(--muted);font-size:.8rem}@media(max-width:900px){.gitdeploy-grid{grid-template-columns:1fr}.inline-form{flex-direction:column}}

/* Git Base 3.6.2 */
.git-wizard{display:grid;gap:18px}.git-summary-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}.status-badge{display:inline-flex;align-items:center;padding:8px 12px;border-radius:999px;font-weight:700}.status-ready{background:#dff7e8;color:#176437}.status-warning{background:#fff2cc;color:#7a5700}.guided-message{padding:16px;border:1px solid var(--border,#d8dee8);border-radius:12px;margin:14px 0;background:rgba(127,127,127,.06)}.guided-message p{margin:6px 0 0}.guided-message.success{background:#edf9f1}.large-action{min-height:46px}.git-facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:16px 0}.git-facts article{padding:14px;border:1px solid var(--border,#d8dee8);border-radius:12px}.git-facts span{display:block;font-size:.85rem;opacity:.72;margin-bottom:5px}.git-change-list,.git-history-list{display:grid;gap:8px;margin-top:12px}.git-change-list article,.git-history-list article{display:flex;align-items:center;gap:12px;padding:11px 12px;border:1px solid var(--border,#d8dee8);border-radius:10px}.git-change-list code{min-width:34px;font-weight:800}.git-history-list article{align-items:flex-start;flex-direction:column}.git-history-list span{font-size:.84rem;opacity:.7}.field-help{font-size:.88rem;opacity:.72;margin-top:-6px}.operation-message{margin-top:14px;padding:12px;border-radius:10px;background:#e9f6ee;color:#176437;font-weight:700}.operation-message.error{background:#fdeaea;color:#9b1c1c}@media(max-width:760px){.git-facts{grid-template-columns:1fr}.git-summary-head{flex-direction:column}}


.git-diagnostics { margin-top: 1rem; }
.git-diagnostics summary { cursor: pointer; font-weight: 700; }
.git-diagnostics .status-list { margin-top: .75rem; }

/* Git & Deploy 3.7.0 */
.git370-layout{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.git370-summary,.git370-history-panel{grid-column:1/-1}.git370-panel-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.git370-panel-heading h3{margin-top:5px}.git370-facts{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin-top:18px}.git370-facts article{min-width:0;padding:14px;border:1px solid var(--border);border-radius:12px;background:var(--panel-2)}.git370-facts span{display:block;margin-bottom:6px;color:var(--muted);font-size:.82rem}.git370-facts strong{display:block;overflow:hidden;text-overflow:ellipsis}.git370-counter{display:inline-grid;place-items:center;min-width:38px;height:38px;padding:0 10px;border-radius:999px;background:var(--panel-2);border:1px solid var(--border)}.git370-diff{min-height:120px;max-height:300px}.git370-history-panel .git-history-list{grid-template-columns:repeat(2,minmax(0,1fr))}.git370-history-panel code{font-weight:700}.primary-button:disabled,.secondary-button:disabled,button:disabled{opacity:.45;cursor:not-allowed;filter:grayscale(.35)}@media(max-width:1000px){.git370-facts{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:760px){.git370-layout{grid-template-columns:1fr}.git370-summary,.git370-history-panel{grid-column:auto}.git370-facts,.git370-history-panel .git-history-list{grid-template-columns:1fr}.git370-panel-heading{flex-direction:column}}

/* ===== RadioSaiuz App Builder ===== */

.app-builder-page {
    width: 100%;
}

.app-builder-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 24px;
    margin-bottom: 28px;
}

.app-builder-header h1 {
    margin: 5px 0 8px;
    font-size: clamp(2rem, 4vw, 3rem);
}

.app-builder-header p {
    max-width: 720px;
    margin: 0;
    color: var(--muted);
    line-height: 1.6;
}

.app-builder-kicker {
    color: var(--accent);
    font-size: .76rem;
    font-weight: 800;
    letter-spacing: .14em;
    text-transform: uppercase;
}

.app-builder-header-badge {
    flex: 0 0 auto;
    padding: 10px 14px;
    border: 1px solid var(--border);
    border-radius: 999px;
    background: var(--panel);
    color: var(--muted);
    font-size: .88rem;
    font-weight: 700;
}

.app-builder-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 410px), 1fr));
    gap: 22px;
}

.app-builder-card {
    padding: 24px;
    border: 1px solid var(--border);
    border-radius: 22px;
    background: var(--panel);
    box-shadow: var(--shadow);
}

.app-builder-card-top {
    display: flex;
    gap: 16px;
    align-items: center;
}

.app-builder-icon {
    display: grid;
    width: 58px;
    height: 58px;
    flex: 0 0 58px;
    place-items: center;
    border-radius: 17px;
    background: linear-gradient(135deg, var(--accent), #8a7dff);
    color: #07111f;
    font-size: .9rem;
    font-weight: 900;
    letter-spacing: .08em;
}

.app-builder-card-title {
    min-width: 0;
}

.app-builder-card-title h2 {
    margin: 0 0 8px;
    font-size: 1.35rem;
}

.app-builder-status {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    color: var(--muted);
    font-size: .84rem;
    font-weight: 700;
}

.app-builder-status-dot {
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: #f2b84b;
    box-shadow: 0 0 0 4px rgba(242, 184, 75, .14);
}

.app-builder-status.is-ready .app-builder-status-dot {
    background: var(--success);
    box-shadow: 0 0 0 4px rgba(70, 217, 139, .14);
}

.app-builder-data {
    display: grid;
    gap: 0;
    margin: 22px 0 0;
}

.app-builder-data > div {
    display: grid;
    grid-template-columns: minmax(110px, .75fr) minmax(0, 1.5fr);
    gap: 16px;
    padding: 12px 0;
    border-bottom: 1px solid var(--border);
}

.app-builder-data dt {
    color: var(--muted);
    font-size: .88rem;
}

.app-builder-data dd {
    min-width: 0;
    margin: 0;
    text-align: right;
    font-weight: 700;
    overflow-wrap: anywhere;
}

.app-builder-data dd small {
    display: block;
    margin-top: 3px;
    color: var(--muted);
    font-weight: 500;
}

.app-builder-data code {
    font-size: .82rem;
}

.app-builder-counters {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
    margin-top: 18px;
}

.app-builder-counters > div {
    padding: 14px;
    border: 1px solid var(--border);
    border-radius: 15px;
    text-align: center;
}

.app-builder-counters strong {
    display: block;
    font-size: 1.5rem;
}

.app-builder-counters span {
    color: var(--muted);
    font-size: .76rem;
    font-weight: 800;
    letter-spacing: .1em;
}

.app-builder-checks {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 18px;
}

.app-builder-checks span {
    padding: 7px 10px;
    border: 1px solid var(--border);
    border-radius: 999px;
    color: var(--muted);
    font-size: .76rem;
    font-weight: 700;
}

.app-builder-checks .ok::before {
    content: "✓ ";
    color: var(--success);
}

.app-builder-checks .ko::before {
    content: "× ";
    color: #ff7185;
}

.app-builder-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 22px;
}

.app-builder-button {
    min-height: 42px;
    padding: 0 16px;
    border: 1px solid var(--border);
    border-radius: 12px;
    background: transparent;
    color: var(--text);
    font: inherit;
    font-weight: 800;
}

.app-builder-button.primary {
    border-color: transparent;
    background: var(--accent);
    color: #07111f;
}

.app-builder-button:disabled {
    cursor: not-allowed;
    opacity: .48;
}

.app-builder-note {
    margin: 13px 0 0;
    color: var(--muted);
    font-size: .78rem;
    line-height: 1.5;
}

.app-builder-artifacts {
    margin-top: 20px;
    border-top: 1px solid var(--border);
    padding-top: 16px;
}

.app-builder-artifacts summary {
    cursor: pointer;
    font-weight: 800;
}

.app-builder-artifact-list {
    display: grid;
    gap: 9px;
    margin-top: 14px;
}

.app-builder-artifact {
    display: flex;
    align-items: center;
    gap: 11px;
    padding: 11px;
    border: 1px solid var(--border);
    border-radius: 12px;
}

.app-builder-artifact-type {
    display: grid;
    min-width: 43px;
    height: 28px;
    place-items: center;
    border-radius: 7px;
    background: rgba(66, 211, 255, .12);
    color: var(--accent);
    font-size: .7rem;
    font-weight: 900;
}

.app-builder-artifact strong,
.app-builder-artifact small {
    display: block;
    overflow-wrap: anywhere;
}

.app-builder-artifact small {
    margin-top: 3px;
    color: var(--muted);
    font-size: .76rem;
}

.app-builder-alert,
.app-builder-empty {
    margin-bottom: 22px;
    padding: 18px;
    border: 1px solid var(--border);
    border-radius: 16px;
    background: var(--panel);
}

.app-builder-alert-error {
    border-color: rgba(255, 113, 133, .45);
    color: #ff9aaa;
}

@media (max-width: 700px) {
    .app-builder-header {
        display: block;
    }

    .app-builder-header-badge {
        display: inline-flex;
        margin-top: 16px;
    }

    .app-builder-data > div {
        display: block;
    }

    .app-builder-data dd {
        margin-top: 5px;
        text-align: left;
    }
}

/* ===== Sprint 2.5A - Dashboard App Builder dinamica ===== */

.app-builder-header-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: 10px;
}

.app-builder-summary {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 16px;
    margin-bottom: 30px;
}

.app-builder-summary article {
    padding: 20px;
    border: 1px solid var(--border);
    border-radius: 18px;
    background: var(--panel);
    box-shadow: var(--shadow);
}

.app-builder-summary span,
.app-builder-summary small {
    display: block;
    color: var(--muted);
}

.app-builder-summary span {
    font-size: .78rem;
    font-weight: 800;
    letter-spacing: .08em;
    text-transform: uppercase;
}

.app-builder-summary strong {
    display: block;
    margin: 8px 0 4px;
    font-size: 2rem;
}

.app-builder-summary small {
    font-size: .8rem;
}

.app-builder-section {
    margin-top: 32px;
}

.app-builder-section-heading {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 16px;
}

.app-builder-section-heading h2 {
    margin: 4px 0 0;
}

.app-builder-template-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
    gap: 16px;
}

.app-builder-template-card {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 18px;
    border: 1px solid var(--border);
    border-radius: 18px;
    background: var(--panel);
}

.app-builder-template-card h3 {
    margin: 0 0 5px;
}

.app-builder-template-card code,
.app-builder-template-card span {
    display: block;
}

.app-builder-template-card span {
    margin-top: 8px;
    color: var(--muted);
    font-size: .8rem;
    font-weight: 700;
}

.app-builder-template-card span.ok::before {
    content: "✓ ";
    color: var(--success);
}

.app-builder-template-card span.ko::before {
    content: "× ";
    color: #ff7185;
}

.app-builder-queue-badges {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.app-builder-queue-badges span {
    padding: 7px 10px;
    border: 1px solid var(--border);
    border-radius: 999px;
    color: var(--muted);
    font-size: .78rem;
    font-weight: 700;
}

@media (max-width: 1000px) {
    .app-builder-summary {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 700px) {
    .app-builder-header-actions,
    .app-builder-section-heading {
        align-items: flex-start;
        flex-direction: column;
    }

    .app-builder-summary {
        grid-template-columns: 1fr;
    }
}

/* ===== Sprint 2.5B.1 - Wizard Nuova App ===== */

a.app-builder-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    text-decoration: none;
}

.app-builder-alert-success {
    border-color: rgba(70, 217, 139, .45);
    color: var(--success);
}

.app-builder-wizard {
    display: grid;
    gap: 20px;
    max-width: 980px;
}

.app-builder-form-panel {
    padding: 24px;
    border: 1px solid var(--border);
    border-radius: 20px;
    background: var(--panel);
    box-shadow: var(--shadow);
}

.app-builder-form-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 18px;
}

.app-builder-form-grid label {
    display: grid;
    align-content: start;
    gap: 7px;
}

.app-builder-form-grid label > span {
    font-size: .88rem;
    font-weight: 800;
}

.app-builder-form-grid input,
.app-builder-form-grid select {
    width: 100%;
    min-height: 46px;
    padding: 0 13px;
    border: 1px solid var(--border);
    border-radius: 12px;
    background: var(--panel-2);
    color: var(--text);
    font: inherit;
}

.app-builder-form-grid input:focus,
.app-builder-form-grid select:focus {
    border-color: var(--accent);
    outline: 2px solid color-mix(in srgb, var(--accent) 25%, transparent);
}

.app-builder-form-grid small {
    color: var(--muted);
    line-height: 1.4;
}

.app-builder-form-grid .field-error {
    color: #ff8da0;
    font-weight: 700;
}

.app-builder-field-wide {
    grid-column: 1 / -1;
}

.app-builder-wizard-actions {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
}

@media (max-width: 700px) {
    .app-builder-form-grid {
        grid-template-columns: 1fr;
    }

    .app-builder-field-wide {
        grid-column: auto;
    }

    .app-builder-wizard-actions {
        align-items: stretch;
        flex-direction: column-reverse;
    }
}

/* Sprint 2.6A - Android Build Pipeline */
.app-builder-inline-form {
    display: inline-flex;
    margin: 0;
}
.app-builder-inline-form .app-builder-button {
    cursor: pointer;
}


/* Sprint 2.6A - Eliminazione applicazioni */
.app-builder-button.danger {
    border-color: rgba(255, 107, 122, .38);
    background: rgba(255, 107, 122, .12);
    color: #ffd6da;
    cursor: pointer;
}

.app-builder-button.danger:hover {
    border-color: rgba(255, 107, 122, .72);
    background: rgba(255, 107, 122, .20);
}


/* RC1-02A - Raggruppamento archivio release */
.app-builder-release-list {
    display: grid;
    gap: 14px;
    margin-top: 16px;
}

.app-builder-release {
    padding: 16px;
    border: 1px solid rgba(255, 255, 255, .10);
    border-radius: 14px;
    background: rgba(255, 255, 255, .035);
}

.app-builder-release-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
}

.app-builder-release-header > div {
    display: grid;
    gap: 5px;
}

.app-builder-release-header small {
    opacity: .72;
}

.app-builder-release-files {
    margin-top: 14px;
}

.app-builder-release-files > summary {
    cursor: pointer;
    font-weight: 700;
}

@media (max-width: 760px) {
    .app-builder-release-header {
        align-items: stretch;
        flex-direction: column;
    }

    .app-builder-release-header .app-builder-button {
        text-align: center;
    }
}

/* RC1-02B - Azioni gestione release */
.app-builder-release-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    flex-wrap: wrap;
    gap: 10px;
}

.app-builder-release-actions .app-builder-inline-form {
    margin: 0;
}

@media (max-width: 760px) {
    .app-builder-release-actions {
        align-items: stretch;
        flex-direction: column;
    }

    .app-builder-release-actions .app-builder-button {
        display: block;
        width: 100%;
        text-align: center;
    }
}

/* RC2.1 - Dashboard operativa App Builder */
.app-builder-summary-operational {
    grid-template-columns: repeat(4, minmax(0, 1fr));
}

.app-builder-summary-operational article {
    min-width: 0;
}

.app-builder-summary-operational strong {
    overflow-wrap: anywhere;
}

.app-builder-summary-operational .app-builder-last-build {
    font-size: clamp(1.05rem, 2vw, 1.45rem);
}

@media (max-width: 1100px) {
    .app-builder-summary-operational {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 620px) {
    .app-builder-summary-operational {
        grid-template-columns: 1fr;
    }
}

/* RC2.2 - Monitor live delle compilazioni */
.app-builder-build-monitor {
    display: grid;
    gap: 10px;
    margin-top: 18px;
    padding: 15px;
    border: 1px solid rgba(66, 211, 255, .22);
    border-radius: 14px;
    background: rgba(66, 211, 255, .07);
}

.app-builder-build-monitor[hidden] {
    display: none;
}

.app-builder-build-monitor.is-completed {
    border-color: rgba(70, 217, 139, .30);
    background: rgba(70, 217, 139, .08);
}

.app-builder-build-monitor.is-failed {
    border-color: rgba(255, 107, 122, .32);
    background: rgba(255, 107, 122, .09);
}

.app-builder-build-monitor-heading {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
}

.app-builder-build-monitor-heading strong {
    overflow-wrap: anywhere;
}

.app-builder-build-progress {
    position: relative;
    width: 100%;
    height: 12px;
    overflow: hidden;
    border-radius: 999px;
    background: rgba(255, 255, 255, .09);
}

.app-builder-build-progress > span {
    display: block;
    width: 0;
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(
        90deg,
        var(--accent),
        var(--success)
    );
    transition: width .35s ease;
}

.app-builder-build-monitor.is-failed
.app-builder-build-progress > span {
    background: #ff6b7a;
}

.app-builder-build-monitor p {
    margin: 0;
    color: var(--muted);
    line-height: 1.5;
}

/* RC3.3 - Retention release configurabile */
.app-builder-retention {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    margin-top: 18px;
    padding: 14px 16px;
    border: 1px solid rgba(255, 255, 255, .10);
    border-radius: 14px;
    background: rgba(255, 255, 255, .035);
}

.app-builder-retention-copy {
    display: grid;
    gap: 4px;
    min-width: 0;
}

.app-builder-retention-copy strong {
    font-size: .94rem;
}

.app-builder-retention-copy small {
    opacity: .72;
    line-height: 1.4;
}

.app-builder-retention-form {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-shrink: 0;
}

.app-builder-retention-select {
    min-width: 130px;
    padding: 9px 34px 9px 11px;
    border: 1px solid var(--border);
    border-radius: 10px;
    background: rgba(10, 18, 28, .95);
    color: inherit;
    font: inherit;
}

@media (max-width: 760px) {
    .app-builder-retention {
        align-items: stretch;
        flex-direction: column;
    }

    .app-builder-retention-form {
        width: 100%;
    }

    .app-builder-retention-select {
        flex: 1;
        min-width: 0;
    }
}

/* RC3.4 - Riepilogo archivio per applicazione */
.app-builder-archive-summary {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
    margin-top: 16px;
}

.app-builder-archive-summary > div {
    display: grid;
    gap: 4px;
    padding: 12px 14px;
    border: 1px solid rgba(255, 255, 255, .10);
    border-radius: 12px;
    background: rgba(255, 255, 255, .035);
}

.app-builder-archive-summary strong {
    font-size: 1.1rem;
}

.app-builder-archive-summary span {
    font-size: .82rem;
    opacity: .72;
}

@media (max-width: 620px) {
    .app-builder-archive-summary {
        grid-template-columns: 1fr;
    }
}

/* RC3.4.1 - Stato retention archivio */
.app-builder-retention-status.is-ok {
    border-color: rgba(70, 217, 139, .34);
    background: rgba(70, 217, 139, .07);
}

.app-builder-retention-status.is-warning {
    border-color: rgba(255, 193, 87, .42);
    background: rgba(255, 193, 87, .08);
}

.app-builder-retention-status.is-ok strong {
    color: var(--success);
}

.app-builder-retention-status.is-warning strong {
    color: #ffd38a;
}

/* RC4.4 - Stato applicazione da ricompilare */
.app-builder-rebuild-warning {
    display: grid;
    gap: 4px;
    margin-top: 14px;
    padding: 12px 14px;
    border: 1px solid rgba(255, 193, 7, .32);
    border-radius: 12px;
    background: rgba(255, 193, 7, .08);
}

.app-builder-rebuild-warning strong {
    font-size: 14px;
    font-weight: 700;
}

.app-builder-rebuild-warning span {
    font-size: 13px;
    line-height: 1.45;
    opacity: .82;
}

/* RC4.4 - Badge stato da ricompilare */
.app-builder-status-badge {
    display: inline-flex;
    align-items: center;
    margin-left: 8px;
    padding: 3px 8px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 700;
    line-height: 1.2;
    vertical-align: middle;
}

.app-builder-status-badge.rebuild {
    border: 1px solid rgba(255, 193, 7, .38);
    background: rgba(255, 193, 7, .12);
}

/* RC4.10 - Pagina dettaglio applicazione */
.app-builder-hash {
    overflow-wrap: anywhere;
    word-break: break-word;
    font-family: monospace;
    font-size: 12px;
}

.app-builder-details-releases {
    display: grid;
    gap: 10px;
    margin-top: 16px;
}

.app-builder-details-release {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px 18px;
    padding: 12px 14px;
    border: 1px solid rgba(255,255,255,.08);
    border-radius: 12px;
    background: rgba(255,255,255,.025);
}

.app-builder-details-release strong {
    margin-right: auto;
}

.app-builder-details-release span {
    font-size: 13px;
    opacity: .78;
}

/* RC4.13 - Riepilogo stato release */
.app-builder-release-summary {
    display: grid;
    grid-template-columns:
        repeat(4, minmax(0, 1fr));
    gap: 12px;
    margin: 16px 0 20px;
}

.app-builder-release-summary > div {
    padding: 14px;
    border: 1px solid var(--border);
    border-radius: 14px;
    background: rgba(255,255,255,.025);
}

.app-builder-release-summary span {
    display: block;
    margin-bottom: 6px;
    color: var(--muted);
    font-size: 12px;
}

.app-builder-release-summary strong {
    display: block;
    font-size: 15px;
    overflow-wrap: anywhere;
}

.app-builder-release-summary-action {
    grid-column: 1 / -1;
}

.app-builder-release-summary-action
.app-builder-button {
    width: 100%;
    justify-content: center;
}

@media (max-width: 900px) {
    .app-builder-release-summary {
        grid-template-columns:
            repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 560px) {
    .app-builder-release-summary {
        grid-template-columns: 1fr;
    }
}

/* RC4.15 - Stato applicazione nella pagina Dettagli */
.app-builder-details-status-summary {
    display: grid;
    grid-template-columns:
        repeat(4, minmax(0, 1fr));
    gap: 12px;
    margin: 0 0 18px;
}

.app-builder-details-status-card {
    padding: 14px;
    border: 1px solid var(--border);
    border-radius: 14px;
    background: rgba(255,255,255,.025);
}

.app-builder-details-status-card span {
    display: block;
    margin-bottom: 6px;
    color: var(--muted);
    font-size: 12px;
}

.app-builder-details-status-card strong {
    display: block;
    font-size: 15px;
}

.app-builder-details-status-card.ready {
    border-color: rgba(70,217,139,.30);
    background: rgba(70,217,139,.07);
}

.app-builder-details-status-card.warning {
    border-color: rgba(255,193,7,.34);
    background: rgba(255,193,7,.07);
}

.app-builder-details-status-card.error {
    border-color: rgba(255,107,122,.34);
    background: rgba(255,107,122,.08);
}

.app-builder-details-status-card.neutral {
    opacity: .86;
}

.app-builder-alert-warning {
    color: #ffe7a8;
    border: 1px solid rgba(255,193,7,.28);
    background: rgba(255,193,7,.08);
}

@media (max-width: 900px) {
    .app-builder-details-status-summary {
        grid-template-columns:
            repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 560px) {
    .app-builder-details-status-summary {
        grid-template-columns: 1fr;
    }
}

/* RC4.16 - Pannello integrità applicazione */
.app-builder-integrity-panel {
    margin-top: 18px;
}

.app-builder-integrity-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 6px 10px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    white-space: nowrap;
}

.app-builder-integrity-badge.ok {
    color: var(--success);
    background: rgba(70,217,139,.10);
    border: 1px solid rgba(70,217,139,.28);
}

.app-builder-integrity-badge.warning {
    color: #ffe7a8;
    background: rgba(255,193,7,.08);
    border: 1px solid rgba(255,193,7,.28);
}

.app-builder-integrity-badge.error {
    color: #ffd6da;
    background: rgba(255,107,122,.10);
    border: 1px solid rgba(255,107,122,.30);
}

.app-builder-integrity-list {
    display: grid;
    gap: 10px;
    margin-top: 16px;
}

.app-builder-integrity-item {
    display: grid;
    grid-template-columns: 34px 1fr;
    gap: 12px;
    align-items: start;
    padding: 12px 14px;
    border-radius: 12px;
    border: 1px solid var(--border);
    background: rgba(255,255,255,.025);
}

.app-builder-integrity-item.ok {
    border-color: rgba(70,217,139,.18);
}

.app-builder-integrity-item.warning {
    border-color: rgba(255,193,7,.28);
    background: rgba(255,193,7,.05);
}

.app-builder-integrity-item.error {
    border-color: rgba(255,107,122,.30);
    background: rgba(255,107,122,.06);
}

.app-builder-integrity-icon {
    width: 30px;
    height: 30px;
    display: grid;
    place-items: center;
    border-radius: 999px;
    font-weight: 900;
}

.app-builder-integrity-item.ok
.app-builder-integrity-icon {
    color: var(--success);
    background: rgba(70,217,139,.10);
}

.app-builder-integrity-item.warning
.app-builder-integrity-icon {
    color: #ffe7a8;
    background: rgba(255,193,7,.10);
}

.app-builder-integrity-item.error
.app-builder-integrity-icon {
    color: #ffd6da;
    background: rgba(255,107,122,.10);
}

.app-builder-integrity-item strong {
    display: block;
    margin-bottom: 4px;
}

.app-builder-integrity-item span {
    display: block;
    color: var(--muted);
    font-size: 13px;
}

.app-builder-integrity-summary {
    display: flex;
    flex-wrap: wrap;
    gap: 12px 22px;
    margin-top: 14px;
    color: var(--muted);
    font-size: 13px;
}

/* RC4.17 - Health Check globale App Builder */
.app-builder-health-summary {
    display: grid;
    grid-template-columns:
        minmax(0, 1fr) auto;
    gap: 20px;
    align-items: center;
    margin-bottom: 22px;
    padding: 18px;
    border: 1px solid var(--border);
    border-radius: 16px;
    background: rgba(255,255,255,.025);
}

.app-builder-health-summary.ok {
    border-color: rgba(70,217,139,.28);
    background: rgba(70,217,139,.055);
}

.app-builder-health-summary.warning {
    border-color: rgba(255,193,7,.30);
    background: rgba(255,193,7,.055);
}

.app-builder-health-summary.error {
    border-color: rgba(255,107,122,.30);
    background: rgba(255,107,122,.06);
}

.app-builder-health-summary h2 {
    margin: 5px 0;
}

.app-builder-health-summary p {
    margin: 0;
    color: var(--muted);
}

.app-builder-health-numbers {
    display: grid;
    grid-template-columns:
        repeat(4, minmax(80px, 1fr));
    gap: 10px;
}

.app-builder-health-numbers > div {
    min-width: 88px;
    padding: 11px 13px;
    text-align: center;
    border: 1px solid var(--border);
    border-radius: 12px;
    background: rgba(0,0,0,.12);
}

.app-builder-health-numbers span {
    display: block;
    margin-bottom: 4px;
    color: var(--muted);
    font-size: 11px;
}

.app-builder-health-numbers strong {
    font-size: 20px;
}

.app-builder-health-numbers .ok strong {
    color: var(--success);
}

.app-builder-health-numbers .warning strong {
    color: #ffe7a8;
}

.app-builder-health-numbers .error strong {
    color: #ffd6da;
}

@media (max-width: 950px) {
    .app-builder-health-summary {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 560px) {
    .app-builder-health-numbers {
        grid-template-columns:
            repeat(2, minmax(0, 1fr));
    }
}
