:root{font-family:'Arial Rounded MT Bold','Trebuchet MS',Arial,sans-serif;font-synthesis:none;color:#2d3b50;background:#e8f1ff;--ink:#2d3b50;--coral:#f9878f;--cream:#fffaf0;--purple:#8776ca}*{box-sizing:border-box}body{margin:0;min-height:100svh;background:radial-gradient(circle at 7% 16%,#c6dcf8 2px,transparent 3px),radial-gradient(circle at 88% 30%,#d1e2fa 2px,transparent 3px),#e8f1ff;background-size:117px 129px,153px 187px,auto}button,input,select{font:inherit}button{color:var(--ink);cursor:pointer}button:disabled{opacity:.55;cursor:wait}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #6a55b2;outline-offset:4px}header{height:100px;max-width:1340px;margin:auto;padding:24px 48px;display:flex;align-items:center;justify-content:space-between}.logo{font-weight:900;font-size:27px;letter-spacing:-1px;text-decoration:none;color:var(--ink)}.logo-dot{color:#ed7888}.paw{color:#ed7888;font-size:38px;vertical-align:middle;margin-right:10px}nav{display:flex;gap:12px}.icon-button{border:2px solid #aebfda;border-radius:50%;width:43px;height:43px;background:#f7faff;font-size:22px;font-weight:bold;box-shadow:0 3px 0 #b9c9e1}.icon-button:hover{background:white;transform:translateY(-1px)}main{max-width:1250px;margin:auto;padding:0 34px}#splash{display:grid;grid-template-columns:1fr 1fr;align-items:center;min-height:calc(100svh - 185px);gap:20px;padding:30px 20px 60px}.eyebrow{font-size:12px;font-weight:900;letter-spacing:2px;color:#687e9b;display:flex;align-items:center;gap:8px}.eyebrow>span{display:inline-block;width:7px;height:7px;background:#f08b98;border-radius:50%}h1{font-size:clamp(55px,6.4vw,87px);line-height:1.03;letter-spacing:-5px;font-weight:900;margin:27px 0 20px;transform:rotate(-2deg)}h1 em{font-style:normal;color:#ed8290;text-shadow:0 4px 0 #ffd0c8}h1>span,h2>span{color:#ee8694}p{line-height:1.7;font-size:17px;color:#60728b}.splash-copy p{margin:0 0 30px}.splash-actions{display:flex;gap:13px;flex-wrap:wrap}.button{border:2px solid var(--ink);border-radius:18px;padding:18px 25px;min-height:60px;display:flex;align-items:center;justify-content:center;gap:20px;font-size:17px;font-weight:900;box-shadow:0 5px 0 var(--ink);transition:transform .15s,box-shadow .15s}.button:hover{transform:translateY(-2px);box-shadow:0 7px 0 var(--ink)}.button:active{transform:translateY(4px);box-shadow:0 1px 0 var(--ink)}.button.coral{background:#fa939a}.button.white{background:#fffaf0}.button>span{font-size:23px}.splash-note{display:block;margin-top:22px;font-size:12px;color:#71849f}#loading{font-size:13px;color:#7769a8;margin-top:18px;min-height:16px}.splash-art{position:relative;height:500px;isolation:isolate}.hero-blob{position:absolute;inset:70px -20px 0 0;background:#d2dff9;border-radius:46% 54% 56% 44% / 43% 60% 40% 57%;transform:rotate(-9deg);z-index:-1;border:2px dashed #b4c7e899}.hero-cat{width:370px;position:absolute;left:50%;bottom:43px;transform:translateX(-50%) rotate(3deg);filter:drop-shadow(0 15px 0 #c0ceeb65)}.hello-bubble{position:absolute;right:25px;top:15px;background:#fffdf6;padding:19px 24px;border:2px solid #7585a0;border-radius:22px 22px 22px 3px;transform:rotate(7deg);font-size:17px;line-height:1.4;box-shadow:4px 5px 0 #ccd8ee}.hello-bubble span{position:absolute;right:-15px;top:-21px;color:#f38b9b;font-size:40px;transform:rotate(10deg)}.floating{position:absolute;width:115px;filter:drop-shadow(0 9px 0 #c2cfe855)}.f1{top:70px;left:-38px;transform:rotate(-22deg)}.f2{top:180px;right:-32px;transform:rotate(25deg)}.f3{bottom:20px;left:0;transform:rotate(-18deg)}.f4{bottom:25px;right:-4px;transform:rotate(11deg)}.spark{position:absolute;color:#f4b750;font-size:38px}.s1{top:21px;left:90px}.s2{top:270px;left:15px}.s3{bottom:103px;right:0;font-size:24px}.cat-label{position:absolute;bottom:5px;left:50%;transform:translateX(-50%) rotate(-4deg);font-size:13px;letter-spacing:2px;font-weight:900;text-align:center;white-space:nowrap}.cat-label span{display:block;font-size:11px;letter-spacing:0;color:#7484a0;font-weight:400;margin-top:5px}footer{max-width:1250px;margin:auto;display:flex;justify-content:space-between;padding:23px 50px;font-size:12px;color:#7b8da9}footer b{font-size:23px;color:#e98596;vertical-align:middle;margin-left:5px}.hidden{display:none!important}
#game{padding-top:15px}.game-heading{max-width:650px;margin:0 auto 24px;display:flex;justify-content:space-between;align-items:center}h2{font-size:39px;letter-spacing:-2px;margin:5px 0;line-height:1.1}.score{text-align:right}.score>span{font-size:10px;letter-spacing:2px;color:#7e87a1;font-weight:bold;display:block}.score b{font-size:35px;line-height:1.35;display:block;letter-spacing:-1px;font-variant-numeric:tabular-nums}.score small{font-size:10px;color:#8a96aa}.play-layout{display:flex;justify-content:center;gap:30px;align-items:center;position:relative}.board-group{width:min(540px,calc(100svh - 295px));min-width:310px;position:relative;flex-shrink:0}.board-shell{padding:12px;background:#fff9ed;border:3px solid #8392b3;border-radius:24px;box-shadow:0 8px 0 #bccbe2,0 16px 25px #6d8bb918;position:relative}.board-shell::after{content:'';position:absolute;inset:-9px;border:1px dashed #aabedb;border-radius:30px;pointer-events:none}#board{width:100%;aspect-ratio:3/5;position:relative;touch-action:none;border-radius:13px;overflow:hidden;background:#e3eafa}#cells{position:absolute;inset:0;display:grid;grid-template-columns:repeat(6,1fr);grid-template-rows:repeat(10,1fr);gap:0}#cells button{border:2px solid #eef1fc;border-radius:10px;background:#fdfdff;min-width:0;min-height:0;padding:0;touch-action:none;-webkit-tap-highlight-color:transparent;user-select:none}#cells button:nth-child(16n+2),#cells button:nth-child(16n+4),#cells button:nth-child(16n+6),#cells button:nth-child(16n+8),#cells button:nth-child(16n+9),#cells button:nth-child(16n+11),#cells button:nth-child(16n+13),#cells button:nth-child(16n+15){background:#f2f5fc}#cells button.selected{background:#ffebbe;box-shadow:inset 0 0 0 3px #ebb85e}#cells button.hint{box-shadow:inset 0 0 0 2px #a698d7}#cells button:focus-visible{outline:none;box-shadow:inset 0 0 0 3px #7f6cbd}#canvas{position:absolute;inset:0;width:100%;height:100%;z-index:2;pointer-events:none}.board-actions{display:flex;justify-content:space-between;align-items:center;margin-top:24px;gap:10px}.pill{border:1.5px solid #a9b7d0;border-radius:100px;min-height:43px;padding:9px 16px;background:#f8fbff;font-size:12px;font-weight:bold;white-space:nowrap}.pill:hover{background:#fff}.pill span{color:#8d7dca}#comboCount{font-size:11px;color:#8192ac;white-space:nowrap}#status{font-size:12px;text-align:center;margin:13px 0 0;min-height:21px}#celebration{position:absolute;z-index:7;left:50%;top:38%;transform:translate(-50%,-50%) rotate(-5deg);pointer-events:none;white-space:nowrap;font-size:clamp(25px,4vw,47px);font-weight:900;letter-spacing:-2px;color:#e67691;text-shadow:3px 0 #fff,-3px 0 #fff,0 3px #fff,0 -3px #fff,3px 5px #595079;filter:drop-shadow(0 4px 2px #4d526430)}.side-note{width:170px;align-self:center;flex-shrink:1}.mini-label{font-size:10px;letter-spacing:2px;color:#8e83b5;font-weight:bold}.side-note p{font-size:20px;line-height:1.5;color:#61718e;transform:rotate(-3deg)}.rare{display:flex;gap:0;margin-left:-10px}.rare canvas{width:76px}.side-note small{font-size:11px;color:#8390a8;line-height:1.6}.cat-side{width:180px;position:relative;align-self:flex-end;margin-bottom:75px;flex-shrink:0}.cat-side canvas{width:220px;margin-left:-20px;transform-origin:50% 90%;transition:transform .2s}.speech{background:#fffdf5;border:1.5px solid #9ba8bf;border-radius:19px 19px 3px 19px;padding:16px 17px;font-size:15px;line-height:1.4;transform:rotate(4deg);color:#62718b;position:relative;z-index:3}.speech span{color:#ed8398}.cat-name{text-align:center;font-size:11px;font-weight:900;letter-spacing:2px;margin-top:-12px}.cat-name span{display:block;font-size:10px;letter-spacing:0;font-weight:400;color:#8290a7;margin-top:4px}.cat-side.cheer img{animation:cat-hop .45s ease-in-out 2}.cat-side.cheer .speech{color:#8970b2}#roster{margin-top:24px;display:flex;flex-wrap:wrap;gap:6px}.avatar{width:33px;height:33px;border-radius:50%;border:2px solid #fff;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:bold;background:#c6b5ec;box-shadow:0 2px 0 #a7b9d5}.party{display:flex;align-items:center;justify-content:center;gap:7px;color:#7787a2;font-size:11px;margin:15px auto}.live-dot{width:7px;height:7px;background:#85b69d;border-radius:50%}dialog{border:2px solid #6d7e99;border-radius:25px;padding:35px;max-width:min(480px,90vw);background:#fffcf3;box-shadow:0 10px 0 #97abc773;color:var(--ink)}dialog::backdrop{background:#263a5660;backdrop-filter:blur(4px)}dialog p{font-size:14px;line-height:1.7}.close{position:absolute;right:15px;top:12px;font-size:25px;border:0;background:none;min-width:35px;min-height:35px}dialog .button{width:100%;font-size:15px;min-height:50px}.keyboard-note{font-size:12px!important}#debug{position:fixed;bottom:5px;right:10px;z-index:10;font:10px monospace;color:#7a88a0}#debug[open]{background:#fff9eefa;padding:12px;border:1px solid #bac8df;border-radius:12px}#debug select{font-size:11px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}@keyframes cat-hop{0%,100%{transform:translateY(0) rotate(-2deg)}45%{transform:translateY(-15px) rotate(4deg)}}
@media(max-width:1050px){.side-note{display:none}.play-layout{gap:20px}.cat-side{width:150px}.cat-side canvas{width:190px}.game-heading{max-width:610px}#splash{padding-inline:0}.hero-cat{width:330px}.floating{width:95px}.hello-bubble{right:10px}.splash-actions{gap:10px}.button{font-size:15px;padding:17px 20px}h1{font-size:69px}}
@media(max-width:700px){header{height:76px;padding:16px 22px}.logo{font-size:23px}.paw{font-size:30px;margin-right:5px}.icon-button{height:37px;width:37px;font-size:19px}main{padding:0 17px}#splash{display:flex;flex-direction:column-reverse;gap:8px;padding:0 0 25px;min-height:0}.splash-art{width:min(330px,90vw);height:280px}.hero-cat{width:235px;bottom:25px}.hero-blob{inset:30px 0 12px}.hello-bubble{right:0;top:0;font-size:12px;padding:11px 13px;border-radius:14px 14px 14px 3px}.hello-bubble span{font-size:28px;right:-9px;top:-16px}.floating{width:75px}.f1{left:-5px;top:24px}.f2{right:-12px;top:110px}.f3{left:-5px;bottom:10px}.f4{right:0;bottom:14px}.s1{font-size:25px;left:80px;top:0}.s2{font-size:24px;top:165px;left:12px}.s3{bottom:86px;right:0;font-size:20px}.cat-label{font-size:9px;bottom:1px}.cat-label span{font-size:8px;margin-top:2px}.splash-copy{text-align:center;width:100%;max-width:365px}.splash-copy .eyebrow{justify-content:center;font-size:9px;letter-spacing:1.5px}h1{font-size:56px;line-height:.99;letter-spacing:-3px;margin:16px 0}.splash-copy p{font-size:14px;line-height:1.6;margin-bottom:20px}.splash-actions{justify-content:center}.splash-actions .button{padding:13px 18px;min-height:51px;font-size:14px;gap:12px;border-radius:15px}.splash-note{font-size:10px;margin-top:18px}#loading{font-size:11px;margin-top:9px}footer{padding:10px 22px;font-size:10px}footer b{font-size:17px}.game-heading{margin-bottom:100px;padding-top:3px}.game-heading .eyebrow{font-size:8px;letter-spacing:1.4px}.game-heading h2{font-size:32px}.score b{font-size:30px}.score>span{font-size:8px}.score small{display:none}.play-layout{display:block}.board-group{width:100%;min-width:0;max-width:480px;margin:auto}.board-shell{padding:7px;border-width:2px;border-radius:18px}.board-shell::after{inset:-6px;border-radius:23px}#cells button{border-width:1.5px;border-radius:8px}.cat-side{position:absolute;right:6px;top:-100px;width:90px;height:85px;margin:0;pointer-events:none}.cat-side canvas{width:95px;margin:0}.cat-name{display:none}.speech{position:absolute;right:83px;top:22px;width:150px;font-size:11px;line-height:1.25;padding:9px 11px;transform:rotate(-3deg);border-radius:13px 13px 3px 13px}.speech br{display:none}.board-actions{margin-top:19px;gap:7px}.pill{padding:8px 12px;font-size:11px;min-height:43px}#comboCount{font-size:9px}#status{font-size:11px;min-height:30px;margin-top:10px}.party{font-size:10px;margin:3px auto 14px}#celebration{font-size:34px;letter-spacing:-1.5px}#debug{font-size:8px}.board-actions:has(#invite:not(.hidden)) #comboCount{display:none}}
@media(max-width:380px){.splash-art{height:243px}.hero-cat{width:204px}.hello-bubble{font-size:10px}.floating{width:63px}.f2{top:90px}h1{font-size:48px}.splash-copy p{font-size:13px}.splash-actions .button{padding:12px 14px;font-size:13px}.game-heading{margin-bottom:95px}.cat-side{top:-100px}.speech{width:130px}.board-shell{padding:5px}main{padding:0 13px}}
@media(max-height:650px) and (min-width:701px){header{height:65px}#splash{min-height:calc(100svh - 120px);padding-block:0}.splash-art{height:400px}.hero-cat{width:300px}h1{font-size:60px}.game-heading{margin-bottom:15px}.board-group{width:340px;min-width:280px}.cat-side{margin-bottom:50px}footer{padding-block:8px}.side-note{display:none}}
@media(max-height:520px) and (orientation:landscape){header{height:60px}#game{padding-top:0}.game-heading{position:absolute;left:25px;top:95px;display:block;width:160px}.score{text-align:left;margin-top:18px}.game-heading .eyebrow{font-size:9px}.board-group{width:min(310px,calc(100svh - 110px));min-width:245px}.play-layout{margin-left:140px}.cat-side{display:none}.board-actions{margin-top:15px}#status{font-size:10px;margin-top:6px}.party{position:absolute;left:25px;top:250px;max-width:140px;line-height:1.5}footer{display:none}#splash{flex-direction:row;min-height:0}.splash-art{flex:1}.splash-copy{flex:1}h1{font-size:42px}.splash-copy p{font-size:12px}.splash-copy .eyebrow{display:none}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
@media(max-height:520px) and (orientation:landscape){.cat-side{display:block;position:fixed;left:30px;right:auto;top:auto;bottom:12px;width:92px;height:96px;margin:0}.cat-side canvas{width:92px;margin:0}.cat-side .speech,.cat-side .cat-name{display:none}}

#celebration{width:115%;text-align:center;white-space:normal;overflow-wrap:anywhere;line-height:1.2}
@media(max-width:700px){#celebration{font-size:clamp(23px,7vw,34px)}}

canvas[data-model]{aspect-ratio:1}#cells button,#cells button:nth-child(n){background:transparent;border-color:transparent}#cells{z-index:3}#cells button.selected,#cells button.hint{background:transparent}#board{background:transparent}#canvas{z-index:2}

.board-group{width:min(400px,calc((100svh - 295px)*.6 + 30px));min-width:230px}
@media(max-width:700px) and (orientation:portrait){header{height:64px}#game{padding-top:0}.game-heading{margin-bottom:48px}.board-group{width:min(100%,max(216px,calc((100svh - 300px)*.6 + 18px)));min-width:0}.cat-side{right:calc(50% - 38px);top:-86px;width:76px;height:76px}.cat-side canvas{width:76px}.cat-side .speech{display:none}}
@media(max-height:520px) and (orientation:landscape){.board-group{width:min(220px,calc((100svh - 130px)*.6 + 30px));min-width:160px}}

.floating[data-model="1"],.floating[data-model="2"]{transform:none}

/* During play, only a compact score/menu strip surrounds the board. */
body.playing{overflow:hidden;height:100dvh}body.playing>header,body.playing>footer{display:none}body.playing>main{padding:0;max-width:none;margin:0}
body.playing #game{position:fixed;inset:0;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);display:flex;flex-direction:column;height:100dvh}
.play-toolbar{height:48px;flex:0 0 48px;width:min(100%,calc((100dvh - 48px)*.75));margin:auto;display:flex;align-items:center;justify-content:space-between;padding:0 9px;position:relative}
.play-toolbar .score{display:flex;align-items:baseline;gap:7px;text-align:left}.play-toolbar .score b{font-size:23px;line-height:1;letter-spacing:-.5px}.play-toolbar .score>span{font-size:8px;letter-spacing:1px}
.menu-toggle{height:44px;width:44px;font-size:26px;border:0;border-radius:12px;background:transparent}.menu-toggle:hover{background:#fff8}
body.playing .play-layout{margin:0;flex:1;min-height:0;display:flex;align-items:stretch;justify-content:center;padding:0 4px 4px}
body.playing .board-group{width:min(100%,calc((100dvh - 48px)*.75));height:100%;min-width:0;max-width:none;flex-shrink:1;margin:0;position:relative}
body.playing .board-shell{height:100%;padding:0;border:0;border-radius:12px;box-shadow:none;background:transparent}body.playing .board-shell::after{display:none}
body.playing #board{height:100%;width:100%;aspect-ratio:auto;border-radius:12px}
#status:not(.hidden){position:absolute;bottom:12px;left:50%;transform:translateX(-50%);width:max-content;max-width:94%;margin:0;min-height:0;padding:10px 15px;background:#fffdf5f5;border:1px solid #acb9ce;border-radius:14px;z-index:8;color:#40526e;font-size:13px;box-shadow:0 5px 18px #293e5d33;pointer-events:none}
#refreshNotice{position:absolute;left:5%;right:5%;top:38%;z-index:9;padding:22px 16px;background:#fffbefed;border:2px solid #7e90b2;border-radius:22px;text-align:center;box-shadow:0 9px 25px #233c6b33;pointer-events:none}#refreshNotice b{display:block;font-size:clamp(22px,5vw,34px);letter-spacing:-1px}#refreshNotice span{display:block;margin-top:8px;font-size:14px;color:#526785}
#gameMenu{width:min(380px,94vw);max-height:90dvh;overflow:auto;padding:28px}#gameMenu p{font-size:12px;line-height:1.4;margin:10px 0}.menu-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:20px}.menu-actions .pill{min-height:48px;white-space:normal}#gameMenu #party{position:static;max-width:none;justify-content:flex-start;margin:12px 0}#gameMenu #roster{margin:10px 0}#gameMenu #debug{position:static;font-size:10px;margin-top:20px}#gameMenu #debug[open]{padding:10px}#celebration{width:96%;top:42%;font-size:clamp(28px,6vw,48px)}

#feastCanvas{position:fixed;inset:0;width:100%;height:100%;z-index:6;pointer-events:none}#celebration{z-index:8}
