:root{--bg: #f6f7f9;--panel: #ffffff;--text: #1a1d21;--muted: #6b7280;--accent: #2563eb;--accent-soft: #eff4ff;--border: #e5e7eb;--danger: #dc2626;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}@media(prefers-color-scheme:dark){:root{--bg: #111418;--panel: #1a1f26;--text: #e7eaee;--muted: #9aa3af;--accent: #5b8def;--accent-soft: #1d2634;--border: #2a313b;--danger: #f87171}}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}button{font:inherit;color:inherit;background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:.45rem .9rem;cursor:pointer}button:hover{border-color:var(--accent)}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.ghost{border-color:transparent;background:transparent;color:var(--muted);padding:.3rem .5rem}button.ghost:hover{color:var(--accent)}button.danger:hover{border-color:var(--danger);color:var(--danger)}input{font:inherit;color:inherit;background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:.5rem .75rem}input:focus{outline:2px solid var(--accent);outline-offset:-1px}.login-page{min-height:100vh;display:grid;place-items:center}.login-card{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:2rem;width:min(22rem,90vw);display:flex;flex-direction:column;gap:.75rem}.login-card h1{margin:0 0 .5rem;font-size:1.4rem}.error-text{color:var(--danger);font-size:.875rem;margin:0}.shell{max-width:60rem;margin:0 auto;padding:1rem 1rem 4rem}.topbar{display:flex;align-items:center;gap:.75rem;padding:.75rem 0}.topbar .brand{font-weight:700;font-size:1.15rem;margin-right:auto}.toolbar{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin:.5rem 0 1rem}.breadcrumbs{display:flex;align-items:center;gap:.25rem;flex-wrap:wrap;margin-right:auto;font-size:.95rem}.breadcrumbs .sep{color:var(--muted)}.file-list{background:var(--panel);border:1px solid var(--border);border-radius:12px;overflow:hidden}.file-row{display:grid;grid-template-columns:1fr 6rem 11rem auto;gap:.75rem;align-items:center;padding:.55rem 1rem;border-bottom:1px solid var(--border)}.file-row:last-child{border-bottom:none}.file-row:hover{background:var(--accent-soft)}.file-name{display:flex;align-items:center;gap:.6rem;min-width:0}.file-name .label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.file-name .label:hover{color:var(--accent)}.file-meta{color:var(--muted);font-size:.85rem;text-align:right;white-space:nowrap}.row-actions{display:flex;gap:.15rem;visibility:hidden}.file-row:hover .row-actions{visibility:visible}.empty-state{padding:3rem 1rem;text-align:center;color:var(--muted)}.drop-hint{border:2px dashed var(--accent);border-radius:12px;background:var(--accent-soft)}.uploading{color:var(--muted);font-size:.875rem}.tabs{display:flex;gap:.25rem;margin-right:auto}.active-tab{color:var(--accent)!important;background:var(--accent-soft)!important;border-radius:8px}.view-title{margin:0 auto 0 0;font-size:1.1rem}.upload-panel{background:var(--panel);border:1px solid var(--border);border-radius:12px;margin-bottom:1rem;padding:.5rem 1rem}.upload-row{display:grid;grid-template-columns:1fr 10rem auto;gap:.75rem;align-items:center;padding:.35rem 0}.upload-info{display:flex;flex-direction:column;min-width:0}.upload-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.upload-detail{color:var(--muted);font-size:.8rem}.upload-row progress{width:100%;accent-color:var(--accent)}.dialog-backdrop{position:fixed;inset:0;background:#0006;display:grid;place-items:center;z-index:10}.dialog{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:1.5rem;width:min(26rem,92vw);display:flex;flex-direction:column;gap:.9rem}.dialog h2{margin:0;font-size:1.15rem;overflow:hidden;text-overflow:ellipsis}.dialog label{display:flex;flex-direction:column;gap:.3rem;font-size:.9rem}.dialog .hint{color:var(--muted)}.dialog-actions{display:flex;justify-content:flex-end;gap:.5rem}.share-link-row{display:flex;gap:.5rem;margin:0}.share-link-row input{flex:1;min-width:0}.photo-day{font-size:.95rem;color:var(--muted);margin:1.25rem 0 .5rem;font-weight:600}.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(9rem,1fr));gap:4px}.photo-cell{padding:0;border:none;border-radius:6px;overflow:hidden;aspect-ratio:1;cursor:pointer;background:var(--accent-soft)}.photo-cell{position:relative}.video-badge{position:absolute;right:6px;bottom:6px;background:#0000008c;color:#fff;border-radius:999px;width:1.5rem;height:1.5rem;display:grid;place-items:center;font-size:.7rem;pointer-events:none}.photo-cell img{width:100%;height:100%;object-fit:cover;display:block}.lightbox{position:fixed;inset:0;background:#000000e0;display:grid;grid-template-columns:auto 1fr auto;align-items:center;z-index:20}.lightbox figure{margin:0;display:flex;flex-direction:column;align-items:center;gap:.6rem;max-height:100vh;padding:1rem 0}.lightbox img{max-width:min(90vw,100%);max-height:80vh;object-fit:contain;border-radius:4px}.lightbox figcaption{color:#ddd;display:flex;gap:1rem;align-items:baseline;font-size:.85rem;flex-wrap:wrap;justify-content:center}.lightbox figcaption a{color:#9dc0ff}.lightbox-nav{background:transparent;border:none;color:#fff;font-size:2.5rem;padding:0 1.25rem;height:100%}.lightbox-nav:disabled{opacity:.25}.lightbox-close{position:absolute;top:.75rem;right:.75rem;background:transparent;border:none;color:#fff;font-size:1.5rem}@media(max-width:640px){.file-row{grid-template-columns:1fr auto}.file-row .file-meta{display:none}.row-actions{visibility:visible}}.guide{max-width:40rem;display:flex;flex-direction:column;gap:.5rem;margin:.75rem 0}.guide details{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:.6rem .9rem}.guide summary{cursor:pointer;font-weight:600}.guide p,.guide ol{color:var(--muted);font-size:.85rem;margin:.6rem 0 0}.guide li{margin-bottom:.25rem}.guide pre{background:var(--accent-soft);border:1px solid var(--border);border-radius:6px;padding:.6rem .75rem;margin:.6rem 0 0;overflow-x:auto;font-size:.8rem}.guide code,.upload-detail code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.95em;word-break:break-all}
