/* Quantem Deploy Console — own theme, Paces-inspired. Nunito + inline Tabler icons. Buildless. */
@font-face{font-family:'Nunito';font-weight:400;font-style:normal;font-display:swap;src:url('/assets/fonts/nunito-400.woff2') format('woff2');}
@font-face{font-family:'Nunito';font-weight:600;font-style:normal;font-display:swap;src:url('/assets/fonts/nunito-600.woff2') format('woff2');}
@font-face{font-family:'Nunito';font-weight:700;font-style:normal;font-display:swap;src:url('/assets/fonts/nunito-700.woff2') format('woff2');}
@font-face{font-family:'Nunito';font-weight:800;font-style:normal;font-display:swap;src:url('/assets/fonts/nunito-800.woff2') format('woff2');}

:root{
  --font:'Nunito',ui-sans-serif,system-ui,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
  --mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  --bg:#f5f6f8; --panel:#fff; --line:#e6e8ec; --line2:#eef0f3;
  --txt:#1c1f26; --muted:#7a828e; --heading:#0f1320;
  --pri:#3b5bfd; --pri-d:#2c46d8; --pri-soft:#eef1ff;
  --ok:#16a34a; --ok-bg:#e7f6ec; --bad:#e0392b; --bad-bg:#fdecea; --warn:#d9820a; --warn-bg:#fdf2e3;
  --radius:8px; --radius-lg:12px;
  --shadow:0 1px 2px rgba(18,22,33,.04),0 1px 3px rgba(18,22,33,.06);
  --shadow-lg:0 12px 32px rgba(18,22,33,.14);
  --sidebar-w:248px; --topbar-h:60px;
  --sidebar-bg:#151823; --sidebar-line:#262a39; --sidebar-txt:#aeb4c2;
  --sidebar-muted:#6b7180; --sidebar-hover:#1e2230; --sidebar-heading:#f3f5f9;
}
*{box-sizing:border-box;}
html,body{margin:0;}
body{background:var(--bg);color:var(--txt);font-family:var(--font);font-size:14px;line-height:1.55;-webkit-font-smoothing:antialiased;}
a{color:var(--pri);text-decoration:none;}
.muted{color:var(--muted);}
.hidden{display:none!important;}

/* ---- app shell ---- */
.app{display:flex;min-height:100vh;}
.sidebar{position:fixed;top:0;left:0;bottom:0;width:var(--sidebar-w);background:var(--sidebar-bg);border-right:1px solid var(--sidebar-line);display:flex;flex-direction:column;z-index:20;}
.main{flex:1;margin-left:var(--sidebar-w);display:flex;flex-direction:column;min-width:0;}

