:root{--felt:#0f3d2e;--felt-light:#165a42;--felt-dark:#0a2a20;--gold:#d4af37;--gold-dim:#a88b2a;--cream:#f7f1e3;--ink:#1a2420;--red:#c0392b;--black:#1a1a1a;--card-back:#1e4d7b;--card-back-pattern:#2a6aad;--shadow:0 3px 8px #00000052;--slot-border:#ffffff38;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--hud-h:48px;--banner-h:0px;--dock-pad-top:8px;--dock-pad-bottom:max(10px,env(safe-area-inset-bottom,0px));--dock-btn-h:52px;--dock-h:calc(var(--dock-pad-top) + var(--dock-btn-h) + var(--dock-pad-bottom));--gap:5px;--table-pad-x:8px;--card-w:min(78px,calc((100vw - var(--table-pad-x)*2 - var(--gap)*6)/7));--card-h:calc(var(--card-w)*1.42);--overlap-down:calc(var(--card-h)*.18);--overlap-up:calc(var(--card-h)*.32);--radius:9px;--waste-fan:min(22px,calc(var(--card-w)*.42));--dock-bg:#0a1f18}body.has-banner{--banner-h:34px}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;margin:0;padding:0}html{height:100%;height:100dvh}body{color:var(--cream);background:var(--dock-bg);overflow:hidden;user-select:none;-webkit-user-select:none;touch-action:manipulation;height:100%;display:flex;flex-direction:column;height:100dvh;max-height:100dvh;font-family:Nunito,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif}.felt{position:fixed;inset:0;bottom:var(--dock-h);background:radial-gradient(ellipse 120% 80% at 50% -10%,var(--felt-light)0%,transparent 55%),radial-gradient(circle at 20% 80%,#00000026 0%,transparent 40%),radial-gradient(circle at 80% 60%,#0000001f 0%,transparent 35%),repeating-linear-gradient(0deg,transparent,transparent 2px,#00000008 2px,#00000008 3px),var(--felt);pointer-events:none;z-index:0}.hud{position:relative;z-index:30;display:flex;height:calc(var(--hud-h) + var(--safe-top));padding:var(--safe-top)8px 0;background:linear-gradient(#00000047,#0000);flex-shrink:0;align-items: center;gap:6px}.brand{display:flex;color:var(--cream);text-decoration:none;flex-shrink:0;align-items: center;gap:4px;min-width:0}.brand-mark{color:var(--gold);font-size:1.25rem;line-height:1}.brand-name{letter-spacing:.01em;font-family:Fraunces,Georgia,serif;font-size:.95rem;font-weight:700}@media (max-width:420px){.brand-name{display:none}}.stats{display:flex;font-variant-numeric:tabular-nums;flex:1;justify-content:center;gap:5px;min-width:0;font-size:.75rem;font-weight:700}.stat{text-align:center;background:#00000052;border:1px solid #ffffff1a;border-radius:999px;min-width:2.6rem;padding:4px 8px}.hud-actions{display:flex;flex-shrink:0;align-items: center;gap:6px}.icon-btn{color:var(--cream);cursor:pointer;display:grid;background:#00000047;border:1.5px solid #ffffff26;border-radius:10px;place-items: center;width:36px;height:36px;font-size:.95rem;font-weight:800}.icon-btn:active{transform:scale(.94)}.icon-btn[aria-pressed=false]{opacity:.45}.icon-btn[aria-expanded=true]{background:#d4af3738;border-color:#d4af3773}.hamburger{display:flex;flex-direction:column;justify-content:center;gap:4px;width:16px}.hamburger span{display:block;background:var(--cream);border-radius:2px;height:2px}.menu-wrap{position:relative;z-index:30}.settings-menu{position:absolute;z-index:40;background:linear-gradient(165deg,#1a4a38 0%,#0c261d 100%);border:1.5px solid #d4af3759;border-radius:14px;min-width:200px;padding:8px;top:calc(100% + 6px);right:0;box-shadow:0 12px 32px #00000080}.settings-menu[hidden]{display:none}.settings-menu__title{letter-spacing:.14em;text-transform:uppercase;color:var(--gold);margin:0;padding:4px 10px 8px;font-size:.68rem;font-weight:800}.settings-item{display:flex;color:var(--cream);cursor:pointer;text-align:left;background:0 0;border:none;border-radius:10px;justify-content:space-between;align-items: center;gap:16px;width:100%;padding:12px;font-family:inherit;font-size:.92rem;font-weight:700}.settings-item:active,.settings-item:hover{background:#ffffff14}.settings-item__label{flex:1}.settings-item__value{font-variant-numeric:tabular-nums;color:var(--gold);text-align:right;min-width:1.5rem;font-weight:800}.settings-item[aria-pressed=false] .settings-item__value{color:#f7f1e373}.settings-item--static{cursor:default}.settings-item--static:hover,.settings-item--static:active{background:0 0}.draw-toggle{display:inline-flex;overflow:hidden;position:relative;z-index:1;touch-action:manipulation;background:#00000047;border:1.5px solid #ffffff2e;border-radius:10px;gap:0}.draw-toggle__btn{color:#f7f1e38c;cursor:pointer;touch-action:manipulation;-webkit-user-select:none;user-select:none;background:0 0;border:none;min-width:44px;min-height:40px;padding:8px 14px;font-family:inherit;font-size:.95rem;font-weight:800}.draw-toggle__btn+.draw-toggle__btn{border-left:1.5px solid #ffffff1f}.draw-toggle__btn[aria-pressed=true]{background:linear-gradient(160deg,var(--gold)0%,var(--gold-dim)100%);color:var(--ink)}.draw-toggle__btn:disabled{opacity:.4;cursor:default}.settings-hint{color:#f7f1e38c;text-align:left;margin:-2px 10px 8px;font-size:.72rem;font-weight:700}.settings-hint[hidden]{display:none}.settings-backdrop{position:fixed;z-index:20;background:0 0;inset:0}.mode-banner{position:relative;z-index:10;display:flex;height:var(--banner-h);letter-spacing:.02em;color:var(--ink);background:linear-gradient(90deg,var(--gold-dim),var(--gold),var(--gold-dim));flex-shrink:0;justify-content:center;align-items: center;gap:10px;padding:0 12px;font-size:.78rem;font-weight:800}.mode-banner[hidden]{display:none}.mode-banner-exit{color:var(--ink);font:inherit;cursor:pointer;background:#ffffff59;border:1.5px solid #0003;border-radius:999px;padding:2px 10px;font-size:.72rem;font-weight:800}.table{position:relative;z-index:1;padding:6px var(--table-pad-x)4px;display:flex;overflow:hidden;flex-direction:column;flex:auto;gap:10px;min-height:0}.top-row{display:flex;overflow:visible;flex-shrink:0;justify-content:space-between;align-items: flex-start;gap:8px;padding-top:4px}.foundations{display:flex;gap:var(--gap);overflow:visible}.stock-area{display:flex;gap:var(--gap);overflow:visible;flex-direction:row;flex-shrink:0}.pile{width:var(--card-w);height:var(--card-h);border-radius:var(--radius);position:relative;border:2px dashed var(--slot-border);cursor:pointer;-webkit-appearance:none;appearance:none;color:inherit;font:inherit;overflow:visible;background:#00000024;flex-shrink:0;padding:0}.pile--stock{display:grid;background:#0000002e;border-style:solid;border-color:#ffffff1f;place-items: center}.pile--stock.empty{border-style:dashed;border-color:var(--slot-border)}.pile--stock.empty:after{content:"↻";font-size:calc(var(--card-w)*.42);opacity:.5;color:var(--cream)}.pile--stock.dead.empty:after{content:"—";opacity:.3;font-size:calc(var(--card-w)*.35)}.pile--waste{width:var(--card-w);min-width:var(--card-w);border-style:dashed;border-color:var(--slot-border);cursor:default;background:#0000001f}.pile--waste:not(.empty){width:calc(var(--card-w) + var(--waste-fan)*2);background:0 0;border-style:solid;border-color:#0000}.pile--waste.waste--draw3:not(.empty){width:calc(var(--card-w) + var(--waste-fan)*2)}.pile--waste.empty:after{content:"";position:absolute;border-radius:inherit;inset:0}.pile--foundation{display:grid;place-items: center}.pile--foundation:before{content:attr(data-suit);font-size:calc(var(--card-w)*.4);opacity:.32;color:var(--cream);pointer-events:none}.pile--foundation.has-cards:before{display:none}.pile.drop-target{outline:2px dashed #ffe08ad9;outline-offset:3px;background:#d4af371f}.column.drop-target{outline:2px dashed #ffe08abf;outline-offset:4px;border-radius:calc(var(--radius) + 4px);background:#d4af371a;box-shadow:0 0 0 10px #d4af370a}.card.drop-target{box-shadow:0 0 0 2px #ffe08ae6,0 0 14px #d4af3773,var(--shadow)}.pile.drop-hover,.column.drop-hover{outline:3px solid #ffe08a;outline-offset:3px;background:#ffe08a29;box-shadow:0 0 22px #ffe08a73}.card.drop-hover{box-shadow:0 0 0 3px #ffe08a,0 0 20px #ffe08a8c,var(--shadow)}body.is-dragging .column{margin-bottom:-28px;padding-bottom:28px}body.is-dragging .pile--foundation{box-shadow:0 0 0 12px #0000}.card{position:absolute;width:var(--card-w);height:var(--card-h);border-radius:var(--radius);box-shadow:var(--shadow);cursor:grab;touch-action:none;will-change:transform;-webkit-user-select:none;user-select:none;overflow:hidden;contain:layout style;border:1.5px solid #0003;transition:transform 80ms,box-shadow 80ms;top:0;left:0}body.is-dragging,body.is-dragging *{cursor:grabbing!important}body.is-dragging{overflow:hidden;touch-action:none}body.is-dragging .tableau{overflow:hidden;pointer-events:auto}.card.dragging-source{opacity:.35;filter:grayscale(.2)}.drag-ghost{position:fixed;z-index:1000;pointer-events:none;filter:drop-shadow(0 12px 18px #00000073);opacity:.96;will-change:transform;top:0;left:0}.drag-ghost .card{cursor:grabbing}.card--back{background:linear-gradient(135deg,#ffffff14 25%,transparent 25%),linear-gradient(225deg,#ffffff14 25%,transparent 25%),linear-gradient(45deg,#ffffff14 25%,transparent 25%),linear-gradient(315deg,#ffffff14 25%,transparent 25%),var(--card-back);background-position:0 0,6px 0,6px -6px,0 6px;background-size:12px 12px;border-color:#ffffff26}.card--back:after{content:"";position:absolute;border:1.5px solid #fff3;border-radius:5px;inset:5px}.card--face{background:linear-gradient(160deg,#fffef8 0%,var(--cream)100%);color:var(--black);display:flex;flex-direction:column;justify-content:center;align-items: center;gap:0;padding:3px}.card--face.red{color:var(--red)}.card--face.black{color:var(--black)}.card-rank{font-family:Fraunces,Georgia,serif;font-weight:700;font-size:clamp(11px,calc(var(--card-w)*.3),22px);letter-spacing:-.02em;line-height:1}.card-suit{font-size:clamp(14px,calc(var(--card-w)*.4),28px);margin-top:1px;line-height:1}.card-corner{position:absolute;display:flex;line-height:1;font-size:clamp(9px,calc(var(--card-w)*.22),14px);flex-direction:column;align-items: center;max-width:45%;font-family:Fraunces,Georgia,serif;font-weight:800;top:2px;left:3px}.card-corner .tiny-suit{font-size:clamp(8px,calc(var(--card-w)*.18),12px);font-weight:400}.card.selected{outline:2.5px solid var(--gold);outline-offset:1px;transform:translateY(-5px);box-shadow:0 10px 22px #00000073,0 0 0 2px #d4af3759;z-index:50!important}.card.selected.dragging-source{transform:none}.card.hint{animation:hint-pulse .9s ease-in-out 2}@keyframes hint-pulse{0%,to{box-shadow:var(--shadow)}50%{box-shadow:0 0 0 3px var(--gold),0 0 18px #d4af378c}}.card.deal-in{animation:deal-in .32s cubic-bezier(.2,.85,.3,1)both;animation-delay:calc(var(--deal-i,0)*28ms);pointer-events:none}@keyframes deal-in{0%{opacity:0;transform:translateY(-52px)scale(.82)rotate(-12deg)}70%{opacity:1}to{opacity:1;transform:translate(0,0)scale(1)rotate(0)}}@media (prefers-reduced-motion:reduce){.card.deal-in{animation:none}}.pile--waste .card{left:calc(var(--waste-i,0)*var(--waste-fan))}.pile--waste .card--waste-peek .card-rank,.pile--waste .card--waste-peek .card-suit{opacity:.35}.pile--waste .card--waste-peek .card-corner{opacity:1}.tableau{display:grid;grid-template-columns:repeat(7,var(--card-w));justify-content:space-between;column-gap:var(--gap);overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;flex:1;align-content: start;min-height:0;padding:6px 0 12px}.column{position:relative;width:var(--card-w);min-height:var(--card-h);overflow:visible}.column.empty{border-radius:var(--radius);border:2px dashed var(--slot-border);height:var(--card-h);background:#0000001a}.dock{position:relative;z-index:10;display:grid;grid-template-columns:repeat(4,1fr);height:var(--dock-h);padding:var(--dock-pad-top)10px var(--dock-pad-bottom);background:var(--dock-bg);border-top:1px solid #ffffff1a;flex-shrink:0;align-items:stretch;gap:8px;box-shadow:0 -8px 24px #00000059}.dock-btn{display:flex;height:var(--dock-btn-h);color:var(--cream);cursor:pointer;background:#ffffff0f;border:1.5px solid #ffffff1f;border-radius:14px;flex-direction:column;justify-content:center;align-items: center;gap:2px;padding:4px;font-family:inherit;font-size:.7rem;font-weight:700}.dock-btn:disabled{opacity:.35;cursor:default}.dock-btn:not(:disabled):active{transform:scale(.96)}.dock-btn--primary{background:linear-gradient(160deg,var(--gold)0%,var(--gold-dim)100%);color:var(--ink);border-color:#00000026}.dock-icon{font-size:1.15rem;font-weight:800;line-height:1}.modal{background:0 0;border:none;border-radius:22px;max-width:min(340px,100vw - 32px);margin:auto;padding:0}.modal--wide{max-width:min(400px,100vw - 24px)}.modal--calendar{overflow:auto;width:100%;max-width:min(400px,100vw - 16px);max-height:min(92dvh,720px)}.modal::backdrop{backdrop-filter:blur(4px);background:#05120cb8}.modal-inner{text-align:center;color:var(--cream);background:linear-gradient(165deg,#1a4a38 0%,#0f2e24 100%);border:2px solid #d4af3759;border-radius:22px;padding:28px 24px 22px;box-shadow:0 24px 48px #00000073}.eyebrow{letter-spacing:.18em;text-transform:uppercase;color:var(--gold);margin-bottom:6px;font-size:.72rem;font-weight:800}.modal-inner h2{margin-bottom:8px;font-family:Fraunces,Georgia,serif;font-size:1.9rem}.modal-inner p:not(.eyebrow){opacity:.85;margin-bottom:20px;font-size:.95rem;line-height:1.4}.modal-actions{display:flex;flex-direction:column;gap:8px}.action{color:var(--cream);cursor:pointer;background:#00000040;border:1.5px solid #ffffff2e;border-radius:14px;padding:12px 16px;font-family:inherit;font-size:1rem;font-weight:800}.action--primary{background:linear-gradient(160deg,var(--gold)0%,var(--gold-dim)100%);color:var(--ink);border-color:#0000}.action:active{transform:scale(.98)}.toast{position:fixed;left:50%;bottom:calc(var(--dock-h) + 12px);color:var(--cream);opacity:0;pointer-events:none;z-index:100;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:#0a1e16eb;border:1px solid #d4af3766;border-radius:999px;max-width:calc(100vw - 32px);padding:10px 18px;transition:opacity .18s,transform .18s;font-size:.88rem;font-weight:700;transform:translate(-50%)translateY(12px)}.toast.show{opacity:1;transform:translate(-50%)translateY(0)}.cal-sheet{color:var(--cream);text-align:center;background:radial-gradient(120% 60% at 50% -10%,#1e6b4f 0%,#0000 55%),linear-gradient(165deg,#123d30 0%,#0a241c 100%);border:2px solid #d4af3766;border-radius:22px;padding:16px 14px 18px;box-shadow:0 24px 48px #00000080}.cal-head{display:flex;text-align:left;justify-content:space-between;align-items: flex-start;gap:8px;margin-bottom:4px}.cal-brand{display:flex;align-items: center;gap:10px}.cal-brand-mark{display:grid;background:linear-gradient(160deg,var(--gold)0%,var(--gold-dim)100%);color:var(--ink);border-radius:12px;place-items: center;width:42px;height:42px;font-size:1.4rem;box-shadow:0 4px #00000040}.cal-kicker{letter-spacing:.16em;text-transform:uppercase;color:#f7f1e3a6;margin:0;font-size:.68rem;font-weight:800}.cal-brand h2{background:linear-gradient(180deg,#ffe9a0 0%,var(--gold)55%,var(--gold-dim)100%);color:#0000;filter:drop-shadow(0 1px 0 #00000059);-webkit-background-clip:text;background-clip:text;margin:0;font-family:Fraunces,Georgia,serif;font-size:1.45rem;line-height:1.1}.cal-close{color:var(--cream);cursor:pointer;background:#00000047;border:1.5px solid #ffffff26;border-radius:10px;flex-shrink:0;width:36px;height:36px;font-size:1rem}.cal-tagline{display:inline-block;color:var(--gold);background:#0003;border:1.5px solid #d4af3773;border-radius:999px;margin:6px auto 14px;padding:4px 14px;font-size:.78rem;font-weight:800}.cal-month-nav{display:grid;grid-template-columns:40px 1fr 40px;color:var(--ink);background:linear-gradient(#e8c547 0%,#c9a227 100%);border:2px solid #0003;border-bottom:none;border-radius:14px 14px 0 0;align-items: center;gap:6px;padding:8px 6px}.cal-month-label{letter-spacing:.06em;text-transform:uppercase;margin:0;font-family:Fraunces,Georgia,serif;font-size:1.15rem;font-weight:700}.cal-nav-btn{color:var(--ink);cursor:pointer;background:#ffffff59;border:1.5px solid #00000026;border-radius:10px;width:36px;height:36px;font-size:1.4rem;font-weight:800;line-height:1}.cal-nav-btn:disabled{opacity:.35;cursor:default}.cal-weekdays{display:grid;grid-template-columns:repeat(7,1fr);letter-spacing:.04em;color:#f7f1e38c;background:#0d3328;border-left:2px solid #0003;border-right:2px solid #0003;gap:4px;padding:8px 6px 4px;font-size:.7rem;font-weight:800}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);background:#0d3328;border:2px solid #0003;border-top:none;border-radius:0 0 14px 14px;gap:5px;padding:6px}.cal-day{aspect-ratio:1;display:flex;color:var(--cream);cursor:pointer;position:relative;-webkit-appearance:none;appearance:none;border:none;border-radius:10px;flex-direction:column;justify-content:center;align-items: center;gap:1px;min-height:0;padding:0;font-family:inherit;font-size:.72rem;font-weight:800;box-shadow:0 2px #00000040}.cal-day:disabled{cursor:default;box-shadow:none}.cal-day__num{opacity:.9;font-size:.68rem;line-height:1}.cal-day__icon{font-size:.85rem;line-height:1}.cal-day--other{color:#f7f1e338;box-shadow:none;background:0 0}.cal-day--future{color:#f7f1e359;box-shadow:none;background:#ffffff0f}.cal-day--playable{color:#fff;background:linear-gradient(160deg,#e85d4c 0%,#b83a2e 100%)}.cal-day--playable:active{transform:scale(.96)}.cal-day--cleared{color:#fff;background:linear-gradient(160deg,#5b6fd6 0%,#3d4db0 100%)}.cal-day--cleared .cal-day__icon{color:#ffe08a}.cal-day--today{outline:2.5px solid var(--gold);outline-offset:1px}.cal-day--selected{box-shadow:0 0 0 2px #fff,0 4px #0000004d}.cal-legend{display:flex;color:#f7f1e3b3;flex-wrap:wrap;justify-content:center;gap:10px 14px;margin:12px 0 8px;font-size:.72rem;font-weight:700}.leg{display:inline-grid;vertical-align:middle;border-radius:5px;place-items: center;width:18px;height:18px;margin-right:4px;font-size:.65rem;font-style:normal}.leg--cleared{color:#ffe08a;background:#4a5cc4}.leg--play{color:#fff;background:#d24a3a}.leg--future{color:#f7f1e373;background:#ffffff1a}.cal-footer{display:flex;justify-content:space-between;align-items: center;gap:8px;margin:4px 0 12px;font-size:.82rem;font-weight:800}.cal-streak{color:var(--gold);margin:0}.cal-month-progress{opacity:.85;margin:0}.cal-actions{display:flex;flex-direction:column;gap:8px}.cal-actions .action{width:100%}@media (min-width:480px){:root{--gap:8px;--table-pad-x:16px;--card-w:min(76px,calc((100vw - 32px - 6*8px)/7))}.brand-name{display:inline;font-size:1.1rem}.stats{gap:8px;font-size:.82rem}.icon-btn{width:40px;height:40px}}@media (min-width:720px) and (orientation:landscape){:root{--card-w:min(70px,9vh);--hud-h:46px;--dock-btn-h:46px}.table{max-width:960px;margin-inline-start:auto;margin-inline-end:auto}}@media (min-height:700px) and (orientation:portrait){:root{--overlap-up:calc(var(--card-h)*.36);--overlap-down:calc(var(--card-h)*.15)}}@media (prefers-reduced-motion:reduce){.card,.toast{transition:none}.card.hint{animation:none;outline:2px solid var(--gold)}}
