/* ---------- Solitaire (DOM-based board, vendored engine) ----------
 * Loaded only on the Solitaire page (see includes/header.php $extra_css),
 * so the shared style.css stays small as more games get their own CSS.
 */

.solitaire-wrap {
    position: relative;
    width: 100%;
    max-width: 720px;
    margin: 0 auto;
    padding: 4px 0;
    overflow: hidden; /* safety net: board width is JS-calculated to fit exactly */
    box-sizing: border-box;
}

#solitaireBoard {
    position: relative;
    margin: 0 auto;
    max-width: 100%;
}

.sol-ph {
    position: absolute;
    width: var(--card-w, 80px);
    height: var(--card-h, 115px);
    border: 2px dashed rgba(255, 255, 255, 0.28);
    border-radius: 4px;
    box-sizing: border-box;
}

.sol-ph-foundation::after {
    content: 'A';
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    font-size: calc(var(--card-w, 80px) * 0.5);
    font-weight: 700;
    color: rgba(255, 255, 255, 0.22);
}

.sol-stock-empty {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: calc(var(--card-w, 80px) * 0.5);
    color: rgba(255, 255, 255, 0.45);
    cursor: pointer;
}

.sol-card {
    position: absolute;
    width: var(--card-w, 80px);
    height: var(--card-h, 115px);
    border-radius: 4px;
    cursor: pointer;
    transition: left 0.22s ease-out, top 0.22s ease-out, box-shadow 0.2s;
    touch-action: none;
}

.sol-card.moving {
    z-index: 2000 !important;
}

.sol-card.dragging {
    transition: none;
    box-shadow: 3px 6px 15px rgba(0, 0, 0, 0.55);
    z-index: 2000 !important;
}

.sol-card-inner {
    position: relative;
    width: 100%;
    height: 100%;
    transform-style: preserve-3d;
    transition: transform 0.35s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}

.sol-card.face-up .sol-card-inner {
    transform: rotateY(180deg);
}

.sol-card-front,
.sol-card-back {
    position: absolute;
    inset: 0;
    backface-visibility: hidden;
    border-radius: 4px;
    box-sizing: border-box;
    box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.4);
}

.sol-card-front {
    background: #ffffff;
    border: 1px solid #cfd8e3;
    transform: rotateY(180deg);
    overflow: hidden;
}

.sol-card-front img,
.sol-card-back img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: 3px;
    pointer-events: none;
    user-select: none;
    -webkit-user-drag: none;
}

.sol-card-back {
    background-color: #0B5A8A;
    border: 2px solid rgba(255, 255, 255, 0.8);
}

.sol-card.selected .sol-card-front {
    outline: 3px solid #E6007A;
    outline-offset: -3px;
}
