@import "https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=DM+Sans:wght@400;500;600;700&display=swap";:root{color:#263630;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;--ink:#263630;--muted:#747b73;--quiet:#a2a59c;--paper:#fbfaf6;--line:#dedbd2;--accent:#d96b4f;--sage:#527b70;--mono:"DM Mono", ui-monospace, SFMono-Regular, Menlo, monospace;background:#f4f2ec;font-family:DM Sans,Avenir Next,Avenir,sans-serif}*{box-sizing:border-box}body{min-width:320px;min-height:100vh;margin:0}button,input{font:inherit}button{color:inherit}button:focus-visible,input:focus-visible,[role=button]:focus-visible{outline-offset:3px;outline:3px solid #78978c}::selection{color:var(--ink);background:#e9cfc2}.app-shell{flex-direction:column;width:min(1240px,100%);min-height:100dvh;margin:0 auto;padding:0 46px;display:flex}.topbar{border-bottom:1px solid #34413a24;justify-content:space-between;align-items:center;height:86px;display:flex}.brand{appearance:none;color:var(--ink);letter-spacing:-.045em;cursor:pointer;background:0 0;border:0;align-items:center;gap:10px;padding:0;font-size:16px;font-weight:700;display:inline-flex}.brand-mark{fill:#34443d;stroke:#34443d;stroke-width:1.15px;stroke-linecap:round;stroke-linejoin:round;width:30px;height:30px}.brand-mark path{fill:none}.brand-mark .brand-box{fill:#e8cdc0;stroke:#d96b4f}.topbar-right{align-items:center;gap:19px;display:flex}.topbar-note{color:var(--muted);letter-spacing:.015em;font-size:12px}.room-chip{color:var(--ink);font:500 10px var(--mono);letter-spacing:.07em;align-items:center;gap:7px;display:inline-flex}.status-dot{background:#81a28f;border-radius:50%;width:7px;height:7px;box-shadow:0 0 0 3px #81a28f26}.home-layout{flex:1;grid-template-columns:1.13fr .87fr;align-items:center;gap:clamp(48px,8vw,108px);padding:58px 0 52px;display:grid}.home-intro{min-width:0;padding-left:20px;position:relative}.eyebrow{color:var(--muted);font:500 10px var(--mono);letter-spacing:.12em;align-items:center;gap:9px;display:flex}.eyebrow-rule{background:var(--accent);width:20px;height:1px}.home-intro h1,.game-heading h1{color:var(--ink);letter-spacing:-.075em;margin:20px 0 0;font-weight:500;line-height:.92}.home-intro h1{font-size:clamp(74px,10vw,128px)}.home-intro h1 span{color:var(--accent);font-style:italic;font-weight:400}.home-copy{color:#67716a;max-width:405px;margin:24px 0 0;font-size:15px;line-height:1.72}.home-art{width:min(100%,455px);margin:38px 0 0 -22px;position:relative}.decorative-board{filter:drop-shadow(0 16px 23px #3d392a14);width:min(100%,282px);height:auto;display:block;transform:rotate(-3deg)}.art-caption{width:max-content;max-width:180px;color:var(--muted);gap:6px;font-size:11px;display:grid;position:absolute;bottom:16px;left:254px}.art-caption span:first-child{color:var(--accent);font:500 10px var(--mono);letter-spacing:.08em}.entry-panel{background:var(--paper);border:1px solid #e7e4dc;border-radius:7px;place-self:center end;width:100%;max-width:440px;overflow:hidden;box-shadow:0 22px 55px #4943320e}.entry-tabs{border-bottom:1px solid #e8e5dd;grid-template-columns:1fr 1fr;padding:0 28px;display:grid}.entry-tab{color:#92958d;cursor:pointer;background:0 0;border:0;height:58px;font-size:12px;transition:color .25s;position:relative}.entry-tab.active{color:var(--ink);font-weight:700}.entry-tab.active:after{content:"";background:var(--accent);height:2px;position:absolute;bottom:-1px;left:15%;right:15%}.entry-form{flex-direction:column;align-items:stretch;min-height:373px;padding:36px 34px 26px;display:flex}.panel-kicker{color:var(--accent);font:500 9px var(--mono);letter-spacing:.13em;margin:0}.entry-form h2{color:var(--ink);letter-spacing:-.055em;margin:10px 0 0;font-size:27px;font-weight:600;line-height:1.14}.panel-copy{color:#7c8179;margin:10px 0 26px;font-size:12px;line-height:1.6}.field-label{color:#59645d;margin-bottom:7px;font-size:11px;font-weight:600;display:block}.text-input{width:100%;min-width:0;height:45px;color:var(--ink);background:#fffefa;border:1px solid #dcd9d0;border-radius:4px;padding:0 13px;font-size:13px;transition:border-color .2s,box-shadow .2s}.text-input::placeholder{color:#afb0a9}.text-input:focus{border-color:#739084;outline:none;box-shadow:0 0 0 3px #527b701f}.room-input{font-family:var(--mono);letter-spacing:.16em;text-transform:uppercase;font-size:16px}.primary-button{border:1px solid var(--ink);background:var(--ink);color:#fffdf7;cursor:pointer;border-radius:4px;justify-content:center;align-items:center;gap:14px;min-height:48px;margin-top:16px;font-size:12px;font-weight:600;transition:transform .2s cubic-bezier(.16,1,.3,1),background .2s,box-shadow .2s;display:flex}.primary-button:hover:not(:disabled){background:#354a41;transform:translateY(-1px);box-shadow:0 8px 16px #2636301f}.primary-button:active:not(:disabled){transform:translateY(0)scale(.985)}.primary-button:disabled{opacity:.67;cursor:progress}.primary-button span{font-size:15px;font-weight:400}.button-shimmer{border:1px solid #ffffff73;border-top-color:#0000;border-radius:50%;width:12px;height:12px;animation:.8s linear infinite spin}.form-footnote{color:#93958c;text-align:center;margin:15px 0 0;font-size:10px}.tiny-lock{vertical-align:-1px;border:1px solid #93958c;border-radius:1px;width:8px;height:7px;margin-right:5px;display:inline-block;position:relative}.tiny-lock:before{content:"";border:1px solid #93958c;border-bottom:0;border-radius:4px 4px 0 0;width:4px;height:4px;position:absolute;top:-5px;left:1px}.rules-strip{border-top:1px solid #e8e5dd;justify-content:space-between;align-items:center;gap:8px;min-height:56px;padding:0 27px;display:flex}.rules-strip div{color:#8b8e85;white-space:nowrap;align-items:center;gap:6px;font-size:9px;display:flex}.rules-number{color:var(--accent);font:500 9px var(--mono)}.form-error{color:#a74736;margin:10px 0 0;font-size:11px;line-height:1.45}.back-link{color:#73786f;text-align:left;cursor:pointer;background:0 0;border:0;margin:17px 28px 0;font-size:11px}.game-layout{flex:1;padding:43px 0 42px}.game-heading{justify-content:space-between;align-items:end;gap:24px;margin:0 0 25px;display:flex}.game-heading h1{margin-top:18px;font-size:clamp(40px,5vw,62px)}.game-subtitle{color:var(--muted);margin:12px 0 0;font-size:13px}.share-button{height:42px;color:var(--ink);cursor:pointer;background:#faf9f5;border:1px solid #d8d5cb;border-radius:4px;flex:none;align-items:center;gap:9px;padding:0 15px;font-size:11px;font-weight:600;transition:border-color .2s,background .2s,transform .2s;display:inline-flex}.share-button:hover{background:#fff;border-color:#98a398;transform:translateY(-1px)}.share-mark{fill:none;stroke:currentColor;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:15px;height:15px}.connection-label{color:#a26e53;font:500 9px var(--mono);letter-spacing:.08em;align-items:center;gap:6px;margin-left:6px;display:inline-flex}.connection-label .status-dot{box-shadow:none;background:#c99a69;width:6px;height:6px}.connection-label.online .status-dot{background:#79a08a}.inline-error{color:#914838;background:#f8eae4;border:1px solid #e4c3b8;border-radius:4px;justify-content:space-between;align-items:center;gap:12px;margin:0 0 14px;padding:11px 13px;font-size:11px;line-height:1.5;display:flex}.inline-error button{color:#733a2e;white-space:nowrap;cursor:pointer;background:0 0;border:0;font-weight:700;text-decoration:underline}.notice-pill{color:#fff;background:var(--ink);border-radius:4px;padding:11px 16px;font-size:12px;animation:.25s cubic-bezier(.16,1,.3,1) both settle;position:fixed;top:21px;left:50%;transform:translate(-50%);box-shadow:0 8px 24px #1e2a242b}.play-area{grid-template-columns:minmax(0,1fr) 286px;align-items:start;gap:25px;display:grid}.board-panel{background:var(--paper);border:1px solid #e6e3db;border-radius:5px;min-width:0;padding:15px 18px 13px;box-shadow:0 12px 32px #443f3109}.board-topline{color:#8c8e85;font:500 9px var(--mono);letter-spacing:.1em;justify-content:space-between;align-items:center;padding:1px 3px 9px;display:flex}.board-topline span:last-child{color:#aaaba3}.waiting-banner{text-align:left;cursor:pointer;background:#f8efe9;border:1px solid #e8d7cc;border-radius:4px;align-items:center;gap:10px;width:100%;min-height:56px;margin:0 0 7px;padding:8px 11px;transition:background .2s,border-color .2s,transform .2s;display:flex}.waiting-banner:hover{background:#fbf2ed;border-color:#d9b6a5}.waiting-banner:active{transform:scale(.99)}.waiting-icon{width:28px;height:28px;color:var(--accent);background:#f0ddd3;border-radius:50%;flex:none;place-items:center;display:grid}.waiting-icon .share-mark{width:13px;height:13px}.waiting-copy{gap:3px;min-width:0;display:grid}.waiting-copy strong{color:#614d42;font-size:10px;font-weight:700}.waiting-copy small{color:#91796c;font-size:9px}.waiting-action{color:#945a46;white-space:nowrap;align-items:center;gap:5px;margin-left:auto;font-size:9px;font-weight:700;display:inline-flex}.waiting-action span{font-size:13px;font-weight:400}.board-wrap{width:100%;max-width:660px;margin:0 auto}.game-board{touch-action:manipulation;width:100%;height:auto;display:block;overflow:visible}.board-edge{outline:none}.board-edge .edge-base{opacity:1;transition:stroke .15s,opacity .15s}.board-edge .edge-ink{pointer-events:none;animation:.2s cubic-bezier(.16,1,.3,1) both draw-edge}.board-edge .edge-hit{pointer-events:none}.board-edge.selectable{cursor:pointer;touch-action:manipulation}.board-edge.selectable .edge-hit{pointer-events:stroke;touch-action:manipulation}.board-edge.selectable:hover .edge-base{stroke:var(--preview-color,#c4a99b);stroke-width:11px}.board-edge.selectable:focus-visible .edge-base{stroke:#83a092;stroke-width:12px}.board-edge.pending .edge-ink{opacity:.72}.claimed-box text{letter-spacing:-.06em;font-family:DM Sans,sans-serif;font-size:35px;font-weight:600}.board-caption{color:#777e75;border-top:1px solid #e9e6de;justify-content:space-between;align-items:center;gap:14px;min-height:31px;padding:7px 3px 0;font-size:10px;display:flex}.board-caption>span:first-child{align-items:center;gap:8px;display:inline-flex}.board-caption>span:last-child{color:#a4a69e;font:10px var(--mono)}.turn-pulse{background:#c1c2ba;border-radius:50%;flex:none;width:6px;height:6px}.turn-pulse.on{background:var(--accent);animation:2s ease-in-out infinite breathe}.game-sidebar{flex-direction:column;gap:19px;display:flex}.score-block,.join-block{background:var(--paper);border:1px solid #e6e3db;border-radius:5px;padding:16px 15px 15px}.section-label{color:#858a81;font:500 9px var(--mono);letter-spacing:.09em;justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.section-label span{color:#a3a69d;letter-spacing:.05em;font-size:8px}.player-row{opacity:.72;border-top:1px solid #ebe8e0;grid-template-columns:35px 1fr auto;align-items:center;gap:9px;min-height:63px;transition:opacity .25s,background .25s;display:grid}.player-row.current{opacity:1}.player-swatch{background:var(--player-tint);width:31px;height:31px;color:var(--player-color);border-radius:50%;place-items:center;font-size:12px;font-weight:700;display:grid}.swatch-dash{color:#a3a69d;font-weight:400}.player-meta{gap:3px;min-width:0;display:grid}.player-meta strong{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:600;overflow:hidden}.player-meta small{color:#9a9c94;font-size:9px}.score-number{color:var(--ink);font:500 21px var(--mono);letter-spacing:-.08em}.score-progress{background:#e9e6de;height:3px;margin:10px 0 7px;display:flex;overflow:hidden}.score-progress span{height:100%;transition:width .35s cubic-bezier(.16,1,.3,1);display:block}.score-progress span:first-child{background:#d96b4f}.score-progress span:last-child{background:#527b70}.progress-label{color:#a0a198;justify-content:space-between;font-size:9px;display:flex}.join-block .section-label{margin-bottom:16px}.join-block .text-input{height:41px}.join-block .primary-button{width:100%;min-height:42px;margin-top:11px;font-size:11px}.turn-card{background:#f0eee7;border:1px solid #e4e1d8;border-radius:5px;padding:17px 16px 14px;position:relative;overflow:hidden}.turn-card-mark{opacity:.17;grid-template-columns:1fr 1fr;width:60px;height:60px;display:grid;position:absolute;top:-8px;right:-8px;transform:rotate(-14deg)}.turn-card-mark span{border-bottom:1px solid #55756b;border-right:1px solid #55756b}.turn-card p:not(.panel-kicker){color:#70776e;max-width:225px;margin:10px 0 18px;font-size:11px;line-height:1.7}.turn-card-foot{color:#92958b;font:9px var(--mono);letter-spacing:.025em;border-top:1px solid #dddbd3;justify-content:space-between;padding-top:10px;display:flex}.text-button{color:#7f877e;cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;gap:7px;font-size:10px;display:inline-flex}.text-button:hover{color:var(--ink)}.text-button .share-mark{width:13px;height:13px}.share-link{align-self:flex-start;padding:0 2px}.new-game-link{color:var(--accent);justify-content:flex-start;align-self:flex-start;margin-top:-6px;padding:0 2px}.loading-layout{flex:1;padding:58px 0}.skeleton-heading{gap:12px;margin-bottom:30px;display:grid}.skeleton-heading span,.skeleton-side span{background:linear-gradient(90deg,#e8e5dd 20%,#f0eee8 45%,#e8e5dd 70%) 0 0/220% 100%;border-radius:3px;height:14px;animation:1.8s infinite shimmer;display:block}.skeleton-heading span:first-child{width:95px;height:9px}.skeleton-heading span:nth-child(2){width:300px;height:43px}.skeleton-heading span:nth-child(3){width:220px;height:11px}.skeleton-main{grid-template-columns:minmax(0,1fr) 286px;gap:25px;display:grid}.skeleton-board{aspect-ratio:1;background:linear-gradient(110deg,#efede6 20%,#f8f6f0 40%,#efede6 60%) 0 0/220% 100%;border:1px solid #e6e3db;border-radius:5px;animation:1.8s infinite shimmer}.skeleton-side{align-content:start;gap:15px;display:grid}.skeleton-side span{background-color:var(--paper);border:1px solid #e6e3db;height:75px}.footer{color:#92958d;border-top:1px solid #34413a21;justify-content:space-between;align-items:center;gap:14px;min-height:55px;font-size:10px;display:flex}@keyframes spin{to{transform:rotate(360deg)}}@keyframes breathe{0%,to{box-shadow:0 0 #d96b4f4d}50%{box-shadow:0 0 0 4px #d96b4f00}}@keyframes draw-edge{0%{stroke-dasharray:0 200}to{stroke-dasharray:200 0}}@keyframes shimmer{to{background-position:-220% 0}}@keyframes settle{0%{opacity:0;margin-top:-5px}to{opacity:1;margin-top:0}}@media (width<=900px){.app-shell{padding:0 28px}.home-layout{grid-template-columns:1fr 1fr;gap:35px}.home-intro{padding-left:0}.play-area,.skeleton-main{grid-template-columns:minmax(0,1fr) 250px;gap:16px}.board-panel{padding:12px 12px 10px}.game-sidebar{gap:13px}}@media (width<=700px){.app-shell{padding:0 18px}.topbar{height:70px}.topbar-note{display:none}.topbar-right{gap:0}.home-layout{flex-direction:column;align-items:stretch;gap:22px;padding:37px 0 28px;display:flex}.home-intro{padding:0 3px}.home-intro h1{margin-top:15px;font-size:clamp(64px,18vw,97px)}.home-copy{max-width:470px;margin-top:16px;font-size:13px}.home-art{display:none}.entry-panel{justify-self:auto;max-width:none}.entry-form{min-height:337px;padding:29px 24px 22px}.entry-tabs{padding:0 23px}.rules-strip{min-height:52px;padding:0 17px}.rules-strip div{gap:4px;font-size:8px}.game-layout{padding:30px 0 28px}.game-heading{align-items:start;margin-bottom:18px}.game-heading h1{margin-top:15px;font-size:clamp(35px,10vw,51px)}.game-subtitle{max-width:310px;font-size:11px;line-height:1.5}.share-button{justify-content:center;width:auto;min-width:72px;height:42px;margin-top:14px;padding:0 12px}.share-button span{font-size:10px;display:inline}.play-area,.skeleton-main{flex-direction:column;gap:15px;display:flex}.board-panel{width:100%;padding:10px 9px 9px}.board-caption{font-size:9px}.game-sidebar{grid-template-columns:1fr;gap:12px;width:100%;display:grid}.score-block{padding:13px 13px 12px}.turn-card{display:none}.share-link{min-height:24px}.skeleton-board,.skeleton-side{width:100%}.skeleton-side span{height:57px}.footer{min-height:48px;font-size:9px}}@media (width<=390px){.app-shell{padding:0 13px}.brand{font-size:15px}.brand-mark{width:27px;height:27px}.home-intro h1{font-size:61px}.rules-strip{gap:4px;padding:0 10px}.rules-strip div{font-size:7px}.rules-number,.board-caption>span:last-child{font-size:8px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
