:root{
  --bg:#0a100e; --panel:rgba(13,19,17,.94); --panel2:rgba(18,26,23,.92);
  --line:rgba(46,230,168,.16); --line2:rgba(46,230,168,.32);
  --tx:#e9f6f0; --dim:#8fb0a5; --ac:#2ee6a8; --ac2:#57f0bd;
  --warm:#ffb757; --danger:#ff6b6b; --r:18px;
  --dockH:132px;
}
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{height:100%;overflow:hidden;overscroll-behavior:none}
body{
  background:var(--bg); color:var(--tx);
  font-family:'Space Grotesk',system-ui,-apple-system,'Segoe UI',sans-serif;
  font-size:14px; user-select:none; -webkit-user-select:none;
  touch-action:manipulation;
}
#c{position:fixed;inset:0;width:100%;height:100%;display:block;touch-action:none}

/* ---------- Üst bar ---------- */
.topbar{
  position:fixed;top:0;left:0;right:0;z-index:20;
  display:flex;align-items:center;gap:8px;
  padding:calc(10px + env(safe-area-inset-top)) 12px 10px;
  pointer-events:none;
}
.topbar>*{pointer-events:auto}
.logo{
  font-weight:700;font-size:17px;letter-spacing:.4px;
  background:var(--panel);border:1px solid var(--line);
  padding:8px 12px;border-radius:14px;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  display:flex;align-items:baseline;gap:2px;
}
.logo b{color:var(--ac)}
.logo .beta{font-size:9px;color:var(--dim);font-weight:500;margin-left:5px;letter-spacing:1px}
.pill{
  background:var(--panel);border:1px solid var(--line);color:var(--dim);
  padding:8px 11px;border-radius:14px;font-size:12px;font-weight:600;
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;flex:1;
  text-align:center;cursor:pointer;
}
.pill b{color:var(--tx)}
.ibtn{
  width:40px;height:40px;flex:none;border-radius:13px;border:1px solid var(--line);
  background:var(--panel);color:var(--tx);font-size:17px;line-height:1;
  display:flex;align-items:center;justify-content:center;cursor:pointer;
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  transition:transform .12s ease, background .15s, border-color .15s, box-shadow .15s;
}
.ibtn:active{transform:scale(.9)}
.ibtn.on{background:rgba(46,230,168,.16);border-color:var(--line2);box-shadow:0 0 14px rgba(46,230,168,.25)}
#btnHeat.on{background:rgba(255,150,60,.16);border-color:rgba(255,183,87,.5);box-shadow:0 0 14px rgba(255,150,60,.3)}

