/* ==========================================================================
   信号档案馆 · 独立整页（auth/chat/prayer/fortune/divination/invitation/
   date_selection/payment-qr/404/qq_bind 等）
   [data-sa-standalone] 作用域，重塑默认独立页为档案馆语言，不动业务逻辑。
   ========================================================================== */

html[data-template="signal_archive"][data-sa-standalone] body.sa-standalone-body{
    margin:0;min-height:100vh;color:var(--sa-ink);background:var(--sa-bg);
    font-family:var(--sa-font-body);font-size:var(--sa-fs-body);line-height:1.6;
    -webkit-font-smoothing:antialiased;position:relative;
}
html[data-sa-standalone] body.sa-standalone-body::before{
    content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
    background-image:
        linear-gradient(to right, rgba(20,21,24,.028) 1px, transparent 1px),
        linear-gradient(to bottom, rgba(20,21,24,.028) 1px, transparent 1px);
    background-size:26px 26px;
}
html[data-sa-standalone][data-theme="dark"] body.sa-standalone-body::before{
    background-image:
        linear-gradient(to right, rgba(230,227,217,.04) 1px, transparent 1px),
        linear-gradient(to bottom, rgba(230,227,217,.04) 1px, transparent 1px);
}
html[data-sa-standalone] .sa-standalone-stage{position:relative;z-index:1;min-height:100vh;}
html[data-sa-standalone] .sa-standalone-stage body{background:transparent;color:inherit;font-family:inherit;}

/* ---------- 通用独立页卡片：去 SaaS 圆角渐变 ---------- */
html[data-sa-standalone] .fortune-card,
html[data-sa-standalone] .auth-card,
html[data-sa-standalone] .glass-card,
html[data-sa-standalone] .divination-form,
html[data-sa-standalone] .container > .card,
html[data-sa-standalone] .card{
    background:var(--sa-surface);border:1px solid var(--sa-line-strong);
    border-radius:0;box-shadow:none;
}
html[data-sa-standalone] h1,html[data-sa-standalone] h2,html[data-sa-standalone] h3,
html[data-sa-standalone] .fortune-title,html[data-sa-standalone] .header-title,
html[data-sa-standalone] .page-title,html[data-sa-standalone] .chat-title,
html[data-sa-standalone] .error-title,html[data-sa-standalone] .title{
    font-family:var(--sa-font-display);letter-spacing:.01em;color:var(--sa-ink);
}
html[data-sa-standalone] input[type="text"],html[data-sa-standalone] input[type="tel"],
html[data-sa-standalone] input[type="password"],html[data-sa-standalone] input[type="email"],
html[data-sa-standalone] input[type="number"],html[data-sa-standalone] input[type="search"],
html[data-sa-standalone] textarea,html[data-sa-standalone] select{
    background:var(--sa-surface);color:var(--sa-ink);border:1px solid var(--sa-line-strong);
    border-radius:0;font-family:inherit;transition:border-color var(--sa-transition),box-shadow var(--sa-transition);
}
html[data-sa-standalone] input:focus,html[data-sa-standalone] textarea:focus,html[data-sa-standalone] select:focus{
    outline:none;border-color:var(--sa-red);box-shadow:var(--sa-ring);
}
html[data-sa-standalone] .back-btn{
    display:inline-flex;align-items:center;gap:6px;padding:6px 14px;font-size:var(--sa-fs-sm);
    color:var(--sa-ink-soft);background:var(--sa-surface);border:1px solid var(--sa-line-strong);
    border-radius:0;cursor:pointer;transition:all var(--sa-transition);
}
html[data-sa-standalone] .back-btn:hover{color:var(--sa-red);border-color:var(--sa-red);}
html[data-sa-standalone] .amount,html[data-sa-standalone] .fortune-date,html[data-sa-standalone] .encryption-status{
    font-family:var(--sa-font-mono);letter-spacing:.04em;
}

html[data-template="signal_archive"] .system-error{
    --error-bg:var(--sa-bg);--error-surface:var(--sa-surface);--error-ink:var(--sa-ink);
    --error-muted:var(--sa-muted);--error-rule:var(--sa-line-strong);--error-accent:var(--sa-red);--error-accent-soft:var(--sa-red-soft);
}

/* ==========================================================================
   认证：分屏档案准入（结构由 auth/*.html 提供，此为配套皮肤）
   ========================================================================== */
