.solitaire-page{max-width:1160px;margin:0 auto}.solitaire-table{--card-w:104px;--card-h:140px;--felt:#16493e;--felt-deep:#103b32;color:#f8f2df;background:radial-gradient(ellipse at 50% 0,#245d4e 0,transparent 68%),var(--felt-deep);border:1px solid #826f45;border-radius:15px;box-shadow:inset 0 0 0 6px #10392f,0 16px 36px #0002;overflow:hidden}.solitaire-controls{display:flex;align-items:center;gap:10px;padding:22px 26px 17px;border-bottom:1px solid #e1d8ba26}.solitaire-wordmark{display:flex;flex-direction:column;margin-right:auto}.solitaire-wordmark>span{font-size:9px;letter-spacing:2.7px;color:#d0bb81}.solitaire-wordmark strong{font:normal 33px/1.2 Georgia,'Times New Roman',serif;letter-spacing:-.8px}.solitaire-counters{display:flex;gap:20px;margin-right:16px;font-size:11px;color:#c5d8cf;white-space:nowrap}.solitaire-counters b{display:block;font:normal 25px/1.1 Georgia,serif;color:#fff7df;text-align:center}.solitaire-controls button,.solitaire-win button{color:#fff7df;background:#ffffff0a;border:1px solid #b6cabc66;border-radius:6px;padding:10px 13px;font:inherit;font-size:12px;cursor:pointer}.solitaire-controls button:hover,.solitaire-win button:hover{background:#ffffff18}.solitaire-controls button:disabled{opacity:.4;cursor:default}.solitaire-table button:focus-visible{outline:3px solid #f8d47e;outline-offset:4px}.solitaire-notice{display:flex;justify-content:space-between;gap:16px;min-height:60px;padding:13px 26px;font-size:12px;line-height:1.45;color:#e3e9db}.solitaire-notice>span:last-child{color:#b9cbbd;white-space:nowrap}.solitaire-board{padding:4px 30px 25px;max-width:960px;margin:auto}.solitaire-top,.solitaire-columns{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:20px}.solitaire-top{margin-bottom:36px;min-height:var(--card-h)}.solitaire-slot,.solitaire-card{box-sizing:border-box;width:var(--card-w);height:var(--card-h);border-radius:7px;flex:none}.solitaire-slot{display:flex;align-items:center;justify-content:center;text-align:center;padding:12px;color:#d8e6cc8c;background:#0b302b20;border:1px solid #c8d9bb38;font:12px/1.5 Georgia,serif;cursor:pointer}.solitaire-slot[data-type=foundation]{font:23px Georgia,serif;letter-spacing:3px}.solitaire-slot.has-stock,.solitaire-card.is-back{background:repeating-linear-gradient(45deg,#294c51 0,#294c51 3px,#365c5f 3px,#365c5f 5px);border:5px solid #eee7d4;box-shadow:0 2px 4px #0004,inset 0 0 0 1px #bcad83}.solitaire-slot.has-stock{color:#fff8e3;text-shadow:0 1px 4px #000;font:600 13px/1.7 Georgia,serif}.solitaire-slot:disabled{cursor:default}.solitaire-card{position:relative;display:block;padding:0;border:1px solid #d5c9aa;color:#183731;background:#fffcf2;box-shadow:0 2px 4px #0004;font-family:Georgia,'Times New Roman',serif;cursor:grab;user-select:none;touch-action:none}.solitaire-card.is-red{color:#b12f44}.solitaire-card.is-selected{outline:3px solid #f9d276;outline-offset:2px;filter:brightness(1.06)}.solitaire-card.is-hint,.solitaire-column.is-hint,.solitaire-slot.is-hint{outline:3px dashed #f9d276;outline-offset:5px}.solitaire-corner{position:absolute;top:6px;left:8px;font-size:20px;line-height:1;letter-spacing:-1px}.solitaire-corner.is-lower{top:auto;left:auto;bottom:6px;right:8px;transform:rotate(180deg)}.solitaire-suit{font-size:51px;position:absolute;inset:0;display:grid;place-items:center}.solitaire-card:disabled{opacity:1;cursor:default}.solitaire-waste{position:relative;min-height:var(--card-h)}.solitaire-waste .solitaire-card{position:absolute;left:calc(var(--fan)*16px);top:0}.solitaire-columns{align-items:start}.solitaire-column{position:relative;min-width:0}.solitaire-column>.solitaire-card{position:absolute;left:0}.solitaire-column-base{position:absolute;inset:0 auto auto 0}.solitaire-table-foot{display:flex;justify-content:space-between;gap:20px;padding:16px 28px;border-top:1px solid #c8d9bb26;color:#b5cbbb;font-size:11px}.solitaire-table-foot>span:first-child{font:19px Georgia,serif;letter-spacing:9px;color:#cbb780}.solitaire-storage{font-size:12px;color:var(--muted);margin:15px 0 25px}.solitaire-win{display:flex;align-items:center;gap:18px;margin:0 30px 24px;padding:20px 24px;border:1px solid #ceba7b;background:#123c31;border-radius:8px}.solitaire-win[hidden]{display:none}.solitaire-win strong{font:25px Georgia,serif;color:#f5ddb0}.solitaire-win span{font-size:13px;flex:1}#solitaire-new select{display:block;margin-top:10px;width:100%;padding:12px;background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:6px}#solitaire-help li{margin:12px 0;line-height:1.6}[data-theme=light] .solitaire-table{--felt-deep:#205246}
@media(max-width:1100px){.solitaire-table{--card-w:94px;--card-h:132px}.solitaire-board{padding-left:24px;padding-right:24px}.solitaire-top,.solitaire-columns{gap:15px}.solitaire-controls{padding:18px 24px}.solitaire-counters{margin-right:5px;gap:12px}}
.solitaire-table{--covered-step:18px;--open-step:30px}
@media(max-height:800px){.solitaire-table{--card-w:88px;--card-h:118px;--covered-step:14px;--open-step:28px}.solitaire-controls{padding-top:12px;padding-bottom:12px}.solitaire-wordmark strong{font-size:28px}.solitaire-notice{min-height:48px;padding-top:10px;padding-bottom:10px}.solitaire-top{margin-bottom:23px}.solitaire-board{padding-top:0;padding-bottom:18px}.solitaire-table-foot{padding-top:12px;padding-bottom:12px}.solitaire-suit{font-size:43px}.solitaire-corner{font-size:18px}}
@media(prefers-reduced-motion:no-preference){.solitaire-controls button{transition:background .15s}.solitaire-win{animation:solitaire-arrive .4s ease-out}@keyframes solitaire-arrive{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}}

/* Shared artwork fills the module-owned hit target; its geometry and input stay unchanged. */
.solitaire-card,.solitaire-card.is-back,.solitaire-slot.has-stock{padding:0;border:0;background:transparent;box-shadow:none}
.solitaire-card>.playing-card,.solitaire-slot.has-stock>.playing-card{--card-width:var(--card-w);width:100%;height:100%;aspect-ratio:auto;pointer-events:none;display:block;box-sizing:border-box}
.solitaire-controls{flex-wrap:wrap}

/* Covered faces must expose rank AND suit within the existing 27–30px fan step. */
.solitaire-card .playing-card .card-index{flex-direction:row;align-items:center;font-size:calc(var(--card-width)*.21);gap:.08em}
.solitaire-card .playing-card .card-index .card-suit{width:.85em;height:.952em}

/* Reserve three exposed-card steps below the starting deal before the table grows. */
.solitaire-columns{min-height:calc(var(--card-h) + 6 * var(--covered-step) + 3 * var(--open-step))}
