:root{--c-primary:#7952e8;--c-primary-hover:#6840d6;--c-primary-soft:#ede5ff;--c-canvas:#faf9ff;--c-surface:#fff;--c-ink:#30234e;--c-secondary:#655b79;--c-muted:#817994;--c-line:#e9e5f2;--c-success:#238568;--c-success-soft:#eaf5ee;--c-warning:#a96510;--c-warning-soft:#fff3df;--r-sm:8px;--r-md:12px;--r-lg:20px;--r-xl:28px;--shadow-card:0 1px 2px #30234e0a, 0 12px 28px -18px #30234e47;--touch:44px;--page-max:520px}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0}body{background:var(--c-canvas);color:var(--c-ink);-webkit-font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,system-ui,sans-serif;font-size:16px;line-height:1.65;overflow-x:hidden}#root{min-height:100vh}.page{width:100%;max-width:var(--page-max);padding:20px 20px calc(40px + env(safe-area-inset-bottom));margin:0 auto}.brand{align-items:center;gap:8px;min-width:0;padding:4px 0 20px;display:flex}.brand-mark{color:var(--c-primary);flex:none;font-size:15px;line-height:1}.brand-name{letter-spacing:.02em;flex:none;font-size:17px;font-weight:600}.brand-note{min-width:0;color:var(--c-muted);white-space:nowrap;text-overflow:ellipsis;text-align:right;flex:auto;margin-left:4px;font-size:12px;overflow:hidden}.hero{padding:8px 0 28px}.eyebrow{color:var(--c-muted);letter-spacing:.16em;text-transform:uppercase;margin-bottom:10px;font-size:10px;font-weight:600;display:block}.hero-title{letter-spacing:-.01em;margin:0;font-size:30px;font-weight:700;line-height:1.32}.hero-title .accent{color:var(--c-primary)}.hero-copy{color:var(--c-secondary);margin:10px 0 0;font-size:15px}.featured{text-align:left;cursor:pointer;width:100%;font:inherit;color:inherit;background:0 0;border:0;padding:0;display:block}.featured-cover{aspect-ratio:4/3;border-radius:var(--r-xl);box-shadow:var(--shadow-card);background:radial-gradient(120% 90% at 78% 8%,#ffffffe6 0%,#fff0 55%),linear-gradient(154deg,#d9ccff 0%,#b9a4f7 46%,#8d6ee6 100%);align-items:flex-end;padding:20px;display:flex;position:relative;overflow:hidden}.featured-cover img{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.cover-mark{color:#ffffffb8;font-size:22px;position:absolute;top:18px;right:20px}.featured-meta{z-index:1;color:#fff;position:relative}.featured-tag{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#ffffff38;border-radius:999px;margin-bottom:10px;padding:3px 10px;font-size:12px;display:inline-block}.featured-title{margin:0;font-size:24px;font-weight:700;line-height:1.3}.featured-when{opacity:.9;margin-top:8px;font-size:13px}.welcome{border-radius:var(--r-xl);background:var(--c-surface);box-shadow:var(--shadow-card);text-align:center;padding:40px 24px}.welcome-symbol{color:var(--c-primary);margin-bottom:14px;font-size:26px;display:block}.welcome-title{margin:0 0 8px;font-size:20px;font-weight:600}.welcome-copy{color:var(--c-secondary);margin:0 0 20px;font-size:14px}.section-head{justify-content:space-between;align-items:baseline;margin:36px 0 14px;display:flex}.section-head h2{margin:0;font-size:18px;font-weight:600}.text-link{color:var(--c-primary);font:inherit;cursor:pointer;background:0 0;border:0;padding:0;font-size:14px}.chips{flex-wrap:wrap;gap:8px;margin-bottom:4px;display:flex}.chip{border:1px solid var(--c-line);background:var(--c-surface);color:var(--c-secondary);font:inherit;cursor:pointer;border-radius:999px;padding:9px 15px;font-size:14px;line-height:1;transition:border-color .16s,color .16s,background .16s}.chip[aria-pressed=true]{border-color:var(--c-primary);background:var(--c-primary-soft);color:var(--c-primary-hover);font-weight:600}.card-list{flex-direction:column;gap:14px;display:flex}.card{border-radius:var(--r-lg);background:var(--c-surface);width:100%;box-shadow:var(--shadow-card);text-align:left;font:inherit;color:inherit;cursor:pointer;border:0;gap:14px;padding:16px;transition:transform .14s;display:flex}.card:active{transform:scale(.99)}.card-thumb{border-radius:var(--r-md);color:#fff;background:linear-gradient(150deg,#e2d8ff,#b9a4f7);flex:0 0 76px;place-items:center;height:76px;font-size:20px;display:grid;overflow:hidden}.card-thumb img{object-fit:cover;width:100%;height:100%}.card-body{flex:1;min-width:0}.card-cat{color:var(--c-primary);margin-bottom:4px;font-size:12px;font-weight:600;display:inline-block}.card-title{margin:0 0 6px;font-size:17px;font-weight:600;line-height:1.4}.card-sub{color:var(--c-muted);overflow-wrap:anywhere;margin:0;font-size:13px}.detail-cover{aspect-ratio:16/10;border-radius:var(--r-xl);background:radial-gradient(120% 90% at 78% 8%,#ffffffeb 0%,#fff0 55%),linear-gradient(154deg,#d9ccff 0%,#b9a4f7 46%,#8d6ee6 100%);align-items:flex-end;margin-bottom:22px;padding:18px;display:flex;position:relative;overflow:hidden}.detail-cover img{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.detail-cover-cat{z-index:1;color:var(--c-primary-hover);background:#ffffffe6;border-radius:999px;padding:4px 12px;font-size:12px;font-weight:600;position:relative}.detail-title{margin:0 0 8px;font-size:26px;font-weight:700;line-height:1.34}.detail-summary{color:var(--c-secondary);margin:0 0 6px;font-size:15px}.detail-organizer{color:var(--c-muted);margin:0;font-size:13px}.block{margin-top:28px}.block-title{margin-bottom:10px;font-size:16px;font-weight:600;display:block}.prose{color:var(--c-secondary);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;font-size:15px;line-height:1.78}.note{color:var(--c-muted);margin:8px 0 0;font-size:13px;line-height:1.6}.session{border:1px solid var(--c-line);border-radius:var(--r-lg);background:var(--c-surface);padding:16px}.session+.session{margin-top:10px}.session.is-muted{background:#fbfaff}.session-head{align-items:center;gap:8px;margin-bottom:6px;display:flex}.session-status{background:var(--c-success-soft);color:var(--c-success);border-radius:999px;padding:2px 9px;font-size:12px;font-weight:600}.session.is-muted .session-status{color:var(--c-muted);background:#f1eff7}.session-when{font-size:15px;font-weight:600}.session-place{color:var(--c-secondary);margin:0;font-size:14px}.session-note{color:var(--c-muted);margin:6px 0 0;font-size:13px}.state{border-radius:var(--r-lg);background:var(--c-surface);text-align:center;box-shadow:var(--shadow-card);padding:48px 24px}.state-title{margin:0 0 6px;font-size:16px;font-weight:600}.state-desc{color:var(--c-muted);margin:0;font-size:14px}.spinner{border:2px solid var(--c-line);border-top-color:var(--c-primary);border-radius:50%;width:22px;height:22px;margin:0 auto 12px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.btn{border-radius:var(--r-lg);background:var(--c-primary);color:#fff;width:100%;min-height:50px;font:inherit;cursor:pointer;border:0;justify-content:center;align-items:center;margin-top:12px;padding:0 20px;font-size:16px;font-weight:600;transition:background .16s;display:flex}.btn:hover{background:var(--c-primary-hover)}.btn.is-ghost{border:1px solid var(--c-line);background:var(--c-surface);color:var(--c-secondary)}.btn.is-ghost:hover{background:#f7f5ff}.back{min-height:var(--touch);color:var(--c-muted);font:inherit;cursor:pointer;background:0 0;border:0;align-items:center;gap:5px;padding:0;font-size:14px;display:inline-flex}.footnote{color:var(--c-muted);text-align:center;margin:36px 0 0;font-size:12px;line-height:1.7}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.topbar{min-height:var(--touch);grid-template-columns:84px 1fr 84px;align-items:center;gap:8px;margin-bottom:18px;display:grid}.topbar-back{min-height:var(--touch);color:var(--c-muted);font:inherit;cursor:pointer;background:0 0;border:0;justify-self:start;padding:0;font-size:14px}.topbar-back.is-empty{visibility:hidden}.topbar-title{text-align:center;color:var(--c-ink);margin:0;font-size:16px;font-weight:600}.topbar-slot{justify-self:end}.tabbar{border:1px solid var(--c-line);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:var(--shadow-card);background:#ffffffeb;border-radius:999px;gap:4px;margin-top:28px;padding:6px;display:flex;position:sticky;bottom:0}.tab{min-height:42px;color:var(--c-muted);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:999px;flex:1;font-size:14px}.tab.is-active{background:var(--c-primary-soft);color:var(--c-primary);font-weight:600}.tabs{gap:10px;margin-bottom:18px;display:flex}.chip.is-active{border-color:var(--c-primary);background:var(--c-primary-soft);color:var(--c-primary)}.form{flex-direction:column;gap:14px;margin-bottom:24px;display:flex}.form.is-inner{margin-bottom:0}.field{flex-direction:column;gap:8px;display:flex}.field-label{color:var(--c-secondary);font-size:13px}.field-hint{color:var(--c-muted);font-size:12px;line-height:1.6}.input{border:1px solid var(--c-line);border-radius:var(--r-md);background:var(--c-surface);width:100%;min-height:48px;color:var(--c-ink);font:inherit;padding:12px 14px;font-size:15px}.input:focus{outline:2px solid var(--c-primary-soft);border-color:var(--c-primary)}.check{border:1px solid var(--c-line);border-radius:var(--r-md);background:var(--c-surface);color:var(--c-secondary);align-items:flex-start;gap:10px;padding:12px 14px;font-size:14px;line-height:1.6;display:flex}.check input{width:20px;height:20px;accent-color:var(--c-primary);margin-top:1px}.participant{border:1px solid var(--c-line);border-radius:var(--r-md);background:var(--c-surface);flex-direction:column;gap:8px;padding:12px;display:flex}.participant-head{align-items:center;gap:10px;display:flex}.participant-index{color:var(--c-muted);font-size:12px}.segmented{background:var(--c-canvas);border-radius:999px;padding:2px;display:inline-flex}.seg{min-height:32px;color:var(--c-muted);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:999px;padding:0 14px;font-size:13px}.seg.is-active{background:var(--c-surface);color:var(--c-primary);font-weight:600}.linkish{color:var(--c-primary);font:inherit;cursor:pointer;background:0 0;border:0;margin-left:auto;padding:0;font-size:13px}.linkish.is-danger{color:#b4392a}.form-error{border-radius:var(--r-md);background:var(--c-warning-soft);color:var(--c-warning);margin:0;padding:10px 14px;font-size:13px;line-height:1.6}.form-note{color:var(--c-success);margin:0;font-size:13px}.btn.is-small{width:auto;min-height:42px;margin-top:10px;padding:0 18px;font-size:14px}.row{gap:10px;display:flex}.row .btn{flex:1}.panel{border:1px solid var(--c-line);border-radius:var(--r-lg);background:var(--c-surface);box-shadow:var(--shadow-card);margin-bottom:16px;padding:16px 18px}.panel.is-warn{border-color:var(--c-warning-soft);background:var(--c-warning-soft)}.panel.is-hero{background:linear-gradient(140deg,#f3edff,#fff)}.panel-title{color:var(--c-ink);margin:0 0 6px;font-size:17px;line-height:1.4}.panel-sub{color:var(--c-secondary);margin:0;font-size:13px;line-height:1.6}.panel-note{color:var(--c-muted);margin:10px 0 0;font-size:13px;line-height:1.7}.hero-number{letter-spacing:-.02em;color:var(--c-primary);margin:6px 0;font-size:40px;font-weight:700}.section-title{color:var(--c-ink);margin:8px 0 2px;font-size:15px}.quick{grid-template-columns:1fr 1fr;gap:12px;margin-bottom:20px;display:grid}.quick-item{border:1px solid var(--c-line);border-radius:var(--r-lg);background:var(--c-surface);text-align:left;font:inherit;cursor:pointer;flex-direction:column;gap:4px;padding:16px;display:flex}.quick-item strong{color:var(--c-ink);font-size:15px}.quick-item span{color:var(--c-muted);font-size:12px}.list{flex-direction:column;gap:12px;margin:0 0 20px;padding:0;list-style:none;display:flex}.list-item{border:1px solid var(--c-line);border-radius:var(--r-lg);background:var(--c-surface);box-shadow:var(--shadow-card);padding:16px}.list-head{align-items:flex-start;gap:10px;display:flex}.list-title{color:var(--c-ink);flex:1;margin:0;font-size:15px;line-height:1.45}.list-sub{color:var(--c-secondary);margin:8px 0 0;font-size:13px;line-height:1.65}.list-actions{gap:16px;margin-top:12px;display:flex}.list-actions .linkish:first-child{margin-left:0}.pill{background:var(--c-canvas);color:var(--c-muted);border-radius:999px;flex:none;padding:4px 10px;font-size:12px;line-height:1.4}.pill.is-confirmed{background:var(--c-success-soft);color:var(--c-success)}.pill.is-pending{background:var(--c-warning-soft);color:var(--c-warning)}.pill.is-waitlisted{background:var(--c-primary-soft);color:var(--c-primary)}.pill.is-cancelled{color:var(--c-muted);background:#f4f2f7}.pill.is-attended{background:var(--c-success-soft);color:var(--c-success)}
