/* ============================================================
   SEUIL - heroic-fantasy cyberpunk (magie & machine)
   ============================================================ */
:root{
  --bg:#09070f; --bg2:#0f0b1a; --card:#150f24; --card2:#1c1533;
  --border:#2a2140; --border2:#3a2f5c;
  --txt:#ece8ff; --muted:#9a90bd; --dim:#6a6090;
  --arc:#b98cff;   /* arcane purple */
  --cyber:#4ff0ff; /* cyber cyan */
  --gold:#ffcf5c; --mag:#ff5cc8;
  --ok:#7ee787; --warn:#ffb454; --bad:#ff6b8a;
  --machine:#9db4d0; --magie:#c79bff;
  --r:14px; --r2:10px;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  background:
    radial-gradient(900px 500px at 15% -10%, #2a1350 0%, transparent 55%),
    radial-gradient(900px 500px at 90% 0%, #0a2f43 0%, transparent 50%),
    var(--bg) fixed;
  color:var(--txt);font-family:"Segoe UI",system-ui,-apple-system,Roboto,Arial,sans-serif;
  font-size:15px;line-height:1.5;min-height:100vh;
}
a{color:var(--cyber);text-decoration:none}
h1,h2,h3{margin:0 0 .5em}
.loading{padding:80px;text-align:center;color:var(--muted)}
.muted{color:var(--muted)} .dim{color:var(--dim)} .small{font-size:12px}
.tabular{font-variant-numeric:tabular-nums}

/* Boutons */
.btn{display:inline-block;background:linear-gradient(135deg,var(--arc),#7d5cff);color:#fff;border:none;
  padding:10px 16px;border-radius:var(--r2);font-weight:700;font-size:14px;cursor:pointer;transition:.12s;
  box-shadow:0 0 0 rgba(185,140,255,0);}
.btn:hover{filter:brightness(1.1);box-shadow:0 0 16px rgba(185,140,255,.4)}
.btn:disabled{background:#241d38;color:var(--dim);cursor:not-allowed;box-shadow:none}
.btn.sm{padding:6px 11px;font-size:13px}
.btn.wide{width:100%}
.btn.ghost{background:transparent;border:1px solid var(--border2);color:var(--txt)}
.btn.ghost:hover{border-color:var(--cyber);color:var(--cyber);box-shadow:0 0 12px rgba(79,240,255,.25)}
.btn.cyber{background:linear-gradient(135deg,var(--cyber),#3aa8ff);color:#04121a}
.btn.gold{background:linear-gradient(135deg,var(--gold),#f0a93a);color:#241800}
.btn.danger{background:#3a1626;color:var(--bad);border:1px solid #5a2238}

/* Auth */
.auth-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}
.auth-card{background:var(--card);border:1px solid var(--border);border-radius:var(--r);padding:30px;width:100%;max-width:400px;
  box-shadow:0 0 40px rgba(125,92,255,.15)}
.logo{font-size:30px;font-weight:900;letter-spacing:8px;text-align:center;
  background:linear-gradient(90deg,var(--arc),var(--cyber));-webkit-background-clip:text;background-clip:text;color:transparent}
.tagline{text-align:center;color:var(--muted);font-size:13px;margin:4px 0 22px}
.tabs{display:flex;gap:6px;margin-bottom:16px;background:var(--bg2);padding:4px;border-radius:var(--r2)}
.tabs button{flex:1;background:none;border:none;color:var(--muted);padding:9px;border-radius:7px;cursor:pointer;font-weight:700;font-size:14px}
.tabs button.on{background:linear-gradient(135deg,var(--arc),#7d5cff);color:#fff}
label{display:block;font-size:13px;color:var(--muted);margin:12px 0 5px}
input[type=text],input[type=email],input[type=password],input[type=number],select{
  width:100%;background:var(--bg2);border:1px solid var(--border);border-radius:var(--r2);color:var(--txt);padding:11px 12px;font-size:14px;font-family:inherit}
input:focus,select:focus{outline:none;border-color:var(--arc)}
.okmsg{color:var(--ok)} .errmsg{color:var(--bad)}
.msg{margin:14px 0 0;font-size:13px;min-height:18px}

/* Topbar */
.topbar{position:sticky;top:0;z-index:20;background:rgba(9,7,15,.92);backdrop-filter:blur(8px);
  border-bottom:1px solid var(--border);padding:9px 16px;display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.brand{font-weight:900;letter-spacing:4px;background:linear-gradient(90deg,var(--arc),var(--cyber));
  -webkit-background-clip:text;background-clip:text;color:transparent}
.cityname{color:var(--muted);font-size:13px}
.lvpill{font-size:11px;padding:2px 9px;border-radius:20px;border:1px solid var(--arc);color:var(--arc)}
.resbar{display:flex;gap:9px;flex-wrap:wrap;margin-left:auto;align-items:center}
.res{display:flex;align-items:center;gap:6px;background:var(--card);border:1px solid var(--border);padding:5px 10px;border-radius:20px;font-size:13px;font-variant-numeric:tabular-nums}
.res .ic{width:20px;height:20px;border-radius:6px;color:#04121a;font-size:9px;font-weight:800;display:flex;align-items:center;justify-content:center}
.res .rate{color:var(--dim);font-size:11px}

/* Nav */
.nav{display:flex;gap:4px;padding:9px 16px;flex-wrap:wrap;border-bottom:1px solid var(--border);background:var(--bg2)}
.nav button{background:none;border:1px solid transparent;color:var(--muted);padding:8px 15px;border-radius:var(--r2);cursor:pointer;font-weight:700;font-size:14px}
.nav button.on{background:var(--card2);color:var(--txt);border-color:var(--border2)}
.nav button:hover{color:var(--txt)}

.wrap{max-width:1040px;margin:0 auto;padding:18px 16px 70px}
.grid{display:grid;gap:14px}
.cols2{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}
.cols3{grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}
.card{background:var(--card);border:1px solid var(--border);border-radius:var(--r);padding:16px}
.card h3{font-size:15px}
.sub{color:var(--muted);font-size:12px;margin:-2px 0 10px}
.section-title{font-size:13px;text-transform:uppercase;letter-spacing:2px;color:var(--dim);margin:20px 0 10px}
.spread{display:flex;justify-content:space-between;align-items:center;gap:10px}
.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.pill{font-size:11px;padding:2px 8px;border-radius:20px;background:var(--card2);color:var(--muted);border:1px solid var(--border)}
.tag{font-weight:800;font-size:11px;padding:1px 7px;border-radius:6px}
.t-machine{color:var(--machine);border:1px solid var(--machine)}
.t-magie{color:var(--magie);border:1px solid var(--magie)}
.t-mixte{color:var(--gold);border:1px solid var(--gold)}
.bar{height:8px;background:var(--bg2);border-radius:6px;overflow:hidden;border:1px solid var(--border)}
.bar>i{display:block;height:100%;background:linear-gradient(90deg,var(--arc),var(--cyber))}

/* City view */
.cityview{position:relative;width:100%;height:340px;border-radius:var(--r);overflow:hidden;border:1px solid var(--border2);
  background:linear-gradient(180deg,#170f2e 0%,#0c1830 60%,#081016 100%)}
.cityview svg{width:100%;height:100%;display:block}

/* Map */
.mapwrap{position:relative;width:100%;height:460px;border-radius:var(--r);overflow:hidden;border:1px solid var(--border2);
  background:radial-gradient(circle at 50% 50%, #1a1236 0%, #0a0714 70%)}
.mapwrap svg{width:100%;height:100%;display:block;touch-action:none}
.tile{cursor:pointer;transition:.1s}
.tile:hover{filter:brightness(1.25)}
.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--muted);margin-top:8px}
.legend b{display:inline-block;width:11px;height:11px;border-radius:3px;margin-right:5px;vertical-align:middle}

/* buildings/units cards */
.item{background:var(--card2);border:1px solid var(--border);border-radius:var(--r2);padding:13px}
.item .name{font-weight:700}
.item .stats{display:flex;gap:12px;font-size:12px;color:var(--muted);margin-top:6px;flex-wrap:wrap}
.item .stats b{color:var(--txt)}
.qty-big{font-size:22px;font-weight:800;color:var(--cyber)}

/* market */
table.mkt{width:100%;border-collapse:collapse;font-size:13px}
table.mkt th{text-align:left;color:var(--dim);font-weight:600;padding:7px 8px;border-bottom:1px solid var(--border);font-size:11px;text-transform:uppercase;letter-spacing:1px}
table.mkt td{padding:8px;border-bottom:1px solid var(--border)}
table.mkt tr:hover td{background:var(--card2)}
.pricechip{display:flex;align-items:center;gap:6px;background:var(--card2);border:1px solid var(--border);border-radius:10px;padding:6px 10px;font-size:13px}
.rank{width:22px;color:var(--gold);font-weight:800}

/* modal / toast */
.modal-bg{position:fixed;inset:0;background:rgba(4,3,10,.75);z-index:40;display:flex;align-items:center;justify-content:center;padding:16px}
.modal{background:var(--card);border:1px solid var(--border2);border-radius:var(--r);padding:22px;max-width:460px;width:100%;box-shadow:0 0 50px rgba(125,92,255,.2)}
.toast-wrap{position:fixed;right:16px;bottom:16px;z-index:50;display:flex;flex-direction:column;gap:8px;max-width:340px}
.toast{background:var(--card2);border:1px solid var(--border2);border-left:3px solid var(--arc);border-radius:var(--r2);padding:11px 13px;font-size:13px;box-shadow:0 8px 30px rgba(0,0,0,.5);animation:sl .2s ease}
.toast.ok{border-left-color:var(--ok)} .toast.bad{border-left-color:var(--bad)} .toast.win{border-left-color:var(--gold)}
@keyframes sl{from{transform:translateX(20px);opacity:0}to{transform:none;opacity:1}}
.footer{text-align:center;color:var(--dim);font-size:12px;padding:26px 0}
@media(max-width:560px){.resbar{width:100%;margin-left:0}.cityview{height:240px}.mapwrap{height:380px}}
