*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #0b0b0c;--surface: #141416;--surface-2: #1b1b1f;--text: #f4f4f5;--text-dim: #8a8a92;--text-mute: #5f5f66;--border: rgba(255, 255, 255, .09);--border-strong: rgba(255, 255, 255, .16);--accent: #e3142a;--accent-press: #b50f21;--warn: #ffb35b;--danger: #ff5b5b;--radius: 3px;--radius-lg: 6px;--maxw: 480px}body{font-family:Helvetica Neue,-apple-system,BlinkMacSystemFont,Segoe UI,Hiragino Kaku Gothic ProN,Noto Sans JP,sans-serif;background:var(--bg);color:var(--text);min-height:100dvh;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;letter-spacing:0}#root{min-height:100dvh}.page{max-width:var(--maxw);margin:0 auto;padding:0 20px 40px;min-height:100dvh}.appTabs{position:sticky;top:0;z-index:10;display:grid;grid-template-columns:1fr 1fr;margin:0 -20px 18px;background:#0b0b0ceb;border-bottom:1px solid var(--border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.appTabs a{display:block;padding:14px 8px;text-align:center;text-decoration:none;color:var(--text-dim);font-size:13px;font-weight:700}.appTabs a.active{color:#fff;border-bottom:2px solid var(--accent)}.eyebrow{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.26em;text-transform:uppercase;color:var(--accent)}.loadingPage{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100dvh;gap:16px;color:var(--text-dim)}.loadingPage span{font-size:13px;letter-spacing:.08em}.spinner{width:36px;height:36px;border:2px solid var(--border-strong);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.errorPage{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100dvh;gap:14px;padding:24px;text-align:center}.errorPage h2{font-size:17px;font-weight:700}.errorPage p{color:var(--text-dim);font-size:13px;line-height:1.6}.brandHero{padding:30px 0 16px}.brandLogo{display:block;width:100%;max-width:360px;margin:0 auto;border-radius:var(--radius)}.dishHero{position:relative;margin:0 0 32px;border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.dishHero img{display:block;width:100%;height:220px;object-fit:cover;filter:saturate(1.05) contrast(1.02)}.dishHero:after{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,#0b0b0c00 38%,#0b0b0cbd)}.dishCopy{position:absolute;left:18px;right:18px;bottom:16px;z-index:2}.dishCatch{margin-top:8px;color:#fff;font-size:22px;font-weight:800;line-height:1.25;letter-spacing:0;text-shadow:0 2px 18px rgba(0,0,0,.55)}.introBlock{padding-bottom:26px;margin-bottom:22px}.introTitle{font-size:30px;line-height:1.18;font-weight:800;letter-spacing:0;margin:14px 0 10px}.introLead{color:var(--text-dim);font-size:14px;line-height:1.6}.priceRow{display:flex;align-items:baseline;gap:8px;margin-top:22px}.priceAmount{font-size:40px;font-weight:800;letter-spacing:0;line-height:1}.priceUnit{font-size:12px;color:var(--text-dim);letter-spacing:.14em;text-transform:uppercase}.toppingSection{margin-bottom:34px}.sectionHead{margin-bottom:16px}.sectionTitle{font-size:18px;font-weight:700;margin-top:8px}.carousel{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;padding-bottom:6px;scrollbar-width:none}.carousel::-webkit-scrollbar{display:none}.carouselItem{flex:0 0 auto;width:150px;scroll-snap-align:start}.carouselThumb{width:150px;height:150px;border:1px solid var(--border);border-radius:var(--radius);background:repeating-linear-gradient(45deg,#ffffff05 0 10px,#ffffff0b 10px 20px),var(--surface)}.carouselCaption{display:block;margin-top:10px;font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--text-mute)}.featureBlock{margin-bottom:30px}.featureList{list-style:none}.featureList li{display:flex;align-items:baseline;gap:16px;padding:16px 0;border-top:1px solid var(--border)}.featureList li:last-child{border-bottom:1px solid var(--border)}.featureIndex{min-width:22px;font-size:12px;font-weight:700;letter-spacing:.1em;color:var(--accent)}.featureText{font-size:14px;line-height:1.5}.ctaDock{display:flex;flex-direction:column;gap:10px}.ctaNote{text-align:center;font-size:12px;color:var(--text-mute);margin-top:2px}button{font:inherit;cursor:pointer;border:none}.btnPrimary,.btnSecondary,.btnDanger,.btnGhost{width:100%;padding:16px 20px;font-size:15px;font-weight:700;letter-spacing:.04em;border-radius:var(--radius);transition:background .15s,border-color .15s,color .15s,opacity .15s}.btnPrimary{background:var(--accent);color:#fff}.btnPrimary:active{background:var(--accent-press)}.btnSecondary{background:var(--surface-2);color:var(--text);border:1px solid var(--border-strong)}.btnSecondary:active{background:var(--surface)}.btnGhost{background:transparent;color:var(--text-dim);border:1px solid var(--border)}.btnGhost:active{background:var(--surface)}.btnGhost.danger{color:var(--danger);border-color:#ff5b5b52}.btnDanger{background:transparent;color:var(--danger);border:1px solid var(--danger)}.btnDanger:active{background:#ff5b5b14}button:disabled{opacity:.4;cursor:not-allowed}.btnGroup{display:flex;flex-direction:column;gap:10px;margin-top:8px}.memberTopbar{display:flex;align-items:center;justify-content:space-between;padding:22px 0 20px}.memberLogo{height:34px;width:auto;border-radius:2px}.memberCard{position:relative;margin-bottom:18px;padding:22px 20px 20px;border:1px solid var(--border);border-radius:var(--radius-lg);background:radial-gradient(130% 120% at 100% 0%,#e3142a33,#e3142a00 52%),var(--surface)}.memberName{font-size:22px;font-weight:800;letter-spacing:0;margin-top:10px}.memberCardFooter{display:flex;gap:28px;margin-top:26px;padding-top:16px;border-top:1px solid var(--border)}.metaLabel{display:block;font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--text-mute)}.metaValue{display:block;margin-top:5px;font-size:14px;font-weight:600}.badge{display:inline-block;padding:5px 12px;border-radius:2px;font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;border:1px solid var(--border-strong);color:var(--text-dim)}.badge.active{color:#fff;background:var(--accent);border-color:var(--accent)}.badge.past_due{color:var(--warn);border-color:#ffb35b6b}.badge.canceled{color:var(--text-mute)}.statusLine{position:relative;margin-bottom:16px;padding:14px 16px;font-size:13px;font-weight:600;letter-spacing:.02em;border:1px solid var(--border);border-radius:var(--radius)}.statusLine:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;border-radius:var(--radius) 0 0 var(--radius)}.statusLine.ok{color:#fff}.statusLine.ok:before{background:var(--accent)}.statusLine.used{color:var(--text-dim)}.statusLine.used:before{background:var(--text-mute)}.statusLine.ng{color:var(--warn)}.statusLine.ng:before{background:var(--warn)}.qrPanel{display:flex;flex-direction:column;align-items:center;gap:14px;margin-bottom:18px;padding:22px 20px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg)}.qrPanel .eyebrow{align-self:flex-start}.qrFrame{padding:14px;background:#fff;border-radius:var(--radius)}.qrFrame svg{display:block}.qrHint{font-size:12px;line-height:1.5;color:var(--text-dim);text-align:center}.centerPanel{text-align:center;padding:40px 4px 32px}.centerPanel h2{font-size:20px;font-weight:800;margin:14px 0 12px}.centerPanel p{color:var(--text-dim);font-size:14px;line-height:1.7}.notice{margin-bottom:14px;padding:12px 14px;font-size:13px;line-height:1.55;color:var(--text-dim);background:var(--surface-2);border:1px solid var(--border);border-left:3px solid var(--text-mute);border-radius:var(--radius)}.notice.danger{color:var(--danger);border-left-color:var(--danger)}.rankRow{display:flex;align-items:center;gap:10px;margin-top:14px;color:var(--text-dim);font-size:12px;font-weight:700}.rankBadge{display:inline-block;padding:5px 10px;border-radius:2px;color:#fff;font-size:11px}.rankBadge.rank-bronze{background:#9b6a3a}.rankBadge.rank-silver{background:#71717a}.rankBadge.rank-gold{background:#b78218}.rankBadge.rank-platinum{background:#137da8}.memberCard.rank-bronze{border-color:#9b6a3a85}.memberCard.rank-silver{border-color:#9ca3af94}.memberCard.rank-gold{border-color:#c99a2ead}.memberCard.rank-platinum{border-color:#78d4ffb8}.infoGrid{display:grid;grid-template-columns:1fr;gap:8px;margin-bottom:18px}.infoGrid div{display:flex;justify-content:space-between;gap:14px;align-items:center;padding:12px 0;border-bottom:1px solid var(--border)}.infoGrid span{color:var(--text-mute);font-size:11px;font-weight:700;letter-spacing:.08em}.infoGrid strong{color:var(--text);font-size:12px;text-align:right;line-height:1.4}.boardHeader{padding:8px 0 22px}.boardHeader h1{margin-top:10px;font-size:24px;font-weight:800}.postEditor{display:flex;flex-direction:column;gap:10px;margin-bottom:18px;padding:14px;border:1px solid var(--border);background:var(--surface)}.postEditor input,.postEditor textarea{width:100%;border:1px solid var(--border-strong);background:#0f0f11;color:var(--text);padding:12px;border-radius:var(--radius);font:inherit}.postEditor textarea{min-height:110px;resize:vertical}.postList{display:flex;flex-direction:column;gap:12px}.postCard{padding:16px;border:1px solid var(--border);background:var(--surface);border-radius:var(--radius)}.postCard.pinned{border-left:3px solid var(--accent)}.postCard time{display:block;color:var(--text-mute);font-size:11px;margin-bottom:8px}.postCard h2{font-size:16px;margin-bottom:8px}.postCard p{color:var(--text-dim);font-size:13px;line-height:1.65;white-space:pre-wrap}.emptyBoard{color:var(--text-dim);font-size:13px;text-align:center;padding:28px 0}
