/* Solitaire-specific table and tools. Heron platform screens use canonical gameUI. */
*{box-sizing:border-box}
body{margin:0;background:#fafbfa;color:#263d4b;font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;font-size:14px;line-height:1.5}
button,input,select{font:inherit}
button,a,input,select{-webkit-tap-highlight-color:transparent}
button{cursor:pointer;border:1px solid #dce5e6;background:white;color:inherit}
button:disabled{cursor:default;opacity:.4}
a{color:inherit;text-decoration:none}
svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex:none}
button svg,a svg{vertical-align:middle}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #008e9e80;outline-offset:3px}
[hidden]{display:none!important}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip-link{position:fixed;top:-60px;left:20px;z-index:999;background:#fff;padding:12px;border:2px solid #008e9e}
.skip-link:focus{top:10px}
.loading{padding:100px;text-align:center}
.rules-article{max-width:760px;margin:15px 0 40px}
.rules-article h1{font-size:34px;letter-spacing:-.8px}
.rules-article h2{font-size:20px;margin-top:32px}
.rules-article p{font-size:14px;line-height:1.9;color:#748891}
.rules-article .lead{font-size:18px}
.rules-article .primary{margin-top:20px}
#game-dialog{border:1px solid #dce7e7;border-radius:17px;width:min(440px,calc(100% - 30px));padding:32px;background:#fff;color:#334f5b;box-shadow:0 20px 90px #1c4e4825}
#game-dialog::backdrop{background:#172f3c80;backdrop-filter:blur(3px)}
#game-dialog h2{font-size:24px;letter-spacing:-.6px;line-height:1.3;margin:10px 0 15px}
#game-dialog p{font-size:13px;line-height:1.8;color:#889aa1}
#game-dialog label{display:block;font-size:12px;font-weight:600;color:#718991;margin:18px 0}
#game-dialog select,#game-dialog input{display:block;width:100%;border:1px solid #dae5e6;border-radius:7px;padding:10px;margin-top:7px;background:white;color:#526f7a;min-width:0;font-size:14px}
.form-row{display:flex;gap:15px}
.form-row>label{flex:1;min-width:0}
.dialog-close{position:absolute;right:15px;top:10px;background:none;border:0;color:#8ca0a6;font-size:25px;padding:2px 8px}
.dialog-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:25px}
.form-error{color:#be6470!important}
.result-modal{text-align:center}
.result-symbol{display:grid;place-items:center;background:#f3f8ed;color:#b5a563;width:72px;height:72px;border-radius:50%;margin:0 auto 20px}
.result-symbol svg{width:36px;height:36px}
.result-metrics{display:flex;gap:10px;justify-content:space-between;margin:25px 0;font-size:10px;color:#849b9e}
.result-metrics strong{display:block;margin-top:7px;color:#3e6470;font-size:23px;font-weight:500;font-variant-numeric:tabular-nums}
.result-modal>.primary,.result-modal>.secondary{display:flex;width:100%;margin:10px 0}
#toast{position:fixed;bottom:30px;left:50%;transform:translateX(-50%);z-index:200;background:#264d55;color:#fff;padding:13px 20px;border-radius:10px;max-width:min(450px,calc(100% - 30px));width:max-content;box-shadow:0 4px 20px #203c4420;font-size:12px}
/* Solitaire owns its table and cards; all surrounding rooms use gameUI. */
.solitaire-meta{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin:16px 0}.draw-modes{display:flex;background:#e8eeee;border-radius:10px;padding:4px;gap:4px}.draw-modes button{border:0;background:transparent;padding:9px 15px;border-radius:8px;color:#375755;font-weight:700}.draw-modes button.active{background:#fff;color:#087259;box-shadow:0 1px 5px #1232}.hand-metrics{display:flex;gap:20px;font-size:13px;color:#647674}.hand-metrics b{font-variant-numeric:tabular-nums;color:#193c35;margin-left:5px}.solitaire-table{position:relative;border-radius:18px;padding:24px;background:radial-gradient(ellipse at 40% 10%,#268d72,#09664f 75%);box-shadow:inset 0 0 50px #003c342b;overflow:hidden}.solitaire-table.ocean{background:radial-gradient(ellipse at 40% 10%,#347e9f,#15516a 75%)}.solitaire-board{--gap:14px;--step:15px;--card-width:calc((100% - 6 * var(--gap)) / 7);--card-height:calc((100cqw - 6 * var(--gap)) / 7 * 1.43);container-type:inline-size;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:var(--gap);position:relative;min-height:440px}.playing-card,.card-slot{width:100%;aspect-ratio:0.7;border-radius:7px;position:absolute;left:0;top:0;border:1px solid #ffffff45;display:block;font-family:Georgia,serif;user-select:none;-webkit-user-select:none;padding:0;box-shadow:0 2px 3px #00342650}.playing-card{touch-action:none;cursor:grab}.playing-card.face{background:#fffef9;border-color:#d8dcd5}.playing-card.red{color:#c63449}.playing-card.black{color:#1d3440}.card-back{background:repeating-linear-gradient(45deg,#135e78 0 3px,#236f88 3px 5px);border:3px solid #e2ece6;color:#fff}.card-back>span{font-size:28px;position:absolute;inset:0;display:grid;place-items:center;opacity:.7}.card-slot{background:#013e3433;color:#d6f2df85;border:1px solid #c9e9d454;box-shadow:none;font-size:36px}.card-slot small{position:absolute;bottom:8px;left:0;right:0;font:700 12px system-ui;color:white}.card-corner{position:absolute;top:5px;left:6px;display:flex;flex-direction:column;align-items:center;font-size:clamp(13px,2.2cqw,23px);line-height:1}.card-corner b{font-family:system-ui;font-weight:750}.card-corner>span{font-size:1.03em}.card-center{position:absolute;inset:0;display:grid;place-items:center;font-size:clamp(22px,5cqw,52px);pointer-events:none}.card-bottom{position:absolute;right:5px;bottom:5px;transform:rotate(180deg);font-size:clamp(10px,1.6cqw,17px)}.stock-pile,.foundation-pile{position:relative;aspect-ratio:0.7}.stock-pile{grid-column:1}.waste-pile{position:relative;grid-column:2 / span 2;min-width:0}.waste-fan{position:absolute;width:calc((100% - var(--gap)) / 2);height:100%;top:0;pointer-events:none}.waste-top{pointer-events:auto}.fan-0{left:0}.fan-1{left:20%}.fan-2{left:40%}.tableau-row{grid-column:1 / -1;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:var(--gap);position:relative;min-height:320px}.tableau-column{position:relative;height:100%;min-height:300px}.tableau-column .card-slot{z-index:0}.selected-card{outline:3px solid #ffd169;outline-offset:1px;filter:brightness(1.03);z-index:55!important}.playing-card:focus-visible,.card-slot:focus-visible{outline:3px solid #ffd169;outline-offset:2px;z-index:56}.hint-card{outline:3px dashed #ffcd51;outline-offset:2px}.drag-ghost{position:fixed!important;pointer-events:none;z-index:10000;opacity:.92;transform:rotate(3deg);box-shadow:0 12px 25px #0005}.solitaire-tools{display:flex;flex-wrap:wrap;justify-content:center;gap:9px;margin:14px 0}.solitaire-tools .game-action{min-height:44px;flex:0 1 auto}.selection-help{color:#647774;font-size:13px;line-height:1.65;margin:12px 0}.solo-options{display:flex;gap:12px;align-items:center;flex-wrap:wrap;border-top:1px solid #dce8e4;padding-top:15px}.solo-options label{display:flex;gap:8px;align-items:center;font-size:13px}.solo-options select{padding:8px;border:1px solid #d4e3dc;border-radius:8px;background:white}.solitaire-cover,.solitaire-countdown{position:absolute;inset:0;z-index:100;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#075b4ff5;color:white;text-align:center;padding:20px}.solitaire-cover[hidden],.solitaire-countdown[hidden]{display:none}.solitaire-countdown{font-size:72px;background:#075b4fe8}.board-locked{pointer-events:none}.board-preview{pointer-events:none;background:#0e7259;border-radius:10px;padding:12px;margin-top:12px}.board-preview .playing-card,.board-preview .card-slot{cursor:default}.entry-art .room-picture{max-width:100%}.game-platform-content #game-content{max-width:1100px;margin:auto}.solitaire-table button:disabled{opacity:1}.race-status{margin:12px 0;color:#245a50;font-size:14px}.solitaire-installed [data-action="install"]{display:none!important}
@media(min-width:1400px){.solitaire-board{--gap:20px;--step:18px}.solitaire-table{padding:28px}}@media(max-width:760px){.solitaire-table{padding:14px 10px;border-radius:12px}.solitaire-board{--gap:6px;--step:12px;min-height:380px}.hand-metrics{gap:12px;font-size:12px}.solitaire-meta{gap:10px}.solitaire-tools{gap:6px}.solitaire-tools .game-action{font-size:12px;padding:10px;gap:5px}.solitaire-tools .game-action svg{width:17px;height:17px}.card-corner{top:3px;left:3px}.card-bottom{display:none}.card-back{border-width:2px}.card-slot{font-size:25px}.card-center{font-size:24px}.draw-modes button{padding:8px 12px}.solitaire-table+.solitaire-tools{padding-right:0}.selection-help{font-size:12px}.tableau-row{min-height:300px}}
@media(max-width:375px){.solitaire-board{--gap:4px;--step:11px}.solitaire-table{padding:12px 7px}.card-corner{font-size:12px;left:2px}.card-center{font-size:18px}.hand-metrics{gap:10px}.card-back>span{font-size:20px}.solitaire-tools .game-action{padding:8px;font-size:11px}.playing-card,.card-slot{border-radius:4px}}
@media(prefers-reduced-motion:reduce){.playing-card{transition:none}}
.offset-0{top:calc(0 * var(--step))}
.offset-1{top:calc(1 * var(--step))}
.offset-2{top:calc(2 * var(--step))}
.offset-3{top:calc(3 * var(--step))}
.offset-4{top:calc(4 * var(--step))}
.offset-5{top:calc(5 * var(--step))}
.offset-6{top:calc(6 * var(--step))}
.offset-7{top:calc(7 * var(--step))}
.offset-8{top:calc(8 * var(--step))}
.offset-9{top:calc(9 * var(--step))}
.offset-10{top:calc(10 * var(--step))}
.offset-11{top:calc(11 * var(--step))}
.offset-12{top:calc(12 * var(--step))}
.offset-13{top:calc(13 * var(--step))}
.offset-14{top:calc(14 * var(--step))}
.offset-15{top:calc(15 * var(--step))}
.offset-16{top:calc(16 * var(--step))}
.offset-17{top:calc(17 * var(--step))}
.offset-18{top:calc(18 * var(--step))}
.offset-19{top:calc(19 * var(--step))}
.offset-20{top:calc(20 * var(--step))}
.offset-21{top:calc(21 * var(--step))}
.offset-22{top:calc(22 * var(--step))}
.offset-23{top:calc(23 * var(--step))}
.offset-24{top:calc(24 * var(--step))}
.offset-25{top:calc(25 * var(--step))}
.offset-26{top:calc(26 * var(--step))}
.offset-27{top:calc(27 * var(--step))}
.offset-28{top:calc(28 * var(--step))}
.offset-29{top:calc(29 * var(--step))}
.offset-30{top:calc(30 * var(--step))}
.offset-31{top:calc(31 * var(--step))}
.offset-32{top:calc(32 * var(--step))}
.offset-33{top:calc(33 * var(--step))}
.offset-34{top:calc(34 * var(--step))}
.offset-35{top:calc(35 * var(--step))}
.offset-36{top:calc(36 * var(--step))}
.offset-37{top:calc(37 * var(--step))}
.offset-38{top:calc(38 * var(--step))}
.offset-39{top:calc(39 * var(--step))}
.offset-40{top:calc(40 * var(--step))}
.offset-41{top:calc(41 * var(--step))}
.offset-42{top:calc(42 * var(--step))}
.offset-43{top:calc(43 * var(--step))}
.offset-44{top:calc(44 * var(--step))}
.offset-45{top:calc(45 * var(--step))}
.offset-46{top:calc(46 * var(--step))}
.offset-47{top:calc(47 * var(--step))}
.offset-48{top:calc(48 * var(--step))}
.offset-49{top:calc(49 * var(--step))}
.offset-50{top:calc(50 * var(--step))}
.offset-51{top:calc(51 * var(--step))}
.offset-52{top:calc(52 * var(--step))}
.offset-53{top:calc(53 * var(--step))}
.offset-54{top:calc(54 * var(--step))}
.offset-55{top:calc(55 * var(--step))}
.offset-56{top:calc(56 * var(--step))}
.offset-57{top:calc(57 * var(--step))}
.offset-58{top:calc(58 * var(--step))}
.offset-59{top:calc(59 * var(--step))}
.offset-60{top:calc(60 * var(--step))}
.offset-61{top:calc(61 * var(--step))}
.offset-62{top:calc(62 * var(--step))}
.offset-63{top:calc(63 * var(--step))}
.offset-64{top:calc(64 * var(--step))}
.offset-65{top:calc(65 * var(--step))}
.offset-66{top:calc(66 * var(--step))}
.offset-67{top:calc(67 * var(--step))}
.offset-68{top:calc(68 * var(--step))}
.offset-69{top:calc(69 * var(--step))}
.offset-70{top:calc(70 * var(--step))}
.offset-71{top:calc(71 * var(--step))}
.offset-72{top:calc(72 * var(--step))}
.offset-73{top:calc(73 * var(--step))}
.offset-74{top:calc(74 * var(--step))}
.offset-75{top:calc(75 * var(--step))}
.offset-76{top:calc(76 * var(--step))}
.offset-77{top:calc(77 * var(--step))}
.offset-78{top:calc(78 * var(--step))}
.offset-79{top:calc(79 * var(--step))}
.offset-80{top:calc(80 * var(--step))}
.offset-81{top:calc(81 * var(--step))}
.offset-82{top:calc(82 * var(--step))}
.offset-83{top:calc(83 * var(--step))}
.offset-84{top:calc(84 * var(--step))}
.offset-85{top:calc(85 * var(--step))}
.offset-86{top:calc(86 * var(--step))}
.offset-87{top:calc(87 * var(--step))}
.offset-88{top:calc(88 * var(--step))}
.offset-89{top:calc(89 * var(--step))}
.offset-90{top:calc(90 * var(--step))}
.offset-91{top:calc(91 * var(--step))}
.offset-92{top:calc(92 * var(--step))}
.offset-93{top:calc(93 * var(--step))}
.offset-94{top:calc(94 * var(--step))}
.offset-95{top:calc(95 * var(--step))}
.offset-96{top:calc(96 * var(--step))}
.offset-97{top:calc(97 * var(--step))}
.offset-98{top:calc(98 * var(--step))}
.offset-99{top:calc(99 * var(--step))}
.offset-100{top:calc(100 * var(--step))}
.offset-101{top:calc(101 * var(--step))}
.offset-102{top:calc(102 * var(--step))}
.offset-103{top:calc(103 * var(--step))}
.offset-104{top:calc(104 * var(--step))}
.height-0 .tableau-row{height:calc(var(--card-height) + 0 * var(--step));}
.height-1 .tableau-row{height:calc(var(--card-height) + 1 * var(--step));}
.height-2 .tableau-row{height:calc(var(--card-height) + 2 * var(--step));}
.height-3 .tableau-row{height:calc(var(--card-height) + 3 * var(--step));}
.height-4 .tableau-row{height:calc(var(--card-height) + 4 * var(--step));}
.height-5 .tableau-row{height:calc(var(--card-height) + 5 * var(--step));}
.height-6 .tableau-row{height:calc(var(--card-height) + 6 * var(--step));}
.height-7 .tableau-row{height:calc(var(--card-height) + 7 * var(--step));}
.height-8 .tableau-row{height:calc(var(--card-height) + 8 * var(--step));}
.height-9 .tableau-row{height:calc(var(--card-height) + 9 * var(--step));}
.height-10 .tableau-row{height:calc(var(--card-height) + 10 * var(--step));}
.height-11 .tableau-row{height:calc(var(--card-height) + 11 * var(--step));}
.height-12 .tableau-row{height:calc(var(--card-height) + 12 * var(--step));}
.height-13 .tableau-row{height:calc(var(--card-height) + 13 * var(--step));}
.height-14 .tableau-row{height:calc(var(--card-height) + 14 * var(--step));}
.height-15 .tableau-row{height:calc(var(--card-height) + 15 * var(--step));}
.height-16 .tableau-row{height:calc(var(--card-height) + 16 * var(--step));}
.height-17 .tableau-row{height:calc(var(--card-height) + 17 * var(--step));}
.height-18 .tableau-row{height:calc(var(--card-height) + 18 * var(--step));}
.height-19 .tableau-row{height:calc(var(--card-height) + 19 * var(--step));}
.height-20 .tableau-row{height:calc(var(--card-height) + 20 * var(--step));}
.height-21 .tableau-row{height:calc(var(--card-height) + 21 * var(--step));}
.height-22 .tableau-row{height:calc(var(--card-height) + 22 * var(--step));}
.height-23 .tableau-row{height:calc(var(--card-height) + 23 * var(--step));}
.height-24 .tableau-row{height:calc(var(--card-height) + 24 * var(--step));}
.height-25 .tableau-row{height:calc(var(--card-height) + 25 * var(--step));}
.height-26 .tableau-row{height:calc(var(--card-height) + 26 * var(--step));}
.height-27 .tableau-row{height:calc(var(--card-height) + 27 * var(--step));}
.height-28 .tableau-row{height:calc(var(--card-height) + 28 * var(--step));}
.height-29 .tableau-row{height:calc(var(--card-height) + 29 * var(--step));}
.height-30 .tableau-row{height:calc(var(--card-height) + 30 * var(--step));}
.height-31 .tableau-row{height:calc(var(--card-height) + 31 * var(--step));}
.height-32 .tableau-row{height:calc(var(--card-height) + 32 * var(--step));}
.height-33 .tableau-row{height:calc(var(--card-height) + 33 * var(--step));}
.height-34 .tableau-row{height:calc(var(--card-height) + 34 * var(--step));}
.height-35 .tableau-row{height:calc(var(--card-height) + 35 * var(--step));}
.height-36 .tableau-row{height:calc(var(--card-height) + 36 * var(--step));}
.height-37 .tableau-row{height:calc(var(--card-height) + 37 * var(--step));}
.height-38 .tableau-row{height:calc(var(--card-height) + 38 * var(--step));}
.height-39 .tableau-row{height:calc(var(--card-height) + 39 * var(--step));}
.height-40 .tableau-row{height:calc(var(--card-height) + 40 * var(--step));}
.height-41 .tableau-row{height:calc(var(--card-height) + 41 * var(--step));}
.height-42 .tableau-row{height:calc(var(--card-height) + 42 * var(--step));}
.height-43 .tableau-row{height:calc(var(--card-height) + 43 * var(--step));}
.height-44 .tableau-row{height:calc(var(--card-height) + 44 * var(--step));}
.height-45 .tableau-row{height:calc(var(--card-height) + 45 * var(--step));}
.height-46 .tableau-row{height:calc(var(--card-height) + 46 * var(--step));}
.height-47 .tableau-row{height:calc(var(--card-height) + 47 * var(--step));}
.height-48 .tableau-row{height:calc(var(--card-height) + 48 * var(--step));}
.height-49 .tableau-row{height:calc(var(--card-height) + 49 * var(--step));}
.height-50 .tableau-row{height:calc(var(--card-height) + 50 * var(--step));}
.height-51 .tableau-row{height:calc(var(--card-height) + 51 * var(--step));}
.height-52 .tableau-row{height:calc(var(--card-height) + 52 * var(--step));}
.height-53 .tableau-row{height:calc(var(--card-height) + 53 * var(--step));}
.height-54 .tableau-row{height:calc(var(--card-height) + 54 * var(--step));}
.height-55 .tableau-row{height:calc(var(--card-height) + 55 * var(--step));}
.height-56 .tableau-row{height:calc(var(--card-height) + 56 * var(--step));}
.height-57 .tableau-row{height:calc(var(--card-height) + 57 * var(--step));}
.height-58 .tableau-row{height:calc(var(--card-height) + 58 * var(--step));}
.height-59 .tableau-row{height:calc(var(--card-height) + 59 * var(--step));}
.height-60 .tableau-row{height:calc(var(--card-height) + 60 * var(--step));}
.height-61 .tableau-row{height:calc(var(--card-height) + 61 * var(--step));}
.height-62 .tableau-row{height:calc(var(--card-height) + 62 * var(--step));}
.height-63 .tableau-row{height:calc(var(--card-height) + 63 * var(--step));}
.height-64 .tableau-row{height:calc(var(--card-height) + 64 * var(--step));}
.height-65 .tableau-row{height:calc(var(--card-height) + 65 * var(--step));}
.height-66 .tableau-row{height:calc(var(--card-height) + 66 * var(--step));}
.height-67 .tableau-row{height:calc(var(--card-height) + 67 * var(--step));}
.height-68 .tableau-row{height:calc(var(--card-height) + 68 * var(--step));}
.height-69 .tableau-row{height:calc(var(--card-height) + 69 * var(--step));}
.height-70 .tableau-row{height:calc(var(--card-height) + 70 * var(--step));}
.height-71 .tableau-row{height:calc(var(--card-height) + 71 * var(--step));}
.height-72 .tableau-row{height:calc(var(--card-height) + 72 * var(--step));}
.height-73 .tableau-row{height:calc(var(--card-height) + 73 * var(--step));}
.height-74 .tableau-row{height:calc(var(--card-height) + 74 * var(--step));}
.height-75 .tableau-row{height:calc(var(--card-height) + 75 * var(--step));}
.height-76 .tableau-row{height:calc(var(--card-height) + 76 * var(--step));}
.height-77 .tableau-row{height:calc(var(--card-height) + 77 * var(--step));}
.height-78 .tableau-row{height:calc(var(--card-height) + 78 * var(--step));}
.height-79 .tableau-row{height:calc(var(--card-height) + 79 * var(--step));}
.height-80 .tableau-row{height:calc(var(--card-height) + 80 * var(--step));}
.height-81 .tableau-row{height:calc(var(--card-height) + 81 * var(--step));}
.height-82 .tableau-row{height:calc(var(--card-height) + 82 * var(--step));}
.height-83 .tableau-row{height:calc(var(--card-height) + 83 * var(--step));}
.height-84 .tableau-row{height:calc(var(--card-height) + 84 * var(--step));}
.height-85 .tableau-row{height:calc(var(--card-height) + 85 * var(--step));}
.height-86 .tableau-row{height:calc(var(--card-height) + 86 * var(--step));}
.height-87 .tableau-row{height:calc(var(--card-height) + 87 * var(--step));}
.height-88 .tableau-row{height:calc(var(--card-height) + 88 * var(--step));}
.height-89 .tableau-row{height:calc(var(--card-height) + 89 * var(--step));}
.height-90 .tableau-row{height:calc(var(--card-height) + 90 * var(--step));}
.height-91 .tableau-row{height:calc(var(--card-height) + 91 * var(--step));}
.height-92 .tableau-row{height:calc(var(--card-height) + 92 * var(--step));}
.height-93 .tableau-row{height:calc(var(--card-height) + 93 * var(--step));}
.height-94 .tableau-row{height:calc(var(--card-height) + 94 * var(--step));}
.height-95 .tableau-row{height:calc(var(--card-height) + 95 * var(--step));}
.height-96 .tableau-row{height:calc(var(--card-height) + 96 * var(--step));}
.height-97 .tableau-row{height:calc(var(--card-height) + 97 * var(--step));}
.height-98 .tableau-row{height:calc(var(--card-height) + 98 * var(--step));}
.height-99 .tableau-row{height:calc(var(--card-height) + 99 * var(--step));}
.height-100 .tableau-row{height:calc(var(--card-height) + 100 * var(--step));}
.height-101 .tableau-row{height:calc(var(--card-height) + 101 * var(--step));}
.height-102 .tableau-row{height:calc(var(--card-height) + 102 * var(--step));}
.height-103 .tableau-row{height:calc(var(--card-height) + 103 * var(--step));}
.height-104 .tableau-row{height:calc(var(--card-height) + 104 * var(--step));}
#portal .solitaire-table .playing-card.face.red,#portal .board-preview .playing-card.face.red{color:#c63449}#portal .solitaire-table .playing-card.face.black,#portal .board-preview .playing-card.face.black{color:#1d3440}#portal .solitaire-table .playing-card.face,#portal .board-preview .playing-card.face{background:#fffef9;border:1px solid #d8dcd5}#portal[data-game-ui-version="1"] .solitaire-table button.card-back,#portal .board-preview .card-back{background:repeating-linear-gradient(45deg,#135e78 0 3px,#236f88 3px 5px);border:3px solid #e2ece6;color:#fff}#portal[data-game-ui-version="1"] .solitaire-table button.card-slot:not(.card-back),#portal .board-preview .card-slot:not(.card-back){background:#013e3433;color:#d6f2df85;border:1px solid #c9e9d454}#portal .draw-modes button.active{background:#fff;color:#087259}.tableau-column,.tableau-row{min-height:0}
@media(max-width:760px){.solitaire-board{min-height:260px}.solitaire-table{padding-top:14px;padding-bottom:14px}#portal[data-game-ui-version="1"] .solitaire-table button.card-back{border-width:2px}}

.card-corner{flex-direction:row;gap:2px;align-items:center}
/* v1.1: clear red backs, a compact toolbar and a guide on the actual cards. */
#portal .solitaire-table{background:#1b6548;box-shadow:inset 0 0 36px #06332325}
#portal .solitaire-table.ocean{background:#245c76}
#portal[data-game-ui-version="1"] .solitaire-table button.card-back,#portal .board-preview .card-back{background-color:#a52b3e;background-image:repeating-linear-gradient(45deg,#ffffff12 0 1px,transparent 1px 6px),repeating-linear-gradient(-45deg,#ffffff12 0 1px,transparent 1px 6px);border:3px solid #fff9ef;color:#fff;box-shadow:0 2px 5px #062c2b55}
#portal[data-game-ui-version="1"] .solitaire-table button.card-back>span{opacity:1;color:#fff5ee;text-shadow:0 1px 2px #55101c}
#portal .solitaire-table .card-slot small{color:#fff;background:#792031;border:1px solid #ffffff88;border-radius:20px;left:25%;right:25%;bottom:7px;font:700 12px system-ui;line-height:1.6}
#portal[data-game-ui-version="1"] .solitaire-table button.card-slot:not(.card-back),#portal .board-preview .card-slot:not(.card-back){background:#124b363b;color:#cfdfd5;border:2px solid #b3cebeaa;border-radius:7px}
#portal .solitaire-table.ocean .card-slot:not(.card-back){background:#143e583b}
#portal .solitaire-table .playing-card.face,#portal .board-preview .playing-card.face{background:#fffefa;border:1px solid #d5dbd4;border-radius:7px;box-shadow:0 2px 4px #062c2b66}
#portal .solitaire-table .playing-card.face.red,#portal .board-preview .playing-card.face.red{color:#bb233c}
#portal .solitaire-table .playing-card.face.black,#portal .board-preview .playing-card.face.black{color:#14242d}
.card-corner{top:5px;left:5px;font-size:clamp(14px,2.7cqw,29px);gap:2px;line-height:1.1}.card-corner b{font-weight:800;letter-spacing:-.04em}.card-center{inset:24% 0 8%;font-size:clamp(23px,5.4cqw,58px)}.card-bottom{font-weight:700}
#portal .solitaire-meta{margin:14px 0;gap:10px}#portal .hand-metrics{color:#43585f;font-size:14px;gap:24px}#portal .hand-metrics>span{display:flex;align-items:baseline;gap:7px}#portal .hand-metrics b{font-size:18px;color:#152f36;min-width:1.4ch;margin:0}
#portal .draw-modes button{font-size:14px;color:#364e54;min-height:38px;font-weight:750}#portal .draw-modes button.active{color:#134c39;background:#fff}
#portal .solitaire-tools{display:grid;grid-template-columns:repeat(4,minmax(0,auto));gap:10px;margin:14px 0 10px;justify-content:center}#portal .solitaire-tools .game-action{min-height:46px;padding:11px 17px;font-size:14px;white-space:nowrap;border-color:#cedada;color:#29434b}#portal .solitaire-tools .primary-button{background:#008392;color:#fff;border-color:#008392}#portal .solitaire-tools .game-action:disabled{opacity:1;background:#edf1f0;color:#607078;border-color:#d8e1de}#portal .solitaire-tools .game-action svg{width:19px;height:19px}
#portal .selection-help{font-size:14px;line-height:1.65;color:#354f57;min-height:1.65em;text-align:center;margin:10px 0 3px}
#portal .solitaire-cover{background:#072e29b8;padding:16px;backdrop-filter:blur(3px)}#portal .solitaire-cover .pause-panel{width:min(340px,100%);padding:26px 22px;background:#fff;border:1px solid #d8e4df;border-radius:18px;box-shadow:0 16px 48px #001a2340;display:flex;flex-direction:column;align-items:center;gap:13px}#portal .solitaire-cover .pause-symbol{width:48px;height:48px;border-radius:50%;background:#e8f3ed;color:#1b6548;display:grid;place-items:center;font:800 24px system-ui}#portal .solitaire-cover h2{color:#172f35;font-size:23px;line-height:1.25;margin:0;font-weight:800}#portal .solitaire-cover p{color:#40565c;font-size:15px;line-height:1.6;margin:0}#portal .solitaire-cover .primary-button{color:#fff;background:#008392;border-color:#008392;font-size:15px;min-height:44px}
#portal .game-option-actions{display:grid;gap:9px;margin:18px 0}#portal .game-option-actions .game-action{display:flex;justify-content:flex-start;width:100%;font-size:15px;min-height:46px;padding:12px;color:#29434b;background:#f6f9f7}#portal .game-options-panel .play-instructions{border-top:1px solid #d7e3dd;margin-top:20px;padding-top:14px}#portal .game-options-panel summary{color:#244b4e;font-size:15px;cursor:pointer;font-weight:700}#portal .game-options-panel .play-instructions p{color:#40565c;font-size:14px}
.hint-layer{position:absolute;inset:0;pointer-events:none;z-index:80;overflow:visible}.hint-layer .hint-route{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.hint-route-outline{stroke:#123c2d;stroke-width:8;fill:none;opacity:.85}.hint-route-line{stroke:#ffe38b;stroke-width:4;stroke-dasharray:9 5;fill:none}.hint-arrowhead{fill:#ffe38b;stroke:#123c2d;stroke-width:1.5}.hint-layer .hint-ghost{position:absolute;pointer-events:none;opacity:0;z-index:2;box-shadow:0 8px 20px #001f3260!important;outline:3px solid #ffe38b!important}.hint-source,.hint-target{z-index:60!important;outline:3px solid #ffe38b!important;outline-offset:2px}.hint-target{outline-color:#fff!important;box-shadow:0 0 0 6px #e3ae35!important}.hint-source:after,.hint-target:after{position:absolute;top:-12px;right:-8px;width:25px;height:25px;display:grid;place-items:center;border-radius:50%;border:2px solid #fff;background:#64450a;color:#fff;font:800 14px system-ui;z-index:90;box-shadow:0 2px 4px #001c3955;content:'1'}.hint-target:after{content:'2';background:#1f4d3b}.hint-stack-count{position:absolute;bottom:6px;right:6px;background:#64450a;color:white;padding:3px 6px;border-radius:6px;font:700 13px system-ui}.bot-practice-meta{font-size:13px;color:#40565c}.bot-label{font-size:11px;font-weight:800;color:#3d6863;letter-spacing:.04em}
@media(max-width:760px){#portal .hand-metrics{font-size:12px;gap:13px}#portal .hand-metrics>span{gap:5px}#portal .hand-metrics b{font-size:15px}#portal .solitaire-tools{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}#portal .solitaire-tools .game-action{padding:10px 6px;gap:5px;font-size:12px;min-height:46px}#portal .solitaire-tools .game-action svg{width:17px;height:17px}#portal .selection-help{font-size:13px}.card-corner{font-size:14px;left:3px;top:3px;gap:1px}.card-center{font-size:26px}#portal[data-game-ui-version="1"] .solitaire-table button.card-back,#portal .board-preview .card-back{border-width:2px}#portal .solitaire-cover .pause-panel{padding:20px 16px;gap:10px}#portal .solitaire-cover h2{font-size:20px}#portal .solitaire-cover p{font-size:14px}.hint-source:after,.hint-target:after{width:21px;height:21px;top:-10px;right:-6px;font-size:12px}}
@media(max-width:375px){.card-corner{font-size:13px;left:2px;gap:0}.card-center{font-size:22px}#portal .hand-metrics{gap:10px;font-size:11px}#portal .hand-metrics b{font-size:14px}#portal .solitaire-tools .game-action{font-size:11px;padding:9px 4px;gap:3px}}
@media(prefers-reduced-motion:reduce){.hint-source,.hint-target{animation:none}}

#portal .solitaire-cover .pause-panel h2{color:#172f35}#portal .solitaire-cover .pause-panel p{color:#40565c}
#portal .solitaire-tools [data-action="auto"]{grid-column:1/-1;grid-row:2;background:#e8f2eb;color:#214b35;border-color:#b5cdbc}
@media(max-width:760px){#portal .solitaire-tools.room-tools{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:760px){#portal .solitaire-table{margin-left:-12px;margin-right:-12px}}
@media(max-width:760px){#portal[data-game-ui-version="1"] .solitaire-tools button.game-action{flex-direction:column;gap:4px;min-height:60px;padding:9px 2px;font-size:12px;line-height:1.25;border-radius:10px}#portal .solitaire-tools [data-action="auto"]{flex-direction:row;min-height:44px}}
@media(min-width:376px) and (max-width:760px){.card-corner{font-size:16px}}
@media(max-width:375px){.card-corner{font-size:14px}}
