@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&display=swap');
:root{--ink:#183d37;--muted:#65736e;--paper:#f5f5ef;--white:#fff;--line:#dce2da;--mint:#dcece3;--green:#16856f;--yellow:#efc94c;--red:#bc5142;--blue:#4b6fa8;--shadow:0 16px 40px rgba(25,55,47,.12)}
*{box-sizing:border-box}body{margin:0;background:var(--paper);color:#263b35;font-family:'DM Sans',system-ui,sans-serif;min-height:100vh}button,input{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed}.topbar{height:78px;padding:0 clamp(18px,5vw,76px);display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #e4e8e0;background:rgba(255,255,255,.68)}.brand{display:flex;gap:12px;align-items:center;color:var(--ink);text-decoration:none}.brand strong{display:block;font:800 16px Manrope,sans-serif;letter-spacing:-.5px}.brand small{display:block;font-size:11px;color:var(--muted);margin-top:2px}.brand-mark{width:37px;height:37px;position:relative;display:block}.brand-mark i{position:absolute;width:21px;height:30px;border:2px solid var(--ink);border-radius:9px;transform:rotate(-28deg);background:#f7f8f1}.brand-mark i:nth-child(1){left:2px;top:3px;border-color:#e59e36}.brand-mark i:nth-child(2){left:9px;top:3px;border-color:#4b6fa8}.brand-mark i:nth-child(3){left:16px;top:3px;border-color:#16856f}.connection-pill{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:50px;padding:8px 12px;background:white;color:var(--muted);font-size:12px}.connection-pill i{width:8px;height:8px;border-radius:50%;background:#9caf9f}.connection-pill.online i{background:#1b9b72;box-shadow:0 0 0 4px #e0f1e9}.screen{width:min(1140px,calc(100% - 36px));margin:0 auto}.hidden{display:none!important}.home-screen{min-height:calc(100vh - 134px);display:grid;grid-template-columns:1.1fr .9fr;align-items:center;gap:5vw;position:relative;padding:35px 0 92px}.hero-copy{max-width:590px}.eyebrow{font-size:10px;letter-spacing:2px;font-weight:700;color:#8a9a90;margin:0 0 14px}.hero-copy h1,.section-heading h1,.join-panel h1{font:800 clamp(42px,6vw,68px)/1.08 Manrope,sans-serif;letter-spacing:-3px;color:var(--ink);margin:0}.hero-copy h1 em{font-style:normal;color:var(--green)}.lead{font-size:17px;line-height:1.6;color:#66736d;max-width:520px;margin:22px 0 28px}.home-actions{display:flex;gap:12px;flex-wrap:wrap}.button{border:0;border-radius:12px;padding:13px 19px;font-weight:700;transition:transform .15s,box-shadow .15s,opacity .15s}.button:not(:disabled):hover{transform:translateY(-1px);box-shadow:0 8px 18px rgba(22,69,58,.14)}.primary{background:var(--ink);color:#fff}.secondary{background:#e5ece6;color:var(--ink)}.small{padding:9px 13px;font-size:12px}.full{width:100%;margin-top:16px}.fine-print{font-size:11px;color:#8b9891;margin-top:18px}.hero-art{height:430px;position:relative;display:flex;align-items:center;justify-content:center}.orbit{position:absolute;border:1px solid #dbe7db;border-radius:50%;width:360px;height:360px}.orbit-two{width:440px;height:270px;transform:rotate(-26deg);border-color:#e3e8d5}.sample-card{position:absolute;width:174px;height:278px;border-radius:17px;box-shadow:var(--shadow);display:flex;flex-direction:column;justify-content:space-between;padding:21px;color:white;border:5px solid white}.sample-back{background:linear-gradient(145deg,#183d37,#247562);transform:rotate(-13deg) translate(-50px,9px);z-index:1;align-items:center;text-align:center;justify-content:center;font:800 21px Manrope,sans-serif;letter-spacing:-.4px}.sample-back span{padding:16px 6px;border:1px solid rgba(255,255,255,.38);border-radius:50%;width:132px;height:132px;display:flex;justify-content:center;align-items:center}.sample-back small{position:absolute;bottom:19px;font-size:8px;letter-spacing:1.5px}.sample-front{background:#e4bd3d;color:#1c443c;transform:rotate(11deg) translate(58px,-8px);z-index:2}.sample-front b{font:800 12px Manrope,sans-serif;align-self:flex-end;text-align:center;border:1px solid #1c443c;border-radius:50%;padding:8px}.sample-front span{background:#fff;border-radius:70% 30% 62% 38%;padding:29px 18px;text-align:center;font:700 15px/1.35 Manrope,sans-serif;transform:rotate(-6deg)}.hero-dot{position:absolute;border-radius:50%;background:#efc94c}.dot-a{width:14px;height:14px;right:14%;top:15%}.dot-b{width:8px;height:8px;left:14%;bottom:15%;background:#4b6fa8}.home-note{position:absolute;bottom:27px;left:0;right:0;border-top:1px solid var(--line);padding-top:17px;display:flex;gap:25px;align-items:baseline}.home-note span{font:800 12px Manrope,sans-serif;color:var(--ink);white-space:nowrap}.home-note p{margin:0;color:var(--muted);font-size:13px}.page-footer{min-height:56px;border-top:1px solid #e2e7df;display:flex;justify-content:space-between;align-items:center;padding:0 clamp(18px,5vw,76px);color:#85928b;font-size:10px}.lobby-screen,.join-screen{padding:60px 0 85px}.section-heading h1,.join-panel h1{font-size:42px;letter-spacing:-1.8px}.section-heading .lead{margin:10px 0 30px;font-size:14px}.lobby-grid{display:grid;grid-template-columns:.8fr 1.2fr;gap:18px}.panel{background:#fff;border:1px solid #e2e8e0;border-radius:20px;padding:25px;box-shadow:0 9px 30px rgba(30,70,56,.04)}.panel-heading{display:flex;align-items:center;justify-content:space-between}.panel h2{font:800 18px Manrope,sans-serif;color:var(--ink);margin:0}.count-badge{border-radius:50px;background:#edf3ed;color:#50665c;padding:6px 10px;font-size:11px;font-weight:700}.player-list{list-style:none;padding:8px 0 5px;margin:0;min-height:80px}.player-list li{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid #edf0eb;font-size:13px}.player-avatar{width:30px;height:30px;display:grid;place-items:center;background:#e4efe8;color:#236b58;border-radius:50%;font-weight:700;font-size:11px}.player-list .you{margin-left:auto;color:#809088;font-size:10px}.text-button{display:block;border:0;background:transparent;color:#72827a;font-size:12px;padding:12px;margin:8px auto 0}.invite-panel{background:#e9f0e8;border-color:#e1e9df;display:flex;flex-direction:column;justify-content:center}.invite-panel h2{font-size:25px;margin-bottom:10px}.invite-panel p:not(.eyebrow){color:#68766f;font-size:13px;line-height:1.55;max-width:440px}.invite-url{display:flex;align-items:center;gap:10px;background:#fff;padding:8px 9px 8px 13px;border:1px solid #dce5dc;border-radius:10px;margin-top:10px;min-width:0}.invite-url span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;color:#718078;flex:1}.icon-button{border:0;border-radius:8px;background:var(--ink);color:white;width:34px;height:34px;font-size:19px}.rule-chips{display:flex;gap:7px;flex-wrap:wrap;margin-top:18px}.rule-chips span{font-size:10px;color:#607168;background:#dce8de;padding:6px 9px;border-radius:30px}.join-screen{display:grid;place-items:center;min-height:calc(100vh - 134px)}.join-panel{width:min(440px,100%);padding:34px}.join-panel .lead{font-size:14px;margin:12px 0 25px}.field-label{display:block;color:#53635b;font-size:12px;font-weight:700;margin-bottom:7px}.text-input{width:100%;border:1px solid #d9e2da;background:#fbfcf9;border-radius:10px;padding:12px 13px;outline:none;color:var(--ink)}.text-input:focus{border-color:#63a58a;box-shadow:0 0 0 3px #e1f0e6}.game-screen{width:min(1280px,calc(100% - 30px));padding:30px 0 25px}.game-header{display:flex;justify-content:space-between;align-items:center;gap:20px}.game-header h1{font:800 30px Manrope,sans-serif;color:var(--ink);margin:0;letter-spacing:-1px}.turn-hint{font-size:12px;color:var(--muted);margin:5px 0 0}.game-header-actions{display:flex;align-items:center;gap:12px}.direction-chip{border:1px solid var(--line);border-radius:50px;padding:8px 12px;font-size:11px;color:#617067;background:#fff}.notice-bar{min-height:32px;margin:14px 0 10px;text-align:center;font-size:12px;color:#587066}.notice-bar.error{color:#a33d35}.table-board{min-height:220px;display:flex;justify-content:center;align-items:center;gap:42px;position:relative;border:1px solid #e0e7dd;border-radius:24px;background:radial-gradient(ellipse,#eef2e9 0%,#e5ebdf 56%,#eaf0e6 100%);overflow:hidden}.stock-area,.discard-area{width:150px;display:flex;flex-direction:column;align-items:center;gap:9px;z-index:1}.draw-stack{position:relative;width:110px;height:157px;border:4px solid white;border-radius:13px;background:repeating-linear-gradient(135deg,#183d37,#183d37 14px,#235b4f 14px,#235b4f 25px);box-shadow:0 7px 15px rgba(30,60,50,.19);color:white;font:800 15px/1.2 Manrope,sans-serif}.draw-stack::after{content:'';position:absolute;inset:7px;border:1px solid rgba(255,255,255,.45);border-radius:8px}.draw-stack span{position:relative;z-index:1}.draw-stack small{position:absolute;z-index:2;bottom:-26px;left:0;right:0;color:#64736b;font:500 10px 'DM Sans',sans-serif}.draw-stack:disabled{opacity:.65}.table-label{font-size:9px;letter-spacing:1.4px;color:#86938a;font-weight:700;margin-top:16px}.top-card-wrap{width:110px;height:157px;position:relative}.table-card{width:100%;height:100%;object-fit:fill;border-radius:10px;box-shadow:0 7px 17px rgba(30,60,50,.21)}.active-color-indicator{position:absolute;right:-13px;top:-13px;width:27px;height:27px;border:3px solid white;border-radius:50%;box-shadow:0 2px 7px #65736e66}.turn-ring{position:absolute;width:260px;height:160px;border:1px dashed rgba(75,111,94,.15);border-radius:50%;pointer-events:none}.players-strip{display:flex;justify-content:center;gap:10px;flex-wrap:wrap;margin:13px 0 7px}.opponent-card{display:flex;align-items:center;gap:8px;padding:7px 11px;border:1px solid #e0e6de;border-radius:50px;background:#fff;font-size:11px;color:#6f7c75}.opponent-card.current{border-color:#74a98f;background:#f1f8f2;color:var(--ink);box-shadow:0 0 0 2px #dcece3}.opponent-count{font-size:10px;background:#edf1eb;padding:4px 7px;border-radius:30px}.hand-area{border-top:1px solid #dce3da;margin-top:14px;padding-top:14px}.hand-heading{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.hand-heading h2{font:800 15px Manrope,sans-serif;color:var(--ink);margin:0}.hand-heading h2 span{font:500 11px 'DM Sans',sans-serif;color:#829088;margin-left:4px}.hand-help{font-size:10px;color:#849189}.hand-cards{display:flex;gap:12px;overflow-x:auto;min-height:275px;padding:16px 7px 12px;scrollbar-color:#c9d4ca transparent;scrollbar-width:thin}.hand-card{flex:0 0 156px;width:156px;height:249px;position:relative;border:0;border-radius:9px;background:transparent;padding:0;transition:transform .15s;box-shadow:0 3px 7px #1d39351a}.hand-card img{width:100%;height:100%;object-fit:fill;border-radius:9px}.hand-card:not(:disabled):hover{transform:translateY(-5px)}.hand-card.selected{transform:translateY(-7px)}.game-footer{display:flex;align-items:center;justify-content:space-between;gap:12px}.game-footer p{font-size:10px;color:#8b9690;margin:0}.color-dialog,.message-dialog{border:0;border-radius:20px;padding:25px 28px;box-shadow:0 25px 90px #19372e45;color:var(--ink);width:min(360px,calc(100% - 32px))}.color-dialog::backdrop,.message-dialog::backdrop{background:rgba(19,38,32,.42);backdrop-filter:blur(3px)}.color-dialog h2,.message-dialog h2{font:800 21px Manrope,sans-serif;margin:0 0 19px}.color-options{display:flex;gap:12px;justify-content:center}.color-choice{width:54px;height:54px;border:4px solid white;border-radius:15px;box-shadow:0 2px 8px #1c3e342b}.color-choice.green{background:#16856f}.color-choice.yellow{background:#e9c13c}.color-choice.red{background:#c44f41}.color-choice.blue{background:#4b6fa8}.message-dialog p:not(.eyebrow){line-height:1.5;color:#64736b;font-size:13px}.message-dialog .button{margin-top:10px}.player-turn-indicator{color:#277658;font-weight:700}.toast{animation:fadein .2s ease}@keyframes fadein{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:760px){.home-screen{grid-template-columns:1fr;padding-top:58px;gap:0}.hero-art{height:340px;grid-row:2}.orbit{width:285px;height:285px}.orbit-two{width:340px;height:225px}.sample-card{transform:scale(.85)}.sample-back{transform:rotate(-13deg) translate(-47px,5px) scale(.85)}.sample-front{transform:rotate(11deg) translate(45px,-4px) scale(.85)}.home-note{position:static;grid-column:1;margin-top:5px}.home-note p{font-size:11px}.lobby-screen,.join-screen{padding-top:40px}.lobby-grid{grid-template-columns:1fr}.invite-panel{grid-row:1}.section-heading h1,.join-panel h1{font-size:34px}.game-screen{width:calc(100% - 20px);padding-top:20px}.table-board{min-height:190px;gap:20px}.stock-area,.discard-area{width:125px}.draw-stack,.top-card-wrap{width:92px;height:132px}.game-header h1{font-size:24px}.direction-chip{display:none}.players-strip{justify-content:flex-start;overflow-x:auto;flex-wrap:nowrap;padding:2px 0}.opponent-card{white-space:nowrap}.hand-card{flex-basis:124px;width:124px;height:198px}.hand-cards{min-height:225px}.game-footer{align-items:flex-start}.page-footer{font-size:9px;gap:12px}.page-footer span:last-child{text-align:right}}
@media(max-width:430px){.connection-pill{font-size:10px}.topbar{height:66px}.brand strong{font-size:14px}.hero-copy h1{font-size:43px}.home-actions .button{flex:1;padding:12px 10px;font-size:12px}.hero-art{height:300px}.panel{padding:20px}.invite-panel h2{font-size:21px}.hand-help{display:none}.table-board{gap:4px}.table-label{margin-top:13px}.game-header-actions .button{font-size:10px;padding:8px}.notice-bar{font-size:10px}}
 .home-name-label{margin:0 0 7px}.home-name-input{max-width:290px;margin-bottom:15px}
 .generated-card-face{width:100%;height:100%;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;border:5px solid #fff;border-radius:10px;padding:16px;background:#ebeff0;color:#203a34;box-shadow:0 7px 17px rgba(30,60,50,.2)}.generated-card-face::before{content:'';position:absolute;width:150%;height:78%;background:#fff;border-radius:50%;transform:rotate(-36deg)}.generated-green{background:#7eaa36}.generated-yellow{background:#e4bd3d}.generated-red{background:#e07f62}.generated-blue{background:#4b78b7}.generated-card-mark{position:absolute;z-index:1;top:7px;left:8px;width:24px;height:24px;display:grid;place-items:center;background:#f28b45;color:white;border:2px solid #fff;border-radius:50%;font:800 15px Manrope,sans-serif}.generated-card-text{position:relative;z-index:1;max-width:100%;font:700 clamp(10px,1vw,14px)/1.35 Manrope,sans-serif;text-align:center;transform:rotate(-3deg)}.hand-card .generated-card-face{border:3px solid white;border-radius:9px;padding:9px;box-shadow:none}.hand-card .generated-card-mark{width:19px;height:19px;top:3px;left:4px;font-size:12px}.hand-card .generated-card-text{font-size:10px}.table-card.generated-card-face{border-radius:10px}.game-exit{margin:0;color:#78877e;padding:8px 4px}
 .rules-dialog{border:0;border-radius:20px;padding:26px 30px;box-shadow:0 25px 90px #19372e45;color:var(--ink);width:min(600px,calc(100% - 30px));max-height:85vh;overflow:auto}.rules-dialog::backdrop{background:rgba(19,38,32,.42);backdrop-filter:blur(3px)}.rules-dialog h2{font:800 24px Manrope,sans-serif;margin:0 0 12px}.rules-dialog ol{padding-left:20px;margin:12px 0 18px}.rules-dialog li{padding:7px 0;color:#5e7067;font-size:13px;line-height:1.48}.rules-note{background:#eef3ec;border-radius:10px;padding:12px;color:#53675c;font-size:11px;line-height:1.5}.rules-dialog .button{margin-top:5px}

.table-board.invalid-play{animation:invalid-shake .32s ease 2;border-color:#bc5142}.table-board.invalid-play .top-card-wrap{animation:invalid-shake .32s ease 2}@keyframes invalid-shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-6px)}75%{transform:translateX(6px)}}

/* Keep the face-up discard card as readable as a card in the player's hand. */
.table-board{min-height:310px}
.stock-area,.discard-area{width:180px}
.top-card-wrap{width:156px;height:249px;flex:0 0 156px}
@media(max-width:760px){.table-board{min-height:250px;gap:12px}.stock-area,.discard-area{width:145px}.top-card-wrap{width:124px;height:198px;flex:0 0 124px}}
@media(max-width:430px){.table-board{gap:4px}.stock-area,.discard-area{width:132px}.top-card-wrap{width:124px;height:198px;flex-basis:124px}}

/* Lume inspired palette: warm paper, forest ink, watercolor greens and honey accents. */
:root{--ink:#203922;--muted:#596452;--paper:#f8f4e9;--white:#fffdf7;--line:#d8d1ba;--mint:#edf0df;--green:#3f654b;--yellow:#dcae43;--red:#a85242;--blue:#547c91;--shadow:0 16px 40px rgba(32,57,34,.12)}
body{background:radial-gradient(ellipse at 7% 10%,rgba(224,233,204,.5),transparent 28%),radial-gradient(ellipse at 94% 82%,rgba(242,220,171,.36),transparent 25%),var(--paper);color:#344434;font-family:Georgia,'Times New Roman',serif}
.topbar{background:rgba(250,246,236,.9);border-color:#ded8c5}.brand strong{font-family:Georgia,'Times New Roman',serif;color:#203922}.brand small,.turn-hint,.fine-print{color:#596452}
.hero-copy h1,.section-heading h1,.join-panel h1,.game-header h1,.panel h2,.hand-heading h2,.color-dialog h2,.message-dialog h2{font-family:Georgia,'Times New Roman',serif;color:#203922;letter-spacing:-.02em}
.hero-copy h1 em{color:#3f654b}.lead{color:#596452}.panel{background:rgba(255,253,247,.92);border-color:#d8d1ba;box-shadow:0 7px 24px rgba(32,57,34,.05)}
.primary{background:#203922}.secondary{background:#edf0df;color:#304a34}.invite-panel{background:rgba(237,240,223,.92);border-color:#d8d1ba}.table-board{border-color:#d8d1ba;background:radial-gradient(ellipse,#fffdf7 0%,#eef0df 62%,#e7eadb 100%)}
.notice-bar{color:#596452}.notice-bar.error{color:#a33d35}.hand-area{border-color:#d8d1ba}.opponent-card,.direction-chip{border-color:#d8d1ba;background:#fffdf7;color:#596452}.opponent-card.current{border-color:#78916d;background:#edf0df;color:#203922;box-shadow:0 0 0 2px #e1e7d2}.page-footer{border-color:#ded8c5;color:#68735f}
.win-dialog{width:min(650px,calc(100% - 32px));padding:0;border:1px solid #d8d1ba;border-radius:24px;background:#fffdf7;color:#203922;box-shadow:0 28px 90px rgba(23,43,25,.32);overflow:hidden}
.win-dialog::backdrop{background:rgba(24,43,27,.55);backdrop-filter:blur(4px)}
.win-dialog form{display:grid;grid-template-columns:minmax(190px,.9fr) 1.1fr;align-items:center;gap:18px;padding:30px}
.win-art{min-height:230px;border-radius:20px;background:radial-gradient(ellipse,#edf0df 0%,#f5f1e4 70%,transparent 71%);display:grid;place-items:center;overflow:hidden}
.win-art img{display:block;width:100%;max-width:280px;aspect-ratio:1;object-fit:contain;filter:drop-shadow(0 8px 14px rgba(32,57,34,.12))}
.win-copy h2{font:700 clamp(28px,5vw,42px)/1.1 Georgia,'Times New Roman',serif;letter-spacing:-.03em;margin:0 0 12px;color:#203922}
.win-copy p:not(.eyebrow){color:#596452;line-height:1.55}.win-copy .eyebrow{color:#7b8a69}.win-copy button{margin-top:8px}
@media(max-width:560px){.win-dialog form{grid-template-columns:1fr;gap:4px;padding:22px}.win-art{min-height:155px}.win-art img{max-width:190px}.win-copy{text-align:center}}

/* Lume palette across screens: forest green, watercolor salmon, rose and blue. */
:root{--ink:#203922;--muted:#596452;--paper:#f8f4e9;--white:#fffdf7;--line:#d8d1ba;--mint:#edf0df;--green:#3f654b;--yellow:#dcae43;--red:#a85242;--blue:#547c91}
.topbar{display:flex;gap:clamp(10px,2vw,28px)}
.top-nav{display:flex;align-items:center;justify-content:center;gap:6px;margin-left:auto}
.top-nav-link{border:0;background:transparent;border-radius:999px;padding:9px 14px;color:#344434;font:16px Georgia,'Times New Roman',serif;min-height:42px}
.top-nav-link:hover{background:#edf0df;color:#203922}.top-nav-rules{background:#f3dfd2;color:#733f35;border:1px solid #e8c8b6}
.connection-pill{margin-left:0}
.brand{flex-shrink:0}.brand:hover strong{color:#3f654b}
.home-note{background:linear-gradient(90deg,#edf0df 0 29%,#f2e3e4 29% 55%,#e5ecec 55% 78%,#f7ecd5 78%);border-radius:12px;padding:13px 16px;border:1px solid #e6dfce}
.players-panel{background:#edf0df!important}.invite-panel{background:#f3dfd2!important;border-color:#e8c8b6!important}
.join-panel{background:#e5ecec!important;border-color:#cddcdb!important}
.rules-dialog{background:#fffdf7;border:1px solid #d8d1ba}.rules-dialog h2{font-family:Georgia,'Times New Roman',serif}
@media(max-width:760px){.topbar{height:auto;min-height:78px;flex-wrap:wrap;padding-top:10px;padding-bottom:10px}.top-nav{order:3;width:100%;margin:0}.connection-pill{margin-left:auto}}
@media(max-width:430px){.top-nav-link{font-size:14px;padding:7px 12px}.home-note{background:linear-gradient(135deg,#edf0df,#f2e3e4 55%,#e5ecec)}}

.sample-card.sample-front-image{padding:0;border:0;object-fit:fill;border-radius:17px;background:transparent}
