/* V234 shared layer. Effect rules only apply under html.v234-fx-on (set by v234-fx.js after idle);
   without the script, or in lite / reduced-motion / save-data modes, the page is unchanged. */
:root{--v234-css:1;--v233-gold:#dfbe85;--v233-line:#2b3c49;--v233-panel:#10202c}

/* ---- utilities for new pages ---- */
.v234-sr{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
.v234-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-variant-numeric:tabular-nums;letter-spacing:.02em}
.v234-chip{display:inline-flex;align-items:center;gap:6px;min-height:28px;padding:3px 12px;border:1px solid var(--v233-line);border-radius:999px;background:var(--v233-panel);color:var(--v233-gold);font-size:12px;line-height:1.6}
.v234-callout{margin:16px 0;padding:12px 16px;border:1px solid var(--v233-line);border-left:4px solid var(--v233-gold);border-radius:8px;background:var(--v233-panel);color:#e6edf2;line-height:1.75;overflow-wrap:anywhere}
.v234-callout::before{display:block;margin-bottom:2px;font:700 12px/1.6 ui-monospace,monospace;letter-spacing:.08em;color:var(--v233-gold);content:"ⓘ 提示"}
.v234-callout--warn{border-left-color:#f0b45a;background:#1f1b12}
.v234-callout--warn::before{color:#f0b45a;content:"▲ 注意"}
.v234-callout--danger{border-left-color:#ff8f8f;background:#26161a}
.v234-callout--danger::before{color:#ff9d9d;content:"■ 警示"}

/* ---- effects (all transform / opacity only) ---- */
:where(html.v234-fx-on [data-fx~=scan],html.v234-fx-on [data-fx~=hero]){position:relative}

/* reveal */
html.v234-fx-on .v234-rv:not(.v234-in){opacity:0;translate:0 14px}
html.v234-fx-on .v234-in{transition:opacity .5s ease,translate .5s ease;transition-delay:calc(var(--v234-s,0)*70ms)}

/* decode */
html.v234-fx-on .v234-dec{color:transparent!important;-webkit-text-fill-color:transparent!important;text-shadow:none!important}
.v234-dl{position:absolute;inset:0;display:block;box-sizing:border-box;padding:inherit;overflow:hidden;pointer-events:none;color:var(--v234-c);-webkit-text-fill-color:currentcolor;font:inherit;letter-spacing:inherit;text-align:inherit;text-transform:inherit;text-indent:inherit;white-space:inherit;word-break:inherit;overflow-wrap:inherit}

/* scan + hero sweep: a narrow bar that never leaves its container */
html.v234-fx-on .v234-sc::after,.v234-lb b{content:"";position:absolute;top:0;bottom:0;left:0;width:8%;pointer-events:none;background:linear-gradient(90deg,transparent,rgba(223,190,133,.4),transparent);animation:v234-sw .9s ease-in-out both}
@keyframes v234-sw{0%{opacity:0;transform:translateX(0)}15%,85%{opacity:1}100%{opacity:0;transform:translateX(1150%)}}

/* spot */
html.v234-fx-on [data-fx~=spot]::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;transition:opacity .25s ease;background:radial-gradient(220px circle at var(--mx,50%) var(--my,50%),rgba(223,190,133,.14),transparent 70%)}
html.v234-fx-on .v234-sp::before{opacity:1}
:where(html.v234-fx-on [data-fx~=spot]){position:relative}

/* magnet */
html.v234-fx-on [data-fx~=magnet]{translate:var(--v234-gx,0) var(--v234-gy,0);transition:translate .18s ease-out}

/* hero letterbox */
.v234-lb{position:absolute;inset:0;z-index:5;display:block;overflow:hidden;pointer-events:none}
.v234-lb i{position:absolute;left:0;right:0;height:50%;background:#02070c;animation:v234-bar .9s cubic-bezier(.2,.7,.2,1) both}
.v234-lb i:first-child{top:0;transform-origin:top}
.v234-lb i:nth-child(2){bottom:0;transform-origin:bottom}
@keyframes v234-bar{0%{opacity:0;transform:scaleY(.28)}14%{opacity:1}100%{opacity:1;transform:scaleY(0)}}

html.v234-fx-pause .v234-lb *,html.v234-fx-pause .v234-sc::after{animation-play-state:paused}

@media (prefers-reduced-motion:reduce){
  html.v234-fx-on .v234-rv,html.v234-fx-on .v234-in,html.v234-fx-on .v234-sc::after,html.v234-fx-on [data-fx~=spot]::before,html.v234-fx-on [data-fx~=magnet],.v234-lb,.v234-lb *{animation:none!important;transition:none!important}
  html.v234-fx-on .v234-rv:not(.v234-in){opacity:1!important;translate:none!important}
  html.v234-fx-on [data-fx~=magnet]{translate:none!important}
  .v234-lb,.v234-dl{display:none!important}
}
@media print{.v234-lb,.v234-dl{display:none!important}.v234-rv:not(.v234-in){opacity:1!important;translate:none!important}.v234-dec{color:inherit!important;-webkit-text-fill-color:currentcolor!important}}
