:root{--bg: #fbf7f2;--bg-deep: #f3ece3;--ink: #2e2721;--muted: #8a7f73;--line: rgba(46, 39, 33, .12);--card: #ffffff;--gold: #b08d4f;--rose: #c98b84;--danger: #b4544b;--display: "Cormorant Garamond", Georgia, serif;--body: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--radius: 3px}*{margin:0;padding:0;box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{font-family:var(--body);font-weight:300;background:var(--bg);color:var(--ink);min-height:100dvh;line-height:1.6;-webkit-font-smoothing:antialiased}.page{max-width:820px;margin:0 auto;padding:max(28px,env(safe-area-inset-top)) 18px calc(48px + env(safe-area-inset-bottom))}.page--center{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:14px}.head{text-align:center;margin-bottom:26px}.title{font-family:var(--display);font-weight:300;font-size:clamp(2rem,8vw,3rem);letter-spacing:.01em;line-height:1.1}.subtitle{font-family:var(--display);font-weight:400;font-size:1.35rem;margin-bottom:6px}.eyebrow{font-size:.7rem;font-weight:400;letter-spacing:.22em;text-transform:uppercase;color:var(--muted);margin-bottom:10px}.rule{display:block;width:40px;height:1px;background:var(--gold);margin:16px auto;opacity:.6}.lead{color:var(--muted);font-size:.95rem;max-width:46ch;margin:8px auto 0}.credit{margin-top:34px;text-align:center;font-size:.7rem;letter-spacing:.14em;color:var(--muted);opacity:.65}.count{color:var(--muted);font-size:.8rem;letter-spacing:.08em;text-transform:uppercase;text-align:center;margin:26px 0 12px}.notice{text-align:center;color:var(--muted);font-size:.92rem;padding:26px 0}.notice--error{color:var(--danger)}.errors{list-style:none;margin-top:12px;display:grid;gap:6px}.errors li{color:var(--danger);font-size:.85rem;text-align:center}.btn{font-family:var(--body);font-size:.9rem;font-weight:500;letter-spacing:.03em;padding:13px 26px;border:1px solid transparent;border-radius:var(--radius);cursor:pointer;transition:opacity .15s ease,background .15s ease;text-decoration:none;display:inline-block}.btn:disabled{opacity:.45;cursor:default}.btn--primary{background:var(--ink);color:var(--bg)}.btn--ghost{background:transparent;color:var(--muted);border-color:var(--line)}.btn--danger{background:var(--danger);color:#fff}.upload{display:flex;flex-direction:column;align-items:center;gap:12px}.upload-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:center}.progress{position:relative;width:min(320px,100%);height:3px;background:var(--bg-deep);border-radius:999px;overflow:visible}.progress-bar{display:block;height:100%;background:var(--gold);border-radius:999px;transition:width .2s ease}.progress-label{position:absolute;top:10px;left:0;right:0;text-align:center;font-size:.75rem;color:var(--muted)}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(108px,1fr));gap:6px}@media (min-width: 640px){.grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}}.tile{position:relative;aspect-ratio:1;padding:0;border:none;border-radius:var(--radius);overflow:hidden;background:var(--bg-deep);cursor:pointer;display:block}.tile img{width:100%;height:100%;object-fit:cover;display:block}.tile--selected{outline:3px solid var(--danger);outline-offset:-3px}.tile--selected img{opacity:.6}.tile-skeleton,.tile-placeholder{position:absolute;top:0;right:0;bottom:0;left:0}.tile-skeleton{background:linear-gradient(90deg,var(--bg-deep) 0%,#fff 50%,var(--bg-deep) 100%);background-size:200% 100%;animation:shimmer 1.4s linear infinite}.tile-placeholder{background:var(--bg-deep)}@keyframes shimmer{to{background-position:-200% 0}}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#181411f0;display:flex;align-items:center;justify-content:center;padding:env(safe-area-inset-top) 12px env(safe-area-inset-bottom)}.lightbox-img{max-width:100%;max-height:100%;object-fit:contain}.lightbox-loading{color:#fff9;font-size:.9rem}.lightbox-close,.lightbox-nav{position:absolute;background:none;border:none;color:#ffffffd9;cursor:pointer;line-height:1}.lightbox-close{top:calc(10px + env(safe-area-inset-top));right:14px;font-size:2.4rem}.lightbox-nav{top:50%;transform:translateY(-50%);font-size:3.4rem;padding:0 14px}.lightbox-nav--prev{left:0}.lightbox-nav--next{right:0}.show{position:fixed;top:0;right:0;bottom:0;left:0;background:#14110f;display:flex;align-items:center;justify-content:center;overflow:hidden}.show-img{width:100%;height:100%;object-fit:contain;animation:kenburns 18s ease-out both}@keyframes kenburns{0%{transform:scale(1)}to{transform:scale(1.07)}}@media (prefers-reduced-motion: reduce){.show-img,.tile-skeleton{animation:none}}.show-empty{color:#ffffff8c}.show-controls{position:absolute;bottom:calc(16px + env(safe-area-inset-bottom));left:0;right:0;display:flex;gap:10px;justify-content:center;opacity:.25;transition:opacity .25s ease}.show-controls:hover,.show-controls:focus-within{opacity:1}.show-controls .btn--ghost{color:#ffffffe6;border-color:#ffffff4d}.pw-form{display:flex;gap:8px;flex-wrap:wrap;justify-content:center}.input{font-family:var(--body);font-size:.95rem;padding:12px 14px;border:1px solid var(--line);border-radius:var(--radius);background:var(--card);color:var(--ink)}.admin-bar{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-bottom:18px}.download{margin-top:48px;padding-top:28px;border-top:1px solid var(--line);text-align:center}.code{display:block;margin-top:14px;padding:14px;background:var(--bg-deep);border-radius:var(--radius);font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:.8rem;overflow-x:auto;white-space:nowrap;text-align:left}.foot{margin-top:42px;text-align:center}
