/* 洛丽塔茶会：奶油底、玫瑰粉、古董金、格纹与蕾丝 */
:root{
  --cream:#FFF8F0; --paper:#FFFFFF; --rose:#C76A80; --rose-d:#B5566A; --rose-l:#FBE3E6; --gold:#D9B26A; --gold-d:#A9803A;
  --green:#5FBF95; --yellow:#E9A64A; --red:#E0607E; --gray:#CFC3C6;
  --ink:#6B4A4F; --ink2:#9A7A80; --line:#EBC9CE;
  --shadow:0 10px 26px rgba(199,106,128,.14);
  --serif:"Source Han Serif SC","Noto Serif SC","Songti SC","STZhongsong","STSong","SimSun",serif;
  --mono:ui-monospace,"SF Mono","Cascadia Mono",Consolas,monospace;
  --gingham:linear-gradient(90deg,rgba(231,135,154,.26) 50%,transparent 50%),linear-gradient(rgba(231,135,154,.26) 50%,transparent 50%);
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html{-webkit-text-size-adjust:100%}
body{margin:0;min-height:100vh;font-family:var(--serif);color:var(--ink);line-height:1.6;font-size:16px;background:var(--cream);position:relative}
/* 顶部格纹桌布 + 蕾丝花边 */
body::before{content:"";position:absolute;left:0;right:0;top:0;height:132px;background-color:var(--rose-l);background-image:var(--gingham);background-size:24px 24px;
  -webkit-mask:radial-gradient(circle at 12px 100%,transparent 10px,#000 11px) 0 0/24px 100%;mask:radial-gradient(circle at 12px 100%,transparent 10px,#000 11px) 0 0/24px 100%}
.wrap{position:relative;max-width:540px;margin:0 auto;padding:18px 16px 40px;display:flex;flex-direction:column;gap:16px}
h1{font-size:26px;margin:0;letter-spacing:.06em;color:var(--rose-d)}
h1::after{content:" ❦";color:var(--gold);font-size:.7em}
h2{font-size:18px;margin:0 0 10px;text-wrap:balance;color:var(--rose-d)}
p{margin:0}
a{color:var(--rose-d)}
code{font-family:var(--mono);font-size:.85em;background:var(--rose-l);color:var(--rose-d);padding:1px 8px;border-radius:6px;word-break:break-all}

/* 蕾丝卡片：细边 + 内圈虚线 */
.card{background:var(--paper);border:1px solid var(--line);border-radius:16px;padding:20px;box-shadow:var(--shadow);outline:1px dashed #E8BFC6;outline-offset:-7px}
.banner{position:sticky;top:0;z-index:5;display:flex;gap:10px;justify-content:center;align-items:center;flex-wrap:wrap;padding:7px 14px;font-size:13px;background:var(--rose);color:#fff}
.link{border:0;background:none;color:inherit;font:inherit;text-decoration:underline;cursor:pointer;padding:4px}

.weather{background:transparent;border:0;box-shadow:none;outline:0;padding:6px 4px 0}
.weather-top{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.mode{font-size:13px;color:var(--ink2);letter-spacing:.1em}
.pill{display:flex;background:#fff;border:1px solid var(--gold);border-radius:999px;padding:3px;flex:none}
.pill button{border:0;background:none;font:inherit;font-size:13px;color:var(--gold-d);padding:5px 12px;border-radius:999px;cursor:pointer}
.pill button.on{background:var(--rose);color:#fff}
.mascot-row{display:flex;align-items:center;gap:14px;margin-top:18px}
.bubble{flex:1;background:#fff;border:1px solid var(--line);border-radius:16px 16px 16px 4px;padding:12px 16px;font-size:16px;box-shadow:var(--shadow)}

/* 吉祥物：金边浮雕椭圆框，四个表情在一张图里 */
.mascot{flex:none;width:128px;height:150px;border-radius:50%;padding:5px;background:linear-gradient(135deg,#F1DDA8,var(--gold) 45%,#F6E7BD 60%,var(--gold-d));box-shadow:0 0 0 4px #fff,0 0 0 5px var(--gold),var(--shadow)}
.cameo{width:100%;height:100%;border-radius:50%;background:var(--cream) url(img/mascot.webp) 0 0/200% 200% no-repeat;animation:bob 2.4s ease-in-out infinite alternate}
.mascot[data-state=ears] .cameo{background-position:100% 0}
.mascot[data-state=love] .cameo{background-position:0 100%}
.mascot[data-state=shield] .cameo{background-position:100% 100%}
.mascot[data-state=sniff] .cameo,.mascot[data-state=ears] .cameo{animation-duration:.5s}
@keyframes bob{to{transform:translateY(-3px) scale(1.02)}}

/* 按钮：玫瑰底 + 双层金边 */
.btn{font:inherit;border:1px solid var(--gold);border-radius:10px;padding:10px 18px;cursor:pointer;text-decoration:none;display:inline-flex;justify-content:center;align-items:center;gap:6px;
  transition:transform .15s,filter .15s;min-height:44px;letter-spacing:.06em}
.btn:active{transform:scale(.97)}
.btn:focus-visible,.pill button:focus-visible,summary:focus-visible,input:focus-visible,.link:focus-visible,.receipt-btn:focus-visible{outline:3px solid var(--gold);outline-offset:3px}
.btn.primary{background:var(--rose);color:#fff;font-weight:700;box-shadow:0 0 0 3px #fff,0 0 0 4px var(--gold),0 10px 22px rgba(199,106,128,.28)}
.btn.primary:hover{filter:brightness(1.06)}
.btn.ghost{background:#fff;color:var(--rose-d)}
.btn.big{width:100%;font-size:19px;padding:16px 20px;letter-spacing:.22em;position:relative;margin-top:10px}
.btn.big::before{content:"🎀";position:absolute;left:50%;top:-17px;translate:-50% 0;font-size:22px;letter-spacing:0}
.btn[disabled]{opacity:.6;cursor:progress}
.quick{display:flex;gap:10px;margin-top:16px;flex-wrap:wrap}
.quick .btn{flex:1 1 160px;font-size:14px}

.steps{list-style:none;margin:18px 0 0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:8px;font-size:12px;text-align:center;color:var(--ink2)}
.steps li::before{content:"";display:block;height:5px;border-radius:999px;background:var(--rose-l);margin-bottom:6px;transition:background .4s}
.steps li.doing::before{background:linear-gradient(90deg,var(--rose),var(--gold),var(--rose));background-size:200% 100%;animation:glow 1s linear infinite}
.steps li.done::before{background:var(--gold)}
.steps li.doing{color:var(--rose-d);font-weight:700}
@keyframes glow{to{background-position:-200% 0}}

.drawer{margin-top:14px;background:var(--cream);border:1px dashed var(--line);border-radius:12px;padding:10px 14px}
summary{cursor:pointer;font-weight:700;font-size:15px;border-radius:8px;color:var(--rose-d)}
.hint{font-size:13px;color:var(--ink2);margin-top:8px}
.hint.err{color:var(--red)}
.row{display:flex;gap:10px;margin-top:10px;flex-wrap:wrap}
input[type=text]{flex:1 1 200px;min-width:0;font:14px var(--mono);border:1px solid var(--gold);border-radius:10px;padding:10px 14px;background:#fff;color:var(--ink)}

/* 提示条 */
.notice{display:flex;flex-direction:column;gap:2px;padding:12px 16px;border-radius:12px;background:#fff;border:1px solid var(--gold);color:var(--ink);text-decoration:none;font-size:14px;box-shadow:var(--shadow)}
.notice b{font-size:16px;color:var(--rose-d)}
.notice span{color:var(--ink2)}
.notice em{font-style:normal;font-weight:700;color:var(--gold-d);margin-top:4px}
.dl{display:flex;gap:12px;flex-wrap:wrap;margin-top:10px}
.dl .btn{flex:1 1 150px;font-size:15px}
.dl i{font-style:normal;font-size:11px;background:#fff;color:var(--rose-d);border-radius:999px;padding:1px 8px;letter-spacing:0}
.notice.warn{background:#FFF0F3;border:2px solid var(--red)}
.notice.warn b{color:#C7385A}
.rules strong{color:#C7385A}

/* 报告 */
#report,#cards{display:flex;flex-direction:column;gap:12px}
.lv-green{--c:var(--green)}.lv-yellow{--c:var(--yellow)}.lv-red{--c:var(--red)}.lv-gray{--c:var(--gray)}
.verdict{display:flex;gap:16px;align-items:center;background-color:#fff;background-image:var(--gingham);background-size:18px 18px;background-blend-mode:normal}
.verdict>div:last-child{background:#fff;border-radius:10px;padding:6px 14px;flex:1}
.light{flex:none;width:58px;height:58px;border-radius:50%;background:var(--c);box-shadow:0 0 0 4px #fff,0 0 0 5px var(--gold),0 6px 16px color-mix(in srgb,var(--c) 50%,transparent)}
.verdict h2{font-size:22px;margin:0;color:var(--ink)}
.verdict p{font-size:14px;color:var(--ink2)}

.item{padding:14px 18px}
.item-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.item-head h3{margin:0;font-size:17px;flex:1;display:flex;align-items:center;gap:8px}
.item-head h3::before{content:"";flex:none;width:14px;height:14px;border-radius:50%;background:var(--c);box-shadow:0 0 0 2px #fff,0 0 0 3px var(--gold)}
.tag{font-size:12px;font-weight:700;color:#fff;background:var(--c);border-radius:999px;padding:2px 12px;font-family:var(--serif)}
.stamp{font-size:12px;color:var(--gold-d);border:1px solid var(--gold);border-radius:6px;padding:0 8px;transform:rotate(-4deg)}
.item p{margin-top:6px;font-size:15px;padding-left:22px}
.receipt-btn{border:0;background:none;color:var(--gold-d);font:inherit;font-size:12px;text-decoration:underline dotted;cursor:pointer;padding:4px}
.receipt{margin:10px 0 0;padding:10px 12px;background:var(--cream);border:1px dashed var(--gold);border-radius:8px;font-size:12.5px;display:grid;grid-template-columns:auto 1fr;gap:5px 12px}
.receipt dt{color:var(--ink2);white-space:nowrap}
.receipt dd{margin:0;font-family:var(--mono);word-break:break-all;color:var(--ink)}
body:not(.geek) .receipt:not(.open){display:none}
body:not(.geek) .receipt-btn{opacity:.85}
.sys h3{margin:0 0 6px;font-size:16px;color:var(--rose-d)}
.sys p{font-size:14px;margin-top:4px}
.actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:6px}
.actions .btn{flex:1}
.fine{font-size:12px;color:var(--ink2);text-align:center}

.pairbox{border:2px solid var(--c);text-align:center}
.pairbox h2{color:var(--c);font-size:19px}
.pairbox ul{text-align:left;margin:8px 0 0;padding-left:20px;font-size:14px}

.tips ul{margin:0;padding-left:20px;font-size:14px;color:var(--ink2)}
.tips li::marker{content:"♡  ";color:var(--rose)}
.foot{text-align:center;font-size:12px;color:var(--ink2);letter-spacing:.1em}

/* 弹窗 */
.modal{position:fixed;inset:0;z-index:20;background:rgba(107,74,79,.4);backdrop-filter:blur(5px);display:grid;place-items:center;padding:16px;overflow:auto}
.sheet{background:var(--cream);border:1px solid var(--gold);border-radius:16px;padding:22px;width:100%;max-width:440px;box-shadow:0 0 0 5px #fff,0 0 0 6px var(--gold),0 24px 60px rgba(107,74,79,.35);max-height:calc(100vh - 40px);overflow:auto}
.envelope{position:relative;padding-top:30px}
.flap{position:absolute;top:8px;left:50%;translate:-50% 0;font-size:20px}
.rules{margin:0 0 14px;padding-left:22px;font-size:14px;display:flex;flex-direction:column;gap:8px}
.rules li::marker{color:var(--gold-d);font-weight:700}
.rules b{display:block;color:var(--rose-d);font-size:16px}
.check{display:flex;gap:8px;align-items:center;font-size:13px;color:var(--ink2);margin-bottom:8px;cursor:pointer}
.check input{width:18px;height:18px;accent-color:var(--rose)}
#shareImg{width:100%;border-radius:10px;display:block;border:1px solid var(--line)}
.qr{background:#fff;border:1px solid var(--gold);border-radius:10px;padding:12px;width:min(250px,100%);margin:10px auto}
.qr svg{display:block;width:100%;height:auto}

@media (max-width:420px){.mascot{width:104px;height:122px}.bubble{font-size:15px}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* 这是什么 / 常见问题（默认收起） */
.about summary h2{display:inline;font-size:15px;margin:0;color:var(--rose-d)}
.about details[open] summary{margin-bottom:8px}
.about h3{font-size:15px;margin:14px 0 4px;color:var(--rose-d)}
.about h3::before{content:"❦ ";color:var(--gold)}
.about p{font-size:14px;color:var(--ink2)}
.about ul{margin-top:4px}
.about li b{color:var(--ink)}
