:root{--bg:#fff;--bg-soft:#f4f5f7;--card:#fff;--text:#16181d;--muted:#6b7280;--border:#e3e5e8;--accent:#2f6fed;--accent-text:#fff;--danger:#d93a3a;--ok:#1a8f52;--tile:#eceef1;--shadow:0 1px 2px #0000000d, 0 4px 16px #0000000f;--radius:12px;--font:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0f1012;--bg-soft:#17191c;--card:#1a1c20;--text:#eceef1;--muted:#9aa1ac;--border:#2a2d33;--accent:#5b8ff5;--tile:#202328;--shadow:0 1px 2px #0006;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:#0f1012;--bg-soft:#17191c;--card:#1a1c20;--text:#eceef1;--muted:#9aa1ac;--border:#2a2d33;--accent:#5b8ff5;--tile:#202328;--shadow:0 1px 2px #0006;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html,body{background:var(--bg);color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;margin:0;font-size:15px;line-height:1.5}h1,h2,h3{letter-spacing:-.01em;margin:0;line-height:1.2}h1{font-size:1.75rem;font-weight:650}h2{font-size:1.1rem;font-weight:600}a{color:var(--accent);text-decoration:none}code{background:var(--bg-soft);word-break:break-all;border-radius:5px;padding:.1em .35em;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85em}input,textarea{width:100%;font:inherit;color:inherit;background:var(--bg);border:1px solid var(--border);border-radius:8px;outline:none;padding:.6rem .75rem}input:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 20%, transparent)}label{flex-direction:column;gap:.35rem;font-size:.9rem;font-weight:500;display:flex}label.checkbox{flex-direction:row;align-items:center;gap:.5rem;font-weight:400}label.checkbox input{width:auto}.muted{color:var(--muted)}.small{font-size:.85rem}.muted-inline{opacity:.7;margin-left:.25rem;font-weight:400}.center{text-align:center;margin:1.5rem auto}.error-text{color:var(--danger);margin:0}.stack{flex-direction:column;gap:1rem;display:flex}.row-between{justify-content:space-between;align-items:center;gap:1rem;display:flex}.btn{font:inherit;color:var(--text);background:var(--card);border:1px solid var(--border);cursor:pointer;white-space:nowrap;border-radius:999px;justify-content:center;align-items:center;gap:.4rem;padding:.5rem 1rem;font-size:.9rem;font-weight:550;transition:background .15s,border-color .15s;display:inline-flex}.btn:hover:not(:disabled){background:var(--bg-soft)}.btn:disabled{opacity:.55;cursor:default}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.btn.primary:hover:not(:disabled){background:color-mix(in srgb, var(--accent) 88%, black)}.btn.danger{color:var(--danger)}.btn.small{padding:.3rem .75rem;font-size:.82rem}.icon-btn{width:38px;height:38px;color:var(--text);cursor:pointer;background:0 0;border:none;border-radius:999px;justify-content:center;align-items:center;display:inline-flex}.icon-btn:hover{background:var(--bg-soft)}.icon-btn.light{color:#fff}.icon-btn.light:hover{background:#ffffff26}.pill{background:var(--bg-soft);color:var(--muted);border-radius:999px;align-items:center;gap:.25rem;padding:.1rem .55rem;font-size:.75rem;font-weight:600;display:inline-flex}.pill.ok{background:color-mix(in srgb, var(--ok) 15%, transparent);color:var(--ok)}.pill.off{background:color-mix(in srgb, var(--danger) 12%, transparent);color:var(--danger)}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.spinner{border:3px solid color-mix(in srgb, var(--muted) 30%, transparent);border-top-color:var(--accent);border-radius:50%;width:26px;height:26px;animation:.8s linear infinite spin}.spin{animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.center-screen{place-items:center;min-height:100dvh;padding:1rem;display:grid}.notice{text-align:center;flex-direction:column;align-items:center;gap:.75rem;max-width:420px;display:flex}.auth-card{flex-direction:column;gap:.9rem;width:min(380px,100%);padding:2rem;display:flex}.auth-card h1{font-size:1.4rem}.auth-card p{margin:0}.auth-icon{background:var(--bg-soft);width:52px;height:52px;color:var(--accent);border-radius:50%;place-items:center;display:grid}.topbar{z-index:10;background:color-mix(in srgb, var(--bg) 85%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:.6rem 1.25rem;display:flex;position:sticky;top:0}.brand{color:var(--text);align-items:center;gap:.5rem;font-weight:650;display:flex}.toolbar{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.toolbar.secondary{margin:-.5rem 0 1.25rem}.page{max-width:1400px;min-height:calc(100dvh - 60px);margin:0 auto;padding:1.5rem 1.25rem 4rem}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1.5rem;display:flex}.page-head p{margin:.35rem 0 0}.album-desc{white-space:pre-line;max-width:60ch}.back-link{color:var(--muted);align-items:center;gap:.3rem;margin-bottom:.75rem;font-size:.85rem;display:inline-flex}.scan{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.scan-status{text-overflow:ellipsis;white-space:nowrap;max-width:420px;overflow:hidden}.empty{text-align:center;color:var(--muted);flex-direction:column;align-items:center;gap:.5rem;padding:3rem 1.5rem;display:flex}.empty p{margin:0}.dropzone{border:2px dashed var(--border);box-shadow:none;cursor:pointer}.album-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1.25rem;display:grid}.album-card{flex-direction:column;display:flex;overflow:hidden}.album-cover{aspect-ratio:4/3;background:var(--tile);color:var(--muted);place-items:center;display:grid;overflow:hidden}.album-cover img{object-fit:cover;width:100%;height:100%;transition:transform .3s}.album-card:hover .album-cover img{transform:scale(1.03)}.album-body{flex-direction:column;gap:.3rem;padding:.9rem 1rem 1rem;display:flex}.album-body p{margin:0}.album-actions{flex-wrap:wrap;gap:.4rem;margin-top:.5rem;display:flex}.admin-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:6px;display:grid}.admin-tile{aspect-ratio:1;background:var(--tile);border-radius:8px;position:relative;overflow:hidden}.admin-tile.drop-target{outline:3px solid var(--accent);outline-offset:-3px}.admin-thumb{all:unset;cursor:pointer;width:100%;height:100%;display:block}.admin-thumb img{object-fit:cover;width:100%;height:100%;display:block}.tile-actions{opacity:0;gap:2px;transition:opacity .15s;display:flex;position:absolute;top:4px;right:4px}.tile-actions .icon-btn{background:#00000073;width:30px;height:30px}.admin-tile:hover .tile-actions,.admin-tile:focus-within .tile-actions{opacity:1}@media (hover:none){.tile-actions{opacity:1}}.cover-badge{background:var(--accent);color:#fff;border-radius:999px;padding:.1rem .45rem;font-size:.7rem;font-weight:700;position:absolute;top:6px;left:6px}.upload-queue{margin-bottom:1.25rem;padding:1rem}.upload-queue ul{flex-direction:column;gap:.4rem;max-height:260px;margin:.75rem 0 0;padding:0;list-style:none;display:flex;overflow:auto}.upload-item{grid-template-columns:minmax(0,1fr) 70px 120px 180px;align-items:center;gap:.75rem;display:grid}.upload-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.upload-status{color:var(--muted)}.upload-item.error .upload-status{color:var(--danger)}.upload-item.done .upload-status{color:var(--ok)}.progress{background:var(--bg-soft);border-radius:999px;height:6px;overflow:hidden}.progress>div{background:var(--accent);height:100%;transition:width .2s}.upload-item.done .progress>div,.upload-item.processing .progress>div{background:var(--ok)}.upload-item.error .progress>div{background:var(--danger)}.drop-overlay{z-index:50;pointer-events:none;color:var(--accent);background:color-mix(in srgb, var(--bg) 80%, transparent);border:3px dashed var(--accent);flex-direction:column;justify-content:center;align-items:center;gap:.75rem;font-size:1.2rem;font-weight:600;display:flex;position:fixed;inset:0}.modal-backdrop{z-index:60;background:#00000073;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.modal{flex-direction:column;gap:1rem;width:min(620px,100%);max-height:calc(100dvh - 2rem);padding:1.25rem 1.5rem 1.5rem;display:flex;overflow:auto}.modal-head{justify-content:space-between;align-items:center;display:flex}.form-row{grid-template-columns:1fr 1fr;gap:.75rem;margin-bottom:.75rem;display:grid}.share-create p{margin:0 0 .75rem}.share-list{flex-direction:column;gap:.75rem;display:flex}.share-item{border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:.5rem;padding:.75rem;display:flex}.share-item.inactive{opacity:.65}.share-url{align-items:center;gap:.4rem;display:flex}.share-url code{flex:1;min-width:0}.share-meta,.share-actions{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}.public-hero{background:var(--bg-soft);flex-direction:column;justify-content:flex-end;min-height:300px;padding:1.5rem clamp(1rem,4vw,3rem) 2rem;display:flex;position:relative;overflow:hidden}.hero-bg{background-position:50%;background-size:cover;position:absolute;inset:0}.hero-bg:after{content:"";background:linear-gradient(#00000026,#000000a6);position:absolute;inset:0}.public-hero:has(.hero-bg){color:#fff;min-height:min(52vh,480px)}.public-hero:has(.hero-bg) .icon-btn{color:#fff}.public-hero:has(.hero-bg) .icon-btn:hover{background:#ffffff26}.hero-top{z-index:1;position:absolute;top:.75rem;right:.75rem}.hero-content{z-index:1;flex-direction:column;align-items:flex-start;gap:.5rem;max-width:900px;display:flex;position:relative}.hero-content h1{letter-spacing:-.02em;font-size:clamp(2rem,5vw,3.2rem);font-weight:700}.hero-desc{white-space:pre-line;opacity:.95;margin:0;font-size:1.1rem}.hero-meta{opacity:.85;margin:0;font-size:.95rem}.hero-btn{margin-top:.5rem}.public-hero:has(.hero-bg) .hero-btn{color:#fff;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#ffffff2e;border-color:#ffffff59}.public-hero:has(.hero-bg) .hero-btn:hover{background:#ffffff47}.public-main{padding:4px clamp(4px,1vw,12px) 3rem}.jgrid-row{content-visibility:auto;gap:4px;margin-bottom:4px;display:flex}.jgrid-tile{all:unset;cursor:pointer;background:var(--tile);border-radius:3px;flex:none;position:relative;overflow:hidden}.jgrid-tile img{object-fit:cover;width:100%;height:100%;transition:transform .25s,filter .25s;display:block}.jgrid-tile:hover img{filter:brightness(.92)}.jgrid-tile:focus-visible{outline:3px solid var(--accent);outline-offset:-3px}.tile-placeholder{color:var(--muted);place-items:center;display:grid;position:absolute;inset:0}.video-badge{color:#fff;background:#0000008c;border-radius:999px;align-items:center;gap:3px;padding:.1rem .45rem;font-size:.72rem;font-weight:600;display:inline-flex;position:absolute;bottom:6px;right:6px}.lightbox{z-index:100;color:#fff;background:#000;flex-direction:column;display:flex;position:fixed;inset:0}.lightbox-bar{z-index:4;padding:.5rem .75rem;padding-top:max(.5rem, env(safe-area-inset-top));background:linear-gradient(#0009,#0000);justify-content:space-between;align-items:center;display:flex;position:absolute;top:0;left:0;right:0}.lightbox-count{opacity:.8;padding-left:.5rem;font-size:.85rem}.lightbox-actions{gap:.25rem;display:flex}.lightbox-stage{touch-action:pan-y pinch-zoom;flex:1;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.lightbox-media{object-fit:contain;-webkit-user-select:none;user-select:none;max-width:100%;max-height:100%}video.lightbox-media{background:#000;width:100%;height:100%}.lightbox-media.blur{filter:blur(8px);width:100%;height:100%}.lightbox-nav{color:#fff;cursor:pointer;background:#00000059;border:none;border-radius:50%;place-items:center;width:52px;height:52px;display:grid;position:absolute;top:50%;transform:translateY(-50%)}.lightbox-nav:hover{background:#0009}.lightbox-nav.left{left:12px}.lightbox-nav.right{right:12px}.lightbox-info{z-index:3;background:#141416f2;width:min(320px,90vw);padding:4rem 1.25rem 1.25rem;position:absolute;top:0;bottom:0;right:0;overflow:auto}.lightbox-info h3{word-break:break-all;margin-bottom:1rem;font-size:1rem}.lightbox-info dl{grid-template-columns:auto 1fr;gap:.4rem 1rem;margin:0;font-size:.88rem;display:grid}.lightbox-info dt{opacity:.6}.lightbox-info dd{margin:0}.lightbox-info a{color:#8fb3ff}@media (width<=640px){h1{font-size:1.4rem}.page{padding:1rem .75rem 3rem}.topbar{padding:.5rem .75rem}.hide-mobile{display:none}.admin-grid{grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:3px}.upload-item{grid-template-columns:minmax(0,1fr) auto}.upload-item .progress{grid-column:1/-1}.form-row{grid-template-columns:1fr}.lightbox-nav{display:none}.jgrid-row{gap:2px;margin-bottom:2px}}.private-badge{color:#fff;background:#000000a6;border-radius:999px;align-items:center;gap:3px;padding:.1rem .45rem;font-size:.7rem;font-weight:700;display:inline-flex;position:absolute;bottom:6px;left:6px}.admin-tile.is-private img{opacity:.55}.raw-badge{color:#fff;background:#e8590c;border-radius:999px;padding:.1rem .45rem;font-size:.7rem;font-weight:700;position:absolute;top:6px;left:6px}.admin-tile .cover-badge+.raw-badge{top:28px}.private-pill{color:#fff;background:#ffffff26;margin-left:.5rem}.raw360{justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:relative}.raw360 img{opacity:.45}.raw360-note{text-align:center;border-radius:var(--radius);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0009;flex-direction:column;align-items:center;gap:.5rem;padding:1.25rem 1.5rem;display:flex;position:absolute}.admin-grid.selecting .admin-thumb{cursor:default}.admin-tile.selected{outline:3px solid var(--accent);outline-offset:-3px}.admin-tile.selected img{border-radius:6px;transform:scale(.92)}.admin-thumb img{transition:transform .12s}.select-check{z-index:1;color:#fff;background:#0000004d;border:2px solid #fff;border-radius:50%;place-items:center;width:22px;height:22px;font-size:.8rem;font-weight:700;display:grid;position:absolute;top:6px;right:6px}.admin-tile.selected .select-check{background:var(--accent);border-color:var(--accent)}.selection-bar{z-index:20;flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:1rem;padding:.6rem .9rem;display:flex;position:sticky;bottom:1rem}.selection-spacer{flex:1}
