@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Libre+Franklin:wght@400;500;600;700;800&display=swap');
:root{font-family:'DM Sans',Arial,sans-serif;color:#242424;background:#f6f3ed;font-size:16px}
*{box-sizing:border-box}body{margin:0;min-height:100vh}button,input{font:inherit}button{cursor:pointer}button:disabled{cursor:default}button:focus-visible,input:focus-visible{outline:3px solid #276fc4;outline-offset:3px}h1,h2,h3,p{margin-top:0}.site-header{height:78px;border-bottom:1px solid #d7d2c8;display:flex;align-items:center;justify-content:space-between;padding:0 max(24px,calc((100vw - 1160px)/2));background:#faf8f3}.brand{border:0;background:transparent;padding:0;display:flex;align-items:center;gap:13px;color:#242424;font-family:Georgia,serif;font-size:22px;font-weight:700;letter-spacing:-.045em}.brand em{font-style:normal;font-weight:400}.brand-mark{width:38px;height:38px;background:#242424;color:#f5d35f;display:grid;place-items:center;font-family:'Libre Franklin',sans-serif;font-size:14px;letter-spacing:-.08em;border-radius:4px}.header-right,.eyebrow,.kicker,.tiny-label,.site-footer{font-family:'Libre Franklin',Arial,sans-serif;font-size:.72rem;font-weight:800;letter-spacing:.14em}.header-right{display:flex;align-items:center;gap:12px;color:#696762}.header-dot{width:5px;height:5px;background:#b9b2a6;border-radius:50%}.site-footer{max-width:1160px;margin:70px auto 0;border-top:1px solid #d7d2c8;padding:25px 0 34px;color:#79756e;display:flex;justify-content:space-between;font-weight:600;letter-spacing:.05em}#app{min-height:calc(100vh - 235px)}.wrap{max-width:1160px;margin:auto;padding:0 0 28px}.hero{padding:75px 0 44px;text-align:center}.eyebrow{color:#77716a;margin-bottom:19px}.hero h1{font:700 clamp(3.3rem,8vw,6.9rem)/.99 Georgia,serif;letter-spacing:-.062em;margin-bottom:24px}.hero p{max-width:530px;margin:0 auto;color:#625d55;font-size:1.125rem;line-height:1.6}.hero-rule{width:55px;height:3px;background:#252525;margin:30px auto 0}.games-section{margin-top:24px}.section-bar{display:flex;justify-content:space-between;align-items:baseline;border-top:1px solid #393832;padding:16px 0 22px}.section-bar h2{font:700 1.3rem Georgia,serif;margin:0}.section-bar span{font-size:.8rem;color:#6b665e}.game-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:15px}.game-card{height:265px;border:1px solid #d9d3c9;border-radius:8px;background:#fffefa;text-align:left;padding:24px;display:flex;flex-direction:column;transition:transform .18s,box-shadow .18s,border-color .18s;color:inherit;position:relative}.game-card:hover{transform:translateY(-4px);box-shadow:0 12px 24px #26221b13;border-color:#a6a096}.game-card h3{font:700 1.65rem Georgia,serif;letter-spacing:-.035em;margin:24px 0 6px}.game-card p{font-size:.91rem;color:#6c665e;margin:0}.game-card .card-foot{margin-top:auto;display:flex;justify-content:space-between;align-items:center;color:#514d47;font-size:.8rem;font-weight:700}.game-card .card-foot strong{font-size:.9rem}.game-card:nth-child(1){--accent:#8fac7b}.game-card:nth-child(2){--accent:#ae8bc1}.game-card:nth-child(3){--accent:#87b5ce}.game-card:nth-child(4){--accent:#f3d353}.game-icon{height:50px;display:flex;align-items:center;gap:3px}.game-icon i{width:25px;height:25px;background:var(--accent);display:grid;place-items:center;font-style:normal;font-size:.78rem;font-weight:800;color:#292825}.game-icon.word i{width:27px;height:27px;border-radius:2px}.game-icon.connect{display:grid;grid-template-columns:repeat(2,26px);grid-template-rows:repeat(2,24px);gap:3px;align-content:center}.game-icon.connect i{width:26px;height:24px;border-radius:3px}.game-icon.strand{gap:0}.game-icon.strand i{border-radius:50%;width:28px;height:28px;margin-right:-4px;border:2px solid #fffefa}.game-icon.bee{height:50px;position:relative}.game-icon.bee i{width:30px;height:30px;clip-path:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%);position:absolute;left:16px;top:2px}.game-icon.bee i:nth-child(2){left:41px;top:17px}.game-icon.bee i:nth-child(3){left:16px;top:32px}.progress-strip{display:flex;align-items:center;justify-content:space-between;margin-top:24px;padding:21px 24px;border:1px solid #ded8cb;border-radius:7px;background:#eeeae1;gap:16px}.progress-strip p{margin:4px 0 0;color:#706a61;font-size:.89rem}.progress-strip strong{font:700 1.05rem Georgia,serif}.text-button{border:0;background:transparent;padding:8px 0;font-weight:800;text-decoration:underline;text-underline-offset:4px;white-space:nowrap;color:#262522}.round-wrap{max-width:890px;margin:0 auto;padding:38px 20px 30px}.round-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:38px}.back-button{border:0;background:transparent;font-size:.85rem;font-weight:800;padding:8px 0;color:#5e5a53}.back-button:hover{text-decoration:underline}.round-count{font-family:'Libre Franklin',sans-serif;font-size:.73rem;letter-spacing:.12em;font-weight:800;color:#77716b}.round-head{text-align:center;margin-bottom:28px}.round-head .kicker{margin-bottom:14px;color:#7e786f}.round-head h1{font:700 clamp(2.6rem,6vw,4.2rem)/1.04 Georgia,serif;letter-spacing:-.05em;margin-bottom:13px}.round-head p{color:#656057;line-height:1.5;margin:0 auto;max-width:620px}.round-main{background:#fffefa;border:1px solid #ded9cf;border-radius:9px;padding:30px;box-shadow:0 4px 16px #33281908}.round-actions{display:flex;justify-content:center;flex-wrap:wrap;gap:12px;margin-top:24px}.btn{border:1px solid #262624;border-radius:4px;background:#282725;color:white;padding:12px 20px;font-weight:800;min-height:46px}.btn:hover{background:#44413b}.btn.secondary{background:transparent;color:#292723}.btn.secondary:hover{background:#eeeae2}.btn:disabled{opacity:.45}.message{min-height:30px;text-align:center;font-weight:700;font-size:.9rem;color:#635d54;margin:15px 0 0}.success{color:#3b714a}.word-board{display:grid;grid-template-columns:repeat(5,52px);gap:6px;justify-content:center;margin:4px auto 25px}.letter-tile{height:52px;border:2px solid #d2d2cf;display:grid;place-items:center;font-family:'Libre Franklin',Arial,sans-serif;font-size:1.6rem;font-weight:800;text-transform:uppercase;background:#fff}.letter-tile.filled{border-color:#888}.letter-tile.correct,.key.correct{background:#6aaa64;border-color:#6aaa64;color:#fff}.letter-tile.present,.key.present{background:#c9ac50;border-color:#c9ac50;color:#fff}.letter-tile.absent,.key.absent{background:#787d83;border-color:#787d83;color:#fff}.keyboard{max-width:515px;margin:auto}.key-row{display:flex;justify-content:center;gap:4px;margin-bottom:6px}.key{border:0;border-radius:4px;background:#d9d9d5;min-width:31px;height:43px;padding:0 5px;font-size:.86rem;font-weight:800;text-transform:uppercase}.key.wide{min-width:58px;font-size:.72rem}.intro-note{font-size:.85rem;color:#6e685f;text-align:center;line-height:1.5;margin:0 auto 20px}.connection-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:7px}.connection-tile{min-height:72px;padding:8px 5px;border:0;border-radius:4px;background:#eeece7;text-transform:uppercase;font-family:'Libre Franklin',Arial,sans-serif;font-size:clamp(.7rem,1.6vw,.92rem);font-weight:800;line-height:1.2;color:#272727}.connection-tile:hover{background:#ddd8cd}.connection-tile.selected{background:#5f5b52;color:#fff}.connection-solved{min-height:72px;border-radius:4px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;margin-bottom:7px;padding:8px;font-family:'Libre Franklin',sans-serif}.connection-solved strong{font-size:.9rem}.connection-solved span{font-size:.75rem;margin-top:5px}.group-0{background:#f2d965}.group-1{background:#a6c783}.group-2{background:#a9c9dd}.group-3{background:#c6a5d5}.connection-controls{display:flex;gap:9px;justify-content:center;margin-top:23px;flex-wrap:wrap}.connection-controls .btn{border-radius:24px;padding:9px 18px}.mistakes{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:18px;color:#666057;font-size:.83rem}.mistakes i{display:inline-block;background:#5b5954;border-radius:50%;width:9px;height:9px}.mistakes i.used{background:#d9d4cb}.strand-board{display:grid;grid-template-columns:repeat(6, minmax(42px,56px));gap:6px;justify-content:center;touch-action:none;user-select:none}.strand-cell{width:100%;aspect-ratio:1;border:0;border-radius:50%;background:#eeece7;font-family:'Libre Franklin',sans-serif;font-size:1.15rem;font-weight:800;position:relative;z-index:1;color:#292827}.strand-cell.active{background:#394549;color:white}.strand-cell.found{background:#9cc7dc}.strand-cell.spangram{background:#f0d45c}.strand-cell:disabled{color:#2a2a2a}.strand-current{font-family:'Libre Franklin',sans-serif;font-size:1.2rem;font-weight:800;letter-spacing:.13em;text-align:center;min-height:32px;margin:20px 0 6px}.word-chips{display:flex;gap:7px;flex-wrap:wrap;justify-content:center;margin-top:18px}.word-chips span{background:#d9e9ef;border-radius:20px;padding:7px 11px;font-size:.75rem;font-weight:800;letter-spacing:.04em}.word-chips span.spanner{background:#f0d45c}.bee-board{height:255px;width:290px;margin:8px auto 15px;position:relative}.hex{position:absolute;width:86px;height:77px;clip-path:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%);border:0;background:#e6e4dc;font-family:'Libre Franklin',sans-serif;font-size:1.65rem;font-weight:800}.hex:hover{background:#d6d3c9}.hex.center{background:#f0d351}.hex-0{left:102px;top:87px}.hex-1{left:102px;top:8px}.hex-2{left:172px;top:48px}.hex-3{left:172px;top:127px}.hex-4{left:102px;top:166px}.hex-5{left:32px;top:127px}.hex-6{left:32px;top:48px}.bee-entry{text-align:center;min-height:48px;font-family:'Libre Franklin',sans-serif;font-weight:800;font-size:1.8rem;letter-spacing:.12em;color:#242424}.bee-entry .placeholder{color:#c8c4bb}.bee-entry .center-char{color:#d2a825}.bee-controls{display:flex;justify-content:center;gap:8px}.bee-controls .btn{border-radius:30px}.found-list{margin-top:22px;border-top:1px solid #e2ded6;padding-top:16px;color:#6b655c;text-align:center;font-size:.85rem;line-height:1.6}.found-list strong{color:#222}.answer-panel{margin-top:24px;background:#f1eee7;padding:20px 23px;border-radius:6px;text-align:center;line-height:1.55}.answer-panel h3{font:700 1.4rem Georgia,serif;margin-bottom:8px}.answer-panel p{margin:0;color:#5d584f}.wrap-up{max-width:820px;margin:auto;padding:65px 20px 30px}.wrap-up h1{font:700 clamp(2.6rem,6vw,4.4rem)/1.05 Georgia,serif;letter-spacing:-.05em;margin-bottom:14px}.wrap-up>.lead{color:#676159;line-height:1.55;font-size:1.06rem}.score-panel{padding:22px 26px;background:#262624;color:white;border-radius:7px;display:flex;justify-content:space-between;align-items:center;margin:30px 0}.score-panel span{font:700 1.15rem Georgia,serif}.score-panel strong{font:700 2rem Georgia,serif}.agenda{border-top:1px solid #333;margin-top:35px}.agenda h2{font:700 1.5rem Georgia,serif;margin:19px 0}.agenda-item{border-top:1px solid #d7d2c8;padding:15px 0;display:grid;grid-template-columns:32px 1fr;gap:14px}.agenda-item b{font-size:.76rem;color:#8b8579;padding-top:4px}.agenda-item h3{font:700 1.08rem Georgia,serif;margin:0 0 5px}.agenda-item p{margin:0;color:#6c665e;font-size:.9rem}.round-nav{max-width:890px;margin:18px auto;display:flex;justify-content:space-between;gap:14px;padding:0 20px}.round-nav button{border:0;background:transparent;text-decoration:underline;text-underline-offset:4px;font-size:.82rem;font-weight:800;color:#45413a}.round-nav button:disabled{visibility:hidden}
@media(max-width:1200px){.wrap,.site-footer{margin-left:24px;margin-right:24px}}@media(max-width:760px){.site-header{height:66px;padding:0 18px}.brand{font-size:18px}.brand-mark{width:32px;height:32px;font-size:12px}.header-right{font-size:.59rem}.header-right .header-dot{display:none}.hero{padding:55px 0 38px}.hero p{font-size:1rem}.game-grid{grid-template-columns:repeat(2,1fr)}.game-card{height:220px;padding:18px}.game-card h3{margin-top:14px;font-size:1.4rem}.site-footer{margin-top:50px}.round-wrap{padding-top:23px}.round-top{margin-bottom:25px}}@media(max-width:500px){.header-right{display:none}.wrap,.site-footer{margin-left:16px;margin-right:16px}.hero h1{font-size:3.45rem}.game-grid{gap:9px}.game-card{height:202px;padding:15px}.game-card h3{font-size:1.29rem}.game-card p{font-size:.82rem}.game-card .card-foot{font-size:.72rem}.progress-strip{align-items:flex-start;flex-direction:column}.site-footer{flex-direction:column;gap:8px}.round-main{padding:17px 11px}.round-head h1{font-size:2.55rem}.word-board{grid-template-columns:repeat(5,44px);gap:5px}.letter-tile{height:44px;font-size:1.4rem}.key{height:43px;min-width:0;flex:1;padding:0 1px;font-size:.72rem}.key.wide{min-width:43px}.connection-tile{min-height:63px;font-size:.61rem;overflow-wrap:anywhere;padding:3px}.connection-solved span{font-size:.65rem}.strand-board{grid-template-columns:repeat(6,minmax(39px,49px));gap:3px}.strand-cell{font-size:1rem}.bee-board{transform:scale(.94);transform-origin:top center;margin-bottom:0}.score-panel{padding:17px}.score-panel strong{font-size:1.5rem}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
.card-glyph{display:block;width:90px;height:50px;flex:none}.bee-glyph{width:58px;height:50px}
.team-panel{display:flex;align-items:center;justify-content:space-between;gap:24px;background:#242424;color:#fff;border-radius:8px;padding:25px 30px;margin:0 0 34px}.team-panel h2{font:700 1.8rem Georgia,serif;letter-spacing:-.03em;margin:8px 0}.team-panel p{color:#d2cec6;margin:0;font-size:.92rem;line-height:1.5}.team-panel .tiny-label{color:#f3d55d}.team-panel .text-button{color:#fff}.join-panel{align-items:flex-start}.join-panel>div{max-width:250px}.join-panel form{display:grid;grid-template-columns:1fr 1fr;gap:12px;flex:1;max-width:650px}.join-panel label{font-size:.76rem;font-weight:800;line-height:1.4;color:#e9e7e2}.join-panel label span{font-weight:500;color:#bbb7b0}.join-panel input{display:block;width:100%;border:1px solid #96938d;border-radius:4px;padding:10px 12px;margin-top:6px;background:#fffefa;color:#242424;font-size:.94rem}.join-panel input::placeholder{color:#7d786f}.join-panel .members-field{grid-column:1/-1}.join-panel .btn{grid-column:1/-1;width:max-content;background:#f0d45c;border-color:#f0d45c;color:#242424}.join-panel .btn:hover{background:#ffe683}.leaderboard{margin-top:42px}.leaderboard-guide{font-size:.86rem;color:#777168;margin:-7px 0 18px}.leaderboard-list{border:1px solid #d9d4ca;background:#fffefa;border-radius:7px;overflow:hidden}.leaderboard-row{display:grid;grid-template-columns:45px 1fr auto;gap:13px;align-items:center;padding:15px 22px;border-bottom:1px solid #e6e1d7}.leaderboard-row:last-child{border-bottom:0}.leaderboard-row.ours{background:#fff7d9}.leaderboard-rank{font:800 .75rem 'Libre Franklin',sans-serif;color:#8a847a}.leaderboard-row strong{font:700 1.12rem Georgia,serif}.leaderboard-row small{display:block;color:#756e63;font-size:.76rem;margin-top:3px;line-height:1.45}.leaderboard-row b{font:800 .88rem 'Libre Franklin',sans-serif}.leaderboard-empty{border:1px dashed #bdb7ad;border-radius:7px;padding:23px;color:#746d63;background:#fffefa}.leaderboard-error{background:#fff0e7;color:#913d24;border-radius:4px;padding:10px 14px;font-size:.87rem}.wrap-up .leaderboard{margin:42px 0}.wrap-up .leaderboard .section-bar{border-color:#393832}@media(max-width:760px){.join-panel{flex-direction:column}.join-panel>div,.join-panel form{max-width:none;width:100%}.team-panel{padding:23px}}@media(max-width:500px){.team-panel{margin:0 0 24px;align-items:flex-start}.team-panel h2{font-size:1.5rem}.join-panel form{grid-template-columns:1fr}.join-panel .members-field,.join-panel .btn{grid-column:auto}.leaderboard-row{padding:14px;grid-template-columns:28px 1fr auto;gap:8px}.leaderboard-row strong{font-size:1rem}}
/* Server-rendered home cards and controls */
.game-card{text-decoration:none}.game-card:focus-visible{outline:3px solid #276fc4;outline-offset:3px}.card-glyph{font-family:Georgia,serif;font-size:2.8rem;line-height:50px;color:#8a7a34}.brand{text-decoration:none}.team-panel form .text-button{color:white}
/* Temporary feedback inbox during review */
.feedback-widget{position:fixed;right:18px;bottom:18px;z-index:20;width:min(350px,calc(100vw - 36px));background:#fffefa;border:1px solid #d1cabd;border-radius:10px;box-shadow:0 12px 36px #24242426;color:#242424}.feedback-widget:not([open]){width:auto}.feedback-widget summary{list-style:none;cursor:pointer;padding:14px 18px;background:#262624;color:white;border-radius:8px;font-weight:800}.feedback-widget summary::-webkit-details-marker{display:none}.feedback-widget[open] summary{border-radius:8px 8px 0 0}.feedback-content{padding:16px 18px 18px}.feedback-content p{font-size:.9rem;line-height:1.45;color:#5f594f;margin:0 0 13px}.feedback-content label{display:block;font-size:.85rem;font-weight:800;margin-bottom:6px}.feedback-content input{display:block;width:100%;min-height:44px;padding:10px 12px;border:1px solid #938d82;border-radius:4px;background:white;color:#242424}.feedback-content .btn{margin-top:10px;width:100%}.feedback-content .feedback-status{color:#3b714a;font-weight:700}
/* Connected Strands paths and spangram reveal */
.strand-board{position:relative}.strand-links{position:absolute;inset:0;width:100%;height:100%;z-index:0;overflow:visible;pointer-events:none}.strand-link{fill:none;stroke-width:19;stroke-linecap:round;stroke-linejoin:round}.strand-link.found{stroke:#9cc7dc}.strand-link.spangram{stroke:#f0d45c}.strand-link.active{stroke:#394549}.spangram-toast{position:fixed;left:50%;top:35%;transform:translate(-50%,-50%);z-index:30;background:#f0d45c;color:#25221b;border:2px solid #8a6d16;border-radius:12px;box-shadow:0 18px 55px #2923174d;padding:20px 35px;text-align:center;pointer-events:none;animation:spangram-pop 1.9s ease-out both}.spangram-toast strong{display:block;font:800 clamp(1.6rem,5vw,2.8rem) 'Libre Franklin',Arial,sans-serif;letter-spacing:.08em}.spangram-toast span{display:block;margin-top:5px;font-weight:800;letter-spacing:.12em}@keyframes spangram-pop{0%{opacity:0;transform:translate(-50%,-45%) scale(.6)}16%{opacity:1;transform:translate(-50%,-50%) scale(1.08)}29%{transform:translate(-50%,-50%) scale(1)}78%{opacity:1}100%{opacity:0;transform:translate(-50%,-58%) scale(1)}}
/* Individual entry */
.join-panel .nickname-field{grid-column:1/-1}@media(max-width:500px){.join-panel .nickname-field,.join-panel .btn{grid-column:1/-1}}