/* ---------- Alt dock: kategoriler + palet ---------- */
.dock{
  position:fixed;left:0;right:0;bottom:0;z-index:20;
  padding:8px 0 calc(8px + env(safe-area-inset-bottom));
  background:linear-gradient(to top, rgba(7,11,10,.96) 65%, rgba(7,11,10,0));
}
.cats{display:flex;gap:6px;overflow-x:auto;padding:2px 12px 8px;scrollbar-width:none}
.cats::-webkit-scrollbar{display:none}
.cat{
  flex:none;padding:7px 14px;border-radius:999px;font-size:12.5px;font-weight:600;
  color:var(--dim);background:var(--panel2);border:1px solid var(--line);cursor:pointer;
  transition:all .15s;
}
.cat.on{color:#062b1e;background:var(--ac);border-color:var(--ac)}
.palette{display:flex;gap:8px;overflow-x:auto;padding:2px 12px 4px;scrollbar-width:none}
.palette::-webkit-scrollbar{display:none}
.pcard{
  flex:none;width:70px;height:74px;border-radius:15px;cursor:pointer;
  background:var(--panel2);border:1px solid var(--line);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;
  transition:transform .1s ease, border-color .15s;
}
.pcard:active{transform:scale(.92);border-color:var(--line2)}
.pcard .e{font-size:25px;line-height:1}
.pcard .n{font-size:9.5px;color:var(--dim);font-weight:600;text-align:center;padding:0 3px;line-height:1.15}

/* ---------- Seçim araç çubuğu ---------- */
.selbar{
  position:fixed;left:50%;transform:translateX(-50%) translateY(24px);
  bottom:calc(var(--dockH) + 10px + env(safe-area-inset-bottom));
  z-index:21;display:flex;gap:5px;padding:7px;border-radius:17px;
  background:var(--panel);border:1px solid var(--line2);
  backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
  opacity:0;pointer-events:none;transition:all .22s cubic-bezier(.3,1.4,.5,1);
  box-shadow:0 8px 30px rgba(0,0,0,.45);
}
.selbar.on{opacity:1;pointer-events:auto;transform:translateX(-50%) translateY(0)}
.selbar button{
  width:38px;height:38px;border-radius:12px;border:none;background:rgba(255,255,255,.05);
  color:var(--tx);font-size:16px;cursor:pointer;transition:transform .1s, background .12s;
  display:flex;align-items:center;justify-content:center;
}
.selbar button:active{transform:scale(.88);background:rgba(46,230,168,.2)}
.selbar button.dngr:active{background:rgba(255,107,107,.25)}

/* ---------- Bottom sheet'ler ---------- */
.bk{position:fixed;inset:0;background:rgba(3,6,5,.55);z-index:29;opacity:0;pointer-events:none;transition:opacity .22s}
.bk.on{opacity:1;pointer-events:auto}
.sheet{
  position:fixed;left:0;right:0;bottom:0;z-index:30;max-height:78vh;
  background:var(--panel);border:1px solid var(--line);border-bottom:none;
  border-radius:24px 24px 0 0;transform:translateY(105%);
  transition:transform .3s cubic-bezier(.3,1,.4,1);
  display:flex;flex-direction:column;
  backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);
}
.sheet.on{transform:translateY(0)}
.sheet-h{
  display:flex;align-items:center;justify-content:space-between;
  padding:15px 18px 11px;flex:none;
}
.sheet-h h2{font-size:16px;font-weight:700;letter-spacing:.3px}
.sheet-h h2 span{color:var(--ac)}
.sheet-x{
  width:31px;height:31px;border-radius:10px;border:1px solid var(--line);
  background:transparent;color:var(--dim);font-size:15px;cursor:pointer;
}
.sheet-b{overflow-y:auto;padding:2px 18px calc(20px + env(safe-area-inset-bottom));-webkit-overflow-scrolling:touch}
.grabber{width:38px;height:4px;border-radius:99px;background:rgba(255,255,255,.16);margin:9px auto 0;flex:none}

