:root{--bg:#eef4ee;--card:#fff;--text:#17261f;--muted:#5f7469;--accent:#1f6b4f;--line:#d4e0d6;--danger:#b3382c;--rk0:#1f8a63;--rk1:#c26d12;--rk2:#3f6fc2;--rk3:#b5527f;--rk4:#7b5fc2;--rk5:#5f7469;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--bg:#0f1a15;--card:#172420;--text:#e8f1ec;--muted:#93aa9d;--accent:#5fbf94;--line:#284036;--danger:#ef7d71;--rk0:#4fd1a0;--rk1:#f0a04b;--rk2:#7aa2e8;--rk3:#e079a8;--rk4:#b199ee;--rk5:#a9bbb0}}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);-webkit-tap-highlight-color:transparent;margin:0;font:16px/1.4 system-ui,-apple-system,Segoe UI,sans-serif}h1{margin:0;font-size:1.5rem}h2{margin:0 0 .6rem;font-size:1.05rem}.muted{color:var(--muted)}.center{place-items:center;min-height:100vh;display:grid}.error{color:var(--danger);margin:.5rem 0}main.app,main.login{max-width:32rem;padding:max(1rem, env(safe-area-inset-top)) 1rem max(2rem, env(safe-area-inset-bottom));margin:0 auto}main.login{padding-top:18vh}main.login form{gap:.9rem;margin-top:1.2rem;display:grid}header{justify-content:space-between;align-items:center;margin-bottom:.8rem;display:flex}.card{background:var(--card);border:1px solid var(--line);border-radius:14px;margin-bottom:.8rem;padding:.9rem}label{color:var(--muted);gap:.3rem;font-size:.85rem;display:grid}input{font:inherit;color:var(--text);background:var(--bg);border:1px solid var(--line);border-radius:10px;width:100%;min-height:44px;padding:.7rem .8rem}button{font:inherit;color:var(--text);cursor:pointer}button:disabled{opacity:.45;cursor:default}button.link{color:var(--accent);background:0 0;border:0;min-height:44px;padding:.4rem}button.link.danger{color:var(--danger);font-weight:600}button.primary{background:var(--accent);color:#fff;border:0;border-radius:12px;width:100%;min-height:52px;margin-top:.8rem;font-weight:600}.big3{grid-template-columns:repeat(3,1fr);gap:.6rem;display:grid}button.big{border:2px solid var(--line);background:var(--bg);border-radius:14px;min-height:84px;font-size:1.1rem;font-weight:600}button.big:active{transform:scale(.97)}button.big.wet{border-color:#4a90c2}button.big.dirty{border-color:#a9793a}button.big.mixed{border-color:#8a62b0}.seg{gap:.4rem;margin-bottom:.6rem;display:flex}.seg button{border:1px solid var(--line);background:var(--bg);border-radius:10px;flex:1;min-height:46px}.seg button.on{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.row{align-items:end;gap:.8rem;display:flex}.row>label{flex:1}.stepper{align-items:center;gap:.5rem;display:flex}.stepper button{border:1px solid var(--line);background:var(--bg);border-radius:12px;width:48px;height:48px;font-size:1.4rem}.stepper span{text-align:center;color:var(--text);flex:1;font-size:1.3rem;font-weight:600}.when{color:var(--muted);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;font-size:.9rem;display:flex}.when input{flex:14rem}.daynav{justify-content:space-between;align-items:center;display:flex}.daynav h2{margin:0}.daynav>button{flex:none;width:44px;font-size:1.4rem}.daynav button.small{width:auto;min-height:0;padding:.15rem .6rem;font-size:.85rem}.daynav .center-text{flex:1;min-width:0}.stars{gap:.1rem;display:flex}button.star{width:44px;height:44px;color:var(--line);background:0 0;border:0;padding:0;font-size:1.9rem;line-height:1}button.star.on{color:#e0a020}.rate-row{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.usage{margin:0 0 .4rem}.card-top{justify-content:space-between;align-items:baseline;gap:.6rem;display:flex}.rating{color:#b9820f;white-space:nowrap;font-weight:600}.seg{margin-bottom:.8rem}.summary{color:var(--muted);margin:0 0 .6rem;font-size:.9rem}.entries{margin:0;padding:0;list-style:none}.entries li{border-top:1px solid var(--line);align-items:center;gap:.6rem;padding:.3rem 0;display:flex}.entries .time{width:4.6rem;color:var(--muted);font-variant-numeric:tabular-nums}.entries .desc{flex:1}a.link{color:var(--accent);min-height:44px;padding:.4rem;line-height:36px;text-decoration:none;display:inline-block}header>div{align-items:center;gap:.3rem;display:flex}.stats{grid-template-columns:1fr 1fr;gap:.8rem;margin-bottom:.8rem;display:grid}.stats .card{margin:0}.stat{text-align:center;gap:.2rem;display:grid}.stat .label{color:var(--muted);font-size:.8rem}.stat .value{font-variant-numeric:tabular-nums;font-size:2rem;font-weight:700}.entries li{flex-wrap:wrap}.entries li.editing .desc{flex-basis:calc(100% - 5.2rem)}.edit-time{flex-wrap:wrap;align-items:center;gap:.3rem;width:100%;display:flex}.edit-time input{flex:13rem}.fl{color:var(--muted);margin:.4rem 0 .3rem;font-size:.85rem}.card .seg:last-child{margin-bottom:0}.day{color:var(--muted);margin:.8rem 0 .2rem;font-size:.9rem}table.totals{border-collapse:collapse;width:100%}table.totals th{text-align:left;color:var(--muted);padding:.3rem 0;font-weight:500}table.totals td{text-align:right;padding:.3rem 0;font-weight:600}table.totals tr+tr{border-top:1px solid var(--line)}main.app{padding-bottom:calc(5.5rem + env(safe-area-inset-bottom))}select{font:inherit;color:var(--text);background:var(--bg);border:1px solid var(--line);border-radius:10px;width:100%;min-height:44px;padding:.7rem .6rem}textarea{font:inherit;color:var(--text);background:var(--bg);border:1px solid var(--line);resize:vertical;border-radius:10px;width:100%;padding:.7rem .8rem}.search{margin-bottom:.8rem}.ok{color:var(--accent);margin:.5rem 0}.small{font-size:.85rem}.block{display:block}.prewrap{white-space:pre-wrap;margin:0}a.plain{color:inherit;text-decoration:underline;-webkit-text-decoration-color:var(--line);text-decoration-color:var(--line);text-underline-offset:3px}.title{margin:.2rem 0 .4rem}.nomargin{margin-top:0}a.linkbtn{text-align:center;background:var(--accent);color:#fff;border-radius:12px;margin-top:.8rem;font-weight:600;line-height:52px;text-decoration:none;display:block}button.inline{background:var(--accent);color:#fff;border:0;border-radius:10px;min-height:44px;padding:0 1rem;font-weight:600}.row3{grid-template-columns:repeat(3,1fr);gap:.6rem;display:grid}.form{gap:.8rem;display:grid}.recipe-list{margin:0;padding:0;list-style:none}.recipe-card{color:inherit;gap:.2rem;margin-bottom:.6rem;text-decoration:none;display:grid}.clamp{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.ingredients,.grocery,.week{margin:0;padding:0;list-style:none}.ingredients li{border-top:1px solid var(--line);gap:.6rem;padding:.3rem 0;display:flex}.ingredients li:first-child{border-top:0}.qty{font-variant-numeric:tabular-nums;min-width:4.2rem;font-weight:600}.grocery .qty{min-width:0;margin-right:.2rem}.steps{margin:0;padding-left:1.3rem}.steps li{padding:.35rem 0}.planner{gap:.7rem;display:grid}.btns{align-items:center;gap:.4rem;display:flex}.btns .primary{flex:1;width:auto;margin-top:0}.ing{grid-template-columns:4.2rem 4.2rem 1fr;align-items:center;gap:.4rem;margin-bottom:.6rem;display:grid}.ing .note,.ing select{grid-column:1/3}.ing>button{grid-column:3;justify-self:end}.ing .note{grid-column:1/-1}.ing select{grid-column:1/3}.day-card{margin-bottom:.6rem}.day-card.today{border-color:var(--accent)}.day-head{justify-content:space-between;align-items:center;display:flex}.dinner{margin:.1rem 0 0;font-size:1.05rem}.dishes{margin:0;padding:0;list-style:none}.dishes>li{border-top:1px solid var(--line);padding:.15rem 0}.dishes>li:first-child{border-top:0}.dish{justify-content:space-between;align-items:center;gap:.4rem;display:flex}.dishes .planner{padding:.5rem 0}.grocery li{border-top:1px solid var(--line);justify-content:space-between;align-items:center;display:flex}.grocery li:first-child{border-top:0}.grocery li.done span{color:var(--muted);text-decoration:line-through}label.check{color:var(--text);flex:1;align-items:flex-start;gap:.7rem;padding:.65rem 0;font-size:1rem;display:flex}label.check input{width:22px;height:22px;min-height:0;accent-color:var(--accent);flex:none;margin-top:.1rem;padding:0}button.primary.alt{background:var(--bg);color:var(--accent);border:1px solid var(--accent)}.store-list{margin:0;padding:0;list-style:none}.store-list>li{border-top:1px solid var(--line);padding:.5rem 0}.store-list>li:first-child{border-top:0}.store-row{justify-content:space-between;align-items:center;display:flex}.store-name{align-items:center;gap:.5rem;font-size:1.05rem;display:flex}.store-actions{display:flex}.store-more{flex-wrap:wrap;gap:.2rem;display:flex}.store-edit{align-items:center;gap:.3rem;display:flex}.badge{text-transform:uppercase;letter-spacing:.04em;color:#fff;background:var(--accent);border-radius:10px;padding:.1rem .5rem;font-size:.7rem;font-weight:600}a.link.manage{font-size:.9rem}header>div{flex-wrap:wrap;justify-content:flex-end}.picker{gap:.4rem;display:grid}.picker-list{border:1px solid var(--line);border-radius:10px;margin:0;padding:0;list-style:none;overflow:hidden}.picker-list li+li{border-top:1px solid var(--line)}.picker-list button{background:var(--bg);text-align:left;border:0;justify-content:space-between;gap:.6rem;width:100%;min-height:44px;padding:.5rem .8rem;display:flex}.picker-list button:active{background:var(--line)}.picked{border:1px solid var(--accent);background:var(--bg);border-radius:10px;justify-content:space-between;align-items:center;gap:.6rem;padding:.5rem .8rem;display:flex}.tags{flex-wrap:wrap;gap:.4rem;display:flex}.tags button{border:1px dashed var(--accent);background:var(--bg);min-height:40px;color:var(--accent);border-radius:20px;padding:0 .85rem}.ing-list{margin:0;padding:0;list-style:none}.ing-card{margin-bottom:.6rem}.ing-top{justify-content:space-between;align-items:center;gap:.6rem;display:flex}.ing-name{text-align:left;background:0 0;border:0;flex:1;align-content:center;min-width:0;min-height:44px;padding:.2rem 0;display:grid}.ing-top select{flex:none;width:9rem}.ing-top select.warn{border-color:#c47a12}label.skip{color:var(--text);align-items:center;gap:.6rem;padding:.3rem 0;font-size:.95rem;display:flex}label.skip input{width:22px;height:22px;min-height:0;accent-color:var(--accent);flex:none;padding:0}.ing-detail{border-top:1px solid var(--line);margin-top:.4rem;padding-top:.3rem}.ing-detail h3{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:.7rem 0 .2rem;font-size:.8rem}.ing-detail p{margin:.2rem 0}.similar{margin:0;padding:0;list-style:none}.similar li{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.2rem .6rem;padding:.3rem 0;display:flex}.similar li:first-child{border-top:0}.similar-actions{flex-wrap:wrap;display:flex}.chips{gap:.4rem;margin-bottom:.8rem;padding-bottom:.2rem;display:flex;overflow-x:auto}.chips button{border:1px solid var(--line);background:var(--card);white-space:nowrap;border-radius:20px;flex:none;min-height:40px;padding:0 .85rem}.chips button span{color:var(--muted);margin-left:.2rem;font-size:.85rem}.chips button.on{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.chips button.on span{color:#fff;opacity:.85}.store-head{justify-content:space-between;align-items:baseline;display:flex}h3.aisle{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:.7rem 0 0;font-size:.8rem}.grocery li{display:block}.line{align-items:center;gap:.3rem;display:flex}.line .grow{flex:1;padding:.5rem 0}button.store-pill{border:1px solid var(--line);background:var(--bg);min-height:34px;color:var(--muted);border-radius:17px;flex:none;padding:0 .7rem;font-size:.8rem}.store-pick{flex-wrap:wrap;gap:.4rem;padding:0 0 .6rem 2rem;display:flex}.store-pick button{border:1px solid var(--line);background:var(--bg);border-radius:20px;min-height:40px;padding:0 .9rem}.store-pick button.on{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.grocery li.done .store-pill{opacity:.5}.shell{grid-template-columns:15rem minmax(0,1fr);min-height:100vh;display:grid}.sidebar{background:var(--card);border-right:1px solid var(--line);flex-direction:column;gap:1.5rem;height:100vh;padding:1.4rem 1rem;display:flex;position:sticky;top:0}.brand{color:inherit;align-items:center;gap:.7rem;padding:0 .5rem;font-size:1.1rem;font-weight:700;text-decoration:none;display:flex}.brand-mark{background:var(--accent);color:#fff;border-radius:11px;flex:none;place-items:center;width:36px;height:36px;display:grid}.sidebar nav{gap:.2rem;display:grid}.sidebar nav a{color:var(--muted);border-radius:11px;align-items:center;gap:.75rem;padding:.65rem .8rem;font-weight:550;text-decoration:none;display:flex}.sidebar nav a:hover{background:var(--bg);color:var(--text)}.sidebar nav a.on{background:color-mix(in srgb, var(--accent) 14%, transparent);color:var(--accent)}.side-foot{border-top:1px solid var(--line);gap:.3rem;margin-top:auto;padding:.8rem .5rem 0;display:grid}.side-foot .me{font-weight:600}.side-foot button.link,.topbar button.link{justify-self:start;align-items:center;gap:.4rem;padding:.4rem 0;display:inline-flex}.topbar{display:none}.content{min-width:0}@media (width>=901px){main.app{max-width:44rem;padding-bottom:3rem}.content{padding-top:.6rem}}@media (width<=900px){.shell{grid-template-columns:minmax(0,1fr)}.sidebar{z-index:20;height:auto;padding:.3rem .4rem calc(.3rem + env(safe-area-inset-bottom));border-right:0;border-top:1px solid var(--line);flex-direction:row;gap:0;position:fixed;inset:auto 0 0}.sidebar .brand,.side-foot{display:none}.sidebar nav{width:100%;display:flex}.sidebar nav a{flex-direction:column;flex:1;justify-content:center;gap:.1rem;min-width:0;padding:.4rem .2rem;font-size:.7rem}.topbar{max-width:32rem;padding:max(.6rem, env(safe-area-inset-top)) 1rem 0;justify-content:space-between;align-items:center;margin:0 auto;display:flex}.topbar .brand{padding:0;font-size:1rem}.topbar .brand-mark{border-radius:9px;width:28px;height:28px}.topbar button.link{min-height:36px}}.banner{z-index:10;background:var(--accent);color:#fff;justify-content:space-between;align-items:center;padding:.5rem 1rem;display:flex;position:sticky;top:0}.banner button{color:var(--accent);background:#fff;border:0;border-radius:8px;padding:.4rem .8rem}.day-actions{align-items:center;gap:.2rem;display:flex}button.day-done{border:1px solid var(--line);background:var(--bg);min-height:34px;color:var(--muted);border-radius:17px;padding:0 .7rem;font-size:.8rem}button.day-done.on{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.day-card.done{border-color:var(--line)}.day-card.done .dinner{color:var(--muted)}.dish{gap:.6rem}.dish .grow{flex:1;min-width:0}button.made-check{border:2px solid var(--line);background:var(--bg);color:#fff;border-radius:50%;flex:none;width:28px;height:28px;padding:0;font-size:.9rem;line-height:1}button.made-check.on{background:#3f9a5f;border-color:#3f9a5f}.dish.made .dinner a,.dish.made .dinner>span:first-child{text-decoration:line-through;-webkit-text-decoration-color:var(--muted);text-decoration-color:var(--muted)}.made-note{color:#3f9a5f;font-weight:600;display:block}.made-row{align-items:center;gap:.4rem;display:flex}button.list-card{text-align:left;gap:.2rem;width:100%;margin-bottom:0;display:grid}.list-head{justify-content:space-between;align-items:center;gap:.6rem;display:flex}.list-head h2{margin:0}.list-actions{align-items:center;display:flex}details.list-dishes summary{cursor:pointer;min-height:32px;font-weight:600}details.list-dishes ul{margin-top:.4rem}.cols{display:block}.col{min-width:0}@media (width>=901px){.cols{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:1.2rem;display:grid}}.login-links{gap:.2rem;margin-top:.6rem;display:grid}.login-links .link{justify-self:start;padding-left:0}a.adminlink{color:var(--accent);min-height:44px;padding:.4rem 0;line-height:36px;text-decoration:none;display:inline-block}.topbar .adminlink{margin-left:auto;margin-right:.6rem;padding:0}.sidebar nav a{min-width:0}@media (width<=900px){.sidebar nav a{font-size:.66rem}}@media (width>=901px){main.app.wide{max-width:74rem}}.hide-sm,.hide-md{display:revert}@media (width<=760px){.hide-sm{display:none}}@media (width<=1000px){.hide-md{display:none}}.num{text-align:right;font-variant-numeric:tabular-nums}.cols.three{grid-template-columns:1fr;gap:1.2rem;display:grid}@media (width>=761px){.cols.three{grid-template-columns:repeat(3,minmax(0,1fr))}}.form .chips{flex-wrap:wrap;overflow:visible}.chips button.guest{border-style:dashed}.inline-select{width:auto;min-width:9rem}.notice{border-color:var(--accent)}.notice.win{text-align:center}.badge.lose{background:var(--danger)}.card.flush{padding:0;overflow:hidden}.table-wrap{overflow-x:auto}table.rk-table{border-collapse:collapse;width:100%;font-size:.92rem}.rk-table th{text-align:left;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);white-space:nowrap;border-bottom:1px solid var(--line);padding:.6rem .7rem;font-size:.72rem}.rk-table td{border-top:1px solid var(--line);white-space:nowrap;padding:.5rem .7rem}.rk-table th.num,.rk-table td.num{text-align:right}.rk-table td.zero{color:var(--muted)}.rk-table tr.editing td{background:color-mix(in srgb, var(--accent) 12%, transparent)}.rk-table td.hot,.rk-table th.hot{background:color-mix(in srgb, var(--accent) 14%, transparent)}.rk-table tr.won td:first-child{box-shadow:inset 3px 0 #1f8a63}.rk-table tr.lost td:first-child{box-shadow:inset 3px 0 0 var(--danger)}.th-btn{font:inherit;color:inherit;cursor:pointer;text-underline-offset:3px;background:0 0;border:0;padding:0;text-decoration:underline}.rk-players{grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));gap:.8rem;margin-bottom:.8rem;display:grid}.rk-player{margin:0}.rk-player.ahead{border-color:var(--accent)}.big-number{font-variant-numeric:tabular-nums;font-size:2.6rem;font-weight:700;line-height:1.1}.bar{background:var(--line);border-radius:6px;height:10px;margin:.5rem 0;overflow:hidden}.bar>span{border-radius:6px;height:100%;display:block}dl.mini{gap:.15rem;margin:.4rem 0 0;display:grid}dl.mini div{justify-content:space-between;gap:.6rem;font-size:.9rem;display:flex}dl.mini dt{color:var(--muted)}dl.mini dd{margin:0;font-weight:600}dl.mini.wide{grid-template-columns:repeat(auto-fit,minmax(13rem,1fr));column-gap:1.5rem}.chart{width:100%;height:auto;display:block}.legend{color:var(--muted);flex-wrap:wrap;gap:1rem;margin-top:.3rem;font-size:.9rem;display:flex}.legend i{border-radius:50%;width:10px;height:10px;margin-right:.3rem;display:inline-block}.hole-dots{flex-wrap:wrap;gap:.35rem;margin:.4rem 0 .8rem;display:flex}.hole-dots button{border:1px solid var(--line);background:var(--bg);border-radius:50%;width:38px;height:38px;font-weight:600}.hole-dots button.scored{border-color:var(--accent);color:var(--accent)}.hole-dots button.on{background:var(--accent);border-color:var(--accent);color:#fff}.score-row{border-top:1px solid var(--line);padding:.7rem 0}.score-head{justify-content:space-between;align-items:baseline;margin-bottom:.3rem;display:flex}.score-row .stepper{align-items:center;gap:.5rem;margin-bottom:.4rem;display:flex}.score-row .stepper input{text-align:center;min-height:52px;font-size:1.5rem;font-weight:700}.score-row .stepper button{border:1px solid var(--line);background:var(--bg);border-radius:12px;flex:none;width:52px;height:52px;font-size:1.5rem}.quick{flex-wrap:wrap;gap:.3rem;display:flex}.quick button{border:1px solid var(--line);background:var(--bg);border-radius:10px;min-width:40px;height:36px;font-weight:600}.quick button.on{background:var(--accent);border-color:var(--accent);color:#fff}ol.places{gap:.3rem;margin:.4rem 0 .8rem;padding:0;list-style:none;display:grid}ol.places li{border-radius:10px;grid-template-columns:1.6rem 1fr auto auto;align-items:baseline;gap:.6rem;padding:.35rem .5rem;display:grid}ol.places li.won{background:#1f8a6329}ol.places li.lost{background:color-mix(in srgb, var(--danger) 14%, transparent)}ol.places li em{text-transform:uppercase;letter-spacing:.05em;font-size:.75rem;font-style:normal;font-weight:700}.scorecard td,.scorecard th{padding:.45rem .5rem}.solitaire header{flex-wrap:wrap;gap:.6rem}.solitaire header .seg{min-width:15rem;margin:0}.solitaire header .seg button{white-space:nowrap}@media (width>=901px) and (width<=1099px){.board{--cw:min(84px, calc((100vw - 240px - 6rem) / 7.8))}}.sol-bar{gap:.6rem;margin-bottom:.8rem;display:grid}.sol-bar .seg{margin:0}.sol-stats{gap:1.4rem;display:flex}.sol-stats span{display:grid}.sol-stats small{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-size:.7rem}.sol-stats strong{font-variant-numeric:tabular-nums;font-size:1.3rem}.board{--cw:min(84px, calc((100vw - 3.8rem) / 7.8));--gap:calc(var(--cw) * .12);color:#fff;gap:calc(var(--cw) * .35);-webkit-user-select:none;user-select:none;touch-action:manipulation;background:#1b6b49;border-radius:16px;width:fit-content;max-width:100%;padding:.8rem;display:grid}@media (prefers-color-scheme:dark){.board{background:#124231}}.top-row,.tableau{grid-template-columns:repeat(7, var(--cw));gap:var(--gap);display:grid}.slot,.waste{width:var(--cw);height:calc(var(--cw) * 1.4)}.slot{border-radius:calc(var(--cw) * .1);cursor:pointer;border:2px dashed #ffffff59;place-items:center;display:grid;position:relative}.slot .suit-hint,.slot .redeal{font-size:calc(var(--cw) * .5);color:#ffffff73}.slot.foundation.target,.pile.target{outline-offset:2px;border-radius:calc(var(--cw) * .1);outline:3px solid #ffd54a}.waste{position:relative;overflow:visible}.waste-card{position:absolute;top:0}.pile{width:var(--cw);min-height:calc(var(--cw) * 1.4);position:relative}.empty-pile{width:var(--cw);height:calc(var(--cw) * 1.4);border-radius:calc(var(--cw) * .1);border:2px dashed #ffffff4d;display:block}.stack{position:absolute;left:0}.pcard{width:var(--cw);height:calc(var(--cw) * 1.4);border-radius:calc(var(--cw) * .1);cursor:pointer;background:#fff;border:1px solid #b9c4bd;font-family:Georgia,Times New Roman,serif;position:relative;box-shadow:0 1px 2px #0000004d}.pcard.black{color:#1c2420}.pcard .corner{top:calc(var(--cw) * .04);left:calc(var(--cw) * .07);font-size:calc(var(--cw) * .26);text-align:center;font-weight:700;line-height:1.05;position:absolute}.pcard .pip{right:calc(var(--cw) * .09);bottom:calc(var(--cw) * .04);font-size:calc(var(--cw) * .55);line-height:1;position:absolute}.pcard.selected{outline-offset:1px;z-index:5;outline:3px solid #ffd54a;transform:translateY(-3px)}.pcard.back{cursor:pointer;background:repeating-linear-gradient(45deg,#2e6fb5 0 6px,#2a62a0 6px 12px);border-color:#fff}.pcard.back .count{font-size:calc(var(--cw) * .22);color:#fff;font-family:system-ui,sans-serif;font-weight:700;position:absolute;inset:auto 4px 3px auto}.board-list{gap:.1rem;margin:0;padding:0;list-style:none;display:grid}.board-list li{border-radius:8px;grid-template-columns:1.6rem 1fr auto;align-items:center;gap:.5rem;padding:.3rem .4rem;display:grid}.board-list li.mine{background:color-mix(in srgb, var(--accent) 14%, transparent)}.board-list .rank{color:var(--muted);font-weight:700}.guest-select{gap:.3rem;display:grid;position:relative}.guest-select>label{color:var(--muted);font-size:.85rem}.gs-box{border:1px solid var(--line);background:var(--bg);cursor:text;border-radius:10px;flex-wrap:wrap;align-items:center;gap:.35rem;min-height:44px;padding:.3rem .5rem;display:flex}.gs-box:focus-within{outline:2px solid var(--accent);outline-offset:1px}.gs-box input{background:0 0;border:0;outline:none;flex:8rem;width:auto;min-width:6rem;min-height:32px;padding:.3rem .2rem}.gs-chip{background:color-mix(in srgb, var(--accent) 18%, transparent);border-radius:999px;align-items:center;gap:.3rem;padding:.15rem .3rem .15rem .65rem;font-size:.9rem;display:inline-flex}.gs-chip button{min-width:28px;min-height:28px;color:var(--muted);cursor:pointer;background:0 0;border:0;padding:0}.gs-list{z-index:30;background:var(--card);border:1px solid var(--line);border-radius:10px;max-height:14rem;margin:.2rem 0 0;padding:.25rem;list-style:none;position:absolute;top:100%;left:0;right:0;overflow-y:auto;box-shadow:0 8px 24px #00000040}.gs-list li{cursor:pointer;border-radius:8px;padding:.55rem .7rem}.gs-list li.on{background:color-mix(in srgb, var(--accent) 16%, transparent)}.gs-list li.add{color:var(--accent);font-weight:600}.gs-list li.gs-empty{color:var(--muted);cursor:default}.pcard{touch-action:none;-webkit-touch-callout:none}.pcard.lifted{opacity:0}.ghost{z-index:100;width:var(--cw);pointer-events:none;filter:drop-shadow(0 6px 10px #00000073);transform-origin:0 0;position:fixed;transform:scale(1.04)rotate(1.5deg)}.tableau{min-height:calc(var(--cw) * 6.7);align-items:start}.pcard{font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}.pcard .corner{font-weight:800;font-size:calc(var(--cw) * .3)}.pcard .pip{font-weight:800}.pcard.red{color:#b3261e}@keyframes deal-in{0%{transform:translateX(calc(var(--cw) * -1.15));opacity:.2}to{opacity:1;transform:none}}.waste-card{animation:.16s ease-out deal-in}@media (prefers-reduced-motion:reduce){.waste-card{animation:none}}.banner.offline{background:#8a5a00}.banner.syncing{background:#36527a}.banner.warn{background:#a3301f}.sync-problems{margin:.75rem 1rem}.sc-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;display:flex}.sc-head h2{margin:0}.sc-players{counter-reset:p;gap:.25rem;margin:0;padding:0;list-style:none;display:grid}.sc-players li{border:1px solid var(--line);counter-increment:p;border-radius:10px;align-items:center;gap:.25rem;padding:.25rem .5rem;display:flex}.sc-players li:before{content:counter(p);color:var(--muted);width:1.4rem;font-weight:700}.sc-players li span{flex:1}.sc-players .link{min-width:36px;min-height:36px}.sc-totals span{border:1px solid var(--line);border-radius:999px;padding:.35rem .7rem}.sc-totals span.on{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 16%, transparent)}.sc-entry{grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:.6rem;display:grid}.sc-input{align-items:center;gap:.25rem;display:flex}.sc-input input{text-align:center;flex:1;min-width:0;font-size:1.25rem;font-weight:700}.sc-input .link{min-width:40px;min-height:44px}.sc-table td.num{line-height:1.15}.sc-table .sc-cum{color:var(--muted);font-size:.75rem;display:block}.sc-table tfoot th{border-top:2px solid var(--line);font-size:.9rem}.war-table{padding-bottom:1rem}.war-head{color:var(--muted);justify-content:space-between;margin-bottom:.4rem;font-size:.9rem;display:flex}.war-head strong{color:var(--text,inherit);font-size:1.05rem}.war-sides{grid-template-columns:1fr 1fr;gap:.8rem;display:grid}.war-side{border:1px solid var(--line);text-align:center;border-radius:14px;min-height:14rem;padding:.6rem}.war-side.won{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 10%, transparent)}.war-name{margin:0;font-weight:700}.war-count{margin:.1rem 0 .5rem;font-size:1.5rem;font-weight:800}.war-count small{color:var(--muted);font-size:.8rem;font-weight:400}.war-play{--cw:min(84px, 30vw);flex-direction:column;align-items:center;gap:.4rem;animation:.22s ease-out war-flip;display:flex}.war-card{cursor:default}.war-card.small{width:calc(var(--cw) * .42);height:calc(var(--cw) * .58);border-radius:4px}.war-round{align-items:center;gap:.35rem;display:flex}.war-down{display:flex}.war-down .war-card{margin-left:calc(var(--cw) * -.2)}.war-down .war-card:first-child{margin-left:0}.war-note{text-align:center;margin:.8rem 0 0;font-weight:600}.war-flip{min-height:56px;font-size:1.15rem}@keyframes war-flip{0%{opacity:.3;transform:rotateY(90deg)scale(.9)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.war-play{animation:none}}.war-summary h2{margin-top:0}.game-list{grid-template-columns:repeat(auto-fill,minmax(16rem,1fr));gap:.8rem;display:grid}.game-tile{color:inherit;text-decoration:none;display:block}.game-tile h2{margin:0 0 .3rem}.game-tile p{margin:0 0 .4rem}.ov-cards{grid-template-columns:repeat(2,1fr)}.ov-card{cursor:pointer;text-align:center;font:inherit;color:inherit}.badge-game{text-transform:uppercase;letter-spacing:.05em;min-width:5.2rem;color:var(--muted);flex:none;font-size:.72rem}.chips button.on{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 16%, transparent)}@media (width>=900px){.ov-cards{grid-template-columns:repeat(4,1fr)}}.sdk-card{max-width:32rem;margin-left:auto;margin-right:auto}.sdk-bar{font-variant-numeric:tabular-nums;justify-content:space-between;align-items:center;margin-bottom:.6rem;font-weight:700;display:flex}.center-text{text-align:center}.sdk-wrap{position:relative}.sdk-board{aspect-ratio:1;background:var(--card);border:2px solid var(--muted);touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;border-radius:6px;grid-template-rows:repeat(9,1fr);grid-template-columns:repeat(9,1fr);display:grid;overflow:hidden}.sdk-cell{box-sizing:border-box;border:1px solid var(--line);min-width:0;color:var(--accent);cursor:pointer;justify-content:center;align-items:center;font-size:clamp(1.1rem,5.8vw,1.8rem);font-weight:500;display:flex}.sdk-cell.given{color:var(--text);font-weight:800}.sdk-cell.alt{background:color-mix(in srgb, var(--accent) 6%, transparent)}.sdk-cell.peer{background:color-mix(in srgb, var(--accent) 16%, transparent)}.sdk-cell.sel{background:color-mix(in srgb, var(--accent) 40%, transparent)}.sdk-cell.bl{border-left:2px solid var(--muted)}.sdk-cell.bt{border-top:2px solid var(--muted)}.sdk-cell:nth-child(9n+1){border-left-width:0}.sdk-cell:nth-child(-n+9){border-top-width:0}.sdk-cell:nth-child(9n){border-right-width:0}.sdk-cell:nth-last-child(-n+9){border-bottom-width:0}.sdk-notes{width:100%;height:100%;color:var(--muted);grid-template-rows:repeat(3,1fr);grid-template-columns:repeat(3,1fr);padding:1px;font-size:clamp(.55rem,2.7vw,.8rem);font-weight:600;line-height:1;display:grid}.sdk-notes span{justify-content:center;align-items:center;display:flex}.sdk-done{text-align:center;background:color-mix(in srgb, var(--card) 90%, transparent);border-radius:6px;flex-direction:column;justify-content:center;align-items:center;gap:.3rem;padding:1rem;display:flex;position:absolute;inset:0}.sdk-done h2{margin:0}.sdk-done p{color:var(--muted);margin:0 0 .6rem}.sdk-done .btns{width:100%;max-width:20rem}.sdk-pad{grid-template-columns:repeat(5,1fr);gap:.4rem;margin:.9rem 0 .5rem;display:grid}.sdk-key{border:1px solid var(--line);background:var(--card);border-radius:10px;min-height:54px;font-size:1.4rem;font-weight:600}.sdk-key.pencil{border-style:dashed;border-color:var(--accent);color:var(--muted);font-size:1.15rem}.sdk-key.tool{color:var(--muted)}.sdk-key:disabled{opacity:.45}.sdk-tools{grid-template-columns:2fr 1fr 1fr;gap:.4rem;display:grid}.sdk-mode,.sdk-tool{border:1px solid var(--line);background:var(--card);border-radius:10px;min-height:48px;font-weight:600}.sdk-mode.on{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 22%, transparent)}.sdk-tool:disabled{opacity:.45}.sdk-help{margin:.7rem 0 0}.g48-card{--g48-gap:10px;max-width:30rem;margin-left:auto;margin-right:auto}.g48-bar{grid-template-columns:repeat(3,1fr);gap:.5rem;margin-bottom:.8rem;display:grid}.g48-stat{background:var(--bg);font-variant-numeric:tabular-nums;border-radius:8px;flex-direction:column;align-items:center;padding:.4rem;display:flex}.g48-stat .label{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-size:.7rem}.g48-stat b{font-size:1.2rem}.g48-wrap{position:relative}.g48-board{--cell:calc((100% - 5 * var(--g48-gap)) / 4);background:var(--line);touch-action:none;-webkit-user-select:none;user-select:none;aspect-ratio:1;border-radius:10px;position:relative}.g48-slots{gap:var(--g48-gap);padding:var(--g48-gap);grid-template-rows:repeat(4,1fr);grid-template-columns:repeat(4,1fr);display:grid;position:absolute;inset:0}.g48-slot{background:color-mix(in srgb, var(--card) 55%, transparent);border-radius:6px}.g48-tile{left:var(--g48-gap);top:var(--g48-gap);width:var(--cell);aspect-ratio:1;box-sizing:border-box;background:var(--bg);color:#4a3f35;transform:translate(calc(var(--c) * (100% + var(--g48-gap))), calc(var(--r) * (100% + var(--g48-gap))));border-radius:6px;justify-content:center;align-items:center;font-size:clamp(1.3rem,7vw,2.2rem);font-weight:800;display:flex;position:absolute}@media (prefers-reduced-motion:no-preference){.g48-tile{transition:transform .12s ease-in-out}.g48-tile.new{animation:.16s ease-out g48-new}.g48-tile.merge{z-index:1;animation:.16s ease-out g48-merge}}@keyframes g48-new{0%{opacity:0;scale:.4}to{opacity:1;scale:1}}@keyframes g48-merge{0%{scale:1}50%{scale:1.18}to{scale:1}}.g48-tile.t2{background:#eee4da}.g48-tile.t4{background:#ede0c8}.g48-tile.t8{color:#fff;background:#f2b179}.g48-tile.t16{color:#fff;background:#f59563}.g48-tile.t32{color:#fff;background:#f67c5f}.g48-tile.t64{color:#fff;background:#f65e3b}.g48-tile.t128{color:#fff;background:#edcf72;font-size:clamp(1.1rem,6vw,1.9rem)}.g48-tile.t256{color:#fff;background:#edcc61;font-size:clamp(1.1rem,6vw,1.9rem)}.g48-tile.t512{color:#fff;background:#edc850;font-size:clamp(1.1rem,6vw,1.9rem)}.g48-tile.t1024{color:#fff;background:#edc53f;font-size:clamp(.9rem,5vw,1.55rem)}.g48-tile.t2048{color:#fff;background:#edc22e;font-size:clamp(.9rem,5vw,1.55rem);box-shadow:0 0 14px 2px #edc22eb3}.g48-tile.tbig{color:#fff;background:#3c3a32;font-size:clamp(.8rem,4.2vw,1.3rem)}.g48-overlay{text-align:center;background:color-mix(in srgb, var(--card) 88%, transparent);border-radius:10px;flex-direction:column;justify-content:center;align-items:center;gap:.3rem;padding:1rem;display:flex;position:absolute;inset:0}.g48-overlay h2{margin:0}.g48-overlay p{color:var(--muted);margin:0 0 .6rem}.g48-overlay .btns{width:100%;max-width:20rem}.g48-pad{grid-template-columns:repeat(3,56px);grid-template-areas:".u.""l d r";justify-content:center;gap:.4rem;margin:.9rem 0 .6rem;display:grid}.g48-dir{border:1px solid var(--line);background:var(--card);border-radius:10px;min-height:52px;font-size:1.4rem}.g48-dir.d0{grid-area:u}.g48-dir.d1{grid-area:r}.g48-dir.d2{grid-area:d}.g48-dir.d3{grid-area:l}.g48-help{margin:.6rem 0 0}.ms-bar{justify-content:space-between;align-items:center;gap:.6rem;margin-bottom:.7rem;display:flex}.ms-stat{font-variant-numeric:tabular-nums;min-width:4.5rem;font-size:1.15rem;font-weight:700}.ms-stat:last-child{text-align:right}.ms-mode{border:1px solid var(--line);background:var(--card);border-radius:22px;min-height:44px;padding:0 1rem;font-weight:600}.ms-mode.on{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 16%, transparent)}.ms-scroll{-webkit-overflow-scrolling:touch;padding-bottom:.3rem;overflow-x:auto}.ms-board{--ms:clamp(18px, calc((100vw - 5.6rem - var(--cols) * 2px) / var(--cols)), 34px);background:var(--line);-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:manipulation;border-radius:6px;gap:2px;width:max-content;margin:0 auto;padding:2px;display:grid}.ms-cell{width:var(--ms);height:var(--ms);cursor:pointer;background:color-mix(in srgb, var(--accent) 30%, var(--card));min-height:0;color:var(--text);box-shadow:inset 0 -2px 0 color-mix(in srgb, var(--accent) 45%, transparent);border:0;border-radius:3px;justify-content:center;align-items:center;margin:0;padding:0;font:800 1.05rem/1 inherit;display:flex}.ms-cell:focus-visible{outline:3px solid var(--accent);outline-offset:-2px;z-index:1}.ms-cell.open{background:var(--bg);box-shadow:none;cursor:default}.ms-cell.flag,.ms-cell.wrong{font-size:.95rem}.ms-cell.wrong{background:color-mix(in srgb, var(--danger) 25%, var(--card));text-decoration:line-through}.ms-cell.mine{font-size:.95rem}.ms-cell.hit{background:var(--danger)}.ms-board.over .ms-cell{cursor:default}.ms-cell.n1{color:#1f63c4}.ms-cell.n2{color:#2d7d32}.ms-cell.n3{color:#c62828}.ms-cell.n4{color:#5e35b1}.ms-cell.n5{color:#8d4a00}.ms-cell.n6{color:#00838f}.ms-cell.n7{color:var(--text)}.ms-cell.n8{color:var(--muted)}@media (prefers-color-scheme:dark){.ms-cell.n1{color:#7db0ff}.ms-cell.n2{color:#7fd183}.ms-cell.n3{color:#ff8a80}.ms-cell.n4{color:#b39ddb}.ms-cell.n5{color:#ffb74d}.ms-cell.n6{color:#4dd0e1}}.ms-result{text-align:center;margin:.8rem 0 0;font-size:1.05rem;font-weight:700}.ms-result.won{color:var(--accent)}.ms-result.lost{color:var(--danger)}.ms-card .btns{margin-top:.8rem}.ms-help{margin:.6rem 0 0}@media (width<=600px){.ms-cell{font-size:.85rem}}
