.collage-preview{border:1px solid var(--border);background:var(--bg);border-radius:14px;place-items:center;min-height:120px;margin-bottom:16px;padding:10px;display:grid}.collage-preview canvas{border-radius:4px;width:auto;max-width:100%;height:auto;max-height:38dvh;display:block}.collage-stage{max-width:100%;line-height:0;position:relative}.collage-stage[hidden]{display:none}.collage-stage canvas{touch-action:none;cursor:grab}.collage-stage canvas:active{cursor:grabbing}.collage-stage canvas.swapping{cursor:pointer}.collage-cell-mark{pointer-events:none;border-radius:3px;position:absolute}.collage-cell-mark.selected{box-shadow:0 0 0 2px #fff, 0 0 0 4px var(--accent)}.collage-cell-mark.target{outline:2px dashed var(--accent);outline-offset:-4px;background:color-mix(in srgb, var(--accent) 12%, transparent)}.collage-hint{color:var(--accent);margin:8px 0 0;font-size:13px;font-weight:600;line-height:1.3}.collage-segmented{width:100%;margin-bottom:14px;display:flex}.segmented.collage-segmented button{flex:1;min-width:0;min-height:44px;padding:0 8px}.field .collage-segmented{margin:6px 0 0}.collage-panel{border:0;min-width:0;min-height:180px;margin:0 0 8px;padding:0}.layout-picker{grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:8px;margin-bottom:14px;display:grid}.layout-option{border:1px solid var(--border);background:var(--surface);color:var(--muted);border-radius:14px;flex-direction:column;align-items:center;gap:6px;padding:10px 6px 8px;font-size:12px;font-weight:600;display:flex}.layout-option svg{width:100%;max-width:64px;height:48px}.layout-option rect{fill:var(--surface-3,#d9dbe2)}.layout-option.selected{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.layout-option.selected rect{fill:var(--accent);opacity:.75}.style-swatch{vertical-align:-3px;width:16px;height:16px;box-shadow:0 0 0 1px var(--border);border:3px solid;border-radius:5px;margin-right:8px;display:inline-block}.collage-styles{margin-bottom:14px}.collage-thumbs{scroll-snap-type:x proximity;gap:8px;padding:4px 2px 8px;display:flex;overflow-x:auto}.collage-thumbs button{background:var(--surface-2);scroll-snap-align:start;border:0;border-radius:10px;flex:none;width:56px;height:56px;padding:0;position:relative;overflow:hidden}.collage-thumbs button.selected{box-shadow:0 0 0 2px var(--surface), 0 0 0 4px var(--accent)}.collage-thumbs img{object-fit:cover;width:100%;height:100%}.collage-thumbs span{color:#fff;background:#0009;border-radius:999px;min-width:18px;padding:1px 5px;font-size:11px;font-weight:700;line-height:16px;position:absolute;bottom:4px;left:4px}.collage-selected-name{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;margin:4px 0 10px;font-size:13px;overflow:hidden}.collage-photo-actions{flex-wrap:wrap;gap:8px;margin-bottom:12px;display:flex}.collage-photo-actions .button{min-height:44px;padding:0 14px}.collage-photo-actions .button.active{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.collage-note{color:var(--muted);margin-top:-6px;font-size:12px;display:block}.collage-save{border-top:1px solid var(--border);grid-template-columns:repeat(3,minmax(0,1fr));gap:0 12px;padding-top:14px;display:grid}@media (width<=560px){.collage-save{grid-template-columns:1fr 1fr}.collage-save .field:first-child{grid-column:1/-1}}.collage-preview>span{align-items:center;gap:10px;font-size:14px;display:flex}.collage-controls{border:0;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 12px;margin:0;padding:0;display:grid}.collage-controls input[type=color]{width:100%;min-height:44px;padding:4px}.collage-controls input[type=range]{width:100%;min-height:44px;accent-color:var(--accent);padding:0}.collage-error{color:var(--danger);flex-wrap:wrap;align-items:center;gap:8px;padding:12px;font-size:14px;display:flex}.batch-jobs,.version-list{max-height:260px;padding:0;list-style:none;overflow:auto}.batch-jobs li,.version-row{border-bottom:1px solid var(--line,#ddd);flex-wrap:wrap;align-items:center;gap:12px;padding:10px;display:flex}.batch-failure{color:var(--danger,#b3261e)}.history-preview{background:#171717;justify-content:center;align-items:center;width:100%;height:min(300px,38dvh);margin-bottom:12px;padding:8px;display:flex;overflow:hidden}.presentation-fields{border:0;gap:16px;padding:0;display:grid}.album-brand{flex-wrap:wrap;align-items:center;gap:16px;padding:16px 0;display:flex}.album-brand img{object-fit:contain;max-width:160px;max-height:64px}.album-watermark{opacity:.6;margin-left:auto}.album-theme-dark{color:#f4f4f7;background:#171923;border-radius:20px}.album-theme-warm{color:#473522;background:#fcf0dc;border-radius:20px}.album-theme-minimal .hero{box-shadow:none;background:0 0}.slideshow{background:#171717;justify-content:center;align-items:center;height:min(65vh,640px);display:flex;position:relative;overflow:hidden}.slideshow>img:not(.slideshow-logo),.slideshow>video{object-fit:contain;width:100%;height:100%}.slideshow .slideshow-logo{object-fit:contain;z-index:1;width:100px;max-height:60px;position:absolute;top:16px;left:16px}.slideshow-watermark{color:#fff;text-shadow:0 1px 4px #000;background:#0005;padding:5px 10px;position:absolute;bottom:20px;right:20px}.history-preview img{object-fit:contain;width:100%;min-width:0;height:100%;min-height:0;display:block}.version-row{text-align:left;background:var(--surface,#fff);width:100%;color:var(--text,#222);border:1px solid var(--border,#ddd);border-radius:8px;margin-bottom:6px}.version-row.selected{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.share-link-row details{width:100%}.album-theme-dark{--bg:#171923;--surface:#252938;--text:#f4f4f7;--muted:#bbc0cd;--border:#44495c}.album-theme-warm{--bg:#fcf0dc;--surface:#fff7e8;--text:#473522;--muted:#77654e;--border:#dfc9aa}@media (width<=480px){.collage-controls{grid-template-columns:1fr}.ed-tabs button{font-size:10px}.ed-tabs{grid-template-columns:repeat(7,minmax(52px,1fr));overflow-x:auto}}.dialog:has(.collage-preview canvas) .dialog-body{scroll-padding-top:calc(min(36dvh,300px) + 24px)}.dialog:has(.collage-preview canvas) .collage-preview{z-index:2;background:var(--bg);min-height:100px;max-height:min(36dvh,300px);position:sticky;top:0;box-shadow:0 4px 12px #0001}.dialog:has(.collage-preview canvas) .collage-preview canvas{max-height:calc(min(36dvh,300px) - 22px)}.collage-controls .field{min-width:0}.collage-controls select{text-overflow:ellipsis}.batch-jobs li>span{overflow-wrap:anywhere;min-width:0}@media (height<=540px) and (width>=640px){.dialog-wide:has(.collage-preview canvas){width:min(980px,100% - 24px);max-height:calc(var(--dialog-viewport-height,100dvh) * .96)}.dialog:has(.collage-preview canvas) .dialog-body{max-height:calc(var(--dialog-viewport-height,100dvh) * .96);grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);align-items:start;column-gap:20px;padding-top:12px;scroll-padding-top:12px;display:grid}.dialog:has(.collage-preview canvas) .dialog-body>*{grid-column:2}.dialog:has(.collage-preview canvas) .dialog-description{display:none}.dialog:has(.collage-preview canvas) .dialog-heading h2{font-size:20px}.dialog:has(.collage-preview canvas) .dialog-body>.collage-preview{max-height:calc(var(--dialog-viewport-height,100dvh) * .96 - 32px);height:calc(var(--dialog-viewport-height,100dvh) * .96 - 32px);grid-area:1/1/span 30;margin:0;top:0}.dialog:has(.collage-preview canvas) .collage-preview canvas{max-height:calc(var(--dialog-viewport-height,100dvh) * .96 - 76px)}}@media (width<=599px){.slideshow{height:min(48dvh, calc(var(--dialog-viewport-height,100dvh) * .5));border-radius:12px}.slideshow-watermark{overflow-wrap:anywhere;max-width:calc(100% - 32px);right:16px}.version-row strong,.version-row span{overflow-wrap:anywhere;min-width:0}}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-opsz-normal-CfYZpDVp.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-opsz-normal-BFQXbQ-f.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-opsz-normal-BmPQvyvo.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-opsz-normal-BM0NlUE_.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-opsz-normal-Ci9T9ieq.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-opsz-normal-DpK-iCPk.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-opsz-normal-BwkfbSeq.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-vietnamese-opsz-normal-Czevyj-6.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-ext-opsz-normal-CJcjJNj7.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-opsz-normal-DihXLNYH.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg:#f6f4ef;--surface:#fff;--surface-2:#eeebe4;--surface-3:#e4e0d7;--text:#1f1d1a;--muted:#6d6961;--border:#e3dfd6;--accent:#3a57d6;--accent-hover:#2d47bd;--accent-soft:#e7ebfd;--on-accent:#fff;--danger:#c2413f;--success:#2f8f5b;--shadow:0 1px 2px #1f1d1a0f, 0 8px 24px #1f1d1a14;--shadow-lift:0 2px 4px #1f1d1a14, 0 18px 40px #1f1d1a29;--radius:16px;--serif:"Fraunces Variable", ui-serif, Georgia, serif;--sans:"Inter Variable", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--ease:cubic-bezier(.2, .8, .2, 1);--page:1180px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-family:var(--sans);font-feature-settings:"cv11", "ss03";color:var(--text);background:var(--bg);font-synthesis:none;-webkit-font-smoothing:antialiased}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#121211;--surface:#1c1b1a;--surface-2:#262523;--surface-3:#33312e;--text:#f3f1ec;--muted:#a7a299;--border:#2f2d2a;--accent:#8fa3ff;--accent-hover:#a9b8ff;--accent-soft:#232a4a;--on-accent:#0e1430;--danger:#ef6b67;--success:#5fcf8f;--shadow:0 1px 2px #0006, 0 8px 24px #00000059;--shadow-lift:0 2px 6px #00000080, 0 20px 44px #0000008c;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:#121211;--surface:#1c1b1a;--surface-2:#262523;--surface-3:#33312e;--text:#f3f1ec;--muted:#a7a299;--border:#2f2d2a;--accent:#8fa3ff;--accent-hover:#a9b8ff;--accent-soft:#232a4a;--on-accent:#0e1430;--danger:#ef6b67;--success:#5fcf8f;--shadow:0 1px 2px #0006, 0 8px 24px #00000059;--shadow-lift:0 2px 6px #00000080, 0 20px 44px #0000008c;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;overflow-x:clip}body{background:var(--bg);min-width:320px;margin:0}button,input,textarea,select{font:inherit;color:inherit;font-feature-settings:inherit}button,a{-webkit-tap-highlight-color:transparent;touch-action:manipulation}button{cursor:pointer}button:disabled{opacity:.5;cursor:not-allowed}a{color:inherit}input,textarea,select{font-size:16px}:focus-visible{outline:3px solid var(--accent);outline-offset:3px}main:focus{outline:none}.visually-hidden{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.skip-link{z-index:100;background:var(--surface);box-shadow:var(--shadow);border-radius:10px;padding:12px 16px;position:fixed;top:-60px;left:12px}.skip-link:focus{top:12px}.spin{animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@keyframes rise{0%{opacity:0;transform:translateY(14px)scale(.98)}}@keyframes fade{0%{opacity:0}}@keyframes sheet-up{0%{transform:translateY(100%)}}@keyframes pop{0%{opacity:0;transform:translateY(12px)scale(.97)}}@keyframes shimmer{to{background-position:-200% 0}}.button{white-space:nowrap;min-height:46px;transition:background .15s, transform .15s var(--ease), box-shadow .15s;border:1px solid #0000;border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:10px 20px;font-size:15px;font-weight:600;line-height:1.2;text-decoration:none;display:inline-flex}.button:active:not(:disabled){transform:scale(.97)}.button svg{flex-shrink:0}.primary{background:var(--accent);color:var(--on-accent);box-shadow:0 4px 14px #3a57d640}.primary:hover:not(:disabled){background:var(--accent-hover)}.secondary{background:var(--surface);border-color:var(--border);color:var(--text)}.secondary:hover:not(:disabled){background:var(--surface-2)}.danger{background:var(--danger);color:#fff}.danger:hover:not(:disabled){filter:brightness(.92)}.icon-button{width:44px;height:44px;color:inherit;transition:background .15s, transform .15s var(--ease);background:0 0;border:0;border-radius:50%;flex-shrink:0;place-items:center;padding:0;text-decoration:none;display:inline-grid}.icon-button:hover:not(:disabled){background:var(--surface-2)}.icon-button:active:not(:disabled){transform:scale(.92)}.icon-button.small{width:36px;height:36px}.pill{border:1px solid var(--border);background:var(--surface);min-height:40px;color:var(--muted);border-radius:999px;align-items:center;gap:6px;padding:0 14px;font-size:14px;font-weight:500;display:inline-flex}.pill:hover{color:var(--text)}.topbar{z-index:20;background:color-mix(in srgb, var(--bg) 82%, transparent);-webkit-backdrop-filter:saturate(1.6)blur(18px);border-bottom:1px solid color-mix(in srgb, var(--border) 70%, transparent);padding-top:env(safe-area-inset-top);position:sticky;top:0}.topbar-inner{max-width:var(--page);align-items:center;gap:12px;height:60px;margin:0 auto;padding:0 12px 0 16px;display:flex}.brand{font-family:var(--serif);letter-spacing:-.02em;align-items:center;gap:9px;font-size:22px;font-weight:600;text-decoration:none;display:inline-flex}.brand-mark{background:var(--text);width:34px;height:34px;color:var(--bg);border-radius:11px;place-items:center;display:grid}.tabs{display:none}.topbar-actions{align-items:center;gap:8px;margin-left:auto;display:flex}.topbar-upload{display:none}.search-field{background:var(--surface);border:1px solid var(--border);height:44px;color:var(--muted);border-radius:999px;align-items:center;gap:8px;padding:0 4px 0 14px;animation:.2s fade;display:flex}.search-field:focus-within{border-color:var(--accent)}.search-field input{min-width:0;color:var(--text);background:0 0;border:0;outline:0;flex:1}.search-field input::-webkit-search-cancel-button{display:none}.topbar.searching .brand,.topbar.searching .theme-slot{display:none}.topbar.searching .topbar-actions,.topbar.searching .search-field{flex:1;min-width:0}.bottom-nav{left:50%;bottom:calc(14px + env(safe-area-inset-bottom));z-index:20;border:1px solid var(--border);background:color-mix(in srgb, var(--surface) 88%, transparent);-webkit-backdrop-filter:blur(18px);box-shadow:var(--shadow-lift);border-radius:999px;align-items:center;gap:4px;padding:6px;display:flex;position:fixed;transform:translate(-50%)}.nav-item{min-width:104px;height:48px;color:var(--muted);border-radius:999px;justify-content:center;align-items:center;gap:7px;padding:0 16px;font-size:14px;font-weight:600;text-decoration:none;transition:background .2s,color .2s;display:flex}.nav-item.active{background:var(--surface-2);color:var(--text)}.fab{background:var(--accent);width:52px;height:52px;color:var(--on-accent);transition:transform .2s var(--ease);border:0;border-radius:50%;order:2;place-items:center;display:grid;box-shadow:0 6px 18px #3a57d659}.fab:active{transform:scale(.9)rotate(90deg)}.page{max-width:var(--page);padding:8px 12px calc(110px + env(safe-area-inset-bottom));margin:0 auto}.hero{isolation:isolate;text-align:center;flex-direction:column;align-items:center;padding:28px 8px 22px;display:flex;position:relative}.hero h1{max-width:18ch;font-family:var(--serif);letter-spacing:-.025em;font-variation-settings:"SOFT" 50;overflow-wrap:anywhere;animation:rise .5s var(--ease) both;margin:0;font-size:clamp(36px,9vw,60px);font-weight:500;line-height:1.02}.hero p{max-width:52ch;color:var(--muted);animation:rise .5s 50ms var(--ease) both;margin:12px 0 0;font-size:15px;line-height:1.55}.hero-actions{animation:rise .5s .1s var(--ease) both;flex-wrap:wrap;justify-content:center;gap:10px;margin-top:22px;display:flex}.hero.has-cover{margin:0 -12px;padding-top:40px;padding-bottom:30px}.hero.has-cover:before{content:"";z-index:-1;background:var(--cover) center / cover;filter:blur(48px)saturate(1.4);opacity:.35;position:absolute;inset:-40px calc(50% - 50vw) 0;-webkit-mask-image:linear-gradient(#000 30%,#0000);mask-image:linear-gradient(#000 30%,#0000)}.back{background:color-mix(in srgb, var(--surface) 70%, transparent);min-height:40px;color:var(--muted);border-radius:999px;align-items:center;gap:6px;margin-bottom:10px;padding:0 14px;font-size:14px;font-weight:500;text-decoration:none;display:inline-flex}.back:hover{color:var(--text)}.toolbar{flex-wrap:wrap;justify-content:center;align-items:center;gap:10px;margin:0 0 22px;display:flex}.segmented{background:var(--surface-2);border-radius:999px;gap:2px;padding:4px;display:inline-flex}.segmented button{min-height:36px;color:var(--muted);background:0 0;border:0;border-radius:999px;padding:0 16px;font-size:14px;font-weight:600;transition:background .2s,color .2s,box-shadow .2s}.segmented button.selected{background:var(--surface);color:var(--text);box-shadow:0 1px 3px #0000001a}.menu{display:inline-flex;position:relative}.menu-popover{z-index:40;border:1px solid var(--border);background:var(--surface);width:max-content;min-width:190px;box-shadow:var(--shadow-lift);animation:pop .18s var(--ease);transform-origin:top;border-radius:16px;padding:6px;position:absolute;top:calc(100% + 8px)}.menu-popover.right{right:0}.menu-popover.center{left:50%;translate:-50%}.menu-popover button{width:100%;min-height:44px;color:var(--text);text-align:left;background:0 0;border:0;border-radius:10px;align-items:center;gap:12px;padding:0 12px;font-size:15px;font-weight:500;display:flex}.menu-popover button:hover,.menu-popover button:focus-visible{background:var(--surface-2);outline:none}.menu-popover button>svg{flex-shrink:0}.menu-popover button>span{overflow-wrap:anywhere;flex:1;min-width:0}.menu-popover button>svg:first-child{color:var(--muted)}.menu-popover .checked{font-weight:600}.menu-popover .checked>svg:first-child{color:var(--accent)}.menu-check{color:var(--accent);margin-left:auto}.menu-popover .danger-item,.menu-popover .danger-item>svg:first-child{color:var(--danger)}.button.round{width:46px;padding:0}.album-grid{--cols:2;--gx:16px;justify-content:center;gap:28px var(--gx);flex-wrap:wrap;padding:8px 4px 0;display:flex}.album-grid>*{width:calc((100% - (var(--cols) - 1) * var(--gx)) / var(--cols))}.album-card{text-align:center;min-width:0;animation:rise .5s calc(var(--i,0) * 45ms) var(--ease) both;background:0 0;border:0;flex-direction:column;align-items:center;padding:0;text-decoration:none;display:flex}.album-stack{aspect-ratio:1;width:100%;display:block;position:relative}.album-stack:before,.album-stack:after{content:"";border-radius:var(--radius);background:var(--surface-3);box-shadow:var(--shadow);transition:transform .35s var(--ease);position:absolute;inset:0}.album-stack:before{transform:rotate(-4deg)translate(-2px,3px)}.album-stack:after{background:var(--surface-2);transform:rotate(3deg)translate(2px,2px)}.album-cover{z-index:1;border-radius:var(--radius);background:var(--surface-2);width:100%;height:100%;box-shadow:var(--shadow);transition:transform .35s var(--ease), box-shadow .35s;display:flex;position:relative;overflow:hidden}.album-cover img,.album-cover video{object-fit:cover;width:100%;height:100%}.album-card:hover .album-cover,.album-card:focus-visible .album-cover{box-shadow:var(--shadow-lift);transform:translateY(-6px)}.album-card:hover .album-stack:before,.album-card:focus-visible .album-stack:before{transform:rotate(-9deg)translate(-10px,2px)}.album-card:hover .album-stack:after,.album-card:focus-visible .album-stack:after{transform:rotate(8deg)translate(10px)}.album-card:active .album-cover{transform:scale(.97)}.album-card:focus-visible{outline:none}.album-card:focus-visible .album-cover{outline:3px solid var(--accent);outline-offset:3px}.album-title{max-width:100%;font-family:var(--serif);letter-spacing:-.01em;text-overflow:ellipsis;white-space:nowrap;margin:16px 0 3px;font-size:19px;font-weight:500;display:block;overflow:hidden}.album-meta{color:var(--muted);font-size:13px}.album-placeholder{color:#7c6a55;background:linear-gradient(150deg,#f4e7d8,#efe4f1);flex-direction:column;justify-content:center;align-items:center;gap:8px;width:100%;font-size:13px;font-weight:500;display:flex}.palette-1 .album-placeholder{color:#4f7a68;background:linear-gradient(150deg,#dcefe6,#e7eef9)}.palette-2 .album-placeholder{color:#5b5f9a;background:linear-gradient(150deg,#e3e5fb,#f6e6ec)}.palette-3 .album-placeholder{color:#8a6a3e;background:linear-gradient(150deg,#f7ecd4,#e5f0ea)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .album-placeholder,:root:not([data-theme=light]) .palette-1 .album-placeholder,:root:not([data-theme=light]) .palette-2 .album-placeholder,:root:not([data-theme=light]) .palette-3 .album-placeholder{color:var(--muted);background:linear-gradient(150deg, var(--surface-2), var(--surface-3))}}:root[data-theme=dark] .album-placeholder,:root[data-theme=dark] .palette-1 .album-placeholder,:root[data-theme=dark] .palette-2 .album-placeholder,:root[data-theme=dark] .palette-3 .album-placeholder{color:var(--muted);background:linear-gradient(150deg, var(--surface-2), var(--surface-3))}.new-album .album-stack:before,.new-album .album-stack:after{opacity:0}.new-album .album-cover{border:2px dashed var(--border);box-shadow:none;color:var(--muted);background:0 0;flex-direction:column;justify-content:center;align-items:center;gap:8px;font-size:14px;font-weight:600}.new-album:hover .album-cover{border-color:var(--accent);color:var(--accent);box-shadow:none}.new-album .album-title{color:var(--muted)}.date-group{margin:6px 0 30px}.group-heading{color:var(--muted);letter-spacing:.02em;align-items:center;gap:14px;margin:0 0 14px;font-size:13px;font-weight:600;display:flex}.group-heading:before,.group-heading:after{content:"";background:var(--border);flex:1;height:1px}.justified{gap:var(--gap,6px);flex-direction:column;min-width:0;display:flex}.justified-row{gap:var(--gap,6px);min-width:0;display:flex}.justified-cell{min-width:0;height:100%}.justified .media-tile{width:100%;height:100%;min-height:0;margin:0}.justified .media-open{height:100%}.justified .media-tile img,.justified .media-tile video,.justified .thumbnail-placeholder{aspect-ratio:auto;object-fit:cover;width:100%;height:100%}.justified .media-tile.broken,.justified .thumbnail-failed{aspect-ratio:auto;height:100%}.media-tile{background:var(--surface-2);break-inside:avoid;width:100%;min-height:90px;animation:rise .5s calc(var(--i,0) * 35ms) var(--ease) both;transition:transform .25s var(--ease), box-shadow .25s;border:0;border-radius:12px;margin:0 0 8px;padding:0;display:block;position:relative;overflow:hidden}.media-tile img,.media-tile video{opacity:0;width:100%;height:auto;transition:opacity .4s, transform .5s var(--ease);display:block}.media-tile video{aspect-ratio:4/5;object-fit:cover}.media-tile .loaded{opacity:1}.media-tile:active{transform:scale(.97)}.media-tile:focus-visible{outline-offset:2px}.video-badge{color:#fff;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0000008c;border-radius:999px;align-items:center;gap:4px;padding:4px 8px;font-size:11px;font-weight:600;display:flex;position:absolute;top:8px;right:8px}.album-cover .video-badge{top:10px;right:10px}.media-label{display:none}.media-tile img.sized{object-fit:cover}.thumbnail-placeholder{aspect-ratio:4/5;background:linear-gradient(150deg, var(--surface-2), var(--surface-3));width:100%;display:block}.media-tile.pending img,.media-tile.pending video{filter:brightness(.72)saturate(.85)}.media-tile.pending[aria-disabled=true]{cursor:progress}.tile-status{z-index:1;color:#fff;pointer-events:none;flex-direction:column;justify-content:center;align-items:center;gap:8px;display:flex;position:absolute;inset:0}.tile-status>span:last-child{-webkit-backdrop-filter:blur(6px);background:#00000080;border-radius:999px;padding:3px 10px;font-size:12px;font-weight:600}.media-tile .thumbnail-placeholder~.tile-status{color:var(--muted)}.media-tile.broken{aspect-ratio:4/5;border:2px dashed color-mix(in srgb, var(--danger) 45%, var(--border));background:color-mix(in srgb, var(--danger) 7%, var(--surface));color:var(--danger);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:6px;padding:14px 10px;display:flex}.media-tile.broken strong{color:var(--text);font-size:13px;line-height:1.3}.broken-name{max-width:100%;color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.broken-delete{min-height:36px;margin-top:4px;padding:0 14px;font-size:13px}.thumbnail-failed{aspect-ratio:1;width:100%;color:var(--muted);flex-direction:column;justify-content:center;align-items:center;gap:6px;padding:8px;font-size:12px;display:flex}.drop-hint{border:2px dashed var(--border);width:min(100%,520px);color:var(--muted);text-align:center;transition:border-color .2s, color .2s, transform .2s var(--ease);background:0 0;border-radius:24px;flex-direction:column;align-items:center;gap:8px;margin:10px auto;padding:48px 20px;display:flex}.drop-hint strong{color:var(--text);font-size:17px}.drop-hint span{font-size:14px}.drop-hint:hover{border-color:var(--accent);color:var(--accent)}.drop-hint:active{transform:scale(.98)}.camera-spinner{--size:56px;--ring:max(2px, calc(var(--size) * .075));width:var(--size);height:var(--size);color:var(--accent);flex-shrink:0;place-items:center;display:inline-grid;position:relative}.camera-spinner.inherit{color:currentColor}.camera-spinner .cs-track,.camera-spinner .cs-ring{border-radius:50%;position:absolute;inset:0}.camera-spinner .cs-track{border:var(--ring) solid currentColor;opacity:.16}.camera-spinner .cs-ring{background:conic-gradient(from 0deg, transparent 0 20%, currentColor 95%, transparent 96%);-webkit-mask:radial-gradient(farthest-side, transparent calc(100% - var(--ring)), #000 calc(100% - var(--ring) + .5px));-webkit-mask:radial-gradient(farthest-side, transparent calc(100% - var(--ring)), #000 calc(100% - var(--ring) + .5px));mask:radial-gradient(farthest-side, transparent calc(100% - var(--ring)), #000 calc(100% - var(--ring) + .5px));animation:.9s linear infinite spin}.camera-spinner .cs-camera{width:46%;height:46%;animation:cs-click 1.8s var(--ease) infinite}.camera-spinner.small .cs-camera{width:52%;height:52%}.camera-spinner .cs-flash{opacity:0;background:currentColor;border-radius:50%;width:14%;height:14%;animation:1.8s ease-out infinite cs-flash;position:absolute;top:26%;right:26%}.camera-spinner.delayed{animation:.3s .35s both fade}@keyframes cs-click{0%,72%,to{transform:scale(1)}80%{transform:scale(.82)}88%{transform:scale(1.06)}}@keyframes cs-flash{0%,76%{opacity:0;transform:scale(.4)}82%{opacity:.9;transform:scale(1.4)}to{opacity:0;transform:scale(2)}}.page-loader{color:var(--muted);text-align:center;flex-direction:column;align-items:center;gap:16px;padding:64px 16px;animation:.3s .15s both fade;display:flex}.page-loader p{margin:0;font-size:15px;font-weight:500}.tile-spinner{color:var(--muted);opacity:.8;margin:auto;position:absolute;inset:0}.album-cover .tile-spinner{z-index:1}.viewer-loading{color:#f3f1ec;pointer-events:none;place-items:center;display:grid;position:absolute;inset:0}.empty{text-align:center;max-width:440px;animation:rise .5s var(--ease) both;margin:0 auto;padding:40px 16px}.empty-icon{background:var(--surface-2);width:80px;height:80px;color:var(--muted);border-radius:28px;place-items:center;margin-bottom:20px;display:inline-grid}.empty h2{font-family:var(--serif);margin:0 0 10px;font-size:24px;font-weight:600}.empty p{color:var(--muted);margin:0 auto 22px;font-size:15px;line-height:1.6}.notice{background:color-mix(in srgb, var(--danger) 12%, var(--surface));max-width:640px;color:var(--danger);overflow-wrap:anywhere;border-radius:14px;justify-content:space-between;align-items:center;gap:12px;margin:14px auto;padding:12px 14px;font-size:14px;line-height:1.5;display:flex}.notice button{background:0 0;border:0;flex-shrink:0;min-height:40px;padding:0 10px;font-weight:700}.toast{left:50%;bottom:calc(92px + env(safe-area-inset-bottom));z-index:90;background:var(--text);width:max-content;max-width:calc(100% - 32px);color:var(--bg);box-shadow:var(--shadow-lift);animation:pop .35s var(--ease);border-radius:999px;align-items:center;gap:10px;padding:6px 6px 6px 16px;font-size:14px;font-weight:500;display:flex;position:fixed;transform:translate(-50%)}.toast>svg{color:var(--success);flex-shrink:0}.toast .icon-button{width:34px;height:34px}.toast .icon-button:hover{background:color-mix(in srgb, var(--bg) 15%, transparent)}.drop-overlay{z-index:70;background:color-mix(in srgb, var(--bg) 70%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);pointer-events:none;place-items:center;padding:24px;animation:.15s fade;display:grid;position:fixed;inset:0}.drop-overlay>div{border:3px dashed var(--accent);background:var(--surface);color:var(--accent);text-align:center;box-shadow:var(--shadow-lift);border-radius:28px;flex-direction:column;align-items:center;gap:8px;padding:48px 56px;display:flex}.drop-overlay strong{color:var(--text);font-family:var(--serif);font-size:26px}.drop-overlay span{color:var(--muted);font-size:14px}.dialog{top:var(--dialog-viewport-top,0px);bottom:max(0px, calc(100dvh - var(--dialog-viewport-height,100dvh) - var(--dialog-viewport-top,0px)));width:100%;max-width:100%;max-height:calc(var(--dialog-viewport-height,100dvh) * .92);background:var(--surface);color:var(--text);box-shadow:var(--shadow-lift);border:0;border-radius:26px 26px 0 0;margin:auto 0 0;padding:0}.dialog[open]{animation:sheet-up .35s var(--ease)}.dialog::backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0a0a0a73;animation:.25s fade}.dialog-body{max-height:calc(var(--dialog-viewport-height,100dvh) * .92);padding:8px 20px max(20px, env(safe-area-inset-bottom));overscroll-behavior:contain;overflow-y:auto}.sheet-handle{background:var(--surface-3);border-radius:9px;width:40px;height:5px;margin:0 auto 10px;display:block}.dialog-heading{justify-content:space-between;align-items:center;gap:12px;display:flex}.dialog-heading h2{min-width:0;font-family:var(--serif);overflow-wrap:anywhere;margin:0;font-size:24px;font-weight:600}.dialog-heading .icon-button{margin-right:-8px}.dialog-description{color:var(--muted);overflow-wrap:anywhere;margin:6px 0 18px;font-size:15px;line-height:1.55}.field{margin:16px 0;font-size:14px;font-weight:600;display:block}.field>span{color:var(--muted);margin-left:4px;font-weight:400}.field-label{margin:18px 0 10px;font-size:14px;font-weight:600}.field input,.field textarea,.field select,.duration-field input,.duration-field select,.link-box input{border:1px solid var(--border);background:var(--bg);width:100%;color:var(--text);border-radius:14px;margin-top:8px;padding:12px 14px;font-weight:400;line-height:1.4;display:block}.field textarea{resize:vertical;min-height:72px}.field input::placeholder,.field textarea::placeholder{color:var(--muted)}.field input:focus,.field textarea:focus,.field select:focus,.duration-field input:focus,.duration-field select:focus,.link-box input:focus{outline:2px solid var(--accent);outline-offset:0;border-color:#0000}.dialog-actions{flex-wrap:wrap;gap:10px;margin-top:22px;display:flex}.dialog-actions>.button{flex:1}.chip-row{flex-wrap:wrap;gap:8px;display:flex}.chip{border:1px solid var(--border);background:var(--surface);min-height:42px;color:var(--muted);border-radius:999px;padding:0 16px;font-size:14px;font-weight:600;transition:all .15s}.chip:hover{color:var(--text)}.chip.selected{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.duration-field{animation:rise .25s var(--ease);border:0;gap:10px;margin:14px 0 0;padding:0;display:flex}.duration-field label:first-of-type{width:96px}.duration-field label:last-of-type{flex:1}.duration-field input,.duration-field select{margin:0}.link-box{background:var(--bg);border:1px solid var(--border);border-radius:999px;gap:8px;margin-top:4px;padding:6px;display:flex}.link-box input{background:0 0;border:0;flex:1;min-width:0;margin:0;padding:0 12px;font-size:14px}.link-box input:focus{outline:none}.link-box .button{min-height:42px}.expiry-summary{color:var(--muted);justify-content:center;align-items:center;gap:6px;margin-top:12px;font-size:13px;display:flex}.share-links ul{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.share-link-row{background:var(--bg);border:1px solid var(--border);border-radius:12px;justify-content:space-between;align-items:center;gap:10px;padding:8px 12px;display:flex}.share-link-row span{color:var(--muted);align-items:center;gap:6px;font-size:13px;display:flex}.drop-zone{border:2px dashed var(--border);background:var(--bg);width:100%;color:var(--accent);text-align:center;transition:border-color .2s, background .2s, transform .2s var(--ease);border-radius:20px;flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:32px 16px;display:flex}.drop-zone strong{color:var(--text);font-size:16px}.drop-zone span{color:var(--muted);font-size:13px}.drop-zone:hover:not(:disabled),.drop-zone.dragging{border-color:var(--accent);background:var(--accent-soft)}.drop-zone:active:not(:disabled){transform:scale(.98)}.drop-zone.compact{flex-direction:row;padding:14px}.drop-zone.compact strong{font-size:15px}.upload-progress{margin:18px 0 12px}.upload-progress .queue-status{margin:0 0 8px}.progress-track{background:var(--surface-2);border-radius:999px;height:6px;overflow:hidden}.progress-track>span{width:calc(var(--p) * 1%);border-radius:inherit;background:var(--accent);height:100%;transition:width .25s var(--ease);display:block}.item-label{color:#fff;text-shadow:0 1px 3px #0009;font-variant-numeric:tabular-nums;place-items:center;font-size:12px;font-weight:700;display:grid;position:absolute;inset:0}.item-bar{background:#ffffff4d;border-radius:999px;height:4px;position:absolute;bottom:8px;left:8px;right:8px;overflow:hidden}.item-bar>span{width:calc(var(--p) * 1%);border-radius:inherit;background:#fff;height:100%;transition:width .2s;display:block}.item-retry{color:#fff;background:#0009;border:0;border-radius:50%;place-items:center;width:40px;height:40px;margin:auto;padding:0;display:grid;position:absolute;inset:0}.item-retry:hover{background:#000000c7}.upload-item.canceled img,.upload-item.canceled video{filter:grayscale(.6)brightness(.6)}.error-badge.neutral{background:#000000a6}.queue-status{color:var(--muted);text-align:center;margin:18px 0 10px;font-size:14px;font-weight:500}.upload-grid{grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:8px;max-height:300px;margin:0;padding:2px;list-style:none;display:grid;overflow-y:auto}.upload-item{aspect-ratio:1;background:var(--surface-2);animation:pop .3s var(--ease) both;border-radius:12px;position:relative;overflow:hidden}.upload-item img,.upload-item video{object-fit:cover;width:100%;height:100%;transition:filter .3s,opacity .3s}.upload-item.uploading img,.upload-item.uploading video,.upload-item.pending img,.upload-item.pending video{opacity:.85}.upload-item.uploading img,.upload-item.uploading video{filter:brightness(.6)}.upload-item.error{outline:2px solid var(--danger);outline-offset:-2px}.upload-item.error img,.upload-item.error video{filter:grayscale()brightness(.6)}.ring{background:conic-gradient(#fff calc(var(--p) * 1%), #ffffff40 0);border-radius:50%;place-items:center;width:52px;height:52px;margin:auto;display:grid;position:absolute;inset:0}.ring>span{color:#fff;background:#0000008c;border-radius:50%;place-items:center;width:42px;height:42px;font-size:12px;font-weight:700;display:grid}.done-badge{background:var(--success);color:#fff;width:28px;height:28px;animation:pop .3s var(--ease);border-radius:50%;place-items:center;display:grid;position:absolute;bottom:6px;right:6px}.error-badge{background:var(--danger);color:#fff;border-radius:999px;padding:3px 8px;font-size:11px;font-weight:700;position:absolute;bottom:6px;left:6px}.remove{color:#fff;background:#0009;border:0;border-radius:50%;place-items:center;width:26px;height:26px;padding:0;display:grid;position:absolute;top:5px;right:5px}.remove:after{content:"";position:absolute;inset:-9px}.viewer{color:#f3f1ec;background:rgb(8 8 8/var(--fade,1));border:0;width:100%;max-width:none;height:100dvh;max-height:none;margin:0;padding:0;position:fixed;inset:0;overflow:hidden}.viewer[open]{flex-direction:column;animation:.2s fade;display:flex}.viewer::backdrop{background:0 0}.viewer .icon-button{color:#eceae5}.viewer .icon-button:hover:not(:disabled){background:#ffffff1f}.viewer-toolbar{z-index:3;padding:max(8px, env(safe-area-inset-top)) 8px 24px;transition:opacity .25s, transform .25s var(--ease);background:linear-gradient(#0009,#0000);align-items:center;gap:6px;display:flex;position:absolute;top:0;left:0;right:0}.viewer-title{text-align:center;flex:1;min-width:0}.viewer-title strong{text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:600;display:block;overflow:hidden}.viewer-title span{color:#fff9;margin-top:2px;font-size:12px;display:block}.viewer-actions{display:flex}.viewer-favorite[aria-pressed=true]{color:#ff9db3}.viewer-actions .hide-small{display:none}.viewer-stage{touch-action:none;-webkit-user-select:none;user-select:none;flex:1;justify-content:center;align-items:center;min-height:0;display:flex;position:relative;overflow:hidden;container-type:size}.viewer-stage img{object-fit:contain;transform-origin:50%;image-rendering:auto;max-width:100%;max-height:100%;transition:transform .28s var(--ease);-webkit-user-drag:none;animation:.25s fade;display:block}.viewer-stage img.sized{width:min(calc(var(--w) * 1px), 100cqw, calc(100cqh * var(--ar)));height:auto;aspect-ratio:var(--ar)}.viewer-stage video{max-width:100%;max-height:calc(100% - 150px);display:block}.viewer-stage.zoomed{cursor:grab}.viewer-stage.zoomed:active{cursor:grabbing}.viewer.zoomed .filmstrip,.viewer.zoomed .viewer-nav{opacity:0;pointer-events:none;transform:translateY(12px)}.zoom-hud{left:50%;bottom:calc(96px + env(safe-area-inset-bottom));z-index:3;-webkit-backdrop-filter:blur(12px);opacity:0;pointer-events:none;transition:opacity .2s, transform .2s var(--ease);background:#141414c7;border-radius:999px;align-items:center;gap:2px;padding:4px;display:flex;position:absolute;transform:translateY(8px);box-shadow:0 6px 24px #0006}.zoom-hud.visible{opacity:1;pointer-events:auto;transform:none}.viewer.zoomed .zoom-hud{bottom:calc(24px + env(safe-area-inset-bottom))}.viewer.immersive .zoom-hud{opacity:0;pointer-events:none}.zoom-hud button{color:#f3f1ec;background:0 0;border:0;border-radius:999px;place-items:center;min-width:40px;height:40px;padding:0;display:grid}.zoom-hud button:hover:not(:disabled){background:#ffffff1f}.zoom-hud button:disabled{opacity:.35}.zoom-hud .zoom-level{font-variant-numeric:tabular-nums;flex-direction:column;justify-content:center;min-width:76px;padding:0 10px;font-size:14px;font-weight:700;line-height:1.1;display:flex}.zoom-level small{color:#fff9;font-size:10px;font-weight:600}.zoom-level.enlarged,.zoom-level.enlarged small{color:#ffc46b}.viewer-nav{display:none}.filmstrip{z-index:3;padding:28px 16px max(14px, env(safe-area-inset-bottom));scrollbar-width:none;transition:opacity .25s, transform .25s var(--ease);background:linear-gradient(#0000,#000000a6);gap:6px;display:flex;position:absolute;bottom:0;left:0;right:0;overflow-x:auto}.filmstrip::-webkit-scrollbar{display:none}.filmstrip:before,.filmstrip:after{content:"";flex:0 0 calc(50% - 28px)}.filmstrip button{opacity:.55;width:46px;height:46px;transition:opacity .2s, transform .2s var(--ease), border-color .2s;background:#222;border:2px solid #0000;border-radius:10px;flex:none;padding:0;overflow:hidden}.filmstrip button[aria-current=true]{opacity:1;border-color:#fff;transform:scale(1.1)}.filmstrip button:hover{opacity:.9}.filmstrip img{object-fit:cover;width:100%;height:100%}.film-video{color:#fff;place-items:center;width:100%;height:100%;display:grid}.viewer.immersive .viewer-toolbar{opacity:0;pointer-events:none;transform:translateY(-12px)}.viewer.immersive .filmstrip,.viewer.immersive .viewer-nav{opacity:0;pointer-events:none;transform:translateY(12px)}.viewer-details{z-index:4;padding:10px 20px max(20px, env(safe-area-inset-bottom));animation:sheet-up .3s var(--ease);background:#1d1c1b;border-radius:24px 24px 0 0;position:absolute;bottom:0;left:0;right:0;box-shadow:0 -10px 40px #00000080}.details-heading{justify-content:space-between;align-items:center;display:flex}.details-heading h3{font-family:var(--serif);margin:0;font-size:20px;font-weight:600}.viewer-details dl{grid-template-columns:auto 1fr;gap:10px 18px;margin:14px 0 0;font-size:14px;display:grid}.viewer-details dt{color:#ffffff8c}.viewer-details dd{overflow-wrap:anywhere;margin:0}.viewer-album{color:#f3f1ec;background:#2a2927;border-color:#3a3835;width:100%;margin-top:18px}.viewer-album:hover:not(:disabled){background:#353330}.editor-loading{z-index:100;color:#8fa3ff;background:#0b0b0b;place-items:center;display:grid;position:fixed;inset:0}.read-only{background:var(--surface-2);color:var(--muted);border-radius:999px;align-items:center;gap:6px;margin-left:auto;margin-right:4px;padding:6px 12px;font-size:13px;font-weight:600;display:inline-flex}.shared-shell .page{padding-bottom:48px}@media (width>=600px){.topbar-inner{height:68px;padding:0 20px 0 24px}.page{padding-left:24px;padding-right:24px}.hero{padding:48px 16px 32px}.hero.has-cover{margin:0 -24px;padding-top:56px}.album-grid{--cols:3;--gx:28px;row-gap:40px}.dialog{border-radius:26px;width:min(480px,100% - 40px);margin:auto}.dialog[open]{animation:pop .3s var(--ease)}.dialog-wide{width:min(600px,100% - 40px)}.dialog-body{padding:24px 28px 26px}.sheet-handle{display:none}.dialog-actions{justify-content:flex-end}.dialog-actions>.button{flex:initial}.viewer-actions .hide-small{display:inline-grid}.viewer-details{width:320px;animation:pop .25s var(--ease);border-radius:20px;inset:76px 16px auto auto}.filmstrip button{width:54px;height:54px}}@media (width>=900px){.topbar-inner{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);display:grid}.tabs{background:var(--surface-2);border-radius:999px;gap:4px;padding:4px;display:flex}.tabs .nav-item{min-width:0;height:40px;padding:0 18px}.tabs .nav-item.active{background:var(--surface);box-shadow:0 1px 3px #0000001a}.topbar-actions{justify-self:end}.topbar-upload{min-height:42px;padding:0 18px;font-size:14px;display:inline-flex}.topbar.searching .brand,.topbar.searching .theme-slot{display:inline-flex}.topbar.searching .search-field{flex:0 280px;min-width:140px}.topbar.searching .topbar-actions{justify-content:flex-end;justify-self:stretch;margin-left:0}.bottom-nav{display:none}.page{padding-bottom:72px}.album-grid{--cols:4;--gx:36px;row-gap:48px}.media-tile:hover{box-shadow:var(--shadow-lift);transform:translateY(-3px)}.media-tile:hover img,.media-tile:hover video{transform:scale(1.04)}.media-label{color:#fff;text-align:left;text-overflow:ellipsis;white-space:nowrap;opacity:0;transition:opacity .2s, transform .2s var(--ease);background:linear-gradient(#0000,#0009);padding:28px 12px 10px;font-size:12px;font-weight:500;display:block;position:absolute;bottom:0;left:0;right:0;overflow:hidden;transform:translateY(6px)}.media-tile:hover .media-label,.media-tile:focus-visible .media-label{opacity:1;transform:none}.toast{bottom:28px}.viewer-nav{z-index:3;color:#fff;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);width:52px;height:52px;transition:background .2s, opacity .25s, transform .2s var(--ease);background:#ffffff1a;border:0;border-radius:50%;place-items:center;margin-top:-26px;padding:0;display:grid;position:absolute;top:50%}.viewer-nav:hover{background:#fff3}.viewer-nav:active{transform:scale(.92)}.viewer-nav.prev{left:20px}.viewer-nav.next{right:20px}.viewer-stage{padding:72px 96px 100px}.viewer-stage.zoomed{padding:0}.zoom-hud{opacity:0}.viewer:hover .zoom-hud,.zoom-hud.visible,.zoom-hud:focus-within{opacity:1;pointer-events:auto;transform:none}.viewer.immersive .zoom-hud{opacity:0;pointer-events:none}.viewer-stage video{max-height:100%}}@media (width>=1200px){.album-grid{--cols:5}}@media (width<=360px){.nav-item{min-width:84px;padding:0 12px}.album-grid{--gx:12px;row-gap:24px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.album-sharing{flex-wrap:wrap;align-items:center;gap:10px;margin:16px 0;display:flex}.sharing-badge{color:var(--muted);align-items:center;gap:5px;font-size:12px;display:inline-flex}.sharing-badge.shared{color:var(--accent)}.album-sharing>span{color:var(--muted);font-size:13px}.album-sharing>button{margin-left:auto}.media-tile.media-selected{outline:3px solid var(--accent);outline-offset:2px}.selection-check{width:26px;height:26px;color:var(--on-accent);background:#0006;border:2px solid #fff;border-radius:50%;place-items:center;display:grid;position:absolute;top:10px;left:10px;box-shadow:0 1px 5px #0005}.media-selected .selection-check{background:var(--accent)}.share-link-row{flex-wrap:wrap}.share-link-row>span{flex:180px}.album-header{border-bottom:1px solid var(--border);grid-template-columns:minmax(0,1fr);gap:14px;padding:12px 0 18px;display:grid}.album-breadcrumb .back{background:0 0;min-height:44px;margin:0;padding:0}.album-heading{align-items:center;gap:12px;min-width:0;display:flex}.album-heading-cover{object-fit:cover;background:var(--surface-2);border-radius:10px;flex:none;width:56px;height:64px}.album-heading-copy{min-width:0}.album-heading h1{font-family:var(--serif);letter-spacing:-.025em;overflow-wrap:anywhere;margin:0;font-size:clamp(28px,4vw,40px);font-weight:500;line-height:1.12}.album-meta{color:var(--muted);flex-wrap:wrap;align-items:center;gap:8px 14px;margin-top:6px;font-size:13px;display:flex}.album-meta .sharing-badge{font-size:13px}.album-description{max-width:60ch;color:var(--muted);overflow-wrap:anywhere;margin:8px 0 0;font-size:14px;line-height:1.5}.album-actions{flex-wrap:wrap;align-items:center;gap:8px;min-width:0;display:flex}.album-actions .button{min-height:44px;padding:10px 14px;font-size:14px}.album-actions .round{width:44px;padding:0}.album-header .album-brand{margin:0;padding:0;font-size:13px}.album-header .album-brand img{max-width:100px;max-height:32px}.album-header .album-watermark{display:none}.album-slideshow{margin-left:auto;display:none}.album-slideshow span{display:none}.gallery-controls{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin:12px 0 16px;display:flex}.gallery-controls:empty{display:none}.gallery-controls .toolbar{justify-content:flex-end;gap:8px;margin:0 0 0 auto}.gallery-controls .button,.gallery-controls .pill{min-height:44px;padding:9px 14px;font-size:13px}.selection-entry{display:flex}.group-heading{justify-content:flex-start;gap:10px;margin-bottom:12px;font-size:12px;line-height:1.5}.group-heading:before{display:none}.group-heading span{overflow-wrap:anywhere;min-width:0}.media-open{text-align:left;border-radius:inherit;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;background:0 0;border:0;width:100%;padding:0;display:block}.media-open:disabled{opacity:1}.media-open:focus-visible{outline:3px solid var(--accent);outline-offset:-3px}.media-tile:focus-within{box-shadow:var(--shadow-lift)}.tile-select{z-index:2;background:0 0;border:0;border-radius:50%;place-items:center;width:44px;height:44px;padding:0;display:grid;position:absolute;top:2px;left:2px}.tile-select .selection-check{color:#fff;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0000008c;width:24px;height:24px;position:static}.media-selected .tile-select .selection-check{background:var(--accent);color:var(--on-accent)}.tile-select:focus-visible{outline-offset:-4px;background:#00000040}.tile-select:hover .selection-check{border-color:var(--accent)}@media (hover:hover) and (pointer:fine){.tile-select{opacity:0;pointer-events:none;transition:opacity .15s}.media-tile:hover .tile-select,.media-tile:focus-within .tile-select,.media-tile.selection-mode .tile-select{opacity:1;pointer-events:auto}}@media (width>=600px){.album-header{padding-top:16px}.album-heading-cover{width:64px;height:72px}.album-slideshow{margin-left:0;display:inline-flex}.album-slideshow span{display:inline}}@media (width>=900px){.album-header{grid-template-columns:minmax(0,1fr) auto;column-gap:24px;padding-bottom:20px}.album-breadcrumb,.album-header .album-brand{grid-column:1/-1}.album-actions{justify-content:flex-end}.album-actions .button{padding:10px 16px}.album-actions .round{padding:0}}@media (prefers-reduced-motion:reduce){.media-tile,.media-tile img,.media-tile video,.tile-select{transition:none;animation:none}.media-tile:hover,.media-tile:hover img,.media-tile:hover video{transform:none}}.hero{padding:24px 8px 20px}.hero h1{font-size:clamp(32px,7vw,48px)}.hero-actions{margin-top:16px}@media (width>=600px){.hero{padding:28px 16px 24px}}@media (width<=359px){.album-actions .button{padding:10px 12px;font-size:13px}.album-actions .round{padding:0}.album-heading-cover{width:48px;height:56px}.gallery-controls .toolbar{flex:auto}}.bottom-nav{justify-content:space-between;width:min(380px,100% - 24px)}.bottom-nav .nav-item{flex-direction:column;flex:1;gap:3px;min-width:0;height:52px;padding:4px 8px;font-size:11px}.bottom-nav .nav-item:first-child{order:0}.bottom-nav .nav-item:last-of-type{order:1}.bottom-nav .nav-item[href=\/sharing]{order:2}.bottom-nav .fab{flex-shrink:0;order:3;width:48px;height:48px}.dialog .field,.dialog fieldset{min-width:0}.dialog input,.dialog select,.dialog textarea{max-width:100%}.share-link-row strong{overflow-wrap:anywhere;min-width:0}.dialog-actions .button{white-space:normal}@media (width>=900px) and (width<=1100px){.topbar-inner{gap:8px}.tabs .nav-item{min-width:0;padding:0 12px}.topbar.searching .topbar-inner{grid-template-columns:auto auto minmax(0,1fr)}.topbar.searching .brand>span:last-child{display:none}.topbar.searching{overflow:visible}}.cover-badge{z-index:1;color:#fff;-webkit-backdrop-filter:blur(6px);pointer-events:none;background:#0000008c;border-radius:999px;align-items:center;gap:4px;padding:3px 8px;font-size:11px;font-weight:700;display:inline-flex;position:absolute;bottom:8px;left:8px}.icon-button.is-cover:disabled{color:#f5c542;opacity:1}@media (width<=429px){.viewer-toolbar{flex-wrap:wrap;row-gap:0}.viewer-actions{order:1;margin-left:auto}.viewer-title{text-align:left;flex-basis:100%;order:2;padding:0 8px}.viewer-title span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}}@media (width<=359px){.viewer-toolbar{gap:2px;padding-left:4px;padding-right:4px}.viewer-toolbar .icon-button{width:40px;height:40px}}.selection-bar{left:8px;right:8px;bottom:calc(8px + env(safe-area-inset-bottom));z-index:25;border:1px solid var(--border);background:color-mix(in srgb, var(--surface) 94%, transparent);-webkit-backdrop-filter:saturate(1.6)blur(18px);box-shadow:var(--shadow-lift);animation:sheet-up .3s var(--ease);border-radius:22px;padding:6px 8px 8px;position:fixed}.selection-bar-head{align-items:center;gap:4px;display:flex}.selection-count{flex:1;min-width:0;line-height:1.25}.selection-count strong{font-size:15px;display:block}.selection-count span{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:12px;display:block;overflow:hidden}.selection-all{min-height:44px;color:var(--accent);background:0 0;border:0;border-radius:999px;padding:0 12px;font-size:14px;font-weight:600}.selection-all:hover{background:var(--accent-soft)}.selection-actions{gap:4px;margin-top:4px;display:flex}.selection-action{min-width:0;min-height:58px;color:var(--text);transition:background .15s, transform .15s var(--ease);background:0 0;border:0;border-radius:14px;flex-direction:column;flex:1 1 0;justify-content:center;align-items:center;gap:4px;padding:6px 4px;font-size:12px;font-weight:600;display:flex}.selection-action span{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.selection-action:hover:not(:disabled){background:var(--surface-2)}.selection-action:active:not(:disabled){transform:scale(.95)}.selection-action:disabled{opacity:.38}.selection-action.primary-action:not(:disabled){background:var(--accent);color:var(--on-accent)}.selection-action.primary-action:hover:not(:disabled){background:var(--accent-hover)}body:has(.selection-bar) .bottom-nav{display:none}main:has(.selection-bar){padding-bottom:calc(180px + env(safe-area-inset-bottom))}@media (width>=720px){.selection-bar{border-radius:999px;align-items:center;gap:12px;width:min(760px,100% - 48px);padding:8px 8px 8px 6px;animation:.25s fade;display:flex;bottom:24px;left:50%;right:auto;transform:translate(-50%)}.selection-bar-head{flex:1;min-width:0}.selection-actions{flex:none;margin:0}.selection-action{border-radius:999px;flex-direction:row;gap:8px;min-height:44px;padding:0 14px;font-size:14px}main:has(.selection-bar){padding-bottom:120px}}@media (prefers-reduced-motion:reduce){.selection-bar{animation:none}}.scroll-hints{--hint-bg:var(--surface);--hint-fg:var(--text);--hint-line:var(--border);flex:none;min-width:0;position:relative}.scroll-hints>:first-child{scrollbar-width:none}.scroll-hints>:first-child::-webkit-scrollbar{display:none}.scroll-hints>.fade-end{-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 44px),#0000);mask-image:linear-gradient(90deg,#000 calc(100% - 44px),#0000)}.scroll-hints>.fade-start{-webkit-mask-image:linear-gradient(270deg,#000 calc(100% - 44px),#0000);mask-image:linear-gradient(270deg,#000 calc(100% - 44px),#0000)}.scroll-hints>.fade-start.fade-end{-webkit-mask-image:linear-gradient(90deg,#0000,#000 44px calc(100% - 44px),#0000);mask-image:linear-gradient(90deg,#0000,#000 44px calc(100% - 44px),#0000)}.scroll-hint{z-index:2;border:1px solid var(--hint-line);background:var(--hint-bg);width:28px;height:28px;color:var(--hint-fg);border-radius:50%;place-items:center;padding:0;transition:opacity .2s;display:grid;position:absolute;top:50%;transform:translateY(-50%);box-shadow:0 2px 8px #00000059}.scroll-hint.start{left:2px}.scroll-hint.end{right:2px}.scroll-hint:disabled{opacity:.3;box-shadow:none}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.pill.active{color:var(--accent);border-color:var(--accent)}.sort-select select{border:1px solid var(--border);max-width:160px;min-height:44px;color:var(--text);background:var(--surface);font:inherit;border-radius:999px;padding:8px 12px;font-size:13px}.selection-actions{padding-bottom:4px;overflow-x:auto}.selection-actions .selection-action{flex:none;min-width:62px}.selection-bar>.scroll-hints{width:100%}@media (width>=720px){.selection-bar>.scroll-hints{flex:65%;width:auto;min-width:0}.selection-bar .selection-bar-head{flex:0 0 230px}}.operation-progress progress{width:100%}.operation-error{color:var(--danger);overflow-wrap:anywhere}.operation-list,.order-list,.trash-list{margin:20px 0;padding:0;list-style:none}.operation-list{max-height:40vh;overflow-y:auto}.operation-list li{border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;gap:6px 16px;padding:12px 0;display:flex}.operation-list strong{overflow-wrap:anywhere}.operation-list span{color:var(--muted);font-size:13px}.operation-list .operation-error{color:var(--danger)}.order-list{max-height:55vh;overflow-y:auto}.order-list li{border-bottom:1px solid var(--border);align-items:center;gap:8px;padding:10px 0;display:flex}.order-list li>span:not(.order-thumb){flex:1;min-width:0}.order-list strong{overflow-wrap:anywhere;font-size:13px;display:block}.order-list small{color:var(--muted)}.order-thumb{object-fit:cover;background:var(--surface-2);border-radius:8px;flex-shrink:0;place-items:center;width:44px;height:44px;display:grid}.trash-list li{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:12px;padding:18px 0;display:flex}.trash-list li>div{flex:180px;min-width:0}.trash-list strong,.trash-list span{overflow-wrap:anywhere;display:block}.trash-list span{color:var(--muted);margin-top:5px;font-size:13px}.trash-list .trash-preview{background:var(--border);border-radius:8px;flex:0 0 64px;justify-content:center;align-items:center;width:64px;height:64px;margin:0;display:flex;overflow:hidden}.trash-preview img{object-fit:cover;width:100%;height:100%}.viewer-mobile-menu{display:none}.viewer-details{overscroll-behavior:contain;max-height:calc(100dvh - 80px);overflow-y:auto}.viewer-details dd{min-width:0}.menu-popover{overscroll-behavior:contain;max-width:calc(100vw - 24px);max-height:min(480px,70dvh);overflow-y:auto}@media (width<=599px){.gallery-controls .toolbar{flex:100%;justify-content:flex-start;margin:0}.dialog{inset:auto 0 max(0px, calc(100dvh - var(--dialog-viewport-height,100dvh) - var(--dialog-viewport-top,0px)));position:fixed}.viewer-toolbar{padding-left:max(8px, env(safe-area-inset-left));padding-right:max(8px, env(safe-area-inset-right));flex-wrap:nowrap;gap:6px}.viewer-title{text-align:left;flex:1;order:0;padding:0}.viewer-actions{flex-shrink:0;order:0;margin-left:0}.viewer-actions .viewer-secondary-action{display:none}.viewer-mobile-menu{display:block}.viewer-toolbar .icon-button{width:44px;height:44px}.viewer-mobile-menu .menu-popover{--surface:#1d1c1b;--surface-2:#33312e;--text:#f3f1ec;--muted:#a7a299;--border:#44413c;--accent:#8fa3ff;--danger:#ef6b67}.share-link-row>strong,.share-link-row>span{flex-basis:100%}.share-link-row>.button,.share-link-row>.pill{flex:auto;justify-content:center}.share-link-row summary{min-height:44px;padding:12px 0}.link-box input{font-size:16px}.expiry-summary{text-align:center;flex-wrap:wrap}.notice{flex-wrap:wrap}.notice>span{flex:180px}.read-only{padding:6px 8px;font-size:12px}.toast{bottom:calc(104px + env(safe-area-inset-bottom))}body:has(.selection-bar) .toast{bottom:calc(142px + env(safe-area-inset-bottom))}}@media (pointer:coarse){.icon-button.small,.toast .icon-button{width:44px;height:44px}.pill,.chip,.back,.segmented button,.notice button{min-height:44px}.scroll-hint{width:44px;height:44px}.scroll-hints.has-overflow{padding-inline:44px}.scroll-hints>.fade-end{-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 52px),#0000);mask-image:linear-gradient(90deg,#000 calc(100% - 52px),#0000)}.scroll-hints>.fade-start{-webkit-mask-image:linear-gradient(270deg,#000 calc(100% - 52px),#0000);mask-image:linear-gradient(270deg,#000 calc(100% - 52px),#0000)}.scroll-hints>.fade-start.fade-end{-webkit-mask-image:linear-gradient(90deg,#0000,#000 52px calc(100% - 52px),#0000);mask-image:linear-gradient(90deg,#0000,#000 52px calc(100% - 52px),#0000)}.item-retry{width:44px;height:44px}.remove{background:radial-gradient(circle,#000000a6 13px,#0000 14px);width:44px;height:44px;top:0;right:0}.remove:after{display:none}.album-card:hover .album-cover,.album-card:hover .album-stack:before,.album-card:hover .album-stack:after{transform:none}}@media (height<=480px) and (width<=899px){.viewer-details{max-height:calc(100dvh - 64px)}.page{padding-left:max(12px, env(safe-area-inset-left));padding-right:max(12px, env(safe-area-inset-right))}.viewer-toolbar{padding-left:max(8px, env(safe-area-inset-left));padding-right:max(8px, env(safe-area-inset-right))}.selection-bar{bottom:calc(8px + env(safe-area-inset-bottom))}}@media (width<=429px){.viewer-toolbar{flex-wrap:wrap}.viewer-title{flex-basis:100%;order:2;padding:0 8px}.viewer-actions{margin-left:auto}}@media (pointer:coarse){.broken-delete{min-height:44px}}.share-settings-fields{border:0;min-width:0;margin:0;padding:0}.share-view-toggle{background:var(--bg);border-radius:999px;gap:8px;margin:0 0 20px;padding:4px;display:flex}.share-view-toggle .chip{flex:1;justify-content:center}.share-history-group{margin:18px 0 24px}.share-history-group h3{margin:0 0 6px;font-size:16px}.share-link-row>.share-link-status{color:var(--success);grid-column:1/-1;font-size:13px;font-weight:650;line-height:1.5;display:block}.share-link-row>.share-link-status.inactive{color:var(--muted)}.share-create{margin-bottom:20px}.share-create h3{margin:0 0 12px;font-size:16px}.share-create .field-label{margin-top:0}.share-loading{color:var(--muted);align-items:center;gap:8px;font-size:14px;display:flex}.share-link-row{border:0;border-bottom:1px solid var(--border);background:0 0;border-radius:0;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:8px;padding:14px 0;display:grid}.share-link-row:last-child{border-bottom:0}.share-link-url{border:1px solid var(--border);background:var(--bg);border-radius:12px;grid-column:1/-1;align-items:center;min-width:0;padding:4px;display:flex}.share-link-address{background:0 0;border:0;flex:1;width:100%;min-width:0;min-height:44px;padding:10px 8px;font-size:16px}.share-link-address:focus-visible{outline-offset:-2px;border-radius:8px}.share-copy{width:44px;height:44px;color:var(--accent);background:0 0;border:0;border-radius:8px;flex-shrink:0;place-items:center;padding:0;display:grid}.share-copy:hover:not(:disabled){background:var(--accent-soft)}.share-copy[aria-label=Link\ copied]{color:var(--success)}.share-link-row>.share-revoke{min-height:44px;color:var(--danger);justify-self:start;padding:10px 12px;font-size:14px}.share-settings{justify-self:end;min-width:0;font-size:14px}.share-settings summary{border:1px solid var(--border);background:var(--surface);min-height:44px;color:var(--accent);cursor:pointer;border-radius:999px;align-items:center;gap:8px;padding:10px 12px;font-weight:600;list-style:none;display:inline-flex}.share-settings summary::-webkit-details-marker{display:none}.share-settings summary:hover{background:var(--accent-soft)}.share-settings summary:focus-visible{outline:3px solid var(--accent);outline-offset:3px}.share-settings summary svg{flex-shrink:0}.share-settings[open]{grid-column:1/-1;justify-self:stretch}.share-settings[open]>summary{float:right}.share-settings[open]>form{clear:both;padding-top:4px}.share-settings .notice{margin:12px 0}.share-create .duration-field label{flex-direction:column;gap:8px;font-size:14px;font-weight:600;display:flex}.share-create .duration-field label:last-child{min-width:0}.share-create .duration-field input,.share-create .duration-field select{font-weight:400}.share-footer{justify-content:space-between}.album-sharing>a{overflow-wrap:anywhere;min-width:0;font-weight:600}@media (width>=600px){.share-footer>.button:last-child{margin-left:auto}}@media (width<=599px){.album-sharing{border:1px solid var(--border);background:var(--surface);border-radius:16px;padding:14px}.album-sharing>a{flex-basis:100%}.album-sharing>.button{width:100%;margin-left:0}}.share-expiry-row{grid-template-columns:minmax(0,1fr) minmax(112px,.8fr);gap:8px;margin:12px 0 16px;display:grid}.share-expiry-time{border:0;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;min-width:0;margin:0;padding:0;display:grid}.share-expiry-time legend{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}.share-expiry-row .field{min-width:0;margin:0}.share-expiry-row input,.share-expiry-row select{min-width:0;min-height:44px;padding:10px 6px}.share-expiry-row input::-webkit-date-and-time-value{text-align:left;min-width:0}
