@font-face{font-family:Poiret One;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/poiret-one-latin-400-normal-DaD3Ke7k.woff2) format("woff2"),url(/assets/poiret-one-latin-400-normal-DeDrWLAw.woff) format("woff")}@font-face{font-family:Crimson Pro;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/crimson-pro-latin-400-normal-B4SlG4wx.woff2) format("woff2"),url(/assets/crimson-pro-latin-400-normal-BzhyrSeK.woff) format("woff")}@font-face{font-family:Crimson Pro;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/crimson-pro-latin-600-normal-vJ8oEdKU.woff2) format("woff2"),url(/assets/crimson-pro-latin-600-normal-Ca4fy0Cf.woff) format("woff")}@font-face{font-family:Besley;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/besley-latin-400-normal-d1-UaMAF.woff2) format("woff2"),url(/assets/besley-latin-400-normal-CMVlM_Y0.woff) format("woff")}@font-face{font-family:Besley;font-style:italic;font-display:swap;font-weight:400;src:url(/assets/besley-latin-400-italic-DiWTJ-1-.woff2) format("woff2"),url(/assets/besley-latin-400-italic-D8TYh6B8.woff) format("woff")}@font-face{font-family:Besley;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/besley-latin-600-normal-Cb-MmeJJ.woff2) format("woff2"),url(/assets/besley-latin-600-normal-bp7R07FE.woff) format("woff")}@font-face{font-family:Besley;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/besley-latin-700-normal-DgyNedO8.woff2) format("woff2"),url(/assets/besley-latin-700-normal-DzZvSNu1.woff) format("woff")}@font-face{font-family:Besley;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/besley-latin-800-normal-4ahGTYhR.woff2) format("woff2"),url(/assets/besley-latin-800-normal-BDWwb7rN.woff) format("woff")}@font-face{font-family:Josefin Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/josefin-sans-latin-400-normal-Bw73c5y2.woff2) format("woff2"),url(/assets/josefin-sans-latin-400-normal-OLNf33Pm.woff) format("woff")}@font-face{font-family:Josefin Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/josefin-sans-latin-600-normal-DXjG1Gv0.woff2) format("woff2"),url(/assets/josefin-sans-latin-600-normal-CcMFZ0n5.woff) format("woff")}:root{--ink: #141414;--paper: #fcfbf8;--panel: #ffffff;--surface: #f1efe9;--surface-line: #d8d5ce;--line: #d8d5ce;--line-quiet: #e4e1d8;--line-dashed: #b9b4a9;--muted: #6e6a62;--verdigris: #6f8f68;--chart-track: #edebe4;--suit-s: #141414;--suit-h: #c22f21;--suit-d: #9e6a00;--suit-c: #00775a;--text-body: var(--ink);--text-muted: var(--muted);--surface-page: var(--paper);--surface-card: var(--panel);--surface-inset: var(--surface);--accent: #c22f21;--positive: #00775a;--negative: #c22f21;--border-structural: 1px solid var(--ink);--border-quiet: 1px solid var(--line);--border-hairline: 1px solid var(--line-quiet);--border-sealed: 1px dashed var(--line-dashed);--btn-primary-bg: var(--ink);--btn-primary-fg: #ffffff;--card-shadow: 0 1px 2px rgba(0, 0, 0, .14);--ticket-shadow: 3px 3px 0 rgba(20, 20, 20, .12)}:root{--font-display: "Poiret One", cursive;--font-body: "Crimson Pro", serif;--font-label: "Besley", serif;--font-stamp: "Josefin Sans", sans-serif;--text-wordmark: 17px;--text-title: 21px;--text-heading: 17px;--text-body-size: 16px;--text-caption: 13.5px;--text-label: 10px;--track-wordmark: .14em;--track-label: .2em;--track-wide: .3em}:root{--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--radius-panel: 0;--radius-btn: 2px;--radius-chip: 3px;--radius-card: 4px;--screen-w: 390px}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{margin:0;min-height:100%}body{font-family:var(--font-body);font-size:var(--text-body-size);line-height:1.5;color:var(--text-body);background:var(--surface-page)}a{color:var(--ink)}a:hover{color:var(--accent)}button{font:inherit;color:inherit;background:none;border:none;padding:0;cursor:pointer;text-align:inherit}button:disabled{cursor:default}input{font:inherit}.shell{max-width:430px;margin:0 auto;min-height:100dvh;display:flex;flex-direction:column;background:var(--paper)}@media (min-width: 640px){.shell{border-left:var(--border-hairline);border-right:var(--border-hairline)}}.num{font-variant-numeric:tabular-nums}.label-caps{font-family:var(--font-label);font-weight:700;font-size:var(--text-label);letter-spacing:var(--track-label);text-transform:uppercase;color:var(--muted)}.positive{color:var(--positive)}.negative{color:var(--negative)}.loading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:64px 16px;animation:nb-pulse 1.4s ease-in-out infinite}@keyframes nb-pulse{0%,to{opacity:1}50%{opacity:.35}}.notice-error{display:flex;flex-direction:column;gap:8px;margin:24px 16px;padding:12px 14px 12px 24px;background:var(--panel);border:1px solid var(--negative);position:relative;font-size:14.5px}.notice-error:before{content:"";position:absolute;left:7px;top:0;bottom:0;border-left:1.5px dashed var(--negative)}.notice{text-align:center;font-style:italic;font-size:13.5px;color:var(--muted);padding:12px 16px}.empty-note{text-align:center;font-style:italic;font-size:13.5px;color:var(--muted);padding:20px 16px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.splash{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;min-height:100dvh;overflow:hidden;background:var(--paper);padding-bottom:130px}.splash-auto{position:absolute;top:0;right:0;bottom:0;left:0;z-index:30;min-height:0;cursor:pointer;animation:nbSplashFade .6s ease 2.5s forwards}.splash-stack{display:flex;flex-direction:column;align-items:center;gap:24px;padding:0 24px;text-align:center}.splash-auto .splash-stack{animation:nbSplashOut .55s ease-in 2.1s forwards}.splash-word{font-family:var(--font-display);font-size:32px;letter-spacing:.16em;color:var(--ink);animation:nbWordIn .9s ease-out both}.splash-sub{font-family:var(--font-label);font-size:10.5px;letter-spacing:.42em;color:var(--ink);animation:nbSubIn .6s ease-out .5s both}.splash-cta{width:min(280px,100%);display:flex;flex-direction:column;gap:10px;animation:nbSubIn .6s ease-out .8s both}.splash-pitch{max-width:300px;margin:0;font-size:14.5px;line-height:1.45;color:var(--muted);animation:nbSubIn .6s ease-out 1.1s both}.splash-bridge{position:absolute;bottom:0;left:0;right:0;animation:nbBridgeRise .9s cubic-bezier(.2,.7,.2,1) both}.splash-auto .splash-bridge{animation:nbBridgeRise .9s cubic-bezier(.2,.7,.2,1) both,nbBridgeOut .6s ease-in 2.1s forwards}.splash-bridge img{display:block;width:100%;height:146px;object-fit:cover;object-position:bottom}@keyframes nbWordIn{0%{opacity:0;letter-spacing:.34em}to{opacity:1;letter-spacing:.16em}}@keyframes nbSubIn{0%{opacity:0}to{opacity:1}}@keyframes nbBridgeRise{0%{transform:translateY(150px)}to{transform:translateY(0)}}@keyframes nbSplashOut{to{opacity:0;transform:translateY(-26px)}}@keyframes nbBridgeOut{to{transform:translateY(170px)}}@keyframes nbSplashFade{to{opacity:0;visibility:hidden}}@media (prefers-reduced-motion: reduce){.splash,.splash *{animation-duration:.01ms!important;animation-delay:.01ms!important}}.auth-screen{flex:1;min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:24px}.auth-title{font-family:var(--font-body);font-weight:600;font-size:24px;margin:28px 0 0}.auth-copy{max-width:320px;margin:10px 0 0;font-size:14.5px;line-height:1.45;color:var(--muted)}.auth-actions{width:min(280px,100%);display:flex;flex-direction:column;gap:10px;margin-top:22px;text-align:left}.ds-btn{display:block;width:100%;text-align:center;font-family:var(--font-label);font-weight:800;font-size:15px;letter-spacing:.06em;border-radius:var(--radius-btn);background:var(--btn-primary-bg);color:var(--btn-primary-fg);padding:13px;text-decoration:none;-webkit-user-select:none;user-select:none}a.ds-btn:hover{color:var(--btn-primary-fg)}.ds-btn:disabled{opacity:.4}.ds-btn-secondary{background:var(--panel);color:var(--ink);font-weight:700;font-size:13px;padding:11px;border:1px solid var(--ink)}a.ds-btn-secondary:hover{color:var(--ink)}.chip{display:inline-block;border:1px solid var(--ink);color:var(--ink);font-family:var(--font-label);font-weight:700;font-size:11px;padding:3px 8px;border-radius:var(--radius-chip);white-space:nowrap}.chip-quiet{border-color:var(--line);color:var(--muted);font-weight:600}.chip-colored{border:1.5px solid var(--chip-color);color:var(--chip-color);font-weight:800;letter-spacing:.1em;font-size:10.5px}.chip.chip-gf{border-color:var(--accent);color:var(--accent)}.ds-input{display:flex;flex-direction:column;gap:6px}.ds-input input{padding:12px;border:1px solid var(--ink);border-radius:var(--radius-btn);background:var(--panel);font-size:16px;font-family:var(--font-body);color:var(--ink)}.ds-input input:focus{outline:2px solid var(--ink);outline-offset:1px}.ds-input-error{color:var(--negative);font-size:13.5px}.sheet-layer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20}.sheet-scrim{position:absolute;top:0;right:0;bottom:0;left:0;background:#14141457}.sheet{position:absolute;left:0;right:0;bottom:0;max-width:430px;margin:0 auto;background:var(--panel);border-top:2px solid var(--ink);padding:10px 16px 18px;max-height:80dvh;overflow-y:auto}.sheet-grip{width:40px;height:4px;background:var(--line);border-radius:2px;margin:0 auto 12px}.sheet-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.sheet-title{font-family:var(--font-label);font-weight:800;font-size:19px;color:var(--ink)}.sheet-close{font-family:var(--font-label);font-weight:700;font-size:16px;color:var(--muted);padding:4px 8px;margin:-4px -8px}.sheet-body{font-family:var(--font-body);color:var(--ink)}.toast{display:flex;align-items:center;gap:12px;background:var(--panel);border:1.5px solid var(--ink);box-shadow:var(--ticket-shadow);padding:10px 14px;position:relative}.toast:before{content:"";position:absolute;left:7px;top:0;bottom:0;border-left:1.5px dashed var(--ink)}.toast-body{font-size:14.5px;color:var(--ink);padding-left:8px;flex:1}.perf-panel{border:1px solid var(--ink);background:var(--panel);position:relative;padding:12px 14px 12px 20px}.perf-panel:before{content:"";position:absolute;left:7px;top:0;bottom:0;border-left:1.5px dashed var(--ink)}.perf-panel-dashed{border:1px dashed var(--line-dashed);color:var(--muted)}.perf-panel-dashed:before{border-left-color:var(--line-dashed)}.perf-panel-heading{margin-bottom:8px}.ink-stamp{display:inline-block;border:2px solid var(--stamp-color, var(--ink));border-radius:50%;padding:4px 11px;transform:rotate(var(--stamp-rotate, -5deg));font-family:var(--font-stamp);font-weight:600;font-size:10px;letter-spacing:.22em;color:var(--stamp-color, var(--ink));white-space:nowrap}.ink-stamp-fade-right{-webkit-mask-image:linear-gradient(105deg,#000 50%,rgba(0,0,0,.45) 100%);mask-image:linear-gradient(105deg,#000 50%,#00000073)}.ink-stamp-fade-left{-webkit-mask-image:linear-gradient(75deg,rgba(0,0,0,.55) 0%,#000 45%);mask-image:linear-gradient(75deg,#0000008c,#000 45%)}.postmark{display:flex;align-items:center;transform:rotate(-4deg);-webkit-mask-image:linear-gradient(100deg,#000 50%,rgba(0,0,0,.4) 100%);mask-image:linear-gradient(100deg,#000 50%,#0006)}.postmark-waves{margin-left:-8px}.flipdigits{display:flex;gap:3px}.flipdigit{background:var(--ink);color:#fff;font-family:var(--font-label);font-weight:800;display:flex;align-items:center;justify-content:center;border-radius:3px;position:relative;overflow:hidden}.flipdigit-seam{position:absolute;left:0;right:0;top:50%;height:1.5px;background:#ffffff59}.flipdigit-suffix{background:var(--panel);color:var(--ink);border:2px solid var(--ink)}.stargrade{letter-spacing:2px;color:var(--ink);white-space:nowrap}.stargrade-rest{color:var(--line)}.stargrade-x{color:var(--negative);font-weight:700}.appheader,.screenheader{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 16px;border-bottom:1px solid var(--ink);background:var(--paper)}.appheader-brand{display:flex;align-items:center;gap:9px;text-decoration:none}.appheader-brand:hover{color:var(--ink)}.wordmark{font-family:var(--font-display);font-size:var(--text-wordmark);letter-spacing:var(--track-wordmark);color:var(--ink)}.appheader-context{font-family:var(--font-label);font-size:8.5px;letter-spacing:var(--track-wide);color:var(--muted);text-align:right}.screenheader{padding:12px 16px}.screenheader-lead{display:flex;align-items:baseline;gap:10px}.screenheader-back{font-family:var(--font-label);font-weight:700;font-size:18px;padding:8px 12px;margin:-8px -4px -8px -12px}.screenheader-title{font-family:var(--font-label);font-weight:700;font-size:13.5px;color:var(--ink)}.screenheader-caption{font-size:12.5px;color:var(--muted)}.tabbar{display:flex;border-top:1px solid var(--ink);background:var(--paper);margin-top:auto;position:sticky;bottom:0}.tabbar a{flex:1;padding:15px 0;text-align:center;font-family:var(--font-label);font-weight:700;font-size:9.5px;letter-spacing:.16em;color:var(--muted);text-decoration:none}.tabbar a.tab-active{color:var(--ink);box-shadow:inset 0 3px 0 var(--ink)}.sparkline-plot{position:relative}.sparkline-hits{position:absolute;top:0;right:0;bottom:0;left:0;display:flex}.sparkline-hits button{flex:1;opacity:0}.sparkline-captions{display:flex;justify-content:space-between;gap:8px;font-family:var(--font-label);font-size:9.5px;color:var(--muted);margin-top:4px}.sparkline-ref-label{color:var(--accent)}.sparkline-detail{font-size:12.5px;text-align:center;margin-top:6px}.pctbar{display:inline-block;width:52px;height:6px;background:var(--chart-track);position:relative;vertical-align:middle}.pctbar-fill{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--ink)}.hcp-badge{display:inline-block;background:var(--ink);color:#fff;font-family:var(--font-label);font-weight:800;font-size:12px;padding:2px 9px;border-radius:3px;white-space:nowrap}:root{--card-h: clamp(56px, 16.9vw, 66px);--card-w: calc(var(--card-h) * 46 / 66)}.pcard{width:var(--card-w);height:var(--card-h);background:#fff;border:1px solid var(--line-dashed);border-radius:var(--radius-card);box-shadow:var(--card-shadow);padding:3px 0 0 5px;font-family:var(--font-label);font-weight:800;flex:none}.pcard .rank{font-size:calc(var(--card-h) * 15 / 66);line-height:1}.pcard .rank.ten{letter-spacing:-.09em}.pcard .suit{font-size:calc(var(--card-h) * 14 / 66);line-height:1.2}.pcard.small{width:calc(var(--card-w) * .8);height:calc(var(--card-h) * .8)}.pcard.small .rank{font-size:calc(var(--card-h) * 12 / 66)}.pcard.small .suit{font-size:calc(var(--card-h) * 11 / 66)}.pcard.selected{border:2px solid var(--ink);box-shadow:0 3px 6px #0003}.pcard.suit-s{color:var(--suit-s)}.pcard.suit-h{color:var(--suit-h)}.pcard.suit-d{color:var(--suit-d)}.pcard.suit-c{color:var(--suit-c)}.pcard.dimmed .rank,.pcard.dimmed .suit{opacity:.4}.pcard-placeholder{width:var(--card-w);height:var(--card-h);border:1.5px dashed var(--line-dashed);border-radius:3px;flex:none}.pcard-placeholder.small{width:calc(var(--card-w) * .8);height:calc(var(--card-h) * .8)}.suit-s{color:var(--suit-s)}.suit-h{color:var(--suit-h)}.suit-d{color:var(--suit-d)}.suit-c{color:var(--suit-c)}.suit-nt{color:var(--ink)}.handfan{display:flex;justify-content:center;align-items:flex-end;padding:14px 8px 2px}.handfan .cardbtn{padding:0;margin-left:calc(var(--card-w) * -.56);transition:transform .12s ease;position:relative;isolation:isolate}.handfan .cardbtn:first-child{margin-left:0}.handfan .cardbtn.suitgap{margin-left:calc(var(--card-w) * -.43)}.handfan .cardbtn.selected{transform:translateY(-12px)}.handfan.handfan-sm .cardbtn{margin-left:calc(var(--card-w) * -.62)}.handfan.handfan-sm .cardbtn:first-child{margin-left:0}.handfan.handfan-sm .cardbtn.suitgap{margin-left:calc(var(--card-w) * -.5)}.auction{margin:12px 12px 0;border:1px solid var(--ink);padding:2px;background:var(--paper)}.auction-inner{border:1px solid var(--ink);padding:10px 12px 12px}.auction-scroll{max-height:216px;overflow-y:auto}.auction table{width:100%;border-collapse:collapse;text-align:center}.auction th{font-family:var(--font-label);font-weight:700;font-size:10.5px;letter-spacing:.14em;color:var(--muted);padding-bottom:6px;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--panel)}.auction th.auction-me{color:var(--ink)}.auction-inner{background:var(--panel)}.auction td{padding:5px 0 2px;font-size:15px;font-weight:600}.auction td button{padding:2px 5px;min-height:30px}.auction td button.has-meaning{border-bottom:2px dotted var(--ink)}.auction-pending{display:inline-block;outline:1.5px solid var(--ink);outline-offset:2px;padding:0 5px;font-weight:800}.auction-hint{font-size:10.5px;color:var(--muted);text-align:center;margin-top:9px;letter-spacing:.06em}.meaning-panel{border:1px solid var(--ink);background:var(--panel);position:relative;padding:11px 14px 12px 20px;margin:10px 12px 0;font-size:13.5px}.meaning-panel:before{content:"";position:absolute;left:7px;top:0;bottom:0;border-left:1.5px dashed var(--ink)}.meaning-panel-placeholder{border-color:var(--line);color:var(--muted)}.meaning-panel-placeholder:before{border-left-color:var(--line-dashed)}.mtitle{font-weight:800;font-size:14.5px;font-family:var(--font-body)}.meaning-chips{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 7px}.meaning-body{line-height:1.5}.meaning-caveat{font-size:12.5px;color:var(--muted);font-style:italic;margin-top:8px}.bidbox-wrap{padding:12px 12px 16px}.bidbox .grid{display:grid;grid-template-columns:repeat(5,1fr);gap:5px}.bidbox .grid+.grid{margin-top:5px}.bidbox button.bid{border:1px solid var(--ink);background:var(--panel);min-height:44px;display:flex;align-items:center;justify-content:center;font-family:var(--font-label);font-weight:700;font-size:16px;border-radius:var(--radius-btn)}.bidbox button.bid:disabled{border-color:var(--line);opacity:.25}.bidbox button.bid.selected{background:var(--ink);border-color:var(--ink);color:#fff;font-weight:800}.bidbox button.bid.selected .suit-s,.bidbox button.bid.selected .suit-nt,.ds-btn.btn-primary .suit-s,.ds-btn.btn-primary .suit-nt{color:#fff}.bidbox button.bid.selected .suit-h,.ds-btn.btn-primary .suit-h{color:#ff9d94}.bidbox button.bid.selected .suit-d,.ds-btn.btn-primary .suit-d{color:#ffd34d}.bidbox button.bid.selected .suit-c,.ds-btn.btn-primary .suit-c{color:#8fe3a1}.bidbox-fold{display:block;width:100%;text-align:center;font-family:var(--font-label);font-size:11px;color:var(--muted);letter-spacing:.08em;padding:8px 0 4px}.bidbox .callrow{display:grid;grid-template-columns:2fr 1fr 1fr;gap:5px;margin-top:5px}.bidbox .callrow button.bid{font-size:15px}.bidbox button.bid.bid-x:not(.selected):not(:disabled){color:var(--suit-h)}.confirm-row{margin-top:12px}.grade-toast{margin:10px 12px 0}.grade-toast.excellent{border-color:var(--positive)}.grade-toast.excellent:before{border-left-color:var(--positive)}.grade-toast.fair{border-color:var(--suit-d)}.grade-toast.fair:before{border-left-color:var(--suit-d)}.grade-toast.poor{border-color:var(--negative)}.grade-toast.poor:before{border-left-color:var(--negative)}.trick{margin:4px 0 0;background:var(--surface);position:relative;height:230px}.seatpos{position:absolute;display:flex;flex-direction:column;align-items:center;gap:3px}.seatpos.n{top:10px;left:50%;transform:translate(-50%)}.seatpos.s{bottom:10px;left:50%;transform:translate(-50%);flex-direction:column-reverse}.seatpos.e{right:14px;top:50%;transform:translateY(-50%)}.seatpos.w{left:14px;top:50%;transform:translateY(-50%)}.seat-label{font-family:var(--font-label);font-size:10px;font-weight:700;letter-spacing:.12em;color:var(--muted);white-space:nowrap}.trick-slot{width:calc(var(--card-w) * .8);height:calc(var(--card-h) * .8);display:flex;align-items:center;justify-content:center}.pcard-flight{position:fixed;margin:0;z-index:90;pointer-events:none;transform-origin:top left;will-change:transform;box-shadow:0 3px 8px #0000002e}.tricks-count{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center}.tricks-cells{display:flex;gap:2px;justify-content:center}.tricks-cell{width:22px;height:32px;background:var(--panel);border:1.5px solid var(--ink);font-family:var(--font-label);font-weight:800;font-size:15px;display:flex;align-items:center;justify-content:center;border-radius:2px}.tricks-cell.tricks-decl{background:var(--ink);color:#fff;border:none;font-size:17px}.tricks-cell.stamp{animation:stamp-pop .42s cubic-bezier(.3,1.6,.4,1)}@keyframes stamp-pop{0%{transform:scale(1) rotate(0)}35%{transform:scale(1.45) rotate(-9deg)}to{transform:scale(1) rotate(0)}}.tricks-caption{font-family:var(--font-label);font-size:9.5px;font-weight:700;letter-spacing:.1em;color:var(--muted);margin-top:4px}.play-row{display:flex;align-items:stretch;gap:0}.play-row .trick{flex:1;min-width:0;height:auto;min-height:230px}.dummy-rail{width:96px;flex-shrink:0;display:flex;flex-direction:column;gap:6px;padding:10px 10px 10px 14px;background:var(--panel)}.dummy-rail-left{padding:10px 14px 10px 10px;order:-1}.dummy-rail-head{display:flex;flex-direction:column;align-items:center;gap:3px;text-align:center;padding-bottom:5px;border-bottom:1px dashed var(--line-quiet)}.dummy-rail-seat{font-family:var(--font-label);font-weight:700;font-size:10.5px;letter-spacing:.1em;color:var(--muted)}.dummy-rail-role{font-family:var(--font-label);font-weight:700;font-size:9px;letter-spacing:.12em;color:var(--muted)}.dummy-rail-row{display:flex;align-items:baseline;gap:5px;font-family:var(--font-label);font-weight:700;font-size:12px}.dummy-rail-ranks{letter-spacing:.03em}.deal-diagram{margin:12px 12px 0;border:1px solid var(--ink);background:var(--panel);padding:14px}.deal-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:10px}.deal-conditions{font-size:11px;color:var(--muted)}.deal-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:4px;font-size:11.5px;line-height:1.55}.deal-hand{border:1px solid var(--line);padding:6px 8px}.deal-hand.deal-mine{border:1.5px solid var(--ink)}.deal-hand-label{font-family:var(--font-label);font-size:10px;letter-spacing:.1em;color:var(--muted)}.deal-mine .deal-hand-label{color:var(--ink)}.deal-compass{display:flex;align-items:center;justify-content:center}.board-row{display:flex;align-items:stretch;border:1px solid var(--ink);background:var(--panel);color:var(--ink);text-decoration:none}a.board-row:hover{color:var(--ink)}.board-row-live{border-width:1.5px;box-shadow:var(--ticket-shadow)}.board-row-sealed{border:1px dashed var(--line-dashed);background:transparent;color:var(--muted)}.board-row-counter{width:74px;border-right:2px dashed var(--ink);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:10px 0;flex:none}.board-row-sealed .board-row-counter{border-right-color:var(--line-dashed)}.board-row-counter-label{font-family:var(--font-label);font-weight:700;font-size:9px;letter-spacing:.18em;color:var(--muted)}.board-row-counter-no{font-family:var(--font-label);font-weight:800;font-size:22px}.board-row-main{flex:1;padding:10px 12px;display:flex;align-items:center;gap:10px;min-width:0}.board-row-text{flex:1;min-width:0}.board-row-title{font-weight:600;font-size:15px}.board-row-sub{font-size:12.5px;color:var(--muted)}.board-row-sealed-text{font-size:14px;font-style:italic;flex:1}.home{display:flex;flex-direction:column;flex:1}.home-greeting{padding:20px 16px 0}.home-hello{font-weight:600;font-size:21px}.home-sub{font-size:14.5px;color:var(--muted);margin-top:2px}.home-current{margin:16px 16px 0;background:var(--surface);border:1px solid var(--surface-line);padding:16px 14px;display:flex;flex-direction:column;gap:12px}.home-current-row{display:flex;align-items:center;gap:12px}.home-current-text{flex:1;font-size:14.5px;line-height:1.45}.home-current-sub{color:var(--muted);font-size:13px}.home-gate{padding:14px 16px 0}.home-tolls{padding:20px 16px 24px}.home-tolls .tolls-panel{margin-top:10px;padding:2px 14px 2px 20px}.tolls-row{display:grid;grid-template-columns:26px 1fr auto auto;gap:0 12px;align-items:center;font-size:14.5px;text-decoration:none;color:var(--ink)}.tolls-row>*{padding:10px 0;border-bottom:1px solid var(--line-quiet)}.tolls-row:last-child>*{border-bottom:none}.tolls-no{font-family:var(--font-label);font-size:12px}.tolls-rank{font-family:var(--font-label);font-weight:700;font-size:11px;text-align:right}.tolls-rank.quiet{color:var(--muted)}.home-tolls-note{font-size:12.5px;color:var(--muted);margin-top:10px;font-style:italic;text-align:center}.rankings{display:flex;flex-direction:column;flex:1;padding-bottom:24px}.rank-head{padding:18px 16px 0;display:flex;align-items:baseline;justify-content:space-between;gap:12px}.rank-title{font-weight:600;font-size:19px}.rankings .rank-panel{margin:12px 16px 0;padding:6px 14px 6px 20px}.rank-row{display:grid;grid-template-columns:26px 1fr auto auto;gap:0 12px;align-items:center;font-size:14.5px;text-decoration:none;color:var(--ink)}.rank-row>*{padding:9px 0;border-bottom:1px solid var(--line-quiet)}.rank-row:last-child>*{border-bottom:none}.rank-row-you{background:var(--surface);margin:0 -12px 0 -6px;padding-left:6px;padding-right:12px}.rank-row-you .rank-name{font-weight:600}.rank-no{font-family:var(--font-label);font-size:12px}.rank-move{font-family:var(--font-label);font-weight:700;font-size:11px;text-align:right;min-width:26px}.rank-move.quiet{color:var(--muted)}.rank-foot{margin:12px 16px 0;background:var(--surface);border:1px solid var(--surface-line);padding:12px 14px;display:flex;align-items:center;gap:12px}.rank-foot-text{font-size:13.5px;line-height:1.45}.rank-foot-quiet{color:var(--muted)}.stats-page{display:flex;flex-direction:column;flex:1;padding-bottom:24px}.stats-hero{display:flex;flex-direction:column;align-items:center;padding:20px 16px 0}.stats-who{display:flex;align-items:center;gap:12px;margin-bottom:16px}.stats-avatar{width:44px;height:44px;border-radius:50%;border:1px solid var(--ink);object-fit:cover}.stats-avatar-fallback{display:flex;align-items:center;justify-content:center;font-family:var(--font-label);font-weight:700;font-size:18px;background:var(--surface)}.stats-handle{font-weight:600;font-size:19px}.stats-since{font-size:13px;color:var(--muted)}.stats-rating-line{display:flex;align-items:baseline;gap:8px;margin-top:8px}.stats-rating-label{letter-spacing:.18em}.stats-delta{font-family:var(--font-label);font-weight:700;font-size:12px}.chart-panel{margin:16px 16px 0;border:1px solid var(--ink);background:var(--panel);padding:14px}.chart-panel+.chart-panel{margin-top:12px}.chart-panel-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:10px}.chart-panel-head .label-caps{letter-spacing:.16em}.chart-panel-figure{font-family:var(--font-label);font-weight:800;font-size:14px;white-space:nowrap}.stats-page .stats-bidding{margin:12px 16px 0}.stats-grades{display:flex;flex-direction:column;gap:7px}.stats-grade-row{display:grid;grid-template-columns:52px 1fr auto;gap:12px;align-items:center;font-size:13.5px}.stats-grade-row .pctbar{width:100%;height:8px}.stats-tiles{margin:12px 16px 0;display:grid;grid-template-columns:1fr 1fr;gap:10px}.stat-tile{border:1px solid var(--ink);background:var(--panel);padding:12px 14px}.stat-tile-label{font-size:9.5px;letter-spacing:.16em}.stat-tile-value{font-family:var(--font-label);font-weight:800;font-size:21px;margin-top:4px}.stat-tile-sub{font-size:12px;color:var(--muted)}.stats-page .stats-versus{margin:12px 16px 0}.stats-versus-row{display:grid;grid-template-columns:52px 64px 1fr;gap:12px;align-items:center;font-size:13.5px;padding:4px 0}.stats-versus-note{color:var(--muted);font-size:12.5px}.stats-footer{margin:20px 16px 0}.tourney-page{display:flex;flex-direction:column;flex:1;padding-bottom:18px}.tourney-sheet{padding:14px 16px 0;display:flex;flex-direction:column;gap:10px}.tourney-page .tourney-field{margin:14px 16px 0}.tourney-field-row{display:grid;grid-template-columns:22px 1fr auto;gap:6px 12px;font-size:14px;align-items:baseline;padding:3px 0}.tourney-field-rank{font-family:var(--font-label);font-size:12px}.tourney-field-you{background:var(--surface);margin:0 -12px;padding-left:12px;padding-right:12px}.tourney-field-you .tourney-field-name{font-weight:600}.tourney-field-name a{text-decoration:none}.tourney-field-progress{color:var(--muted);font-size:12.5px}.tourney-actions{padding:14px 16px 0;margin-top:auto;display:flex;flex-direction:column;gap:8px}.tourney-result-hero{display:flex;flex-direction:column;align-items:center;padding:22px 16px 0}.tourney-pct{margin-top:16px}.tourney-rank{letter-spacing:.16em;font-size:11px;margin-top:8px}.tourney-rating{display:flex;align-items:baseline;gap:8px;margin-top:10px}.tourney-rating .label-caps{letter-spacing:.18em}.tourney-rating b{font-family:var(--font-label);font-weight:800;font-size:16px}.tourney-rating-delta{font-family:var(--font-label);font-weight:700;font-size:13px}.tourney-page .tourney-boards{margin:16px 16px 0}.tourney-board-line{display:grid;grid-template-columns:18px 1fr auto auto;gap:7px 12px;font-size:13.5px;align-items:center;padding:2px 0}.tourney-board-no{font-family:var(--font-label);font-size:12px}.tourney-board-score{color:var(--muted)}.tourney-board-pct{display:flex;align-items:center;gap:6px}.board-page{display:flex;flex-direction:column;flex:1;padding-bottom:16px}.board-head{display:flex;align-items:center;gap:10px;padding:10px 16px;border-bottom:1px solid var(--line)}.board-head .ticket-stub{flex-shrink:0}.board-head-mid{flex:1;min-width:0}.board-head-name{font-weight:700;font-size:13.5px;font-family:var(--font-label);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.board-head-sub{font-size:12px;color:var(--muted)}.board-head-sub b{color:var(--ink);font-family:var(--font-label)}.board-vul{font-weight:800;letter-spacing:.12em;white-space:nowrap}.board-fan{padding:10px 8px 0}.seat-line{display:flex;justify-content:center;align-items:center;gap:8px;padding:8px 16px 0;font-family:var(--font-label);font-weight:700;font-size:11px;letter-spacing:.14em;color:var(--muted)}.seat-line-active{color:var(--ink)}.board-follow{text-align:center;font-size:10.5px;color:var(--muted);letter-spacing:.06em;font-family:var(--font-label);padding:6px 16px 0}.board-hint{text-align:center;font-style:italic;font-size:13px;color:var(--muted);padding:8px 16px 4px}.board-page .flip-note{margin:10px 16px 0}.board-page .toast,.board-page .grade-toast{margin-left:16px;margin-right:16px}.board-page .meaning-panel{margin:10px 12px 0}.board-page .auction{margin:12px 12px 0}.board-page .trick,.board-page .play-row{margin:8px 0 0}.board-page .play-row .trick{margin:0}.claim-banner{margin:10px 16px 0;background:var(--panel);border:1.5px solid var(--ink);box-shadow:var(--ticket-shadow);padding:12px 16px;text-align:center;position:relative}.claim-banner:before{content:"";position:absolute;left:7px;top:0;bottom:0;border-left:1.5px dashed var(--ink)}.claim-banner-side{font-family:var(--font-label);font-weight:800;font-size:15.5px;letter-spacing:.05em;color:var(--ink)}.claim-banner-sub{margin-top:4px;font-style:italic;font-size:12.5px;color:var(--muted)}@media (prefers-reduced-motion: no-preference){.claim-banner{opacity:0;animation:claim-banner-in .5s cubic-bezier(.2,.7,.2,1) forwards}}@keyframes claim-banner-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.board-actions{padding:14px 12px 4px;margin-top:auto;display:flex;flex-direction:column;gap:8px}.result-hero{text-align:center;padding:20px 16px 0}.result-contract{font-family:var(--font-label);font-weight:800;font-size:23px}.result-score{font-size:13.5px;color:var(--muted);margin-top:2px}.pct-big{display:flex;justify-content:center;margin-top:14px}.pct-big.low .flipdigit{background:var(--negative)}.result-sub{letter-spacing:.16em;font-size:11px;margin-top:8px}.result .result-field{margin:14px 12px 0}.fieldtable{width:100%;border-collapse:collapse;font-size:13px}.fieldtable td{padding:3px 0;vertical-align:baseline}.fieldtable-name{font-weight:400}.fieldtable tr.me .fieldtable-name{font-weight:800}.fieldtable tr.me td{background:var(--surface)}.fieldtable tr.me td:first-child{padding-left:6px}.fieldtable-contract{color:var(--muted);padding-right:14px}.fieldtable-pct{text-align:right;white-space:nowrap}.result-bidding{margin:12px 12px 0;border:1px solid var(--ink);background:var(--panel);padding:14px}.result-bidding-head{letter-spacing:.16em;font-size:11px;margin-bottom:8px}.result-bid-row{display:flex;align-items:baseline;gap:10px;font-size:13px;padding:3.5px 0}.result-bid-call{min-width:38px;font-family:var(--font-label)}.receipt{display:flex;flex-direction:column;flex:1}.receipt-panel{margin:18px 12px 0}.receipt-row{padding-top:7px}.receipt-row-main{display:flex;align-items:baseline;gap:8px}.receipt-label{color:var(--ink)}.receipt-detail{font-size:12px;color:var(--muted)}.receipt-amount{margin-left:auto;font-family:var(--font-label);font-weight:800;font-size:15px}.receipt-caption{font-style:italic;font-size:13px;line-height:1.4;color:var(--muted);margin-top:1px}.receipt-rule{border-top:1.5px dashed var(--ink);margin:12px -14px 2px -20px}.receipt-total .receipt-label{font-size:11px}.receipt-total .receipt-amount{font-size:18px}.receipt-postmark{display:flex;justify-content:center;margin-top:18px}.receipt-link{display:inline-block;margin-top:12px;padding:6px 4px;border:0;background:none;cursor:pointer;text-decoration:underline;text-underline-offset:3px}@media (prefers-reduced-motion: no-preference){.receipt-row,.receipt-rule,.receipt-postmark{opacity:0;animation:receipt-print .5s cubic-bezier(.2,.7,.2,1) forwards;animation-delay:calc(.25s + var(--i, 0) * .4s)}.receipt-postmark{animation-name:receipt-stamp;animation-duration:.45s}}@keyframes receipt-print{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes receipt-stamp{0%{opacity:0;transform:scale(1.55)}65%{opacity:1;transform:scale(.96)}to{opacity:1;transform:scale(1)}}
