:root{
  --ink:#12151C;
  --ink-70:#4A5260;
  --ink-45:#7C8595;
  --paper:#E9ECF0;
  --panel:#FFFFFF;
  --line:#D5DAE2;
  --hetzner:#D50C2D;
  --forge:#1F7AE0;
  --ok:#12915A;
  --warn:#B4690E;
  --radius:3px;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  background:var(--paper);
  color:var(--ink);
  font-family:'Inter',system-ui,sans-serif;
  font-size:14px;
  -webkit-font-smoothing:antialiased;
}
.app{display:flex;min-height:100vh}

/* ---------- sidebar ---------- */
.side{
  width:216px;flex:0 0 216px;
  background:var(--ink);
  color:#fff;
  padding:20px 0;
  display:flex;flex-direction:column;
}
.brand{
  padding:0 18px 20px;
  font-family:'Space Grotesk',sans-serif;
  font-weight:700;letter-spacing:-.02em;font-size:17px;
}
.brand span{color:var(--ink-45);font-weight:400}
.navlabel{
  padding:14px 18px 6px;
  font-family:'IBM Plex Mono',monospace;
  font-size:10px;letter-spacing:.14em;text-transform:uppercase;
  color:#6C7484;
}
.nav a{
  display:flex;align-items:center;gap:9px;
  padding:9px 18px;color:#B9C0CC;text-decoration:none;font-size:13.5px;
  border-left:3px solid transparent;
}
.nav a:hover{color:#fff;background:#1A1E27}
.nav a.on{color:#fff;background:#1A1E27;border-left-color:var(--hetzner)}
.dot{width:7px;height:7px;border-radius:50%;background:#4A5260;flex:0 0 7px}
.nav a.on .dot{background:var(--hetzner)}
.side-foot{margin-top:auto;padding:16px 18px 0;color:#6C7484;font-size:11.5px;font-family:'IBM Plex Mono',monospace}

/* ---------- main ---------- */
.main{flex:1;min-width:0;padding:22px 26px 60px}
.crumb{font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-45)}
.head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin:6px 0 22px}
h1{font-family:'Space Grotesk',sans-serif;font-size:28px;font-weight:700;letter-spacing:-.03em;margin:2px 0 0}
.sub{color:var(--ink-70);margin-top:5px;max-width:46ch}
.pick{display:flex;align-items:center;gap:8px}
select,input{
  font-family:'Inter',sans-serif;font-size:13.5px;color:var(--ink);
  background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);
  padding:8px 10px;
}
input:focus,select:focus,button:focus{outline:2px solid var(--hetzner);outline-offset:1px}
.mono{font-family:'IBM Plex Mono',monospace}

.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:18px}
.card-h{
  display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;
  padding:13px 16px;border-bottom:1px solid var(--line);
}
.card-h h2{font-family:'Space Grotesk',sans-serif;font-size:15px;font-weight:600;margin:0;letter-spacing:-.01em}
.card-h .note{color:var(--ink-45);font-size:12px}
.card-b{padding:16px}

button{
  font-family:'Inter',sans-serif;font-size:13px;font-weight:500;
  border:1px solid var(--ink);background:var(--ink);color:#fff;
  padding:8px 13px;border-radius:var(--radius);cursor:pointer;
}
button.ghost{background:transparent;color:var(--ink);border-color:var(--line)}
button.ghost:hover{border-color:var(--ink-45)}
button.red{background:var(--hetzner);border-color:var(--hetzner)}
button.sm{padding:5px 9px;font-size:12px}

