:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI","Microsoft YaHei",sans-serif;color:#182033;background:#f4f1ea}*{box-sizing:border-box}body{margin:0}a{color:inherit}.top{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:22px 30px;background:linear-gradient(135deg,#1e293b,#334155);color:white;border-bottom:1px solid #ffffff22}.top h1{margin:2px 0 0;font-size:32px;letter-spacing:.02em}.top p{margin:.35rem 0 0;color:#d8e0ec}.eyebrow{font-size:13px;color:#bfdbfe;letter-spacing:.2em}.top-actions,.buttonline,.room-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.shell{max-width:1320px;margin:24px auto;padding:0 18px}.lobby-shell{display:grid;gap:16px}.card{background:#fffaf2;border:1px solid #e7ddcb;border-radius:18px;padding:18px;box-shadow:0 12px 26px #59401b12}.card h2{margin:0 0 8px;font-size:21px}.row{display:flex;gap:10px;align-items:center}.identity-strip{display:flex;align-items:center;justify-content:space-between;gap:16px}.identity-row{min-width:min(520px,100%)}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px}.compact-field{display:flex;align-items:center;gap:8px;color:#475569;font-size:14px}.compact-field input{width:86px}input,select,button{font:inherit;border-radius:12px;border:1px solid #d6c9b3;padding:10px 12px;background:white;color:#172033}button,.btn{background:#2563eb;color:white;border:0;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;border-radius:12px;padding:10px 13px;line-height:1.1;box-shadow:0 4px 12px #1d4ed81f}button:hover,.btn:hover{filter:brightness(1.03);transform:translateY(-1px)}.ghost{background:#475569;color:white}.danger{background:#dc2626;color:white}.wide-btn{width:100%;margin-top:12px;padding:13px}.muted{color:#7c6f61}.shell .muted{color:#74685c}.section-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:12px}.section-head p{margin:0}.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:9999;background:#111827;color:white;padding:10px 16px;border-radius:999px;box-shadow:0 14px 30px #0005}
.map-choices{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px}.map-choice{width:100%;text-align:left;border:1px solid #e6d9c5;background:#fff;border-radius:16px;padding:10px;display:grid;grid-template-columns:78px minmax(0,1fr);gap:10px;box-shadow:none;color:#1f2937;position:relative}.map-choice:hover{border-color:#93c5fd}.map-choice.selected{border-color:#2563eb;box-shadow:0 0 0 3px #2563eb22;background:#f8fbff}.map-choice img{grid-row:1/4;width:78px;height:78px;border-radius:12px;object-fit:cover;background:#eadfcd}.map-choice-main b{display:block;font-size:16px;margin-bottom:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.map-choice-main small{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;color:#6b7280;line-height:1.35}.map-metrics{display:flex;flex-wrap:wrap;gap:5px;margin-top:2px}.metric{border-left:5px solid var(--score,#64748b);background:color-mix(in srgb,var(--score,#64748b) 12%,white);border-radius:9px;padding:5px 7px;min-width:72px}.metric b{display:block;font-size:13px;line-height:1.1}.metric em{display:block;font-style:normal;font-size:11px;color:#6b7280;margin-top:2px}.eval-note{grid-column:2;color:#8a7562;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.map-preview{border:1px dashed #dccdb5;border-radius:16px;padding:12px;background:#fffdf8;display:flex;align-items:center;justify-content:space-between;gap:12px}.map-preview.quiet img{display:none}.map-preview p{margin:.35rem 0}.map-preview a{margin-right:10px;color:#2563eb}.eval-summary{display:flex;gap:8px;flex-wrap:wrap}.eval-summary span{background:#f1f5f9;border:1px solid #e2e8f0;border-radius:999px;padding:5px 9px;font-size:13px;color:#334155}
.rooms{display:grid;grid-template-columns:repeat(auto-fill,minmax(166px,1fr));gap:10px}.room{border:1px solid #e6dac7;border-radius:15px;padding:10px;background:#fff;min-width:0}.room-top{display:flex;justify-content:space-between;gap:6px;align-items:center}.room h3{font-size:15px;line-height:1.2;margin:8px 0 5px;min-height:36px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.room-desc{margin:0 0 7px;font-size:12px;color:#6b7280;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:32px}.room img{width:100%;height:62px;object-fit:cover;border-radius:10px;background:#eee2d0}.room-meta{font-size:12px;line-height:1.45;color:#475569;margin:7px 0}.room-actions{gap:5px}.room-actions .btn,.room-actions button{font-size:12px;padding:7px 8px;border-radius:9px;box-shadow:none;flex:1 1 auto}.badge,.status-pill{display:inline-block;padding:3px 7px;border-radius:999px;font-size:12px}.badge{background:#dbeafe;color:#1d4ed8}.status-pill{background:#ecfccb;color:#3f6212}.rules p,.rules li{line-height:1.75}.rules code{background:#f1f5f9;border-radius:6px;padding:1px 5px}

.bs-page{height:96vh;width:96vw;margin:2vh auto;display:grid;max-width:96vw;grid-template-rows:auto minmax(0,1fr) auto;background:#f4f6f9;color:#0f172a;overflow:hidden;border-radius:18px;box-shadow:0 12px 36px #0f172a18}
.game-head{min-height:86px;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:10px 18px;background:#fff;border-bottom:1px solid #e5e7eb}.players{display:flex;gap:12px;overflow-x:auto;flex:1;justify-content:center;padding:4px 6px}.head-actions{display:flex;gap:9px;align-items:center;flex-wrap:wrap}.head-actions .btn,.head-actions button{padding:8px 13px;border-radius:12px;box-shadow:none;background:#fff;color:#334155;border:1px solid #e2e8f0}.head-actions button:not(.ghost):not(.danger){background:#2563eb;color:#fff;border:0}.head-actions .danger{background:#dc2626;color:#fff;border:0}.head-actions .ghost{background:#fff;color:#334155;border:1px solid #e2e8f0}
.player{min-width:166px;display:flex;gap:10px;align-items:center;background:#fff;border:1px solid #e8eaef;border-radius:16px;padding:10px 12px;box-shadow:0 8px 20px #00000007}.player.current{outline:3px solid #22c55e}.player.me{background:#f8fbff;border-color:#bfdbfe}.player.eliminated{opacity:.55}.player-avatar{width:42px;height:42px;border-radius:999px;background:#4f46e5;color:#fff;font-size:20px;font-weight:800;display:flex;align-items:center;justify-content:center;flex:0 0 42px}.player.current .player-avatar{background:#22c55e}.player-name{font-size:16px;font-weight:900;line-height:1.1;max-width:94px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.player-count{font-size:14px;color:#64748b;margin-top:2px}.player-count.one{color:#dc2626;font-weight:900}.player-tags{display:flex;gap:5px;flex-wrap:wrap;margin-top:5px}.tag{display:inline-flex;align-items:center;border-radius:8px;padding:2px 7px;font-size:11px;font-weight:800}.tag.turn{background:#dcfce7;color:#166534}.tag.self{background:#dbeafe;color:#2563eb}.tag.mute{background:#fee2e2;color:#b91c1c}
.game-main{min-height:0;min-width:0;overflow:hidden;display:grid;grid-template-columns:minmax(0,1fr) minmax(310px,22vw);background:#eef1f5}.board-panel{position:relative;display:grid;grid-template-rows:minmax(0,1fr) auto;min-height:0;padding:18px 18px 12px;background:linear-gradient(#f1f4f8,#eef1f5)}.turn-clock{position:absolute;left:12px;top:12px;font-size:18px;font-weight:900;color:#c2410c}.board-stage{min-height:0;display:grid;grid-template-columns:auto auto auto;align-items:center;justify-content:center;gap:clamp(22px,3.2vw,48px);overflow:hidden}.pile-block{display:flex;flex-direction:column;align-items:center;gap:9px}.pile{width:clamp(94px,7.8vw,130px);aspect-ratio:2/3;border-radius:15px;display:flex;align-items:center;justify-content:center;font-size:17px;color:#64748b;background:#fff;border:3px solid #d7dce3;box-shadow:0 3px 10px #00000012}.pile-back{background:linear-gradient(180deg,#5a9bea,#2563b7);border-color:#fff;box-shadow:0 8px 0 #1f2937,0 15px 26px #00000024;position:relative}.pile-back::before{content:'';position:absolute;inset:10px;border:3px dashed #ffffff77;border-radius:12px}.pile-empty{background:#f8fafc}.pile-count{font-size:20px;font-weight:900;color:#334155}.top-block{display:flex;flex-direction:column;align-items:center;gap:12px;min-width:0}.top-meta{text-align:center}.room-title{font-size:18px;font-weight:900}.turn-hint{margin-top:5px;font-size:15px;font-weight:800;color:#1e293b}.board-chips{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:14px}.chip{display:inline-flex;align-items:center;background:#fff;border:1px solid #e5e7eb;border-radius:999px;padding:8px 16px;font-size:13px;font-weight:900;color:#334155;box-shadow:0 4px 10px #00000008}.first-card-placeholder{width:clamp(112px,9.5vw,150px);aspect-ratio:2/3;border:2px dashed #cbd5e1;border-radius:16px;background:#ffffffaa;display:flex;align-items:center;justify-content:center;font-weight:900;color:#64748b}.play-toolbar{display:flex;gap:9px;align-items:center;justify-content:center;flex-wrap:wrap;padding-top:10px}.play-toolbar select,.play-toolbar input{max-width:220px}.line-pick-btn{background:#0ea5e9;color:#fff;border:0}.log-panel{background:#fff;border-left:1px solid #e5e7eb;display:flex;flex-direction:column;min-height:0}.log-head{padding:16px 18px 10px;border-bottom:1px solid #eef2f7}.log-head h2{margin:0 0 7px;font-size:20px}.timeline{flex:1;overflow:auto;padding:12px 16px 6px}.timeline-item{display:flex;gap:8px;align-items:flex-start;padding:8px 0;border-bottom:1px solid #f1f5f9;font-size:13px;line-height:1.48}.timeline-item b{flex:0 0 auto;color:#0f172a}.timeline-item.log span{color:#334155}.timeline-item.chat span{color:#1d4ed8}.emoji-tools,.chat-compose{padding:9px 14px}.emoji-tools{position:relative;border-top:1px solid #eef2f7}.emoji-picker{position:absolute;left:14px;bottom:52px;right:14px;background:#fff;border:1px solid #e2e8f0;border-radius:16px;box-shadow:0 16px 36px #00000016;padding:10px;display:grid;grid-template-columns:repeat(auto-fill,minmax(36px,1fr));gap:5px;z-index:5;max-height:220px;overflow:auto}.emoji-item{padding:4px 0;background:#f8fafc;color:#111;border:1px solid #e2e8f0;border-radius:10px;box-shadow:none}.chat-compose{display:flex;gap:9px;border-top:1px solid #eef2f7}.chat-compose input{flex:1;min-width:0}
.hand-wrap{background:#fff;border-top:1px solid #e5e7eb;min-height:0;min-width:0;overflow:hidden}.hand-head{height:28px;display:flex;align-items:center;padding:5px 10px;font-size:18px;font-weight:900}.hand{height:clamp(190px,24vh,244px);width:100%;max-width:100%;min-width:0;display:flex;align-items:center;justify-content:flex-start;gap:12px;overflow-x:auto;overflow-y:hidden;padding:10px 14px 12px;background:#fff;scroll-snap-type:x proximity;touch-action:pan-x;overscroll-behavior-x:contain;cursor:grab}.uno-card{flex:0 0 clamp(90px,6.2vw,112px);width:clamp(90px,6.2vw,112px);aspect-ratio:2/3;border-radius:14px;user-select:none;scroll-snap-align:center;transition:.15s transform,.15s box-shadow;position:relative;background:transparent;border:0;padding:0;box-shadow:0 10px 20px #00000016}.board-stage .uno-card{flex-basis:clamp(112px,8.2vw,140px);width:clamp(112px,8.2vw,140px)}.svg-uno-card svg{display:block;width:100%;height:100%;overflow:visible;pointer-events:none}.uno-card{pointer-events:auto}.uno-card.playable{box-shadow:0 0 0 4px #22c55e,0 10px 20px #00000015;cursor:pointer}.uno-card.selected{transform:translateY(-16px);outline:4px solid #facc15}.topcard{transform:none}.line-modal{position:fixed;inset:0;z-index:10000;display:flex;align-items:center;justify-content:center}.line-modal[hidden]{display:none}.line-modal-backdrop{position:absolute;inset:0;background:#0f172a66;backdrop-filter:blur(2px)}.line-modal-card{position:relative;width:min(720px,92vw);max-height:86vh;overflow:auto;background:#fff;border-radius:22px;padding:18px;box-shadow:0 24px 70px #0005}.line-modal-head{display:flex;justify-content:space-between;align-items:center;gap:12px}.line-modal-head h2{margin:0;font-size:22px}.line-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(138px,1fr));gap:10px;margin-top:14px}.line-option{position:relative;min-height:62px;border-radius:15px;border:2px solid #e2e8f0;background:var(--line-bg);color:var(--line-fg);box-shadow:none;text-align:left;padding:10px;display:flex;flex-direction:column;justify-content:center;text-shadow:0 1px 4px rgba(255,255,255,.72)}.line-option span{font-weight:900;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.line-option em{font-style:normal;font-size:12px;opacity:.85;margin-top:3px}.line-option.owned{border-color:#38bdf8;box-shadow:0 0 0 4px rgba(59,130,246,.14)}.line-option.chosen{outline:4px solid #facc15}.bsuno-chat-editor{flex:1;min-width:0;min-height:42px;max-height:92px;overflow:auto;border:1px solid #d6c9b3;border-radius:12px;background:#fff;color:#172033;padding:9px 11px;line-height:1.45;outline:none}.bsuno-chat-editor:empty::before{content:attr(data-placeholder);color:#94a3b8}.collab-chat-input-emoji{width:28px;height:28px;object-fit:contain;vertical-align:-7px;margin:0 2px}.bld-chat-emoji{width:32px;height:32px;object-fit:contain;vertical-align:-9px;margin:0 2px}.timeline-item.chat .bld-chat-emoji:only-child{width:54px;height:54px}.bld-emoji-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;background:#f8fafc;color:#111;border:1px solid #e2e8f0;border-radius:8px;padding:4px;box-shadow:none;min-width:0}.bld-emoji-item img{width:17px;height:17px;object-fit:contain}.bld-emoji-item span{font-size:9px;line-height:1;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.emoji-empty{grid-column:1/-1;color:#64748b;font-size:13px;line-height:1.5;padding:8px}.emoji-picker[hidden]{display:none!important}
@media(max-width:1180px){.bs-page{height:98vh;width:98vw;margin:1vh auto}.game-main{grid-template-columns:1fr}.log-panel{border-left:0;border-top:1px solid #e5e7eb;max-height:27vh}.player{min-width:154px}.hand{height:clamp(172px,22vh,210px)}.uno-card{flex-basis:clamp(86px,12vw,104px);width:clamp(86px,12vw,104px)}.board-stage .uno-card{flex-basis:clamp(98px,15vw,128px);width:clamp(98px,15vw,128px)}}
@media(max-width:760px){.bs-page{border-radius:0;height:100vh;width:100vw;margin:0}.game-head{min-height:0;padding:8px;flex-direction:column}.players{justify-content:flex-start;width:100%}.head-actions{width:100%}.head-actions>*{flex:1 1 auto}.game-main{grid-template-columns:1fr}.board-panel{padding:14px 10px 8px}.board-stage{gap:12px;grid-template-columns:auto auto auto}.pile{width:62px}.pile-count{font-size:14px}.hand{height:136px;gap:9px;padding:8px 10px 10px}.uno-card{flex-basis:72px;width:72px}.board-stage .uno-card{flex-basis:82px;width:82px}.chip{padding:6px 10px;font-size:11px}.room-title{font-size:14px}.turn-hint{font-size:12px}.log-panel{max-height:25vh}.line-list{grid-template-columns:repeat(2,minmax(0,1fr))}.bld-emoji-item img{width:16px;height:16px}}
/* v8：定线路按颜色合并后，按手牌同色数量递增强调。 */
.line-option.grouped{min-height:72px;isolation:isolate;overflow:hidden}
.line-option.grouped::before{content:none}
.line-option.grouped.owned{border-color:#0284c7;box-shadow:0 0 0 calc(2px + 5px * var(--line-level,0)) rgba(14,165,233,.22),0 10px 18px rgba(15,23,42,.12)}
.line-option.grouped span{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.18}
.line-option.grouped em{align-self:flex-start;background:rgba(255,255,255,.82);color:#0f172a;border-radius:999px;padding:2px 7px;text-shadow:none;font-weight:900}

.hand:active{cursor:grabbing}.players{min-width:0}.board-panel{min-width:0}.log-panel{min-width:0}

/* v15：手机竖屏专用界面。重点不是把桌面版缩小，而是重新分区：顶部玩家、中央桌面、浮层日志、底部手牌。 */
.mobile-only{display:none!important}.log-title-row{display:flex;align-items:center;justify-content:space-between;gap:10px}.mobile-status{display:none}
@media(max-width:760px) and (orientation:portrait){
  html,body{height:100%;overflow:hidden;background:#eef1f5;overscroll-behavior:none}
  .bs-page{height:100dvh;width:100vw;max-width:100vw;margin:0;border-radius:0;box-shadow:none;grid-template-rows:auto minmax(0,1fr) auto;background:#eef1f5;overflow:hidden}
  .mobile-only{display:inline-flex!important}
  .game-head{min-height:0;display:grid;grid-template-rows:auto auto;gap:6px;padding:6px 7px 5px;background:#ffffffd9;backdrop-filter:blur(10px);position:relative;z-index:20;border-bottom:1px solid #e2e8f0}
  .players{order:1;width:100%;justify-content:flex-start;gap:7px;overflow-x:auto;overflow-y:hidden;padding:1px 1px 3px;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch}
  .player{min-width:118px;max-width:132px;padding:6px 8px;border-radius:13px;gap:7px;scroll-snap-align:start;box-shadow:0 3px 10px #00000008}.player.current{outline:2px solid #22c55e}.player-avatar{width:32px;height:32px;flex-basis:32px;font-size:16px}.player-name{font-size:13px;max-width:70px}.player-count{font-size:12px}.player-tags{gap:3px;margin-top:3px}.tag{font-size:10px;padding:1px 5px;border-radius:7px}
  .head-actions{order:2;width:100%;display:flex;flex-wrap:nowrap;gap:6px;overflow-x:auto;overflow-y:hidden;padding:1px 0 2px;-webkit-overflow-scrolling:touch}.head-actions .btn,.head-actions button{flex:0 0 auto;min-height:36px;padding:7px 10px;border-radius:10px;font-size:13px;white-space:nowrap}.head-actions a[href="/games/bsuno/rules.html"]{display:none!important}
  .game-main{grid-template-columns:1fr;position:relative;min-height:0;overflow:hidden;background:#eef1f5}.board-panel{min-height:0;display:grid;grid-template-rows:minmax(0,1fr) auto auto;gap:5px;padding:8px 7px 6px;background:linear-gradient(180deg,#f5f7fb 0%,#eef2f7 100%)}
  .turn-clock{left:8px;top:8px;font-size:13px;background:#fff;border:1px solid #e5e7eb;border-radius:999px;padding:3px 7px;z-index:2;color:#b45309}.board-stage{display:grid;grid-template-columns:52px minmax(0,1fr) 52px;align-items:center;justify-items:center;gap:7px;overflow:hidden;min-height:0}.pile{width:46px;border-width:2px;border-radius:10px;font-size:11px}.pile-back{box-shadow:0 4px 0 #1f2937,0 8px 18px #00000022}.pile-back::before{inset:5px;border-width:2px;border-radius:8px}.pile-count{font-size:12px}.pile-block{gap:5px}.pile-empty{font-size:10px;line-height:1.1;text-align:center}.top-block{gap:7px;width:100%;min-width:0}.board-stage .uno-card{flex-basis:min(30vw,112px);width:min(30vw,112px);max-height:168px}.first-card-placeholder{width:min(30vw,112px);font-size:13px;border-radius:14px}.top-meta{max-width:100%}.room-title{font-size:13px;line-height:1.25;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.turn-hint{font-size:12px;margin-top:3px}.board-chips{gap:5px;margin-top:7px}.chip{font-size:10px;line-height:1.1;padding:5px 7px;max-width:44vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-shadow:none}
  .mobile-status{display:block;min-height:28px;max-height:36px;overflow:hidden;padding:5px 8px;border:1px solid #e2e8f0;border-radius:12px;background:#fff;color:#475569;font-size:12px;line-height:1.35;white-space:nowrap;text-overflow:ellipsis}.mobile-status .bld-chat-emoji{width:20px;height:20px;vertical-align:-5px}.mobile-status b{color:#0f172a}
  .play-toolbar{position:relative;display:flex;justify-content:flex-start;flex-wrap:nowrap;gap:6px;overflow-x:auto;padding:3px 0 0;-webkit-overflow-scrolling:touch}.play-toolbar button,.play-toolbar input{min-height:38px;font-size:13px;border-radius:10px;white-space:nowrap}.play-toolbar input{min-width:170px}.play-toolbar #msg{font-size:11px;align-self:center;white-space:nowrap}.play-toolbar #playBtn{background:#16a34a}.play-toolbar #passBtn{background:#64748b;color:#fff}.play-toolbar #clearBtn{background:#fff;color:#475569;border:1px solid #cbd5e1}.line-pick-btn{background:#0ea5e9!important;color:#fff!important}
  .log-panel{position:fixed;left:3.5vw;right:3.5vw;bottom:calc(150px + env(safe-area-inset-bottom,0px));height:min(50dvh,390px);max-height:min(50dvh,390px);border:1px solid #dbe4ef;border-radius:20px;background:#fff;box-shadow:0 22px 70px #0f172a55;z-index:40;overflow:hidden;transform:translateY(calc(100% + 28px));opacity:0;pointer-events:none;transition:transform .2s ease,opacity .2s ease;display:flex;flex-direction:column}.mobile-log-open .log-panel{transform:translateY(0);opacity:1;pointer-events:auto}.log-head{padding:12px 14px 8px}.log-head h2{font-size:17px;margin:0}.log-head .muted{font-size:11px;margin:5px 0 0;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}.timeline{padding:7px 12px}.timeline-item{font-size:12px;padding:7px 0;line-height:1.45}.emoji-tools,.chat-compose{padding:7px 10px}.chat-compose{gap:6px}.bsuno-chat-editor{min-height:38px;max-height:76px;font-size:13px;border-radius:10px;padding:8px}.chat-compose button,.emoji-tools button{min-height:36px;font-size:13px;border-radius:10px}.emoji-picker{left:10px;right:10px;bottom:48px;max-height:190px;grid-template-columns:repeat(auto-fill,minmax(30px,1fr));gap:4px;padding:8px;border-radius:14px}.bld-emoji-item{padding:3px;border-radius:8px}.bld-emoji-item img{width:16px;height:16px}.bld-emoji-item span{display:none}.bld-chat-emoji{width:26px;height:26px}.timeline-item.chat .bld-chat-emoji:only-child{width:42px;height:42px}
  .hand-wrap{height:150px;padding-bottom:env(safe-area-inset-bottom,0px);background:#fff;position:relative;z-index:25;border-top:1px solid #dfe7f1;box-shadow:0 -8px 28px #0f172a0c}.hand-head{height:22px;padding:3px 8px;font-size:13px;color:#334155}.hand{height:128px;gap:9px;padding:5px 10px 10px;align-items:flex-end;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;touch-action:pan-x;overscroll-behavior-x:contain}.uno-card{flex:0 0 78px!important;width:78px!important;aspect-ratio:2/3;border-radius:11px;scroll-snap-align:center}.uno-card.playable{box-shadow:0 0 0 3px #22c55e,0 7px 13px #00000014}.uno-card.selected{transform:translateY(-8px);outline:3px solid #facc15}.svg-uno-card svg{border-radius:11px}.topcard{transform:none!important}
  .line-modal{align-items:flex-end}.line-modal-card{width:100vw;max-height:76dvh;border-radius:22px 22px 0 0;padding:14px 12px calc(14px + env(safe-area-inset-bottom,0px));box-shadow:0 -20px 70px #0005}.line-modal-head h2{font-size:18px}.line-modal-card>.muted{font-size:12px;margin:7px 0}.line-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:10px}.line-option{min-height:54px;border-radius:13px;padding:8px}.line-option.grouped{min-height:58px}.line-option span{font-size:13px}.line-option em{font-size:11px;padding:1px 6px}.line-option.chosen{outline:3px solid #facc15}
}
@media(max-width:380px) and (orientation:portrait){.board-stage{grid-template-columns:46px minmax(0,1fr) 46px;gap:5px}.pile{width:41px}.board-stage .uno-card{width:96px!important;flex-basis:96px!important}.hand-wrap{height:140px}.hand{height:118px}.uno-card{width:72px!important;flex-basis:72px!important}.head-actions .btn,.head-actions button{font-size:12px;padding:6px 9px}.log-panel{bottom:calc(140px + env(safe-area-inset-bottom,0px))}}
