/* RAFAS UI contract v1. Opt-in classes; no game-engine selectors. */
:root{--rf-bg:#06121c;--rf-panel:#0c2232;--rf-panel-raised:#123044;--rf-text:#f0f6fa;--rf-muted:#a8bfcd;--rf-line:#335266;--rf-accent:#83e2d1;--rf-focus:#f4d798;--rf-danger:#ffacb2;--rf-radius:14px;--rf-avatar-radius:10px;--rf-font:"Segoe UI",Arial,sans-serif;--rf-motion:300ms;--rf-table:#0b3766;--rf-table-deep:#051a36;--rf-shadow:0 18px 50px #0005;color-scheme:dark}
:root[data-rf-background="graphite"]{--rf-table:#343b45;--rf-table-deep:#131b24}
:root[data-rf-background="emerald"]{--rf-table:#125447;--rf-table-deep:#062c2b}
:root[data-rf-background="burgundy"]{--rf-table:#652a3b;--rf-table-deep:#2c1225}
.rf-page{margin:0;background:radial-gradient(ellipse at 85% 0,#10304588,transparent 60%),var(--rf-bg);color:var(--rf-text);font:16px/1.5 var(--rf-font);min-height:100dvh;box-sizing:border-box;padding:calc(20px + env(safe-area-inset-top)) max(16px,env(safe-area-inset-left)) calc(30px + env(safe-area-inset-bottom))}
.rf-page *{box-sizing:border-box}.rf-shell{max-width:1120px;margin:auto}.rf-title{font-size:clamp(28px,4.5vw,48px);line-height:1.12;letter-spacing:-.035em;margin:20px 0 12px}.rf-kicker{font-size:12px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--rf-accent)}.rf-muted{color:var(--rf-muted)}.rf-panel{padding:22px;border:1px solid var(--rf-line);border-radius:var(--rf-radius);background:var(--rf-panel);box-shadow:var(--rf-shadow)}.rf-stack{display:grid;gap:16px}.rf-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.rf-avatar{width:64px;aspect-ratio:1;display:inline-grid;place-items:center;overflow:hidden;border:1px solid #7c9aaf;border-radius:var(--rf-avatar-radius);background:#193749;flex:none}.rf-avatar img,.rf-avatar svg{width:100%;height:100%;object-fit:cover;border-radius:inherit}.rf-person{display:grid;justify-items:center;gap:7px;max-width:150px;text-align:center;overflow-wrap:anywhere}.rf-person>span:last-child{font-size:14px}.rf-table{position:relative;background:radial-gradient(ellipse at 50% 15%,var(--rf-table),var(--rf-table-deep));border:1px solid #789bb955;border-radius:var(--rf-radius);padding:28px;overflow:hidden}.rf-watermark{position:absolute;inset:0;display:grid;place-items:center;opacity:.08;pointer-events:none}.rf-watermark img{width:140px}.rf-card{display:inline-flex;vertical-align:top;flex-direction:column;align-items:flex-start;justify-content:flex-start;width:78px;height:114px;padding:8px;border:1px solid #ded8c8;border-radius:9px;background:#fffbee;color:#132335;box-shadow:0 5px 14px #0004;font:800 30px/1 var(--rf-font);position:relative}.rf-card>span{font-size:35px;margin-top:8px}.rf-card[data-suit="H"],.rf-card[data-suit="D"]{color:#b9183d}:root[data-rf-suit-colors="four"] .rf-card[data-suit="D"]{color:#1359b3}:root[data-rf-suit-colors="four"] .rf-card[data-suit="C"]{color:#08735e}
:root[data-rf-card-face="contrast"] .rf-card{background:#fff;border:2px solid currentColor;font-weight:900}:root[data-rf-card-face="illustrated"] .rf-card[data-court]::after{content:attr(data-court);position:absolute;bottom:8px;right:8px;font-size:33px;opacity:.75}.rf-card-back{color:#d2e9f7;background:repeating-linear-gradient(45deg,#25588622 0 2px,transparent 2px 8px),#123963;border:3px double #a1bccf;justify-content:center;align-items:center;font-size:12px;letter-spacing:.12em}.rf-card-back::after{content:"RAFAS"}:root[data-rf-card-back="black-gold"] .rf-card-back{background:#161d22;color:#e5c889;border-color:#bba36b}:root[data-rf-card-back="burgundy"] .rf-card-back{background:#662a3d;border-color:#dca1ae}:root[data-rf-card-back="geometric"] .rf-card-back{background:repeating-linear-gradient(45deg,#e5e7da 0 5px,#b5c6c6 5px 7px);color:#173946;border-color:#e3ebde}
:root[data-rf-motion="reduced"]{--rf-motion:0ms}:root[data-rf-motion="reduced"] *, :root[data-rf-motion="reduced"] *::before,:root[data-rf-motion="reduced"] *::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:0ms!important;scroll-behavior:auto!important}
@media(prefers-reduced-motion:reduce){:root{--rf-motion:0ms}*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:0ms!important;scroll-behavior:auto!important}}
.rf-page>.rf-shell{animation:rf-page-enter var(--rf-motion) ease-out}@keyframes rf-page-enter{from{opacity:.65;transform:translateY(6px)}to{opacity:1;transform:none}}
.rf-avatar img{transform:scale(1.48)}
