:root{
  --bg:#050a08;--bg2:#0b1712;--felt:#153a2b;--felt-hi:#24513e;--wood:#24120c;--wood-hi:#4a2c1d;
  --brass:#d0a65e;--brass-dim:#7c5d2f;--bone:#f3eedf;--ink:#17211d;--ui:#eae6dc;--muted:#9aa9a2;
  --panel:#07110eef;--panel2:#101b17ef;--line:#ffffff1e;--jade:#3ab08b;--red:#c85a4a;--blue:#5680b4;--gold:#e7b85f;
  --card-width:78px;--card-height:116px;--hand-step:52px;
  font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ui);background:var(--bg)
}
*{box-sizing:border-box}html,body{width:100%;height:100%}body{margin:0;overflow:hidden;background:#050907;color:var(--ui)}
button,input,select{font:inherit}button{border:0;color:inherit;cursor:pointer}button:focus-visible{outline:2px solid #ffe1a3;outline-offset:3px}button:disabled{opacity:.35;cursor:not-allowed}.hidden{display:none!important}
#app{height:100%;position:relative;isolation:isolate;background:radial-gradient(circle at 50% 16%,#264838 0,#0a1711 38%,#050907 78%)}

/* cinematic environment */
.scene-backdrop{position:fixed;inset:58px 0 36px;overflow:hidden;pointer-events:none;z-index:-1;background:
  radial-gradient(circle at 50% 4%,#d29c7048 0 9%,transparent 24%),
  linear-gradient(180deg,#1d3430 0,#152824 32%,#09120f 74%,#050907 100%)}
.scene-backdrop:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#1e0f0ac0 0 11%,transparent 29% 71%,#1d0f0bc0 89% 100%),radial-gradient(circle at 20% 25%,#ff9a7a22,transparent 23%),radial-gradient(circle at 82% 17%,#ff917322,transparent 20%)}
.mountain{position:absolute;bottom:37%;width:46vw;height:31vh;background:linear-gradient(180deg,#263a37,#101d1a);clip-path:polygon(0 100%,12% 64%,25% 79%,39% 39%,52% 72%,67% 24%,78% 53%,89% 36%,100% 100%);opacity:.72;filter:blur(.2px)}
.mountain-a{left:18%}.mountain-b{right:-4%;transform:scale(.78);opacity:.48}.pagoda-silhouette{position:absolute;right:14%;bottom:40%;width:130px;height:90px;background:#09100e;clip-path:polygon(30% 100%,30% 52%,6% 52%,21% 43%,21% 32%,0 32%,22% 23%,22% 12%,6% 12%,28% 0,72% 0,94% 12%,78% 12%,78% 23%,100% 32%,79% 32%,79% 43%,94% 52%,70% 52%,70% 100%);opacity:.78;box-shadow:0 0 24px #dd9b4b30}
.blossom{position:absolute;width:240px;height:210px;top:-10px;background:radial-gradient(circle at 28% 26%,#ef8d8f 0 2px,transparent 3px),radial-gradient(circle at 47% 38%,#f5a2a5 0 3px,transparent 4px),radial-gradient(circle at 66% 21%,#da737a 0 3px,transparent 4px),radial-gradient(circle at 74% 58%,#ef8d8f 0 2px,transparent 3px),radial-gradient(circle at 34% 70%,#e67b82 0 3px,transparent 4px);opacity:.62}.blossom-a{left:8%}.blossom-b{right:7%;transform:scaleX(-1)}

/* header */
.topbar{height:58px;display:grid;grid-template-columns:minmax(170px,1fr) auto minmax(170px,1fr);align-items:center;padding:7px 18px;background:#030706e8;border-bottom:1px solid #d0a65e24;box-shadow:0 8px 28px #0008;position:relative;z-index:80}
.brand{display:flex;flex-direction:column;line-height:1}.brand-word{font:800 26px/1 Georgia,serif;letter-spacing:.08em;color:#f4ead9;text-shadow:0 2px 8px #000}.brand small{font-size:7px;letter-spacing:.22em;color:#a89b84;margin-top:4px}
.scoreboard{height:47px;display:flex;align-items:stretch;border:1px solid #d0a65e42;border-radius:11px;overflow:hidden;background:#0b1512;box-shadow:0 9px 24px #0008}.score-team{min-width:128px;padding:5px 18px;text-align:center;display:flex;flex-direction:column;justify-content:center}.score-team-a{background:linear-gradient(180deg,#143850,#0e2535)}.score-team-b{background:linear-gradient(180deg,#71372f,#48221f)}.score-team small{font-size:8px;letter-spacing:.14em;color:#d7e6eb}.score-team strong{font:700 19px/1.05 Georgia,serif}.score-seal{width:64px;display:grid;place-items:center;background:linear-gradient(180deg,#111a17,#080d0b);color:var(--brass);font:32px Georgia,serif;border-inline:1px solid #d0a65e42}
.compact-actions{display:flex;gap:7px;justify-content:flex-end}.icon-ghost{width:34px;height:34px;border-radius:9px;border:1px solid #ffffff1a;background:#ffffff08;color:#d8d9d4}.icon-ghost:hover{border-color:#d0a65e66;background:#d0a65e10}

/* left game menu */
.table-menu{position:fixed;top:76px;left:18px;z-index:70;width:216px;padding:10px;background:#060b09e8;border:1px solid #ffffff1f;border-radius:13px;box-shadow:0 18px 50px #0009;backdrop-filter:blur(14px)}
.menu-brand{padding:5px 7px 11px;border-bottom:1px solid #ffffff12;margin-bottom:7px}.menu-brand b{font:700 18px Georgia,serif;letter-spacing:.08em}.menu-brand small{display:block;color:#887d6e;font-size:7px;letter-spacing:.16em;margin-top:2px}
.menu-button{width:100%;height:39px;display:grid;grid-template-columns:28px 1fr auto;align-items:center;gap:8px;padding:0 10px;border-radius:9px;background:#ffffff06;border:1px solid transparent;text-align:left;color:#d8d8d2;margin:4px 0}.menu-button span{font-size:15px;color:#a8a49a}.menu-button b{font-size:11px;font-weight:600}.menu-button i{font-style:normal;font-size:8px;color:#9ba9a2}.menu-button:hover{background:#ffffff0c;border-color:#ffffff17}.menu-button.active{border-color:#4fa78b88;background:linear-gradient(90deg,#0b3140,#153a2e);box-shadow:inset 0 0 18px #3fb88a11}.menu-button.active i{color:#8ef0bd}

/* table */
.table-shell{height:calc(100vh - 94px);padding:18px 22px 12px;display:grid;place-items:center}.table{width:min(1420px,calc(100vw - 44px));height:100%;position:relative;border:18px solid transparent;border-radius:60px;background:
  linear-gradient(var(--felt),var(--felt)) padding-box,
  linear-gradient(150deg,#6a3b22 0,#28150d 20%,#7b482b 48%,#21110c 72%,#5e321d 100%) border-box;
  box-shadow:0 38px 100px #000d,inset 0 0 0 3px #d0a65e5c,inset 0 0 45px #0009;overflow:hidden}
.table:before{content:"";position:absolute;inset:7px;border:1px solid #d0a65e42;border-radius:45px;pointer-events:none;box-shadow:inset 0 0 24px #0007}.table:after{content:"";position:absolute;inset:24px;background:radial-gradient(circle at 50% 38%,#2a5a45 0,#1a4634 36%,#123326 78%,#0e291e 100%);border-radius:36px;pointer-events:none;z-index:0;box-shadow:inset 0 15px 45px #04120ba8,inset 0 -20px 60px #0004}
.felt-pattern{position:absolute;z-index:1;inset:25px;border-radius:35px;opacity:.13;background-image:repeating-linear-gradient(35deg,#fff 0 1px,transparent 1px 7px),repeating-linear-gradient(145deg,#000 0 1px,transparent 1px 9px);mix-blend-mode:soft-light;pointer-events:none}.felt-dragon{position:absolute;z-index:1;left:50%;top:48%;transform:translate(-50%,-50%) rotate(-8deg);font:clamp(180px,26vw,390px)/1 Georgia,serif;color:#c9a45f0c;text-shadow:0 0 1px #e6c68414;pointer-events:none}.table-brass{position:absolute;z-index:3;top:46%;width:70px;height:108px;border:2px solid #a77c3c;border-radius:26px;background:radial-gradient(circle at 50% 35%,#6d5127,#211910 68%);box-shadow:inset 0 0 0 4px #0d0a07,0 8px 16px #0009}.table-brass-left{left:-36px}.table-brass-right{right:-36px}.table-quote{position:absolute;z-index:5;right:54px;top:36px;padding:14px 18px;background:#07100dcc;border:1px solid #d0a65e2f;border-radius:10px;font:italic 12px/1.5 Georgia,serif;color:#d7cfbd;box-shadow:0 12px 32px #0008}

/* seats */
.seat{position:absolute;z-index:12}.seat-bottom{left:50%;bottom:4px;transform:translateX(-50%);width:min(96%,1130px)}.seat-top{left:50%;top:11px;transform:translateX(-50%);width:min(76%,900px)}.seat-left{left:17px;top:48%;transform:translateY(-50%);width:148px}.seat-right{right:17px;top:48%;transform:translateY(-50%);width:148px}
.player-badge{display:flex;align-items:center;gap:8px;width:max-content;max-width:230px;padding:5px 9px 5px 6px;background:#07100ee8;border:1px solid #d0a65e35;border-radius:999px;box-shadow:0 8px 20px #0007;color:var(--ui);text-align:left;position:relative;z-index:10}.seat-bottom .player-badge,.seat-top .player-badge{margin:0 auto 6px}.seat-right .player-badge{margin-left:auto}.player-badge.targetable{cursor:pointer}.avatar{width:39px;height:39px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle at 35% 30%,#946447,#2b1b14 68%);border:2px solid #b68a4e;box-shadow:inset 0 0 0 2px #0b0b09,0 0 0 2px #0008}.avatar-glyph{font:19px Georgia,serif;color:#f1d79b;text-shadow:0 2px 5px #000}.player-copy b{display:block;font-size:11px}.player-copy small{display:block;font-size:8px;color:#9ba9a1;white-space:nowrap}.relation-tag{font-size:6px;color:#d0a65e8e;letter-spacing:.11em;margin-left:4px}.active .player-badge{border-color:#78c9ff;box-shadow:0 0 0 2px #56b7ff77,0 0 28px #1f91d855,0 10px 22px #0009}.finished .player-badge{opacity:.55}
.exchange-target-active .player-badge,.exchange-target-active .exchange-seat-chip{border-color:#e5bc6a;box-shadow:0 0 0 2px #d7b26b55,0 0 25px #d7b26b32}.dragon-target .player-badge{border-color:#d06f59;box-shadow:0 0 0 2px #d56f5266,0 0 26px #d56f5240}

/* hands */
.hand{display:flex;justify-content:center;align-items:flex-end;height:132px;pointer-events:none}.hand .card{pointer-events:auto}.player-hand{--hand-step:52px}.player-hand .card+.card,.opponent-hand-top .card+.card{margin-left:calc((var(--card-width) - var(--hand-step))*-1)}.opponent-hand-top{height:80px;--card-width:51px;--card-height:76px;--hand-step:19px;align-items:flex-start}.opponent-hand-top .card{width:51px;height:76px;transform-origin:50% 10%}.opponent-hand-top .card:nth-child(odd){transform:rotate(-2deg)}.opponent-hand-top .card:nth-child(even){transform:rotate(2deg)}
.opponent-hand-side{position:absolute;top:46px;width:88px;height:236px;display:flex;flex-direction:column;justify-content:flex-start;align-items:center;pointer-events:none}.seat-left .opponent-hand-side{left:0}.seat-right .opponent-hand-side{right:0}.opponent-hand-side .card{width:52px;height:77px;flex:0 0 auto;margin:0}.opponent-hand-side .card+.card{margin-top:-62px}.seat-left .opponent-hand-side .card{transform:rotate(88deg)}.seat-right .opponent-hand-side .card{transform:rotate(-88deg)}

/* cards */
.card{width:var(--card-width);height:var(--card-height);border-radius:8px;background:linear-gradient(145deg,#fbf5e8,#e8dcc2);color:var(--ink);border:1px solid #d3c7ad;box-shadow:0 8px 16px #0007;position:relative;display:block;padding:0;user-select:none;transition:transform .16s ease,box-shadow .16s ease,filter .16s ease;overflow:hidden;flex:0 0 auto}.card:before{content:"";position:absolute;inset:3px;border:1px solid #7d67461f;border-radius:5px;pointer-events:none;z-index:2}.seat-bottom .card{cursor:pointer}.seat-bottom .card:hover{transform:translateY(-10px) rotate(-.35deg);z-index:30}.seat-bottom .card.selected{transform:translateY(-23px);box-shadow:0 0 0 3px #f1bd60,0 16px 28px #000b;z-index:32}.card.legal-option:not(.selected){box-shadow:0 0 0 2px #5bc69b70,0 8px 16px #0007}.card.hinted{box-shadow:0 0 0 3px #ffd77b,0 0 27px #ffca5b88,0 14px 25px #000a}.card.assigned{filter:saturate(.5) brightness(.7);transform:translateY(3px)}
.card-corner{position:absolute;top:6px;left:6px;z-index:4;display:flex;flex-direction:column;align-items:center;line-height:.9;color:var(--card-accent)}.card-corner strong{font:800 19px Georgia,serif}.card-corner span{font-size:12px;margin-top:3px}.art-layer{position:absolute;inset:20px 4px 11px 13px;color:var(--card-accent);display:grid;place-items:center;opacity:.98}.art-layer svg{width:100%;height:100%;display:block;filter:drop-shadow(0 1px 0 #fff7)}.card-name{position:absolute;z-index:4;left:6px;right:6px;bottom:4px;font-size:6px;letter-spacing:.1em;text-transform:uppercase;color:#302b228f;text-align:right;font-weight:800}.card.special{background:linear-gradient(150deg,#f8edcf,#ddc588);border-color:#b99a58}.card.special .art-layer{inset:17px 2px 9px 7px}.card-small{--card-width:60px;--card-height:89px}.card-small .card-name{display:none}.card-small .card-corner strong{font-size:15px}.card-back{background:linear-gradient(145deg,#17241e,#09110e);border:1px solid #b68d50;box-shadow:0 6px 12px #0008;display:grid;place-items:center}.card-back:after{content:"";position:absolute;inset:6px;border:1px solid #d0a65e52;border-radius:5px;background:repeating-linear-gradient(45deg,#d0a65e0d 0 2px,transparent 2px 7px)}.back-glyph{position:relative;z-index:2;color:#d9ac5fa6;font:24px Georgia,serif}.tiny-card-back{width:22px;height:31px;display:grid;place-items:center;border-radius:4px;background:#102019;color:var(--brass);border:1px solid #d7b26b88;font:12px serif;flex:0 0 auto}

/* Authored Blender materials: decorative layers never change table/card geometry.
   Existing colors, line art and glyphs remain usable if an image fails to load. */
.table{
  background:
    linear-gradient(var(--felt),var(--felt)) padding-box,
    linear-gradient(#160b0760,#160b0760) border-box,
    url('./assets/blender/walnut-lacquer.webp') center/cover border-box;
  background-color:var(--wood)
}
.table:after{
  background:
    radial-gradient(ellipse at 50% 38%,#20503b18,#07110e66),
    url('./assets/blender/tea-felt.webp') center/cover;
  background-color:var(--felt)
}
.felt-pattern{background-image:none}
.card-back:after{
  z-index:3;
  background:url('./assets/blender/dragon-medallion.webp') center/cover no-repeat
}

/* central play stage */
.center{position:absolute;z-index:18;left:50%;top:45%;transform:translate(-50%,-50%);width:min(53vw,730px);display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center}.table-pile{width:100%;min-height:152px;display:grid;place-items:center;position:relative}.table-empty{font:italic 12px Georgia,serif;color:#ffffff35}.trick-stage{position:relative;width:100%;height:157px}.trick-play{position:absolute;left:50%;top:50%;transform:translate(calc(-50% + (var(--play-index) * 12px)),calc(-50% + (var(--play-index) * 7px))) rotate(calc((var(--play-index) - 1) * 1.5deg));min-width:112px}.trick-play:not(.latest){opacity:.54;filter:saturate(.7)}.played-cards{display:flex;justify-content:center}.played-cards .card+.card{margin-left:-27px}.play-label{display:inline-block;margin-top:4px;padding:5px 9px;border-radius:7px;background:#07110dcc;border:1px solid #ffffff18;font-size:8px;color:#d2d5d0}.turn-status{font:600 11px Georgia,serif;color:#e9d8b3;min-height:18px}.wish-chip{padding:6px 10px;border-radius:999px;background:#0a1511d9;border:1px solid #d0a65e66;color:#eed18e;font-size:8px;letter-spacing:.07em}
.table-actions{display:flex;gap:8px;align-items:center;justify-content:center;min-height:44px}.table-actions button{height:42px;min-width:104px;padding:0 18px;border-radius:8px;font-weight:700;box-shadow:0 9px 20px #0006}.primary,.action-play{background:linear-gradient(180deg,#f6c36c,#e39b3c);color:#2b170b;border:1px solid #ffdf93}.secondary{background:#0e2430d9;border:1px solid #4d7b9e78;color:#c7dded}.action-tichu{background:#16261de6;border-color:#d0a65e5c;color:#e6cf9a}.table-actions button:hover:not(:disabled){filter:brightness(1.08)}

/* inline decisions */
.context-panel{width:100%;position:relative;z-index:25}.decision-ribbon,.inline-note,.exchange-controller{background:#07110ef3;border:1px solid #d0a65e35;border-radius:12px;box-shadow:0 17px 40px #0009;text-align:left}.decision-ribbon{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:12px 14px}.decision-ribbon>div:first-child,.exchange-heading{display:flex;flex-direction:column;gap:2px}.decision-ribbon small,.exchange-heading small{font-size:7px;letter-spacing:.16em;color:var(--brass);font-weight:800}.decision-ribbon b,.exchange-heading b{font:600 16px Georgia,serif}.decision-ribbon span,.exchange-heading span,.inline-note span{font-size:9px;color:var(--muted)}.inline-actions{display:flex;gap:7px;flex:0 0 auto}.inline-actions button,.confirm-exchange{height:35px;padding:0 13px;border-radius:8px}.inline-note{padding:10px 13px;display:flex;align-items:center;justify-content:center;gap:7px}.inline-note b{font-size:11px}.dragon-ribbon{border-color:#c85a4a72}
.exchange-controller{padding:12px}.exchange-heading{text-align:center;align-items:center}.exchange-recipients{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin:10px 0}.exchange-recipient{min-width:0;background:#ffffff07;border:1px solid #ffffff16;border-radius:10px;padding:8px;color:var(--ui);display:flex;flex-direction:column;gap:2px;align-items:center}.exchange-recipient.active{border-color:#d0a65e;background:#d0a65e12;box-shadow:0 0 0 1px #d0a65e44}.exchange-recipient.complete{border-color:#4ca97e6b;background:#2e8f6e12}.recipient-name{font-size:11px;font-weight:800}.exchange-recipient small{font-size:6px;color:var(--muted);letter-spacing:.09em}.recipient-card{margin-top:4px;display:flex;align-items:center;gap:5px;font-size:7px;color:#cde8dc}.recipient-card.empty{height:31px;color:#ffffff58}.recipient-card i{font-style:normal;text-decoration:underline;color:#e4bd72}.confirm-exchange{display:block;margin:0 auto;background:linear-gradient(#f4c16d,#df9e42);color:#2c170b;font-weight:800}
.exchange-seat-chip{margin-top:6px;width:132px;padding:6px 8px;border-radius:9px;background:#07110ee8;border:1px solid #ffffff16;display:flex;align-items:center;gap:5px;flex-wrap:wrap;color:var(--ui)}.seat-right .exchange-seat-chip{margin-left:auto}.exchange-seat-chip span{font-size:9px;font-weight:700}.exchange-seat-chip small{width:100%;font-size:6px;color:var(--muted)}
.wish-bar{width:100%;z-index:27}.wish-inline{padding:9px 10px;background:#07110ef3;border:1px solid #d0a65e62;border-radius:10px;display:flex;align-items:center;gap:10px}.wish-inline>span{display:flex;flex-direction:column;flex:0 0 auto;text-align:left}.wish-inline small{font-size:6px;letter-spacing:.15em;color:var(--brass)}.wish-inline b{font:600 13px Georgia,serif}.wish-ranks{display:flex;gap:4px;flex-wrap:wrap;justify-content:center}.wish-ranks button{height:30px;min-width:30px;padding:0 7px;border-radius:7px}

/* Coach – intentionally dominant decision card */
.coach-dock{position:absolute;z-index:24;right:42px;bottom:154px;width:310px;padding:14px 15px;background:linear-gradient(160deg,#0c1715f7,#07100ef5);border:1px solid #c79b515e;border-radius:11px;box-shadow:0 20px 48px #000b;text-align:left}.coach-dock:before{content:"";position:absolute;left:0;top:14px;bottom:14px;width:3px;border-radius:3px;background:linear-gradient(#f0c66c,#8b612e)}.coach-copy{padding-left:5px}.coach-kicker{display:block;color:#f1bd5d;font-size:9px;font-weight:900;letter-spacing:.09em;margin-bottom:4px}.coach-copy>b{font:700 16px Georgia,serif;color:#f1eee5}.coach-copy p{margin:6px 0 9px;font-size:11px;line-height:1.45;color:#c1cac4}.coach-meta{display:flex;gap:6px;flex-wrap:wrap;font-size:8px;color:#9eaaa4}.coach-verdict{padding:3px 6px;border-radius:5px;border:1px solid #ffffff18}.coach-verdict.valid{color:#9ce3b9;border-color:#59b48255}.coach-verdict.invalid{color:#ffb2a3;border-color:#cb685455}.coach-actions{display:flex;align-items:center;gap:7px;margin-top:10px}.coach-hint{height:37px;flex:1;border-radius:7px;background:linear-gradient(#f2c26d,#e5a64d);color:#2d170b;font-weight:800}.coach-toggle{height:37px;border-radius:7px;padding:0 10px;background:#ffffff08;border:1px solid #ffffff18;color:#afb9b3;font-size:8px}.coach-off{width:auto;padding:0;background:transparent;border:0;box-shadow:none}.coach-off:before{display:none}.coach-off-button{padding:8px 12px;border-radius:8px;background:#07110edc;border:1px solid #d0a65e44;color:#d9c493;font-size:9px}

/* summaries */
.round-summary{position:absolute;z-index:40;left:50%;top:50%;transform:translate(-50%,-50%);width:min(92%,420px)}.summary-card{padding:20px;background:#07110ef8;border:1px solid #d0a65e70;border-radius:14px;box-shadow:0 30px 90px #000c}.summary-card small{font-size:7px;letter-spacing:.16em;color:var(--brass)}.summary-card h2{margin:4px 0 13px;font:600 24px Georgia,serif}.summary-card p{font-size:10px;color:var(--muted)}.summary-score{display:flex;justify-content:center;align-items:center;gap:12px}.summary-score span{display:flex;flex-direction:column;font-size:8px;color:var(--muted)}.summary-score b{font:700 28px Georgia,serif;color:var(--ui)}.summary-card button{height:38px;padding:0 15px;border-radius:8px}

/* drawer, modal, toast */
.drawer{position:fixed;z-index:100;right:15px;top:72px;bottom:48px;width:min(390px,calc(100vw - 30px));overflow:hidden;background:#07100ef4;border:1px solid #d0a65e38;border-radius:14px;box-shadow:0 25px 70px #000c;backdrop-filter:blur(16px)}.drawer-head{display:flex;align-items:center;justify-content:space-between;padding:13px 15px;border-bottom:1px solid #ffffff12}.drawer-head h2{margin:0;font:600 17px Georgia,serif}.drawer-head button{background:transparent;color:#d6d9d3;font-size:24px}.log-list{height:calc(100% - 56px);overflow:auto;padding:8px 13px}.log-item{padding:7px 0;border-bottom:1px solid #ffffff0d;font-size:10px;color:#bbc5bf}
.modal-backdrop{position:fixed;inset:0;z-index:150;display:grid;place-items:center;padding:18px;background:#010403d5}.modal{width:min(730px,100%);max-height:90vh;overflow:auto;padding:20px;background:#09130ff8;border:1px solid #d0a65e3d;border-radius:15px;box-shadow:0 35px 100px #000e}.modal h2{margin:0 0 5px;font:600 24px Georgia,serif}.modal p{font-size:11px;color:var(--muted)}.modal-actions{display:flex;justify-content:flex-end;gap:7px;margin-top:15px}.modal-actions button{height:36px;padding:0 14px;border-radius:8px}.rule-columns{columns:2;column-gap:28px}.rule-columns h3{font:600 14px Georgia,serif;break-after:avoid}.rule-columns p,.rule-columns li{font-size:10px;line-height:1.5;color:#bcc6c0}.choice-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin:15px 0}.choice-card{padding:12px;border:1px solid #ffffff16;border-radius:10px;background:#ffffff06}.choice-card h3{margin:0 0 5px;font-size:13px}.choice-card input,.choice-card select{width:100%;margin:5px 0;padding:8px;background:#07110d;color:#fff;border:1px solid #ffffff1d;border-radius:7px}.toast{position:fixed;z-index:220;left:50%;bottom:52px;transform:translateX(-50%);padding:9px 13px;border-radius:9px;background:#08110ef4;border:1px solid #d0a65e66;box-shadow:0 12px 35px #000a;font-size:10px}

/* bottom status */
.statusbar{height:36px;position:fixed;z-index:90;left:0;right:0;bottom:0;display:flex;align-items:center;gap:10px;padding:0 15px;background:#030706f2;border-top:1px solid #d0a65e22;color:#8f9b95;font-size:8px;letter-spacing:.02em}.statusbar i{width:1px;height:13px;background:#8d6b373f}.status-spacer{flex:1}.statusbar #turn-status-footer{color:#d8b36c}

/* motion */
.seat-feedback{position:absolute;z-index:70;left:50%;top:42px;transform:translateX(-50%);padding:6px 9px;border-radius:7px;background:#07100eee;border:1px solid #d0a65e55;color:#e8d5aa;font-size:8px;font-weight:800;letter-spacing:.1em}.card-travel-clone{position:fixed;z-index:999;pointer-events:none;transition:transform .35s cubic-bezier(.2,.8,.2,1),opacity .35s ease}.play-travel-clone{position:fixed;z-index:998;pointer-events:none;transition:transform .28s cubic-bezier(.2,.8,.2,1),opacity .28s ease}
@keyframes hintPulse{0%,100%{filter:brightness(1)}50%{filter:brightness(1.14)}}

/* responsive */
@media(max-width:1180px){
  :root{--card-width:68px;--card-height:101px;--hand-step:43px}.table-menu{width:185px;left:10px}.table-quote{display:none}.coach-dock{right:24px;width:280px}.center{width:min(58vw,660px)}.seat-left{left:7px}.seat-right{right:7px}.score-team{min-width:105px}.brand-word{font-size:22px}
}
@media(max-width:900px){
  .topbar{height:52px;grid-template-columns:1fr auto 1fr;padding:6px 10px}.brand small{display:none}.brand-word{font-size:18px}.scoreboard{height:40px}.score-team{min-width:78px;padding:3px 10px}.score-seal{width:44px;font-size:24px}.table-shell{height:calc(100vh - 88px);padding:9px 8px 8px}.table{width:100%;border-width:10px;border-radius:31px}.table:after{inset:13px;border-radius:22px}.felt-pattern{inset:14px}.table-menu{top:60px;left:8px;width:166px;padding:7px}.menu-brand{display:none}.menu-button{height:34px}.menu-button b{font-size:9px}.menu-button:nth-of-type(4),.menu-button:nth-of-type(5){display:none}.seat-bottom{width:99%;bottom:-1px}.seat-top{top:4px}.seat-left,.seat-right{width:110px}.opponent-hand-side{top:43px;height:180px;width:68px}.opponent-hand-side .card{width:45px;height:67px}.opponent-hand-side .card+.card{margin-top:-55px}.center{top:43%;width:66vw}.coach-dock{right:15px;bottom:129px;width:250px;padding:11px 12px}.coach-copy>b{font-size:14px}.coach-copy p{font-size:9px}.table-actions button{height:36px;min-width:82px;padding:0 12px}.statusbar{height:36px}.compact-actions .icon-ghost:first-child{display:none}
}
@media(max-width:680px){
  :root{--card-width:52px;--card-height:78px;--hand-step:calc((100vw - 66px - var(--card-width))/max(1,(var(--card-count) - 1)))}
  .topbar{grid-template-columns:1fr auto}.brand{display:none}.compact-actions{display:none}.scoreboard{grid-column:1/-1;justify-self:center}.score-team{min-width:72px}.table-shell{padding:4px;height:calc(100vh - 88px)}.table{border-width:7px;border-radius:22px}.table:after{inset:9px;border-radius:16px}.felt-pattern{inset:10px}.table-menu{top:57px;left:7px;width:auto;padding:4px;display:flex;gap:3px;border-radius:9px}.menu-button{width:38px;height:34px;grid-template-columns:1fr;padding:0;display:grid!important;place-items:center;margin:0}.menu-button b,.menu-button i{display:none}.menu-button span{font-size:14px}.seat-left{left:1px;top:45%;width:55px}.seat-right{right:1px;top:45%;width:55px}.seat-left .player-copy,.seat-right .player-copy,.seat-left .relation-tag,.seat-right .relation-tag{display:none}.seat-left .player-badge,.seat-right .player-badge{padding:3px}.seat-left .avatar,.seat-right .avatar{width:31px;height:31px}.opponent-hand-side{top:35px;width:46px;height:146px}.opponent-hand-side .card{width:39px;height:58px}.opponent-hand-side .card+.card{margin-top:-49px}.seat-top{top:3px;width:82%}.opponent-hand-top{height:55px;--card-width:39px;--card-height:58px;--hand-step:13px}.opponent-hand-top .card{width:39px;height:58px}.player-badge{padding:3px 6px 3px 3px}.avatar{width:31px;height:31px}.player-copy b{font-size:9px}.player-copy small{font-size:6px}.relation-tag{display:none}.seat-bottom .player-badge{margin-bottom:2px}.hand{height:87px}.player-hand{width:calc(100vw - 42px);justify-content:flex-start;padding-left:3px}.player-hand .card+.card{margin-left:calc((var(--card-width) - var(--hand-step))*-1)}.card-corner strong{font-size:14px}.card-corner span{font-size:9px}.card-name{display:none}.art-layer{inset:16px 3px 7px 9px}.center{top:41%;width:75vw;gap:5px}.table-pile{min-height:105px}.trick-stage{height:110px}.played-cards .card{--card-width:44px;--card-height:65px}.played-cards .card+.card{margin-left:-22px}.play-label{font-size:6px}.context-panel{width:94%}.decision-ribbon{padding:8px;gap:6px}.decision-ribbon b,.exchange-heading b{font-size:12px}.decision-ribbon span,.exchange-heading span{font-size:7px}.exchange-controller{padding:8px}.exchange-recipients{gap:4px}.exchange-recipient{padding:5px}.recipient-name{font-size:9px}.recipient-card.empty{font-size:6px}.wish-inline{display:block}.wish-ranks{margin-top:6px}.wish-ranks button{height:27px;min-width:27px;font-size:8px}.turn-status{font-size:8px}.table-actions{gap:5px}.table-actions button{height:33px;min-width:72px;padding:0 9px;font-size:9px}.coach-dock{left:50%;right:auto;bottom:94px;transform:translateX(-50%);width:min(92%,360px);padding:8px 10px}.coach-copy p{display:none}.coach-kicker{font-size:7px}.coach-copy>b{font-size:11px}.coach-meta{font-size:6px}.coach-actions{margin-top:6px}.coach-hint,.coach-toggle{height:30px;font-size:8px}.statusbar{padding:0 8px;gap:6px}.statusbar>span:first-child,.statusbar #mode-status,.statusbar i:first-of-type{display:none}.statusbar{font-size:7px}.drawer{top:58px;bottom:42px}.rule-columns{columns:1}.modal{padding:14px}.choice-grid{grid-template-columns:1fr}
}
@media(max-height:520px) and (orientation:landscape){
  .topbar{height:44px}.table-shell{height:calc(100vh - 80px);padding:3px}.table-menu{top:48px}.table{border-width:6px}.seat-bottom{bottom:-10px}.player-badge{transform:scale(.82);transform-origin:center bottom}.seat-top .player-badge{transform-origin:center top}.hand{height:70px}.player-hand .card{--card-width:46px;--card-height:69px}.center{top:42%;width:60vw}.table-pile{min-height:80px}.trick-stage{height:86px}.coach-dock{right:8px;left:auto;bottom:72px;transform:none;width:230px}.coach-copy p{display:none}.table-actions button{height:30px}.statusbar{height:36px}
}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}.card,.card-travel-clone,.play-travel-clone{transition:none!important}.card.hinted{animation:none!important}}
