*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0;background:#0b3d2e;color:#f2efe6;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;overscroll-behavior:none}button{font:inherit;color:inherit;background:none;border:none;padding:0;cursor:pointer}.app{max-width:430px;margin:0 auto;min-height:100dvh;display:flex;flex-direction:column;padding:8px 8px calc(12px + env(safe-area-inset-bottom));gap:10px}.topbar{display:flex;align-items:center;gap:8px}.topbar h1{font-size:18px;letter-spacing:3px;margin:0;flex:1}.chip{min-height:44px;padding:8px 14px;border-radius:22px;background:#ffffff1f;font-size:14px;font-variant-numeric:tabular-nums}.chip-primary{background:#e8b83a;color:#241b04;font-weight:700}.card{border-radius:6px;position:relative;display:block;user-select:none}.card-face{background:#fdfcf7;border:1px solid #b9b4a5;box-shadow:0 1px 2px #00000059}.card-red{color:#c0392b}.card-black{color:#1c2430}.card-corner{position:absolute;display:flex;flex-direction:column;align-items:center;line-height:.95;font-weight:700;font-size:.62em}.card-corner-tl{top:2px;left:3px}.card-corner-br{bottom:2px;right:3px;transform:rotate(180deg)}.card-pip{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:1.15em;opacity:.9}.card-back{background:repeating-linear-gradient(45deg,#27548f 0px 4px,#1d4173 4px 8px);border:2px solid #f2efe6;box-shadow:0 1px 2px #00000059}.card-joker{background:linear-gradient(160deg,#3d2a63,#6c3fa0 55%,#3d2a63);border:1px solid #e8b83a;color:#f5d97a;box-shadow:0 1px 2px #00000059;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}.joker-star{font-size:1em;line-height:1}.joker-label{font-size:.34em;font-weight:800;letter-spacing:1.5px}.tableau{display:flex;justify-content:center;gap:6px;padding-top:6px}.tableau-col{position:relative}.tableau-under{position:absolute;left:0}.tableau-top-tap{position:absolute;left:-4px;display:flex;align-items:center;justify-content:center;border-radius:8px}.playable{outline:2px solid rgba(232,184,58,.85);outline-offset:1px}.piles-row{display:flex;align-items:flex-start;justify-content:center;gap:18px;margin-top:4px}.pile{display:flex;flex-direction:column;align-items:center;gap:4px}.pile-tap{display:flex;align-items:center;justify-content:center;border-radius:8px}.pile-tap:disabled{cursor:default}.pile-stack{position:relative;display:block}.pile-under{position:absolute;top:2px;left:2px;border-radius:6px;background:#00000059}.pile-top{position:relative}.pile-empty{display:block;border:2px dashed rgba(255,255,255,.35);border-radius:6px}.pile-exhausted .pile-tap{opacity:.55}.pile-label{font-size:12px;opacity:.8;font-variant-numeric:tabular-nums}.stats{display:flex;gap:14px;align-self:center;padding-top:8px}.stat{display:flex;flex-direction:column;align-items:center;min-width:44px}.stat-value{font-size:22px;font-weight:700;font-variant-numeric:tabular-nums}.stat-label{font-size:11px;text-transform:uppercase;letter-spacing:1px;opacity:.7}.run-status{display:flex;align-items:center;justify-content:space-between;gap:8px}.run-chip{display:inline-flex;align-items:center}.run-deck{font-size:13px;opacity:.8;font-variant-numeric:tabular-nums}.target-panel{display:flex;flex-direction:column;gap:6px}.target-numbers{font-variant-numeric:tabular-nums;font-size:15px}.target-score{font-size:26px;font-weight:700}.target-of{opacity:.75}.target-bar{height:10px;border-radius:5px;background:#00000059;overflow:hidden}.target-fill{height:100%;border-radius:5px;background:#e8b83a;transition:width .25s ease-out}.preview-panel{min-height:44px;display:flex;align-items:center;justify-content:center;gap:10px;border-radius:10px;background:#ffffff14;padding:6px 12px;font-size:15px}.preview-name{font-weight:700}.preview-math{font-variant-numeric:tabular-nums}.preview-hint,.preview-last{opacity:.75;font-size:14px}.hand-fan{display:flex;justify-content:center;align-items:flex-end;padding:22px 4px 6px}.fan-card{margin-left:-20px;border-radius:8px;transform:translateY(0);transition:transform .15s ease-out;min-height:44px}.fan-card:first-child{margin-left:0}.fan-selected{transform:translateY(-16px);z-index:2;position:relative}.fan-selected .card{outline:2px solid rgba(232,184,58,.9);outline-offset:1px}.actions-row{display:flex;justify-content:center;gap:14px}.action-play,.action-discard{min-width:130px;font-weight:700;letter-spacing:1px}.action-play:disabled,.action-discard:disabled{opacity:.45;cursor:default}.upgrade-options{display:flex;gap:12px;justify-content:center;margin-bottom:4px}.upgrade-card{display:flex;flex-direction:column;gap:6px;width:130px;min-height:110px;padding:14px 10px;border-radius:10px;background:#fdfcf7;border:2px solid #e8b83a;color:#1c2430;text-align:center;align-items:center;justify-content:center}.upgrade-card strong{font-size:15px}.upgrade-card span{font-size:12.5px;opacity:.85}.flight{position:fixed;z-index:40;pointer-events:none;transition-property:transform;transition-timing-function:cubic-bezier(.3,.8,.4,1);will-change:transform}.shake{animation:shake .4s ease-in-out}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-5px)}40%{transform:translate(5px)}60%{transform:translate(-4px)}80%{transform:translate(3px)}}.flip-in{animation:flip-in .28s ease-out;transform-origin:center;backface-visibility:hidden}@keyframes flip-in{0%{transform:rotateY(90deg)}to{transform:rotateY(0)}}@media (prefers-reduced-motion: reduce){.flight,.fan-card,.target-fill{transition:none}.shake,.flip-in{animation:none}}.banner-overlay{position:fixed;inset:0;transform:translateZ(0);z-index:50;display:flex;align-items:center;justify-content:center;background:#0000008c}.banner{background:#f2efe6;color:#1c2430;border-radius:14px;padding:22px 26px;text-align:center;max-width:320px;box-shadow:0 8px 30px #0006}.banner h2{margin:0 0 6px;font-size:22px}.banner p{margin:0 0 16px;font-size:15px}.banner-won{border-top:6px solid #2e9e5b}.banner-lost{border-top:6px solid #c0392b}.banner-buttons{display:flex;gap:10px;justify-content:center}.banner .chip{background:#00000014}.banner .chip-primary{background:#e8b83a}
