/* Panel + admin ortak stil. Tek dosya, build yok. */

:root{
  --bg:#f4f6f8; --panel:#fff; --border:#e3e7eb; --text:#1f2328; --muted:#6b7280;
  --accent:#2563eb; --accent-d:#1d4ed8; --ok:#0f9d58; --warn:#f59e0b; --err:#dc2626;
  --radius:10px; --shadow:0 1px 2px rgba(16,24,40,.06),0 1px 3px rgba(16,24,40,.1);
}
body.admin-scope{ --accent:#7c3aed; --accent-d:#6d28d9; }

*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--text);
  font:14px/1.55 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
h1{font-size:22px;margin:0 0 4px}
h2{font-size:16px;margin:0 0 12px}
h3{font-size:14px;margin:0 0 8px}
code{font-family:ui-monospace,Consolas,monospace;font-size:12px;
  background:rgba(0,0,0,.05);padding:2px 5px;border-radius:4px}

/* ---- iskelet ---- */
.shell{display:flex;min-height:100vh}
.side{width:220px;flex:0 0 220px;background:#fff;border-right:1px solid var(--border);
  display:flex;flex-direction:column;position:sticky;top:0;height:100vh}
.brand{padding:16px;font-weight:700;font-size:15px;border-bottom:1px solid var(--border)}
.brand small{display:block;font-weight:400;color:var(--muted);font-size:11px;margin-top:2px}
.nav{padding:8px;flex:1;overflow:auto}
.nav a{display:block;padding:8px 10px;border-radius:8px;color:var(--text);font-weight:500}
.nav a:hover{background:var(--bg);text-decoration:none}
.nav a.on{background:var(--accent);color:#fff}
.nav .sep{margin:10px 10px 4px;font-size:11px;text-transform:uppercase;
  letter-spacing:.5px;color:var(--muted)}
.side-foot{padding:10px;border-top:1px solid var(--border);font-size:12px;color:var(--muted)}
.main{flex:1;min-width:0;padding:22px 26px 60px}
.head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:18px;flex-wrap:wrap}
.sub{color:var(--muted);font-size:13px}

/* ---- kart / grid ---- */
.card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);
  padding:16px;box-shadow:var(--shadow);margin-bottom:16px}
.grid{display:grid;gap:14px}
.g2{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}
.g3{grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}
.g4{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}
.stat{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:14px}
.stat .n{font-size:26px;font-weight:700;line-height:1.1}
.stat .l{color:var(--muted);font-size:12px;margin-top:3px}
.stat.bad .n{color:var(--err)}

/* ---- tablo ---- */
.tw{overflow-x:auto;-webkit-overflow-scrolling:touch}
table{width:100%;border-collapse:collapse;font-size:13px;min-width:560px}
th,td{text-align:left;padding:9px 10px;border-bottom:1px solid var(--border);vertical-align:middle}
th{font-size:11px;text-transform:uppercase;letter-spacing:.4px;color:var(--muted);font-weight:600}
tbody tr:hover{background:#fafbfc}
td.right,th.right{text-align:right}

/* ---- form ---- */
label{display:block;font-size:12px;font-weight:600;color:var(--muted);margin:0 0 4px}
input[type=text],input[type=email],input[type=password],input[type=number],input[type=url],select,textarea{
  width:100%;padding:8px 10px;border:1px solid var(--border);border-radius:8px;
  font:inherit;background:#fff;color:var(--text)}
input:focus,select:focus,textarea:focus{outline:2px solid rgba(37,99,235,.25);border-color:var(--accent)}
input[type=color]{width:44px;height:34px;padding:2px;border:1px solid var(--border);border-radius:8px;background:#fff}
.field{margin-bottom:12px}
.row{display:flex;gap:10px;flex-wrap:wrap}
.row .field{flex:1;min-width:150px}
.check{display:flex;align-items:center;gap:7px;font-size:13px;font-weight:500;color:var(--text);margin-bottom:8px}
.check input{width:auto;margin:0}
.hint{font-size:11px;color:var(--muted);margin-top:3px}

.btn{display:inline-block;padding:8px 14px;border:1px solid var(--border);border-radius:8px;
  background:#fff;color:var(--text);font:inherit;font-weight:600;cursor:pointer;text-decoration:none}
.btn:hover{background:var(--bg);text-decoration:none}
.btn.pri{background:var(--accent);border-color:var(--accent);color:#fff}
.btn.pri:hover{background:var(--accent-d)}
.btn.dan{background:var(--err);border-color:var(--err);color:#fff}
.btn.dan:hover{filter:brightness(.92)}
.btn.sm{padding:5px 9px;font-size:12px}
.inline{display:inline}

/* ---- rozet ---- */
.tag{display:inline-block;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:600;
  background:var(--bg);color:var(--muted);border:1px solid var(--border);white-space:nowrap}
.tag.ok{background:#e8f5ec;color:#0b7a43;border-color:#bfe5cd}
.tag.warn{background:#fef4e5;color:#9a6300;border-color:#f6dfb4}
.tag.err{background:#fdeaea;color:#b42318;border-color:#f7cfcb}
.tag.off{background:#eef0f2;color:#5b6470}

/* ---- flash ---- */
.flash{padding:10px 14px;border-radius:8px;margin-bottom:12px;font-weight:500;border:1px solid}
.flash.success{background:#e8f5ec;border-color:#bfe5cd;color:#0b7a43}
.flash.error{background:#fdeaea;border-color:#f7cfcb;color:#b42318}
.banner{background:#fff7e6;border:1px solid #f6dfb4;color:#8a5b00;padding:9px 14px;
  border-radius:8px;margin-bottom:14px;display:flex;justify-content:space-between;
  align-items:center;gap:12px;flex-wrap:wrap}

/* ---- muhtelif ---- */
.empty{text-align:center;color:var(--muted);padding:34px 10px}
.stars{color:var(--warn);letter-spacing:1px;white-space:nowrap}
.stars .off{color:var(--border)}
.copy{display:flex;gap:8px;align-items:stretch}
.copy input{font-family:ui-monospace,Consolas,monospace;font-size:12px}
pre.log{background:#12151a;color:#d7dde5;padding:12px;border-radius:8px;overflow:auto;
  max-height:340px;font-size:12px;line-height:1.5;margin:0}
.split{display:grid;gap:16px;grid-template-columns:340px 1fr;align-items:start}
.preview{background:#fff;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}
.preview iframe{width:100%;border:0;display:block;min-height:420px}
.truncate{max-width:340px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
details.danger{border:1px solid #f7cfcb;background:#fffafa;border-radius:8px;padding:10px 12px}
details.danger summary{cursor:pointer;color:var(--err);font-weight:600}

/* ---- giris ekrani ---- */
.auth-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}
.auth-box{width:100%;max-width:360px}
.auth-box .card{padding:22px}
.auth-logo{text-align:center;font-weight:700;font-size:18px;margin-bottom:14px}

@media(max-width:860px){
  .split{grid-template-columns:1fr}
  .shell{flex-direction:column}
  .side{width:100%;flex:none;height:auto;position:static;
    border-right:0;border-bottom:1px solid var(--border)}
  .nav{display:flex;flex-wrap:wrap;gap:4px}
  .nav .sep{width:100%}
  .main{padding:16px}
}
