/* style.css — The Artificer's Bench */
:root{
  --bg:#14110d;
  --bg2:#1c1812;
  --panel:#1f1a14;
  --panel2:#2a221a;
  --border:#3d3326;
  --border-lit:#5a4a32;
  --text:#e8dcc4;
  --muted:#9a8a6e;
  --brass:#c89b3c;
  --brass-d:#a07c2a;
  --copper:#b06a35;
  --steam:#6ec5d8;
  --parchment:#d9c9a3;
  --danger:#d9663a;
  --good:#7fc88a;
  --warn:#e6b84d;
  --shadow:0 10px 30px rgba(0,0,0,.45);
  --radius:14px;
  color-scheme:dark;
}
html[data-theme="light"]{
  --bg:#e7dfcd;
  --bg2:#ddd3bd;
  --panel:#f2ead6;
  --panel2:#e6dcc2;
  --border:#cdbd99;
  --border-lit:#a8926a;
  --text:#2c2418;
  --muted:#6a5c44;
  --brass:#a0782a;
  --brass-d:#7e5d1c;
  --copper:#9a5a2a;
  --steam:#3a93a8;
  --parchment:#5a4a30;
  --shadow:0 8px 24px rgba(60,45,20,.18);
  color-scheme:light;
}

*{box-sizing:border-box}
html,body{margin:0;padding:0;height:100%}
body{
  font-family:ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  background:
    radial-gradient(1200px 600px at 80% -10%, rgba(200,155,60,.06), transparent 60%),
    radial-gradient(900px 500px at 10% 110%, rgba(110,197,216,.05), transparent 60%),
    var(--bg);
  color:var(--text);
  overflow:hidden;
  touch-action:manipulation;
  -webkit-font-smoothing:antialiased;
}

#app{display:flex;flex-direction:column;height:100%;min-height:0}

