*{box-sizing:border-box}
body.front{margin:0;min-height:100vh;display:flex;flex-direction:column;background:var(--fp-bg);color:var(--fp-text);font:16px/1.5 var(--fp-font-body);position:relative;overflow-x:hidden}
.front a{color:var(--fp-text);text-decoration:underline}
.front a.fp-btn{color:var(--fp-on-primary);text-decoration:none}
.front a.fp-brand{text-decoration:none}
.fp-bar{display:flex;align-items:center;gap:12px;padding:14px 20px;position:relative;z-index:2}
.fp-brand{display:flex;align-items:center;gap:10px;color:var(--fp-text);text-decoration:none;font-weight:600}
.fp-logo{height:32px;width:auto}
.fp-account{margin-left:auto;display:flex;align-items:center;gap:14px;font-size:14px;flex-wrap:wrap}
.fp-email{color:var(--fp-muted)}
.fp-inline{display:inline;margin:0}
.fp-link{background:none;border:0;padding:0;color:var(--fp-text);font:inherit;cursor:pointer;text-decoration:underline}
.fp-menu{position:relative}.fp-menu>summary{cursor:pointer;list-style:none}.fp-menu>summary::-webkit-details-marker{display:none}
.fp-menu-body{position:absolute;right:0;top:calc(100% + 6px);z-index:10;min-width:160px;display:grid;gap:10px;padding:12px 14px;background:var(--fp-surface);border:1px solid var(--fp-border);border-radius:var(--fp-radius);box-shadow:0 6px 20px rgba(0,0,0,.12)}
.front .fp-bar .fp-menu-body a,.front .fp-bar .fp-menu-body .fp-link{color:var(--fp-text)}
.fp-main{flex:1;width:100%;max-width:1040px;margin:0 auto;padding:16px;position:relative;z-index:1}
.fp-foot{display:flex;flex-wrap:wrap;gap:16px;justify-content:center;padding:16px;font-size:13px;color:var(--fp-muted);position:relative;z-index:1}
.fp-powered{opacity:.8}
.fp-title{font-family:var(--fp-font-heading);font-size:clamp(28px,5vw,44px);line-height:1.1;margin:0 0 12px}
.fp-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:0 0 12px}.fp-head .fp-title{margin:0}
.fp-welcome{color:var(--fp-muted)}
.fp-card,.fp-panel{background:var(--fp-surface);border:1px solid var(--fp-border);border-radius:var(--fp-radius);padding:20px}
.fp-panel{max-width:560px;margin:24px auto}
.fp-label{display:block;font-weight:600;margin-bottom:6px}
.fp-row{display:flex;gap:8px;flex-wrap:wrap}
.fp-row input{flex:1 1 220px;min-width:0;padding:10px 12px;font:inherit;border:1px solid var(--fp-border);border-radius:var(--fp-radius);background:#fff;color:#111}
.fp-btn{display:inline-block;padding:10px 16px;font:inherit;font-weight:600;border:0;border-radius:var(--fp-radius);background:var(--fp-primary);color:var(--fp-on-primary);text-decoration:none;cursor:pointer}
.fp-help{font-size:14px;color:var(--fp-muted);margin:8px 0 0}
.fp-notice{background:var(--fp-surface);border:1px solid var(--fp-border);border-left:4px solid var(--fp-accent);padding:10px 14px;border-radius:var(--fp-radius)}
.fp-preview-banner{position:sticky;top:0;z-index:5;background:#111;color:#fff;text-align:center;padding:6px;font:600 13px system-ui,sans-serif}
/* hero layouts */
.fp-hero{display:grid;gap:24px;padding:24px 0}
.fp-hero-img{width:100%;max-height:360px;object-fit:cover;border-radius:var(--fp-radius)}
.fp-hero-centered .fp-hero-body{display:grid;gap:20px;justify-items:center;text-align:center;max-width:640px;margin:0 auto}
.fp-hero-centered .fp-card{width:100%}
.fp-hero-left .fp-hero-body{display:grid;gap:20px;max-width:640px}
.fp-hero-banner .fp-hero-body{display:grid;gap:20px;max-width:680px}
.fp-hero-split .fp-hero-body{display:grid;gap:24px;grid-template-columns:1fr;align-items:center}
@media (min-width:760px){.fp-hero-split .fp-hero-body{grid-template-columns:1.1fr 1fr}.fp-hero-left:not(.no-image){grid-template-columns:1.2fr 1fr;align-items:center}}
/* decorations */
.fp-deco{position:absolute;pointer-events:none;z-index:0}
.fp-deco-confetti{inset:0;width:100%;height:100%}
.fp-deco-confetti .c1{fill:#d61f69}.fp-deco-confetti .c2{fill:#ffc400}.fp-deco-confetti .c3{fill:#00857c}.fp-deco-confetti .c4{fill:#7c4dff}
.fp-deco-sprig{right:-20px;top:-10px;width:200px;height:200px;opacity:.55}
.fp-deco-sprig .stem{stroke:#7a9a6b;stroke-width:2;fill:none}.fp-deco-sprig .leaf{fill:#9cb98c}.fp-deco-sprig .leaf2{fill:#b9cfa9}.fp-deco-sprig .bloom{fill:#e8b4b0}
.fp-deco-frame{inset:12px;border:1px solid var(--fp-primary);outline:1px solid var(--fp-border);outline-offset:4px}
.fp-fleuron{color:var(--fp-primary);font-size:22px}
body[data-decoration="highlight"] .fp-title{background:linear-gradient(transparent 62%,color-mix(in srgb,var(--fp-accent) 30%,transparent) 62%);display:inline}
body[data-theme="corporate"] .fp-bar{background:var(--fp-primary);color:var(--fp-on-primary)}
body[data-theme="corporate"] .fp-bar a,body[data-theme="corporate"] .fp-brand,body[data-theme="corporate"] .fp-email,body[data-theme="corporate"] .fp-link{color:var(--fp-on-primary)}
body[data-theme="classic"] .fp-bar{justify-content:center;letter-spacing:3px;text-transform:uppercase;font-size:13px;padding-top:28px}
body[data-theme="confetti"] .fp-btn,body[data-theme="confetti"] .fp-row input{border-radius:999px}
body[data-theme="minimal"] .fp-row input{border-width:0 0 1px;border-radius:0;padding-left:0}
/* signed-in lists (Task 6) */
.fp-section{margin:24px 0}
.fp-section h2{font-size:13px;text-transform:uppercase;letter-spacing:1px;color:var(--fp-muted);margin:0 0 10px}
.fp-list{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.fp-item{display:flex;align-items:center;gap:12px;background:var(--fp-surface);border:1px solid var(--fp-border);border-radius:var(--fp-radius);padding:10px 12px;flex-wrap:wrap}
.fp-date{width:48px;text-align:center;line-height:1.1;flex:none}
.fp-date b{display:block;font-size:18px}.fp-date span{font-size:11px;text-transform:uppercase;color:var(--fp-text);font-weight:700}
.fp-info{flex:1;min-width:160px}.fp-info .t{font-weight:600}.fp-info .m{color:var(--fp-muted);font-size:13px}
.fp-chip{font-size:12px;font-weight:600;padding:2px 8px;border-radius:999px;border:1px solid var(--fp-border);white-space:nowrap}
.fp-chip.attending{background:#dcfce7;color:#166534}.fp-chip.maybe{background:#fef3c7;color:#92400e}.fp-chip.invited{background:#e0e7ff;color:#3730a3}.fp-chip.not_attending,.fp-chip.withdrawn,.fp-chip.inactive{background:#f1f1f1;color:#444}
.fp-btn.secondary,.front a.fp-btn.secondary{background:transparent;color:var(--fp-text);border:1px solid var(--fp-border)}
.fp-more{font-size:14px;text-align:right;margin-top:6px}
.fp-empty{color:var(--fp-muted);border:1px dashed var(--fp-border);border-radius:var(--fp-radius);padding:16px;text-align:center}
.fp-past summary{cursor:pointer;color:var(--fp-muted);padding:6px 0}
.fp-overview{display:flex;flex-wrap:wrap;gap:18px}.fp-overview b{display:block;font-size:22px}.fp-overview .alert b{color:#b42318}.fp-overview a{color:inherit;text-decoration:none}.fp-overview a:hover b{text-decoration:underline}
