@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Space+Grotesk:wght@400;500;600;700&display=swap');
:root{--ink:#173b36;--green:#174e44;--lime:#d8ed83;--paper:#f5f5ed}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:'DM Sans',sans-serif}button,input{font:inherit}button{cursor:pointer;border:1px solid #b8c8bd;border-radius:30px;background:transparent;padding:12px 20px;color:var(--ink);font-weight:700}button:hover{background:#e1e9d3}button:disabled{opacity:.5;cursor:default}header{max-width:1300px;margin:auto;display:flex;align-items:center;justify-content:space-between;padding:25px 4%;border-bottom:1px solid #d8ded2}header span,.eyebrow{font-size:11px;letter-spacing:2px;font-weight:700}.brand{text-decoration:none;color:var(--ink);font-weight:800;font-size:20px}main{max-width:1200px;margin:auto;padding:0 30px}.intro{display:flex;justify-content:space-between;align-items:center;padding:55px 0 40px;gap:35px}h1{font-family:'Space Grotesk',sans-serif;font-size:clamp(58px,7.6vw,100px);line-height:.95;letter-spacing:-6px;margin:20px 0;position:relative}h1 em{font-style:normal;color:#638340}h1 span{display:inline-block;color:#e6a253;font-size:70px;transform:rotate(15deg);margin-left:20px}.sub{color:#64756c;font-size:16px}.welcome{background:#e9eddf;padding:30px;border-radius:24px;max-width:355px;transform:rotate(2deg)}h2{font-family:'Space Grotesk',sans-serif;letter-spacing:-.8px}.welcome p{line-height:1.6}.badge{display:inline-block;font-size:10px;letter-spacing:1px;font-weight:700;background:var(--lime);border-radius:5px;padding:8px 10px}.primary{background:var(--green);color:white;border:0;width:100%}.small{font-size:12px;color:#6a796f;line-height:1.6}.players{display:flex;align-items:center;gap:24px;margin-bottom:55px}.players article{flex:1;display:flex;gap:18px;align-items:center;background:#fffefa;border:1px solid #dce0d5;padding:20px;border-radius:18px;min-width:0}.portrait{position:relative;flex-shrink:0;width:78px;height:78px;background:#e6ebda;border-radius:18px;overflow:hidden;display:grid;place-items:center;font-size:40px}.portrait img,.portrait video{width:100%;height:100%;object-fit:cover;position:absolute}.players input:not([type=file]){display:block;width:130px;background:none;border:0;border-bottom:1px dashed #bdc9b7;font-size:23px;font-weight:700;color:var(--ink);padding:5px 0}.upload{display:block;font-size:11px;cursor:pointer;margin-top:6px}.players article>button{margin-left:auto;font-size:12px;padding:10px}.players h2{margin:6px 0}.versus{font-weight:700;text-align:center;color:#849373;font-size:14px}.versus small{font-size:22px}.sectionhead{display:flex;justify-content:space-between;align-items:end}.sectionhead h2{font-size:30px;margin:8px 0 25px}.sectionhead>span{font-size:12px;padding-bottom:30px;color:#6a796f}nav{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}nav button{text-align:left;border-radius:14px;padding:18px 22px;font-size:27px;position:relative}nav strong{font-size:18px;vertical-align:middle;margin-left:9px}nav small{display:block;font-size:11px;font-weight:400;margin:7px 0 0 40px}nav .active{background:var(--green);color:white;border-color:var(--green)}.gamewrap{background:#e8eddf;border-radius:22px;display:grid;grid-template-columns:1fr 1.4fr;gap:40px;padding:35px;margin-top:20px}.gameinfo{padding:15px 0}.gameinfo h2{font-size:30px}.gameinfo p{line-height:1.7;font-size:14px;color:#64756c}#status{background:#fcfcf5;border-radius:10px;padding:15px;margin:22px 0;font-weight:700}#board{display:grid;aspect-ratio:1;max-width:530px;width:100%;border:8px solid #fafbf5;border-radius:8px;overflow:hidden;align-self:center}#board.chess{grid-template-columns:repeat(8,1fr)}.cell{border:0;border-radius:0;padding:0;display:grid;place-items:center;aspect-ratio:1;position:relative;font-family:serif;font-size:clamp(23px,4vw,49px);background:#edf0d8;color:#152e2a}.cell.dark{background:#7d9a75}.cell.whitepiece{color:#fff;text-shadow:0 1px 2px #152e2a,1px 0 #152e2a,-1px 0 #152e2a}.cell.selected{background:#efcc72}.cell.hint:after{content:'';position:absolute;width:22%;height:22%;background:#153e3880;border-radius:50%}.cell:hover{filter:brightness(1.07)}#board.connect{grid-template-columns:repeat(7,1fr);aspect-ratio:7/6;background:#1b5148;gap:7px;padding:12px}.disc{border:0;border-radius:50%;padding:0;aspect-ratio:1;background:#f5f5ed}.disc.p0{background:#e7ae51}.disc.p1{background:#c4df7d}#board.memory{grid-template-columns:repeat(4,1fr);gap:10px;border:0}.card{border-radius:12px;background:#215449;color:#d8ed83;font-size:32px;padding:0;aspect-ratio:1}.card.open{background:#fffdf4}.card.matched{background:#c9df9b}footer{padding:32px 0;display:flex;justify-content:space-between;font-size:12px;color:#758272}#notice{position:fixed;bottom:15px;left:50%;transform:translateX(-50%);background:#173b36;color:white;border-radius:12px;padding:14px 20px;max-width:90%;z-index:10}#notice:empty{display:none}[hidden]{display:none!important}@media(max-width:720px){header span{display:none}header{padding:18px 20px}main{padding:0 16px}.intro{padding:35px 0 25px;display:block}h1{letter-spacing:-4px}h1 span{font-size:45px}.welcome{max-width:none;transform:none;padding:20px;margin-top:30px}.players{gap:8px;margin-bottom:30px;align-items:stretch}.players article{display:flex;flex-direction:column;padding:12px;gap:8px;text-align:center}.players article>button{margin:auto}.players input:not([type=file]){width:110px;text-align:center;font-size:20px}.portrait{width:70px;height:70px}.versus{align-self:center}.sectionhead>span{display:none}.sectionhead h2{font-size:24px}nav{gap:6px}nav button{font-size:23px;padding:12px 5px;text-align:center}nav strong{display:block;font-size:12px;margin:5px 0}nav small{display:none}.gamewrap{padding:15px;gap:15px;display:flex;flex-direction:column-reverse}.gameinfo{padding:0}.gameinfo h2{font-size:23px;margin:12px 0}.gameinfo p{font-size:12px}.cell{font-size:35px}footer{gap:20px}footer span{text-align:right}}
.primary:hover{background:#2b6457}nav .active:hover{background:#2b6457}

footer{align-items:center}footer button{font-size:11px;padding:8px 12px}.portrait:has(video:not([hidden])){width:160px;height:120px}@media(max-width:720px){.portrait:has(video:not([hidden])){width:100px;height:100px}footer{flex-wrap:wrap}}

.brand{display:flex;align-items:center;gap:10px}.brand img{width:42px;height:42px;object-fit:cover;border-radius:12px}.install-banner{display:flex;align-items:center;gap:24px;background:#d8ed83;border:2px solid #b7d76e;border-radius:22px;padding:24px;margin-top:25px}.install-banner>img{width:100px;height:100px;object-fit:cover;border-radius:24px}.install-banner h2{margin:0 0 8px;font-size:27px}.install-banner p{margin:6px 0 12px}.install-banner .primary{width:auto;min-height:54px;font-size:19px;padding:14px 26px}.install-banner .small{margin-bottom:0}.hero-photo{width:100%;height:150px;object-fit:cover;object-position:center 28%;border-radius:15px;margin-bottom:16px}dialog{max-width:430px;width:90%;padding:28px;border:0;border-radius:22px;color:#173b36;background:#f5f5ed}dialog::backdrop{background:#173b36aa}dialog p{line-height:1.9;font-size:17px;white-space:pre-line}@media(max-width:720px){.install-banner{padding:20px;gap:15px;align-items:flex-start}.install-banner>img{width:58px;height:58px;border-radius:16px}.install-banner h2{font-size:21px}.install-banner p{font-size:13px}.install-banner .primary{font-size:16px;width:100%;padding:14px 12px}.hero-photo{height:190px}}

.together{margin-top:10px;background:#fffef5;color:#174e44;border:1px solid #174e44}.together:hover{color:white}.chosen{box-shadow:0 0 0 4px #d8ed83}.solo-options{display:flex;align-items:center;gap:20px;flex-wrap:wrap;padding:16px 20px;background:#d8ed83;border-radius:12px;margin-top:18px;font-size:13px}.solo-options select{font:inherit;padding:10px;border:1px solid #809b53;border-radius:10px;background:#fffef5;color:#174e44;margin-left:8px}.solo-options span{font-size:12px}#board.celebrate{animation:cheer .5s 3}.card.matched{animation:pair .35s ease-out}.disc.p0,.disc.p1{animation:pair .3s ease-out}@keyframes cheer{50%{box-shadow:0 0 0 8px #e7ae51;transform:scale(1.015)}}@keyframes pair{from{transform:scale(.75)}to{transform:scale(1)}}

#home,#mode{padding:30px 0}h1{font-size:52px;letter-spacing:-2px;line-height:1.1;margin:20px 0 10px}.lead{font-size:20px;margin:0 0 26px;color:#526c60}.gamecards,.modecards{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.gamecards article{padding:30px;background:white;border:1px solid #d3ddcb;border-radius:24px;text-align:center}.gamecards h2{font-size:28px}.gamecards p{min-height:24px}.bigicon{font-size:65px}.gamecards button{font-size:19px;min-height:58px}.modecards button{border-radius:24px;background:#e8eddf;display:flex;flex-direction:column;align-items:center;padding:30px;gap:14px;min-height:230px}.modecards button:hover{background:#d8ed83}.modecards img{width:90px;height:90px;object-fit:cover;border-radius:22px}.modecards span{font-size:65px;line-height:90px}.modecards strong{font-size:23px}.modecards small{font-size:16px;font-weight:400}.back{margin:0 0 15px}.playtop{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:20px 0}.playtop h2{font-size:30px}.playtop button{font-size:13px}.playtop .back{margin:0}.waiting{padding:24px;background:#fff0c8;border:2px solid #e4bd5e;border-radius:20px;font-size:22px;font-weight:700;text-align:center;line-height:1.5;margin-bottom:20px}.local-label{padding:15px;background:#d8ed83;border-radius:12px;text-align:center}.simplegame{max-width:650px;margin:15px auto}#board{max-width:650px}#status{font-size:21px;text-align:center;background:#174e44;color:white;margin:12px 0;padding:18px}.gameinfo{text-align:center}.players{margin-bottom:15px}.players article{justify-content:center}.players h2{font-size:22px}.install-banner{padding:14px;margin-top:15px}.install-banner>img{width:55px;height:55px}.install-banner h2{font-size:18px}.install-banner p{font-size:12px}.install-banner .primary{min-height:42px;font-size:15px;padding:9px 18px}#installHint{display:none}.cell:disabled,.disc:disabled,.card:disabled{opacity:1}.gameinfo #approval{padding:20px;background:#d8ed83;border-radius:15px}#approval button{margin:5px}@media(max-width:720px){header{padding:12px 18px}.brand{font-size:17px}.brand img{width:38px;height:38px}.gamecards{grid-template-columns:1fr;gap:14px}.gamecards article{padding:18px;display:grid;grid-template-columns:64px 1fr;align-items:center;text-align:left;column-gap:16px}.gamecards .bigicon{grid-row:1/3;font-size:48px;text-align:center}.gamecards h2{margin:0;font-size:24px}.gamecards p{margin:5px 0 12px;font-size:14px;min-height:0}.gamecards button{grid-column:1/3;font-size:18px;min-height:50px}.modecards{grid-template-columns:1fr;gap:14px}.modecards button{display:grid;grid-template-columns:70px 1fr;gap:3px 15px;text-align:left;padding:16px;min-height:105px}.modecards img,.modecards span{width:66px;height:66px;grid-row:1/3;border-radius:16px}.modecards span{font-size:45px;line-height:66px;text-align:center}.modecards strong{font-size:23px}.modecards small{font-size:15px}.lead{font-size:18px}h1{font-size:38px;margin-top:5px}#home,#mode{padding:22px 0}.playtop h2{font-size:22px}.playtop button{padding:10px;font-size:12px}.waiting{font-size:19px;padding:18px}.players article{flex-direction:row;padding:12px}.players .portrait{width:48px;height:48px}.players h2{font-size:18px}.players{gap:8px}#board .cell{font-size:35px}.install-banner{padding:12px;gap:12px}.install-banner h2{display:none}.install-banner p{margin:0 0 6px}.install-banner>img{width:45px;height:45px}.install-banner .primary{width:auto;font-size:14px}#status{font-size:18px}.card{font-size:30px}}