/* Topbar */
.topbar{
  display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:10px 18px;border-bottom:1px solid var(--border);
  background:linear-gradient(180deg,var(--panel2),var(--panel));
  flex:0 0 auto;
}
.brand{display:flex;align-items:center;gap:12px}
.brand-mark{
  width:42px;height:42px;border-radius:10px;display:grid;place-items:center;
  font-size:24px;color:var(--brass);
  background:radial-gradient(circle at 30% 30%, #2a221a, #14110d);
  border:1px solid var(--border-lit);
  box-shadow:inset 0 0 12px rgba(200,155,60,.2);
  animation:spin 14s linear infinite;
}
@keyframes spin{to{transform:rotate(360deg)}}
.brand-text h1{font-size:17px;margin:0;letter-spacing:.5px;font-weight:700}
.brand-sub{font-size:11px;color:var(--muted);letter-spacing:2px;text-transform:uppercase}

.hud{display:flex;gap:8px;flex-wrap:wrap}
.hud-item{
  display:flex;flex-direction:column;align-items:center;min-width:62px;
  padding:6px 10px;border-radius:10px;background:var(--panel);border:1px solid var(--border);
}
.hud-label{font-size:9px;color:var(--muted);text-transform:uppercase;letter-spacing:1.5px}
.hud-val{font-size:15px;font-weight:700;color:var(--text);font-variant-numeric:tabular-nums}
.hud-item.clock .hud-val{color:var(--brass)}
.hud-item.clock .hud-val.urgent{color:var(--danger);animation:pulse 1s infinite}
@keyframes pulse{50%{opacity:.5}}

/* Layout */
.layout{
  flex:1 1 auto;display:grid;grid-template-columns:280px 1fr 300px;gap:12px;
  padding:12px;min-height:0;
}
.panel{display:flex;flex-direction:column;gap:12px;min-height:0;overflow:auto}
.panel-right{overflow:auto}
.card{
  background:linear-gradient(180deg,var(--panel),var(--panel2));
  border:1px solid var(--border);border-radius:var(--radius);padding:14px;
  box-shadow:var(--shadow);
}
.card-title{
  font-size:11px;margin:0 0 10px;color:var(--brass);text-transform:uppercase;letter-spacing:2px;
  display:flex;align-items:center;gap:8px;
}
.card-title::before{content:"";width:14px;height:2px;background:var(--brass);border-radius:2px}
.card-note{font-size:11px;color:var(--muted);margin:8px 0 0;line-height:1.4}

/* Blueprint */
.blueprint{display:flex;align-items:center;justify-content:space-between;padding:6px 2px}
.bp-node{
  width:12px;height:12px;border-radius:50%;border:1.5px solid var(--border-lit);
  background:var(--bg2);transition:.3s;
}
.bp-node.lit{background:var(--brass);border-color:var(--brass);box-shadow:0 0 8px var(--brass)}
.bp-link{flex:1;height:2px;background:var(--border);margin:0 2px;border-radius:2px;transition:.3s}
.bp-link.lit{background:var(--brass);box-shadow:0 0 6px var(--brass)}
.bp-progress{height:6px;border-radius:4px;background:var(--bg2);overflow:hidden;border:1px solid var(--border)}
.bp-fill{height:100%;width:0;background:linear-gradient(90deg,var(--copper),var(--brass));transition:width .4s}

/* Heat */
.heat-wrap{display:flex;align-items:center;gap:10px}
.heat-bar{
  flex:1;height:14px;border-radius:8px;background:var(--bg2);border:1px solid var(--border);
  position:relative;overflow:hidden;
}
.heat-fill{
  height:100%;width:20%;border-radius:8px;
  background:linear-gradient(90deg,#6ec5d8,#7fc88a,#e6b84d,#d9663a);
  transition:width .4s;
}
.heat-fill.cold{background:linear-gradient(90deg,#6ec5d8,#9fc7d8)}
.heat-fill.hot{background:linear-gradient(90deg,#e6b84d,#d9663a,#b53030)}
.heat-marker{position:absolute;top:-3px;width:2px;height:20px;background:var(--text);opacity:.5}
.heat-readout{font-weight:700;font-variant-numeric:tabular-nums;min-width:38px;text-align:right}
.heat-readout.warn{color:var(--danger)}
.heat-zones{display:flex;justify-content:space-between;font-size:9px;color:var(--muted);margin:6px 0 10px;text-transform:uppercase;letter-spacing:1px}
.btn{
  border:1px solid var(--border-lit);background:linear-gradient(180deg,var(--panel2),var(--panel));
  color:var(--text);border-radius:10px;padding:9px 12px;font-size:12px;font-weight:600;cursor:pointer;
  transition:.15s;letter-spacing:.3px;width:100%;
}
.btn:hover{border-color:var(--brass);color:var(--brass);transform:translateY(-1px)}
.btn:active{transform:translateY(0)}
.btn-vent{border-color:var(--steam);color:var(--steam)}
.btn-vent:hover{background:rgba(110,197,216,.1)}
.btn-primary{background:linear-gradient(180deg,var(--brass),var(--brass-d));color:#1a140a;border-color:var(--brass)}
.btn-primary:hover{color:#1a140a;filter:brightness(1.08)}

/* Tools */
.tools{display:flex;flex-direction:column;gap:8px}
.tool{
  display:grid;grid-template-columns:32px 1fr auto;grid-template-rows:auto auto;gap:2px 10px;
  align-items:center;text-align:left;
  border:1px solid var(--border);background:var(--panel);border-radius:12px;padding:10px;
  cursor:pointer;transition:.15s;color:var(--text);font-family:inherit;
}
.tool:hover{border-color:var(--brass);background:var(--panel2)}
.tool.active{border-color:var(--brass);box-shadow:0 0 0 2px rgba(200,155,60,.3) inset;background:var(--panel2)}
.tool.spent{opacity:.4;cursor:not-allowed}
.tool-glyph{grid-row:1/3;font-size:22px;text-align:center}
.tool-name{font-size:12px;font-weight:700}
.tool-desc{grid-column:2;font-size:10px;color:var(--muted)}
.tool-pips{grid-row:1/3;grid-column:3;display:flex;gap:3px;flex-wrap:wrap;max-width:40px;justify-content:flex-end}
.pip{width:7px;height:7px;border-radius:50%;background:var(--bg2);border:1px solid var(--border)}
.pip.on{background:var(--brass);border-color:var(--brass)}

/* Stage */
.stage{display:flex;flex-direction:column;gap:10px;min-height:0;align-items:stretch}
.stage-frame{
  position:relative;flex:1 1 auto;min-height:0;display:flex;align-items:center;justify-content:center;
  background:
    repeating-linear-gradient(0deg, rgba(200,155,60,.03) 0 1px, transparent 1px 28px),
    repeating-linear-gradient(90deg, rgba(200,155,60,.03) 0 1px, transparent 1px 28px),
    radial-gradient(circle at 50% 40%, rgba(200,155,60,.06), transparent 70%),
    var(--bg2);
  border:1px solid var(--border);border-radius:18px;padding:14px;box-shadow:var(--shadow);
}
.grid{
  display:grid;grid-template-columns:repeat(7,1fr);grid-template-rows:repeat(7,1fr);
  gap:6px;width:100%;aspect-ratio:1;max-height:100%;max-width:min(72vh,640px);
  touch-action:none;user-select:none;
}
.cell{
  position:relative;border-radius:10px;background:var(--bg);
  display:grid;place-items:center;cursor:pointer;
  transition:transform .12s, box-shadow .12s;
  border:1px solid rgba(255,255,255,.04);
}
.cell.empty{background:transparent;border:1px dashed rgba(200,155,60,.12)}
.tile{
  width:86%;height:86%;border-radius:8px;display:grid;place-items:center;
  background:
    radial-gradient(circle at 30% 25%, var(--mg), var(--mc) 70%);
  box-shadow:
    inset 0 2px 4px rgba(255,255,255,.35),
    inset 0 -3px 6px rgba(0,0,0,.4),
    0 2px 6px rgba(0,0,0,.35);
  border:1px solid rgba(0,0,0,.25);
  animation:pop .25s ease;
}
@keyframes pop{0%{transform:scale(.6);opacity:.3}100%{transform:scale(1);opacity:1}}
.glyph{
  font-size:clamp(14px,3.4vw,26px);color:rgba(20,14,8,.78);
  text-shadow:0 1px 0 rgba(255,255,255,.3);
  line-height:1;font-weight:700;
}
.cell:hover .tile{transform:translateY(-2px)}
.cell.selected{box-shadow:0 0 0 3px var(--brass), 0 0 16px rgba(200,155,60,.5);z-index:2}
.cell.selected .tile{transform:translateY(-2px) scale(1.03)}
.cell.tool-target{cursor:crosshair}
.cell.tool-target .tile{box-shadow:0 0 0 2px var(--steam), inset 0 2px 4px rgba(255,255,255,.35)}
.cell.corroded .tile{filter:saturate(.4) brightness(.7)}
.cell.corroded::after{
  content:"🦠";position:absolute;font-size:14px;top:2px;right:3px;opacity:.8;
}

.tool-hint{
  position:absolute;bottom:8px;left:50%;transform:translateX(-50%);
  background:rgba(20,14,8,.92);border:1px solid var(--brass);color:var(--parchment);
  padding:6px 14px;border-radius:20px;font-size:12px;white-space:nowrap;max-width:90%;
  overflow:hidden;text-overflow:ellipsis;box-shadow:var(--shadow);
  animation:fade .3s;
}
@keyframes fade{from{opacity:0;transform:translate(-50%,6px)}}

.objective-bar{
  display:flex;align-items:center;gap:12px;padding:8px 14px;
  background:var(--panel);border:1px solid var(--border);border-radius:12px;flex:0 0 auto;
}
.obj-text{font-size:12px;color:var(--text);white-space:nowrap}
.obj-progress{flex:1;height:6px;border-radius:4px;background:var(--bg2);overflow:hidden;border:1px solid var(--border)}
.obj-fill{height:100%;width:0;background:linear-gradient(90deg,var(--copper),var(--brass));transition:width .4s}

/* Mechanisms */
.mech-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px;max-height:240px;overflow:auto}
.mech{display:flex;gap:10px;align-items:flex-start;padding:8px;border-radius:10px;background:var(--bg2);border:1px solid var(--border)}
.mech-g{font-size:18px;line-height:1.2}
.mech-n{font-size:12px;font-weight:700;color:var(--brass)}
.mech-d{font-size:10px;color:var(--muted);line-height:1.35}
.mech-empty{color:var(--muted);font-size:11px;font-style:italic;list-style:none}

/* Lore */
.lore-era{font-size:13px;font-weight:700;color:var(--parchment)}
.lore-year{color:var(--muted);font-weight:400;margin-left:6px}
.lore-text{font-size:11px;color:var(--muted);line-height:1.5;margin:6px 0 10px;font-style:italic}
.lore-count{font-size:11px;color:var(--text)}
.lore-count b{color:var(--brass)}
.lore-log{margin-top:10px;display:flex;flex-direction:column;gap:4px;max-height:140px;overflow:auto}
.lore-entry{font-size:10px;color:var(--muted);display:flex;gap:6px;align-items:center}
.lore-seal{font-size:12px}

/* Modal */
.modal{
  position:fixed;inset:0;background:rgba(8,6,4,.7);backdrop-filter:blur(4px);
  display:grid;place-items:center;z-index:50;padding:20px;
}
.modal-card{
  max-width:420px;background:linear-gradient(180deg,var(--panel2),var(--panel));
  border:1px solid var(--border-lit);border-radius:18px;padding:24px;box-shadow:var(--shadow);
  text-align:center;
}
.modal-card h2{margin:0 0 10px;color:var(--brass);font-size:18px}
.modal-card p{margin:0 0 18px;color:var(--text);font-size:13px;line-height:1.5}
.modal-actions{display:flex;justify-content:center}

/* Scrollbars */
::-webkit-scrollbar{width:8px;height:8px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}
::-webkit-scrollbar-thumb:hover{background:var(--border-lit)}

/* Responsive */
@media (max-width:980px){
  .layout{grid-template-columns:1fr;grid-template-rows:auto 1fr auto;overflow:auto}
  .panel{overflow:visible}
  .stage{order:1}
  .panel-left{order:2}
  .panel-right{order:3}
  .grid{max-width:min(92vw,560px)}
}
@media (max-width:560px){
  .topbar{flex-wrap:wrap;gap:8px;padding:8px 12px}
  .brand-text h1{font-size:14px}
  .brand-sub{font-size:9px}
  .hud-item{min-width:50px;padding:4px 6px}
  .hud-val{font-size:13px}
  .layout{padding:8px;gap:8px}
  .card{padding:12px}
  .grid{gap:4px}
}
@media (max-height:680px) and (min-width:981px){
  .grid{max-width:min(60vh,560px)}
}