/* brand */
.brand{display:flex;align-items:center;gap:11px;height:var(--topbar-h);padding:0 18px;border-bottom:1px solid var(--sidebar-line);}
.brand .logo{width:34px;height:34px;border-radius:9px;background:linear-gradient(135deg,var(--pri),#6b82ff);color:#fff;display:grid;place-items:center;font-weight:800;font-size:17px;flex:none;}
.brand .bname{font-weight:800;font-size:15px;color:var(--sidebar-heading);letter-spacing:-.01em;}
.brand .bsub{font-size:11px;color:var(--sidebar-muted);}

/* sidebar nav */
.sidenav{display:flex;flex-direction:column;gap:2px;padding:14px 12px;flex:1;}
.sidenav .navlabel{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--sidebar-muted);padding:6px 12px 4px;}
.tab{display:flex;align-items:center;gap:11px;width:100%;border:0;background:transparent;color:var(--sidebar-txt);font-family:inherit;font-size:14px;font-weight:600;padding:9px 12px;border-radius:var(--radius);cursor:pointer;text-align:left;transition:.12s;}
.tab svg{width:19px;height:19px;flex:none;}
.tab:hover{background:var(--sidebar-hover);color:#fff;}
.tab.active{background:var(--pri);color:#fff;box-shadow:0 4px 10px rgba(59,91,253,.28);}
.side-foot{padding:14px 18px;border-top:1px solid var(--sidebar-line);font-size:11px;color:var(--sidebar-muted);}

/* logs group (native details) + submenu */
.navgroup{display:flex;flex-direction:column;}
.navparent{list-style:none;display:flex;align-items:center;gap:11px;padding:9px 12px;border-radius:var(--radius);cursor:pointer;color:var(--sidebar-txt);font-size:14px;font-weight:600;transition:.12s;}
.navparent::-webkit-details-marker{display:none;}
.navparent>svg:first-child{width:19px;height:19px;flex:none;}
.navparent .caret{width:15px;height:15px;margin-left:auto;color:var(--sidebar-muted);transition:transform .15s;}
.navgroup[open]>.navparent .caret{transform:rotate(180deg);}
.navparent:hover{background:var(--sidebar-hover);color:#fff;}
.subnav{display:flex;flex-direction:column;gap:2px;margin:2px 0 2px 22px;padding-left:8px;border-left:1px solid var(--sidebar-line);}
.subtab{font-size:13px;font-weight:500;padding-left:14px;}

/* topbar */
.topbar{position:sticky;top:0;height:var(--topbar-h);background:rgba(255,255,255,.85);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:14px;padding:0 22px;z-index:15;}
.topbar h1{margin:0;font-size:15px;font-weight:700;color:var(--heading);}
.tb-spacer{flex:1;}
.iconbtn{width:36px;height:36px;display:grid;place-items:center;border:1px solid var(--line);background:#fff;border-radius:var(--radius);cursor:pointer;color:#525a67;transition:.12s;}
.iconbtn svg{width:18px;height:18px;}
.iconbtn:hover{background:#f4f6f9;color:var(--pri);border-color:#d3d8e0;}
.iconbtn:disabled{opacity:.5;cursor:not-allowed;}

/* env picker (styled native select, right side) */
.envpick{position:relative;display:flex;align-items:center;}
.envpick::before{content:'';position:absolute;left:12px;width:8px;height:8px;border-radius:50%;background:var(--ok);box-shadow:0 0 0 3px var(--ok-bg);pointer-events:none;}
#envsel{appearance:none;-webkit-appearance:none;font-family:inherit;font-size:13px;font-weight:700;color:var(--txt);background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:8px 30px 8px 28px;cursor:pointer;}
.envpick::after{content:'';position:absolute;right:13px;width:7px;height:7px;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:translateY(-2px) rotate(45deg);pointer-events:none;}
#envsel:hover{border-color:#d3d8e0;}

/* user menu (native details/summary, no JS) */
.usermenu{position:relative;}
.usermenu>summary{list-style:none;width:36px;height:36px;border-radius:50%;background:var(--pri-soft);color:var(--pri);display:grid;place-items:center;cursor:pointer;border:1px solid var(--line);}
.usermenu>summary::-webkit-details-marker{display:none;}
.usermenu>summary svg{width:20px;height:20px;}
.usermenu .menu{position:absolute;right:0;top:46px;background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-lg);min-width:160px;padding:6px;z-index:30;}
.usermenu .menu a{display:flex;align-items:center;gap:9px;padding:9px 11px;border-radius:6px;color:var(--txt);font-size:13px;font-weight:600;}
.usermenu .menu a:hover{background:#f4f6f9;}
.usermenu .menu a svg{width:17px;height:17px;}

/* content + footer */
.content{flex:1;padding:24px 26px;max-width:1140px;width:100%;margin:0 auto;}
.hint{color:var(--muted);font-size:13px;margin:2px 0 18px;}
.footer{padding:16px 26px;color:var(--muted);font-size:12px;border-top:1px solid var(--line2);}

/* buttons */
button{font-family:inherit;background:#fff;color:var(--txt);border:1px solid var(--line);border-radius:var(--radius);padding:7px 13px;cursor:pointer;font-size:13px;font-weight:600;transition:.12s;}
button:hover{border-color:#c9cfd8;background:#f8f9fb;}
button.primary{background:var(--pri);border-color:var(--pri);color:#fff;}
button.primary:hover{background:var(--pri-d);border-color:var(--pri-d);}
button.warn{background:var(--warn-bg);border-color:#f3d29a;color:#b3690a;}
button.warn:hover{background:#fae9cf;}
button.ghost{background:transparent;border-color:transparent;color:var(--muted);}
button.ghost:hover{background:#eef0f3;color:var(--txt);}
button:disabled{opacity:.5;cursor:not-allowed;}

/* cards */
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow);margin-bottom:16px;}
.cardhead{display:flex;align-items:center;gap:10px;padding:13px 18px;font-weight:700;border-bottom:1px solid var(--line2);text-transform:uppercase;letter-spacing:.04em;font-size:12.5px;color:var(--heading);}
.cardhead .spacer{flex:1;}
.envrow{display:flex;align-items:center;gap:11px;padding:12px 18px;border-bottom:1px solid var(--line2);}
.envrow:last-child{border-bottom:0;}
.img{flex:1;font-family:var(--mono);font-size:12px;color:var(--txt);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}

/* badges */
.ready{font-family:var(--font);font-size:11px;padding:3px 9px;border-radius:999px;font-weight:700;letter-spacing:.01em;}
.ready.ok{background:var(--ok-bg);color:#15803d;}
.ready.bad{background:var(--bad-bg);color:#b91c1c;}

/* MR list */
.mrlink{color:var(--pri);font-family:var(--mono);font-weight:700;width:46px;flex:none;}
.mrlink:hover{text-decoration:underline;}
.batchbar{position:sticky;top:calc(var(--topbar-h) + 10px);z-index:5;display:flex;align-items:center;gap:12px;padding:12px 18px;margin-bottom:16px;background:var(--pri-soft);border:1px solid #c5cffe;border-radius:var(--radius-lg);box-shadow:0 6px 20px rgba(59,91,253,.14);font-size:13px;font-weight:600;}
.batchbar .spacer{flex:1;}
.selall{font-size:11px;font-weight:600;color:var(--muted);margin-left:6px;text-transform:none;letter-spacing:0;cursor:pointer;}
.selall input{vertical-align:middle;margin-right:4px;}
.mrchk{width:15px;height:15px;flex:none;cursor:pointer;accent-color:var(--pri);}

/* table */
table{width:100%;border-collapse:collapse;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow);}
th,td{text-align:left;padding:11px 16px;border-bottom:1px solid var(--line2);font-size:13px;}
tbody tr:last-child td{border-bottom:0;}
tbody tr:hover td{background:#fafbfc;}
th{color:var(--muted);font-weight:700;background:#fafbfc;text-transform:uppercase;font-size:11px;letter-spacing:.04em;}
.st-success{color:var(--ok);font-weight:700;}
.st-failed{color:var(--bad);font-weight:700;}
.st-running{color:var(--warn);font-weight:700;}

/* loader */
.loader{display:flex;align-items:center;gap:10px;padding:30px 4px;color:var(--muted);font-size:13px;}
.spinner{width:18px;height:18px;border:2px solid var(--line);border-top-color:var(--pri);border-radius:50%;animation:spin .7s linear infinite;flex:none;}
@keyframes spin{to{transform:rotate(360deg);}}

/* modal */
.modal{position:fixed;inset:0;background:rgba(15,19,32,.5);display:flex;align-items:center;justify-content:center;z-index:50;backdrop-filter:blur(2px);}
.modalbox{width:min(900px,92vw);height:min(70vh,640px);background:var(--panel);border-radius:var(--radius-lg);display:flex;flex-direction:column;box-shadow:var(--shadow-lg);overflow:hidden;}
.modalhead{display:flex;justify-content:space-between;align-items:center;padding:13px 18px;border-bottom:1px solid var(--line);font-weight:700;color:var(--heading);}
#logbody{flex:1;margin:0;padding:16px 18px;overflow:auto;background:#0f1116;color:#cfd6e2;font-family:var(--mono);font-size:12px;white-space:pre-wrap;}

/* login */
.login-body{display:flex;align-items:center;justify-content:center;min-height:100vh;background:radial-gradient(1200px 500px at 50% -10%,#eaf0ff,var(--bg));}
.login-card{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:34px 30px;width:350px;display:flex;flex-direction:column;gap:13px;box-shadow:var(--shadow-lg);}
.login-card .logo{width:46px;height:46px;border-radius:12px;background:linear-gradient(135deg,var(--pri),#6b82ff);color:#fff;display:grid;place-items:center;font-weight:800;font-size:22px;margin-bottom:6px;}
.login-card h1{margin:0;font-size:21px;font-weight:800;color:var(--heading);}
.login-card input{font-family:inherit;background:#fff;border:1px solid var(--line);color:var(--txt);border-radius:var(--radius);padding:11px 12px;font-size:14px;}
.login-card input:focus{outline:none;border-color:var(--pri);box-shadow:0 0 0 3px var(--pri-soft);}
.login-card button{background:var(--pri);border-color:var(--pri);color:#fff;padding:11px;font-weight:700;font-size:14px;margin-top:4px;}
.login-card button:hover{background:var(--pri-d);}
.err{color:var(--bad);font-size:13px;min-height:18px;}

/* responsive */
@media(max-width:760px){
  .sidebar{transform:translateX(-100%);transition:.2s;}
  .main{margin-left:0;}
}
