:root{--color-cream:#fbf6ee;--color-linen:#f3e6d4;--color-surface:#fffcf7;--color-ink:#2a231c;--color-secondary:#5c534a;--color-muted:#6f655b;--color-primary:#b44e1c;--color-primary-bright:#d4693a;--color-primary-soft:#f8e4d6;--color-sage:#3f6b52;--color-sage-soft:#e7f1ea;--color-butter:#f0c56e;--status-fresh-bg:#dcefe3;--status-fresh-fg:#145c38;--status-soon-bg:#fce8cc;--status-soon-fg:#7a3e08;--status-today-bg:#f8ddd8;--status-today-fg:#8b1e1a;--radius-xs:8px;--radius-sm:12px;--radius-md:16px;--radius-lg:24px;--radius-xl:28px;--radius-pill:999px;--space:8px;--page-pad:20px;--font-display:"Fraunces", "Times New Roman", serif;--font-ui:"Nunito", "Helvetica Neue", sans-serif;--shadow-card:0 8px 24px #2a231c14;--shadow-fab:0 10px 28px #b44e1c59}@font-face{font-family:Fraunces;src:url(/fonts/Fraunces-variable.ttf)format("truetype");font-weight:100 900;font-style:normal;font-display:swap}@font-face{font-family:Fraunces;src:url(/fonts/Fraunces-Italic-variable.ttf)format("truetype");font-weight:100 900;font-style:italic;font-display:swap}@font-face{font-family:Nunito;src:url(/fonts/Nunito-variable.ttf)format("truetype");font-weight:200 900;font-style:normal;font-display:swap}*{box-sizing:border-box}html,body,#root{min-height:100%}html{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;background:var(--color-cream)}body{background:var(--color-cream);color:var(--color-ink);font-family:var(--font-ui);-webkit-font-smoothing:antialiased;margin:0;font-size:15px;font-weight:500;line-height:1.4}button,input,textarea{font:inherit;color:inherit}button{cursor:pointer}img{max-width:100%;display:block}:focus-visible{outline:3px solid var(--color-primary);outline-offset:2px}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:80;background:var(--color-surface);color:var(--color-ink);border-radius:var(--radius-sm);padding:8px 12px;position:absolute;top:-48px;left:12px}.skip-link:focus{top:12px}.app{background:var(--color-cream);width:min(100%,480px);min-height:100dvh;margin:0 auto;position:relative}.main{padding:0 var(--page-pad) calc(132px + env(safe-area-inset-bottom))}.header{padding:max(18px, env(safe-area-inset-top)) var(--page-pad) 12px;justify-content:space-between;align-items:flex-end;gap:12px;display:flex}.header h1,.screen-title{font-family:var(--font-display);letter-spacing:-.4px;margin:0;font-size:28px;font-weight:600;line-height:1.15}.header .sub{color:var(--color-secondary);margin-top:4px;font-size:13px;font-weight:600}.avatars{background:0 0;border:none;padding:0;display:flex}.avatars .av,.av-lg{border-radius:var(--radius-pill);color:#fff;justify-content:center;align-items:center;font-weight:800;display:flex}.avatars .av{border:2px solid var(--color-cream);width:28px;height:28px;margin-left:-8px;font-size:10px}.avatars .av:first-child{margin-left:0}.nudge{background:var(--color-primary-soft);border-radius:var(--radius-md);align-items:center;gap:12px;margin-bottom:14px;padding:12px 14px;display:flex}.nudge .dot{border-radius:var(--radius-sm);background:var(--color-surface);width:36px;height:36px;color:var(--color-primary);flex-shrink:0;justify-content:center;align-items:center;display:flex}.nudge p{margin:0;font-size:14px;font-weight:700;line-height:1.3}.nudge span{color:var(--color-secondary);margin-top:1px;font-size:12px;font-weight:600;display:block}.list{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.card{background:var(--color-surface);box-shadow:var(--shadow-card);text-align:left;border:none;border-radius:20px;align-items:center;gap:12px;width:100%;min-height:88px;padding:10px;display:flex}.card .photo,.photo-fallback{border-radius:var(--radius-md);object-fit:cover;background:var(--color-linen);flex-shrink:0;width:68px;height:68px}.card .meta{flex:1;min-width:0}.card .name,.card .when,.card .who{display:block}.card .name{letter-spacing:-.2px;white-space:nowrap;text-overflow:ellipsis;font-size:17px;font-weight:750;line-height:1.2;overflow:hidden}.card .when{color:var(--color-secondary);margin-top:3px;font-size:12.5px;font-weight:600}.card .who{color:var(--color-muted);margin-top:2px;font-size:11.5px;font-weight:600}.badge{border-radius:var(--radius-pill);white-space:nowrap;flex-shrink:0;padding:6px 10px;font-size:11.5px;font-weight:800;line-height:1}.badge.today,.badge.past{background:var(--status-today-bg);color:var(--status-today-fg)}.badge.soon{background:var(--status-soon-bg);color:var(--status-soon-fg)}.badge.fresh{background:var(--status-fresh-bg);color:var(--status-fresh-fg)}.disclaimer{text-align:center;color:var(--color-muted);margin:12px 0 0;font-size:11px;font-weight:600}.tabbar{width:min(100%,480px);height:calc(84px + env(safe-area-inset-bottom));padding:8px 16px env(safe-area-inset-bottom);background:color-mix(in srgb, var(--color-surface) 94%, transparent);z-index:20;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-top:1px solid #2a231c0f;justify-content:space-around;align-items:flex-start;display:flex;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.tab{width:72px;min-height:48px;color:var(--color-muted);background:0 0;border:none;flex-direction:column;align-items:center;gap:3px;padding-top:2px;font-size:11px;font-weight:700;display:flex}.tab[aria-current=page]{color:var(--color-primary)}.fab{left:50%;bottom:calc(92px + env(safe-area-inset-bottom));border-radius:var(--radius-pill);background:var(--color-primary);width:68px;height:68px;box-shadow:var(--shadow-fab);z-index:24;border:4px solid var(--color-cream);color:#fff9f1;justify-content:center;align-items:center;display:flex;position:fixed;transform:translate(-50%)}.fab svg{display:block}.section-label{letter-spacing:.06em;text-transform:uppercase;color:var(--color-muted);margin:18px 0 8px;font-size:12px;font-weight:800}.panel{background:var(--color-surface);box-shadow:var(--shadow-card);border-radius:20px;overflow:hidden}.member{align-items:center;gap:12px;padding:10px 14px;display:flex}.member+.member,.row+.row{border-top:1px solid #2a231c0f}.av-lg{flex-shrink:0;width:40px;height:40px;font-size:14px}.member .nm{font-size:15px;font-weight:750;line-height:1.2}.member .role{color:var(--color-secondary);margin-top:1px;font-size:12px;font-weight:600}.row{justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;display:flex}.row .lbl{font-size:15px;font-weight:700}.row .hint{color:var(--color-secondary);margin-top:1px;font-size:12px;font-weight:600}.switch{border-radius:var(--radius-pill);background:var(--color-primary);border:none;flex-shrink:0;width:48px;height:28px;padding:0;position:relative}.switch.off{background:#d9d0c6}.switch:after{content:"";border-radius:var(--radius-pill);background:#fff;width:22px;height:22px;position:absolute;top:3px;left:23px;box-shadow:0 1px 3px #2a231c33}.switch.off:after{left:3px}.invite{padding:14px 16px 16px}.invite-lead{text-align:center;font-size:14px;font-weight:700}.invite-code{font-family:var(--font-display);letter-spacing:.08em;text-align:center;padding:8px 0 2px;font-size:22px;font-weight:600}.btn{border-radius:var(--radius-md);background:var(--color-primary);color:#fff;min-height:52px;box-shadow:var(--shadow-fab);border:none;justify-content:center;align-items:center;gap:8px;width:100%;padding:0 16px;font-size:16px;font-weight:750;display:flex}.btn.ghost{background:var(--color-primary-soft);color:var(--color-primary);box-shadow:none}.btn.quiet{min-height:44px;color:var(--color-primary);box-shadow:none;background:0 0;font-size:14px}.btn:disabled{opacity:.45}.idea{background:var(--color-surface);box-shadow:var(--shadow-card);border-radius:20px;gap:12px;min-height:108px;margin-bottom:10px;padding:10px;display:flex}.idea img,.idea .photo-fallback{border-radius:var(--radius-md);object-fit:cover;flex-shrink:0;align-self:center;width:92px;height:92px}.idea h2{font-family:var(--font-ui);letter-spacing:-.2px;margin:0;font-size:16px;font-weight:750;line-height:1.25}.idea p{color:var(--color-secondary);margin:3px 0 0;font-size:12.5px;font-weight:600;line-height:1.35}.chips{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.chip{background:var(--color-linen);color:var(--color-ink);border-radius:var(--radius-pill);border:none;min-height:28px;padding:4px 8px;font-size:11px;font-weight:750}.chip.time{background:var(--color-sage-soft);color:var(--color-sage)}button.chip{cursor:pointer;min-height:36px}button.chip[aria-pressed=true]{background:var(--color-primary);color:#fff}.screen-dark{background:var(--color-ink);color:#fff9f1;flex-direction:column;width:min(100%,480px);min-height:100dvh;margin:0 auto;display:flex}.cam-top{padding:max(12px, env(safe-area-inset-top)) 16px 8px;grid-template-columns:40px 1fr 40px;align-items:center;gap:8px;display:grid}.icon-btn{border-radius:var(--radius-pill);color:#fff9f1;background:#fff9f11f;border:none;justify-content:center;align-items:center;width:40px;height:40px;display:flex}.icon-btn.light{background:var(--color-linen);color:var(--color-ink)}.cam-title{font-family:var(--font-display);text-align:center;font-size:18px;font-weight:600}.cam-sub{opacity:.75;text-align:center;margin-top:2px;font-size:12px;font-weight:600}.viewfinder{border-radius:var(--radius-xl);background:#1a1612;flex:1;min-height:240px;margin:12px 20px 0;position:relative;overflow:hidden}.viewfinder video,.viewfinder img{object-fit:cover;width:100%;height:100%}.reticle{pointer-events:none;position:absolute;inset:16px}.reticle span{border-style:solid;border-color:#fff9f1;width:28px;height:28px;position:absolute}.reticle .tl{border-width:3px 0 0 3px;border-radius:8px 0 0;top:0;left:0}.reticle .tr{border-width:3px 3px 0 0;border-radius:0 8px 0 0;top:0;right:0}.reticle .bl{border-width:0 0 3px 3px;border-radius:0 0 0 8px;bottom:0;left:0}.reticle .br{border-width:0 3px 3px 0;border-radius:0 0 8px;bottom:0;right:0}.cam-bottom{min-height:180px;padding:16px 20px calc(20px + env(safe-area-inset-bottom));flex-direction:column;align-items:center;display:flex}.hint-cam{color:#fff9f1cc;text-align:center;margin-bottom:14px;font-size:13px;font-weight:650}.shutter{border-radius:var(--radius-pill);background:0 0;border:5px solid #fff9f1;justify-content:center;align-items:center;width:80px;height:80px;display:flex;box-shadow:0 8px 24px #0000004d}.shutter i{border-radius:var(--radius-pill);background:#fff9f1;width:64px;height:64px;display:block}.link-light{color:#fff9f1d9;background:0 0;border:none;min-height:44px;margin-top:12px;font-weight:700}.confirm{background:var(--color-cream);flex-direction:column;width:min(100%,480px);min-height:100dvh;margin:0 auto;display:flex}.back-row{padding:max(12px, env(safe-area-inset-top)) 16px 10px;align-items:center;gap:10px;display:flex}.back-row h1{font-family:var(--font-display);margin:0;font-size:20px;font-weight:600}.hero{border-radius:var(--radius-lg);height:240px;box-shadow:var(--shadow-card);background:var(--color-linen);margin:0 20px;position:relative;overflow:hidden}.hero img{object-fit:cover;width:100%;height:100%}.hero .caption{font-family:var(--font-display);letter-spacing:-.2px;text-align:center;background:#fffcf7f0;padding:10px 14px;font-size:16px;font-weight:600;position:absolute;bottom:0;left:0;right:0}.edit-block{margin:16px 20px 0}.ai-label{letter-spacing:.06em;text-transform:uppercase;color:var(--color-muted);margin:0 0 8px;font-size:12px;font-weight:800}.edit-row{background:var(--color-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-card);text-align:left;border:none;justify-content:space-between;align-items:center;gap:12px;width:100%;margin-bottom:10px;padding:14px 16px;display:flex}.edit-row .k{color:var(--color-secondary);font-size:12px;font-weight:700}.edit-row .v{font-family:var(--font-display);letter-spacing:-.3px;margin-top:2px;font-size:22px;font-weight:600}.tap{color:var(--color-primary);background:var(--color-primary-soft);border-radius:var(--radius-pill);white-space:nowrap;padding:6px 10px;font-size:12px;font-weight:800}.confirm-cta{padding:16px 20px calc(20px + env(safe-area-inset-bottom));flex-direction:column;gap:8px;margin-top:auto;display:flex}.field{width:100%;font-family:var(--font-display);background:0 0;border:none;padding:0;font-size:22px;font-weight:600}.field.date{font-family:var(--font-ui);min-height:44px;font-size:16px;font-weight:700}.editor{margin:-4px 0 10px}.note{color:var(--color-muted);margin:8px 0 0;font-size:12px;font-weight:600;line-height:1.35}.alert{color:var(--status-today-fg);background:var(--status-today-bg);border-radius:var(--radius-sm);margin:0 0 10px;padding:10px 12px;font-size:13px;font-weight:700}.empty{background:var(--color-surface);box-shadow:var(--shadow-card);border-radius:20px;padding:18px 16px}.empty p{color:var(--color-secondary);margin:0;font-weight:650}.toast{left:50%;bottom:calc(108px + env(safe-area-inset-bottom));background:var(--color-ink);color:#fff9f1;border-radius:var(--radius-md);z-index:30;justify-content:space-between;align-items:center;gap:12px;width:min(100% - 32px,440px);padding:12px 14px;font-weight:700;display:flex;position:fixed;transform:translate(-50%)}.toast button{color:#fff9f1;background:0 0;border:none;min-height:44px;font-weight:800}dialog.sheet{background:0 0;border:none;width:min(100%,480px);max-width:480px;margin:auto auto 0;padding:0}dialog.sheet::backdrop{background:#2a231c66}.sheet-panel{background:var(--color-cream);padding:16px 20px calc(20px + env(safe-area-inset-bottom));border-radius:28px 28px 0 0}.sheet-panel img.photo{border-radius:var(--radius-md);object-fit:cover;width:100%;height:180px}.sheet-panel h2{font-family:var(--font-display);margin:8px 0 4px;font-size:26px;font-weight:600}.actions{flex-direction:column;gap:8px;margin-top:16px;display:flex}details.more{margin:22px 0 8px}details.more summary{letter-spacing:.06em;text-transform:uppercase;color:var(--color-muted);cursor:pointer;align-items:center;min-height:44px;font-size:12px;font-weight:800;display:flex}.stack{flex-direction:column;gap:10px;margin-top:8px;display:flex}label.choice{align-items:center;gap:10px;min-height:44px;font-weight:700;display:flex}textarea.code,input.text{background:var(--color-surface);border-radius:var(--radius-sm);width:100%;box-shadow:var(--shadow-card);border:none;padding:12px;font-size:16px}textarea.code{resize:vertical;min-height:88px}.status{color:var(--color-secondary);font-size:13px;font-weight:650}