html[data-sa-standalone] .sa-authbox{background:transparent;border:none;box-shadow:none;padding:0;}
html[data-sa-standalone] .sa-authbox .form-group{margin-bottom:18px;}
html[data-sa-standalone] .sa-authbox .form-group label{
    display:block;margin-bottom:8px;font-family:var(--sa-font-mono);font-size:.66rem;
    letter-spacing:.16em;text-transform:uppercase;color:var(--sa-muted);
}
html[data-sa-standalone] .sa-authbox .form-group label i{margin-right:6px;color:var(--sa-red);}
html[data-sa-standalone] .sa-authbox .form-group input{
    width:100%;padding:12px 14px;font-size:.92rem;box-sizing:border-box;
}
html[data-sa-standalone] .code-input-group{display:flex;gap:10px;}
html[data-sa-standalone] .code-input-group input{flex:1;}
html[data-sa-standalone] .send-code-btn{
    flex:none;padding:0 16px;font-family:var(--sa-font-mono);font-size:.68rem;letter-spacing:.06em;
    color:var(--sa-ink);background:var(--sa-surface);border:1px solid var(--sa-inkline);
    cursor:pointer;transition:all var(--sa-transition);white-space:nowrap;
}
html[data-sa-standalone] .send-code-btn:hover:not(:disabled){background:var(--sa-ink);color:var(--sa-bg);}
html[data-sa-standalone] .send-code-btn:disabled{opacity:.45;cursor:not-allowed;}
/* 区块按钮 */
html[data-sa-standalone] .sa-btn{box-sizing:border-box;}
.sa-btn--block{display:flex;width:100%;}
html[data-sa-standalone] .sa-btn--qq{background:#12b7f5;border-color:#0d94c8;color:#fff;}
html[data-sa-standalone] .sa-btn--qq:hover{background:#0ea5e9;color:#fff;}
/* 分割 */
html[data-sa-standalone] .sa-divider{position:relative;text-align:center;margin:22px 0;}
html[data-sa-standalone] .sa-divider::before{content:"";position:absolute;top:50%;left:0;right:0;height:1px;background:var(--sa-line-strong);}
html[data-sa-standalone] .sa-divider span{position:relative;background:var(--sa-bg);padding:0 12px;font-family:var(--sa-font-mono);font-size:.62rem;letter-spacing:.2em;color:var(--sa-faint);}
html[data-sa-standalone] .auth-links{margin-top:20px;text-align:center;font-size:.82rem;}
html[data-sa-standalone] .auth-links a{color:var(--sa-ink-soft);margin:0 12px;transition:color var(--sa-transition);}
html[data-sa-standalone] .auth-links a:hover{color:var(--sa-red);}
html[data-sa-standalone] .auth-links a i{margin-right:4px;}
/* 提示条 */
html[data-sa-standalone] .alert,html[data-sa-standalone] .message{
    padding:11px 14px;margin-bottom:16px;font-size:.82rem;border:1px solid var(--sa-line-strong);
    border-left:3px solid var(--sa-muted);background:var(--sa-surface);
}
html[data-sa-standalone] .alert-success,html[data-sa-standalone] .success-message{border-left-color:var(--sa-green);color:var(--sa-green);}
html[data-sa-standalone] .alert-danger,html[data-sa-standalone] .error-message{border-left-color:var(--sa-red);color:var(--sa-red);}

/* ==========================================================================
   四时祈愿庭：植物观测台、仪式书写台与愿望档案
   ========================================================================== */
.sa-prayer-body{
    --pg-ink:#172a24;
    --pg-ink-soft:#405b50;
    --pg-paper:#f3efe5;
    --pg-paper-bright:#fbf9f2;
    --pg-line:#b8b8a7;
    --pg-line-soft:#d8d5c8;
    --pg-moss:#496c55;
    --pg-leaf:#6f8a60;
    --pg-brass:#b8893f;
    --pg-coral:#b45345;
    --pg-sky:#a9c2c0;
    --pg-shadow:rgba(21,41,34,.14);
    display:flex;
    flex-direction:column;
    min-height:100vh;
    background:var(--pg-paper);
    color:var(--pg-ink);
}
html[data-theme="dark"] .sa-prayer-body{
    --pg-ink:#e8e4d8;
    --pg-ink-soft:#b7c1b8;
    --pg-paper:#151d1a;
    --pg-paper-bright:#1d2823;
    --pg-line:#536159;
    --pg-line-soft:#334139;
    --pg-moss:#8ca58d;
    --pg-leaf:#799277;
    --pg-brass:#d0a85e;
    --pg-coral:#d47665;
    --pg-sky:#6f8f91;
    --pg-shadow:rgba(0,0,0,.3);
}
html[data-template="signal_archive"][data-sa-standalone] body.sa-prayer-body{
    background:var(--pg-paper);
    color:var(--pg-ink);
}
html[data-sa-standalone] body.sa-prayer-body::before{
    background-image:linear-gradient(to right,rgba(23,42,36,.035) 1px,transparent 1px);
    background-size:72px 100%;
}
.sa-skip-link{
    position:fixed;
    top:8px;
    left:8px;
    z-index:500;
    padding:9px 13px;
    background:var(--pg-ink);
    color:var(--pg-paper-bright);
    border:1px solid var(--pg-paper-bright);
    transform:translateY(-160%);
    transition:transform 180ms ease-out;
}
.sa-skip-link:focus{transform:translateY(0);}
.sa-prayer-head{
    position:sticky;
    top:0;
    z-index:120;
    padding-top:env(safe-area-inset-top,0px);
    color:#f4f0e6;
    background:#172a24;
    border-bottom:1px solid rgba(244,240,230,.28);
}
.sa-prayer-head__inner{
    display:grid;
    grid-template-columns:44px minmax(0,1fr) auto;
    align-items:center;
    gap:16px;
    width:min(100%,1680px);
    min-height:78px;
    margin:0 auto;
    padding:10px 24px;
}
.sa-prayer-back{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    width:40px;
    height:40px;
    color:#f4f0e6;
    border:1px solid rgba(244,240,230,.42);
    border-radius:2px;
    transition:background 180ms ease-out,border-color 180ms ease-out;
}
.sa-prayer-back:hover{background:rgba(244,240,230,.1);border-color:#f4f0e6;}
.sa-prayer-back:focus-visible,
.sa-prayer-core button:focus-visible,
.sa-prayer-core [role="radio"]:focus-visible{
    outline:3px solid var(--pg-brass);
    outline-offset:3px;
}
.sa-prayer-head__text{min-width:0;}
.sa-prayer-kicker{
    color:#b9c8bd;
    font-family:var(--sa-font-mono);
    font-size:.62rem;
    line-height:1.2;
    letter-spacing:0;
}
.sa-prayer-title{
    margin:3px 0 0;
    color:#f8f5ec !important;
    font-family:var(--sa-font-display);
    font-size:1.55rem;
    font-weight:650;
    line-height:1.15;
    letter-spacing:0;
}
.sa-prayer-head__season{
    display:flex;
    align-items:center;
    min-width:168px;
    padding-left:18px;
    border-left:1px solid rgba(244,240,230,.3);
}
.sa-prayer-head__season-copy{display:grid;grid-template-columns:auto;align-items:baseline;letter-spacing:0;}
.sa-prayer-head__season em{color:var(--pg-brass);font-family:var(--sa-font-mono);font-size:.52rem;font-style:normal;line-height:1.2;letter-spacing:0;}
.sa-prayer-head__season i{display:none;font-style:normal;}
.sa-prayer-head__season strong{display:block;margin-top:2px;font-size:.8rem;font-weight:650;letter-spacing:0;}
.sa-prayer-head__season small{display:block;margin-top:2px;color:#b9c8bd;font-family:var(--sa-font-mono);font-size:.56rem;line-height:1.2;letter-spacing:0;white-space:nowrap;}
.sa-prayer-core{position:relative;z-index:1;flex:1;}

/* 原页页首转换为横向观测读数，不复制任何数据。 */
.sa-prayer-core .header{
    position:static !important;
    height:auto !important;
    padding:0 24px !important;
    background:var(--pg-paper) !important;
    border:0 !important;
    box-shadow:none !important;
}
.sa-prayer-core .header .header-content{
    width:min(100%,1680px);
    max-width:none;
    min-height:54px;
    margin:0 auto;
    padding:8px 0;
    border-bottom:1px solid var(--pg-line);
}
.sa-prayer-core .header h1{display:none;}
.sa-prayer-core .user-info{
    display:flex;
    flex:1;
    flex-wrap:wrap;
    align-items:center;
    justify-content:flex-end;
    gap:14px;
    color:var(--pg-ink-soft);
    font-size:.72rem;
}
.sa-prayer-core .stats{
    display:flex;
    flex-wrap:nowrap;
    gap:0;
    color:var(--pg-ink);
    background:transparent;
    border:1px solid var(--pg-line);
}
.sa-prayer-core .stats > span{
    display:inline-flex;
    align-items:center;
    gap:6px;
    min-height:32px;
    padding:5px 12px;
    border-right:1px solid var(--pg-line);
    font-family:var(--sa-font-mono);
    font-size:.65rem;
    line-height:1;
    letter-spacing:0;
    white-space:nowrap;
}
.sa-prayer-core .stats > span:last-child{border-right:0;}
.sa-prayer-core .stats i{color:var(--pg-coral);}
.sa-prayer-core .lunar-info{
    display:flex;
    align-items:center;
    gap:8px;
    margin:0;
    color:var(--pg-ink-soft);
    font-family:var(--sa-font-mono);
    letter-spacing:0;
}
.sa-prayer-core .lunar-date{color:inherit;font-size:.68rem;}
.sa-prayer-core .festival-info{
    padding:3px 8px;
    color:var(--pg-coral);
    background:transparent;
    border:0;
    border-left:2px solid var(--pg-coral);
    border-radius:0;
    animation:none;
    font-size:.64rem;
}

/* 桌面观测台：庭院占主视野，书写台和档案并列。 */
.sa-prayer-core .main-container{
    display:grid;
    grid-template-columns:minmax(520px,1.62fr) minmax(350px,.86fr);
    grid-template-rows:auto auto;
    align-items:start;
    gap:20px;
    width:min(100%,1680px);
    max-width:none;
    margin:0 auto !important;
    padding:18px 24px 0 !important;
}
.sa-prayer-core .tree-container{
    position:sticky;
    top:96px;
    grid-column:1;
    grid-row:1 / span 2;
    width:100%;
    height:calc(100svh - 172px) !important;
    min-height:650px;
    max-height:940px;
    margin:0;
    overflow:hidden;
    isolation:isolate;
    color:#172a24;
    background:linear-gradient(to bottom,#a8c1bf 0%,#d9dfcf 55%,#80906f 56%,#52684d 100%);
    border:1px solid #596e61;
    border-radius:0;
    box-shadow:0 24px 70px var(--pg-shadow);
}
.sa-prayer-core .tree-container::before{
    content:"";
    position:absolute;
    inset:0;
    z-index:14;
    pointer-events:none;
    border:10px solid rgba(244,240,230,.12);
    border-bottom-width:18px;
    box-shadow:inset 0 0 0 1px rgba(23,42,36,.28);
}
.sa-prayer-core .tree-container::after{
    content:"";
    position:absolute;
    z-index:8;
    right:-8%;
    bottom:-4%;
    left:-8%;
    height:25%;
    pointer-events:none;
    background:linear-gradient(to bottom,rgba(48,72,52,0),rgba(29,57,39,.58) 38%,#294833 100%);
    clip-path:polygon(0 31%,14% 15%,30% 27%,44% 4%,61% 22%,77% 7%,100% 29%,100% 100%,0 100%);
}
.sa-environment-canvas{
    position:absolute;
    inset:0;
    z-index:6;
    display:block;
    width:100%;
    height:100%;
    pointer-events:none;
    visibility:hidden;
}
.sa-prayer-core .tree-container.sa-webgl-ready > .sa-environment-canvas{visibility:visible;}
.sa-prayer-core .tree-container.sa-webgl-ready .scene-sky,
.sa-prayer-core .tree-container.sa-webgl-ready .scene-stars,
.sa-prayer-core .tree-container.sa-webgl-ready .weather-overlay,
.sa-prayer-core .tree-container.sa-webgl-ready .celestial,
.sa-prayer-core .tree-container.sa-webgl-ready .sa-scene-depth{display:none;}
.sa-prayer-core .tree-container.sa-webgl-ready::after{opacity:.48;}
.sa-prayer-core .tree-container.sa-webgl-ready .personal-tree{filter:drop-shadow(0 20px 13px rgba(7,27,18,.34));}
.sa-scene-depth,
.sa-scene-depth > div,
.sa-scene-clouds,
.sa-scene-clouds span,
.sa-rain-field i{position:absolute;pointer-events:none;}
.sa-scene-depth{inset:0;z-index:5;overflow:hidden;}
.sa-scene-light{
    inset:0;
    z-index:3;
    opacity:0;
    background:radial-gradient(ellipse at 76% 15%,rgba(246,225,166,.3) 0,rgba(235,218,170,.12) 26%,transparent 54%);
    transition:opacity 700ms ease;
}
.scene-day.scene-clear .sa-scene-light{opacity:.72;}
.sa-scene-ridge--far{
    right:-6%;
    bottom:31%;
    left:-6%;
    height:29%;
    background:#78907d;
    opacity:.72;
    clip-path:polygon(0 70%,13% 25%,25% 65%,38% 12%,50% 62%,65% 24%,78% 68%,90% 20%,100% 62%,100% 100%,0 100%);
}
.sa-scene-ridge--near{
    right:-4%;
    bottom:18%;
    left:-4%;
    height:26%;
    background:#4d6a50;
    clip-path:polygon(0 60%,10% 29%,22% 48%,36% 16%,50% 55%,63% 25%,78% 53%,89% 15%,100% 45%,100% 100%,0 100%);
}
.sa-scene-path{
    bottom:-5%;
    left:50%;
    width:30%;
    height:30%;
    opacity:.46;
    background:linear-gradient(to bottom,transparent 0,rgba(70,84,60,.24) 28%,rgba(50,70,49,.62) 100%);
    clip-path:polygon(47% 0,53% 0,58% 25%,53% 47%,64% 68%,78% 100%,20% 100%,43% 68%,47% 47%,42% 25%);
    transform:translateX(-50%);
    filter:blur(.5px);
    mix-blend-mode:multiply;
}
.sa-scene-reeds{
    right:0;
    bottom:0;
    left:0;
    height:24%;
    opacity:.7;
    background-image:repeating-linear-gradient(78deg,transparent 0 14px,rgba(21,57,36,.66) 15px 17px,transparent 18px 27px);
    clip-path:polygon(0 27%,8% 8%,18% 32%,29% 12%,39% 35%,51% 4%,62% 31%,73% 10%,84% 36%,94% 7%,100% 29%,100% 100%,0 100%);
}
.sa-scene-clouds{inset:0;z-index:4;opacity:0;transition:opacity 500ms ease-out;}
.sa-scene-clouds span{
    --cloud-scale:1;
    width:128px;
    height:25px;
    border-radius:48% 55% 50% 46%;
    background:rgba(232,236,228,.72);
    box-shadow:0 9px 18px rgba(48,66,59,.06);
    animation:pg-cloud-drift var(--cloud-speed,38s) ease-in-out infinite alternate;
}
.sa-scene-clouds span::before,.sa-scene-clouds span::after{content:"";position:absolute;background:inherit;border-radius:50%;}
.sa-scene-clouds span::before{left:18px;bottom:5px;width:48px;height:43px;}
.sa-scene-clouds span::after{right:18px;bottom:3px;width:60px;height:51px;}
.sa-scene-clouds span:nth-child(1){--cloud-scale:.62;--cloud-speed:33s;top:11%;left:-2%;opacity:.55;}
.sa-scene-clouds span:nth-child(2){--cloud-scale:.88;--cloud-speed:45s;top:20%;left:18%;opacity:.76;}
.sa-scene-clouds span:nth-child(3){--cloud-scale:1.05;--cloud-speed:40s;top:13%;right:17%;opacity:.84;}
.sa-scene-clouds span:nth-child(4){--cloud-scale:.7;--cloud-speed:48s;top:30%;right:-1%;opacity:.6;}
.sa-scene-clouds span:nth-child(5){--cloud-scale:.48;--cloud-speed:36s;top:7%;left:49%;opacity:.42;}
@keyframes pg-cloud-drift{from{transform:translate3d(-12px,0,0) scale(var(--cloud-scale));}to{transform:translate3d(24px,3px,0) scale(var(--cloud-scale));}}
.sa-rain-field{inset:-12% 0 0;z-index:10;display:none;overflow:hidden;}
.sa-rain-field i{
    top:-8%;
    left:var(--drop-x);
    width:1px;
    height:var(--drop-length);
    opacity:var(--drop-alpha);
    background:linear-gradient(to bottom,transparent,rgba(225,239,238,.95));
    transform:rotate(12deg);
    animation:pg-rain-drop var(--drop-speed) var(--drop-delay) linear infinite;
}
.sa-rain-field::after{
    content:"";
    position:absolute;
    right:0;
    bottom:3%;
    left:0;
    height:8%;
    opacity:.28;
    background-image:radial-gradient(ellipse at center,transparent 55%,rgba(225,238,232,.8) 58% 62%,transparent 65%);
    background-size:86px 18px;
    animation:pg-rain-ripples 1.8s linear infinite;
}
.scene-rain .sa-rain-field,.scene-storm .sa-rain-field{display:block;}
@keyframes pg-rain-drop{to{transform:translate3d(-14px,116vh,0) rotate(12deg);}}
@keyframes pg-rain-ripples{to{background-position:43px 0;}}
.sa-season-marker{
    top:18px;
    right:18px;
    z-index:18;
    display:flex;
    align-items:flex-end;
    gap:7px;
    color:rgba(23,42,36,.7);
    font-family:var(--sa-font-mono);
    letter-spacing:0;
}
.sa-season-marker b{font-family:var(--sa-font-display);font-size:2rem;font-weight:500;line-height:.85;}
.sa-season-marker span{font-size:.58rem;line-height:1.1;text-transform:uppercase;}
.sa-prayer-core .scene-sky{z-index:1;}
.sa-prayer-core .scene-stars{z-index:2;}
.sa-prayer-core .celestial{z-index:3;top:14%;right:18%;width:74px;height:74px;}
.sa-prayer-core .weather-overlay{z-index:12;}
.sa-prayer-core .moon-disc{overflow:visible;border:0;background:transparent;box-shadow:none;}
.sa-prayer-core .moon-disc svg{display:block;width:100%;height:100%;overflow:visible;filter:drop-shadow(0 0 15px rgba(231,229,194,.28));}
.sa-prayer-core .moon-disc .moon-shadow{fill:#13252d;}
.sa-prayer-core .moon-disc.phase-new{opacity:.48;}
/* 白昼月相：暗面不再深黑，整体淡化成晴空里隐约的淡月 */
.sa-prayer-core .tree-container.scene-day .moon-disc{opacity:.5;}
.sa-prayer-core .tree-container.scene-day .moon-disc .moon-shadow{fill:#a9bac2;}
.sa-prayer-core .tree-container.scene-day .moon-disc svg{filter:none;}
.sa-prayer-core .moon-disc.phase-new svg{filter:drop-shadow(0 0 9px rgba(215,224,199,.1));}
.sa-prayer-core .tree-container.sa-celestial-accurate .sun-disc,
.sa-prayer-core .tree-container.sa-celestial-accurate .moon-disc{display:none;}
.sa-prayer-core .tree-container.sa-celestial-accurate.sa-sun-above-horizon .sun-disc,
.sa-prayer-core .tree-container.sa-celestial-accurate.sa-moon-above-horizon .moon-disc{display:block;}
.sa-prayer-core .tree-container.sa-webgl-ready .celestial{display:none !important;}
.sa-prayer-core .personal-tree{
    z-index:7;
    bottom:4%;
    filter:drop-shadow(0 20px 13px rgba(13,38,24,.26));
}
.sa-prayer-core #prayerCards .prayer-card{z-index:11;}
.sa-prayer-core .tree-container.scene-night{
    color:#e9ebdf;
    background:linear-gradient(to bottom,#101d25 0%,#263a3d 55%,#33473b 56%,#1e3428 100%);
}
.sa-prayer-core .scene-night .scene-stars{opacity:.82;}
.sa-prayer-core .scene-night .sa-scene-ridge--far{background:#3d5650;opacity:.82;}
.sa-prayer-core .scene-night .sa-scene-ridge--near{background:#294537;}
.sa-prayer-core .scene-night .sa-scene-path{background:rgba(174,157,112,.35);}
.sa-prayer-core .scene-night .sa-season-marker{color:rgba(239,236,217,.68);}
.sa-prayer-core .scene-clear .scene-sky{background:linear-gradient(to bottom,rgba(204,226,220,.24),rgba(251,239,191,.12));}
.sa-prayer-core .scene-cloudy .scene-sky{background:linear-gradient(to bottom,rgba(72,91,91,.42),rgba(196,204,188,.18));}
.sa-prayer-core .scene-cloudy .sa-scene-clouds,
.sa-prayer-core .scene-rain .sa-scene-clouds,
.sa-prayer-core .scene-snow .sa-scene-clouds,
.sa-prayer-core .scene-storm .sa-scene-clouds{opacity:.86;}
.sa-prayer-core .scene-rain .weather-overlay{
    opacity:.2;
    background:linear-gradient(to bottom,rgba(128,153,154,.15),rgba(86,113,100,.3));
}
.sa-prayer-core .scene-snow .weather-overlay{opacity:.88;}
.sa-prayer-core .scene-fog .weather-overlay{opacity:.74;background:linear-gradient(to bottom,rgba(235,238,227,.34),rgba(221,228,216,.84));}
.sa-prayer-core .scene-haze .weather-overlay{opacity:.56;background:linear-gradient(to bottom,rgba(190,166,112,.32),rgba(173,156,119,.56));}
.sa-prayer-core .scene-storm .scene-sky{background:linear-gradient(to bottom,rgba(17,28,34,.82),rgba(74,88,82,.34));}
.sa-prayer-core .scene-storm .weather-overlay{opacity:.38;background:#dce6d2;animation:pg-lightning 8s ease-in-out infinite;}
@keyframes pg-lightning{0%,47%,50%,100%{opacity:0;}48%{opacity:.5;}49%{opacity:.08;}}

/* 季节改变庭院色相，树的生长层级仍由原 stage-* 契约控制。 */
html[data-season="spring"] .sa-prayer-core .personal-tree .leaf{fill:#4f7958;}
html[data-season="spring"] .sa-prayer-core .personal-tree .leaf-light{fill:#83a46f;}
html[data-season="spring"] .sa-prayer-core .personal-tree .blossom{fill:#d89991;}
html[data-season="summer"] .sa-prayer-core .personal-tree .leaf{fill:#315f47;}
html[data-season="summer"] .sa-prayer-core .personal-tree .leaf-light{fill:#5f8660;}
html[data-season="autumn"] .sa-prayer-core .personal-tree .leaf{fill:#9b6b38;}
html[data-season="autumn"] .sa-prayer-core .personal-tree .leaf-light{fill:#be8b48;}
html[data-season="autumn"] .sa-prayer-core .personal-tree .fruit{fill:#a94539;}
html[data-season="winter"] .sa-prayer-core .personal-tree .leaf{fill:#526c60;}
html[data-season="winter"] .sa-prayer-core .personal-tree .leaf-light{fill:#779084;}
html[data-season="winter"] .sa-prayer-core .sa-scene-ridge--far{background:#8d9b92;}

/* 树木状态、天气和装配工具。 */
.sa-prayer-core .tree-info{
    top:24px;
    left:24px;
    z-index:30;
    width:min(290px,calc(100% - 48px));
    padding:15px 16px;
    color:#172a24;
    background:rgba(248,246,237,.92);
    border:1px solid rgba(23,42,36,.3);
    border-radius:2px;
    box-shadow:0 14px 32px rgba(23,42,36,.12);
    backdrop-filter:blur(10px);
    transition:width 220ms ease-out,padding 220ms ease-out,background 220ms ease-out,box-shadow 220ms ease-out;
}
.sa-prayer-core .hud-toggle{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    width:44px;
    min-width:44px;
    height:44px;
    padding:0;
    color:#173128;
    background:rgba(248,246,237,.94);
    border:1px solid rgba(23,42,36,.34);
    border-radius:50%;
    cursor:pointer;
    transition:background 180ms ease-out,border-color 180ms ease-out,transform 220ms ease-out;
}
.sa-prayer-core .hud-toggle:hover{background:#fffdf5;border-color:#172a24;}
.sa-prayer-core .tree-info > .hud-toggle{position:absolute;top:8px;right:8px;width:32px;min-width:32px;height:32px;border-radius:2px;}
.sa-prayer-core .tree-info:not(.is-collapsed){padding-right:50px;}
.sa-prayer-core .tree-info.is-collapsed{width:48px;height:48px;padding:0;background:transparent;border-color:transparent;box-shadow:none;backdrop-filter:none;}
.sa-prayer-core .tree-info.is-collapsed > :not(.hud-toggle){visibility:hidden;opacity:0;pointer-events:none;}
.sa-prayer-core .tree-info.is-collapsed > .hud-toggle{top:0;right:0;width:48px;min-width:48px;height:48px;border-radius:50%;box-shadow:0 8px 24px rgba(23,42,36,.16);}
.sa-prayer-core .tree-level{margin:0 0 5px;font-family:var(--sa-font-display);font-size:1rem;font-weight:650;letter-spacing:0;}
.sa-prayer-core .tree-title-badge{display:inline-flex;max-width:100%;margin:0 0 7px;padding:2px 7px;color:#80523d;background:rgba(190,131,88,.1);border-left:2px solid #b26c4d;font-family:var(--sa-font-display);font-size:.68rem;line-height:1.45;overflow-wrap:anywhere;}
.sa-prayer-core .tree-description{margin:0 0 10px;color:#52645b;font-size:.75rem;}
.sa-prayer-core .stage-badge{color:var(--pg-coral);}
.sa-prayer-core .progress-bar{width:100%;height:4px;background:#d6d5c7;border-radius:0;}
.sa-prayer-core .progress-fill{background:var(--pg-coral);}
.sa-prayer-core #nextLevelInfo{color:#647268 !important;font-family:var(--sa-font-mono);font-size:.62rem !important;letter-spacing:0;}
.sa-prayer-core .garden-toolbar{
    top:auto;
    right:24px;
    bottom:24px;
    z-index:30;
    align-items:stretch;
    gap:8px;
}
.sa-prayer-core .garden-toolbar-content{display:flex;align-items:stretch;gap:8px;overflow:hidden;opacity:1;transform:translateX(0);transition:opacity 180ms ease-out,transform 220ms ease-out,max-width 220ms ease-out;max-width:min(520px,calc(100vw - 120px));}
.sa-prayer-core .garden-toolbar-toggle{display:inline-flex;flex:0 0 auto;border-radius:2px;}
.sa-prayer-core .garden-toolbar.is-collapsed .garden-toolbar-content{max-width:104px;opacity:1;transform:translateX(0);pointer-events:auto;}
.sa-prayer-core .garden-toolbar.is-collapsed .garden-chip,
.sa-prayer-core .garden-toolbar.is-collapsed .garden-tool{position:relative;width:48px;min-width:48px;padding:0;justify-content:center;border-radius:50%;}
.sa-prayer-core .garden-toolbar.is-collapsed .garden-chip > span,
.sa-prayer-core .garden-toolbar.is-collapsed .garden-tool > span{display:none;}
.sa-prayer-core .garden-toolbar.is-collapsed .garden-tool small{position:absolute;top:-5px;right:-4px;min-width:18px;height:18px;margin:0;border:2px solid #f8f6ed;font-size:.52rem;}
.sa-prayer-core .garden-toolbar.is-collapsed .garden-toolbar-toggle{border-radius:50%;box-shadow:0 8px 24px rgba(23,42,36,.16);}
.sa-prayer-core .garden-chip,
.sa-prayer-core .garden-tool{
    min-height:44px;
    padding:0 12px;
    color:#172a24;
    background:rgba(248,246,237,.92);
    border:1px solid rgba(23,42,36,.34);
    border-radius:2px;
    box-shadow:none;
    font-size:.72rem;
    letter-spacing:0;
    backdrop-filter:blur(10px);
    transition:background 180ms ease-out,border-color 180ms ease-out;
}
.sa-prayer-core .garden-chip:hover,
.sa-prayer-core .garden-tool:hover{background:#fffdf5;border-color:#172a24;}
.sa-prayer-core .garden-tool small{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    min-width:20px;
    height:20px;
    margin-left:2px;
    color:#fff;
    background:#496c55;
    border-radius:50%;
    font-family:var(--sa-font-mono);
    font-size:.6rem;
}
.sa-lunar-readout{
    display:none;
    position:absolute;
    right:24px;
    top:34%;
    z-index:16;
    width:126px;
    padding:9px 0 9px 12px;
    color:rgba(23,42,36,.74);
    border-left:1px solid currentColor;
    font-family:var(--sa-font-mono);
    font-size:.58rem;
    line-height:1.45;
    letter-spacing:0;
    pointer-events:none;
}
.sa-lunar-readout strong{display:block;font-family:var(--sa-font-display);font-size:.86rem;font-weight:600;}
.scene-night .sa-lunar-readout{display:block;color:rgba(239,236,217,.74);}
.sa-lunar-readout[hidden]{display:none !important;}

/* 活木档案：用叶片、树皮、挂签和微光提升成长质感。 */
.sa-prayer-core .personal-tree{overflow:visible;filter:drop-shadow(0 18px 12px rgba(24,51,36,.2));}
.sa-prayer-core .personal-tree .tree-aura-svg{fill:rgba(225,190,111,.1);opacity:0;filter:url(#prayerTreeGlow);transition:opacity 1s ease;}
.sa-prayer-core .personal-tree.stage-4 .tree-aura-svg,.sa-prayer-core .personal-tree.stage-5 .tree-aura-svg{opacity:.45;}
.sa-prayer-core .personal-tree.stage-6 .tree-aura-svg,.sa-prayer-core .personal-tree.stage-7 .tree-aura-svg,.sa-prayer-core .personal-tree.stage-8 .tree-aura-svg{opacity:.72;}
.scene-night .personal-tree .tree-aura-svg{fill:rgba(228,192,105,.18);}
.sa-prayer-core .personal-tree .tree-shadow{fill:rgba(20,46,32,.2);}
.sa-prayer-core .personal-tree .tree-trunk,.sa-prayer-core .personal-tree .tree-branch{stroke:url(#prayerTrunkGradient);}
.sa-prayer-core .personal-tree .fine-branch{fill:none;stroke:url(#prayerTrunkGradient);stroke-width:5;stroke-linecap:round;}
.sa-prayer-core .personal-tree .trunk-highlight,.sa-prayer-core .personal-tree .trunk-ridge{fill:none;stroke-linecap:round;pointer-events:none;}
.sa-prayer-core .personal-tree .trunk-highlight{stroke:rgba(230,191,135,.28);stroke-width:4;}
.sa-prayer-core .personal-tree .trunk-ridge{stroke:rgba(54,35,29,.3);stroke-width:3;}
.sa-prayer-core .personal-tree .tree-roots path{fill:none;stroke:#624532;stroke-width:8;stroke-linecap:round;}
.sa-prayer-core .personal-tree .leaf{fill:url(#prayerLeafGradient);}
.sa-prayer-core .personal-tree .leaf-light{fill:url(#prayerLeafLightGradient);}
.sa-prayer-core .personal-tree .leaf-vein{fill:none;stroke:rgba(224,235,202,.28);stroke-width:2;stroke-linecap:round;}
.sa-prayer-core .personal-tree .growth-layer{transform:scale(.78);transform-origin:50% 78%;transition:opacity .8s ease,transform 1s cubic-bezier(.22,1,.36,1);}
.sa-prayer-core .personal-tree.stage-2 .stage-2,.sa-prayer-core .personal-tree.stage-3 .stage-2,.sa-prayer-core .personal-tree.stage-3 .stage-3,.sa-prayer-core .personal-tree.stage-4 .stage-2,.sa-prayer-core .personal-tree.stage-4 .stage-3,.sa-prayer-core .personal-tree.stage-4 .stage-4,.sa-prayer-core .personal-tree.stage-5 .stage-2,.sa-prayer-core .personal-tree.stage-5 .stage-3,.sa-prayer-core .personal-tree.stage-5 .stage-4,.sa-prayer-core .personal-tree.stage-5 .stage-5,.sa-prayer-core .personal-tree.stage-6 .stage-2,.sa-prayer-core .personal-tree.stage-6 .stage-3,.sa-prayer-core .personal-tree.stage-6 .stage-4,.sa-prayer-core .personal-tree.stage-6 .stage-5,.sa-prayer-core .personal-tree.stage-6 .stage-6,.sa-prayer-core .personal-tree.stage-7 .stage-2,.sa-prayer-core .personal-tree.stage-7 .stage-3,.sa-prayer-core .personal-tree.stage-7 .stage-4,.sa-prayer-core .personal-tree.stage-7 .stage-5,.sa-prayer-core .personal-tree.stage-7 .stage-6,.sa-prayer-core .personal-tree.stage-7 .stage-7,.sa-prayer-core .personal-tree.stage-8 .growth-layer{transform:scale(1);}
.sa-prayer-core .personal-tree .wish-ribbon path{fill:none;stroke:#8b704e;stroke-width:2;}
.sa-prayer-core .personal-tree .wish-ribbon rect{fill:#d4b15f;stroke:rgba(255,255,255,.5);stroke-width:1;filter:drop-shadow(0 4px 4px rgba(45,34,24,.22));}
.sa-prayer-core .personal-tree .wish-ribbon.ribbon-coral rect{fill:#b95d50;}
.sa-prayer-core .personal-tree .crown-sparkles circle,.sa-prayer-core .personal-tree .evergreen-light{fill:#f2d88c;filter:drop-shadow(0 0 5px rgba(242,216,140,.8));animation:sa-tree-glimmer 3.6s ease-in-out infinite;}
.sa-prayer-core .personal-tree .blossom circle{fill:#d99c98;filter:drop-shadow(0 0 4px rgba(217,156,152,.45));}
.sa-prayer-core .personal-tree .blossom circle:first-child{fill:#e8c267;}
.sa-prayer-core .personal-tree .fruit circle{fill:url(#prayerFruitGradient);}
.sa-prayer-core .personal-tree .fruit .fruit-shine{fill:rgba(255,231,202,.65);}
.sa-prayer-core .personal-tree .fruit-stem{fill:none;stroke:#5d5331;stroke-width:2;stroke-linecap:round;}
.sa-prayer-core .personal-tree .evergreen-crown path{fill:none;stroke:#c8a853;stroke-width:2;stroke-dasharray:5 8;opacity:.6;filter:drop-shadow(0 0 5px rgba(200,168,83,.38));}
.sa-prayer-core .personal-tree.stage-1{width:min(38vw,360px);height:min(50vw,450px);}
.sa-prayer-core .personal-tree.stage-2{width:min(48vw,470px);height:min(61vw,590px);}
.sa-prayer-core .personal-tree.stage-3{width:min(54vw,520px);height:min(66vw,650px);}
.sa-prayer-core .personal-tree.stage-4,
.sa-prayer-core .personal-tree.stage-5,
.sa-prayer-core .personal-tree.stage-6,
.sa-prayer-core .personal-tree.stage-7,
.sa-prayer-core .personal-tree.stage-8{width:min(59vw,580px);height:min(71vw,700px);}
.sa-prayer-core .personal-tree{
    width:min(59vw,580px) !important;
    height:min(71vw,700px) !important;
    animation:none !important;
    transform:translateX(-50%) scaleX(var(--tree-stage-scale,1)) scaleY(var(--tree-height-scale,1));
    transform-origin:50% 100%;
    transition:transform 1.2s cubic-bezier(.22,1,.36,1),filter .6s ease;
}
.sa-prayer-core .personal-tree .seed-crown{transform-box:fill-box;transform-origin:50% 64%;transform:scale(var(--tree-canopy-scale,1));transition:transform 1.2s cubic-bezier(.22,1,.36,1);}
.sa-prayer-core .personal-tree .blossom{opacity:var(--tree-blossom-opacity,1);transition:opacity 1s ease;}
.sa-prayer-core .personal-tree .fruit{opacity:var(--tree-fruit-opacity,1);transition:opacity 1s ease;}
.sa-prayer-core .personal-tree .tree-aura-svg{opacity:var(--tree-aura-opacity,0) !important;}
.sa-prayer-core .personal-tree .tree-flex--upper{
    transform-box:fill-box;
    transform-origin:50% 100%;
    animation:sa-tree-flex var(--gust-duration,5.8s) ease-in-out infinite;
}
.sa-prayer-core .prayer-wish-tag .wish-tag-sway{animation-duration:var(--gust-duration,4.8s);}
@keyframes sa-tree-flex{
    0%,100%{transform:rotate(var(--wind-lean,-.15deg));}
    48%{transform:rotate(var(--wind-gust,.45deg));}
    66%{transform:rotate(0deg);}
}
.scene-night .sa-prayer-core .prayer-card{box-shadow:0 0 14px rgba(232,194,103,.32),0 8px 18px rgba(12,27,19,.34);}
.sa-prayer-core .progress-bar{height:6px;background-color:rgba(31,56,46,.1);background-image:repeating-linear-gradient(90deg,transparent 0 calc(12.5% - 1px),rgba(31,56,46,.24) calc(12.5% - 1px) 12.5%);}
.sa-prayer-core .progress-fill{box-shadow:0 0 7px rgba(184,73,63,.4);transition:width 1.1s cubic-bezier(.22,1,.36,1);}
@keyframes sa-tree-glimmer{0%,100%{opacity:.3;transform:scale(.82)}50%{opacity:1;transform:scale(1.18)}}

/* 祈福签保持后端颜色，但改成纸签，不再像按钮卡片。 */
.sa-prayer-core .prayer-card{
    width:38px;
    height:52px;
    color:#fff;
    border:1px solid rgba(255,255,255,.55);
    border-radius:2px;
    box-shadow:0 7px 14px rgba(20,38,29,.2);
    filter:saturate(.68);
    transition:filter 180ms ease-out,box-shadow 180ms ease-out,translate 180ms ease-out;
}
.sa-prayer-core .prayer-card::before{top:-13px;height:17px;background:#624a34;}
.sa-prayer-core .prayer-card:hover{z-index:40;filter:saturate(.92);box-shadow:0 10px 20px rgba(20,38,29,.3);translate:0 -3px;transform:none;}
.sa-prayer-core .prayer-card i{font-size:.68rem;}
.sa-prayer-core .prayer-tooltip{
    z-index:60;
    max-width:240px;
    padding:9px 11px;
    color:#f8f5ec;
    background:#172a24;
    border:1px solid rgba(248,245,236,.28);
    border-radius:2px;
    font-size:.72rem;
}

/* 右侧仪式书写台。 */
.sa-prayer-core .prayer-actions{
    grid-column:2;
    grid-row:1;
    margin:0;
    padding:24px;
    color:var(--pg-ink);
    background:var(--pg-paper-bright);
    border:1px solid var(--pg-line);
    border-top:4px solid var(--pg-coral);
    border-radius:0;
    box-shadow:0 16px 44px var(--pg-shadow);
}
.sa-ritual-register{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:12px;
    margin:0 0 18px;
    padding:0 0 12px;
    color:var(--pg-ink-soft);
    border-bottom:1px solid var(--pg-line-soft);
    font-family:var(--sa-font-mono);
    font-size:.62rem;
    letter-spacing:0;
}
.sa-ritual-register b{color:var(--pg-coral);font-family:var(--sa-font-display);font-size:1.05rem;font-weight:600;}
.sa-prayer-core .prayer-actions > h2,
.sa-prayer-core .today-prayer-result h2{
    margin:0 0 20px;
    color:var(--pg-ink);
    font-family:var(--sa-font-display);
    font-size:1.45rem;
    font-weight:600;
    line-height:1.25;
    letter-spacing:0;
}
.sa-prayer-core .prayer-actions > h2 i,
.sa-prayer-core .today-prayer-result h2 i{margin-right:8px;color:var(--pg-coral) !important;}
.sa-prayer-core .prayer-form{gap:0;}
.sa-prayer-core .prayer-form .form-group{
    position:relative;
    gap:10px;
    margin:0;
    padding:18px 0 18px 42px;
    border-top:1px solid var(--pg-line-soft);
}
.sa-prayer-core .prayer-form .form-group::before{
    content:attr(data-step);
    position:absolute;
    top:19px;
    left:0;
    display:flex;
    align-items:center;
    justify-content:center;
    width:26px;
    height:26px;
    color:var(--pg-coral);
    border:1px solid var(--pg-coral);
    border-radius:50%;
    font-family:var(--sa-font-mono);
    font-size:.62rem;
}
.sa-prayer-core .prayer-form .form-group > label{
    color:var(--pg-ink-soft) !important;
    font-family:var(--sa-font-mono);
    font-size:.68rem !important;
    font-weight:600;
    letter-spacing:0;
}
.sa-prayer-core .prayer-form > .form-group:first-child > div{
    display:grid !important;
    grid-template-columns:1fr 1fr;
    gap:0 !important;
    margin-top:2px !important;
}
.sa-prayer-core .prayer-form > .form-group:first-child > div > label{
    display:flex !important;
    align-items:center !important;
    justify-content:center;
    gap:8px !important;
    min-height:42px;
    margin:0 !important;
    padding:8px 10px !important;
    color:var(--pg-ink-soft);
    background:transparent !important;
    border:1px solid var(--pg-line) !important;
    border-radius:0 !important;
    box-shadow:none !important;
    font-size:.76rem;
    transform:none !important;
}
.sa-prayer-core .prayer-form > .form-group:first-child > div > label + label{border-left:0 !important;}
.sa-prayer-core .prayer-form > .form-group:first-child > div > label:has(input:checked){
    color:var(--pg-paper-bright);
    background:var(--pg-ink) !important;
    border-color:var(--pg-ink) !important;
    transform:none !important;
}
.sa-prayer-core input[type="radio"]{width:14px;height:14px;accent-color:var(--pg-coral);transform:none;}
.sa-prayer-core .template-grid{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:8px;
}
.sa-prayer-core .template-card{
    position:relative;
    display:grid;
    grid-template-columns:30px minmax(0,1fr);
    grid-template-rows:auto auto;
    column-gap:9px;
    align-content:center;
    min-height:94px;
    padding:12px;
    overflow:hidden;
    color:var(--pg-ink);
    background:transparent;
    border:1px solid var(--pg-line-soft);
    border-radius:4px;
    text-align:left;
    cursor:pointer;
    transition:background 180ms ease-out,border-color 180ms ease-out;
}
.sa-prayer-core .template-card::before{
    content:"";
    position:absolute;
    inset:0 auto 0 0;
    width:3px;
    background:var(--template-color,var(--pg-brass));
}
.sa-prayer-core .template-card:hover{background:rgba(73,108,85,.06);border-color:var(--pg-moss);box-shadow:none;transform:none;}
.sa-prayer-core .template-card.selected{
    color:#f8f5ec;
    background:#29483a;
    border-color:#29483a;
}
.sa-prayer-core .template-icon{grid-row:1 / span 2;margin:0;font-size:1rem;text-align:center;align-self:center;}
.sa-prayer-core .template-title{margin:0;font-family:var(--sa-font-display);font-size:.84rem;font-weight:650;}
.sa-prayer-core .template-content{
    height:auto;
    margin-top:3px;
    color:var(--pg-ink-soft);
    font-size:.64rem;
    line-height:1.4;
    -webkit-line-clamp:2;
}
.sa-prayer-core .template-card.selected .template-content{color:#ced9d1;}
.sa-prayer-core .custom-input{
    width:100%;
    min-height:170px;
    padding:18px 16px !important;
    color:var(--pg-ink);
    background-color:var(--pg-paper-bright) !important;
    background-image:repeating-linear-gradient(to bottom,transparent 0 31px,var(--pg-line-soft) 32px) !important;
    border:1px solid var(--pg-line) !important;
    border-radius:2px !important;
    box-shadow:inset 4px 0 0 rgba(180,83,69,.12);
    font-family:var(--sa-font-body) !important;
    font-size:.92rem;
    line-height:32px;
    resize:vertical;
}
.sa-prayer-core .custom-input:focus{outline:3px solid rgba(184,137,63,.28);outline-offset:2px;border-color:var(--pg-brass) !important;}
.sa-prayer-core #charCount{color:var(--pg-ink-soft) !important;font-family:var(--sa-font-mono);font-size:.62rem !important;letter-spacing:0;}
.sa-prayer-core .submit-btn{
    display:flex;
    align-items:center;
    justify-content:space-between;
    width:100%;
    min-height:52px;
    margin-top:18px;
    padding:12px 16px;
    color:#f8f5ec !important;
    background:var(--pg-coral) !important;
    border:1px solid #8f4035 !important;
    border-radius:2px !important;
    box-shadow:none !important;
    font-family:var(--sa-font-body);
    font-size:.9rem;
    font-weight:650;
    letter-spacing:0;
    transition:background 180ms ease-out,border-color 180ms ease-out !important;
}
.sa-prayer-core .submit-btn::after{content:"安放于树";font-family:var(--sa-font-mono);font-size:.58rem;font-weight:400;opacity:.76;}
.sa-prayer-core .submit-btn:hover{background:#963f34 !important;border-color:#73332b !important;box-shadow:none !important;transform:none !important;}
.sa-prayer-core .submit-btn:disabled{opacity:.55;cursor:not-allowed;}
.sa-prayer-core .today-prayer-result{
    padding:4px 0 4px 18px;
    color:var(--pg-ink);
    background:transparent;
    border:0;
    border-left:3px solid var(--pg-coral);
}
.sa-prayer-core .today-prayer-result p{margin:14px 0;color:var(--pg-ink);font-family:var(--sa-font-display);font-size:1.05rem;line-height:1.7;}
.sa-prayer-core .today-prayer-result small{color:var(--pg-ink-soft);font-size:.68rem;}

/* 愿望档案采用连续时间轴，不套通用卡片。 */
.sa-prayer-core .prayer-history{
    grid-column:2;
    grid-row:2;
    margin:0;
    padding:21px 24px;
    color:var(--pg-ink);
    background:transparent;
    border:1px solid var(--pg-line);
    border-radius:0;
    box-shadow:none;
}
.sa-prayer-core .prayer-history > h2{
    margin:0 0 14px;
    color:var(--pg-ink);
    font-family:var(--sa-font-display);
    font-size:1.08rem;
    font-weight:600;
    letter-spacing:0;
}
.sa-prayer-core .prayer-history > h2 i{margin-right:8px;color:var(--pg-brass) !important;}
.sa-prayer-core #historyList{position:relative;}
.sa-prayer-core #historyList::before{
    content:"";
    position:absolute;
    top:7px;
    bottom:7px;
    left:7px;
    width:1px;
    background:var(--pg-line);
}
.sa-prayer-core .history-item{
    position:relative;
    display:flex;
    align-items:flex-start;
    gap:10px;
    margin:0;
    padding:10px 0 12px 27px;
    color:var(--pg-ink);
    background:transparent;
    border:0;
    border-bottom:1px solid var(--pg-line-soft);
    border-radius:0;
    box-shadow:none;
    transition:background 180ms ease-out;
}
.sa-prayer-core .history-item::before{
    content:"";
    position:absolute;
    top:17px;
    left:3px;
    width:9px;
    height:9px;
    background:var(--pg-paper);
    border:2px solid var(--pg-coral);
    border-radius:50%;
}
.sa-prayer-core .history-item:hover{background:rgba(73,108,85,.05);box-shadow:none;transform:none;}
.sa-prayer-core .history-content{margin-right:0;}
.sa-prayer-core .history-date{color:var(--pg-ink-soft);font-family:var(--sa-font-mono);font-size:.6rem;font-weight:500;letter-spacing:0;text-shadow:none;}
.sa-prayer-core .history-date::before{content:"";display:none;}
.sa-prayer-core .history-text{margin-top:5px;padding-left:0;color:var(--pg-ink);font-family:var(--sa-font-body);font-size:.78rem;line-height:1.55;text-shadow:none;}
.sa-prayer-core .history-text::before{content:"";display:none;}

/* 装配抽屉与提交反馈。 */
.sa-prayer-core .wardrobe-dialog{
    width:min(680px,calc(100vw - 28px));
    max-height:min(760px,calc(100dvh - 28px));
    margin:auto;
    padding:0;
    color:var(--pg-ink);
    background:var(--pg-paper-bright);
    border:1px solid var(--pg-line);
    border-radius:4px;
    box-shadow:0 28px 80px rgba(14,28,22,.35);
}
.sa-prayer-core .wardrobe-dialog::backdrop{background:rgba(13,27,22,.66);backdrop-filter:blur(4px);}
.sa-prayer-core .wardrobe-head{padding:18px 20px;border-bottom:1px solid var(--pg-line);}
.sa-prayer-core .wardrobe-dialog[open]{display:flex;flex-direction:column;overflow:hidden;}
.sa-prayer-core .wardrobe-head strong{font-family:var(--sa-font-display);font-size:1.15rem;}
.sa-prayer-core .wardrobe-subtitle{margin-top:4px;color:var(--pg-ink-soft);font-size:.72rem;}
.sa-prayer-core .wardrobe-close{color:var(--pg-ink);}
.sa-prayer-core .wardrobe-tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));flex:0 0 auto;padding:0 20px;border-bottom:1px solid var(--pg-line);background:color-mix(in srgb,var(--pg-paper-bright) 90%,var(--pg-moss));}
.sa-prayer-core .wardrobe-tab{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:7px;min-width:0;min-height:46px;padding:0 10px;color:var(--pg-ink-soft);background:transparent;border:0;cursor:pointer;font-size:.76rem;}
.sa-prayer-core .wardrobe-tab::after{content:"";position:absolute;right:12px;bottom:-1px;left:12px;height:3px;background:transparent;}
.sa-prayer-core .wardrobe-tab.is-active{color:var(--pg-ink);font-weight:650;}
.sa-prayer-core .wardrobe-tab.is-active::after{background:var(--pg-coral);}
.sa-prayer-core .wardrobe-tab i{font-size:.76rem;}
.sa-prayer-core .wardrobe-body{min-height:0;padding:20px;overflow:auto;}
.sa-prayer-core .wardrobe-rule{color:var(--pg-ink-soft);}
.sa-prayer-core .wardrobe-grid{grid-template-columns:repeat(3,minmax(0,1fr));}
.sa-prayer-core .wardrobe-dialog[data-wardrobe-view="achievements"] .wardrobe-grid,
.sa-prayer-core .wardrobe-dialog[data-wardrobe-view="titles"] .wardrobe-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
.sa-prayer-core .wardrobe-item{background:transparent;border-color:var(--pg-line-soft);border-radius:3px;}
.sa-prayer-core .wardrobe-item.is-equipped{border-color:var(--pg-moss);box-shadow:inset 0 0 0 1px var(--pg-moss);}
.sa-prayer-core .wardrobe-item span{color:var(--pg-ink-soft);}
.sa-prayer-core .wardrobe-item strong,.sa-prayer-core .wardrobe-item span{min-width:0;overflow-wrap:anywhere;}
.sa-prayer-core .wardrobe-empty{grid-column:1/-1;display:grid;place-items:center;min-height:190px;padding:28px;text-align:center;border:1px dashed var(--pg-line);}
.sa-prayer-core .wardrobe-empty i{margin-bottom:12px;color:var(--pg-moss);font-size:1.5rem;}
.sa-prayer-core .wardrobe-empty strong,.sa-prayer-core .wardrobe-empty span{display:block;}
.sa-prayer-core .wardrobe-empty span{margin-top:7px;color:var(--pg-ink-soft);font-size:.76rem;}
.sa-prayer-core .achievement-summary{grid-column:1/-1;display:grid;grid-template-columns:auto minmax(120px,1fr);align-items:center;gap:14px;padding:12px 14px;color:var(--pg-ink);background:color-mix(in srgb,var(--pg-paper-bright) 84%,var(--pg-brass));border:1px solid var(--pg-line);font-size:.74rem;font-weight:650;}
.sa-prayer-core .achievement-progress{display:block;height:6px;overflow:hidden;background:color-mix(in srgb,var(--pg-line) 65%,transparent);border-radius:1px;}
.sa-prayer-core .achievement-progress i{display:block;height:100%;background:linear-gradient(90deg,var(--pg-moss),var(--pg-brass));transition:width .25s ease;}
.sa-prayer-core .achievement-item{--achievement-accent:var(--pg-moss);display:grid;grid-template-columns:44px minmax(0,1fr);gap:12px;min-width:0;padding:14px;background:color-mix(in srgb,var(--pg-paper-bright) 96%,var(--achievement-accent));border:1px solid var(--pg-line-soft);border-left:3px solid var(--achievement-accent);}
.sa-prayer-core .achievement-item.rarity-uncommon,.sa-prayer-core .title-item.rarity-uncommon{--achievement-accent:#557d66;}
.sa-prayer-core .achievement-item.rarity-rare,.sa-prayer-core .title-item.rarity-rare{--achievement-accent:#3e7080;}
.sa-prayer-core .achievement-item.rarity-epic,.sa-prayer-core .title-item.rarity-epic{--achievement-accent:#895b79;}
.sa-prayer-core .achievement-item.rarity-legendary,.sa-prayer-core .title-item.rarity-legendary{--achievement-accent:#b06a38;}
.sa-prayer-core .achievement-item.is-locked,.sa-prayer-core .title-item.is-locked{filter:saturate(.55);opacity:.75;}
.sa-prayer-core .achievement-item__seal{display:grid;place-items:center;width:44px;height:44px;color:var(--achievement-accent);background:color-mix(in srgb,var(--achievement-accent) 12%,transparent);border:1px solid color-mix(in srgb,var(--achievement-accent) 48%,var(--pg-line));border-radius:50%;}
.sa-prayer-core .achievement-item__copy{display:grid;align-content:start;gap:8px;min-width:0;}
.sa-prayer-core .achievement-item__head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;min-width:0;}
.sa-prayer-core .achievement-item__head strong{min-width:0;font-family:var(--sa-font-display);font-size:.9rem;overflow-wrap:anywhere;}
.sa-prayer-core .achievement-item__head small{flex:0 0 auto;color:var(--achievement-accent);font-size:.62rem;}
.sa-prayer-core .achievement-item p,.sa-prayer-core .title-item p{margin:0;color:var(--pg-ink-soft);font-size:.72rem;line-height:1.55;overflow-wrap:anywhere;}
.sa-prayer-core .achievement-item__progress{display:grid;grid-template-columns:auto minmax(60px,1fr);align-items:center;gap:9px;color:var(--pg-ink-soft);font-family:var(--sa-font-mono);font-size:.61rem;}
.sa-prayer-core .achievement-item__rewards{color:var(--pg-ink);font-size:.66rem;line-height:1.5;overflow-wrap:anywhere;}
.sa-prayer-core .achievement-item__action{justify-self:start;padding-bottom:2px;color:var(--achievement-accent);border-bottom:1px solid currentColor;font-size:.7rem;text-decoration:none;}
.sa-prayer-core .title-item{--achievement-accent:var(--pg-moss);display:grid;grid-template-columns:38px minmax(0,1fr) auto;gap:6px 11px;align-items:start;min-width:0;padding:14px;background:color-mix(in srgb,var(--pg-paper-bright) 96%,var(--achievement-accent));border:1px solid var(--pg-line-soft);border-top:3px solid var(--achievement-accent);}
.sa-prayer-core .title-item.is-equipped{box-shadow:inset 0 0 0 1px var(--achievement-accent);}
.sa-prayer-core .title-item__seal{grid-row:1/4;display:grid;place-items:center;width:38px;height:38px;color:var(--achievement-accent);background:color-mix(in srgb,var(--achievement-accent) 12%,transparent);border:1px solid color-mix(in srgb,var(--achievement-accent) 45%,var(--pg-line));border-radius:50%;}
.sa-prayer-core .title-item > strong{min-width:0;font-family:var(--sa-font-display);font-size:.9rem;overflow-wrap:anywhere;}
.sa-prayer-core .title-item > small{color:var(--achievement-accent);font-size:.61rem;white-space:nowrap;}
.sa-prayer-core .title-item p,.sa-prayer-core .title-item__meta,.sa-prayer-core .title-item__action{grid-column:2/-1;}
.sa-prayer-core .title-item__meta{color:var(--achievement-accent);font-size:.64rem;}
.sa-prayer-core .title-item__action{min-height:34px;margin-top:5px;color:#fff;background:var(--achievement-accent);border:0;cursor:pointer;font-size:.7rem;}
.sa-prayer-core .title-item__action:disabled{color:var(--pg-ink-soft);background:color-mix(in srgb,var(--pg-line) 72%,var(--pg-paper-bright));cursor:not-allowed;}
.sa-prayer-core .wardrobe-footer{display:flex;flex:0 0 auto;justify-content:flex-end;gap:8px;padding:14px 20px;border-top:1px solid var(--pg-line);background:var(--pg-paper-bright);}
.sa-prayer-core .wardrobe-reset{min-height:40px;padding:0 14px;color:var(--pg-moss);background:transparent;border:1px solid var(--pg-moss);border-radius:2px;cursor:pointer;}
.sa-prayer-core .wardrobe-reset[hidden]{display:none;}
.sa-prayer-core .wardrobe-reset:disabled{opacity:.55;cursor:wait;}
.sa-prayer-core .wardrobe-done{min-height:40px;padding:0 18px;color:#fff;background:var(--pg-moss);border:0;border-radius:2px;cursor:pointer;}
.sa-prayer-body .success-message{
    padding:16px 20px;
    color:#f8f5ec;
    background:#29483a;
    border:1px solid #78917e;
    border-left:4px solid var(--pg-brass);
    border-radius:2px;
    box-shadow:0 18px 50px rgba(13,27,22,.28);
    font-size:.88rem;
}
.sa-prayer-body .prayer-status{
    position:fixed;
    z-index:2400;
    right:clamp(14px,3vw,36px);
    bottom:clamp(14px,3vw,32px);
    width:min(390px,calc(100vw - 28px));
    padding:15px 44px 15px 18px;
    color:#f8f5ec;
    background:rgba(26,62,47,.96);
    border:1px solid #78917e;
    border-left:4px solid var(--pg-brass);
    box-shadow:0 18px 50px rgba(13,27,22,.3);
    font-size:.84rem;
    line-height:1.6;
    overflow-wrap:anywhere;
}
.sa-prayer-body .prayer-status.is-error{background:rgba(103,45,40,.97);border-color:#b66a60;border-left-color:#e2b76d;}
.sa-prayer-body .prayer-status[hidden]{display:none;}
.sa-prayer-core .prayer-wish-preview,.sa-prayer-core .prayer-wish-dialog__body p{overflow-wrap:anywhere;}
.sa-prayer-core .prayer-wish-dialog{max-height:calc(100dvh - 28px);margin:auto;border-top:4px solid var(--pg-coral);background:linear-gradient(90deg,rgba(184,73,63,.045) 0 1px,transparent 1px 100%),var(--pg-paper-bright);background-size:22px 100%;}
.sa-prayer-core .prayer-wish-dialog__head{padding:16px 18px;background:rgba(248,245,236,.92);}
.sa-prayer-core .prayer-wish-dialog__head h3{font-family:var(--sa-font-display);font-size:1.15rem;}
.sa-prayer-core .prayer-wish-dialog__body{padding:26px 28px 30px;}
.sa-prayer-core .prayer-wish-dialog__body p{padding-left:16px;border-left:2px solid var(--pg-coral);font-family:var(--sa-font-display);font-size:1.1rem;}
.sa-prayer-core .prayer-wish-dialog__meta{font-family:var(--sa-font-mono);}

.sa-foreground-weather{position:absolute;inset:0;z-index:9;display:none;overflow:hidden;pointer-events:none;}
.sa-foreground-weather i{position:absolute;top:-14%;left:var(--weather-x);width:1px;height:clamp(12px,2.6vh,30px);opacity:var(--fallback-rain-opacity,0);background:linear-gradient(to bottom,transparent,rgba(225,239,238,.95));transform:skewX(var(--rain-skew,-9deg));animation:sa-front-rain var(--fallback-rain-speed,var(--weather-speed)) var(--weather-delay) linear infinite;}
.scene-rain .sa-foreground-weather,.scene-storm .sa-foreground-weather{display:block;}
.sa-prayer-core .tree-container.sa-webgl-ready .sa-foreground-weather{display:none !important;}
.sa-weather-impacts{position:absolute;right:5%;bottom:7%;left:5%;height:4%;opacity:.2;background-image:radial-gradient(ellipse at center,transparent 55%,rgba(225,238,232,.76) 58% 60%,transparent 64%);background-size:148px 24px;background-position:0 50%;mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent);animation:sa-impact-drift 2.6s linear infinite;}
@keyframes sa-front-rain{to{translate:var(--wind-offset,12px) 118vh;}}
@keyframes sa-impact-drift{to{background-position:74px 50%;}}
.sa-prayer-body .cherry-blossom,
.sa-prayer-body .snowflake,
.sa-prayer-body .lantern,
.sa-prayer-body .heart,
.sa-prayer-body .falling-leaf{display:none !important;}
.sa-prayer-foot{
    display:flex;
    align-items:center;
    justify-content:space-between;
    width:min(100%,1680px);
    margin:24px auto 0;
    padding:14px 24px calc(14px + env(safe-area-inset-bottom,0px));
    color:var(--pg-ink-soft);
    border-top:1px solid var(--pg-line);
    font-family:var(--sa-font-mono);
    font-size:.58rem;
    letter-spacing:0;
    text-transform:uppercase;
}
.sa-prayer-foot__no b{color:var(--pg-coral);font-weight:600;}

@media (max-width:980px){
    .sa-prayer-core .main-container{grid-template-columns:minmax(0,1fr);grid-template-rows:auto;padding-top:14px !important;}
    .sa-prayer-core .tree-container{position:relative;top:auto;order:-1;grid-column:1;grid-row:auto;height:68svh !important;min-height:560px;max-height:760px;}
    .sa-prayer-core .prayer-actions,.sa-prayer-core .prayer-history{grid-column:1;grid-row:auto;}
    .sa-prayer-core .prayer-actions{display:block;}
}
@media (max-width:600px){
    .sa-prayer-head__inner{grid-template-columns:38px minmax(0,1fr) auto;gap:10px;min-height:66px;padding:8px 12px;}
    .sa-prayer-back{width:36px;height:36px;}
    .sa-prayer-title{font-size:1.2rem;}
    .sa-prayer-kicker{font-size:.52rem;}
    .sa-prayer-head__season{min-width:98px;padding-left:10px;}
    .sa-prayer-head__season-copy{display:flex;gap:4px;align-items:baseline;white-space:nowrap;}
    .sa-prayer-head__season em{font-size:.56rem;}
    .sa-prayer-head__season i{display:inline;color:#b9c8bd;font-size:.58rem;}
    .sa-prayer-head__season strong{display:inline;margin-top:0;font-size:.7rem;}
    .sa-prayer-head__season small{display:none;}
    .sa-prayer-core .header{padding:0 12px !important;overflow:hidden;}
    .sa-prayer-core .header .header-content{min-height:46px;padding:6px 0;overflow-x:auto;scrollbar-width:none;}
    .sa-prayer-core .header .header-content::-webkit-scrollbar{display:none;}
    .sa-prayer-core .user-info{flex-wrap:nowrap;justify-content:flex-start;width:max-content;gap:8px;}
    .sa-prayer-core .stats > span{display:inline-flex !important;min-height:30px;padding:5px 9px;font-size:.58rem;}
    .sa-prayer-core .lunar-info,.sa-prayer-core .user-info > span{display:none;}
    .sa-prayer-core .main-container{gap:14px;padding:12px 12px 0 !important;}
    .sa-prayer-core .tree-container{height:520px !important;min-height:520px;border-left:0;border-right:0;}
    .sa-prayer-core .tree-info{top:16px;left:16px;width:calc(100% - 32px);padding:12px 13px;}
    .sa-prayer-core .tree-info:not(.is-collapsed){padding-right:48px;}
    .sa-prayer-core .tree-info.is-collapsed{width:48px;padding:0;}
    .sa-prayer-core .tree-description{margin-bottom:7px;}
    .sa-season-marker{top:128px;right:16px;}
    .sa-prayer-core .celestial{top:28%;right:14%;width:55px;height:55px;}
    .sa-lunar-readout{display:none !important;}
    .sa-prayer-core .garden-toolbar{right:16px;bottom:16px;left:16px;justify-content:flex-end;align-items:center;}
    .sa-prayer-core .garden-toolbar-toggle{display:inline-flex;}
    .sa-prayer-core .garden-toolbar-content{max-width:calc(100vw - 92px);}
    .sa-prayer-core .garden-chip{max-width:210px;overflow:hidden;font-size:.64rem;text-overflow:ellipsis;white-space:nowrap;}
    .sa-prayer-core .garden-tool{font-size:.64rem;}
    .sa-prayer-core .personal-tree{bottom:9%;}
    .sa-prayer-core .personal-tree.stage-1{width:270px;height:350px;}
    .sa-prayer-core .personal-tree.stage-2{width:330px;height:410px;}
    .sa-prayer-core .personal-tree.stage-3{width:350px;height:430px;}
    .sa-prayer-core .personal-tree.stage-4,
    .sa-prayer-core .personal-tree.stage-5,
    .sa-prayer-core .personal-tree.stage-6,
    .sa-prayer-core .personal-tree.stage-7,
    .sa-prayer-core .personal-tree.stage-8{width:360px;height:445px;}
    .sa-prayer-core .personal-tree{width:360px !important;height:445px !important;}
    .sa-prayer-core .prayer-actions{padding:20px 17px;}
    .sa-prayer-core .prayer-form .form-group{padding-left:37px;}
    .sa-prayer-core .template-grid{grid-template-columns:1fr;}
    .sa-prayer-core .template-card{min-height:82px;}
    .sa-prayer-core .custom-input{min-height:150px;}
    .sa-prayer-core .prayer-history{padding:18px 16px;}
    .sa-prayer-core .wardrobe-grid{grid-template-columns:1fr;}
    .sa-prayer-core .wardrobe-dialog[data-wardrobe-view="achievements"] .wardrobe-grid,
    .sa-prayer-core .wardrobe-dialog[data-wardrobe-view="titles"] .wardrobe-grid{grid-template-columns:1fr;}
    .sa-prayer-core .wardrobe-tabs{padding-right:16px;padding-left:16px;}
    .sa-prayer-core .wardrobe-tab{min-height:44px;padding:0 6px;}
    .sa-prayer-core .achievement-summary{grid-template-columns:1fr;gap:8px;}
    .sa-prayer-core .achievement-item{grid-template-columns:38px minmax(0,1fr);gap:10px;padding:12px;}
    .sa-prayer-core .achievement-item__seal{width:38px;height:38px;}
    .sa-prayer-core .achievement-item__head{display:grid;gap:2px;}
    .sa-prayer-core .achievement-item__head small{justify-self:start;}
    .sa-prayer-core .wardrobe-head,.sa-prayer-core .wardrobe-body,.sa-prayer-core .wardrobe-footer{padding-right:16px;padding-left:16px;}
    .sa-prayer-core .prayer-wish-dialog__body{padding:22px 20px 26px;}
    .sa-prayer-foot{padding-right:12px;padding-left:12px;}
    .sa-prayer-foot > span:first-child{display:none;}
    .sa-prayer-foot__no{margin-left:auto;}
}

@media (hover:none),(pointer:coarse){.sa-prayer-core .prayer-wish-preview{display:none !important;}}

/* ==========================================================================
   聊天 / 404 / 邀请 等其它独立页基础重排
   ========================================================================== */
html[data-sa-standalone] .chat-container{border:1px solid var(--sa-line-strong);border-radius:0;overflow:hidden;}
html[data-sa-standalone] .chat-header{background:var(--sa-surface-2);border-bottom:2px solid var(--sa-inkline);}
html[data-sa-standalone] .input-btn.send,html[data-sa-standalone] .action-btn.primary{background:var(--sa-red);border-color:var(--sa-red-deep);}
html[data-sa-standalone] .input-btn.encrypt.active{color:var(--sa-green);border-color:var(--sa-green);}
html[data-sa-standalone] .error-icon{color:var(--sa-red);}
html[data-sa-standalone] .error-title{border-bottom:2px solid var(--sa-inkline);padding-bottom:12px;}

@media (prefers-reduced-motion:reduce){
    html[data-sa-standalone] *,html[data-sa-standalone] *::before,html[data-sa-standalone] *::after{
        animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important;
    }
    .sa-prayer-core .sa-foreground-weather{display:none !important;}
}
@media (max-width:720px){
    html[data-sa-standalone] .chat-container{border-left:none;border-right:none;}
    .sa-prayer-head__inner,.sa-prayer-foot{padding-left:14px;padding-right:14px;}
}

/* ==========================================================================
   敦煌启发祈愿窟：所有纹样均由 CSS 几何重新构成，不使用壁画图像。
   ========================================================================== */
:root{
    --dh-sky:var(--dunhuang-sky,#577785);
    --dh-earth:var(--dunhuang-ground,#b9784f);
    --dh-mineral:var(--dunhuang-mineral,#496c61);
    --dh-cinnabar:var(--dunhuang-accent,#a94738);
    --dh-gold:var(--dunhuang-light,#d6a853);
    --dh-ink:#2d2522;
    --dh-cave:#4a3028;
    --dh-plaster:#d2aa78;
    --dh-paper:#eee0c2;
}
html[data-style="dunhuang"]{
    background:#241d1b;
}
html[data-style="dunhuang"] .sa-prayer-body{
    color:var(--dh-ink);
    background:
        linear-gradient(rgba(40,28,24,.74),rgba(40,28,24,.74)),
        repeating-linear-gradient(96deg,transparent 0 38px,rgba(230,190,125,.035) 39px 40px),
        #3c2925;
}
html[data-style="dunhuang"] .sa-prayer-head{
    color:#f5e8cb;
    background:linear-gradient(90deg,#34211e 0%,#5f3429 48%,#34211e 100%);
    border-bottom:1px solid rgba(226,176,91,.54);
    box-shadow:0 10px 30px rgba(23,13,11,.32);
}
html[data-style="dunhuang"] .sa-prayer-head::after{
    content:"";position:absolute;right:0;bottom:-1px;left:0;height:5px;opacity:.72;
    background:repeating-linear-gradient(90deg,var(--dh-gold) 0 8px,transparent 8px 13px,var(--dh-cinnabar) 13px 19px,transparent 19px 24px);
}
html[data-style="dunhuang"] .sa-prayer-back{color:#f4dfb2;border-color:rgba(229,184,104,.5);background:rgba(43,25,22,.55);}
html[data-style="dunhuang"] .sa-prayer-kicker{color:#dfbd7f;}
html[data-style="dunhuang"] .sa-prayer-title{color:#fff1cf;font-weight:600;}
html[data-style="dunhuang"] .sa-prayer-head__season{border-left-color:rgba(230,190,117,.42);}
html[data-style="dunhuang"] .sa-prayer-head__season strong{color:#fff1cf;}
html[data-style="dunhuang"] .sa-prayer-head__season small{max-width:220px;color:#d9bea0;white-space:normal;line-height:1.2;}
html[data-style="dunhuang"] .sa-prayer-core .header{background:#d8bd91;border-color:#8e684d;}
html[data-style="dunhuang"] .sa-prayer-core .tree-container{
    isolation:isolate;
    overflow:hidden;
    background:
        radial-gradient(ellipse at 50% 25%,color-mix(in srgb,var(--dh-sky) 78%,#e2c89a) 0 18%,transparent 55%),
        linear-gradient(180deg,var(--dh-sky),color-mix(in srgb,var(--dh-earth) 74%,#625046));
    border:8px solid #5a382e;
    border-top-width:14px;
    border-radius:48% 48% 4px 4px / 18% 18% 4px 4px;
    box-shadow:inset 0 0 0 3px #a66b43,inset 0 0 0 7px rgba(225,177,91,.62),0 22px 55px rgba(24,14,12,.32);
}
html[data-style="dunhuang"] .sa-prayer-core .tree-container::before{
    content:"";position:absolute;z-index:13;inset:0;pointer-events:none;
    border-radius:inherit;
    box-shadow:inset 70px 0 90px rgba(48,27,23,.54),inset -70px 0 90px rgba(48,27,23,.54),inset 0 75px 90px rgba(45,26,22,.34);
}
html[data-style="dunhuang"] .sa-prayer-core .tree-info{
    top:auto;
    bottom:22px;
    left:22px;
    width:min(225px,calc(100% - 44px));
    padding:11px 12px;
    background:rgba(239,226,195,.78);
    border-color:rgba(102,63,45,.38);
    box-shadow:0 9px 22px rgba(48,27,23,.14);
    backdrop-filter:blur(7px);
}
html[data-style="dunhuang"] .sa-prayer-core .tree-info:not(.is-collapsed){padding-right:43px;}
html[data-style="dunhuang"] .sa-prayer-core .tree-info.is-collapsed{width:48px;height:48px;padding:0;background:transparent;border-color:transparent;box-shadow:none;backdrop-filter:none;}
html[data-style="dunhuang"] .sa-prayer-core .tree-info > .hud-toggle{top:6px;right:6px;width:30px;min-width:30px;height:30px;}
html[data-style="dunhuang"] .sa-prayer-core .tree-level{font-size:.84rem;}
html[data-style="dunhuang"] .sa-prayer-core .tree-description{margin-bottom:7px;font-size:.66rem;}
html[data-style="dunhuang"] .sa-prayer-core #nextLevelInfo{font-size:.56rem !important;}
html[data-style="dunhuang"] .sa-prayer-core .personal-tree .tree-aura-svg{fill:color-mix(in srgb,var(--dh-gold) 9%,transparent);stroke:color-mix(in srgb,var(--dh-gold) 35%,transparent);stroke-width:1;}
html[data-style="dunhuang"] .sa-prayer-core .personal-tree .tree-trunk,
html[data-style="dunhuang"] .sa-prayer-core .personal-tree .tree-branch{stroke:#673f32;filter:drop-shadow(0 2px 0 rgba(219,164,79,.2));}
html[data-style="dunhuang"] .sa-prayer-core .personal-tree .fine-branch{stroke:#80503b;}
html[data-style="dunhuang"] .sa-prayer-core .personal-tree .trunk-highlight{stroke:rgba(228,183,103,.58);}
html[data-style="dunhuang"] .sa-prayer-core .personal-tree .trunk-ridge{stroke:rgba(64,34,29,.48);}
html[data-style="dunhuang"] .sa-prayer-core .personal-tree .leaf{fill:color-mix(in srgb,var(--dh-mineral) 82%,#263e39);stroke:color-mix(in srgb,var(--dh-gold) 64%,transparent);stroke-width:1.5;paint-order:stroke fill;}
html[data-style="dunhuang"] .sa-prayer-core .personal-tree .leaf-light{fill:color-mix(in srgb,var(--dh-mineral) 70%,var(--dh-gold));stroke:color-mix(in srgb,var(--dh-gold) 70%,transparent);stroke-width:1.5;paint-order:stroke fill;}
html[data-style="dunhuang"] .sa-prayer-core .personal-tree .leaf-vein{stroke:rgba(231,196,125,.58);}
html[data-style="dunhuang"] .sa-prayer-core .personal-tree .wish-ribbon rect{rx:0;fill:var(--dh-gold);stroke:#6d3a30;}
html[data-style="dunhuang"] .sa-prayer-core .personal-tree .wish-ribbon.ribbon-coral rect{fill:var(--dh-cinnabar);}
.dh-tree-aureole,.dh-tree-pedestal{display:none;}
.dh-tree-canopy{display:none;}
html[data-style="dunhuang"] .dh-tree-aureole,
html[data-style="dunhuang"] .dh-tree-pedestal{display:block;transform:scale(var(--tree-stage-scale,1));transform-box:view-box;transform-origin:50% 94%;transition:transform 1s cubic-bezier(.22,1,.36,1);}
html[data-style="dunhuang"] .dh-tree-canopy{display:block;}
html[data-style="dunhuang"] .dh-tree-canopy path{fill:color-mix(in srgb,var(--dh-mineral) 78%,#263a36);stroke:color-mix(in srgb,var(--dh-gold) 74%,transparent);stroke-width:2;paint-order:stroke fill;filter:drop-shadow(0 4px 3px rgba(47,28,23,.18));}
html[data-style="dunhuang"] .dh-tree-canopy .growth-layer:nth-child(even) path{fill:color-mix(in srgb,var(--dh-mineral) 64%,var(--dh-gold));}
html[data-style="dunhuang"] .personal-tree .seed-crown ellipse,
html[data-style="dunhuang"] .personal-tree .growth-layer > ellipse.leaf,
html[data-style="dunhuang"] .personal-tree .growth-layer > ellipse.leaf-light{opacity:0;}
html[data-style="dunhuang"] .dh-tree-aureole{fill:none;stroke:color-mix(in srgb,var(--dh-gold) 38%,transparent);stroke-width:1.3;stroke-dasharray:2 6;}
html[data-style="dunhuang"] .dh-tree-aureole ellipse{fill:color-mix(in srgb,var(--dh-cinnabar) 12%,transparent);stroke:color-mix(in srgb,var(--dh-gold) 42%,transparent);stroke-dasharray:none;}
html[data-style="dunhuang"] .dh-tree-pedestal path:first-child{fill:color-mix(in srgb,var(--dh-earth) 72%,#5f352c);stroke:var(--dh-gold);stroke-width:1.4;}
html[data-style="dunhuang"] .dh-tree-pedestal path:not(:first-child){fill:color-mix(in srgb,var(--dh-cinnabar) 76%,#7b3c32);stroke:color-mix(in srgb,var(--dh-gold) 72%,transparent);stroke-width:1;}
.dh-cave-ornament{position:absolute;inset:0;z-index:7;pointer-events:none;overflow:hidden;}
.tree-container:not(.equip-dunhuang-caisson) .dh-caisson,
.tree-container:not(.equip-dunhuang-ribbon) .dh-ribbon,
.tree-container:not(.equip-dunhuang-lotus-altar) .dh-lamp-row,
.tree-container:not(.equip-dunhuang-sand-weather) .dh-term-particles{display:none;}
.dh-caisson{
    position:absolute;top:-8%;left:50%;width:min(44%,350px);aspect-ratio:1;translate:-50% 0;opacity:.42;
    border:1px solid color-mix(in srgb,var(--dh-gold) 46%,transparent);border-radius:50%;
    background:
        radial-gradient(circle,transparent 0 20%,color-mix(in srgb,var(--dh-gold) 54%,transparent) 20.5% 21%,transparent 21.5% 35%,color-mix(in srgb,var(--dh-mineral) 36%,transparent) 35.5% 36%,transparent 36.5%);
    animation:dh-caisson-breathe 12s ease-in-out infinite;
}
.dh-caisson::before,.dh-caisson::after{content:"";position:absolute;border-radius:50%;}
.dh-caisson::before{inset:24%;border:1px solid color-mix(in srgb,var(--dh-gold) 48%,transparent);background:radial-gradient(ellipse at 50% 15%,color-mix(in srgb,var(--dh-cinnabar) 34%,transparent) 0 13%,transparent 14%),radial-gradient(ellipse at 85% 50%,color-mix(in srgb,var(--dh-cinnabar) 34%,transparent) 0 13%,transparent 14%),radial-gradient(ellipse at 50% 85%,color-mix(in srgb,var(--dh-cinnabar) 34%,transparent) 0 13%,transparent 14%),radial-gradient(ellipse at 15% 50%,color-mix(in srgb,var(--dh-cinnabar) 34%,transparent) 0 13%,transparent 14%);}
.dh-caisson::after{inset:40%;border:1px solid color-mix(in srgb,var(--dh-mineral) 56%,transparent);background:radial-gradient(circle,color-mix(in srgb,var(--dh-gold) 62%,transparent) 0 18%,transparent 20%);}
.dh-ribbon{position:absolute;top:16%;width:42%;height:24%;opacity:.6;border-top:5px solid var(--dh-cinnabar);border-radius:50%;filter:drop-shadow(0 2px 0 rgba(232,187,104,.45));}
.dh-ribbon--left{left:-12%;rotate:15deg;}
.dh-ribbon--right{right:-12%;rotate:-15deg;scale:-1 1;}
.dh-ribbon::after{content:"";position:absolute;top:10px;left:20%;width:72%;height:60%;border-top:3px solid var(--dh-mineral);border-radius:50%;}
.dh-lamp-row{position:absolute;right:8%;bottom:5%;left:8%;display:flex;justify-content:space-around;align-items:flex-end;height:72px;opacity:.88;}
.dh-lamp-row i{position:relative;width:16px;height:24px;border:1px solid #e2ad5e;border-radius:50% 50% 30% 30%;background:radial-gradient(circle at 50% 38%,#fff6bf 0 9%,#eda84e 17%,#a84831 58%,#5c2d25 100%);box-shadow:0 0 18px rgba(241,178,74,.55);animation:dh-lamp 2.8s ease-in-out infinite alternate;}
.dh-lamp-row i:nth-child(2n){height:19px;animation-delay:-1.1s}.dh-lamp-row i:nth-child(3n){height:28px;animation-delay:-2s}
.dh-tree-charm{display:none;position:absolute;z-index:18;left:calc(50% - 42px);bottom:25%;width:17px;height:24px;filter:drop-shadow(0 5px 4px rgba(38,22,19,.3));}
.equip-bronze-bell .dh-tree-charm--bell{display:block;border:1px solid #d3aa62;border-radius:50% 50% 24% 24%;background:linear-gradient(90deg,#62503d,#b68d50,#554334);}
.equip-bronze-bell .dh-tree-charm--bell::after{content:"";position:absolute;left:7px;bottom:-7px;width:3px;height:7px;background:#d8b267;}
.equip-dunhuang-prayer-lamp .dh-tree-charm--lamp{display:block;border:1px solid var(--dh-gold);border-radius:50% 50% 32% 32%;background:radial-gradient(circle at 50% 38%,#fff6bf 0 10%,#e9a74e 23%,var(--dh-cinnabar) 68%);box-shadow:0 0 22px rgba(239,178,76,.72);}
.equip-dunhuang-prayer-lamp .dh-tree-charm--lamp::after{content:"";position:absolute;top:-10px;left:7px;width:1px;height:10px;background:var(--dh-gold);}
.equip-classic-red .prayer-wish-tag .wish-tag-body{fill:#bd493f !important;stroke:#f0c277 !important;}
.equip-dunhuang-cinnabar-tag .prayer-wish-tag .wish-tag-body{fill:var(--dh-cinnabar) !important;stroke:var(--dh-gold) !important;stroke-width:1.6;}
.equip-dunhuang-mingsha .sa-scene-ridge--near{background:color-mix(in srgb,var(--dh-earth) 78%,#7c4935);}
.equip-morning-courtyard .sa-scene-ridge--far{background:color-mix(in srgb,var(--dh-mineral) 64%,#91aaa0);}
.equip-morning-courtyard .sa-scene-ridge--near{background:color-mix(in srgb,var(--dh-mineral) 58%,#748867);}
.dh-term-particles{position:absolute;inset:0;z-index:8;overflow:hidden;pointer-events:none;}
.dh-term-particles i{position:absolute;top:-8%;left:var(--dh-x);width:var(--dh-size);height:var(--dh-size);opacity:.42;border:1px solid color-mix(in srgb,var(--dh-gold) 72%,transparent);border-radius:50% 0 50% 0;background:color-mix(in srgb,var(--dh-cinnabar) 48%,transparent);animation:dh-term-drift var(--dh-speed) linear infinite;animation-delay:var(--dh-delay);}
html[data-season="summer"] .dh-term-particles i{border-radius:50%;background:rgba(228,177,77,.34);}
html[data-season="autumn"] .dh-term-particles i{border-radius:70% 0 70% 0;background:color-mix(in srgb,var(--dh-earth) 75%,#d7a14d);}
html[data-season="winter"] .dh-term-particles i{rotate:45deg;border-radius:0;background:rgba(232,235,223,.36);}
html[data-style="dunhuang"] .sa-prayer-core .prayer-actions{
    position:relative;
    background:
        linear-gradient(90deg,rgba(161,68,48,.08) 0 2px,transparent 2px 100%),
        repeating-linear-gradient(0deg,transparent 0 27px,rgba(106,74,52,.09) 28px 29px),
        var(--dh-paper);
    border:1px solid #8f6549;
    border-top:6px solid var(--dh-cinnabar);
    box-shadow:inset 18px 0 32px rgba(116,67,45,.07),0 18px 46px rgba(36,23,19,.18);
}
html[data-style="dunhuang"] .sa-prayer-core .prayer-actions::before{content:"祈愿牒";position:absolute;top:17px;right:18px;padding:5px 7px;color:#f2ddba;background:var(--dh-cinnabar);border:1px solid #71372d;font-family:var(--sa-font-display);font-size:.68rem;writing-mode:vertical-rl;}
html[data-style="dunhuang"] .sa-prayer-core .prayer-actions > h2{color:#482b25;border-color:#a56b47;}
html[data-style="dunhuang"] .sa-prayer-core .sa-ritual-register{color:#704436;border-color:#a57a52;}
html[data-style="dunhuang"] .sa-prayer-core .template-card{background:rgba(250,238,207,.74);border-color:#b48a5e;}
html[data-style="dunhuang"] .sa-prayer-core .template-card:hover,html[data-style="dunhuang"] .sa-prayer-core .template-card.selected{border-color:var(--dh-cinnabar);box-shadow:inset 0 0 0 1px var(--dh-cinnabar);}
html[data-style="dunhuang"] .sa-prayer-core .custom-input{background:rgba(255,246,219,.7);border-color:#a87b55;}
html[data-style="dunhuang"] .sa-prayer-core .submit-btn{color:#fff2d0;background:linear-gradient(90deg,#82392e,var(--dh-cinnabar),#82392e);border:1px solid #642b25;box-shadow:0 8px 20px rgba(112,44,34,.22);}
html[data-style="dunhuang"] .sa-prayer-core .prayer-history{background:#d8c49d;border-color:#9d7656;}
html[data-style="dunhuang"] .sa-prayer-core .wardrobe-dialog{background:#e8d4ad;border:6px solid #59382e;box-shadow:inset 0 0 0 2px var(--dh-gold),0 28px 80px rgba(20,12,10,.52);}
html[data-style="dunhuang"] .sa-prayer-core .wardrobe-item{position:relative;background:rgba(248,233,198,.74);border-color:#ad815a;}
html[data-style="dunhuang"] .sa-prayer-core .wardrobe-item.is-equipped{border-color:var(--dh-mineral);box-shadow:inset 0 0 0 2px var(--dh-mineral);}
html[data-style="dunhuang"] .sa-prayer-core .wardrobe-item.is-locked{filter:saturate(.55);opacity:.74;}
.wardrobe-item__swatch{display:block;width:100%;height:42px;margin-bottom:10px;background:linear-gradient(135deg,var(--dh-swatch-a,var(--dh-mineral)),var(--dh-swatch-b,var(--dh-cinnabar)));border:1px solid rgba(74,45,36,.32);}
.wardrobe-item__meta{display:grid;gap:3px;margin-top:8px;color:#735345;font-size:.62rem;line-height:1.35;}
.wardrobe-item__action{display:inline-flex;align-items:center;justify-content:center;width:100%;min-height:34px;margin-top:11px;color:#fff0cb;background:#774136;border:1px solid #5f3029;text-decoration:none;cursor:pointer;}
.wardrobe-item__action[disabled]{color:#755e52;background:#cab28b;border-color:#a58a6d;cursor:not-allowed;}
@keyframes dh-caisson-breathe{50%{opacity:.94;transform:scale(1.025)}}
@keyframes dh-lamp{to{filter:brightness(1.18);transform:translateY(-2px)}}
@keyframes dh-term-drift{to{transform:translate3d(var(--dh-drift),112vh,0) rotate(240deg)}}
@media (max-width:600px){
    html[data-style="dunhuang"] .sa-prayer-core .tree-container{height:540px !important;min-height:540px;border-width:5px;border-top-width:10px;border-radius:44% 44% 2px 2px / 13% 13% 2px 2px;}
    .dh-caisson{top:2%;width:58%;}.dh-lamp-row{right:4%;left:4%;}
    html[data-style="dunhuang"] .sa-prayer-core .prayer-actions::before{top:12px;right:10px;}
}

/* ==========================================================================
   敦煌 · 星河供灯庭 — 追加层（qwen_frontend）
   职责：夜色、天气联动、二十四节气细化、内联样式兜底、焦点可见性、
   reduced-motion 与 390px 溢出防护。全部为原创程序化样式，
   仅复用上方区块定义的 --dh-* 变量，不覆盖 qwen_dunhuang_ui 已有规则。
   ========================================================================== */

/* -- 1) 夜色：靛青石窟、灯火转亮、藻井隐入 ------------------------------------ */
html[data-style="dunhuang"] .sa-prayer-core .tree-container.scene-night{
    background:
        radial-gradient(ellipse at 78% 14%,color-mix(in srgb,var(--dh-gold) 22%,transparent) 0 5%,transparent 38%),
        radial-gradient(ellipse at 50% 30%,color-mix(in srgb,var(--dh-sky) 30%,#0d1420) 0 24%,transparent 62%),
        linear-gradient(180deg,#0e1526 0%,color-mix(in srgb,var(--dh-sky) 40%,#101a28) 46%,color-mix(in srgb,var(--dh-earth) 32%,#1a1712) 100%);
    border-color:#3c241d;
    box-shadow:inset 0 0 0 3px #6d4531,inset 0 0 0 7px rgba(214,166,84,.3),0 22px 55px rgba(5,6,12,.55);
}
html[data-style="dunhuang"] .sa-prayer-core .tree-container.scene-night::before{
    box-shadow:inset 70px 0 96px rgba(8,8,14,.62),inset -70px 0 96px rgba(8,8,14,.62),inset 0 80px 96px rgba(6,8,14,.44);
}
.scene-night .dh-caisson{opacity:.48;filter:saturate(.8) brightness(.84);}
.scene-night .dh-ribbon{opacity:.36;}
.scene-night .dh-lamp-row{opacity:1;}
.scene-night .dh-lamp-row i{box-shadow:0 0 26px rgba(244,186,84,.78),0 0 62px rgba(244,186,84,.26);}
.scene-night .dh-term-particles i{opacity:.28;}
html[data-style="dunhuang"] .sa-prayer-core .tree-container.scene-night .personal-tree{filter:drop-shadow(0 20px 15px rgba(3,6,12,.6)) saturate(.86) brightness(.9);}
html[data-style="dunhuang"] .scene-night .sa-season-marker{color:rgba(240,226,196,.72);}
/* 暗色主题下整页基底换成窟壁赭褐，避免信号档案馆的青绿残留 */
html[data-style="dunhuang"][data-theme="dark"] body.sa-prayer-body{
    --pg-paper:#181210;--pg-paper-bright:#221815;--pg-line:#4a3a30;--pg-line-soft:#33271f;
    --pg-moss:#a8836a;--pg-brass:#d3a45e;--pg-coral:#c25a44;--pg-shadow:rgba(0,0,0,.5);
}
html[data-style="dunhuang"][data-theme="dark"] .sa-prayer-core .header{background:#4a3826;border-color:#6d543a;}
html[data-style="dunhuang"][data-theme="dark"] .sa-prayer-core .header .stats,
html[data-style="dunhuang"][data-theme="dark"] .sa-prayer-core .header .user-info,
html[data-style="dunhuang"][data-theme="dark"] .sa-prayer-core .header .lunar-info{color:#e2cfa6;}

/* -- 2) 天气联动：天气保持独立层，只做敦煌色重染与风的呼应 ------------------ */
html[data-style="dunhuang"] .sa-prayer-core .scene-rain .weather-overlay{opacity:.24;background:linear-gradient(to bottom,rgba(126,108,90,.16),rgba(72,60,50,.34));}
html[data-style="dunhuang"] .sa-prayer-core .scene-storm .weather-overlay{opacity:.34;background:linear-gradient(to bottom,rgba(56,45,38,.42),rgba(36,29,25,.52));}
html[data-style="dunhuang"] .sa-prayer-core .scene-fog .weather-overlay{opacity:.5;background:linear-gradient(to bottom,color-mix(in srgb,var(--dh-plaster) 36%,transparent),color-mix(in srgb,var(--dh-paper) 68%,transparent));}
html[data-style="dunhuang"] .sa-prayer-core .scene-haze .weather-overlay{opacity:.42;background:linear-gradient(to bottom,color-mix(in srgb,var(--dh-earth) 28%,transparent),color-mix(in srgb,var(--dh-earth) 54%,#9b8a68));}
html[data-style="dunhuang"] .sa-prayer-core .scene-snow .weather-overlay{opacity:.7;background-image:radial-gradient(circle,#f4f1e4 0 2px,transparent 3px),radial-gradient(circle,#f4f1e4 0 3px,transparent 4px);}
html[data-style="dunhuang"] .sa-rain-field i,
html[data-style="dunhuang"] .sa-foreground-weather i{background:linear-gradient(to bottom,transparent,rgba(236,226,205,.9));}
.scene-wind .dh-ribbon{transform-origin:50% 0;animation:dh-ribbon-sway var(--gust-duration,5.2s) ease-in-out infinite alternate;}
.scene-wind .dh-lamp-row i{animation-duration:1.4s;}
.scene-haze .dh-cave-ornament{filter:saturate(.88) contrast(.97);}
@keyframes dh-ribbon-sway{from{transform:rotate(-1.6deg);}to{transform:rotate(2.4deg) translateY(4px);}}

/* -- 3) 二十四节气细化（data-jieqi 为服务端注入的中文名） -------------------- */
/* 春雨类：微粒转润泽青碧 */
html[data-jieqi="雨水"] .dh-term-particles i,
html[data-jieqi="谷雨"] .dh-term-particles i{border-radius:50%;background:color-mix(in srgb,var(--dh-mineral) 36%,transparent);}
/* 惊蛰：微暖的金尘 */
html[data-jieqi="惊蛰"] .dh-term-particles i{background:color-mix(in srgb,var(--dh-gold) 42%,transparent);}
/* 露水类：银白圆露 */
html[data-jieqi="白露"] .dh-term-particles i,
html[data-jieqi="寒露"] .dh-term-particles i{border-radius:50%;background:rgba(228,232,220,.4);border-color:rgba(240,240,228,.55);}
/* 霜降：霜片 */
html[data-jieqi="霜降"] .dh-term-particles i{rotate:45deg;border-radius:1px;background:rgba(230,232,224,.34);}
/* 雪类：素白 */
html[data-jieqi="小雪"] .dh-term-particles i,
html[data-jieqi="大雪"] .dh-term-particles i,
html[data-jieqi="小寒"] .dh-term-particles i,
html[data-jieqi="大寒"] .dh-term-particles i{rotate:45deg;border-radius:0;background:rgba(240,240,232,.5);border-color:rgba(248,248,240,.4);}
/* 冬至：灯河最盛，微粒作灯晕 */
html[data-jieqi="冬至"] .dh-term-particles i{border-radius:50%;background:rgba(238,186,92,.42);border-color:rgba(238,186,92,.5);}
/* 炎夏风沙类：沙粒短杖 */
html[data-jieqi="芒种"] .dh-term-particles i,
html[data-jieqi="大暑"] .dh-term-particles i{border-radius:2px;background:color-mix(in srgb,var(--dh-earth) 52%,#d7b06a);opacity:.34;}
/* 夏至/小暑：鎏金浮光 */
html[data-jieqi="夏至"] .dh-term-particles i,
html[data-jieqi="小暑"] .dh-term-particles i{border-radius:50%;background:rgba(232,178,80,.36);}
/* 冬季节气灯火更旺，盛夏略收敛 */
html[data-jieqi="冬至"] .dh-lamp-row i,
html[data-jieqi="小寒"] .dh-lamp-row i,
html[data-jieqi="大寒"] .dh-lamp-row i{box-shadow:0 0 24px rgba(244,186,84,.72);}
html[data-jieqi="夏至"] .dh-lamp-row i,
html[data-jieqi="大暑"] .dh-lamp-row i{box-shadow:0 0 12px rgba(241,178,74,.4);}

/* -- 4) 内联样式兜底：原模板行内样式会把供灯按钮与纸面输入拉回默认 ---------- */
html[data-style="dunhuang"] .sa-prayer-core .submit-btn{
    background:linear-gradient(90deg,#82392e,var(--dh-cinnabar),#82392e) !important;
    box-shadow:0 8px 20px rgba(112,44,34,.22) !important;
    color:#fff2d0 !important;
    border:1px solid #642b25;
}
html[data-style="dunhuang"] .sa-prayer-core .submit-btn:hover{filter:brightness(1.08);}
html[data-style="dunhuang"] .sa-prayer-core .custom-input{background:rgba(255,246,219,.72) !important;border:2px solid #a87b55 !important;}
html[data-style="dunhuang"] .sa-prayer-core .prayer-form label:has(> input[name="prayerType"]){
    background:rgba(169,71,56,.08) !important;
    border:1px solid color-mix(in srgb,var(--dh-cinnabar) 38%,transparent);
    border-radius:2px;
}
html[data-style="dunhuang"] .sa-prayer-core .prayer-form label:has(> input[name="prayerType"]:checked){
    background:color-mix(in srgb,var(--dh-cinnabar) 18%,transparent) !important;
    border-color:var(--dh-cinnabar);
    box-shadow:inset 0 0 0 1px var(--dh-cinnabar);
}
html[data-style="dunhuang"] .sa-prayer-core .today-prayer-result{
    background:var(--dh-paper);border:1px solid #a57a52;border-top:4px solid var(--dh-mineral);
    color:#482b25;box-shadow:0 14px 34px rgba(36,23,19,.14);
}
html[data-style="dunhuang"] .sa-prayer-core .today-prayer-result h2{color:#482b25;}
html[data-style="dunhuang"] .sa-prayer-core .today-prayer-result h2 i{color:var(--dh-mineral) !important;}
html[data-style="dunhuang"] .sa-prayer-core .today-prayer-result small{color:#7a5b45;}
html[data-style="dunhuang"] .sa-prayer-core #charCount{color:#8a6a4a;}

/* -- 5) 焦点可见性（装配册与愿望笺的键盘导航） ------------------------------ */
html[data-style="dunhuang"] .wardrobe-item__action:focus-visible,
html[data-style="dunhuang"] .sa-prayer-core .template-card:focus-visible,
html[data-style="dunhuang"] .wardrobe-done:focus-visible,
html[data-style="dunhuang"] .wardrobe-close:focus-visible{outline:2px solid var(--dh-gold);outline-offset:2px;}
/* -- 6) reduced-motion：停掉所有敦煌动画，微粒降为静态微光 ------------------ */
@media (prefers-reduced-motion: reduce){
    .dh-caisson,.dh-lamp-row i,.dh-term-particles i,.dh-ribbon{animation:none !important;}
    .scene-wind .dh-ribbon{animation:none !important;}
    .dh-term-particles i{top:22%;opacity:.16;}
}

/* -- 7) 窄屏溢出防护（390px 目标） ------------------------------------------- */
html[data-style="dunhuang"] .sa-prayer-core{overflow-x:clip;}
@media (max-width:400px){
    .dh-lamp-row{height:56px;}
    html[data-style="dunhuang"] .sa-prayer-core .prayer-actions{padding:18px 14px;}
    html[data-style="dunhuang"] .sa-prayer-head__season small{max-width:130px;}
}

/* -- 8) 装配驱动的可见差异（qwen_frontend 追加：容器类由 prayer-scene.js 同步） -- */
/* 朱砂愿牒：树上愿望签转为朱砂金线 */
.tree-container.dh-has-cinnabar-tag .wish-tag-body{fill:#a8402f;stroke:#e9c27a;stroke-width:1;}
.tree-container.dh-has-cinnabar-tag .wish-tag-fold{fill:#7c2d22;}
.tree-container.dh-has-cinnabar-tag .wish-tag-heart{fill:#f3d9a4;}
.tree-container.dh-has-cinnabar-tag .wish-string{stroke:#d8b06a;}
/* 莲华供灯台：树基升起暖金光晕 */
.tree-container.dh-has-lotus-altar .personal-tree{filter:drop-shadow(0 20px 13px rgba(13,38,24,.26)) drop-shadow(0 0 22px rgba(224,170,84,.34));}
.tree-container.dh-has-lotus-altar.scene-night .personal-tree{filter:drop-shadow(0 20px 15px rgba(3,6,12,.6)) drop-shadow(0 0 26px rgba(224,170,84,.4));}
/* 流云绶带：装配后更鲜明 */
.tree-container.dh-has-ribbon .dh-ribbon{opacity:.85;}
/* 鸣沙窟影：窟壁阴影加深，沙色更沉 */
html[data-style="dunhuang"] .tree-container.dh-has-mingsha::before{box-shadow:inset 90px 0 110px rgba(48,27,23,.66),inset -90px 0 110px rgba(48,27,23,.66),inset 0 80px 96px rgba(45,26,22,.4);}

/* 七夕 · 星河乞巧庭 */
.qixi-campaign{--qx-sky:#152f3b;--qx-green:#47705e;--qx-red:#a34b3d;--qx-gold:#d7ad61;--qx-paper:#dfc99e;position:relative;z-index:2;grid-column:1/-1;grid-row:1;margin:0;overflow:hidden;color:#e8dcc7;background:var(--qx-sky);border:1px solid #658174;border-left:4px solid var(--qx-red);border-radius:8px;box-shadow:0 14px 34px rgba(13,35,42,.24);}
.qixi-campaign~.tree-container{grid-row:2/span 2}.qixi-campaign~.prayer-actions{grid-row:2}.qixi-campaign~.prayer-history{grid-row:3}
.qixi-campaign__summary{display:grid;grid-template-columns:58px minmax(0,1fr) minmax(170px,220px);align-items:center;gap:16px;padding:16px 18px;}
.qixi-campaign__seal{display:grid;grid-template-columns:repeat(4,7px);place-content:center;gap:4px;width:54px;height:54px;border:1px solid var(--qx-gold);border-radius:50%;background:#244b4b;}
.qixi-campaign__seal i{width:7px;height:7px;border:1px solid var(--qx-gold);rotate:45deg}.qixi-campaign__seal i:nth-child(-n+3){background:var(--qx-gold)}
.qixi-campaign__copy{display:grid;gap:3px;min-width:0}.qixi-campaign__copy small{color:#bdc9b2;font-size:.68rem}.qixi-campaign__copy strong{color:#f0d9a7;font-family:var(--sa-font-display);font-size:1.16rem;letter-spacing:0}.qixi-campaign__copy span{color:#d9d9c7;font-size:.76rem;line-height:1.55}
.qixi-campaign__status{display:grid;grid-template-columns:auto minmax(70px,1fr);align-items:center;gap:8px 10px}.qixi-campaign__status b{color:#f0d9a7;font-size:.8rem}.qixi-campaign__meter{display:block;height:6px;overflow:hidden;background:#39535a;border-radius:3px}.qixi-campaign__meter i{display:block;height:100%;background:var(--qx-gold);transition:width .35s ease}.qixi-campaign__status button,.qixi-equip-set,.qixi-task__action{border:1px solid var(--qx-gold);border-radius:4px;color:#172e32;background:var(--qx-gold);font:inherit;cursor:pointer}.qixi-campaign__status button{grid-column:1/-1;padding:7px 12px}.qixi-campaign button:focus-visible,.qixi-campaign select:focus-visible,.qixi-campaign input:focus-visible{outline:2px solid #f3d58c;outline-offset:2px}.qixi-campaign button:disabled{cursor:not-allowed;opacity:.55}
.qixi-workshop{position:relative;border-top:1px solid #58736b;background:#193a40}.qixi-workshop[hidden]{display:none}.qixi-scene{position:relative;height:126px;overflow:hidden;background:linear-gradient(#112d3c 0 58%,#315f55 59% 100%)}.qixi-sky::before{content:"";position:absolute;left:12%;right:12%;top:14px;height:40px;background:radial-gradient(ellipse at center,rgba(223,201,158,.52),transparent 68%);rotate:-3deg}.qixi-sky i{position:absolute;top:26px;width:9px;height:9px;background:var(--qx-gold);rotate:45deg;box-shadow:0 0 13px #efd381}.qixi-sky i:first-child{left:23%}.qixi-sky i:last-child{right:24%}.qixi-thread-shadow{position:absolute;left:45%;top:20px;display:flex;gap:6px}.qixi-thread-shadow i{width:2px;height:72px;background:var(--qx-gold);transform-origin:top;rotate:var(--thread-angle,8deg);opacity:.55}.qixi-thread-shadow i:nth-child(2n){--thread-angle:-7deg;background:#a34b3d}.qixi-thread-shadow i:nth-child(3n){background:#6e9a79}.qixi-offering{position:absolute;left:5%;bottom:0;width:34%;height:28px;border:2px solid #b38348;border-bottom:0;background:#704536}.qixi-offering i{display:inline-block;width:20px;height:16px;margin:5px 4%;border-radius:50% 50% 30% 30%;background:#d2a65d}.qixi-offering i:nth-child(2){background:#6a8c5a}.qixi-offering i:nth-child(3){clip-path:polygon(50% 0,100% 100%,0 100%);background:#b14b3d}.qixi-offering i:nth-child(4){background:#e3c57d}
.qixi-workshop__intro{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:16px 18px;border-top:1px solid #577068}.qixi-workshop__intro>div{display:grid;gap:3px}.qixi-workshop__intro strong{color:#f0d9a7;font-family:var(--sa-font-display)}.qixi-workshop__intro span{color:#c6d0bd;font-size:.75rem}.qixi-equip-set{flex:none;padding:8px 12px}
.qixi-tasks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;background:#557069;border-block:1px solid #557069}.qixi-task{display:grid;grid-template-columns:30px minmax(0,1fr);align-content:start;gap:10px;padding:14px;background:#1d4143;min-width:0}.qixi-task__seal{display:grid;place-items:center;width:26px;height:26px;color:#adbea9;border:1px solid #78947c;border-radius:50%;font-size:.68rem}.qixi-task.is-complete .qixi-task__seal{color:#1c3638;background:var(--qx-gold);border-color:var(--qx-gold)}.qixi-task__copy{display:grid;gap:2px}.qixi-task__copy strong{color:#e8d6aa;font-size:.84rem}.qixi-task__copy span{color:#aebeb1;font-size:.7rem}.qixi-task__control{grid-column:1/-1;display:flex;align-items:center;flex-wrap:wrap;gap:7px;min-height:34px;color:#adbea9;font-size:.72rem}.qixi-task__control select{min-width:0;max-width:100%;padding:7px;color:#e8dcc7;background:#173638;border:1px solid #78947c;border-radius:4px}.qixi-task__control label{display:flex;align-items:center;gap:4px;padding:5px 7px;border:1px solid #58766c;border-radius:4px}.qixi-task__action{display:inline-flex;align-items:center;justify-content:center;padding:7px 10px;text-decoration:none}.qixi-task__done{color:#edce83}.qixi-needle{position:relative;gap:10px}.qixi-needle span{position:relative;width:10px;height:22px;border:2px solid #173638;border-radius:50% 50% 35% 35%}.qixi-needle span::after{content:"";position:absolute;top:9px;right:8px;width:24px;height:2px;background:var(--qx-red)}
.qixi-tangram{display:grid;grid-template-columns:repeat(4,32px);gap:4px}.qixi-tangram button{width:32px;height:28px;padding:0;border:1px solid #9aab8c;background:#294c48;clip-path:polygon(50% 0,100% 100%,0 100%)}.qixi-tangram button:nth-child(2n){clip-path:polygon(0 0,100% 0,100% 100%)}.qixi-tangram button.is-set{background:var(--qx-gold)}
.qixi-wish-wall{padding:18px}.qixi-wish-wall h3{margin:0 0 12px;color:#efd79e;font-family:var(--sa-font-display);font-size:1rem}.qixi-wish-wall__row{display:grid;grid-template-columns:minmax(0,1fr) minmax(70px,28%) 42px;align-items:center;gap:10px;padding:5px 0;color:#cbd2c0;font-size:.7rem}.qixi-wish-wall__row i{height:4px;background:linear-gradient(90deg,var(--qx-gold) var(--wish-width),#355358 var(--wish-width))}.qixi-wish-wall__row b{text-align:right;color:#e5c77e;font-weight:500}.qixi-live{min-height:1.2em;margin:0;padding:0 18px 14px;color:#d9c078;font-size:.72rem}.qixi-live.is-error{color:#ef9c86}
.qixi-magpie-bridge{display:none;position:absolute;z-index:17;top:17%;left:50%;width:min(56%,350px);height:78px;translate:-50% 0;border-bottom:3px solid rgba(215,173,97,.78);border-radius:0 0 50% 50%;filter:drop-shadow(0 5px 8px rgba(13,35,42,.38))}.qixi-magpie-bridge.is-crossing{display:flex;justify-content:space-around;align-items:flex-end;animation:qixi-bridge-arrive 3.4s ease both}.qixi-magpie-bridge i{width:14px;height:9px;background:#18363a;clip-path:polygon(0 50%,42% 0,52% 38%,100% 18%,72% 58%,100% 100%,48% 68%,35% 100%);animation:qixi-wing .65s ease-in-out infinite alternate}.qixi-magpie-bridge i:nth-child(2n){translate:0 12px}.qixi-magpie-bridge i:nth-child(3n){translate:0 24px}
@keyframes qixi-wing{to{transform:translateY(-5px) scaleX(.82)}}@keyframes qixi-bridge-arrive{0%,100%{opacity:0;transform:translateY(18px)}15%,82%{opacity:1;transform:none}}
@media(max-width:980px){.qixi-campaign,.qixi-campaign~.tree-container,.qixi-campaign~.prayer-actions,.qixi-campaign~.prayer-history{grid-column:1;grid-row:auto}}
@media(max-width:600px){.qixi-campaign__summary{grid-template-columns:44px minmax(0,1fr);gap:10px 12px;padding:13px}.qixi-campaign__seal{width:42px;height:42px;grid-template-columns:repeat(4,5px)}.qixi-campaign__seal i{width:5px;height:5px}.qixi-campaign__status{grid-column:1/-1;grid-template-columns:auto minmax(0,1fr) auto}.qixi-campaign__status button{grid-column:auto;white-space:nowrap}.qixi-workshop__intro{align-items:stretch;flex-direction:column}.qixi-equip-set{width:100%}.qixi-tasks{grid-template-columns:1fr}.qixi-wish-wall__row{grid-template-columns:minmax(0,1fr) 46px}.qixi-wish-wall__row i{grid-column:1/-1;grid-row:2}.qixi-magpie-bridge{width:72%}}
@media(max-width:400px){.qixi-campaign,.qixi-workshop,.qixi-task,.qixi-wish-wall{max-width:100%;box-sizing:border-box}.qixi-campaign__copy span{font-size:.72rem}.qixi-task__control{min-width:0}.qixi-task__control select{width:100%}.qixi-tangram{grid-template-columns:repeat(4,28px)}.qixi-tangram button{width:28px}.qixi-wish-wall{padding:14px}}
@media(prefers-reduced-motion:reduce){.qixi-campaign__meter i{transition:none}.qixi-magpie-bridge.is-crossing{display:flex;opacity:1;animation:none}.qixi-magpie-bridge i{animation:none}.qixi-thread-shadow i,.qixi-sky i{animation:none}}
/* Qixi equipment has its own visible layer above the landscape foreground. */
.tree-container.equip-qixi-starry-canopy .dh-cave-ornament,.tree-container.equip-qixi-qiqiao-altar .dh-cave-ornament,.tree-container.equip-qixi-qiao-ribbon .dh-cave-ornament,.tree-container.equip-qixi-qiqiao-needle .dh-cave-ornament{z-index:15}
.qixi-starry-canopy{display:none;position:absolute;z-index:1;top:3%;left:7%;width:86%;height:42%;pointer-events:none}
.equip-qixi-starry-canopy .qixi-starry-canopy{display:block;background:radial-gradient(ellipse at 50% 42%,rgba(241,211,143,.2),transparent 52%),radial-gradient(circle at 8% 18%,#f2cf79 0 1px,transparent 2px),radial-gradient(circle at 28% 43%,#f2cf79 0 1.5px,transparent 2.5px),radial-gradient(circle at 72% 30%,#f2cf79 0 1px,transparent 2px),radial-gradient(circle at 91% 54%,#f2cf79 0 1.5px,transparent 2.5px);background-size:auto,78px 64px,113px 91px,89px 73px,127px 99px;filter:drop-shadow(0 0 8px rgba(225,188,106,.3))}
.qixi-starry-canopy::before{content:"";position:absolute;top:26%;left:8%;width:84%;height:34%;border-top:5px solid rgba(234,207,148,.68);border-radius:50%;rotate:-5deg;filter:blur(.4px);box-shadow:0 -4px 18px rgba(218,191,128,.28)}
.qixi-starry-canopy i{position:absolute;top:20%;width:14px;height:14px;rotate:45deg;background:#edc970;box-shadow:0 0 20px #e8bd66,0 0 5px #fff2bd}.qixi-starry-canopy i:first-child{left:12%}.qixi-starry-canopy i:nth-child(2){right:12%}
.qixi-starry-canopy b{position:absolute;top:8%;left:50%;width:5px;height:5px;border-radius:50%;background:#f8e5ae;box-shadow:-104px 46px 0 #d8a854,-62px 82px 0 #e8c978,-18px 31px 0 #e8c978,51px 66px 0 #d8a854,103px 22px 0 #f8e5ae,139px 91px 0 #d8a854}
.qixi-qiao-threads{display:none;position:absolute;z-index:18;top:30%;left:50%;width:min(58%,430px);height:31%;translate:-50% 0;pointer-events:none}.equip-qixi-qiao-ribbon .qixi-qiao-threads{display:block}
.qixi-qiao-threads i{position:absolute;top:0;left:50%;width:26%;height:100%;transform-origin:50% 0;border-left:4px solid #d5ad61;border-radius:52% 8% 55% 12%;filter:drop-shadow(0 2px 2px rgba(16,30,28,.45))}
.qixi-qiao-threads i:nth-child(1){translate:-112% 0;rotate:20deg;border-color:#b44739}.qixi-qiao-threads i:nth-child(2){translate:-82% 0;rotate:13deg;border-color:#d9a84e}.qixi-qiao-threads i:nth-child(3){translate:-52% 0;rotate:6deg;border-color:#6f9b78}.qixi-qiao-threads i:nth-child(4){translate:-20% 0;border-color:#e3c879}.qixi-qiao-threads i:nth-child(5){translate:12% 0;rotate:-6deg;border-color:#3e7d73}.qixi-qiao-threads i:nth-child(6){translate:42% 0;rotate:-13deg;border-color:#c66a45}.qixi-qiao-threads i:nth-child(7){translate:72% 0;rotate:-20deg;border-color:#dfbb67}
.equip-qixi-qiqiao-needle .dh-tree-charm--qixi-needle{display:block;z-index:20;left:calc(50% + 54px);bottom:29%;width:38px;height:48px;border:2px solid #e2bb68;border-radius:52% 52% 24% 24%;background:linear-gradient(135deg,#ae493b,#74352e);box-shadow:inset 0 0 0 4px rgba(240,203,126,.2),0 0 20px rgba(230,192,108,.72)}
.equip-qixi-qiqiao-needle .dh-tree-charm--qixi-needle::before{content:"";position:absolute;top:10px;left:12px;width:10px;height:13px;border:2px solid #f1d68b;border-radius:50%;box-shadow:0 0 12px #fff0a9}.equip-qixi-qiqiao-needle .dh-tree-charm--qixi-needle::after{content:"";position:absolute;top:-28px;left:18px;width:2px;height:28px;background:#e8c678;box-shadow:0 73px 0 #d4a75c}
.qixi-tree-offering{display:none;position:absolute;z-index:19;left:50%;bottom:4%;width:min(36%,270px);height:58px;translate:-50% 0;border:3px solid #d1a156;border-bottom-width:8px;background:linear-gradient(#744331,#4e2c28);box-shadow:0 13px 0 -8px #3b2824,0 18px 24px rgba(8,20,17,.42)}
.qixi-tree-offering::before,.qixi-tree-offering::after{content:"";position:absolute;bottom:-34px;width:7px;height:29px;background:#65402e}.qixi-tree-offering::before{left:12%}.qixi-tree-offering::after{right:12%}.equip-qixi-qiqiao-altar .qixi-tree-offering{display:flex;align-items:center;justify-content:space-around}
.qixi-tree-offering i{display:block;width:34px;height:28px;margin:0;border:2px solid rgba(248,221,159,.45);border-radius:50% 50% 28% 28%;background:#d7aa5e;box-shadow:0 0 10px rgba(226,184,99,.3)}.qixi-tree-offering i:nth-child(2){background:#658a62}.qixi-tree-offering i:nth-child(3){clip-path:polygon(50% 0,100% 100%,0 100%);border-radius:0;background:#b84f3d}.qixi-tree-offering i:nth-child(4){background:linear-gradient(135deg,#e4c16d 50%,#3f766c 51%)}
.wardrobe-item__swatch[class*="wardrobe-item__swatch--qixi-"]{position:relative;overflow:hidden;background:#132f38;border-color:#7d8d74}.wardrobe-item__swatch[class*="wardrobe-item__swatch--qixi-"] i{display:none}
.wardrobe-item__swatch--qixi-starry-canopy::before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 18% 26%,#f1cf78 0 2px,transparent 3px),radial-gradient(circle at 80% 34%,#f1cf78 0 2px,transparent 3px),radial-gradient(ellipse at 50% 52%,rgba(238,211,151,.42),transparent 54%)}.wardrobe-item__swatch--qixi-starry-canopy::after{content:"";position:absolute;top:52%;left:10%;width:80%;border-top:3px solid #d8b96f;border-radius:50%;rotate:-4deg}
.wardrobe-item__swatch--qixi-qiqiao-altar::before{content:"";position:absolute;right:12%;bottom:16%;left:12%;height:30%;border:3px solid #d3a45b;background:#70402f;box-shadow:0 8px 0 -4px #452824}.wardrobe-item__swatch--qixi-qiqiao-altar::after{content:"";position:absolute;bottom:30%;left:23%;width:17px;height:13px;border-radius:50%;background:#d8ad61;box-shadow:40px 0 #6f956a,80px 0 #b84f3d,120px 0 #e1c16f}
.wardrobe-item__swatch--qixi-qiao-ribbon{display:flex;align-items:flex-start;justify-content:center;gap:7px;padding-top:9px}.wardrobe-item__swatch--qixi-qiao-ribbon i{display:block;width:3px;height:55px;border-radius:50%;background:#d5ad61;rotate:var(--r,8deg)}.wardrobe-item__swatch--qixi-qiao-ribbon i:nth-child(2n){--r:-8deg;background:#b84f3d}.wardrobe-item__swatch--qixi-qiao-ribbon i:nth-child(3n){background:#6d9875}
.wardrobe-item__swatch--qixi-qiqiao-needle::before{content:"";position:absolute;top:17%;left:45%;width:28px;height:40px;border:2px solid #e2bb68;border-radius:50% 50% 24% 24%;background:#8e4035;box-shadow:0 0 12px rgba(226,187,104,.55)}.wardrobe-item__swatch--qixi-qiqiao-needle::after{content:"";position:absolute;top:27%;left:calc(45% + 9px);width:7px;height:10px;border:2px solid #f0d58b;border-radius:50%}
@media(max-width:600px){.qixi-qiao-threads{width:72%;top:32%;height:27%}.qixi-tree-offering{width:48%;height:48px}.qixi-tree-offering i{width:25px;height:21px}.equip-qixi-qiqiao-needle .dh-tree-charm--qixi-needle{left:calc(50% + 40px);bottom:27%;scale:.82}}
@media(prefers-reduced-motion:reduce){.qixi-starry-canopy,.qixi-qiao-threads,.dh-tree-charm--qixi-needle{animation:none!important}}
