.page{max-width:640px;margin:0 auto;padding:14px 14px calc(86px + env(safe-area-inset-bottom))}.page.center{display:flex;flex-direction:column;gap:12px;justify-content:center;min-height:90vh;text-align:center}.hero-ic{font-size:48px}.top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:4px 2px 12px}.top h1{font-size:24px}.tabbar{position:fixed;left:0;right:0;bottom:0;background:#fffffff5;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-top:1px solid var(--line);display:flex;justify-content:space-around;padding:6px 4px calc(6px + env(safe-area-inset-bottom));z-index:40}.tabbar button{background:none;border:0;display:flex;flex-direction:column;align-items:center;gap:1px;font-size:11px;color:var(--muted);padding:4px 6px;cursor:pointer;min-width:60px}.tabbar button .ic{display:flex;height:22px;opacity:.75}.tabbar button.on{color:var(--brand);font-weight:650}.tabbar button.on .ic{opacity:1}.session{display:flex;gap:12px;align-items:stretch}.session .time{width:52px;flex:none}.session .time .t{font-size:17px;font-weight:700}.session .bar{width:4px;border-radius:2px;flex:none}.session .body{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}.session .name{font-weight:650}.seats{font-size:13px;color:var(--muted)}.seats.low{color:var(--warn);font-weight:600}.seats.full{color:var(--danger);font-weight:600}.mcard{border-radius:var(--radius);padding:16px;color:#fff;background:linear-gradient(135deg,var(--brand),#b04a6a);box-shadow:var(--shadow)}.mcard+.mcard{margin-top:10px}.mcard .muted{color:#ffffffc7}.mcard .big{font-size:30px;font-weight:750;line-height:1}.mcard .progress{background:#ffffff40}.mcard .progress>div{background:#fff}.mcard.gray{background:linear-gradient(135deg,#8a7c82,#a99aa0)}.plan{display:flex;flex-direction:column;gap:6px}.plan .price{font-size:20px;font-weight:750;color:var(--brand);white-space:nowrap}.feat{display:flex;flex-wrap:wrap;gap:6px}.roster-row{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--line)}.roster-row:last-child{border-bottom:0}.mark{display:flex;gap:6px}.mark button{width:44px;height:40px;border-radius:10px;border:1px solid var(--line);background:#fff;font-size:18px;cursor:pointer}.mark button.on-yes{background:var(--ok);border-color:var(--ok);color:#fff}.mark button.on-no{background:var(--danger);border-color:var(--danger);color:#fff}.seg{display:flex;background:#efe7ea;border-radius:12px;padding:3px;gap:3px}.seg button{flex:1;border:0;background:none;padding:8px;border-radius:9px;cursor:pointer;font-weight:600;color:var(--muted)}.seg button.on{background:#fff;color:var(--text);box-shadow:0 1px 3px #00000014}
