@charset "UTF-8";
:root{color-scheme:dark;--ink:#f5f2e6;--muted:#abc2b6;--gold:#dfc891;--green:#123e35;--card-w:100px;--card-h:150px;font-family:"Segoe UI",system-ui,sans-serif;font-synthesis:none}
*{box-sizing:border-box}body{margin:0;color:var(--ink);background:#0b2c26;min-width:320px;background-image:url("../assets/boards/greenfelt.jpg");background-size:cover;background-position:center;background-repeat:no-repeat;min-height:100dvh}body[data-theme="forest"]:before,body[data-theme="ocean"]:before{content:"";position:fixed;inset:0;pointer-events:none;opacity:.13;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23fff' filter='url(%23n)' opacity='.25' d='M0 0h140v140H0z'/%3E%3C/svg%3E")}
.game-preview{display:none}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
html.preview-mode body{background-image:url("../assets/boards/anteprima.webp");background-position:center;background-color:#080604;overflow:hidden}
html.preview-mode .app,html.preview-mode #toast,html.preview-mode #modal,html.preview-mode #celebration,html.preview-mode .noscript{display:none}
html.preview-mode .game-preview{display:grid;grid-template-rows:auto 1fr;justify-items:center;align-items:start;min-height:100dvh;padding:clamp(18px,4vh,54px) clamp(18px,5vw,80px);isolation:isolate}
.game-preview-logo{display:block;width:min(700px,76vw);height:auto;filter:drop-shadow(0 5px 12px #0009)}
.game-preview-choices{align-self:center;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(8px,1.4vw,16px);width:min(720px,90vw,calc(60dvh * 2.18));padding:12px 0}
.game-preview-choice{display:block;position:relative;min-width:0;aspect-ratio:44/81;border-radius:clamp(8px,1.2vw,16px);box-shadow:0 10px 24px #000a;overflow:hidden;line-height:0;touch-action:manipulation}
/* riquadri.webp is one shared sprite: its first row is normal and its second row
   is hover. Each link clips and moves only its own card, never the other two. */
.game-preview-choice-image{position:absolute;top:0;left:0;display:block;width:1234.1%;max-width:none;height:auto;pointer-events:none;transform:translate(var(--sprite-x),var(--sprite-y))}
.game-preview-choice--spider{--sprite-x:-4.33%;--sprite-y:-1.93%;--sprite-hover-y:-49.86%}.game-preview-choice--scacchi{--sprite-x:-13.08%;--sprite-y:-1.93%;--sprite-hover-y:-49.86%}.game-preview-choice--flipper{--sprite-x:-21.82%;--sprite-y:-1.93%;--sprite-hover-y:-49.86%}.game-preview-choice--city-driver{--sprite-x:-30.62%;--sprite-y:-1.93%;--sprite-hover-y:-49.86%}
.game-preview-choice:hover .game-preview-choice-image,.game-preview-choice:focus-visible .game-preview-choice-image{transform:translate(var(--sprite-x),var(--sprite-hover-y))}
@media(max-width:700px){html.preview-mode .game-preview{padding-top:clamp(14px,3vh,28px)}.game-preview-logo{width:min(680px,94vw)}.game-preview-choices{grid-template-columns:repeat(2,minmax(0,1fr));width:min(440px,90vw,calc(60dvh * 1.7))}}
@media(max-height:550px) and (orientation:landscape){html.preview-mode .game-preview{grid-template-columns:auto 1fr;grid-template-rows:1fr;align-items:center;gap:clamp(20px,5vw,70px);padding:18px 6vw}.game-preview-logo{width:min(440px,35vw)}.game-preview-choices{grid-template-columns:repeat(4,minmax(0,1fr));width:min(640px,48vw,calc(80dvh * 2.18))}}
button{font:inherit;color:inherit;border:1px solid transparent;background:transparent;cursor:pointer;min-height:42px;border-radius:8px;padding:9px 13px;transition:background .18s,color .18s,box-shadow .18s;touch-action:manipulation}button:hover{background:#ffffff12}button:active{background:#ffffff20}button:focus-visible,.card:focus-visible{outline:3px solid var(--gold);outline-offset:4px}button:disabled{opacity:.3;cursor:default}button span[aria-hidden]{font-size:21px;vertical-align:-1px;margin-right:5px}button.primary{background:var(--gold);color:#233d31;font-weight:650;border-color:#ead9af;box-shadow:0 3px 10px #061e2520}button.primary:hover{background:#eddbb3}.quiet{color:var(--muted)}
.app{position:relative;width:100%;max-width:none;min-height:100dvh;margin:0;padding:0;display:flex;flex-direction:column}.header{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:26px 0 23px}.brand{display:flex;align-items:center;gap:15px}.brand-mark{display:block;width:35px;height:43px;background:url('../assets/cards/A_p.png') 2% 2% / 210px auto;mix-blend-mode:screen;filter:invert(1);opacity:.85;clip-path:inset(10px 0 0 0)}h1{font-family:Georgia,serif;font-size:40px;letter-spacing:-1.6px;font-weight:400;line-height:1;margin:0}.brand-dot{color:var(--gold)}.brand p{font-size:10px;letter-spacing:2.6px;margin:9px 0 0;color:var(--muted)}.brand p span{margin:0 6px;color:#6f9784}.scoreboard{display:flex;gap:0;text-align:center}.scoreboard>div{min-width:112px;padding:2px 24px;border-left:1px solid #ffffff14}.scoreboard>div:first-child{border:0}.scoreboard span{display:block;color:var(--muted);font-size:11px;letter-spacing:.6px;margin-bottom:5px}.scoreboard strong{font-variant-numeric:tabular-nums;font-size:25px;font-weight:400;letter-spacing:1px}.stats-button{font-size:13px}.toolbar{display:flex;align-items:center;gap:4px;padding:14px 0;border-block:1px solid #c8dfcd22;font-size:13px}.toolbar .primary{margin-right:8px}.toolbar-space{flex:1}.divider{height:24px;width:1px;background:#c8dfcd22;margin:0 8px}.icon-button{width:42px;padding:6px;font-size:20px}.table-meta{display:flex;justify-content:space-between;color:#aac9b099;font-size:10px;letter-spacing:1.8px;padding:22px 0}.table-meta i{display:inline-block;background:#adc3a6;width:5px;height:5px;border-radius:50%;vertical-align:2px;margin-right:7px}#game-number{letter-spacing:1px}
#play-area{padding:16px;flex:1;display:flex;flex-direction:column;min-height:0;transition:filter .2s}#tableau{position:relative;flex:1;min-height:290px;isolation:isolate;touch-action:none}.column-slot{position:absolute;top:0;width:var(--card-w);height:var(--card-h);border:1px solid #c4ddcb26;border-radius:8px;color:#b4d1bb38;display:flex;align-items:center;justify-content:center;font:26px Georgia,serif}.column-slot:after{content:attr(data-number);font-size:12px;border:1px solid #c4ddcb1c;border-radius:50%;width:25px;height:25px;display:grid;place-items:center}.column-slot.valid{background:#bddda615;border-color:#cce5b770}.column-slot.over{background:#d6df9b25;box-shadow:0 0 0 2px #ded59e,0 0 25px #e0d49c26}.column-slot.invalid{border-color:#d48f78;box-shadow:0 0 0 1px #d48f7870}.column-slot.hint-destination{box-shadow:0 0 0 3px var(--gold),0 0 28px #dfc89144}
.card{position:absolute;left:0;top:0;width:var(--card-w);height:var(--card-h);border-radius:7px;padding:0;min-height:0;user-select:none;-webkit-user-select:none;touch-action:none;perspective:900px;box-shadow:0 2px 3px #0004,0 4px 8px #001c2426;border:0;background:transparent;will-change:auto;cursor:default}.card[data-movable="true"]{cursor:grab}.card-inner{position:absolute;inset:0;transform-style:preserve-3d;transition:transform .32s ease;transform:rotateY(180deg);border-radius:inherit}.card.face-up .card-inner{transform:rotateY(0)}.card-face{position:absolute;inset:0;width:100%;height:100%;border-radius:inherit;backface-visibility:hidden;-webkit-backface-visibility:hidden;pointer-events:none;object-fit:contain;background:#fff}.card-back{transform:rotateY(180deg)}.card:hover{background:transparent}.card[data-movable="true"]:hover{box-shadow:0 0 0 1px #e8dcc2,0 6px 14px #0005}.card.selected,.card.hint-source{box-shadow:0 0 0 2px var(--gold),0 0 16px #e6d7a455}.card.dragging{cursor:grabbing;box-shadow:0 12px 22px #0006,0 0 0 1px #f8efcf;will-change:transform}.card.completing{box-shadow:0 0 0 2px var(--gold),0 0 30px #e8d4a5}.paused #play-area{filter:blur(14px);pointer-events:none;user-select:none}.paused .bottom-note{visibility:hidden}
.table-footer{display:flex;justify-content:space-between;align-items:center;gap:30px;padding:30px 0 24px;min-height:148px}.stock-area{display:flex;align-items:center;gap:20px}.stock-area>div{display:flex;flex-direction:column;gap:6px}.stock-area strong{font-size:13px;font-weight:500}.stock-area>div>span{color:var(--muted);font-size:11px}#stock{position:relative;width:136px;height:90px;padding:0;border-radius:6px}#stock:active{transform:scale(.98)}#stock:disabled{opacity:.4}#stock-piles{position:absolute;inset:0}.stock-card{position:absolute;top:0;width:62px;height:87px;border-radius:5px;box-shadow:0 3px 8px #0005}#stock-piles:empty:after{content:'Tallone esaurito';position:absolute;inset:0;border:1px dashed #c4ddcb40;border-radius:7px;display:grid;place-items:center;font-size:11px;color:var(--muted)}.runs-area{width:382px}.runs-label{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;font-size:9px;letter-spacing:1.8px;color:var(--muted)}.runs-label strong{color:var(--gold);font-size:17px;font-weight:400;letter-spacing:0}.runs-label small{font-size:12px;color:var(--muted)}#foundations{display:flex;gap:8px}.foundation{width:40px;height:56px;border:1px solid #c4ddcb30;border-radius:5px;position:relative;background:#061e2414;display:grid;place-items:center}.foundation:before{content:'K';font:16px Georgia,serif;color:#c4ddcb35}.foundation img{position:absolute;width:100%;height:100%;border-radius:4px}.bottom-note{border-top:1px solid #c8dfcd22;display:flex;align-items:center;justify-content:space-between;font-size:11px;color:#abc2b699;min-height:48px;gap:15px}.bottom-note button{font-size:11px;color:var(--muted);padding-right:0}.bottom-note button span{margin-left:10px}#instruction{line-height:1.5}
#toast{position:fixed;bottom:28px;left:50%;transform:translate(-50%,15px);background:#f3eddb;color:#203e32;padding:13px 22px;box-shadow:0 8px 32px #0004;border-radius:10px;max-width:calc(100% - 32px);width:max-content;text-align:center;font-size:13px;opacity:0;pointer-events:none;z-index:10000;transition:.2s}#toast.visible{opacity:1;transform:translate(-50%,0)}dialog{border:1px solid #d3d8ba36;background:linear-gradient(145deg,#214e40,#123c32);color:var(--ink);border-radius:20px;box-shadow:0 30px 100px #00181199;width:min(460px,calc(100% - 32px));padding:30px;max-height:calc(100dvh - 30px);overflow:auto}dialog::backdrop{background:#041c18b0;backdrop-filter:blur(6px)}.modal-topline{color:var(--gold);font-size:10px;letter-spacing:2px;text-transform:uppercase;margin-bottom:12px}dialog h2{font:32px/1.15 Georgia,serif;font-weight:400;margin:0 0 16px}dialog p{color:#c3d3c8;font-size:14px;line-height:1.7}dialog .actions{display:flex;justify-content:flex-end;gap:8px;margin-top:25px;flex-wrap:wrap}dialog .actions button{border:1px solid #ffffff25}.setting{display:flex;gap:20px;align-items:center;justify-content:space-between;padding:16px 0;border-bottom:1px solid #ffffff16}.setting strong{font-size:14px;font-weight:500}.setting small{display:block;color:var(--muted);font-size:12px;line-height:1.5;margin-top:5px}input[type="checkbox"]{width:20px;height:20px;accent-color:var(--gold);cursor:pointer;flex-shrink:0}select{background:#173e32;color:var(--ink);padding:8px;border:1px solid #ffffff40;border-radius:6px;font:inherit}.stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.stat-tile{padding:16px 12px;background:#ffffff06;border:1px solid #ffffff14;border-radius:9px}.stat-tile span{font-size:11px;color:var(--muted);display:block;margin-bottom:8px}.stat-tile strong{font-size:23px;font-weight:400;font-variant-numeric:tabular-nums}.help-list{padding-left:20px;color:#c3d3c8;font-size:14px;line-height:1.7}.help-list li{margin-bottom:10px}.key-help{font-size:12px!important}kbd{font:inherit;color:var(--gold)}#celebration{pointer-events:none;position:fixed;inset:0;overflow:hidden;z-index:10001}#celebration.is-celebrating{background:radial-gradient(circle at 50% 46%,#ffeeb34f 0 9%,#e7b84c20 22%,transparent 52%);animation:celebration-flash 2.8s ease-out forwards}.celebration-banner{position:absolute;top:40%;left:50%;padding:.16em .65em;transform:translate(-50%,-50%) scale(.3);border:2px solid #ffe59a;border-radius:.18em;color:#fff5ca;background:linear-gradient(135deg,#9b5b12,#f3be42 50%,#8a4d0a);box-shadow:0 0 0 7px #5c300880,0 0 42px #ffdc678c;font:clamp(34px,8vw,108px)/1 Georgia,serif;letter-spacing:.1em;text-shadow:0 3px 0 #7a4105,0 0 18px #fff2bf;animation:victory-banner 2.6s cubic-bezier(.12,.8,.2,1) forwards}.celebration-card{position:absolute;top:56%;width:clamp(28px,4vw,58px);aspect-ratio:2/3;display:grid;place-items:center;border:2px solid #f7db8b;border-radius:8px;color:#173e32;background:linear-gradient(135deg,#fffdf5,#d9e8d9);box-shadow:0 6px 18px #0008,0 0 16px #ffe292aa;font:clamp(19px,3vw,38px)/1 Georgia,serif;animation:victory-card 2.7s cubic-bezier(.12,.72,.32,1) forwards}.celebration-spark{position:absolute;top:28%;width:clamp(7px,1.1vw,14px);aspect-ratio:1;background:#fff3ba;clip-path:polygon(50% 0,61% 39%,100% 50%,61% 61%,50% 100%,39% 61%,0 50%,39% 39%);filter:drop-shadow(0 0 7px #ffd551);animation:victory-spark 2.35s ease-out forwards}.won-table{animation:table-glow 2.8s ease-out}.won-table .foundation{animation:run-bounce .72s ease-in-out 3}.noscript{position:fixed;inset:30%;background:#173e32;padding:30px;z-index:500}
@keyframes celebration-flash{0%,100%{opacity:0}10%,58%{opacity:1}}@keyframes victory-banner{0%{opacity:0;transform:translate(-50%,-50%) scale(.3) rotate(-10deg)}18%{opacity:1;transform:translate(-50%,-50%) scale(1.17) rotate(2deg)}30%,67%{opacity:1;transform:translate(-50%,-50%) scale(1) rotate(0)}100%{opacity:0;transform:translate(-50%,-50%) scale(1.35)}}@keyframes victory-card{0%{opacity:0;transform:translate(-50%,-50%) scale(.35) rotate(0)}16%{opacity:1}72%{opacity:1;transform:translate(var(--arc-x),var(--arc-y)) rotate(var(--turn)) scale(1)}100%{opacity:0;transform:translate(var(--arc-x),calc(var(--arc-y) + 26vh)) rotate(var(--turn)) scale(.72)}}@keyframes victory-spark{0%{opacity:0;transform:translate(0,0) scale(.15) rotate(0)}18%{opacity:1;transform:translate(calc(var(--spark-x) * .25),calc(var(--spark-y) * -.25)) scale(1.25) rotate(90deg)}100%{opacity:0;transform:translate(var(--spark-x),var(--spark-y)) scale(.2) rotate(240deg)}}@keyframes table-glow{10%,45%{filter:brightness(1.3) saturate(1.32)}100%{filter:brightness(1)}}@keyframes run-bounce{50%{transform:translateY(-12px) scale(1.08)}}
.card.valid-target{box-shadow:0 0 0 2px #c3dbb880,0 4px 10px #0003}.card.drop-target{box-shadow:0 0 0 3px var(--gold),0 0 24px #dfc89150}.card.invalid-target{box-shadow:0 0 0 2px #d48f78,0 0 14px #d48f7825}
body[data-theme="forest"]{background-image:radial-gradient(ellipse at 48% 42%,#245a48 0%,#143f34 47%,#0b2c26 100%)}
body[data-theme="ocean"]{background-image:radial-gradient(ellipse at 48% 42%,#28536b,#17394d 50%,#102833)}body[data-theme="ocean"] dialog{background:linear-gradient(145deg,#284c60,#143345)}
@media(min-width:1600px){.header{padding-top:32px}#tableau{min-height:400px}}
@media(max-width:1000px){.header{gap:10px}.scoreboard>div{min-width:86px;padding-inline:16px}.toolbar{gap:0}.toolbar button{padding-inline:9px;font-size:12px}.divider{margin-inline:3px}.table-footer{gap:20px}.stock-area{gap:14px}.runs-area{width:330px}#foundations{gap:6px}.foundation{width:36px;height:50px}}
@media(max-width:700px){.header{padding:19px 0 16px}h1{font-size:33px}.brand{gap:6px}.brand-mark{display:none}.brand p{font-size:8px;letter-spacing:1.9px}.scoreboard>div{min-width:62px;padding-inline:10px}.scoreboard strong{font-size:21px}.scoreboard span{font-size:9px}.stats-button{position:absolute;right:16px;bottom:3px;padding:4px;min-height:38px;font-size:11px}.stats-button span{display:none}.toolbar{flex-wrap:wrap;gap:3px;padding:9px 0}.toolbar .primary{margin-right:0}.toolbar button{min-height:40px;padding:7px 9px;font-size:11px}.toolbar button span[aria-hidden]{font-size:17px;margin-right:3px}.toolbar-space{flex:0}.divider{display:none}.icon-button{width:37px}.table-meta{padding:17px 0;font-size:8px;letter-spacing:1.2px}#game-number{font-size:8px}#tableau{min-height:260px}.card,.column-slot{border-radius:4px}.table-footer{min-height:115px;padding:20px 0 16px;gap:12px;align-items:flex-end}.stock-area{gap:8px;flex-direction:column;align-items:flex-start}.stock-area>div>span{display:none}.stock-area strong{font-size:10px}#stock{width:91px;height:63px}.stock-card{width:43px;height:60px}.runs-area{width:min(57%,270px)}.runs-label{font-size:7px;letter-spacing:1px;margin-bottom:9px}.runs-label strong{font-size:14px}#foundations{gap:4px}.foundation{width:calc((100% - 28px)/8);height:auto;aspect-ratio:5/7}.foundation:before{font-size:11px}.bottom-note{position:relative;padding-right:70px;min-height:44px;font-size:9px}.bottom-note>button{display:none}dialog{padding:24px}dialog h2{font-size:29px}}
@media(max-width:390px){.toolbar button{padding-inline:7px}.scoreboard>div{min-width:55px;padding-inline:7px}.scoreboard strong{font-size:19px}.brand p{letter-spacing:1.1px}.runs-label{letter-spacing:.5px}}
@media(max-height:550px) and (orientation:landscape){.header{padding:9px 0}h1{font-size:27px}.brand p{margin-top:4px}.toolbar{padding:5px 0}.table-meta{padding:10px 0}.table-footer{padding:14px 0;min-height:95px}#stock{height:65px}.stock-card{width:44px;height:62px}#tableau{min-height:200px}.bottom-note{min-height:36px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-delay:0ms!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}
body.reduced-motion *,body.reduced-motion *:before,body.reduced-motion *:after{animation-duration:.001ms!important;animation-delay:0ms!important;transition-duration:.001ms!important}

/* Blue, layered highlights make selected cards and legal destinations easier to follow. */
.column-slot.valid { background: linear-gradient(145deg, #2e9dff26, #1555c41c); border-color: #74c8ff9c; }
.column-slot.over, .column-slot.hint-destination { background: linear-gradient(145deg, #48b8ff42, #1b4ecb36); border-color: #b9e6ff; box-shadow: 0 0 0 2px #5bc1ff, 0 0 12px #2d93ffcc, 0 0 30px #1b5ee07a, inset 0 0 18px #6ed0ff24; animation: blue-highlight-pulse 1.35s ease-in-out infinite alternate; }
.card.selected, .card.hint-source, .card.drop-target { box-shadow: 0 0 0 2px #b7e7ff, 0 0 0 4px #208ee8b8, 0 0 14px #45b6ffdd, 0 0 30px #165fdf80, inset 0 0 15px #6ed0ff30; animation: blue-highlight-pulse 1.35s ease-in-out infinite alternate; }
.card.valid-target { box-shadow: 0 0 0 2px #78caffc4, 0 0 12px #238ce5b3, 0 0 24px #175ec45e; }
@keyframes blue-highlight-pulse { from { filter: brightness(1); } to { filter: brightness(1.12); } }
