:root{--navy:#12285a;--navy2:#0c1b40;--orange:#f7941d;--orange2:#e07f0a;--bg:#f2f5fa;--card:#fff;--line:#dfe5ef;--fg:#1b2438;--mut:#6b7691;--ok:#168a4a;--err:#c62f3a;--warn:#b86e00;--r:12px}
*{box-sizing:border-box}
html,body{margin:0}
body{font-family:'Segoe UI',Calibri,Arial,sans-serif;color:var(--fg);background:var(--bg);font-size:14px}
a{color:var(--navy)}
.muted{color:var(--mut)}
h1,h2,h3{margin:0}

/* ---- butonlar & form ---- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid var(--line);background:#fff;color:var(--fg);border-radius:8px;padding:8px 14px;font-weight:600;font-size:13px;font-family:inherit;cursor:pointer;text-decoration:none;transition:.15s}
.btn:hover{background:#f3f6fb}
.btn-primary{background:var(--orange);border-color:var(--orange);color:#fff}
.btn-primary:hover{background:var(--orange2)}
.btn-navy{background:var(--navy);border-color:var(--navy);color:#fff}.btn-navy:hover{background:var(--navy2)}
.btn-danger{color:var(--err);border-color:#f0c4c8}
.btn-ghost{background:transparent}
.btn-sm{padding:5px 10px;font-size:12px}
.btn-block{display:flex;width:100%}
.btn:disabled{opacity:.5;cursor:not-allowed}
label{display:block;font-size:12px;font-weight:600;color:var(--mut);margin-bottom:12px}
input,select,textarea{display:block;width:100%;margin-top:5px;padding:9px 11px;border:1px solid var(--line);border-radius:8px;font-size:14px;font-family:inherit;color:var(--fg);background:#fff}
input:focus,select:focus,textarea:focus{outline:2px solid rgba(247,148,29,.45);border-color:var(--orange)}
input[type=checkbox]{display:inline-block;width:auto;margin:0}
textarea{font-family:Consolas,monospace;font-size:12.5px;line-height:1.5}
.alert{padding:10px 12px;border-radius:8px;font-size:13px;margin:0 0 14px;border:1px solid}
.alert.err{background:#fdecee;border-color:#f3c0c5;color:var(--err)}
.alert.ok{background:#e8f6ee;border-color:#b8e3c9;color:var(--ok)}
.alert.warn{background:#fff6e5;border-color:#f3d9a4;color:var(--warn)}

/* ---- giriş / çıkış ---- */
.auth-body{min-height:100vh;display:flex;align-items:center;justify-content:center;background-size:cover;background-position:center;position:relative;padding:20px}
.auth-overlay{position:absolute;inset:0;background:linear-gradient(135deg,rgba(12,27,64,.72),rgba(12,27,64,.35))}
.auth-card{position:relative;width:100%;max-width:400px;background:rgba(255,255,255,.94);backdrop-filter:blur(8px);border-radius:18px;padding:32px 30px;box-shadow:0 20px 60px rgba(0,0,0,.35)}
.auth-card.center{text-align:center}
.auth-card h1{font-size:22px;color:var(--navy);margin:10px 0 4px}
.auth-card .muted{margin:0 0 18px}
.auth-card form{text-align:left}
.auth-card .btn-block{margin-top:6px}
.auth-foot{text-align:center;color:var(--mut);font-size:12px;margin:18px 0 0}
.brand-mark{width:54px;height:54px;border-radius:14px;background:linear-gradient(135deg,var(--orange),#ffb347);color:#fff;font:800 28px/54px Arial;text-align:center;margin:0 auto}
.brand-mark.sm{width:38px;height:38px;line-height:38px;font-size:20px;border-radius:10px;margin:0}
.brand-mark.ok{background:linear-gradient(135deg,#1aa35a,#5bd08a)}

/* ---- uygulama iskeleti ---- */
.sidebar{position:fixed;inset:0 auto 0 0;width:250px;background:linear-gradient(180deg,var(--navy),var(--navy2));color:#cfd8ee;display:flex;flex-direction:column;z-index:50}
.sb-brand{display:flex;gap:12px;align-items:center;padding:20px 18px;border-bottom:1px solid rgba(255,255,255,.08)}
.sb-brand b{color:#fff;letter-spacing:2px;display:block}.sb-brand small{font-size:11px;color:#8fa0c9}
.sb-nav{flex:1;display:flex;flex-direction:column;padding:14px 10px;gap:4px}
.sb-spacer{flex:1}
.nav-item{display:flex;align-items:center;gap:12px;padding:11px 14px;border-radius:10px;color:#cfd8ee;text-decoration:none;font-weight:600;font-size:13.5px}
.nav-item:hover{background:rgba(255,255,255,.08);color:#fff}
.nav-item.active{background:var(--orange);color:#fff;box-shadow:0 4px 14px rgba(247,148,29,.35)}
.nav-item.exit:hover{background:rgba(198,47,58,.25)}
.sb-user{display:flex;gap:10px;align-items:center;padding:14px 18px;border-top:1px solid rgba(255,255,255,.08)}
.sb-user b{display:block;color:#fff;font-size:13px}.sb-user small{color:#8fa0c9;font-size:11px}
.avatar{width:34px;height:34px;border-radius:50%;background:var(--orange);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700}
.main{margin-left:250px;min-height:100vh}
.topbar{height:60px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:12px;padding:0 24px;position:sticky;top:0;z-index:20}
.topbar h2{font-size:17px;color:var(--navy)}
.burger{display:none;background:none;border:0;font-size:22px;cursor:pointer}
.content{padding:24px}
@media(max-width:900px){.sidebar{transform:translateX(-100%);transition:.2s}.sidebar.open{transform:none}.main{margin-left:0}.burger{display:block}}

/* ---- kartlar ---- */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:0 1px 3px rgba(20,35,80,.05)}
.card-h{padding:14px 18px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.card-h h3{font-size:14.5px;color:var(--navy)}
.card-b{padding:18px}
.grid{display:grid;gap:18px}
.g2{grid-template-columns:1fr 1fr}.g3{grid-template-columns:repeat(3,1fr)}.g4{grid-template-columns:repeat(4,1fr)}
@media(max-width:1000px){.g2,.g3,.g4{grid-template-columns:1fr 1fr}}@media(max-width:640px){.g2,.g3,.g4{grid-template-columns:1fr}}
.stat{padding:16px 18px}.stat small{color:var(--mut);font-weight:600;font-size:12px}.stat b{display:block;font-size:26px;color:var(--navy);margin-top:4px}
.dropzone{border:2px dashed #b9c4dc;border-radius:var(--r);background:#fff;padding:34px 20px;text-align:center;cursor:pointer;transition:.15s}
.dropzone:hover,.dropzone.on{border-color:var(--orange);background:#fffaf2}
.dropzone b{color:var(--navy);font-size:15px}.dropzone p{margin:6px 0 0;color:var(--mut);font-size:12.5px}
.dz-ico{width:46px;height:46px;margin:0 auto 10px;border-radius:50%;background:#fff3e0;color:var(--orange);display:flex;align-items:center;justify-content:center;font-size:22px}

/* ---- sekmeler / rozetler ---- */
.tabs{display:flex;gap:6px;flex-wrap:wrap;margin:16px 0 12px}
.tab{padding:7px 14px;border-radius:999px;border:1px solid var(--line);background:#fff;color:var(--fg);font-weight:600;font-size:12.5px;font-family:inherit;cursor:pointer;text-decoration:none}
.tab:hover{border-color:var(--orange)}
.tab.act{background:var(--navy);border-color:var(--navy);color:#fff}
.badge{display:inline-block;padding:2px 9px;border-radius:999px;font-size:11px;font-weight:700;background:#eef1f7;color:var(--mut)}
.badge.ok{background:#e1f4e9;color:var(--ok)}.badge.err{background:#fde6e8;color:var(--err)}.badge.warn{background:#fff1d6;color:var(--warn)}.badge.navy{background:#e3e9f8;color:var(--navy)}

/* ---- tablolar ---- */
.tbl-wrap{overflow:auto;max-height:70vh;border:1px solid var(--line);border-radius:var(--r);background:#fff}
table.t{border-collapse:collapse;width:100%}
table.t th{background:var(--navy);color:#fff;text-align:left;padding:10px 12px;font-size:11.5px;text-transform:uppercase;letter-spacing:.5px;position:sticky;top:0;z-index:2;white-space:nowrap}
table.t td{padding:9px 12px;border-bottom:1px solid var(--line);vertical-align:top;font-size:13px}
table.t tr:hover td{background:#f8faff}
table.t td.nw{white-space:nowrap}
/* route tablosu (Excel görünümü) */
table.rt{border-collapse:collapse;table-layout:fixed;background:#fff}
table.rt th{background:#00b0f0;color:#000;border:1px solid #9aa;padding:5px 8px;font-size:11px;text-align:center;position:sticky;top:0;z-index:2}
table.rt td{border:1px solid #bbb;padding:4px 8px;vertical-align:top;font-size:12.5px;word-wrap:break-word}
table.rt th.k,table.rt td.k{border-color:#000}
table.rt tr:hover td{background:#f4fbff}
.pager{display:flex;gap:6px;align-items:center;margin-top:12px;flex-wrap:wrap}
.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.toolbar input,.toolbar select{margin:0;width:auto;min-width:160px}
.row-actions{display:flex;gap:6px;flex-wrap:wrap}
pre.msg{white-space:pre-wrap;background:#f6f8fc;border:1px solid var(--line);border-radius:8px;padding:12px;font:12.5px/1.5 Consolas,monospace;margin:0;max-height:300px;overflow:auto}

/* ---- modal ---- */
.modal-bg{position:fixed;inset:0;background:rgba(10,20,50,.55);display:none;align-items:center;justify-content:center;z-index:100;padding:16px}
.modal-bg.show{display:flex}
.modal{background:#fff;border-radius:16px;width:100%;max-width:560px;max-height:90vh;overflow:auto;box-shadow:0 24px 70px rgba(0,0,0,.35)}
.modal-h{padding:16px 20px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}
.modal-h h3{color:var(--navy);font-size:16px}
.modal-b{padding:20px}.modal-f{padding:14px 20px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:8px;background:#fafbfe}
.progress{height:10px;background:#e8edf6;border-radius:999px;overflow:hidden;margin:6px 0 14px}.progress>div{height:100%;background:var(--orange);width:0;transition:.2s}
.hint{font-size:12px;color:var(--mut);margin:4px 0 0}
.tag{font:11px Consolas,monospace;background:#eef1f7;border:1px solid var(--line);border-radius:5px;padding:2px 7px;cursor:pointer;margin:0 4px 4px 0;display:inline-block}
.tag:hover{background:#fff3e0;border-color:var(--orange)}
@media(max-width:1000px){.grid[style*="minmax"]{grid-template-columns:1fr!important}}
[hidden]{display:none!important}
details>summary{cursor:pointer;list-style:none}details>summary::-webkit-details-marker{display:none}
@media print{.sidebar,.topbar,.no-print{display:none!important}.main{margin:0}.content{padding:0}body{background:#fff}.card{box-shadow:none}}
input.ed{display:block;margin:0 0 4px;padding:5px 8px;font-size:12.5px;width:100%;min-width:140px}

/* ---- kapı girişi bilgi bloğu ---- */
.gate-info{line-height:1.45}
.gi-date{color:var(--mut);font-size:13px;margin-bottom:2px}.gi-date b{color:var(--navy)}
.gi-name{font-size:20px;font-weight:800;color:var(--navy)}
.gi-line{font-size:14px;margin-top:2px}
.gi-ship{display:inline-block;margin:6px 0 2px;font:700 16px Consolas,monospace;background:#eef1f7;border:1px solid var(--line);border-radius:6px;padding:2px 9px}
.gi-plate{font-weight:700;letter-spacing:.3px}
.gi-route{margin-top:10px;font-weight:700;color:var(--navy)}
.gi-stops{margin-top:4px;font-size:13px;color:var(--fg)}.gi-stops div{padding:2px 0;border-bottom:1px dashed var(--line)}
/* ---- bildirim kartları (sağ alt, WhatsApp Web benzeri) ---- */
#ntfWrap{position:fixed;right:18px;bottom:18px;z-index:200;display:flex;flex-direction:column-reverse;gap:10px;width:340px;max-width:calc(100vw - 36px);max-height:calc(100vh - 36px);overflow:auto;pointer-events:none}
.ntf{pointer-events:auto;display:flex;gap:12px;align-items:flex-start;background:#fff;border:1px solid var(--line);border-left:5px solid var(--orange);border-radius:12px;padding:12px 12px 12px 14px;box-shadow:0 10px 34px rgba(12,27,64,.28);cursor:pointer;animation:ntfIn .25s ease-out}
.ntf:hover{background:#fffaf2}
.ntf-ico{flex:0 0 36px;height:36px;border-radius:50%;background:var(--navy);color:#fff;display:flex;align-items:center;justify-content:center}
.ntf-b{flex:1;min-width:0}.ntf-b b{display:block;color:var(--navy);font-size:13.5px}
.ntf-b span{display:block;font-size:13px;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ntf-b small{display:block;color:var(--mut);font-size:11.5px;margin-top:3px}
.ntf-x{flex:0 0 auto;background:none;border:0;font-size:20px;line-height:1;color:var(--mut);cursor:pointer;padding:0 2px}
.ntf-x:hover{color:var(--err)}
@keyframes ntfIn{from{opacity:0;transform:translateX(30px)}to{opacity:1;transform:none}}
@media print{#ntfWrap{display:none!important}}
