.jt-notice-card{position:fixed;z-index:100000;top:max(18px,env(safe-area-inset-top));left:50%;transform:translateX(-50%);width:min(420px,calc(100vw - 32px));box-sizing:border-box;border:1px solid #dfbd70;border-left:5px solid #dfbd70;border-radius:14px;background:#101e30;color:#fff6dd;box-shadow:0 12px 40px #0009;padding:16px 46px 16px 18px;font:500 16px/1.6 system-ui,sans-serif;text-align:left;overflow-wrap:anywhere;max-height:60dvh;overflow:auto}.jt-notice-card>strong{display:block;color:#f2cd7b;font-size:17px;margin-bottom:5px}.jt-notice-content button{display:inline-block;min-height:40px;padding:7px 14px;border:1px solid #d7b368;border-radius:8px;background:#263850;color:#fff4d3;margin:8px 8px 0 0;font:inherit}.jt-notice-card .jt-notice-close{position:absolute;right:7px;top:7px;width:36px;height:36px;border:0;border-radius:8px;background:#ffffff12;color:#fff;font-size:26px;line-height:32px;padding:0;cursor:pointer}

#jt-notice-stack{position:fixed;z-index:100000;top:max(18px,env(safe-area-inset-top));left:50%;transform:translateX(-50%);display:flex;flex-direction:column;gap:10px;max-height:80dvh;overflow:auto;pointer-events:none}.jt-notice-card{position:relative;top:auto;left:auto;transform:none;flex:none;pointer-events:auto}
.jt-notice-content button[aria-label="关闭提示"]{display:none}

#jt-notice-stack{top:50%;left:50%;transform:translate(-50%,-50%);max-height:80dvh}

/* A plain notice has one bounded lifetime, independent of polling renders. */
#jt-notice-stack{inset:50% auto auto 50%!important;transform:translate(-50%,-50%)!important;max-height:80dvh}
.jt-notice-transient{padding-right:18px;animation:jt-notice-expire 3s steps(1,end) forwards}
@keyframes jt-notice-expire{0%{visibility:visible;opacity:1}100%{visibility:hidden;opacity:0;pointer-events:none}}

/* Rotate the entire notice stack into the active game's coordinate system. */
#jt-notice-stack{transform:translate(-50%,-50%) rotate(var(--jt-notice-angle,0deg))!important;max-height:var(--jt-notice-height,80dvh)}
.jt-notice-card{width:var(--jt-notice-width,min(420px,calc(100dvw - 32px)));max-height:var(--jt-notice-height,80dvh)}

/* Rounded ivory and recessed red pips, including small bet and history dice. */
.tx-pip{background:linear-gradient(135deg,#ffffff 12%,#faf5f0 50%,#d5c9c1 100%);border:1px solid #fff9;border-radius:22%;box-shadow:inset 2px 2px 2px #fff,inset -2px -2px 2px #b9aaa1,2px 3px 2px #0006;transform:rotate(-5deg)}
.tx-pip i.filled,.tx-pip-1 i.filled,.tx-pip-4 i.filled,.tx-face .tx-pip i.filled{background:radial-gradient(ellipse at 28% 24%,#fff5f0 0 8%,#e0162b 14%,#b80017 57%,#6d000b 94%);box-shadow:inset 1px 1px 1px #6c0010,0 1px 0 #fff9;border-radius:50%}
.tx-dice-fallback{display:flex;gap:12px;justify-content:center;align-items:center;height:100%}.tx-dice-fallback>b{display:grid;grid-template-columns:repeat(3,1fr);width:60px;height:60px;padding:12px;gap:3px;border-radius:13px;background:linear-gradient(135deg,#fff,#eee4de);box-shadow:inset -3px -4px 4px #b3a39b,4px 7px 3px #0008;transform:rotate(-10deg)}.tx-dice-fallback i.filled{background:radial-gradient(circle at 30% 25%,#ffbdc1,#cc001c 28%,#74000e);border-radius:50%}
