:root{--paper:#f5f2e9;--ink:#243a32;--muted:#728077;--line:#dfdfd3;--orange:#e76744;--table:#254b3e;--red:#de5749;--yellow:#edbe45;--green:#419d78;--blue:#4f83c5;--shadow:0 18px 50px #263c3210;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI","Malgun Gothic",sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none}
*{box-sizing:border-box}body{margin:0}button,input{font:inherit}button{cursor:pointer;touch-action:manipulation}button:disabled{cursor:default;opacity:.45}button,input,a{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #ef9e34;outline-offset:4px}a{color:inherit}svg{width:20px;height:20px;vertical-align:middle;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}button{border:0}.shell{max-width:1240px;margin:auto;padding:0 48px}.header{height:96px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand{display:inline-flex;align-items:center;gap:12px;background:none;text-decoration:none;color:var(--ink);padding:0}.brand img{width:34px;height:42px;transform:rotate(-9deg)}.brand span{font-size:23px;font-weight:850;letter-spacing:-1.2px}.brand em{font-style:normal;font-weight:450}.header-right{display:flex;align-items:center;gap:24px}.subtle{background:none;color:var(--muted);font-size:13px;padding:10px}.subtle svg{margin-right:5px}.pill{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line);border-radius:30px;padding:8px 12px;font-size:11px;font-weight:750;letter-spacing:1px}.dot{width:6px;height:6px;background:var(--green);border-radius:100%;display:inline-block}.landing{padding-top:72px;display:grid;grid-template-columns:1fr 1fr;gap:60px;align-items:center;min-height:680px}.eyebrow{display:flex;align-items:center;gap:10px;font-size:11px;letter-spacing:2px;font-weight:800;margin-bottom:22px;color:var(--muted)}.eyebrow:before{content:'';width:22px;height:2px;background:var(--orange)}h1{font-size:58px;line-height:1.22;font-weight:820;letter-spacing:-3.8px;margin:0 0 20px}h1 span{color:var(--orange)}.intro{font-size:15px;line-height:1.85;color:var(--muted);margin:0 0 30px;word-break:keep-all}.entry-box{background:#fffdf7;border:1px solid var(--line);border-radius:20px;padding:24px;box-shadow:var(--shadow);max-width:430px}.tabs{display:flex;border-bottom:1px solid var(--line);gap:25px;margin-bottom:20px}.tab{padding:0 0 13px;background:none;font-size:14px;font-weight:700;color:var(--muted);position:relative}.tab.active{color:var(--ink)}.tab.active:after{content:'';height:3px;background:var(--orange);position:absolute;left:0;right:0;bottom:-1px;border-radius:2px}.field{display:block;margin-bottom:14px;font-size:12px;font-weight:650}.field span{display:block;margin-bottom:8px}.field input{height:48px;width:100%;border:1px solid #dedfd3;background:#f9f8f0;border-radius:10px;padding:0 14px;color:var(--ink);font-size:14px}.field input::placeholder{color:#9a9e93}.field input.code{font-family:ui-monospace,monospace;letter-spacing:5px;text-transform:uppercase}.primary{background:var(--orange);color:#fffdf5;padding:14px 20px;border-radius:11px;font-size:14px;font-weight:750;display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:48px}.primary.full{width:100%}.primary:hover:not(:disabled){background:#da5d3b}.secondary{border:1px solid var(--line);background:#fffdf5;color:var(--ink);border-radius:11px;padding:12px 17px;min-height:44px;font-size:13px;font-weight:700}.tiny-note{text-align:center;color:var(--muted);font-size:11px;margin:14px 0 0}.tiny-note svg{width:13px;height:13px;margin-right:4px}.features{display:flex;gap:22px;margin-top:25px;color:var(--muted);font-size:11px}.features span{display:flex;align-items:center;gap:6px}.features svg{width:15px;height:15px}.hero-art{position:relative;min-height:460px;display:flex;align-items:center;justify-content:center}.art-ring{position:absolute;inset:28px 0 0;border:1px dashed #cdd4c7;border-radius:50%;transform:rotate(-14deg)}.art-ring:after{content:'';position:absolute;inset:25px;border:1px solid #e0e3d6;border-radius:50%}.hero-table{height:350px;width:350px;border-radius:50%;background:var(--table);box-shadow:0 18px 0 #1d3e33,0 40px 55px #254b3e20;position:relative;display:flex;align-items:center;justify-content:center}.hero-table:before{content:'';position:absolute;inset:18px;border:1px solid #75958244;border-radius:50%}.art-cards{display:flex;gap:0;margin-bottom:10px}.art-cards .card{position:relative;width:112px;height:165px;box-shadow:0 15px 20px #10271f44}.art-cards .card:nth-child(1){transform:rotate(-22deg) translate(26px,12px)}.art-cards .card:nth-child(2){transform:rotate(2deg);z-index:1}.art-cards .card:nth-child(3){transform:rotate(23deg) translate(-26px,12px)}.art-label{position:absolute;bottom:42px;font-size:10px;letter-spacing:3px;color:#d6e0d1}.float-note{position:absolute;background:#fffdf5;border:1px solid var(--line);border-radius:14px;padding:12px 17px;box-shadow:var(--shadow);font-size:12px;display:flex;align-items:center;gap:9px;z-index:3}.float-note.top{top:23px;right:7px;transform:rotate(6deg)}.float-note.bottom{bottom:10px;left:5px;transform:rotate(-5deg)}.float-note .emoji{font-size:25px}.float-note small{display:block;font-size:10px;color:var(--muted);margin-top:3px}.spark{position:absolute;font-size:35px;color:var(--orange)}.spark.one{left:4px;top:64px}.spark.two{right:20px;bottom:69px}.footer{border-top:1px solid var(--line);display:flex;justify-content:space-between;margin-top:60px;padding:23px 0;color:var(--muted);font-size:10px}.footer b{font-weight:550;letter-spacing:1px}
.card{--cc:var(--red);width:92px;height:136px;border:5px solid #fff9e9;border-radius:13px;background:var(--cc);color:#fff9e9;display:inline-flex;position:relative;align-items:center;justify-content:center;flex-shrink:0;isolation:isolate;box-shadow:0 5px 0 #182f2518,0 5px 12px #0001;overflow:hidden}.card.red{--cc:var(--red)}.card.yellow{--cc:var(--yellow);color:#644d16}.card.green{--cc:var(--green)}.card.blue{--cc:var(--blue)}.card.wild{--cc:#2e3b37}.card:before{content:'';position:absolute;width:75%;height:78%;background:#fff9e9;border-radius:50%;transform:rotate(32deg);z-index:-1}.card .value{color:var(--cc);font-size:48px;line-height:1;font-weight:900;letter-spacing:-4px;transform:rotate(-8deg);text-shadow:2px 2px #172c2212}.card.yellow .value{color:#b38524}.card .corner{position:absolute;left:5px;top:2px;font-size:16px;font-weight:850;letter-spacing:-1px}.card .corner.last{top:auto;left:auto;right:5px;bottom:2px;transform:rotate(180deg)}.card.wild .value{font-size:30px;letter-spacing:-2px}.card.wild:before{background:conic-gradient(var(--red) 0 25%,var(--blue) 0 50%,var(--green) 0 75%,var(--yellow) 0);border:3px solid #fff9e9}.card.wild .value{color:white;text-shadow:1px 3px #25352d}.card.back{background:#253f33}.card.back:before{background:var(--orange)}.card.back .value{font-size:23px;letter-spacing:-2px;color:#fff9e9;transform:rotate(-23deg)}.card.back .corner{display:none}.card.small{width:31px;height:44px;border-width:2px;border-radius:5px}.card.small .value{font-size:8px;letter-spacing:0}.card.selected{outline:4px solid var(--yellow);outline-offset:3px}.card.playable{box-shadow:0 0 0 2px #dfeecd,0 6px 15px #0002}.card.unplayable{filter:saturate(.45);opacity:.62}.card.playable:hover{transform:translateY(-9px)}
.room-shell{max-width:1100px;margin:auto;padding:0 32px}.room-shell .header{height:76px}.room-code{font:700 14px ui-monospace,monospace;letter-spacing:2px;color:var(--ink);display:flex;gap:10px;align-items:center}.room-code small{font:500 10px system-ui;color:var(--muted);letter-spacing:0}.icon-btn{width:38px;height:38px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:10px;background:#fffdf5;color:var(--muted)}.room-heading{display:flex;align-items:center;justify-content:space-between;margin:26px 0 19px}.room-heading h2{font-size:22px;letter-spacing:-1px;margin:0 0 5px}.room-heading p{font-size:12px;color:var(--muted);margin:0}.connection{font-size:11px;color:var(--green);display:flex;align-items:center;gap:6px}.connection.off{color:var(--orange)}.lobby-panel{background:#fffdf5;border:1px solid var(--line);padding:35px;border-radius:22px}.invite-panel{padding:28px;background:#e8eee1;border-radius:15px;display:flex;align-items:center;justify-content:space-between;gap:20px}.invite-panel h3{margin:0 0 8px;font-size:17px;letter-spacing:-.5px}.invite-panel p{margin:0;font-size:12px;color:var(--muted)}.invite-code{font:800 32px ui-monospace,monospace;letter-spacing:7px;margin-top:18px}.invite-panel .primary{background:var(--table);white-space:nowrap}.lobby-players{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:28px 0}.lobby-player{border:1px solid var(--line);border-radius:15px;min-height:180px;text-align:center;padding:23px 10px;position:relative}.avatar{width:46px;height:46px;display:inline-flex;align-items:center;justify-content:center;background:#ead9c6;color:#7f5c37;border-radius:17px;font-size:20px;font-weight:750;flex-shrink:0}.avatar.a1{background:#e0e8f6;color:#547db2}.avatar.a2{background:#e8dbed;color:#9772ac}.avatar.a3{background:#dce9d1;color:#769052}.lobby-player h4{font-size:14px;margin:12px 0 6px;overflow-wrap:anywhere}.badge{font-size:10px;color:var(--muted)}.badge.ready{color:var(--green)}.empty-player{border:1px dashed #d2d7c8;display:flex;align-items:center;justify-content:center;flex-direction:column;color:#a2ac9b;font-size:12px;gap:13px}.empty-player svg{width:29px;height:29px}.lobby-bottom{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);padding-top:24px;gap:20px}.lobby-bottom p{font-size:12px;color:var(--muted);margin:0}.kick{position:absolute;right:6px;top:6px;background:none;font-size:10px;color:var(--muted);padding:5px}.rule-strip{display:flex;justify-content:center;gap:22px;flex-wrap:wrap;margin:25px 0;color:var(--muted);font-size:11px}.rule-strip span:before{content:'·';margin-right:8px;color:var(--orange)}
.game-layout{padding-top:20px}.opponents{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px;max-width:760px;margin:auto auto 17px}.opponent{display:flex;align-items:center;justify-content:center;gap:12px;min-height:92px;border-radius:14px;border:1px solid transparent}.opponent.current{background:#e6eddc;border-color:#c6d7b6}.opponent-name{font-size:12px;font-weight:750;max-width:130px;overflow-wrap:anywhere}.opponent-name small{display:block;color:var(--muted);font-size:10px;font-weight:450;margin-top:5px}.opponent .avatar{width:38px;height:38px;font-size:16px;border-radius:14px}.mini-hand{display:flex;justify-content:center;margin-top:9px}.mini-hand .card{margin-left:-14px;transform:rotate(7deg)}.mini-hand .card:first-child{margin-left:0;transform:rotate(-7deg)}.opponent-count{font-size:11px;color:var(--muted);margin-left:6px}.table{background:var(--table);border-radius:35px;min-height:260px;position:relative;padding:29px;box-shadow:0 8px 0 #1c3c31,0 15px 25px #254b3e13;display:flex;align-items:center;justify-content:center;gap:39px}.table:before{content:'';position:absolute;inset:12px;border:1px solid #b5c7a626;border-radius:25px;pointer-events:none}.table-mark{position:absolute;left:29px;top:24px;font-size:10px;color:#b5c7aa;letter-spacing:2px}.direction{position:absolute;right:28px;top:20px;color:#cbd7bc;display:flex;align-items:center;gap:8px;font-size:10px}.deck-group,.discard-group{text-align:center;z-index:1}.deck-group .card{transform:rotate(-7deg);box-shadow:3px 3px 0 #e9eed9,6px 6px 0 #52715b,9px 9px 0 #d6dec5}.deck-group button:disabled{opacity:.7}.table-caption{display:block;font-size:10px;color:#c2d1b9;letter-spacing:1px;margin-top:17px}.table-arrow{color:#c2d1b955;font-size:25px}.discard-group .card{transform:rotate(8deg)}.color-status{position:absolute;bottom:24px;left:28px;color:#dde6d4;font-size:11px;display:flex;align-items:center;gap:7px}.color-dot{width:10px;height:10px;border-radius:3px;background:var(--cc)}.color-dot.red{--cc:var(--red)}.color-dot.yellow{--cc:var(--yellow)}.color-dot.green{--cc:var(--green)}.color-dot.blue{--cc:var(--blue)}.table-message{position:absolute;right:26px;bottom:25px;color:#cedbc2;font-size:11px;max-width:35%;text-align:right}.turn-strip{margin:24px 0 17px;display:flex;align-items:center;justify-content:space-between;gap:10px}.turn-text{display:flex;align-items:center;gap:9px;font-size:13px;font-weight:700}.turn-text .dot{width:8px;height:8px}.timer{font:650 12px ui-monospace,monospace;color:var(--muted);padding:7px 10px;border:1px solid var(--line);border-radius:8px}.timer.urgent{color:var(--orange);border-color:var(--orange)}.hand-area{background:#eeeee3;border:1px solid var(--line);border-radius:18px;padding:15px 18px 9px}.hand-top{display:flex;justify-content:space-between;font-size:11px;color:var(--muted);margin-bottom:12px}.hand-top strong{color:var(--ink);font-size:12px}.hand-cards .card{transition:transform .16s,opacity .16s;min-width:92px}.action-bar{padding:18px 0 calc(18px + env(safe-area-inset-bottom));display:flex;align-items:center;justify-content:space-between;gap:12px}.hand-help{font-size:11px;color:var(--muted);line-height:1.6}.actions{display:flex;gap:10px;align-items:center}.uno-btn{background:var(--orange);color:#fff9e9;border-radius:12px;padding:13px 25px;font-style:italic;font-size:18px;font-weight:900;min-height:48px;box-shadow:0 3px 0 #bd5337}.uno-btn.called{background:var(--green);box-shadow:0 3px 0 #328260}.catch-btn{background:#faead7;color:#ac7128;border:1px solid #eacba1}.game-footer{border-top:1px solid var(--line);padding:16px 0;display:flex;justify-content:space-between;font-size:10px;color:var(--muted)}.game-footer button{background:none;color:var(--muted);font-size:11px;padding:0}.game-footer svg{width:15px;height:15px;margin-right:4px}.winner-box{text-align:center;background:#fffdf5;border:1px solid var(--line);border-radius:22px;padding:45px 24px;margin-top:30px}.winner-box .trophy{font-size:60px}.winner-box h2{font-size:30px;margin:17px 0 10px;letter-spacing:-1px}.winner-box p{font-size:13px;color:var(--muted);margin:0 0 25px}.standings{max-width:400px;margin:25px auto;display:flex;flex-direction:column;gap:10px}.standing{display:flex;align-items:center;gap:12px;padding:12px 15px;border-radius:12px;background:#f1f1e7;font-size:13px;text-align:left}.standing span:last-child{margin-left:auto;color:var(--muted);font-size:11px}
dialog{border:1px solid var(--line);background:#fffdf5;color:var(--ink);border-radius:22px;padding:30px;max-width:480px;width:calc(100% - 32px);max-height:85dvh;box-shadow:0 20px 70px #14291f33}dialog::backdrop{background:#18312680;backdrop-filter:blur(5px)}dialog h2{font-size:23px;letter-spacing:-1px;margin:0 0 12px}dialog p{font-size:13px;line-height:1.8;color:var(--muted)}.dialog-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:16px}.dialog-head h2{margin:0}.color-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:25px}.color-choice{--cc:var(--red);padding:23px 12px;background:var(--cc);border-radius:14px;color:white;font-size:15px;font-weight:750;display:flex;justify-content:center;gap:10px;align-items:center;min-height:72px}.color-choice.yellow{--cc:var(--yellow);color:#694e0f}.color-choice.green{--cc:var(--green)}.color-choice.blue{--cc:var(--blue)}.color-choice svg{width:24px;height:24px}.rules-list{padding-left:20px;font-size:13px;line-height:1.9;color:#63736a}.rules-list li{padding:4px 0}.dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:25px}.history-list{list-style:none;padding:0;font-size:12px;line-height:1.8;color:var(--muted)}.history-list li{padding:10px 0;border-bottom:1px solid var(--line)}.history-list small{display:block;color:#9da695;font-size:10px}#toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%,20px);background:#223d32;color:#fff9e9;border-radius:12px;padding:13px 20px;font-size:13px;line-height:1.6;opacity:0;pointer-events:none;transition:all .2s;max-width:calc(100% - 32px);width:max-content;z-index:100;box-shadow:0 8px 30px #1233}#toast.visible{transform:translate(-50%,0);opacity:1}.offline-banner{background:#fff0dc;color:#a57732;text-align:center;padding:12px;border-radius:12px;font-size:12px;margin-top:15px}.claim-btn{font-size:11px;margin-top:14px;background:none;color:var(--muted);text-decoration:underline}.solo-opponent{grid-column:2}.two-opponent:first-child{grid-column:1}.two-opponent:last-child{grid-column:3}
@media(min-width:1400px){.landing{min-height:730px}.hero-table{width:380px;height:380px}.hero-art{min-height:500px}}
@media(max-width:900px){.shell{padding:0 30px}.landing{gap:20px;padding-top:45px}.header{height:80px}h1{font-size:45px;letter-spacing:-2.5px}.hero-table{width:285px;height:285px}.art-cards .card{width:85px;height:130px}.art-cards .card .value{font-size:40px}.hero-art{min-height:390px}.float-note{padding:10px 12px}.float-note.top{right:-6px}.float-note.bottom{left:-10px}.art-label{font-size:8px}.features{gap:14px}.table{min-height:250px}}
@media(max-width:640px){.shell{padding:0 22px}.header{height:72px}.brand span{font-size:21px}.brand img{width:29px;height:35px}.header-right{gap:4px}.header-right .pill{display:none}.subtle{font-size:11px}.landing{padding-top:36px;grid-template-columns:1fr;gap:24px;min-height:auto}.eyebrow{font-size:9px;margin-bottom:15px;letter-spacing:1.5px}h1{font-size:43px;letter-spacing:-2.6px;line-height:1.2;margin-bottom:15px}.intro{font-size:13px;line-height:1.8;margin-bottom:23px}.entry-box{max-width:none;padding:20px;border-radius:17px}.features{justify-content:center;gap:17px;margin-top:20px;font-size:10px}.hero-art{min-height:300px;grid-row:2;margin:0 10px 0}.hero-table{width:243px;height:243px;box-shadow:0 12px 0 #1d3e33,0 25px 35px #254b3e20}.art-ring{inset:15px -5px -5px}.art-cards .card{width:76px;height:115px;border-width:4px;border-radius:10px}.art-cards .card .value{font-size:36px}.art-cards .card .corner{font-size:12px}.float-note{font-size:10px;padding:9px 11px;border-radius:11px}.float-note small{font-size:9px}.float-note .emoji{font-size:20px}.float-note.top{top:10px;right:-5px}.float-note.bottom{bottom:5px;left:-5px}.art-label{bottom:30px;letter-spacing:2px;font-size:7px}.spark.one{top:30px;left:-5px;font-size:27px}.spark.two{right:0;bottom:45px;font-size:27px}.footer{margin-top:37px;padding:20px 0;gap:10px;font-size:9px}.footer span{max-width:55%;text-align:right;line-height:1.6}.room-shell{padding:0 16px}.room-shell .header{height:65px}.room-shell .brand{gap:7px}.room-shell .brand span{font-size:18px}.room-shell .brand img{width:25px;height:31px}.room-shell .header-right{gap:7px}.room-code{font-size:12px;letter-spacing:1px;gap:5px}.room-code small{display:none}.icon-btn{width:33px;height:33px;border-radius:9px}.icon-btn svg{width:16px;height:16px}.room-heading{margin:22px 0 16px;align-items:flex-start}.room-heading h2{font-size:22px}.room-heading p{font-size:11px}.connection{font-size:10px;margin-top:5px}.lobby-panel{padding:18px;border-radius:18px}.invite-panel{padding:19px;flex-direction:column;align-items:stretch;gap:17px}.invite-panel h3{font-size:15px}.invite-panel p{font-size:11px;line-height:1.8}.invite-code{font-size:31px;letter-spacing:6px;margin-top:13px}.invite-panel .primary{width:100%;font-size:12px;min-height:44px}.lobby-players{grid-template-columns:1fr 1fr;gap:10px;margin:19px 0}.lobby-player{min-height:153px;padding:20px 8px}.lobby-player .avatar{width:39px;height:39px;font-size:17px;border-radius:14px}.lobby-player h4{font-size:12px;margin-top:10px}.lobby-bottom{flex-direction:column;padding-top:17px;gap:14px;align-items:stretch;text-align:center}.lobby-bottom .primary{width:100%}.lobby-bottom p{font-size:11px}.rule-strip{gap:12px;margin:20px 0;font-size:10px}.game-layout{padding-top:11px}.opponents{gap:5px;margin-bottom:10px}.opponent{flex-direction:column;gap:4px;min-height:94px;padding:8px 3px;position:relative}.opponent .avatar{width:29px;height:29px;font-size:13px;border-radius:11px}.opponent-name{font-size:10px;text-align:center;max-width:97px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.opponent-name small{font-size:9px;margin-top:3px}.opponent-cardbox{display:none}.opponent.current{border-radius:12px}.table{border-radius:24px;min-height:221px;padding:20px;gap:20px}.table:before{inset:9px;border-radius:18px}.table-mark{top:17px;left:21px;font-size:8px;letter-spacing:1.5px}.direction{top:13px;right:19px;font-size:9px;gap:5px}.direction svg{width:15px}.table .card{width:77px;height:112px;border-width:4px;border-radius:11px}.table .card .value{font-size:40px}.table .card.wild .value{font-size:27px}.table .card.back .value{font-size:21px}.table .card .corner{font-size:13px}.table-caption{font-size:9px;margin-top:13px}.color-status{left:20px;bottom:16px;font-size:9px}.table-message{font-size:9px;bottom:16px;right:18px;max-width:44%;line-height:1.4}.table-arrow{font-size:18px}.turn-strip{margin:20px 0 12px}.turn-text{font-size:12px}.timer{font-size:11px}.hand-area{padding:12px 10px 0;border-radius:15px}.hand-top{font-size:9px;margin-bottom:8px;padding:0 3px}.hand-top strong{font-size:11px}.hand-cards .card{width:78px;min-width:78px;height:114px;border-width:4px;border-radius:11px}.hand-cards .card .value{font-size:40px}.hand-cards .card .corner{font-size:13px}.hand-cards .card.wild .value{font-size:26px}.action-bar{padding-top:14px;padding-bottom:calc(14px + env(safe-area-inset-bottom));flex-wrap:wrap;gap:10px}.hand-help{font-size:10px;max-width:45%}.actions{gap:7px;margin-left:auto}.actions .secondary{font-size:11px;padding:11px 12px}.uno-btn{padding:10px 18px;font-size:17px;min-height:44px}.catch-btn{font-size:11px}.game-footer{padding:13px 0;font-size:9px}.game-footer button{font-size:10px}.winner-box{padding:30px 18px;margin-top:20px}.winner-box h2{font-size:25px}.winner-box .trophy{font-size:50px}dialog{padding:23px;border-radius:19px}dialog h2{font-size:22px}.rules-list{font-size:12px}.offline-banner{font-size:11px}.solo-opponent{grid-column:2}}
@media(max-width:360px){.shell{padding:0 17px}h1{font-size:37px}.features{gap:10px}.room-shell{padding:0 12px}.room-code{font-size:10px}.room-shell .brand span{font-size:16px}.table{gap:14px}.actions{gap:5px}.uno-btn{padding:10px 14px}.hand-help{max-width:39%}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important;scroll-behavior:auto!important}}
@media(max-width:640px){.action-bar{position:sticky;bottom:0;background:var(--paper);z-index:4}.hero-art{overflow:clip}}
.mode-picker{margin-top:24px}.mode-heading{display:flex;justify-content:space-between;gap:10px;align-items:center;font-size:12px;margin-bottom:12px}.mode-heading span{font-size:10px;color:var(--muted)}.mode-options{display:grid;grid-template-columns:1fr 1fr;gap:12px}.mode-option{border:1px solid var(--line);background:#f8f7ee;border-radius:13px;text-align:left;padding:16px;color:var(--ink)}.mode-option.selected{border:2px solid var(--orange);background:#fff0e5;padding:15px}.mode-option:disabled{opacity:1;cursor:default}.mode-option-title{display:flex;gap:8px;align-items:center;font-size:13px;font-weight:750}.mode-option-title svg{width:17px;height:17px}.mode-check{margin-left:auto;color:var(--orange)}.mode-option small{display:block;font-size:10px;color:var(--muted);margin-top:7px;line-height:1.6;word-break:keep-all}.game-mode{display:flex;justify-content:center;margin:0 0 10px}.mode-chip{border:1px solid var(--line);border-radius:20px;color:var(--muted);padding:5px 10px;font-size:10px;display:inline-flex;align-items:center;gap:6px}.mode-chip svg{width:12px;height:12px}.mode-chip.counter{background:#fbead9;border-color:#ebc7a4;color:#b26032}.attack-banner{display:flex;align-items:center;gap:12px;margin-top:21px;background:#fce9dc;border:1px solid #e9b591;border-radius:14px;padding:13px 16px}.attack-total{font-size:28px;letter-spacing:-2px;font-weight:900;color:var(--orange)}.attack-banner strong{display:block;font-size:12px}.attack-banner small{display:block;font-size:10px;color:#a47151;margin-top:4px}.attack-banner .secondary{margin-left:auto;border-color:#e2b28f;background:#fff8ee;white-space:nowrap;font-size:12px;min-height:38px;padding:9px 12px}.attack-banner+.turn-strip{margin-top:15px}.motion-layer{position:fixed;inset:0;z-index:80;pointer-events:none;overflow:hidden;contain:strict}.motion-card,.motion-attack,.motion-impact,.motion-draw-count{position:absolute;pointer-events:none;will-change:transform,opacity}.motion-card{width:76px;height:112px;perspective:500px}.motion-card .card{width:76px;height:112px;border-width:4px;border-radius:11px;box-shadow:0 12px 24px #112f3344}.motion-card .card .value{font-size:39px}.motion-card .card.wild .value{font-size:27px}.motion-card .card.back .value{font-size:21px}.motion-card .card .corner{font-size:13px}.motion-attack{padding:12px 19px;background:var(--orange);color:#fff9e9;border:3px solid #fff9e9;border-radius:18px;box-shadow:0 9px 28px #c4513a66;text-align:center;white-space:nowrap}.motion-attack small{display:block;font-size:10px;font-weight:800}.motion-attack strong{display:block;font-size:30px;font-weight:900;letter-spacing:-2px}.motion-impact{width:95px;height:95px;border:4px solid var(--orange);border-radius:50%;box-shadow:0 0 0 9px #e7674422}.motion-draw-count{background:#fff9e9;color:var(--table);padding:8px 12px;border:1px solid #d4dccb;border-radius:12px;box-shadow:0 6px 18px #1f403133;white-space:nowrap;font-size:14px}
.game-footer{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:12px}.game-toggles{display:flex;justify-content:flex-end;gap:15px}.game-toggles button{min-height:28px;white-space:nowrap}
@media(max-width:640px){.mode-picker{margin-top:20px}.mode-heading{font-size:11px}.mode-heading span{font-size:9px}.mode-options{gap:8px}.mode-option{padding:12px}.mode-option.selected{padding:11px}.mode-option-title{font-size:12px;gap:6px}.mode-option small{font-size:9px}.game-mode{margin-bottom:8px}.attack-banner{padding:11px 12px;gap:9px;margin-top:18px}.attack-total{font-size:26px}.attack-banner strong{font-size:11px}.attack-banner small{font-size:9px}.attack-banner .secondary{font-size:10px;padding:8px;min-height:36px}.turn-text{line-height:1.5}.hand-help{word-break:keep-all}.motion-card,.motion-card .card{width:65px;height:96px}.motion-card .card .value{font-size:34px}.motion-card .card .corner{font-size:12px}}
@media(max-width:640px){.game-footer{grid-template-columns:1fr 1fr;gap:5px}.game-footer>span{grid-column:1/-1;grid-row:2;text-align:center}.game-toggles{gap:12px}}

/* Cards stay inside the hand; each exposed edge remains a touch target. */
.hand-cards{position:relative;width:100%;min-width:0;isolation:isolate;overflow:visible}
.hand-cards .card{position:absolute;min-width:0;z-index:var(--card-order,1);touch-action:manipulation;transition:transform .16s,opacity .16s}
.hand-cards .card:disabled{opacity:1}
.hand-cards .card.unplayable{opacity:1;filter:saturate(.45) brightness(1.1)}
.hand-cards .card:focus-visible{z-index:20;transform:translateY(-9px);outline:3px solid var(--ink);outline-offset:2px}
@media(hover:hover) and (pointer:fine){.hand-cards .card.playable:hover{z-index:20;transform:translateY(-9px)}}
@media(hover:none){.hand-cards .card.playable:hover{transform:none}}
@media(max-width:640px){.hand-top{gap:8px}.hand-top>span{text-align:right}.hand-cards .card{min-width:0}}