/* satırlar / kontroller */
.sec{font-size:11px;font-weight:700;letter-spacing:1.6px;color:var(--dim);text-transform:uppercase;margin:17px 0 9px}
.row{display:flex;align-items:center;gap:11px;margin-bottom:12px}
.row label{flex:none;width:86px;font-size:12.5px;color:var(--dim);font-weight:600}
.row .val{flex:none;width:56px;text-align:right;font-size:12.5px;font-weight:700;color:var(--ac)}
input[type=range]{
  flex:1;-webkit-appearance:none;appearance:none;height:5px;border-radius:99px;
  background:rgba(255,255,255,.1);outline:none;
}
input[type=range]::-webkit-slider-thumb{
  -webkit-appearance:none;width:22px;height:22px;border-radius:50%;
  background:var(--ac);border:3px solid #0a221a;box-shadow:0 0 0 1px var(--line2), 0 2px 8px rgba(0,0,0,.4);
}
input[type=range]::-moz-range-thumb{width:19px;height:19px;border-radius:50%;background:var(--ac);border:3px solid #0a221a}
.tgl-row{display:flex;align-items:center;justify-content:space-between;padding:9px 0}
.tgl-row span{font-size:13px;font-weight:600}
.sw{appearance:none;-webkit-appearance:none;width:46px;height:26px;border-radius:99px;background:rgba(255,255,255,.12);position:relative;cursor:pointer;transition:background .18s;flex:none}
.sw::after{content:'';position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#cfe3db;transition:transform .18s}
.sw:checked{background:var(--ac)}
.sw:checked::after{transform:translateX(20px);background:#06281c}
.chips{display:flex;gap:7px;flex-wrap:wrap}
.chip{
  padding:8px 13px;border-radius:11px;font-size:12px;font-weight:600;cursor:pointer;
  background:var(--panel2);border:1px solid var(--line);color:var(--dim);transition:all .13s;
}
.chip.on{background:rgba(46,230,168,.18);border-color:var(--line2);color:var(--ac2)}
.sw-colors{display:flex;gap:9px;align-items:center;flex-wrap:wrap}
.swc{width:33px;height:33px;border-radius:11px;border:2px solid rgba(255,255,255,.14);cursor:pointer;transition:transform .1s}
.swc.on{border-color:var(--ac);transform:scale(1.1)}
input[type=color]{width:33px;height:33px;border-radius:11px;border:2px dashed rgba(255,255,255,.25);background:transparent;cursor:pointer;padding:0}
.btn{
  width:100%;padding:12px;border-radius:14px;border:1px solid var(--line2);
  background:rgba(46,230,168,.13);color:var(--ac2);font-size:13.5px;font-weight:700;
  font-family:inherit;cursor:pointer;transition:transform .1s, background .13s;margin-top:4px;
}
.btn:active{transform:scale(.97);background:rgba(46,230,168,.24)}
.btn.ghost{background:transparent;color:var(--dim);border-color:rgba(255,255,255,.12)}
.btn.dngr{background:rgba(255,107,107,.1);border-color:rgba(255,107,107,.35);color:var(--danger)}
.btn.sm{padding:9px;font-size:12.5px;border-radius:12px}
.btnrow{display:flex;gap:9px}
.btnrow .btn{margin-top:0}

/* nesne listesi */
.ilist{display:flex;flex-direction:column;gap:6px}
.irow{
  display:flex;align-items:center;gap:9px;padding:9px 11px;border-radius:12px;
  background:var(--panel2);border:1px solid rgba(255,255,255,.06);cursor:pointer;
}
.irow .ie{font-size:18px}
.irow .in{flex:1;font-size:12.5px;font-weight:600}
.irow .ip{font-size:11px;font-weight:800;color:var(--ac);margin-right:2px;white-space:nowrap}
.irow .del{width:29px;height:29px;border-radius:9px;border:none;background:rgba(255,107,107,.12);color:var(--danger);font-size:13px;cursor:pointer}
.empty{color:var(--dim);font-size:12.5px;text-align:center;padding:14px 0}

/* tür kartları */
.sp-card{
  background:var(--panel2);border:1px solid rgba(255,255,255,.07);border-radius:17px;
  padding:13px 14px;margin-bottom:11px;
}
.sp-card.cur{border-color:var(--line2);box-shadow:0 0 0 1px var(--line2)}
.sp-top{display:flex;align-items:center;gap:11px;margin-bottom:8px}
.sp-e{font-size:29px}
.sp-n{font-size:14.5px;font-weight:700}
.sp-t{font-size:11px;color:var(--dim);font-weight:600;margin-top:2px}
.badge{margin-left:auto;flex:none;font-size:10.5px;font-weight:700;padding:5px 9px;border-radius:99px}
.badge.ok{background:rgba(46,230,168,.16);color:var(--ac2)}
.badge.no{background:rgba(255,107,107,.14);color:var(--danger)}
.sp-chips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:7px}
.sp-chips span{font-size:11px;font-weight:600;color:var(--dim);background:rgba(255,255,255,.05);padding:4px 9px;border-radius:8px}
.sp-d{font-size:12px;color:var(--dim);line-height:1.45;margin-bottom:9px}
.sp-warn{font-size:11.5px;color:var(--warm);margin-bottom:9px;line-height:1.4}

.pbox{background:var(--panel2);border:1px solid rgba(255,255,255,.07);border-radius:14px;padding:4px 13px;margin-bottom:6px}
.prow{display:flex;justify-content:space-between;align-items:center;padding:8px 0;font-size:12.5px;color:var(--dim);border-bottom:1px solid rgba(255,255,255,.05)}
.prow b{color:var(--tx);font-size:12.5px;font-weight:700}
.prow.tot{border-bottom:none}
.prow.tot span{color:var(--tx);font-weight:700}
.prow.tot b{color:var(--ac);font-size:15.5px}
.mgrid{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-bottom:4px}
.mchip{padding:12px 9px;border-radius:13px;background:var(--panel2);border:1px solid var(--line);color:var(--tx);font-size:12px;font-weight:600;cursor:pointer;text-align:left;line-height:1.35}
.mchip:active{transform:scale(.97)}
.hint{font-size:11px;color:var(--dim);margin:-2px 0 8px;line-height:1.45}
.jswarn{margin-top:12px;font-size:11.5px;color:#f0b04a;line-height:1.55;background:rgba(240,176,74,.08);border:1px solid rgba(240,176,74,.25);border-radius:11px;padding:9px 12px;text-align:left}
button{-webkit-tap-highlight-color:rgba(94,220,163,.18)}
.pcard{background:linear-gradient(180deg,rgba(255,255,255,.045),rgba(255,255,255,.015))}
.pcard .e{font-size:20px;filter:saturate(.82)}
.cat{filter:saturate(.85)}
/* toast */
#toast{
  position:fixed;left:50%;transform:translateX(-50%) translateY(-14px);
  top:calc(64px + env(safe-area-inset-top));z-index:50;
  background:var(--panel);border:1px solid var(--line2);color:var(--tx);
  padding:10px 17px;border-radius:99px;font-size:13px;font-weight:600;
  opacity:0;pointer-events:none;transition:all .25s cubic-bezier(.3,1.3,.5,1);
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  box-shadow:0 6px 24px rgba(0,0,0,.4);white-space:nowrap;max-width:88vw;overflow:hidden;text-overflow:ellipsis;
}
#toast.on{opacity:1;transform:translateX(-50%) translateY(0)}

/* karşılama */
#onb{
  position:fixed;inset:0;z-index:60;background:rgba(5,9,8,.72);
  display:flex;align-items:center;justify-content:center;padding:26px;
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  transition:opacity .3s;
}
#onb.off{opacity:0;pointer-events:none}
.onb-card{
  width:100%;max-width:360px;background:var(--panel);border:1px solid var(--line);
  border-radius:24px;padding:26px 24px;text-align:center;
}
.onb-card .big{font-size:42px;margin-bottom:8px}
.onb-card h1{font-size:23px;font-weight:700;margin-bottom:4px}
.onb-card h1 span{color:var(--ac)}
.onb-card .sub{font-size:12.5px;color:var(--dim);margin-bottom:19px;line-height:1.5}
.tip{display:flex;align-items:center;gap:12px;text-align:left;padding:9px 0;font-size:13px;color:var(--tx)}
.tip .te{font-size:19px;flex:none}
.tip small{display:block;color:var(--dim);font-size:11.5px;margin-top:1px}

/* hata */
#loadErr{
  position:fixed;inset:0;z-index:70;background:var(--bg);display:none;
  align-items:center;justify-content:center;padding:30px;text-align:center;
}
#loadErr .in{max-width:330px}
#loadErr h2{font-size:18px;margin:12px 0 8px}
#loadErr p{font-size:13px;color:var(--dim);line-height:1.5;word-break:break-word}
