:root{
  --ink:#2a241b;--muted:#6e6659;--paper:#efe3c6;--paper2:#e0d0ab;
  --wood:#34291f;--panel:rgba(247,239,218,.96);--line:rgba(67,48,29,.25);
  --ok:#397448;--bad:#9d4037;
  --c-IB:#b94336;--c-HB:#3477a8;--c-UL:#4e8b52;--c-GF:#76528e;--c-TT:#c8762d;--c-SO:#c6a12e;
  --shadow:0 14px 34px rgba(12,16,12,.28);
  --sat:env(safe-area-inset-top,0px);--sab:env(safe-area-inset-bottom,0px);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%}
body{
  font-family:Georgia,'Times New Roman',serif;color:var(--ink);
  background:linear-gradient(135deg,#171f17,#2e271e 55%,#171f17);
  overflow:hidden;
}
button{font:inherit;cursor:pointer}
.hidden{display:none!important}
#app{height:100dvh;min-height:100svh;display:flex;flex-direction:column}

/* ---------- screens ---------- */
.screen{display:none;flex:1;min-height:0;flex-direction:column}
.screen.active{display:flex}

/* ---------- buttons ---------- */
.btn{
  border:1px solid #9d8b68;border-radius:10px;padding:10px 16px;
  background:#f5ecd2;color:#3b3024;font-weight:700;font-family:inherit;
}
.btn:hover{background:#4a392b;color:#fff;border-color:#4a392b}
.btn.primary{background:#4b6849;color:#fff;border-color:#3c5a3b}
.btn.primary:hover{background:#5d7f5a}
.btn.primary:disabled{opacity:.45;cursor:default;background:#4b6849}
.btn.big{padding:14px 30px;font-size:18px;border-radius:13px}
.btn.small{padding:6px 12px;font-size:13px}
.btn.ghost{background:transparent;border-color:rgba(255,255,255,.25);color:#e8ddc2}
.btn.ghost:hover{background:rgba(255,255,255,.12);color:#fff}
.btn.wide{width:100%}
.pill{padding:5px 12px;border-radius:999px;font-size:12px;font-weight:700;background:rgba(157,64,55,.2);color:#e7b9b3}
.pill.ok{background:rgba(57,116,72,.25);color:#a9dcb4}

/* ---------- title ---------- */
#screen-title{align-items:center;justify-content:center;text-align:center;padding:20px;
  background:radial-gradient(circle at 50% 20%,rgba(129,152,96,.16),transparent 55%),linear-gradient(160deg,#141c14,#2e261c 60%,#141c14)}
.title-crest{width:min(210px,42vw);margin:0 auto 14px;border-radius:16px;overflow:hidden;box-shadow:var(--shadow);border:3px solid rgba(188,138,57,.55)}
.title-crest img{display:block;width:100%;height:auto}
#screen-title h1{margin:0;color:#f2e6c8;font-size:clamp(38px,8vw,68px);letter-spacing:.1em}
.subtitle{margin:4px 0 0;color:#c8b184;font-size:clamp(16px,3.4vw,24px);letter-spacing:.28em;text-transform:uppercase}
.tagline{margin:14px 0 26px;color:#9c9078;font-style:italic;font-size:14px}
.title-actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}

/* ---------- setup ---------- */
#screen-setup{padding:calc(62px + var(--sat)) 14px calc(10px + var(--sab));gap:10px;overflow:hidden}
.setup-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.setup-head h2{margin:0;color:#eee1c2;font-size:clamp(17px,3.6vw,26px)}
.setup-cols{flex:1;min-height:0;display:grid;grid-template-columns:1fr auto 1fr;gap:12px;align-items:stretch}
.vs-mark{align-self:center;color:#8a7c5c;font-size:30px}
.side-panel{background:var(--panel);border-radius:14px;box-shadow:var(--shadow);padding:12px;display:flex;flex-direction:column;gap:9px;min-height:0;overflow:auto}
.side-panel h3{margin:0;font-size:16px}
.src-tabs{display:grid;grid-template-columns:repeat(4,1fr);gap:5px}
.src-tabs button{border:0;border-radius:8px;padding:8px 4px;font-size:12px;font-weight:700;background:#e4d6b3;color:#4c3f2e}
.src-tabs button.active{background:#5c4732;color:#fff}
.src-body{display:flex;flex-direction:column;gap:8px}
.starter-list{display:grid;gap:6px}
.starter-item{display:flex;align-items:center;gap:9px;border:2px solid transparent;border-radius:10px;padding:7px 9px;background:rgba(255,255,255,.55);text-align:left;font-family:inherit}
.starter-item img{width:38px;height:38px;border-radius:8px;object-fit:cover}
.starter-item b{display:block;font-size:13px}
.starter-item small{color:#77694f;font-size:11px}
.starter-item.selected{border-color:var(--fc,#5c4732);background:#fff}
.src-note{font-size:12px;color:#77694f;font-family:Inter,system-ui,sans-serif}
.import-ta{width:100%;min-height:110px;border:1px solid #aa9a78;border-radius:9px;background:#fff9e9;padding:8px;font:12px/1.45 ui-monospace,Consolas,monospace;resize:vertical}
.deck-summary{font-family:Inter,system-ui,sans-serif;font-size:12px;color:#4c3f2e;background:rgba(66,49,29,.08);border-radius:9px;padding:8px 10px;min-height:34px}
.deck-summary b{font-size:13px}
.deck-summary .warn{color:var(--bad)}
.setup-foot{display:flex;justify-content:center}

/* ---------- builder ---------- */
#screen-builder{padding:calc(62px + var(--sat)) 12px calc(8px + var(--sab));gap:8px}
.builder-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.builder-head h2{margin:0;color:#eee1c2;font-size:clamp(15px,3vw,22px)}
.builder-body{flex:1;min-height:0;display:grid;grid-template-columns:290px minmax(0,1fr);gap:10px}
.builder-side{background:var(--panel);border-radius:13px;padding:10px;display:flex;flex-direction:column;gap:8px;overflow:auto;box-shadow:var(--shadow)}
.txt{width:100%;border:1px solid #aa9a78;background:#fff9e9;border-radius:9px;padding:8px 10px;font:14px Georgia,serif;color:#2c261d}
.b-meters{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.meter{background:rgba(255,255,255,.55);border-radius:9px;text-align:center;padding:6px 4px}
.meter b{display:block;font-size:16px}
.meter span{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:#706352;font-family:Inter,system-ui,sans-serif}
.meter.good b{color:var(--ok)}.meter.bad b{color:var(--bad)}
.b-hearts{display:grid;gap:5px}
.h-row{display:grid;grid-template-columns:1fr 28px 34px 28px;gap:4px;align-items:center;font-family:Inter,system-ui,sans-serif}
.h-row .h-name{font-size:12px;font-weight:700}
.h-row button{height:27px;border:1px solid #a89774;background:#fff7e3;border-radius:7px;font-weight:800}
.h-row output{text-align:center;font-weight:800;font-size:13px}
.b-issues{display:grid;gap:4px;font-family:Inter,system-ui,sans-serif}
.b-issues .issue{font-size:11px;padding:6px 8px;border-radius:7px;background:rgba(157,64,55,.1);color:#6f302c}
.b-issues .issue.ok{background:rgba(57,116,72,.12);color:#315e3c}
.b-list{flex:1;display:grid;gap:7px;align-content:start;font-family:Inter,system-ui,sans-serif}
.b-item{display:grid;grid-template-columns:24px 1fr auto;gap:6px;align-items:center;background:rgba(255,255,255,.55);border-radius:8px;padding:5px 7px;font-size:12px}
.b-item .q{font-weight:800}
.b-item .nm{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.b-item .ops{display:flex;gap:3px}
.b-item .ops button{width:23px;height:23px;border:0;border-radius:6px;background:#e2d3b1;font-weight:800}
.b-actions{display:flex;gap:6px;justify-content:space-between}
.builder-main{display:flex;flex-direction:column;gap:8px;min-height:0}
.b-filters{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.b-filters .txt{flex:1;min-width:140px}
.b-fchips{display:flex;gap:4px;flex-wrap:wrap}
.b-fchips button{width:36px;height:32px;border:1px solid rgba(255,255,255,.25);border-radius:8px;background:rgba(255,255,255,.1);font-size:15px}
.b-fchips button.active{background:var(--fc,#5c4732);border-color:transparent}
.b-grid{flex:1;overflow:auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:16px;align-content:start;padding-bottom:16px}
.b-card{--fc:#6f5a42;position:relative;background:#e8dcc0;border:1px solid color-mix(in srgb,var(--fc) 55%,#7a6547);border-radius:11px;overflow:hidden;display:flex;flex-direction:column;font-family:Inter,system-ui,sans-serif;aspect-ratio:204/338}
.b-card.in{box-shadow:0 0 0 3px var(--fc)}
.b-card .art{position:absolute;inset:0;width:100%;height:100%;background:#ddd0ae center/cover no-repeat}
.b-card .band{display:none}
.b-card .hd{display:none}
.b-card .nm{display:none}
.b-card .st{display:none}
.b-card .rl{display:none}
.b-card .qs{position:absolute;bottom:0;left:0;right:0;display:grid;grid-template-columns:repeat(4,1fr);gap:3px;padding:5px;background:linear-gradient(transparent,rgba(20,16,10,.72));z-index:2}
.b-card .qs button{height:28px;border:0;border-radius:6px;background:rgba(255,248,232,.78);font-size:11px;font-weight:800;color:#4a3825}
.b-card .qs button.active{background:var(--fc);color:#fff}

/* ---------- match ---------- */
#screen-match{position:relative}
.table{
  flex:1;min-height:0;display:flex;flex-direction:column;gap:4px;
  padding:calc(6px + var(--sat)) 8px calc(6px + var(--sab));
  background:#1e2a1c url('assets/playmat-heartwood-1.2.webp') center/cover no-repeat;
  touch-action:manipulation;user-select:none;-webkit-user-select:none;
}
.foe-strip,.you-strip{display:flex;align-items:center;gap:8px;min-height:0;
  width:100%;max-width:1080px;margin:0 auto}
.pstat{display:flex;flex-direction:column;gap:2px;background:rgba(20,17,12,.72);border:1px solid rgba(255,255,255,.14);border-radius:11px;padding:6px 10px;color:#efe3c4;min-width:104px}
.pstat .nm{font-size:12px;font-weight:700;white-space:nowrap;max-width:130px;overflow:hidden;text-overflow:ellipsis}
.pstat .hp{font-size:19px;font-weight:800}
.pstat .hp .heartglyph{font-size:14px}
.pstat .sub{font-size:10px;color:#b3a687;font-family:Inter,system-ui,sans-serif}
.pstat.active-glow{box-shadow:0 0 0 2px #bc8a39,0 0 18px rgba(188,138,57,.5)}
.foe-hand{flex:1;display:flex;justify-content:center;gap:2px;min-width:0;overflow:hidden}
.foe-hand .back{width:30px;aspect-ratio:204/338;border-radius:4px;background:url('assets/card-back-elder-heart-mandala-deck.webp') center/cover;border:1px solid rgba(0,0,0,.4);box-shadow:0 2px 5px rgba(0,0,0,.4);background-size:cover}
.pile-group{display:flex;gap:6px}
.pile{width:44px;aspect-ratio:204/338;border-radius:6px;background:url('assets/card-back-elder-heart-mandala-deck.webp') center/cover;border:1px solid rgba(0,0,0,.5);position:relative;color:#fff;font-family:Inter,system-ui,sans-serif;background-size:cover}
.pile.discard{background:rgba(0,0,0,.35);border:1px dashed rgba(255,255,255,.3)}
.pile .cnt{position:absolute;inset:auto 0 3px;text-align:center;font-size:12px;font-weight:800;text-shadow:0 1px 3px #000}
.pile.discard .cnt{inset:0;display:grid;place-items:center;font-size:13px}

.hearts-row{display:flex;gap:4px;justify-content:center;min-height:24px;flex-wrap:wrap;align-content:center}
.heart-chip{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font-size:14px;background:rgba(0,0,0,.35);border:1px solid rgba(255,255,255,.22);transition:.15s}
.heart-chip.patted{opacity:.32;transform:scale(.86)}

.marshal-unit .summon-btn{position:absolute;bottom:6px;left:50%;transform:translateX(-50%);z-index:4;font-size:9px;padding:3px 8px;white-space:nowrap;pointer-events:auto}
.marshal-unit .marshal-status{position:absolute;bottom:6px;left:50%;transform:translateX(-50%);z-index:3;font-size:9px;color:#e8dcc0;background:rgba(0,0,0,.55);padding:2px 6px;border-radius:6px;white-space:nowrap}
.marshal-unit.dormant{filter:grayscale(.55) brightness(.75)}
.marshal-choice-list{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}
.marshal-choice-item{display:flex;flex-direction:column;align-items:center;gap:6px;border:2px solid transparent;border-radius:12px;padding:8px;background:rgba(255,255,255,.12);cursor:pointer;transition:.15s}
.marshal-choice-item:hover{background:rgba(255,255,255,.22)}
.marshal-choice-item img{width:100%;aspect-ratio:204/338;object-fit:cover;border-radius:8px;border:2px solid var(--fc)}
.marshal-choice-item b{font-size:13px;color:#eee1c2}
.marshal-choice-item small{font-size:11px;color:#c6b896;text-transform:capitalize}

.battlefield{flex:1;min-height:0;display:flex;justify-content:center;align-items:center;gap:clamp(10px,2vw,26px);padding:4px}
.slot{width:clamp(104px,13vw,148px);max-height:100%;aspect-ratio:204/338;border-radius:12px;
  border:2px dashed rgba(240,228,196,.34);background:rgba(12,18,10,.22);
  box-shadow:inset 0 0 22px rgba(0,0,0,.3);display:grid;place-items:center}
.slot.can-drop{border-color:rgba(120,200,120,.7);background:rgba(120,200,120,.12)}
.unit{--fc:#6f5a42;width:100%;height:auto;aspect-ratio:204/338;border-radius:10px;position:relative;background:#efe2c4;border:2px solid var(--fc);overflow:hidden;display:flex;flex-direction:column;box-shadow:0 5px 14px rgba(0,0,0,.4);transition:transform .15s,box-shadow .15s;font-family:Inter,system-ui,sans-serif}
.unit .art{position:absolute;inset:0;width:100%;height:100%;background:#d8cba9 center/cover no-repeat;z-index:0}
.unit .nm{display:none}
.unit .stats{display:none}
.unit .stats .hpv.hurt{color:#ffd2c9}
.unit.patted{transform:rotate(6deg) scale(.94);filter:saturate(.55) brightness(.82)}
.unit.can-act{box-shadow:0 0 0 2px #8fd08f,0 5px 16px rgba(80,200,90,.35);cursor:pointer}
.unit.selected{transform:translateY(-6px) scale(1.05);box-shadow:0 0 0 3px #ffd76a,0 10px 22px rgba(0,0,0,.5);z-index:5}
.unit.targetable{box-shadow:0 0 0 3px #ff8d6b,0 5px 16px rgba(255,120,80,.4);cursor:pointer;animation:pulse 1s infinite alternate}
@keyframes pulse{from{filter:brightness(1)}to{filter:brightness(1.22)}}
.unit .badges{position:absolute;top:2px;left:2px;right:2px;display:flex;justify-content:space-between;pointer-events:none;z-index:2}
.unit .badge{font-size:10px;background:rgba(0,0,0,.62);color:#fff;border-radius:6px;padding:1px 4px;font-weight:700}
.unit .badge.poison{background:rgba(70,120,40,.9)}
.unit .badge.guard{background:rgba(60,80,140,.9)}
.unit .badge.damage{background:rgba(160,50,40,.92)}
.unit .badge.prevent{background:rgba(80,100,140,.92)}
.unit .badge.buff{background:rgba(40,120,60,.92)}
.unit .badge.debuff{background:rgba(160,50,40,.92)}
.unit .badge.swift{background:rgba(140,100,30,.92);color:#ffe9a8}
.unit .zzz{position:absolute;bottom:6px;right:4px;font-size:11px;background:rgba(0,0,0,.55);color:#ffe9a8;border-radius:6px;padding:1px 4px;pointer-events:none;z-index:2}

.mid-bar{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:40px;
  width:100%;max-width:1080px;margin:0 auto}
.triggers{display:flex;gap:4px;flex-wrap:wrap}
.trig{font:700 10px Inter,system-ui,sans-serif;padding:4px 8px;border-radius:999px;background:rgba(10,14,8,.66);color:#a79c82;border:1px solid rgba(255,255,255,.14)}
.trig.on{background:rgba(188,138,57,.85);color:#241d10}
.mid-actions{display:flex;gap:6px}
.turn-btn{background:#bc8a39;border-color:#8a6425;color:#241a08;font-weight:800;padding:9px 20px;border-radius:11px}
.turn-btn:disabled{opacity:.4}
.turn-btn.attention{animation:pulse 1s infinite alternate}

.you-hand{flex:1;display:flex;justify-content:center;align-items:flex-end;gap:6px;min-width:0;padding-top:6px}
.hcard{--fc:#6f5a42;width:clamp(92px,11vw,124px);aspect-ratio:204/338;border-radius:8px;background:#f4ead0;border:2px solid color-mix(in srgb,var(--fc) 55%,#6f5a42);position:relative;display:flex;flex-direction:column;overflow:hidden;flex-shrink:1;min-width:44px;transition:transform .12s;font-family:Inter,system-ui,sans-serif}
.hcard .cost{display:none}
.hcard .art{position:absolute;inset:0;width:100%;height:100%;background:#ddd0ae center/cover no-repeat;min-height:0}
.hcard .nm{display:none}
.hcard.heart-card .art{display:block;background-size:100% 100%}
.hcard.playable{box-shadow:0 0 0 2px #8fd08f;cursor:pointer}
.hcard.playable:hover,.hcard.playable:active{transform:translateY(-10px)}
.hcard.dim{filter:grayscale(.5) brightness(.75)}
.hcard.chosen{transform:translateY(-12px);box-shadow:0 0 0 3px #ffd76a}

.pstat.targetable{box-shadow:0 0 0 3px #ff8d6b;cursor:pointer;animation:pulse 1s infinite alternate}

.prompt-bar{
  position:absolute;left:50%;top:calc(10px + var(--sat));transform:translateX(-50%);
  background:rgba(25,20,12,.92);color:#ffe9b0;border:1px solid rgba(255,215,106,.5);
  border-radius:12px;padding:10px 16px;z-index:30;display:flex;gap:12px;align-items:center;
  font-family:Inter,system-ui,sans-serif;font-size:14px;max-width:92vw;box-shadow:var(--shadow);
}
.log-drawer{
  position:absolute;top:0;right:0;bottom:0;width:min(340px,88vw);z-index:40;
  background:rgba(24,20,14,.97);color:#ddd2b4;display:flex;flex-direction:column;
  border-left:1px solid rgba(255,255,255,.15);
}
.log-drawer header{display:flex;justify-content:space-between;align-items:center;padding:12px 14px calc(8px);font-weight:700;color:#f0e4c4}
.log-lines{flex:1;overflow:auto;padding:0 14px 14px;font:12px/1.55 Inter,system-ui,sans-serif;display:flex;flex-direction:column}
.log-lines div{padding:3px 0;border-bottom:1px solid rgba(255,255,255,.05)}

.card-peek{
  position:absolute;z-index:50;left:50%;bottom:calc(16px + var(--sab));transform:translateX(-50%);
  width:min(220px,58vw);aspect-ratio:204/338;background:#f6edd6;border:2px solid #7a6547;border-radius:13px;overflow:hidden;
  box-shadow:0 18px 44px rgba(0,0,0,.55);font-family:Inter,system-ui,sans-serif;pointer-events:none;
}
.card-peek .art{position:absolute;inset:0;width:100%;height:100%;background:#ddd0ae center/cover no-repeat;background-size:100% 100%}
.b-card .art{background-position:center top;background-size:100% 100%}
.hcard .art,.unit .art{background-position:center 20%;background-size:100% 100%}
.card-peek .body{display:none}

/* ---------- card inspector (right-side panel) ---------- */
.card-inspector{
  position:fixed;top:calc(12px + var(--sat));right:12px;bottom:calc(12px + var(--sab));
  width:min(340px, calc(100vw - 24px));z-index:55;
  background:rgba(22,18,12,.97);color:#f0e4c4;border:1px solid rgba(255,255,255,.16);
  border-radius:16px;box-shadow:0 18px 50px rgba(0,0,0,.6);
  display:flex;flex-direction:column;overflow:hidden;
  transform:translateX(120%);transition:transform .22s ease,opacity .22s ease;opacity:0;
}
.card-inspector:not(.hidden){transform:translateX(0);opacity:1}
.card-inspector .close-inspector{
  position:absolute;top:8px;right:8px;z-index:2;width:32px;height:32px;border-radius:50%;
  background:rgba(255,255,255,.12);color:#f0e4c4;border:0;font-size:18px;display:grid;place-items:center;
}
.card-inspector .close-inspector:hover{background:rgba(255,255,255,.22)}
.inspector-body{flex:1;overflow:auto;padding:14px;display:flex;flex-direction:column;gap:12px}
.inspector-card{
  width:min(260px,100%);aspect-ratio:204/338;margin:0 auto;border-radius:14px;overflow:hidden;
  box-shadow:0 10px 30px rgba(0,0,0,.5);background:#ddd0ae center/cover no-repeat;background-size:100% 100%;
}
.inspector-title{font-size:18px;font-weight:800;text-align:center;color:#ffe9b0;margin:0}
.inspector-meta{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;font-size:13px;color:#d4c9a8}
.inspector-meta span{background:rgba(255,255,255,.1);padding:3px 9px;border-radius:999px}
.inspector-rules{font-size:14px;line-height:1.55;background:rgba(255,255,255,.08);border-radius:12px;padding:12px;color:#efe3c4}
.inspector-rules i{color:#bc8a39;font-style:normal}
@media(max-width:640px){
  .card-inspector{top:auto;left:12px;right:12px;bottom:calc(12px + var(--sab));width:auto;max-height:60vh;transform:translateY(120%)}
  .card-inspector:not(.hidden){transform:translateY(0)}
}

/* ---------- modals ---------- */
.modal{position:fixed;inset:0;z-index:80;display:grid;place-items:center;padding:16px;background:rgba(14,16,12,.74);backdrop-filter:blur(3px)}
.modal-card{width:min(560px,100%);max-height:86vh;overflow:auto;background:#f1e5c7;border-radius:15px;box-shadow:0 25px 70px rgba(0,0,0,.5)}
.modal-card header{display:flex;justify-content:space-between;align-items:center;padding:13px 16px;border-bottom:1px solid var(--line)}
.modal-card header h3{margin:0;font-size:17px}
.modal-card footer{display:flex;gap:8px;justify-content:center;padding:12px 16px 16px}
.modal-body{padding:14px 16px;font-family:Inter,system-ui,sans-serif;font-size:14px;line-height:1.5}
.choice-list{display:grid;gap:7px}
.choice-list button{text-align:left;border:1px solid #a89774;border-radius:10px;background:#fff9e7;padding:10px 12px;font-family:inherit;font-size:13px}
.choice-list button:hover{background:#4a392b;color:#fff}
.modal-card.over{text-align:center}
#overBody h2{margin:8px 0 4px;font-size:26px}
#overBody p{color:#5d5140}
#rulesBody h4{margin:14px 0 4px}
#rulesBody p,#rulesBody li{font-size:13px;color:#4c4234}

.toast{
  position:fixed;left:50%;top:calc(12px + var(--sat));transform:translate(-50%,-14px);
  z-index:90;background:#241d17;color:#fff;border-radius:10px;padding:10px 16px;
  font:13px Inter,system-ui,sans-serif;opacity:0;pointer-events:none;transition:.2s;
  box-shadow:0 6px 20px rgba(0,0,0,.45);max-width:min(92vw,420px);text-align:center;
}
.toast.show{opacity:1;transform:translate(-50%,0)}

/* ---------- responsive ---------- */
@media(max-width:900px){
  .builder-body{grid-template-columns:1fr;grid-template-rows:minmax(0,1fr) auto}
  .builder-side{order:2;max-height:38vh}
  .b-grid{grid-template-columns:repeat(auto-fill,minmax(128px,1fr))}
}
@media(max-width:760px){
  .setup-cols{grid-template-columns:1fr;grid-template-rows:1fr auto 1fr}
  .vs-mark{justify-self:center;font-size:20px}
}
@media(max-width:640px){
  .pstat{min-width:0;padding:5px 7px}
  .pstat .hp{font-size:16px}
  .pile{width:34px}
  .foe-hand .back{width:22px}
  .slot{width:min(92px,26vw)}
  /* Narrow screens: the hand needs the full width, so it drops to its own row
     beneath the HP panel and piles instead of fighting them for space. */
  .you-strip{flex-wrap:wrap;justify-content:space-between;row-gap:4px}
  .you-strip .pstat{order:1}
  .you-strip .pile-group{order:2}
  .you-strip .you-hand{order:3;flex:0 0 100%;width:100%;justify-content:center;padding-top:2px}
  .hcard{width:min(68px,16.5vw)}
  .trig{padding:3px 6px;font-size:9px}
  .turn-btn{padding:8px 14px}
  .heart-chip{width:21px;height:21px;font-size:12px}
}
@media(max-height:560px){
  .hearts-row{min-height:20px}
  /* Short/landscape viewports: size slots from available height so the card ratio
     holds instead of collapsing into flat strips. */
  .slot{width:auto;height:100%;max-width:min(120px,22vw);min-height:56px}
  .you-strip .you-hand{flex:1 1 auto;width:auto}
  .hcard{width:min(58px,10.5vw)}
}

/* Full-card art: every card is a complete PNG, so the art layer fills the frame.
   Cards without art still show the faction crest as a muted placeholder. */
.hcard .art,.unit .art,.b-card .art,.card-peek .art{background-blend-mode:normal;background-color:#e8dcc0;background-size:100% 100%}
.hcard .art{opacity:.42;filter:saturate(.65)}
.unit .art{opacity:.46;filter:saturate(.65)}
.b-card .art{opacity:.5;filter:saturate(.7)}
.card-peek .art{opacity:.5;filter:saturate(.7)}
.art.has-art{opacity:1 !important;filter:none !important;background-color:#d8cba9 !important}

/* ---------- background music controls (brown/green palette, foldable top-left) ---------- */
.music-panel{
  position:fixed;left:12px;top:calc(12px + var(--sat));right:auto;bottom:auto;z-index:60;
  display:flex;align-items:center;gap:8px;
  background:linear-gradient(160deg,#2f261c,#243320 70%,#1e2a18);
  border:1px solid #6d5a3e;border-radius:12px;
  padding:7px 11px;box-shadow:0 6px 20px rgba(0,0,0,.5),inset 0 1px 0 rgba(255,255,255,.08);
}
.music-panel.muted{opacity:.5}
.music-panel #btnAudioCollapse{
  width:30px;height:32px;padding:0;display:grid;place-items:center;
  font-size:16px;border-radius:9px;border-color:#6d5a3e;
  background:#d8c9a0;color:#2e2317;transition:background .15s,color .15s,transform .15s;
}
.music-panel #btnAudioCollapse:hover{background:#c4b083;color:#1c160d}
.music-panel.expanded #btnAudioCollapse{transform:rotate(180deg)}
.music-controls{display:none;align-items:center;gap:8px}
.music-panel.expanded .music-controls{display:flex}
.music-panel #btnMusicToggle,.music-panel #btnSfxToggle{
  width:36px;height:32px;padding:0;display:grid;place-items:center;
  font-size:16px;border-radius:9px;border-color:#6d5a3e;
  background:#d8c9a0;color:#2e2317;transition:background .15s,color .15s;
}
.music-panel #btnMusicToggle:hover,.music-panel #btnSfxToggle:hover{background:#c4b083;color:#1c160d}
.music-panel #musicVolume,.music-panel #sfxVolume{
  width:74px;height:6px;border-radius:999px;
  background:#4a3f2e;outline:none;cursor:pointer;
  -webkit-appearance:none;appearance:none;
}
.music-panel #musicVolume::-webkit-slider-thumb,.music-panel #sfxVolume::-webkit-slider-thumb{
  -webkit-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;
  background:#8dae6b;border:2px solid #3e4f2a;box-shadow:0 2px 5px rgba(0,0,0,.4);
}
.music-panel #musicVolume::-moz-range-thumb,.music-panel #sfxVolume::-moz-range-thumb{
  width:16px;height:16px;border-radius:50%;border:2px solid #3e4f2a;
  background:#8dae6b;box-shadow:0 2px 5px rgba(0,0,0,.4);
}
.music-panel #musicVolume::-webkit-slider-runnable-track,.music-panel #sfxVolume::-webkit-slider-runnable-track{height:6px;border-radius:999px;background:linear-gradient(90deg,#4b6849 0%,#4b6849 var(--vol,50%),#4a3f2e var(--vol,50%))}
.music-panel #musicVolume::-moz-range-track,.music-panel #sfxVolume::-moz-range-track{height:6px;border-radius:999px;background:#4a3f2e}
@media(max-width:640px){
  .music-panel{left:8px;top:calc(8px + var(--sat));padding:6px 9px;gap:6px;max-width:calc(100vw - 16px);flex-wrap:nowrap;justify-content:flex-start}
  .music-controls{gap:6px;flex-wrap:wrap;justify-content:center}
  .music-panel #musicVolume,.music-panel #sfxVolume{width:52px}
  .music-panel #btnMusicToggle,.music-panel #btnSfxToggle{width:32px;height:28px;font-size:14px}
}
