:root{--night:#071813;--deep:#08271e;--forest:#064936;--felt:#0d6749;--gold:#dbb765;--line:#a77d43;--cream:#fff7e9;--muted:#b8cfc3;color-scheme:dark;font:16px system-ui,-apple-system,Segoe UI,Arial,sans-serif;color:var(--cream);background:var(--night)}
*{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(ellipse at 50% 0%,#195542 0,transparent 58%),linear-gradient(125deg,#130f0b,#05251d 28%,#061a14 70%,#1f100b);background-attachment:fixed}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.48}h1,h2,h3{font-family:Georgia,Times New Roman,serif;font-weight:500}h1{font-size:clamp(2.1rem,4.2vw,4.3rem);margin:.3em 0}h2{font-size:1.75rem;margin:.5em 0}h3{font-size:1.2rem}p{line-height:1.5}.muted,.hint{color:var(--muted)}.hint{font-size:.9rem}.center{text-align:center}.eyebrow{font-family:Georgia,serif;font-size:.8rem;letter-spacing:.25em;color:var(--gold)}.lead{font-size:1.12rem;color:#d9e5d9}.full{width:100%}header{height:76px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 max(20px,calc((100vw - 1420px)/2));position:sticky;top:0;z-index:20;background:linear-gradient(90deg,#042d22f7,#061b16fc);border-bottom:2px solid #7e5529;box-shadow:0 9px 22px #0009}.logo{font-size:2rem;color:var(--gold);display:flex;gap:12px;align-items:center;text-shadow:0 0 15px #d9ae6a52}.logo span{font:600 1.3rem Georgia,serif;letter-spacing:.18em;color:white}.logo b{color:var(--gold)}#who{display:flex;align-items:center;gap:12px}.user-chip{display:flex;align-items:center;gap:9px}.user-avatar,.player-avatar{background:radial-gradient(circle at 30% 25%,#caa76e,#294737);border:2px solid var(--gold);color:white;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;font:bold 20px Georgia,serif}.online-dot{display:inline-block;height:9px;width:9px;border-radius:50%;background:#38c678;box-shadow:0 0 9px #36cc7477;margin-right:4px}main{max-width:1430px;margin:0 auto;padding:28px 18px 50px}footer{text-align:center;color:#829f8c;font-size:.85rem;padding:23px 0;border-top:1px solid #5d432b}.btn{border:1px solid #9d7b40;color:#241b0e;background:linear-gradient(#f5d78e,#c79848);border-radius:10px;padding:12px 20px;font-weight:750;box-shadow:inset 0 1px #fff9,0 5px 14px #0005;transition:transform .18s,border-color .18s,filter .18s}.btn:not(:disabled):hover{transform:translateY(-2px);filter:brightness(1.13)}.btn.primary{background:linear-gradient(#f8db93,#cda354);color:#19241d}.btn.outline,.btn.quiet{background:#052e24;color:#f1e6d0;border:1px solid #9c754a}.btn.quiet{background:transparent;border-color:transparent;box-shadow:none;color:#f0d398}.btn.small{font-size:.8rem;padding:8px 12px}.panel{border-radius:20px;padding:30px;background:linear-gradient(145deg,#052f25,#071a17);border:1px solid #956b3b;box-shadow:0 24px 70px #0009,inset 0 1px #e7ca7c24}.auth-wrap{display:grid;place-items:center;min-height:75vh}.auth-panel{width:min(96%,500px);text-align:center;padding:35px 42px;background:linear-gradient(140deg,#062e24e8,#071810f5);border:2px solid #ad8147;border-radius:22px;box-shadow:0 0 0 7px #271609,0 22px 65px #000b}.crest{font-size:2.3rem;color:#e9c576}.crest span{color:#cc3e39}.auth-panel form{display:grid;gap:17px;text-align:left;margin-top:28px}.auth-panel label,.choice label,.action-line label,.bid-controls label{display:flex;flex-direction:column;gap:7px;font-size:.9rem;color:#eedcb9}.auth-footer{margin-top:22px}input,select{width:100%;background:#061e1a;color:var(--cream);padding:12px 13px;border:1px solid #7d775d;border-radius:9px}input:focus,select:focus{outline:2px solid var(--gold)}.error{min-height:18px;color:#ffc8a5;margin:12px 0;font-size:.94rem}.hero{text-align:center;min-height:220px;padding:24px 5px 20px;position:relative;border-bottom:1px solid #9171466e}.hero::before,.hero::after{content:'♠';position:absolute;top:65px;color:#d3af657c;font-size:100px;filter:drop-shadow(2px 5px 5px black)}.hero::before{left:5%}.hero::after{content:'♥';right:5%;color:#933c3a9e}.hero h1 em{font-style:normal;color:var(--gold)}.hero p{font-family:Georgia,serif;font-size:1.45rem;color:#f4e2c6;margin-top:0}.section-heading{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:8px}.games{display:grid;grid-template-columns:repeat(auto-fit,minmax(198px,1fr));gap:15px;margin:23px 0 40px}.game-tile{color:inherit;border:1px solid #a5804b;background:linear-gradient(150deg,#4e2a12 0%,#26170e 54%,#112b20 100%);border-radius:14px;box-shadow:0 6px 0 #2c170e,0 15px 30px #0008;overflow:hidden;min-height:204px;text-align:left;display:flex;flex-direction:column;padding:0;transition:transform .2s,box-shadow .2s}.game-tile:hover{transform:translateY(-5px);box-shadow:0 11px 0 #2c170e,0 20px 36px #000b}.tile-felt{height:96px;background:radial-gradient(ellipse at center,#136f54,#06422f);border-bottom:3px solid #a77b3d;display:flex;align-items:center;justify-content:center;gap:7px}.tile-symbol{font-size:52px;text-shadow:0 5px 11px #0009;color:#dfbc6e}.tile-mini-card{width:48px;height:66px;border-radius:5px;background:linear-gradient(#fffaf2,#e9dfc5);box-shadow:2px 5px 4px #0008;color:#b21a2c;font:36px Georgia,serif;display:grid;place-items:center;transform:rotate(15deg)}.tile-content{padding:14px;display:flex;flex-direction:column;gap:7px;flex:1}.tile-content strong{font:1.37rem Georgia,serif}.tile-content small{color:#d5bd96}.tile-arrow{color:var(--gold);font-size:.8rem;margin-top:auto;text-align:right}.lobby-list{background:#08251dc7;border:1px solid #806139;border-radius:16px;padding:20px}.rooms{display:grid;gap:8px}.room-row{display:flex;align-items:center;justify-content:space-between;gap:12px;background:#0b3429;border:1px solid #446448;border-radius:11px;padding:10px 15px}.room-detail{display:flex;align-items:center;gap:14px}.room-detail small,.player-pane small{display:block;color:#a6bca8}.room-icon{font-size:27px;color:var(--gold)}.choice{max-width:680px;margin:30px auto;text-align:center}.choice-icon{font-size:65px;color:var(--gold)}.mode-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;margin:20px 0}.btn.mode-card{background:linear-gradient(#12604b,#0b3027);color:var(--cream);border:2px solid #d5ad5e;min-height:90px}.choice label{text-align:left;margin:24px auto;max-width:400px}.table-toolbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin:8px 0 22px;color:#f3dbb4}.table-top{border-radius:130px / 65px;position:relative;padding:25px 45px 47px;min-height:560px;background:radial-gradient(ellipse at 50% 40%,#126e50,#07583f 52%,#064631 85%,#063526);border:15px solid transparent;background-clip:padding-box;box-shadow:inset 0 0 0 2px #d1b072,inset 0 0 0 10px #005438,inset 0 0 65px #01190ca0,0 0 0 7px #3e1d0e,0 0 0 12px #85512d,0 0 0 16px #301507,0 23px 50px #000b;margin:34px 18px 44px}.table-top::before{content:'';z-index:-1;position:absolute;inset:-17px;border-radius:inherit;background:repeating-linear-gradient(113deg,#6c381b 0px,#8b532d 12px,#4d2411 20px,#ae7035 27px);box-shadow:inset 0 0 8px #fbde918c}.table-header{text-align:center}.table-header h2{color:#ffdda3;font-size:2rem;text-shadow:0 2px 6px #0008;margin:5px}.table-suptitle{font:12px Georgia,serif;letter-spacing:.18em;color:#d8c08d}.statuses{display:flex;gap:6px;justify-content:center;flex-wrap:wrap;margin:15px auto}.stat{border:1px solid #70a18c;background:#032b237f;color:#eff2da;border-radius:20px;padding:7px 11px;font-size:.78rem}.opponents{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin:12px 0}.player-pane{background:#0531279c;border:1px solid #648571;border-radius:15px;min-width:136px;padding:9px 14px;text-align:center}.player-pane.active-turn{box-shadow:0 0 0 2px var(--gold),0 0 30px #c9aa6a68}.player-avatar{width:33px;height:33px;font-size:17px;margin-bottom:5px}.bot-pill,.gold-pill{font-size:.67rem;border-radius:6px;padding:2px 5px;background:#123c39;color:#e9c575}.gold-pill{background:#9b7132;color:#171912}.opponent-cards{margin-top:6px;display:flex;justify-content:center}.opponent-cards .card{width:39px;height:57px;margin-left:-8px}.opponent-cards .card:first-child{margin-left:0}.opponent-cards .corner{font-size:10px}.opponent-cards .card-art{font-size:12px}.opponent-cards .court-frame{font-size:12px}.play-zone{display:flex;justify-content:center;align-items:flex-start;gap:35px;min-height:125px;margin:15px 0;text-align:center;flex-wrap:wrap}.play-zone p{font-size:.87rem;color:#e2d6b3;margin:7px}.cardrow{display:flex;gap:5px;justify-content:center;flex-wrap:wrap;align-items:flex-start}.card{width:72px;height:107px;border:2px solid #fff9ec;border-radius:8px;display:inline-flex;position:relative;flex-shrink:0;color:#242323;box-shadow:0 5px 11px #001c17a8,0 0 1px #000;outline:none;transition:transform .22s,box-shadow .22s;background:linear-gradient(115deg,#fffdf6,#f8f3e8 48%,#e9ddc6);vertical-align:top}.card.french{padding:0}.card.french.red{color:#b41e2b}.card.french.black{color:#171b1f}.card.french .corner{position:absolute;font:800 17px Georgia,serif;left:4px;top:2px;display:flex;flex-direction:column;line-height:.9;align-items:center;z-index:1}.card.french .corner span{font-size:13px;margin-top:4px}.card.french .corner.bottom{left:auto;top:auto;right:4px;bottom:2px;transform:rotate(180deg)}.card-art{width:100%;height:100%;display:grid;place-items:center}.single-pip{font-size:45px}.pips{position:relative;width:78%;height:75%;font-size:23px}.pip{position:absolute;transform:translate(-50%,-50%);line-height:1}.court-frame{display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;width:70%;height:69%;font-family:Georgia,serif;background:repeating-linear-gradient(130deg,#dec58c 0px,#fff3c7 5px,#dec58c 8px);border:2px ridge #a68e52;box-shadow:inset 0 0 0 2px #eee2bc;color:#222}.court-frame .crown{font-size:17px;color:#ad782c}.court-name{font-size:31px;line-height:1;color:#63352a;text-shadow:1px 1px #fff3c8}.court-suit{font-size:21px}.court-bottom{display:none}.joker{font-size:48px;color:#a98940}.card.face-down{background:repeating-linear-gradient(135deg,#0b3551 0,#0b3551 5px,#d3d8d9 5px,#d3d8d9 6px,#164461 6px,#164461 11px);border:5px solid #faf9ea;align-items:center;justify-content:center;outline:1px solid #344d67;box-shadow:inset 0 0 0 2px #d4ba75,0 5px 10px #0019}.card-back-emblem{font:43px Georgia,serif;color:#d4c089;background:#0a2a40a8;border:1px solid #e5d2a2;border-radius:50%;line-height:1;padding:6px}.card.uno{display:grid;place-items:center;border:4px solid white;color:white!important;font-weight:1000}.card.uno.red{background:#d84c50}.card.uno.blue{background:#2863b5}.card.uno.yellow{background:#e8b824;color:#1a241e!important}.card.uno.green{background:#299b59}.card.uno.wild{background:conic-gradient(#e8b824 0 25%,#299b59 25% 50%,#d84c50 50% 75%,#2863b5 75%)}.uno-oval{display:grid;place-items:center;background:#161d1b;border:2px solid #fff7;border-radius:50%;height:67%;width:88%;transform:rotate(-22deg);color:white;font-size:1.13rem;text-shadow:1px 2px 3px #000}.card.picked{transform:translateY(-13px)!important;box-shadow:0 0 0 3px #e7c36e,0 0 18px #ffd879bd,0 9px 14px #0008;z-index:2}.card[data-cmd]:hover{transform:translateY(-5px);box-shadow:0 0 0 2px #eec76d,0 9px 15px #000b}.your-hand{border-top:1px solid #9fc09a5a;margin-top:26px;padding-top:15px}.hand-label{text-align:center;font:1.22rem Georgia,serif;color:#ffe0a3;margin-bottom:15px}.turn-indicator{display:inline-block;font:600 .72rem system-ui;background:#0c9967;border-radius:12px;padding:5px 9px;color:#fff;vertical-align:middle;margin-left:8px}.table-actions{text-align:center;margin:17px auto 0}.table-actions .btn{margin:5px}.action-line{display:flex;justify-content:center;align-items:flex-end;flex-wrap:wrap;gap:10px;margin:11px 0}.action-line label,.bid-controls label{font-size:.83rem;min-width:140px}.action-line select,.bid-controls select{padding:8px}.color-picker{display:flex;gap:10px;justify-content:center}.color-chip{width:32px;height:32px;border:2px solid #fff;border-radius:50%}.color-chip.red{background:#db454a}.color-chip.blue{background:#287bd0}.color-chip.yellow{background:#e4b72c}.color-chip.green{background:#289f5b}.color-chip.chosen{box-shadow:0 0 0 3px var(--gold)}.bid-controls{display:flex;gap:14px;justify-content:center;margin:10px 0}.melds{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;margin:18px 0}.meld{background:#092f2480;padding:8px;border:1px dashed #c9d1a7;border-radius:10px}.meld small{display:block;margin:4px;color:#e7e2be}.meld .card{height:69px;width:47px}.meld .corner{font-size:11px}.meld .corner span{font-size:8px}.meld .pips{font-size:16px}.meld .court-name{font-size:18px}.trick-card{display:flex;flex-direction:column;align-items:center;gap:3px}.trick-card small{font-size:.73rem}.game-log{background:#061d19d8;padding:16px 24px;border:1px solid #725434;border-radius:14px;max-width:800px;margin:10px auto}.game-log h3{color:#edc878}.game-log p{border-bottom:1px solid #3a594a;padding:6px;margin:0;color:#c9d7cb;font-size:.85rem}.finish-banner{background:#112d21;border:2px solid var(--gold);border-radius:18px;text-align:center;padding:24px;margin:20px auto;max-width:700px}.finish-banner span{letter-spacing:.2em;color:var(--gold)}.finish-banner h2{color:#f8dfa4}.sol-header{display:flex;flex-wrap:wrap;gap:20px;align-items:flex-start;justify-content:center;margin:24px auto}.sol-header>b,.sol-header b{display:block;font-size:.85rem;margin-bottom:8px;color:#e7dba8}.foundations{display:flex;flex-wrap:wrap;gap:8px}.sol-foundation,.sol-waste{display:flex;align-items:center;gap:6px;flex-direction:column}.slot-drop{background:#123c3188;border:1px solid #d5b874;color:#f4dfac;border-radius:8px;padding:6px 8px;font-size:.8rem;min-height:30px}.slot-drop:hover{background:#285e46}.empty-foundation,.empty-col{width:72px;height:105px;border:2px dashed #9db49777;border-radius:8px;display:grid;place-items:center;color:#dfc99570;font-size:34px}.sol-columns{display:grid;grid-template-columns:repeat(7,minmax(73px,1fr));gap:5px;max-width:1040px;margin:25px auto;min-height:310px}.sol-col{display:flex;flex-direction:column;align-items:center}.sol-col .slot-drop{width:95%;margin-bottom:10px}.sol-item{display:block;padding:0;margin:0;background:none;border:0;line-height:0;position:relative}.sol-col .sol-item:not(:first-of-type){margin-top:-55px}.sol-item.sol-picked>.card{box-shadow:0 0 0 4px #ffd36c,0 0 21px #eac365;transform:translateY(-5px)}.sol-col .card{height:103px;width:70px}.sol-item:disabled{opacity:1}.sol-header .sol-item{margin:5px auto}.animate-cards .table-top .your-hand .card,.animate-cards .play-zone .card,.animate-cards .opponent-cards .card{animation:card-deal .47s cubic-bezier(.17,.67,.2,1.08) both}.animate-cards .your-hand .card:nth-child(2n){animation-delay:.08s}.animate-cards .your-hand .card:nth-child(3n){animation-delay:.16s}.animate-cards .play-zone .card{animation-name:card-play;animation-duration:.38s}@keyframes card-deal{from{opacity:0;transform:translate(10px,-30px) rotate(12deg) scale(.88)}to{opacity:1;transform:translate(0,0) rotate(0) scale(1)}}@keyframes card-play{from{opacity:.25;transform:translate(-90px,-30px) rotate(-20deg) scale(.65)}to{opacity:1;transform:translate(0,0) scale(1)}}
@media(max-width:1000px){.table-top{border-radius:52px;padding:20px 15px;margin:30px 9px 45px}.table-top::before{border-radius:inherit}.sol-columns{grid-template-columns:repeat(7,minmax(43px,1fr))}.sol-col .card{width:51px;height:78px}.sol-col .sol-item:not(:first-of-type){margin-top:-36px}.sol-col .card .corner{font-size:12px}.sol-col .card .corner span{font-size:9px}.sol-col .pip{font-size:16px}.sol-col .card .court-frame .court-name{font-size:18px}.sol-col .slot-drop{font-size:.7rem;padding:5px 2px}}
@media(max-width:650px){header{padding:8px 12px;height:65px}.logo{font-size:1.4rem}.logo span{font-size:.85rem}.user-chip{font-size:.8rem}.user-avatar{width:30px;height:30px}.hero::before,.hero::after{display:none}.hero{min-height:160px;padding:15px 0}.hero p{font-size:1.1rem}.hero h1{font-size:2.2rem}.games{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.tile-felt{height:80px}.game-tile{min-height:176px}.tile-content strong{font-size:1rem}.tile-content small{font-size:.73rem}.tile-symbol{font-size:35px}.tile-mini-card{width:35px;height:50px;font-size:24px}.auth-panel{padding:22px}.table-toolbar{font-size:.75rem}.table-top{border:8px solid transparent;border-radius:25px;padding:15px 5px 24px;min-height:390px;margin:25px 5px 36px;box-shadow:inset 0 0 0 2px #c5a56c,inset 0 0 0 6px #005438,0 0 0 5px #79502a,0 8px 24px #000a}.table-top h2{font-size:1.5rem}.card{width:47px;height:72px;border-width:1px;border-radius:5px}.card.french .corner{font-size:12px;left:2px}.card.french .corner span{font-size:9px}.card-art .single-pip{font-size:32px}.pips{font-size:15px}.court-frame .court-name{font-size:20px}.court-frame .crown,.court-suit{font-size:12px}.card.back{font-size:26px}.card.face-down{border-width:3px}.card-back-emblem{font-size:25px}.opponents{gap:5px}.player-pane{min-width:106px;padding:5px}.opponent-cards .card{width:27px;height:43px;margin-left:-10px}.player-avatar{width:26px;height:26px;font-size:12px}.play-zone{gap:15px}.room-row{padding:8px}.room-detail small{font-size:.75rem}.game-log{padding:12px}.sol-columns{gap:1px;grid-template-columns:repeat(7,minmax(37px,1fr))}.sol-col .card{width:42px;height:67px}.sol-col .sol-item:not(:first-of-type){margin-top:-34px}.sol-col .card .corner{font-size:10px}.sol-col .card .corner span{font-size:8px}.sol-col .slot-drop{font-size:10px}.empty-col{width:40px;height:66px}.sol-header{gap:8px}.foundations{gap:4px}.sol-foundation>.empty-foundation{width:38px;height:56px}.sol-foundation .card{height:58px;width:42px}.hand-label{font-size:1rem}.turn-indicator{font-size:.65rem}.stat{font-size:.69rem;padding:5px}.btn{padding:9px 12px;font-size:.86rem}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

/* Klondike: la prima carta parte subito sotto l’intestazione; le successive si sovrappongono. */
.sol-col .slot-drop + .sol-item{margin-top:0}
.sol-col .sol-item + .sol-item{margin-top:-55px}
@media(max-width:1000px){.sol-col .sol-item + .sol-item{margin-top:-36px}}
@media(max-width:650px){.sol-col .sol-item + .sol-item{margin-top:-34px}}

/* Valori geometrici statici: nessun attributo style inline, compatibile con CSP. */
.pip-0{left:50%;top:18%}
.pip-1{left:50%;top:82%}
.pip-2{left:22%;top:32%}
.pip-3{left:78%;top:68%}
.pip-4{left:22%;top:68%}
.pip-5{left:78%;top:32%}
.pip-6{left:50%;top:50%}
.pip-7{left:22%;top:50%}
.pip-8{left:78%;top:50%}
.pip-9{left:50%;top:35%}
/* v6: riordino della mano con drag & drop, pulsanti abbandono */
.card{-webkit-user-select:none;user-select:none}.hand-row .card{touch-action:none;cursor:grab}.hand-row .card.drag-ghost{opacity:.3;transform:none;box-shadow:0 0 0 2px var(--gold) inset}
.drag-float{position:fixed!important;z-index:1000;margin:0!important;pointer-events:none;transition:none!important;box-shadow:0 18px 30px #000b,0 0 0 2px var(--gold)!important}
body.dragging,body.dragging *{cursor:grabbing!important;-webkit-user-select:none;user-select:none}
.drag-hint{margin:8px 0 0;text-align:center;font-size:.78rem;color:var(--muted)}
.row-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.btn.danger{background:#7a1f1a;color:#ffe9dc;border-color:#d0715a}

