/* Real, editable text. The existing banner image and upload route are unchanged. */
@font-face{font-family:BannerHappy;src:url('fonts/ZCOOLKuaiLe-Regular.ttf') format('truetype');font-display:swap;font-weight:400 900}
@font-face{font-family:BannerBrush;src:url('fonts/MaShanZheng-Regular.ttf') format('truetype');font-display:swap;font-weight:400 900}
.banner{position:relative}
.bt-stage{position:absolute;inset:12px;z-index:2;pointer-events:none;overflow:hidden;--bt-scale:1;--bt-text-width:76%;--bt-text-x:50%;--bt-text-y:50%;--bt-shift-x:-50%;--bt-shift-y:-50%;--bt-title-size:48px;--bt-subtitle-size:16px;--bt-badge-size:12px;--bt-title-color:#fff6cc;--bt-subtitle-color:#fffef5;--bt-accent-color:#82512e;box-sizing:border-box}
.bt-stage[hidden],.bt-stage [hidden]{display:none!important}
.bt-content{position:absolute;left:var(--bt-text-x);top:var(--bt-text-y);transform:translate(var(--bt-shift-x),var(--bt-shift-y));width:var(--bt-text-width);max-width:100%;padding:calc(10px * var(--bt-scale)) calc(16px * var(--bt-scale));box-sizing:border-box;text-align:center;overflow-wrap:anywhere;color:var(--bt-subtitle-color);line-height:1.35}
.bt-stage[data-bt-align=left] .bt-content{text-align:left}.bt-stage[data-bt-align=right] .bt-content{text-align:right}
.bt-title{font-family:BannerHappy,'Microsoft YaHei',sans-serif;font-size:calc(var(--bt-title-size) * var(--bt-scale));font-weight:400;line-height:1.22;white-space:pre-line;color:var(--bt-title-color);paint-order:stroke fill;letter-spacing:.025em;text-shadow:0 3px 0 var(--bt-accent-color),0 5px 10px rgba(0,0,0,.22);-webkit-text-stroke:calc(1.5px * var(--bt-scale)) var(--bt-accent-color)}
.bt-stage[data-bt-font=brush] .bt-title{font-family:BannerBrush,KaiTi,serif}
.bt-stage[data-bt-font=sans] .bt-title{font-family:'Microsoft YaHei','PingFang SC',sans-serif;font-weight:900;letter-spacing:.02em}
.bt-stage[data-bt-font=serif] .bt-title{font-family:'Noto Serif CJK SC','Songti SC',SimSun,serif;font-weight:700;letter-spacing:.06em}
.bt-subtitle{font-family:'Microsoft YaHei','PingFang SC',sans-serif;font-size:calc(var(--bt-subtitle-size) * var(--bt-scale));line-height:1.55;white-space:pre-line;margin-top:calc(7px * var(--bt-scale));color:var(--bt-subtitle-color);text-shadow:0 1px 3px rgba(0,0,0,.55)}
.bt-badge{font-family:'Microsoft YaHei','PingFang SC',sans-serif;font-size:calc(var(--bt-badge-size) * var(--bt-scale));font-weight:700;display:inline-block;max-width:100%;padding:calc(3px * var(--bt-scale)) calc(12px * var(--bt-scale));margin-bottom:calc(7px * var(--bt-scale));line-height:1.4;letter-spacing:.12em;border:1px solid currentColor;border-radius:50px;background:var(--bt-accent-color);color:var(--bt-subtitle-color);box-shadow:0 2px 0 rgba(0,0,0,.12)}
.bt-stage[data-bt-style=cream] .bt-title{-webkit-text-stroke:calc(4px * var(--bt-scale)) #fffdf4;filter:drop-shadow(0 3px 0 var(--bt-accent-color));text-shadow:0 2px 0 var(--bt-accent-color)}
.bt-stage[data-bt-style=cream] .bt-content{background:linear-gradient(90deg,transparent,rgba(110,66,23,.16),transparent);border-radius:20px}
.bt-stage[data-bt-style=sky] .bt-title{-webkit-text-stroke:calc(2px * var(--bt-scale)) var(--bt-accent-color);text-shadow:0 4px 0 var(--bt-accent-color),0 9px 16px rgba(20,100,150,.22)}
.bt-stage[data-bt-style=sakura] .bt-title{letter-spacing:.08em;-webkit-text-stroke:0;text-shadow:0 2px 0 var(--bt-accent-color),0 3px 12px var(--bt-accent-color)}
.bt-stage[data-bt-style=sakura] .bt-badge{border-radius:4px 14px;background:var(--bt-accent-color);letter-spacing:.22em}
.bt-stage[data-bt-style=grove] .bt-content{background:linear-gradient(160deg,rgba(23,58,30,.9),rgba(55,69,33,.82));border:2px solid #d8ba79;border-radius:18px 6px;box-shadow:inset 0 0 0 3px rgba(255,240,171,.16),0 4px 0 rgba(24,47,27,.4)}
.bt-stage[data-bt-style=grove] .bt-badge{background:none;border:0;padding:0;box-shadow:none;letter-spacing:.2em}
.bt-stage[data-bt-style=sea] .bt-content{background:rgba(15,71,86,.32);border:1px solid rgba(255,255,255,.6);border-radius:22px;backdrop-filter:blur(7px);box-shadow:inset 0 1px 0 rgba(255,255,255,.7),0 4px 16px rgba(13,77,91,.12)}
.bt-stage[data-bt-style=sea] .bt-title{-webkit-text-stroke:0;text-shadow:0 2px 2px var(--bt-accent-color)}
.bt-stage[data-bt-style=sunset] .bt-title{-webkit-text-stroke:calc(1px * var(--bt-scale)) var(--bt-accent-color);text-shadow:1px 1px 0 var(--bt-accent-color),2px 2px 0 var(--bt-accent-color),3px 3px 0 var(--bt-accent-color),4px 4px 0 var(--bt-accent-color),0 7px 12px rgba(101,47,12,.25)}
.bt-stage[data-bt-style=night] .bt-content{background:linear-gradient(90deg,transparent,rgba(17,20,56,.58),transparent);border-radius:20px}
.bt-stage[data-bt-style=night] .bt-title{-webkit-text-stroke:calc(1px * var(--bt-scale)) #fff;text-shadow:0 0 4px var(--bt-accent-color),0 0 12px var(--bt-accent-color),0 0 25px var(--bt-accent-color)}
.bt-stage[data-bt-style=night] .bt-badge{background:rgba(30,23,68,.7);box-shadow:0 0 10px var(--bt-accent-color)}
.bt-stage[data-bt-style=candy] .bt-content{border-radius:40px;background:linear-gradient(150deg,rgba(119,45,83,.8),rgba(202,104,151,.6));border:2px solid #ffe8f4;box-shadow:inset 0 3px 0 rgba(255,255,255,.2),0 4px 0 rgba(116,48,83,.2)}
.bt-stage[data-bt-style=candy] .bt-title{-webkit-text-stroke:calc(2px * var(--bt-scale)) var(--bt-accent-color);text-shadow:0 4px 0 var(--bt-accent-color),0 -1px 0 white}
.bt-stage[data-bt-style=toy] .bt-title{-webkit-text-stroke:calc(2px * var(--bt-scale)) var(--bt-accent-color);text-shadow:3px 4px 0 var(--bt-accent-color);letter-spacing:.05em}
.bt-stage[data-bt-style=toy] .bt-badge{border-radius:4px;border-width:2px;box-shadow:3px 3px 0 var(--bt-accent-color);background:var(--bt-title-color);color:var(--bt-accent-color)}
@media(max-width:600px){.bt-stage{inset:8px}}
