@import "https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,400;0,9..144,600;1,9..144,500&family=Inter:wght@400;500;600&family=JetBrains+Mono:wght@400;500&display=swap";.upload-panel{background:var(--board);border:1px solid #ffffff14;border-radius:16px;max-width:900px;margin:0 auto 3rem;padding:1.75rem clamp(1.25rem,4vw,2rem)}.upload-panel__login{flex-direction:column;gap:.75rem;max-width:320px;margin:0 auto;display:flex}.upload-panel__forms{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1.5rem;display:grid}.upload-panel__form{background:#ffffff08;border:1px solid #ffffff0f;border-radius:12px;flex-direction:column;gap:.75rem;padding:1.25rem;display:flex}.upload-panel__form h4{color:var(--paper);margin:0 0 .25rem;font-family:Fraunces,serif;font-style:italic;font-weight:500}.upload-panel__form label{color:var(--muted);flex-direction:column;gap:.35rem;font-size:.82rem;display:flex}.upload-panel input{background:var(--ink);color:var(--paper);border:1px solid #ffffff26;border-radius:8px;padding:.55rem .7rem;font-family:inherit;font-size:.92rem}.upload-panel input::placeholder{color:#f7f3ea59}.upload-panel button[type=submit],.upload-panel__login button{appearance:none;background:var(--amber);color:var(--ink);cursor:pointer;border:none;border-radius:999px;margin-top:.25rem;padding:.6rem 1.1rem;font-weight:600}.upload-panel button:disabled{opacity:.6;cursor:not-allowed}.upload-panel__status{color:var(--muted);margin:0;font-size:.82rem}.upload-panel__hint{color:var(--muted);opacity:.75;margin:0;font-size:.72rem}.upload-panel__status--error{color:#e07a5f}.upload-panel__signed-in{text-align:center;color:var(--muted);margin:0 0 1.25rem;font-size:.85rem}.upload-panel__signout{appearance:none;color:var(--amber);cursor:pointer;background:0 0;border:none;padding:0;font-size:.85rem;text-decoration:underline}.confirm-backdrop{z-index:200;background:#0a0908bf;justify-content:center;align-items:center;padding:1.5rem;display:flex;position:fixed;inset:0}.confirm-box{text-align:center;background:#25231f;border:1px solid #ffffff1a;border-radius:14px;width:100%;max-width:320px;padding:1.5rem;box-shadow:0 20px 50px #00000080}.confirm-message{color:#f7f3ea;margin:0 0 1.25rem;font-family:Inter,system-ui,sans-serif;font-size:.95rem;line-height:1.4}.confirm-actions{justify-content:center;gap:.75rem;display:flex}.confirm-cancel,.confirm-delete{appearance:none;cursor:pointer;border:none;border-radius:999px;padding:.55rem 1.25rem;font-family:inherit;font-size:.85rem;font-weight:600}.confirm-cancel{color:#f7f3ea;background:#ffffff14;border:1px solid #ffffff26}.confirm-cancel:hover{background:#ffffff24}.confirm-delete{color:#fff;background:#e0574a}.confirm-delete:hover{background:#c73f33}.announce{--ink:#1b1a17;--board:#25231f;--paper:#f7f3ea;--amber:#e8a33d;--muted:#b8b2a4;background:var(--board);max-width:900px;color:var(--paper);border:1px solid #ffffff14;border-radius:16px;margin:0 auto 2.5rem;padding:1.5rem clamp(1.25rem,4vw,2rem);font-family:Inter,system-ui,sans-serif}.announce__header{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem;display:flex}.announce__title{margin:0;font-family:Fraunces,serif;font-size:1.4rem;font-style:italic;font-weight:500}.announce__toggle{appearance:none;background:var(--amber);color:var(--ink);cursor:pointer;border:none;border-radius:999px;padding:.5rem 1.1rem;font-family:JetBrains Mono,monospace;font-size:.8rem;font-weight:600}.announce__toggle:hover{opacity:.9}.announce__panel{background:#ffffff08;border:1px solid #ffffff0f;border-radius:12px;margin-bottom:1.25rem;padding:1.25rem}.announce__login{flex-direction:column;gap:.7rem;max-width:300px;margin:0 auto;display:flex}.announce__login input,.announce__post-form textarea{background:var(--ink);color:var(--paper);border:1px solid #ffffff26;border-radius:8px;padding:.55rem .7rem;font-family:inherit;font-size:.92rem}.announce__post-form textarea{resize:vertical;min-height:70px}.announce__login input::placeholder,.announce__post-form textarea::placeholder{color:#f7f3ea59}.announce__login button,.announce__post-form button{appearance:none;background:var(--amber);color:var(--ink);cursor:pointer;border:none;border-radius:999px;align-self:flex-start;padding:.6rem 1.1rem;font-weight:600}.announce__login button:disabled,.announce__post-form button:disabled{opacity:.6;cursor:not-allowed}.announce__post-form{flex-direction:column;gap:.75rem;display:flex}.announce__post-form label{color:var(--muted);flex-direction:column;gap:.35rem;font-size:.82rem;display:flex}.announce__post-form input[type=text],.announce__post-form input:not([type=file]){background:var(--ink);color:var(--paper);border:1px solid #ffffff26;border-radius:8px;padding:.55rem .7rem;font-family:inherit;font-size:.92rem}.announce__item-header{justify-content:space-between;align-items:baseline;gap:.75rem;margin-bottom:.4rem;display:flex}.announce__item-title{color:var(--paper);margin:0;font-family:Fraunces,serif;font-size:1.05rem;font-weight:600}.announce__image{border-radius:8px;max-width:100%;margin-bottom:.6rem;display:block}.announce__signed-in{text-align:center;color:var(--muted);margin:0 0 1rem;font-size:.85rem}.announce__signout{appearance:none;color:var(--amber);cursor:pointer;background:0 0;border:none;padding:0;font-size:.85rem;text-decoration:underline}.announce__status{color:var(--muted);margin:.5rem 0 0;font-size:.82rem}.announce__status--error{color:#e07a5f}.announce__empty{color:var(--muted);text-align:center;margin:1rem 0;font-family:JetBrains Mono,monospace;font-size:.9rem}.announce__list{flex-direction:column;gap:.9rem;margin:0;padding:0;list-style:none;display:flex}.announce__item{border-left:3px solid var(--amber);background:#ffffff08;border-radius:0 8px 8px 0;padding:.6rem .9rem}.announce__text{white-space:pre-wrap;margin:0 0 .4rem;line-height:1.5}.announce__meta{color:var(--muted);justify-content:space-between;align-items:center;gap:1rem;font-family:JetBrains Mono,monospace;font-size:.72rem;display:flex}.announce__delete{appearance:none;color:#e07a5f;cursor:pointer;background:0 0;border:none;flex-shrink:0;align-items:center;gap:.3rem;padding:0;font-family:inherit;font-size:.72rem;display:inline-flex}.announce__delete:hover{color:#ff8a72}:root{--ink:#1b1a17;--board:#25231f;--paper:#f7f3ea;--amber:#e8a33d;--rose:#c1654a;--sage:#7c9473;--muted:#b8b2a4}.gallery-page{background:var(--ink);color:var(--paper);background-image:radial-gradient(circle at 20% 0,#e8a33d0f,#0000 45%),radial-gradient(circle at 80% 30%,#7c94730d,#0000 40%);min-height:100vh;padding:3rem 1.25rem 5rem;font-family:Inter,system-ui,sans-serif}.gallery-page__back{appearance:none;color:var(--paper);cursor:pointer;background:#ffffff0f;border:1px solid #ffffff26;border-radius:999px;margin-bottom:2rem;padding:.5rem 1rem;font-family:JetBrains Mono,monospace;font-size:.8rem;transition:background .15s}.gallery-page__back:hover{background:#ffffff24}.gallery-page__intro{text-align:center;max-width:640px;margin:0 auto 3.5rem}.gallery-page__eyebrow{letter-spacing:.18em;text-transform:uppercase;color:var(--amber);margin:0 0 .75rem;font-family:JetBrains Mono,monospace;font-size:.75rem}.gallery-page__title{letter-spacing:-.01em;margin:0 0 .75rem;font-family:Fraunces,serif;font-size:clamp(2.25rem,5vw,3.5rem);font-weight:600}.gallery-page__sub{color:var(--muted);margin:0;font-size:1.05rem}.gallery-page__upload-toggle{appearance:none;background:var(--amber);color:var(--ink);cursor:pointer;border:none;border-radius:999px;margin-top:1.5rem;padding:.6rem 1.25rem;font-family:JetBrains Mono,monospace;font-size:.85rem;font-weight:600}.gallery-page__upload-toggle:hover{opacity:.9}.gallery-page__status{text-align:center;color:var(--muted);margin:2rem 0;font-family:JetBrains Mono,monospace;font-size:.9rem}.board{background:var(--board);border:1px solid #ffffff0f;border-radius:18px;max-width:1080px;margin:0 auto 4rem;padding:2.25rem clamp(1.25rem,4vw,2.5rem) 2.75rem}.board__header{border-bottom:1px dashed #ffffff26;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem 1rem;margin-bottom:.5rem;padding-bottom:.85rem;display:flex}.board__title{color:var(--paper);margin:0;font-family:Fraunces,serif;font-size:clamp(1.5rem,3vw,2rem);font-style:italic;font-weight:500}.board__date{color:var(--amber);font-family:JetBrains Mono,monospace;font-size:.85rem}.board__note{color:var(--muted);margin:.25rem 0 1.75rem;font-size:.98rem}.board__photos{flex-wrap:wrap;justify-content:center;gap:2rem 1.75rem;padding:.5rem 0;display:flex}.polaroid-wrap{transform:rotate(var(--tilt));position:relative}.polaroid-wrap:hover,.polaroid-wrap:focus-within{transform:rotate(var(--tilt)) translateY(-6px) scale(1.03);z-index:2}.polaroid{appearance:none;background:var(--paper);cursor:pointer;width:220px;font:inherit;border:none;border-radius:2px;padding:.7rem .7rem 1.1rem;transition:box-shadow .2s;display:block;position:relative;box-shadow:0 10px 24px #00000059}.polaroid-wrap:hover .polaroid,.polaroid-wrap:focus-within .polaroid{box-shadow:0 16px 32px #00000073}.polaroid:focus-visible{outline:2px solid var(--amber);outline-offset:3px}.item-delete{z-index:3;border:2px solid var(--ink);color:#fff;cursor:pointer;background:#e0574a;border-radius:50%;justify-content:center;align-items:center;width:30px;height:30px;display:flex;position:absolute;top:-10px;right:-10px;box-shadow:0 2px 8px #0006}.item-delete:hover{background:#c73f33}.item-delete--frame{top:-8px;right:-8px}.film-frame-wrap{position:relative}.polaroid__tape{background:#e8a33d73;border:1px solid #e8a33d99;width:56px;height:20px;position:absolute;top:-10px;left:50%;transform:translate(-50%)rotate(-3deg)}.polaroid img{object-fit:cover;background:#ddd;width:100%;height:190px;display:block}.polaroid__caption{color:var(--ink);text-align:left;margin-top:.6rem;font-family:JetBrains Mono,monospace;font-size:.78rem;line-height:1.3;display:block}.board__filmstrip{border-top:1px dashed #ffffff26;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1.25rem;margin-top:2rem;padding-top:1.75rem;display:grid}.film-frame{appearance:none;border:6px solid var(--ink);background:var(--ink);cursor:pointer;font:inherit;border-radius:4px;outline:2px solid #ffffff14;padding:0;position:relative;overflow:hidden}.film-frame img{object-fit:cover;opacity:.85;width:100%;height:130px;transition:opacity .2s,transform .3s;display:block}.film-frame:hover img,.film-frame:focus-visible img{opacity:1;transform:scale(1.04)}.film-frame:focus-visible{outline:2px solid var(--amber)}.film-frame__play{color:var(--paper);text-shadow:0 2px 8px #0009;pointer-events:none;justify-content:center;align-items:center;font-size:1.6rem;display:flex;position:absolute;inset:0}.film-frame__caption{color:var(--muted);background:var(--ink);text-align:left;padding:.5rem .6rem;font-family:JetBrains Mono,monospace;font-size:.72rem;display:block}.lightbox-backdrop{z-index:100;background:#0a0908eb;justify-content:center;align-items:center;padding:1.5rem;display:flex;position:fixed;inset:0}.lightbox-stage{flex-direction:column;align-items:center;gap:.75rem;max-width:min(900px,92vw);max-height:86vh;display:flex}.lightbox-image{object-fit:contain;border-radius:6px;max-width:100%;max-height:72vh;box-shadow:0 20px 50px #00000080}.lightbox-video-wrap{aspect-ratio:16/9;width:min(900px,88vw)}.lightbox-video-wrap video{background:#000;border-radius:6px;width:100%;height:100%}.lightbox-caption{color:var(--paper);text-align:center;margin:0;font-family:JetBrains Mono,monospace;font-size:.85rem}.lightbox-counter{color:var(--muted);margin:0;font-family:JetBrains Mono,monospace;font-size:.72rem}.lightbox-close,.lightbox-nav{color:var(--paper);cursor:pointer;background:#ffffff14;border:1px solid #ffffff26;border-radius:999px;justify-content:center;align-items:center;transition:background .15s;display:flex;position:fixed}.lightbox-close:hover,.lightbox-nav:hover{background:#ffffff2e}.lightbox-close{width:42px;height:42px;font-size:1.5rem;line-height:1;top:1.25rem;right:1.25rem}.lightbox-nav{width:48px;height:48px;font-size:1.8rem;top:50%;transform:translateY(-50%)}.lightbox-nav--prev{left:1.25rem}.lightbox-nav--next{right:1.25rem}@media (width<=640px){.lightbox-nav{width:38px;height:38px;font-size:1.4rem}.polaroid{width:44vw}.polaroid img{height:38vw}}@media (prefers-reduced-motion:reduce){.polaroid,.film-frame img{transition:none}}
