@import "https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Playfair+Display:wght@600;700&display=swap";
:root{--surface:#f7fafd;--surface-lowest:#fff;--surface-low:#f1f4f8;--surface-container:#ebeef2;--surface-high:#e5e8ec;--surface-variant:#e0e3e6;--on-surface:#181c1f;--on-surface-variant:#4f4444;--outline:#817474;--outline-variant:#d2c3c3;--primary:#705859;--on-primary:#fff;--primary-container:#f2d2d2;--secondary:#775a19;--on-secondary:#fff;--secondary-container:#fed488;--on-secondary-container:#785a1a;--tertiary-container:#ddd9d4;--shadow:0 20px 40px -12px #28171726;--soft-shadow:0 12px 28px #28171717;--radius:8px;--radius-lg:16px;--content:1140px}*{box-sizing:border-box}html{background:var(--surface);min-height:100%}body{min-height:100vh;color:var(--on-surface);background:linear-gradient(135deg, #f2d2d257, #fff0 34%), var(--surface);letter-spacing:0;margin:0;font-family:DM Sans,Arial,sans-serif}button,input,select,textarea{font:inherit}button{cursor:pointer}img{max-width:100%;display:block}.app{min-height:100vh;padding-bottom:112px}.app--camera{background:#050505;padding-bottom:0}.top-bar{z-index:50;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#f7fafdd1;border-bottom:1px solid #d2c3c394;grid-template-columns:44px 1fr auto;align-items:center;width:100%;height:64px;padding:0 16px;display:grid;position:fixed;top:0;left:0;box-shadow:0 5px 20px #2817170d}.top-bar--welcome{background:#f7fafdc7}.icon-button,.brand-button,.guest-pill,.camera-icon-button,.nav-item,.heart-button,.fab,.camera-round-button,.thumbnail-button{border:0}.icon-button{width:40px;height:40px;color:var(--primary);background:0 0;border-radius:999px;justify-content:center;align-items:center;display:inline-flex}.icon-button:hover,.brand-button:hover,.guest-pill:hover{background:#f2d2d26b}.brand-button{min-width:0;color:var(--primary);text-overflow:ellipsis;white-space:nowrap;background:0 0;border-radius:999px;justify-self:center;font-family:Playfair Display,Georgia,serif;font-size:clamp(1.35rem,4vw,2.25rem);font-weight:700;line-height:1.1;overflow:hidden}.guest-pill{min-width:0;max-width:122px;height:38px;color:var(--primary);background:#ffffff6b;border:1px solid #f2d2d2bf;border-radius:999px;align-items:center;gap:7px;padding:0 10px;font-size:.78rem;font-weight:700;display:inline-flex}.guest-pill span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.welcome-shell{min-height:100vh;padding-bottom:80px}.hero{height:min(68vh,618px);min-height:470px;position:relative;overflow:hidden}.hero__image,.viewfinder__image{object-fit:cover;width:100%;height:100%}.hero__wash{background:linear-gradient(#f7fafd0d 22%,#f7fafdf5 100%),linear-gradient(90deg,#ffffff47,#fff0);position:absolute;inset:0}.hero__copy{text-align:center;flex-direction:column;justify-content:center;align-items:center;max-width:680px;margin:0 auto;display:flex;position:absolute;inset:64px 16px 0}.eyebrow{color:var(--primary);letter-spacing:.22em;text-transform:uppercase;margin:0 0 10px;font-size:.75rem;font-weight:700}.hero h1,.page-heading h1{margin:0;font-family:Playfair Display,Georgia,serif;font-size:clamp(2.25rem,8vw,3.7rem);line-height:1.1}.hero p,.page-heading p,.section-heading p,.tonal-panel p,.empty-state p{color:var(--on-surface-variant)}.hero__copy>p:last-child{max-width:570px;margin:12px 0 0;font-size:1.08rem;line-height:1.62}.entry-grid,.page-shell{width:min(var(--content), calc(100% - 32px));margin:0 auto}.entry-grid{grid-template-columns:1fr;gap:24px;margin-top:-12px;display:grid}.entry-card,.message-form{border-radius:var(--radius-lg);box-shadow:var(--shadow);background:#ffffffdb;border:1px solid #f2d2d294;padding:24px}.section-heading h2,.tonal-panel h2,.empty-state h2{margin:0;font-family:Playfair Display,Georgia,serif;font-size:1.55rem;line-height:1.22}.section-heading p,.tonal-panel p{margin:8px 0 0;line-height:1.55}.access-form,.message-form{gap:18px;margin-top:24px;display:grid}label{gap:7px;display:grid}label span{color:var(--on-surface-variant);letter-spacing:.08em;text-transform:uppercase;font-size:.75rem;font-weight:700}input,select,textarea{width:100%;color:var(--on-surface);border:0;border-bottom:2px solid var(--primary-container);border-radius:var(--radius) var(--radius) 0 0;background:#ddd9d457;outline:0}input,select{min-height:52px;padding:0 14px}textarea{resize:vertical;padding:14px}input:focus,select:focus,textarea:focus{border-color:var(--secondary);box-shadow:0 10px 28px #775a191f}.form-error{color:#93000a;margin:0;font-size:.91rem;font-weight:700}.sync-notice,.camera-error{color:var(--on-surface-variant);border-radius:var(--radius);background:#fed48847;border:1px solid #775a1933;margin:0 0 18px;padding:12px 14px;font-size:.9rem;font-weight:700}.camera-error{color:#93000a;background:#ffdad69e;border-color:#ba1a1a38;grid-column:1/-1;margin:0}.primary-button,.secondary-button{border-radius:var(--radius);letter-spacing:.05em;text-transform:uppercase;justify-content:center;align-items:center;gap:9px;min-height:52px;font-size:.87rem;font-weight:800;transition:transform .18s,filter .18s,background-color .18s;display:inline-flex}.primary-button{color:var(--on-secondary);background:var(--secondary);border:0;position:relative;box-shadow:inset -2px -2px #0000001c}.primary-button:disabled{cursor:progress;opacity:.76}.primary-button:hover{filter:saturate(1.1)}.primary-button:active,.secondary-button:active,.chip:active,.fab:active,.nav-item:active,.shutter:active{transform:scale(.96)}.entry-actions{border-top:1px solid var(--outline-variant);grid-template-columns:1fr 1fr;gap:12px;margin-top:22px;padding-top:22px;display:grid}.secondary-button{color:var(--on-surface);border:1px solid var(--outline);background:0 0}.secondary-button:hover{background:#e0e3e67a}.preview-stack{gap:24px;display:grid}.tonal-panel{min-height:220px;color:var(--primary);border-radius:var(--radius-lg);background:#ddd9d48c;padding:24px;position:relative;overflow:hidden}.tonal-panel:after{content:"";filter:blur(26px);background:#f2d2d29e;border-radius:999px;width:190px;height:190px;position:absolute;bottom:-74px;right:-64px}.preview-grid{grid-template-columns:1fr 1fr;gap:12px;min-height:192px;display:grid}.preview-tile,.photo-card,.gallery-tile{background:var(--surface-container);border-radius:var(--radius-lg);box-shadow:var(--soft-shadow);margin:0;position:relative;overflow:hidden}.preview-tile img{object-fit:cover;width:100%;height:100%;min-height:192px}.preview-tile figcaption{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#ffffffa8;border-radius:999px;padding:5px 10px;font-size:.74rem;font-weight:700;position:absolute;bottom:10px;left:10px}.page-shell{padding-top:104px}.page-shell--feed{padding-bottom:12px}.page-heading{max-width:620px;margin-bottom:34px}.page-heading p:last-child{margin:10px 0 0;font-size:1rem;line-height:1.55}.chip-row{scrollbar-width:none;gap:12px;margin-bottom:18px;padding-bottom:12px;display:flex;overflow-x:auto}.chip-row::-webkit-scrollbar{display:none}.chip{min-width:max-content;min-height:38px;color:var(--primary);background:var(--tertiary-container);border:0;border-radius:999px;padding:0 20px;font-size:.86rem;font-weight:800}.chip--active{color:var(--on-secondary-container);background:var(--secondary-container)}.masonry{column-count:1;column-gap:24px}.photo-card{break-inside:avoid;width:100%;margin:0 0 24px;transition:transform .24s,box-shadow .24s;display:inline-block}.photo-card:hover{transform:translateY(-3px);box-shadow:0 22px 44px #28171729}.photo-card__image{object-fit:cover;width:100%;height:310px}.photo-card__image--tall{height:420px}.photo-card__overlay,.gallery-tile div{color:#fff;background:linear-gradient(#0000,#0000009e);justify-content:space-between;align-items:flex-end;padding:18px;display:flex;position:absolute;bottom:0;left:0;right:0}.photo-card__overlay p,.gallery-tile p,.message-card p{margin:0}.photo-card__overlay p{font-weight:800}.photo-card__overlay span{opacity:.86;margin-top:3px;font-size:.74rem;display:inline-block}.heart-button{color:#fff;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#ffffff29;border-radius:999px;align-items:center;gap:5px;min-height:38px;padding:0 9px;display:inline-flex}.heart-button--liked{color:var(--primary-container)}.fab{z-index:40;width:58px;height:58px;color:var(--on-secondary);background:var(--secondary);border-radius:999px;justify-content:center;align-items:center;display:inline-flex;position:fixed;bottom:96px;right:18px;box-shadow:0 16px 32px #775a1942}.bottom-nav{z-index:50;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#f7fafddb;border-top:1px solid #d2c3c3a6;border-radius:16px 16px 0 0;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;min-height:76px;padding:10px 8px 13px;display:grid;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -9px 28px #28171714}.nav-item{min-width:0;min-height:54px;color:var(--on-surface-variant);background:0 0;border-radius:999px;flex-direction:column;justify-content:center;align-items:center;gap:3px;font-size:.72rem;font-weight:800;display:inline-flex}.nav-item span{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.nav-item--active{color:var(--on-secondary-container);background:var(--secondary-container)}.camera-shell{color:#fff;background:#000;grid-template-rows:1fr auto;min-height:100dvh;display:grid}.viewfinder{background:#111;min-height:0;position:relative;overflow:hidden}.viewfinder__image--flipped{transform:scaleX(-1)}.viewfinder__mask{pointer-events:none;background:linear-gradient(#0000007a,#0000 24% 72%,#00000094),#0000000f;position:absolute;inset:0}.camera-flash{opacity:0;pointer-events:none;background:#fff;transition:opacity 80ms;position:absolute;inset:0}.camera-flash--active{opacity:.9}.camera-header{z-index:2;justify-content:space-between;align-items:center;padding:28px 22px;display:flex;position:absolute;top:0;left:0;right:0}.camera-icon-button,.camera-round-button,.thumbnail-button{color:#fff;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#0000003d;border-radius:999px;justify-content:center;align-items:center;display:inline-flex}.camera-icon-button{width:42px;height:42px}.camera-icon-button--active{color:var(--secondary-container);background:#775a196b}.camera-brand{justify-items:center;display:grid}.camera-brand span{font-family:Playfair Display,Georgia,serif;font-size:clamp(1.7rem,7vw,2.5rem);font-weight:700}.camera-brand small{color:#ffffffb8;letter-spacing:.18em;text-transform:uppercase;margin-top:3px;font-size:.73rem;font-weight:800}.reticle{opacity:.6;pointer-events:none;place-items:center;display:grid;position:absolute;inset:0}.reticle span{width:92px;height:92px;box-shadow:inset 14px 14px 0 -12px var(--secondary-container), inset -14px 14px 0 -12px var(--secondary-container), inset 14px -14px 0 -12px var(--secondary-container), inset -14px -14px 0 -12px var(--secondary-container);border:1px solid #ffffff9e;border-radius:12px}.camera-controls{background:#000;grid-template-columns:60px 1fr 60px;align-items:center;gap:24px;padding:22px 24px 24px;display:grid}.thumbnail-button,.camera-round-button{width:58px;height:58px}.thumbnail-button{border:1px solid #ffffff38;border-radius:12px;overflow:hidden}.thumbnail-button img{object-fit:cover;width:100%;height:100%}.shutter{border:4px solid var(--secondary-container);background:0 0;border-radius:999px;justify-self:center;width:82px;height:82px;padding:6px}.shutter span{border-radius:inherit;background:#fff;width:100%;height:100%;display:block}.upload-sheet{color:var(--on-surface);border-radius:var(--radius-lg);background:#f7fafdeb;grid-column:1/-1;grid-template-columns:1fr;gap:14px;padding:18px;display:grid}.stats-grid{grid-template-columns:1fr 1fr;gap:18px;margin-bottom:48px;display:grid}.stat-card{min-height:166px;color:var(--primary);text-align:center;border-radius:var(--radius-lg);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#ffffffb8;border:1px solid #ffffffb8;justify-items:center;padding:22px;display:grid}.stat-card strong{color:var(--on-surface);font-family:Playfair Display,Georgia,serif;font-size:2.35rem;line-height:1.05}.stat-card span{color:var(--on-surface-variant);letter-spacing:.11em;text-transform:uppercase;font-size:.72rem;font-weight:800}.empty-state{max-width:520px;color:var(--primary);text-align:center;border-radius:var(--radius-lg);background:#ddd9d46b;justify-items:center;margin:0 auto;padding:42px 24px;display:grid}.empty-state p{max-width:360px;margin:10px 0 0}.gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.gallery-tile{min-height:214px}.gallery-tile--feature{grid-column:1/-1;min-height:360px}.gallery-tile img{width:100%;height:100%;min-height:inherit;object-fit:cover}.gallery-tile div{display:block}.gallery-tile span{opacity:.82;font-size:.78rem}.message-form{max-width:680px;margin-bottom:28px}.message-list{gap:16px;max-width:780px;display:grid}.message-card{border-radius:var(--radius-lg);box-shadow:var(--soft-shadow);background:#ffffffc7;border:1px solid #f2d2d27a;padding:22px}.message-card p{color:var(--on-surface);font-family:Playfair Display,Georgia,serif;font-size:1.35rem;line-height:1.35}.message-card footer{color:var(--on-surface-variant);justify-content:space-between;align-items:center;gap:12px;margin-top:16px;font-size:.82rem;display:flex}@media (min-width:720px){.top-bar{padding:0 32px}.entry-grid{grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);align-items:stretch;margin-top:-36px}.entry-card{padding:42px}.masonry{column-count:2}.upload-sheet{grid-template-columns:1fr 190px auto;align-items:end}.gallery-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}.gallery-tile--feature{grid-area:span 2/span 2;min-height:460px}}@media (min-width:1024px){.masonry{column-count:3}.bottom-nav{border:1px solid #d2c3c394;border-bottom:0;width:min(720px,100% - 32px);left:50%;right:50%;transform:translate(-50%)}.fab{right:max(24px, calc((100vw - var(--content)) / 2))}}@media (max-width:430px){.brand-button{font-size:1.35rem}.hero{min-height:500px}.entry-grid,.page-shell{width:min(100% - 32px, var(--content))}.entry-actions{grid-template-columns:1fr}.camera-controls{grid-template-columns:54px 1fr 54px;gap:14px;padding-left:16px;padding-right:16px}.camera-brand span{font-size:1.55rem}.nav-item{font-size:.68rem}}
