:root {
  --navy-950:#061321; --navy-900:#081a2d; --navy-850:#0b2036; --navy-800:#102a46;
  --ink:#17243a; --muted:#6b7890; --line:#e4e9f0; --surface:#fff; --canvas:#f3f6f9;
  --teal:#0ba68b; --teal-dark:#087d6b; --teal-soft:#e9f8f5; --blue:#3978e8; --blue-soft:#edf3ff;
  --amber:#d9910b; --amber-soft:#fff6df; --red:#d94452; --red-soft:#fff0f1;
  --shadow:0 10px 35px rgba(20,40,70,.08); --radius:16px;
}
*{box-sizing:border-box} body{margin:0;font-family:Inter,"Segoe UI",Arial,sans-serif;background:var(--canvas);color:var(--ink);font-size:14px}
button,input,select{font:inherit} button{cursor:pointer}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
.login-backdrop{position:fixed;inset:0;z-index:200;background:radial-gradient(circle at 50% 15%,#143b5f 0,#081a2d 45%,#04101c 100%);display:grid;place-items:center;padding:20px}.login-card{width:min(410px,100%);background:#fff;border-radius:22px;padding:34px;box-shadow:0 35px 100px rgba(0,0,0,.42);text-align:center}.login-mark{width:62px;height:62px;border-radius:18px;background:linear-gradient(135deg,#13bda2,#078a75);display:grid;place-items:center;margin:0 auto 20px;box-shadow:0 12px 28px rgba(9,170,141,.28)}.login-mark svg{width:35px;fill:#fff}.login-card h1{margin:5px 0 8px;font-size:25px}.login-copy{color:var(--muted);font-size:12px;line-height:1.55;margin:0 0 22px}.login-card .field{text-align:left}.login-card input{text-align:center;font-size:22px;font-weight:800;letter-spacing:8px;height:50px}.login-card>small{display:block;color:#9aa5b3;font-size:10px;margin-top:18px}.login-error{min-height:17px;color:var(--red);font-size:11px;font-weight:700;margin:0 0 8px}
.app-shell{min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:250px;background:linear-gradient(180deg,var(--navy-900),var(--navy-950));color:white;padding:25px 18px;display:flex;flex-direction:column;z-index:20;box-shadow:8px 0 35px rgba(5,20,38,.14)}
.brand{display:flex;align-items:center;gap:12px;padding:0 9px 27px;border-bottom:1px solid rgba(255,255,255,.1)}.brand-mark{width:42px;height:42px;border-radius:12px;background:linear-gradient(135deg,#13bda2,#078a75);display:grid;place-items:center;box-shadow:0 8px 20px rgba(9,170,141,.25)}.brand-mark svg{width:25px;fill:white}.brand strong{display:block;font-size:20px;letter-spacing:-.4px}.brand span{display:block;color:#8ea2b9;font-size:11px;margin-top:3px}
.nav{display:grid;gap:7px;margin-top:27px}.nav-item{border:0;background:transparent;color:#9eb0c4;border-radius:11px;padding:12px 13px;display:flex;align-items:center;gap:12px;text-align:left;font-weight:600;transition:.2s}.nav-item:hover{background:rgba(255,255,255,.06);color:#fff}.nav-item.active{color:#fff;background:linear-gradient(90deg,rgba(17,182,154,.23),rgba(17,182,154,.08));box-shadow:inset 3px 0 #16b99c}.nav-icon{font-size:20px;width:22px;text-align:center}.nav-badge{margin-left:auto;background:var(--red);color:#fff;border-radius:10px;min-width:21px;height:21px;display:grid;place-items:center;font-size:11px}.sidebar-foot{margin-top:auto;padding:18px 9px 0;border-top:1px solid rgba(255,255,255,.1)}.secure-note{display:flex;align-items:center;gap:9px}.secure-dot{width:9px;height:9px;background:#19c6a6;border-radius:50%;box-shadow:0 0 0 4px rgba(25,198,166,.12)}.secure-note strong,.secure-note small{display:block}.secure-note strong{font-size:12px}.secure-note small{color:#8298ae;margin-top:3px;font-size:10px}.version{display:block;color:#60788e;font-size:10px;margin-top:18px}
.main{margin-left:250px;min-width:0}.topbar{height:92px;background:#fff;border-bottom:1px solid var(--line);padding:0 30px;display:flex;align-items:center;gap:15px;position:sticky;top:0;z-index:10}.topbar h1{font-size:24px;line-height:1.15;margin:3px 0 0;letter-spacing:-.45px}.eyebrow{margin:0;color:var(--teal-dark);font-weight:800;font-size:10px;letter-spacing:1.4px}.topbar-actions{margin-left:auto;display:flex;align-items:center;gap:10px}.refresh-pill,.wolvox-pill{display:flex;align-items:center;gap:9px;padding-right:14px;margin-right:5px;border-right:1px solid var(--line)}.refresh-pill small,.refresh-pill strong,.wolvox-pill small,.wolvox-pill strong{display:block}.refresh-pill small,.wolvox-pill small{font-size:9px;color:var(--muted);text-transform:uppercase;letter-spacing:.55px}.refresh-pill strong,.wolvox-pill strong{font-size:11px;margin-top:3px}.connection-dot,.pulse-dot{width:8px;height:8px;border-radius:50%;background:var(--teal);box-shadow:0 0 0 4px var(--teal-soft)}.wolvox-pill.connecting .connection-dot{background:var(--amber);box-shadow:0 0 0 4px var(--amber-soft);animation:pulse 1.2s infinite}.wolvox-pill.error .connection-dot{background:var(--red);box-shadow:0 0 0 4px var(--red-soft)}.pulse-dot.off{background:#98a4b5;box-shadow:0 0 0 4px #eef1f5}.icon-button,.secondary-button,.primary-button,.danger-button{border-radius:10px;min-height:40px;border:1px solid transparent;font-weight:700;display:inline-flex;align-items:center;justify-content:center;gap:7px;transition:.18s}.icon-button{width:40px;background:#fff;border-color:var(--line);font-size:18px;color:#516077}.secondary-button{padding:0 14px;background:#fff;color:#42516a;border-color:#dce2ea}.primary-button{padding:0 17px;background:linear-gradient(135deg,#0eac90,#078b76);color:#fff;box-shadow:0 6px 16px rgba(9,159,133,.2)}.primary-button:disabled{opacity:.55;cursor:not-allowed;transform:none;box-shadow:none}.danger-button{padding:0 15px;background:var(--red);color:#fff}.icon-button:hover,.secondary-button:hover{border-color:#b8c4d2;background:#f8fafc}.primary-button:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 8px 20px rgba(9,159,133,.28)}.danger-button:hover{background:#c63341}.menu-button{display:none}@keyframes pulse{50%{opacity:.45}}
.content{padding:26px 30px 42px;max-width:1600px;margin:0 auto}.notice{background:linear-gradient(90deg,#fff8e8,#fffdf8);border:1px solid #f1d99d;border-radius:13px;padding:13px 16px;display:flex;align-items:center;gap:12px;margin-bottom:20px}.notice-icon{width:32px;height:32px;display:grid;place-items:center;border-radius:50%;background:var(--amber);color:#fff;font-weight:900}.notice strong{font-size:13px}.notice p{margin:3px 0 0;color:#856721;font-size:12px}.notice button{margin-left:auto;background:transparent;border:0;color:#9d6800;font-weight:800}
.stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:22px}.stat-card{background:#fff;border:1px solid #e4eaf1;border-radius:var(--radius);padding:20px;display:flex;align-items:center;gap:15px;box-shadow:0 5px 20px rgba(25,45,75,.04);position:relative;overflow:hidden}.stat-card:after{content:"";position:absolute;inset:auto 0 0;height:3px;background:var(--card-accent)}.stat-icon{width:47px;height:47px;display:grid;place-items:center;border-radius:14px;background:var(--card-soft);color:var(--card-accent);font-size:22px;font-weight:800}.stat-card span,.stat-card strong,.stat-card small{display:block}.stat-card span{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);font-weight:700}.stat-card strong{font-size:25px;margin:3px 0 1px;letter-spacing:-.5px}.stat-card small{color:#9aa5b3;font-size:10px}.stat-total{--card-accent:var(--blue);--card-soft:var(--blue-soft)}.stat-stock{--card-accent:var(--teal);--card-soft:var(--teal-soft)}.stat-warning{--card-accent:var(--amber);--card-soft:var(--amber-soft)}.stat-danger{--card-accent:var(--red);--card-soft:var(--red-soft)}
.panel{background:#fff;border:1px solid #e1e7ef;border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.panel-header{padding:19px 21px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:20px}.panel-header h2{font-size:16px;margin:0}.panel-header p{font-size:11px;color:var(--muted);margin:5px 0 0}.panel-actions{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:8px;max-width:1050px}.search-box{height:40px;border:1px solid #dce3eb;border-radius:10px;display:flex;align-items:center;gap:8px;padding:0 12px;color:#7c899a;background:#f9fbfc}.search-box:focus-within{border-color:var(--teal);box-shadow:0 0 0 3px var(--teal-soft)}.search-box input{border:0;outline:0;background:transparent;width:190px;color:var(--ink)}select{height:40px;border:1px solid #dce3eb;border-radius:10px;padding:0 30px 0 11px;background:#fff;color:#506078;outline:none}.group-button{height:40px;border:1px solid #dce3eb;border-radius:10px;padding:0 12px;background:#fff;color:#526177;font-weight:700;display:inline-flex;align-items:center;gap:7px}.group-button:hover{border-color:#9fb2c7}.group-button.active{background:var(--teal-soft);border-color:#9edfd3;color:var(--teal-dark)}.table-wrap{overflow-x:auto;min-height:310px}table{width:100%;border-collapse:collapse;white-space:nowrap}th{font-size:10px;text-transform:uppercase;letter-spacing:.65px;text-align:left;color:#8090a3;background:#f8fafc;border-bottom:1px solid var(--line);padding:12px 18px}td{padding:14px 18px;border-bottom:1px solid #edf0f4;font-size:12px}tbody tr{transition:.15s}tbody tr:hover{background:#fbfdfd}.supplier-group-row:hover{background:transparent}.supplier-group-row td{padding:10px 18px;background:linear-gradient(90deg,#edf9f7,#f8fcfb);border-top:1px solid #cfece6;border-bottom:1px solid #dcefe9;color:var(--teal-dark);font-weight:800;letter-spacing:.15px}.supplier-group-content{display:flex;align-items:center;justify-content:space-between;gap:14px}.supplier-group-title{display:flex;align-items:center;gap:9px}.supplier-group-icon{width:27px;height:27px;border-radius:8px;background:#fff;display:grid;place-items:center;box-shadow:0 2px 8px rgba(7,125,107,.09)}.supplier-group-meta{font-size:10px;color:#67877f;font-weight:700}.product-cell{display:flex;align-items:center;gap:11px}.product-avatar{width:35px;height:35px;border-radius:10px;background:linear-gradient(135deg,#e9f7f4,#d8f2ed);color:var(--teal-dark);display:grid;place-items:center;font-weight:900}.product-cell strong{display:block;font-size:12px}.product-cell small{display:block;color:#9aa5b3;font-size:9px;margin-top:3px}.supplier{color:#536177}.stock-value{font-weight:800}.stock-value.low{color:var(--red)}.series-cell{min-width:255px;max-width:390px;white-space:normal}.series-list{display:flex;flex-wrap:wrap;gap:5px}.series-chip{display:inline-flex;align-items:center;gap:5px;padding:5px 7px;border:1px solid #cfe8e2;border-radius:8px;background:#f0faf8;color:#47655f;font-size:9px}.series-chip b{color:var(--teal-dark);font-size:10px}.series-chip small{padding-left:5px;border-left:1px solid #cfe0dc;color:#788b87}.series-more{margin-top:5px}.series-more summary{cursor:pointer;color:var(--teal-dark);font-size:9px;font-weight:800}.series-more[open] summary{margin-bottom:6px}.no-series{color:#9aa5b3;font-size:10px;font-style:italic}.status-badge{display:inline-flex;align-items:center;gap:6px;padding:5px 9px;border-radius:20px;font-size:10px;font-weight:800}.status-badge:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.status-ok{color:#09836f;background:#e8f8f4}.status-soon{color:#a66b00;background:#fff4dc}.status-urgent,.status-expired{color:#c53543;background:#ffedef}.status-unknown{color:#6c7889;background:#eef1f5}.source-badge{display:inline-flex;align-items:center;padding:5px 8px;border-radius:7px;background:#edf3ff;color:#3978e8;font-size:9px;font-weight:800}.row-actions{display:flex;justify-content:flex-end;gap:4px}.row-action{width:31px;height:31px;border:0;border-radius:8px;background:transparent;color:#6f7e91;font-size:14px}.row-action:hover{background:#eef3f6;color:var(--teal-dark)}.row-action.delete:hover{background:var(--red-soft);color:var(--red)}.table-footer{padding:13px 18px;color:#8190a3;font-size:10px;display:flex;justify-content:space-between;background:#fbfcfd}.empty-state{text-align:center;padding:54px 20px}.empty-icon{width:58px;height:58px;border-radius:18px;background:var(--teal-soft);color:var(--teal);display:grid;place-items:center;margin:0 auto;font-size:27px}.empty-state h3{margin:13px 0 5px}.empty-state p{margin:0 0 18px;color:var(--muted)}
.settings-panel{padding-bottom:22px}.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;padding:20px}.setting-card{border:1px solid var(--line);border-radius:14px;padding:20px}.visibility-card{grid-column:1/-1}.visibility-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin:15px 0}.visibility-grid .switch-row{margin:0;font-size:11px;padding:10px}.locked-setting{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:12px 14px;border:1px solid #b9d9f7;border-radius:10px;background:#eff7ff;color:#285d8e;font-size:11px}.locked-setting span{font-size:10px}.setting-copy{display:flex;gap:13px;margin-bottom:22px}.setting-icon{width:40px;height:40px;background:var(--teal-soft);color:var(--teal-dark);border-radius:11px;display:grid;place-items:center;font-size:20px;font-weight:800;flex:none}.setting-copy h3{margin:1px 0 4px;font-size:15px}.setting-copy p{margin:0;color:var(--muted);font-size:11px;line-height:1.5}.switch-row{display:flex;align-items:center;justify-content:space-between;border:1px solid var(--line);padding:13px;border-radius:10px;font-weight:600;margin-bottom:15px}.switch-row input{display:none}.switch-row i{width:42px;height:23px;border-radius:20px;background:#ccd4dd;position:relative;transition:.2s;flex:none}.switch-row i:after{content:"";position:absolute;width:17px;height:17px;background:#fff;border-radius:50%;top:3px;left:3px;box-shadow:0 2px 5px rgba(0,0,0,.18);transition:.2s}.switch-row input:checked+i{background:var(--teal)}.switch-row input:checked+i:after{left:22px}.field{display:grid;gap:7px;margin-bottom:15px}.field>span{font-size:11px;font-weight:700;color:#536177}.field input{height:42px;border:1px solid #d9e0e8;border-radius:9px;padding:0 12px;outline:none;color:var(--ink);width:100%}.field input:focus{border-color:var(--teal);box-shadow:0 0 0 3px var(--teal-soft)}.field small{font-size:9px;color:#929eac}.number-field{display:flex;border:1px solid #d9e0e8;border-radius:9px;overflow:hidden}.number-field input{border:0}.number-field span{display:flex;align-items:center;padding:0 12px;background:#f5f7fa;border-left:1px solid var(--line);color:var(--muted);font-size:11px}.data-actions{display:grid;gap:10px}.wide{width:100%}.file-button{position:relative}.file-button input{position:absolute;inset:0;opacity:0;cursor:pointer}.danger-zone{margin-top:22px;padding-top:18px;border-top:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:12px}.danger-zone strong{font-size:12px}.danger-zone p{font-size:10px;color:var(--muted);margin:4px 0 0}
.modal-backdrop,.confirm-backdrop{position:fixed;inset:0;background:rgba(3,14,26,.66);backdrop-filter:blur(4px);display:grid;place-items:center;z-index:50;padding:20px}.modal{background:#fff;border-radius:18px;width:min(520px,100%);box-shadow:0 30px 80px rgba(0,0,0,.25);overflow:hidden;animation:modalIn .2s ease}.modal header{display:flex;align-items:center;justify-content:space-between;padding:20px 23px;border-bottom:1px solid var(--line)}.modal h2{font-size:19px;margin:4px 0 0}.modal form{padding:22px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:13px}.modal-actions{display:flex;justify-content:flex-end;gap:9px;padding-top:5px}.confirm-card{background:#fff;border-radius:18px;padding:27px;text-align:center;width:min(390px,100%);box-shadow:0 30px 80px rgba(0,0,0,.25);animation:modalIn .2s ease}.confirm-icon{width:50px;height:50px;border-radius:50%;background:var(--red-soft);color:var(--red);display:grid;place-items:center;margin:0 auto;font-size:23px;font-weight:900}.confirm-card h2{font-size:18px;margin:14px 0 7px}.confirm-card p{color:var(--muted);line-height:1.5;font-size:12px;margin:0 0 20px}.confirm-card>div:last-child{display:flex;justify-content:center;gap:9px}.toast-region{position:fixed;right:24px;bottom:24px;z-index:100;display:grid;gap:9px}.toast{background:var(--navy-850);color:#fff;border-radius:11px;padding:13px 16px;box-shadow:0 12px 32px rgba(0,0,0,.22);min-width:270px;display:flex;align-items:center;gap:10px;animation:toastIn .22s ease}.toast.success:before{content:"✓";color:#2ad5b5;font-weight:900}.toast.error:before{content:"!";color:#ff8390;font-weight:900}@keyframes modalIn{from{opacity:0;transform:translateY(10px) scale(.98)}}@keyframes toastIn{from{opacity:0;transform:translateX(12px)}}
[hidden]{display:none!important}.spin{animation:spin .6s linear}@keyframes spin{to{transform:rotate(360deg)}}
.hide-supplier .supplier,.hide-supplier .supplier-head{display:none!important}.hide-expiry .expiry-cell,.hide-expiry .expiry-head{display:none!important}.hide-stock .stock-cell,.hide-stock .stock-head,.hide-stock .stat-stock{display:none!important}.hide-series .series-cell,.hide-series .series-head{display:none!important}.hide-status .status-cell,.hide-status .status-head{display:none!important}
@media(max-width:1120px){.stat-grid{grid-template-columns:repeat(2,1fr)}.panel-header{align-items:flex-start}.panel-actions{flex-wrap:wrap;justify-content:flex-end}.settings-grid{grid-template-columns:1fr}.visibility-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:800px){.sidebar{transform:translateX(-100%);transition:.25s}.sidebar.open{transform:translateX(0)}.main{margin-left:0}.menu-button{display:inline-flex}.topbar{padding:0 16px;height:78px}.topbar h1{font-size:19px}.refresh-pill,.wolvox-pill{display:none}.desktop-label{display:none}.content{padding:18px 14px 35px}.panel-header{display:block}.panel-actions{margin-top:15px;justify-content:stretch}.search-box{flex:1}.search-box input{width:100%}.stat-grid{gap:10px}.stat-card{padding:14px}.stat-icon{width:40px;height:40px}.stat-card strong{font-size:21px}.topbar-actions .primary-button{padding:0 12px}.table-wrap{min-height:260px}}
@media(max-width:800px){.table-wrap{overflow:visible;padding:10px;background:#f5f8fa}.table-wrap table{white-space:normal}.table-wrap thead{display:none}.table-wrap tbody{display:block}.table-wrap tbody tr:not(.supplier-group-row){display:grid;grid-template-columns:minmax(0,1fr) auto;background:#fff;border:1px solid #e1e8ef;border-radius:13px;margin-bottom:10px;overflow:hidden;box-shadow:0 4px 14px rgba(20,40,70,.05)}.table-wrap tbody tr:not(.supplier-group-row)>td{border:0;padding:8px 12px}.product-column{grid-column:1;grid-row:1;padding-top:12px!important}.stock-cell{grid-column:2;grid-row:1;align-self:stretch;min-width:112px;text-align:right;background:var(--teal-soft);display:flex;flex-direction:column;justify-content:center}.stock-cell:before{content:"STOK MİKTARI";display:block;color:var(--teal-dark);font-size:8px;font-weight:900;letter-spacing:.55px;margin-bottom:4px}.stock-cell .stock-value{font-size:16px;color:var(--teal-dark)}.supplier{grid-column:1/-1;grid-row:2;padding-top:2px!important;color:#5d6c80}.supplier:before{content:"ALINAN FİRMA: ";font-size:8px;font-weight:900;color:#93a0af}.expiry-cell{grid-column:1;grid-row:3;padding-bottom:12px!important}.status-cell{grid-column:2;grid-row:3;text-align:right;padding-bottom:12px!important}.series-cell{grid-column:1/-1;grid-row:4;min-width:0;max-width:none;padding-top:10px!important;padding-bottom:12px!important;border-top:1px dashed #d9e6e3!important;background:#fbfefd}.series-cell:before{content:"SERİ / LOT DAĞILIMI";display:block;margin-bottom:7px;color:var(--teal-dark);font-size:8px;font-weight:900;letter-spacing:.55px}.series-chip{flex-wrap:wrap}.source-cell{display:none}.supplier-group-row{display:block;margin:14px 0 7px}.supplier-group-row td{display:block;width:100%;border-radius:10px}.supplier-group-meta{display:none}.product-cell{align-items:flex-start}.product-cell strong{font-size:13px;white-space:normal}.table-footer{gap:12px;flex-wrap:wrap}}
@media(max-width:560px){.stat-grid{grid-template-columns:1fr 1fr}.stat-card{display:block}.stat-icon{margin-bottom:10px}.panel-actions{display:grid;grid-template-columns:1fr 1fr}.search-box{grid-column:1/-1}.panel-actions select{width:100%;min-width:0}.group-button{width:100%}.notice{align-items:flex-start}.notice button{display:none}.form-row{grid-template-columns:1fr}.settings-grid{padding:12px}.setting-card{padding:15px}.visibility-grid{grid-template-columns:1fr}.locked-setting{display:block}.locked-setting span{display:block;margin-top:4px}.danger-zone{display:block}.danger-zone button{margin-top:12px}.topbar .primary-button{font-size:0;width:42px;padding:0}.topbar .primary-button span{font-size:18px}.toast-region{left:14px;right:14px;bottom:14px}.toast{min-width:0}}

/* Seri/lot miktarı ana bilgi olarak öne çıkarılır. */
.series-cell{max-width:430px}
.series-list{gap:6px}
.series-chip{align-items:stretch;gap:0;padding:0;overflow:hidden;border-color:#bfe3db;border-radius:9px;background:#f7fcfb}
.series-quantity{display:flex;align-items:center;padding:7px 9px;background:var(--teal);color:#fff;font-size:13px;font-weight:900;line-height:1.1;white-space:nowrap}
.series-details{display:flex;align-items:center;gap:5px;padding:6px 7px}
.backup-status{margin:12px 0;padding:10px 12px;border:1px solid #cfe8e2;border-radius:9px;background:#f0faf8;color:#35695f;font-size:10px;font-weight:700;line-height:1.5}
