
:root{
  --bg:#080b13;--panel:#111827cc;--panel2:#172033;--ink:#f8fbff;--muted:#a9bad2;--line:#31435e;--gold:#f5d56b;--blue:#2f72ff;--red:#d14242;--cyan:#7ee7ff;--violet:#b493ff;
  --cardW:150px;--cardH:210px;
}
*{box-sizing:border-box} html{scroll-behavior:smooth} body{margin:0;min-height:100vh;color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Arial,sans-serif;background:radial-gradient(circle at 15% 0%,rgba(126,231,255,.18),transparent 32%),radial-gradient(circle at 85% 10%,rgba(180,147,255,.18),transparent 28%),linear-gradient(180deg,#070a12,#0b1220 45%,#060811);}
button{border:1px solid #ffffff28;background:#17243a;color:var(--ink);padding:10px 14px;border-radius:14px;font-weight:800;cursor:pointer;box-shadow:0 8px 20px #0005}button:hover{transform:translateY(-1px);border-color:#ffffff55}.primary{background:linear-gradient(135deg,#f5d56b,#f7b955);color:#191200;border:0}.shell{width:min(1440px,100%);margin:0 auto;padding:18px}.hero{display:flex;align-items:end;justify-content:space-between;gap:20px;padding:28px;border:1px solid #ffffff1b;border-radius:28px;background:linear-gradient(135deg,#111827e8,#0f172acc);box-shadow:0 18px 50px #0009}.eyebrow{margin:0 0 8px;color:var(--cyan);text-transform:uppercase;letter-spacing:.16em;font-size:12px;font-weight:900}.hero h1{margin:0;font-size:clamp(38px,7vw,82px);line-height:.9;letter-spacing:-.05em}.lead{max-width:720px;color:var(--muted);font-size:17px;line-height:1.5}.hero-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}.panel{margin-top:18px;background:var(--panel);border:1px solid #ffffff1b;border-radius:24px;box-shadow:0 18px 50px #0008;backdrop-filter:blur(12px)}.panel-head{display:flex;justify-content:space-between;align-items:end;gap:16px;padding:18px 18px 6px}.panel-head h2{margin:0;font-size:22px}.panel-head p{margin:5px 0 0;color:var(--muted);font-size:14px}.compact{align-items:start}.filters{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.filter{font-size:12px;padding:8px 10px;border-radius:999px}.filter.active{background:#f5d56b;color:#15100a}.deck-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:16px;padding:18px}.triad-card{width:100%;max-width:var(--cardW);height:var(--cardH);perspective:1100px;justify-self:center}.triad-card-inner{position:relative;width:100%;height:100%;transition:transform .55s cubic-bezier(.2,.8,.2,1);transform-style:preserve-3d}.triad-card.flipped .triad-card-inner{transform:rotateY(180deg)}.card-face{position:absolute;inset:0;border-radius:18px;overflow:hidden;backface-visibility:hidden;border:2px solid #ffffffc7;background:#1b2740;box-shadow:0 12px 28px #0009}.card-front{background:linear-gradient(145deg,#243754,#0e1728)}.card-front.player{border-color:#9cc1ff}.card-front.cpu{border-color:#ff9c9c}.card-front::after{content:"";position:absolute;inset:-30%;background:linear-gradient(115deg,transparent 30%,rgba(255,255,255,.13),transparent 42%);transform:translateX(-60%) rotate(8deg);transition:.6s}.triad-card:hover .card-front::after{transform:translateX(55%) rotate(8deg)}.card-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:saturate(1.08) contrast(1.05);opacity:.86}.card-shade{position:absolute;inset:0;background:linear-gradient(180deg,#0002,#0000 34%,#000c 100%),radial-gradient(circle at 50% 20%,transparent,#0008 92%)}.value{position:absolute;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:#050813dd;border:1px solid #ffffff8a;font-weight:1000;font-size:14px;text-shadow:0 1px 1px #000}.value.top{top:7px;left:calc(50% - 15px)}.value.right{right:7px;top:calc(50% - 15px)}.value.bottom{bottom:30px;left:calc(50% - 15px)}.value.left{left:7px;top:calc(50% - 15px)}.badge{position:absolute;top:9px;left:9px;font-size:10px;text-transform:uppercase;letter-spacing:.08em;background:#000a;border:1px solid #ffffff44;border-radius:999px;padding:4px 7px;color:#f5d56b;font-weight:900;max-width:82px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.domain-name{position:absolute;left:8px;right:8px;bottom:8px;text-align:center;background:#050813c9;border:1px solid #ffffff25;border-radius:12px;padding:7px 5px;font-size:12px;font-weight:950;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card-back{transform:rotateY(180deg);padding:12px;background:radial-gradient(circle at 50% 0%,rgba(245,213,107,.17),transparent 30%),linear-gradient(145deg,#101827,#060914);display:flex;flex-direction:column}.card-back h3{margin:0;color:#f5d56b;font-size:17px;line-height:1.05}.card-back .domain{font-size:11px;color:#9fdcff;margin-top:3px;word-break:break-all}.card-back p{font-size:12px;line-height:1.35;color:#d7e6fa;margin:9px 0;overflow:auto}.meta-row{display:flex;gap:6px;flex-wrap:wrap;margin-top:auto}.pill{font-size:10px;border:1px solid #ffffff2d;border-radius:999px;padding:4px 7px;color:#cbd8ed;background:#ffffff0b}.open-link{display:block;text-align:center;margin-top:9px;text-decoration:none;color:#15100a;background:#f5d56b;padding:8px;border-radius:11px;font-weight:950;font-size:12px}.game-layout{display:grid;grid-template-columns:minmax(210px,1fr) minmax(320px,520px) minmax(210px,1fr);gap:18px;align-items:start}.hand{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;padding:14px}.hand .triad-card{--cardW:112px;--cardH:156px}.hand .value{width:24px;height:24px;font-size:12px}.hand .value.top{left:calc(50% - 12px)}.hand .value.right{top:calc(50% - 12px)}.hand .value.bottom{left:calc(50% - 12px);bottom:25px}.hand .value.left{top:calc(50% - 12px)}.triad-card.selected .card-face{outline:4px solid var(--gold);box-shadow:0 0 0 6px #f5d56b33,0 16px 32px #000}.triad-card.disabled{opacity:.58;cursor:not-allowed}.board-panel{padding:16px}.scorebar{display:flex;justify-content:space-between;gap:12px;align-items:center;background:#07101fcc;border:1px solid #ffffff18;border-radius:18px;padding:12px 14px;color:#dcecff;font-weight:850}.scorebar #score{color:#f5d56b}.board{display:grid;grid-template-columns:repeat(3,112px);gap:10px;justify-content:center;margin:18px auto}.cell{width:112px;height:156px;border:2px solid #405a80;border-radius:18px;background:linear-gradient(145deg,#17243a,#0a1020);display:grid;place-items:center;box-shadow:inset 0 0 20px #0008,0 10px 22px #0007}.cell.empty::before{content:"+";font-size:42px;color:#ffffff24;font-weight:200}.cell.playable{border-color:#f5d56b;box-shadow:0 0 18px #f5d56b44,inset 0 0 20px #0008}.cell .triad-card{--cardW:104px;--cardH:146px}.game-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}.inspect-dialog,.rules-dialog{width:min(680px,92vw);border:1px solid #ffffff2a;border-radius:24px;background:#0b1220;color:#f8fbff;box-shadow:0 24px 80px #000}.inspect-dialog::backdrop,.rules-dialog::backdrop{background:#0009;backdrop-filter:blur(5px)}.close{position:absolute;right:12px;top:12px;border-radius:50%;width:34px;height:34px;padding:0}.inspect-wrap{display:grid;grid-template-columns:210px 1fr;gap:18px;align-items:center;padding:24px}.inspect-wrap .triad-card{--cardW:210px;--cardH:294px}.inspect-copy h2{margin:0;color:#f5d56b}.inspect-copy p{color:#d7e6fa;line-height:1.55}.rules-dialog{padding:26px}.rules-dialog p{color:#d7e6fa;line-height:1.5}@media(max-width:980px){.game-layout{grid-template-columns:1fr}.cpu-panel{display:none}.hero{align-items:start;flex-direction:column}.hero-actions{justify-content:flex-start}.board{grid-template-columns:repeat(3,96px)}.cell{width:96px;height:134px}.cell .triad-card{--cardW:88px;--cardH:124px}.inspect-wrap{grid-template-columns:1fr;justify-items:center}}@media(max-width:520px){.shell{padding:10px}.hero{padding:20px;border-radius:22px}.lead{font-size:14px}.deck-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:12px}.triad-card{--cardW:100%;--cardH:190px}.board{grid-template-columns:repeat(3,30vw);gap:6px}.cell{width:30vw;height:42vw;border-radius:12px}.cell .triad-card{--cardW:28vw;--cardH:39vw}.domain-name{font-size:9px}.badge{font-size:8px}.value{width:23px;height:23px;font-size:11px}.hand .triad-card{--cardW:88px;--cardH:124px}.scorebar{flex-direction:column;align-items:flex-start}.panel-head{display:block}.filters{justify-content:flex-start;margin-top:12px}}


/* v4 layout: board first, playable hand directly below */
.game-layout{
  display:grid;
  grid-template-columns:minmax(0,760px);
  justify-content:center;
  gap:18px;
  align-items:start;
}
.board-panel{order:1; width:100%;}
.player-hand-panel{order:2; width:100%;}
.cpu-panel{order:3; width:100%; opacity:.72;}
.player-hand-panel .hand{justify-content:center; padding-top:10px;}
.cpu-panel .hand{justify-content:center;}
.board{grid-template-columns:repeat(3,128px); gap:12px;}
.cell{width:128px;height:178px;}
.cell .triad-card{--cardW:120px;--cardH:168px;}
.hand .triad-card{--cardW:124px;--cardH:174px;}
.card-img[src*="operator-glyphs"]{object-fit:cover; opacity:1; filter:saturate(1.25) contrast(1.08) brightness(.95);}
.triad-card:has(.card-img[src*="operator-glyphs"]) .card-front{background:linear-gradient(145deg,#101827,#03050b);}
.triad-card:has(.card-img[src*="operator-glyphs"]) .badge{color:#101827;background:#f5d56b;border-color:#fff3b0;}
.triad-card:has(.card-img[src*="operator-glyphs"]) .domain-name{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:-.04em;}
.triad-card:has(.card-img[src*="operator-glyphs"]) .card-shade{background:linear-gradient(180deg,#0000 0%,#0002 42%,#000d 100%);}
@media(max-width:980px){
  .game-layout{grid-template-columns:1fr;}
  .cpu-panel{display:block;}
  .board{grid-template-columns:repeat(3,112px)}
  .cell{width:112px;height:156px}
  .cell .triad-card{--cardW:104px;--cardH:146px}
}
@media(max-width:520px){
  .board{grid-template-columns:repeat(3,30vw);gap:6px}
  .cell{width:30vw;height:42vw}
  .cell .triad-card{--cardW:28vw;--cardH:39vw}
  .hand .triad-card{--cardW:88px;--cardH:124px}
}

.load-error{grid-column:1/-1;padding:22px;border:1px solid rgba(255,255,255,.16);border-radius:18px;background:rgba(255,255,255,.06);color:#fff;line-height:1.55}.load-error code{color:#ffd66b}