/* token rows */
.tok{display:grid;grid-template-columns:1fr 1.6fr auto;gap:10px;align-items:center;padding:11px 0;border-bottom:1px dashed var(--line)}
.tok:last-of-type{border-bottom:0}
.tok .name{font-weight:600}
.tok .name em{display:block;font-style:normal;font-weight:400;font-size:12px;color:var(--ink-45)}
.secret{font-family:'IBM Plex Mono',monospace;font-size:12.5px;color:var(--ink-70);letter-spacing:.02em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pill{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-family:'IBM Plex Mono',monospace;padding:3px 8px;border-radius:20px;border:1px solid var(--line)}
.pill.ok{color:var(--ok);border-color:#B9E2CD;background:#F1FAF5}
.pill.off{color:var(--hetzner);border-color:#F3C2CB;background:#FDF2F4}
.pill.wait{color:var(--warn);border-color:#EBD5AE;background:#FDF8EF}

/* server grid */
.srv{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:12px}
.srvcard{border:1px solid var(--line);border-radius:var(--radius);padding:13px 14px;position:relative}
.srvcard::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--ok)}
.srvcard.down::before{background:var(--hetzner)}
.srvcard h3{font-family:'Space Grotesk',sans-serif;font-size:14.5px;margin:0 0 2px;font-weight:600}
.srvcard .ip{font-family:'IBM Plex Mono',monospace;font-size:12.5px;color:var(--ink-70)}
.meter{margin-top:11px}
.meter div{display:flex;justify-content:space-between;font-size:11.5px;font-family:'IBM Plex Mono',monospace;color:var(--ink-70);margin-bottom:3px}
.bar{height:4px;background:#E4E8EE;border-radius:2px;overflow:hidden;margin-bottom:8px}
.bar i{display:block;height:100%;background:var(--ink)}
.bar i.hot{background:var(--hetzner)}

/* zone file */
.zone{background:#F7F8FA;border:1px solid var(--line);border-radius:var(--radius);overflow-x:auto}
table{border-collapse:collapse;width:100%;min-width:520px}
th{
  text-align:left;font-family:'IBM Plex Mono',monospace;font-size:10px;
  letter-spacing:.13em;text-transform:uppercase;color:var(--ink-45);
  font-weight:500;padding:9px 14px;border-bottom:1px solid var(--line);
}
td{padding:9px 14px;border-bottom:1px solid #E7EAEF;font-family:'IBM Plex Mono',monospace;font-size:12.5px}
tr:last-child td{border-bottom:0}
tr.new td{background:#FDF2F4;animation:flash .9s ease-out}
@keyframes flash{from{background:#F9D9DF}to{background:#FDF2F4}}
td.act{text-align:right}
.type{color:var(--hetzner);font-weight:600}

/* add record */
.addrow{display:grid;grid-template-columns:1fr auto 1.2fr auto;gap:10px;align-items:end;margin-top:14px}
.f label{display:block;font-size:11px;font-family:'IBM Plex Mono',monospace;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-45);margin-bottom:5px}
.f input,.f select{width:100%}
.preview{
  margin-top:11px;font-family:'IBM Plex Mono',monospace;font-size:12.5px;color:var(--ink-70);
  border-left:3px solid var(--hetzner);padding:7px 12px;background:#FDF2F4;
}
.preview b{color:var(--ink);font-weight:600}

.hint{margin-top:14px;font-size:12.5px;color:var(--ink-45)}

@media(max-width:820px){
  .side{width:60px;flex:0 0 60px}
  .brand{font-size:0;padding:0 0 16px;text-align:center}
  .brand::after{content:"pm";font-size:16px;color:#fff;font-family:'Space Grotesk',sans-serif;font-weight:700}
  .navlabel{display:none}
  .nav a{justify-content:center;padding:12px 0;font-size:0;gap:0}
  .side-foot{display:none}
  .main{padding:18px 14px 50px}
  .tok{grid-template-columns:1fr;gap:6px}
  .addrow{grid-template-columns:1fr 1fr;}
  .addrow .f:nth-child(3),.addrow button{grid-column:1/-1}
  h1{font-size:23px}
}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* ---------- panel eklemeleri ---------- */
.flash{background:#F1FAF5;border:1px solid #B9E2CD;color:#0D6B43;padding:10px 14px;border-radius:var(--radius);margin-bottom:16px;font-size:13px}
.alert{background:#FDF2F4;border:1px solid #F3C2CB;color:#8E0A20;padding:10px 14px;border-radius:var(--radius);margin-bottom:16px;font-size:13px}
.alert ul{margin:6px 0 0;padding-left:18px}
.empty{padding:26px 16px;text-align:center;color:var(--ink-45)}
.empty b{display:block;color:var(--ink);font-family:'Space Grotesk',sans-serif;font-size:15px;margin-bottom:5px}
.err{color:var(--hetzner);font-size:12px;margin-top:5px}
form.inline{display:inline}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.stack{display:grid;gap:12px;max-width:520px}
.login{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}
.login .box{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:26px;width:100%;max-width:360px}
.login h1{font-size:22px;margin-bottom:4px}
.login .sub{margin-bottom:20px}
.login input{width:100%}
.login button{width:100%;margin-top:4px}
.copy{font-family:'IBM Plex Mono',monospace;font-size:12px;background:#F7F8FA;border:1px solid var(--line);padding:10px 12px;border-radius:var(--radius);white-space:pre-wrap;word-break:break-all;margin-top:12px}
@media(max-width:820px){.grid2{grid-template-columns:1fr}}

/* ---------- pipeline ---------- */
/* ---------- pipeline: imza öğesi ---------- */
.pipe{position:relative;padding-left:34px}
.pipe::before{content:"";position:absolute;left:11px;top:14px;bottom:18px;width:2px;background:var(--line)}
.pipe .fill{position:absolute;left:11px;top:14px;width:2px;background:var(--ok);height:0;transition:height .5s ease}
.step{position:relative;padding:0 0 4px;margin-bottom:14px}
.node{position:absolute;left:-34px;top:1px;width:24px;height:24px;border-radius:50%;background:var(--panel);
  border:2px solid var(--line);display:grid;place-items:center;
  font-family:'IBM Plex Mono',monospace;font-size:11px;font-weight:600;color:var(--ink-45)}
.step.run .node{border-color:var(--run);color:var(--run)}
.step.done .node{border-color:var(--ok);background:var(--ok);color:#fff}
.step.fail .node{border-color:var(--hetzner);background:var(--hetzner);color:#fff}
.step.run .node::after{content:"";position:absolute;inset:-5px;border-radius:50%;border:2px solid var(--run);opacity:.35;animation:pulse 1.2s ease-out infinite}
@keyframes pulse{from{transform:scale(.85);opacity:.5}to{transform:scale(1.35);opacity:0}}
.step h3{font-family:'Space Grotesk',sans-serif;font-size:14.5px;font-weight:600;margin:2px 0 3px;display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.step .meta{font-size:12.5px;color:var(--ink-45);font-family:'IBM Plex Mono',monospace}
.step.pending h3,.step.pending .meta{color:var(--ink-45)}
.tag{font-family:'IBM Plex Mono',monospace;font-size:10.5px;letter-spacing:.06em;padding:2px 7px;border-radius:20px;border:1px solid var(--line);color:var(--ink-45);font-weight:500}
.step.run .tag{color:var(--run);border-color:#B9CDF2;background:#F1F5FD}
.step.done .tag{color:var(--ok);border-color:#B9E2CD;background:#F1FAF5}
.step.fail .tag{color:var(--hetzner);border-color:#F3C2CB;background:#FDF2F4}
.out{margin-top:7px;font-family:'IBM Plex Mono',monospace;font-size:12px;color:var(--ink-70);background:#F7F8FA;border:1px solid var(--line);border-radius:var(--radius);padding:8px 11px;white-space:pre-wrap;word-break:break-word}
.step.fail .out{background:#FDF2F4;border-color:#F3C2CB;color:#8E0A20}
.fixrow{margin-top:9px;display:flex;gap:8px;flex-wrap:wrap}

.summary{display:flex;gap:22px;flex-wrap:wrap;font-family:'IBM Plex Mono',monospace;font-size:12.5px;color:var(--ink-70)}
.summary b{color:var(--ink)}
.bigbtn{margin-top:16px;display:flex;gap:10px;flex-wrap:wrap}


.opts{display:flex;gap:18px;flex-wrap:wrap;margin-top:14px;font-size:13px;color:var(--ink-70)}
.opts label{display:flex;gap:7px;align-items:center}
.opts input{width:auto}
.warnbox{margin-top:12px;font-size:12.5px;color:var(--warn);background:#FDF8EF;border:1px solid #EBD5AE;padding:9px 12px;border-radius:var(--radius)}
.form{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;align-items:end}
.form input,.form select{width:100%}
.bigbtn{margin-top:16px;display:flex;gap:10px;flex-wrap:wrap}
:root{--run:#1F5FE0}

/* ---------- personel ---------- */
.person{display:flex;gap:13px;align-items:flex-start;padding:13px 0;border-bottom:1px dashed var(--line)}
.person:last-child{border-bottom:0}
.face{width:40px;height:40px;flex:0 0 40px;border-radius:50%;background:var(--ink);color:#fff;
  display:grid;place-items:center;font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:15px}
.person .who{flex:1;min-width:0}
.person .who b{font-family:'Space Grotesk',sans-serif;font-size:15px;display:block}
.person .who span{font-size:12.5px;color:var(--ink-45)}
.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);margin-bottom:0;overflow-x:auto}
.tabs button{background:transparent;border:0;border-bottom:2px solid transparent;color:var(--ink-45);
  padding:11px 14px;font-size:13.5px;border-radius:0;white-space:nowrap}
.tabs button.on{color:var(--ink);border-bottom-color:var(--hetzner);font-weight:600}
.pane{display:none;padding-top:16px}
.pane.on{display:block}
.rule{padding:12px 0;border-bottom:1px dashed var(--line)}
.rule:last-child{border-bottom:0}
.rule .cat{font-family:'IBM Plex Mono',monospace;font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-45)}
.rule.off{opacity:.45}
.rule p{margin:5px 0 8px;white-space:pre-wrap}
.chat{border:1px solid var(--line);border-radius:var(--radius);background:#F7F8FA;padding:14px;max-height:420px;overflow-y:auto}
.bubble{max-width:78%;padding:9px 12px;border-radius:12px;margin-bottom:10px;font-size:13.5px;white-space:pre-wrap;line-height:1.5}
.bubble.me{margin-left:auto;background:var(--ink);color:#fff;border-bottom-right-radius:3px}
.bubble.her{background:var(--panel);border:1px solid var(--line);border-bottom-left-radius:3px}
.sendrow{display:grid;grid-template-columns:1fr auto;gap:10px;margin-top:12px}
textarea{font-family:'Inter',sans-serif;font-size:13.5px;color:var(--ink);background:var(--panel);
  border:1px solid var(--line);border-radius:var(--radius);padding:9px 11px;width:100%;resize:vertical;min-height:76px}
textarea:focus{outline:2px solid var(--hetzner);outline-offset:1px}
