:root{--cmcc-blue:#0085d0;--cmcc-blue-deep:#005a9e;--cmcc-green:#a8cf38;--bg:#f3f8fc;--ink:#0f1b2d;--muted:#5b6b82;--safe-b:env(safe-area-inset-bottom,0px)}*{box-sizing:border-box}html{font-size:17px}html,body,#app{min-height:100%;color:var(--ink);background:radial-gradient(120% 70% at 50% -10%, #c5e8f6 0%, transparent 55%), linear-gradient(180deg, #e8f5fb 0%, var(--bg) 40%, #f8fbff 100%);-webkit-font-smoothing:antialiased;margin:0;font-family:PingFang SC,Noto Sans SC,Helvetica Neue,Arial,sans-serif;font-size:17px;line-height:1.55}a{color:inherit;text-decoration:none}button{font:inherit}.page{width:min(460px,100%);min-height:100vh;padding:14px 16px calc(28px + var(--safe-b));margin:0 auto}.topbar{align-items:center;gap:12px;margin-bottom:16px;display:flex}.topbar img{object-fit:contain;background:#fff;border:1px solid #d6e8f5;border-radius:12px;width:46px;height:46px;padding:3px}.topbar .title{font-size:18px;font-weight:700}.topbar .sub{color:var(--muted);margin-top:2px;font-size:14px}.panel{background:#fffffff0;border:1px solid #d6e8f5;border-radius:20px;padding:18px;box-shadow:0 10px 28px #005a9e0f}.ticket{background:#fff;border:1px solid #d6e8f5;border-radius:22px;overflow:hidden;box-shadow:0 12px 32px #0085d01f}.ticket-top{text-align:center;background:linear-gradient(#f0f9fd,#fff);padding:18px 16px 12px}.ticket-no{color:var(--cmcc-blue-deep);letter-spacing:.04em;margin:10px 0;font-size:64px;font-weight:800;line-height:1}.perforation{background:radial-gradient(circle at 0,#0000 9px,#fff 10px) 0/11px 22px no-repeat,radial-gradient(circle at 100%,#0000 9px,#fff 10px) 100%/11px 22px no-repeat,#fff;height:22px;position:relative}.perforation:before{content:"";border-top:2px dashed #c9daf0;position:absolute;top:50%;left:14px;right:14px;transform:translateY(-50%)}.ticket-body{padding:8px 16px 16px}.kv{grid-template-columns:1fr 1fr;gap:8px;display:grid}.kv-item{background:#f5fbfe;border:1px solid #e4f1f8;border-radius:12px;padding:10px}.kv-item .k{color:var(--muted);font-size:13px}.kv-item .v{color:var(--cmcc-blue-deep);margin-top:2px;font-size:18px;font-weight:700}.serve-hero{text-align:center;color:#fff;background:linear-gradient(155deg,#2a9de0,#006fb0 70%);border-radius:22px;padding:22px 16px;position:relative;overflow:hidden;box-shadow:0 12px 28px #0085d047}.serve-hero .no{letter-spacing:.05em;margin:8px 0;font-size:60px;font-weight:800;line-height:1}
