:root{--bg: #f7f6f3;--card: #ffffff;--text: #1f1f1f;--muted: #6b6b6b;--border: #e6e3dd;--accent: #d9480f;--accent-soft: #fdece3;--accent-text: #9c3308;--green: #2f7d4a;--green-soft: #e4f3e9;--amber: #a15c00;--amber-soft: #fff1d6;--blue: #2b5fa3;--blue-soft: #e3ecf8;--gray-soft: #eeece8;--danger: #b42318;--radius: 14px;--shadow: 0 1px 2px rgba(0, 0, 0, .04), 0 4px 14px rgba(0, 0, 0, .04)}*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Noto Sans SC,sans-serif;font-size:16px;line-height:1.55;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit;color:inherit}.app{max-width:640px;margin:0 auto;padding:0 16px 96px;min-height:100vh}.topbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;padding:14px 0 10px;background:var(--bg)}.brand{display:flex;align-items:center;gap:8px;font-weight:700;font-size:18px}.brand-mark{width:26px;height:26px;border-radius:7px;background:var(--accent);display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);padding:5px;gap:2px}.brand-mark i{border-radius:50%;background:#fff;opacity:0}.brand-mark i:nth-child(1),.brand-mark i:nth-child(3),.brand-mark i:nth-child(5),.brand-mark i:nth-child(7),.brand-mark i:nth-child(9){opacity:1}.nav{display:flex;gap:4px}.nav a{padding:6px 12px;border-radius:999px;color:var(--muted);font-weight:500}.nav a.active{background:var(--text);color:#fff}h1{font-size:22px;margin:18px 0 12px}h2{font-size:16px;margin:22px 0 8px}.muted{color:var(--muted)}.center{text-align:center}.small{font-size:13px}.row{display:flex;align-items:center;gap:8px}.row.between{justify-content:space-between}.wrap{flex-wrap:wrap}.stack{display:flex;flex-direction:column;gap:12px}.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}.tabs{display:flex;gap:6px;margin:8px 0 12px;overflow-x:auto;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}.chip{flex:none;padding:6px 14px;border-radius:999px;border:1px solid var(--border);background:var(--card);color:var(--muted);cursor:pointer;font-size:14px;white-space:nowrap}.chip.active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-text);font-weight:600}.badge{display:inline-block;padding:1px 8px;border-radius:6px;font-size:12px;font-weight:600;line-height:20px;white-space:nowrap}.badge.regular{background:var(--blue-soft);color:var(--blue)}.badge.adhoc,.badge.confirmed{background:var(--green-soft);color:var(--green)}.badge.waitlisted{background:var(--amber-soft);color:var(--amber)}.badge.host{background:var(--accent-soft);color:var(--accent-text)}.badge.cancelled,.badge.past{background:var(--gray-soft);color:var(--muted)}.badge.full{background:var(--amber-soft);color:var(--amber)}.event-card{display:block;background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px 16px;transition:transform .08s ease}.event-card:active{transform:scale(.99)}.event-card.dim{opacity:.6}.event-card .title{font-size:17px;font-weight:700;margin:6px 0 4px}.event-card .when{font-weight:600;color:var(--accent-text)}.event-card .meta{color:var(--muted);font-size:14px;display:flex;flex-wrap:wrap;gap:4px 12px}.event-card .foot{display:flex;justify-content:space-between;align-items:center;margin-top:10px;font-size:14px}.seats{font-weight:600}.seats.full{color:var(--amber)}.facts{display:grid;grid-template-columns:4.5em 1fr;gap:8px 12px;margin:12px 0}.facts dt{color:var(--muted)}.facts dd{margin:0}.description{white-space:pre-wrap;word-break:break-word}.people{list-style:none;padding:0;margin:0}.people li{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--border)}.people li:last-child{border-bottom:none}.people .num{width:24px;color:var(--muted);font-variant-numeric:tabular-nums;text-align:right}.people .name{flex:1}.people .wx{color:var(--muted);font-size:13px;margin-left:6px}.banner{padding:10px 14px;border-radius:10px;margin:12px 0;font-size:14px}.banner.warn{background:var(--amber-soft);color:var(--amber)}.banner.info{background:var(--blue-soft);color:var(--blue)}.banner.error{background:#fde8e6;color:var(--danger)}.banner.ok{background:var(--green-soft);color:var(--green)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:11px 18px;border-radius:10px;border:1px solid transparent;background:var(--text);color:#fff;font-weight:600;cursor:pointer;text-align:center}.btn.primary{background:var(--accent)}.btn.secondary{background:var(--card);color:var(--text);border-color:var(--border)}.btn.danger{background:var(--card);color:var(--danger);border-color:var(--border)}.btn.small{padding:6px 12px;font-size:14px;border-radius:8px}.btn.block{width:100%}.btn:disabled{opacity:.5;cursor:default}.btn.icon{padding:4px 8px;background:transparent;color:var(--muted);border:none;font-size:18px;line-height:1}.fab{position:fixed;right:max(16px,calc(50% - 304px));bottom:24px;z-index:20;padding:14px 20px;border-radius:999px;background:var(--accent);color:#fff;font-weight:700;box-shadow:0 6px 20px #d9480f59}.actions{display:flex;gap:10px;margin:16px 0}.actions .btn{flex:1}.field{display:block;margin-bottom:14px}.field>span{display:block;font-size:14px;color:var(--muted);margin-bottom:5px}.field input,.field select,.field textarea{width:100%;padding:11px 12px;border:1px solid var(--border);border-radius:10px;background:var(--card);outline:none}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent)}.field textarea{min-height:96px;resize:vertical}.field .hint{display:block;font-size:13px;color:var(--muted);margin-top:4px}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.segmented{display:grid;grid-template-columns:1fr 1fr;gap:0;border:1px solid var(--border);border-radius:10px;overflow:hidden;margin-bottom:14px}.segmented button{padding:10px;border:none;background:var(--card);color:var(--muted);cursor:pointer}.segmented button.active{background:var(--text);color:#fff;font-weight:600}.code-input{font-size:26px;letter-spacing:8px;text-align:center;font-variant-numeric:tabular-nums}.empty{text-align:center;color:var(--muted);padding:40px 0}.login-box{margin-top:40px}.login-box h1{margin-bottom:4px}@media(max-width:420px){.field-row{grid-template-columns:1fr}}
