:root{--bg: #f4f5ef;--bg-deep: #e7ebdf;--border: rgba(122, 142, 115, .18);--sage: #8ea287;--sage-deep: #5f7458;--sage-mist: rgba(221, 229, 216, .78);--text-strong: #243126;--text-soft: #5f6b61;--panel-shadow: 0 24px 60px rgba(88, 104, 81, .12), 0 8px 24px rgba(88, 104, 81, .08);--display-font: "Iowan Old Style", "Palatino Linotype", "Book Antiqua", Georgia, serif;--body-font: "Avenir Next", "Segoe UI", sans-serif;font-family:var(--body-font);line-height:1.5;font-weight:400;color:var(--text-soft);background:radial-gradient(circle at top left,rgba(255,255,255,.88),transparent 34%),radial-gradient(circle at top right,rgba(223,231,218,.72),transparent 28%),linear-gradient(180deg,var(--bg),var(--bg-deep));font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-width:320px;min-height:100vh}body:before,body:after{content:"";position:fixed;inset:auto;width:320px;height:320px;border-radius:50%;pointer-events:none;filter:blur(24px);opacity:.55}body:before{left:-120px;top:-80px;background:#e0e7dceb}body:after{right:-90px;bottom:-100px;background:#cdd8c7d9}button,input{font:inherit}img{max-width:100%}#root{min-height:100vh}.page-shell{width:min(1120px,calc(100% - 32px));margin:0 auto;padding:56px 0 80px}.hero-card,.upload-card{position:relative;overflow:hidden;border:1px solid var(--border);background:linear-gradient(180deg,#ffffffeb,#f8f9f4f5);box-shadow:var(--panel-shadow);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.hero-card{display:block;padding:40px;border-radius:36px}.hero-card:before,.upload-card:before{content:"";position:absolute;inset:auto auto 0 0;width:220px;height:220px;background:radial-gradient(circle,rgba(153,170,146,.18),transparent 72%);pointer-events:none}.hero-card:after,.upload-card:after{content:"";position:absolute;inset:-40px -40px auto auto;width:180px;height:180px;border-radius:50%;background:radial-gradient(circle,rgba(223,229,219,.6),transparent 68%);pointer-events:none}.hero-copy,.upload-card>*{position:relative;z-index:1}.eyebrow{margin:0 0 12px;font-size:.82rem;letter-spacing:.24em;text-transform:uppercase;color:var(--sage-deep)}.hero-copy h1,.upload-card h2,.promise-card h2{margin:0;font-family:var(--display-font);color:var(--text-strong);line-height:.96}.hero-copy h1{max-width:11ch;font-size:clamp(3rem,7vw,5.6rem)}.intro{max-width:32rem;margin-top:18px;font-size:1.08rem;color:var(--text-soft)}.hero-details{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:28px}.hero-details article,.selection-pill,.gallery-photo{border:1px solid var(--border);background:#ffffffad}.hero-details article{padding:16px 18px;border-radius:20px;text-align:center}.hero-details strong{font-size:1rem;font-weight:600;color:var(--text-strong)}.upload-card{margin-top:24px;padding:34px;border-radius:32px}.upload-header{display:flex;align-items:end;justify-content:space-between;gap:20px}.upload-header h2{font-size:clamp(2.2rem,5vw,3.3rem)}.selection-pill{display:grid;gap:2px;min-width:130px;padding:16px 18px;border-radius:20px;text-align:center}.selection-pill strong{font-family:var(--display-font);font-size:2rem;line-height:1;color:var(--text-strong)}.selection-pill span{font-size:.92rem;color:var(--text-soft)}.banner{margin-top:20px;padding:14px 16px;border-radius:18px;border:1px solid transparent;font-size:.97rem}.banner-warning{border-color:#a47c363d;background:#faf3dff2;color:#7b5820}.banner-error{border-color:#a8585842;background:#fff0f0f5;color:#8c4646}.banner-info{border-color:#6f8f6e33;background:#edf5ecf5;color:#486148}.upload-form{margin-top:24px}.dropzone:focus-within{outline:none;border-color:var(--sage);box-shadow:0 0 0 4px #8fa4882e}.dropzone{display:grid;justify-items:center;gap:8px;margin-top:18px;padding:28px 18px;border:1.5px dashed rgba(133,154,126,.5);border-radius:28px;background:linear-gradient(180deg,#ffffffb3,#f3f6efe6),var(--sage-mist);text-align:center;color:var(--text-soft);cursor:pointer;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease}.dropzone:hover{transform:translateY(-2px);border-color:var(--sage);box-shadow:0 14px 26px #7084681f}.dropzone input{position:absolute;inline-size:1px;block-size:1px;overflow:hidden;opacity:0;pointer-events:none}.dropzone strong{font-size:1.1rem;color:var(--text-strong)}.dropzone-icon{display:grid;place-items:center;width:56px;height:56px;border-radius:50%;background:#fffffff2;font-family:var(--display-font);font-size:2rem;color:var(--sage-deep);box-shadow:0 8px 18px #6979621f}.selection-meta{display:flex;justify-content:space-between;gap:16px;margin-top:16px;color:var(--text-soft);font-size:.95rem}.photo-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:18px 0 0;padding:0;list-style:none}.photo-card{overflow:hidden;border:1px solid var(--border);border-radius:24px;background:#ffffffd1}.photo-card img{display:block;width:100%;aspect-ratio:1 / 1;object-fit:cover}.photo-caption{display:flex;align-items:start;justify-content:space-between;gap:12px;padding:14px}.photo-caption strong,.photo-caption span{display:block}.photo-caption strong{max-width:20ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-strong);font-size:.98rem}.photo-caption span{margin-top:4px;font-size:.86rem;color:var(--text-soft)}.remove-button{padding:10px 14px;border:none;border-radius:999px;background:#e8eee5f2;color:var(--sage-deep);font:inherit;cursor:pointer;transition:transform .18s ease,background .18s ease}.remove-button:hover{transform:translateY(-1px);background:#d8e2d4}.submit-button{width:100%;margin-top:20px;padding:18px 24px;border:none;border-radius:999px;background:linear-gradient(135deg,#859b7d,#6d8166);color:#fff;font:inherit;font-weight:600;cursor:pointer;box-shadow:0 18px 30px #5a6c5433;transition:transform .18s ease,box-shadow .18s ease,opacity .18s ease}.ghost-button{margin-top:18px;padding:14px 22px;border:1px solid var(--border);border-radius:999px;background:#ffffffdb;color:var(--sage-deep);font:inherit;font-weight:600;cursor:pointer}.submit-button:hover{transform:translateY(-2px);box-shadow:0 22px 36px #5a6c543d}.ghost-button:hover{transform:translateY(-1px)}.submit-button:disabled,.ghost-button:disabled,.remove-button:disabled,.dropzone input:disabled{opacity:.72;cursor:not-allowed}.thank-you-state{min-height:280px;display:grid;align-content:center;justify-items:center;gap:12px;padding:36px 12px;text-align:center}.thank-you-state h2{max-width:12ch;font-size:clamp(2.9rem,6vw,4.9rem)}.thank-you-copy,.gallery-empty{max-width:34rem;color:var(--text-soft)}.thank-you-copy{margin-top:18px;font-size:1.08rem}.gallery-card{position:relative;overflow:hidden;margin-top:24px;padding:34px;border:1px solid var(--border);border-radius:32px;background:linear-gradient(180deg,#ffffffeb,#f8f9f4f5);box-shadow:var(--panel-shadow)}.gallery-header{display:flex;align-items:end;justify-content:space-between;gap:20px}.gallery-header h2{margin:0;font-family:var(--display-font);font-size:clamp(2.2rem,5vw,3.3rem);line-height:.96;color:var(--text-strong)}.gallery-empty{margin:24px 0 0}.gallery-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:24px 0 0;padding:0;list-style:none}.gallery-photo{overflow:hidden;border-radius:26px;background:#fffffff5;box-shadow:0 18px 32px #60705a1f}.gallery-photo img{display:block;width:100%;aspect-ratio:1 / 1;object-fit:cover;background:linear-gradient(180deg,#e8eee4e6,#f5f7f2f2);opacity:0;transform:scale(1.015);transition:opacity .22s ease,transform .32s ease}.gallery-photo img.is-loaded{opacity:1;transform:scale(1)}@media (max-width: 900px){.page-shell{width:min(100% - 24px,1120px);padding:28px 0 44px}.hero-card{padding:28px 22px;border-radius:28px}.hero-copy h1{max-width:12ch}.hero-details{grid-template-columns:1fr}.upload-card{padding:24px 18px;border-radius:26px}.upload-header,.gallery-header,.selection-meta,.photo-caption{flex-direction:column;align-items:stretch}.gallery-card{padding:22px 14px 18px;border-radius:26px}.photo-grid{grid-template-columns:1fr}.gallery-grid{grid-template-columns:1fr;gap:12px}.gallery-photo{border-radius:22px}.gallery-photo img{aspect-ratio:4 / 5}.thank-you-state{min-height:220px;padding:20px 6px}.thank-you-copy{font-size:1rem}}
