:root{--bg: #121212;--surface: #1e1e1e;--surface-2: #2a2a2a;--text: #e8e8e8;--text-muted: #9aa0a6;--accent: #4285f4;--accent-hover: #5a95f5;--error: #f28b82;--radius: 10px;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text)}button{font:inherit;cursor:pointer}.muted{color:var(--text-muted)}.error{color:var(--error)}.page{display:flex;flex-direction:column;min-height:100%}.app-header{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;background:var(--surface);border-bottom:1px solid var(--surface-2);position:sticky;top:0;z-index:10}.app-header-spacer{flex:1}.ghost-button{background:transparent;color:var(--text);border:1px solid var(--surface-2);border-radius:var(--radius);padding:.4rem .9rem}.ghost-button:hover{background:var(--surface-2)}.page-content{flex:1;padding:1rem}.gallery-toolbar{display:flex;align-items:center;gap:.5rem}.toolbar-info{color:var(--text-muted);font-size:.9rem}.primary-button{background:var(--accent);color:#fff;border:none;border-radius:var(--radius);padding:.4rem 1rem}.primary-button:hover:not(:disabled){background:var(--accent-hover)}.primary-button:disabled,.ghost-button:disabled{opacity:.5;cursor:default}.breadcrumbs{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem;padding:.6rem 1rem;font-size:.9rem}.crumb{color:var(--accent);text-decoration:none}.crumb:hover{text-decoration:underline}.crumb--current{color:var(--text);font-weight:600}.crumb-sep{color:var(--text-muted)}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(var(--card-min, 160px),1fr));gap:.75rem}.card{display:flex;flex-direction:column;gap:.4rem;padding:0;border:none;background:transparent;color:inherit;text-align:center;overflow:hidden;width:100%}.card-wrap{position:relative}.card-wrap--selected .card-media{outline:3px solid var(--accent);outline-offset:-1px}.select-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;border:none;padding:.4rem;display:flex;align-items:flex-start;justify-content:flex-end;cursor:pointer}.select-check{width:1.4rem;height:1.4rem;border-radius:50%;border:2px solid #fff;background:#00000073;color:#fff;display:flex;align-items:center;justify-content:center;font-size:.85rem;line-height:1}.select-check--on{background:var(--accent);border-color:var(--accent)}button.card{transition:transform .12s ease}button.card:hover .card-media{outline:2px solid var(--accent)}button.card:active{transform:scale(.985)}.card-media{position:relative;aspect-ratio:1 / 1;border-radius:var(--radius);overflow:hidden;background:var(--surface);display:flex;align-items:center;justify-content:center}.card--folder .card-media{background:color-mix(in srgb,var(--accent) 18%,var(--surface))}.card-icon{width:44%;height:44%;color:var(--text-muted)}.card--folder .card-icon{color:var(--accent)}.card-name{font-size:.8rem;line-height:1.2;max-height:2.4em;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;word-break:break-word}.card--folder .card-name{font-weight:600}.thumb{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.thumb-img{width:100%;height:100%;object-fit:cover;display:block}.thumb--icon{background:var(--surface)}.thumb--loading{background:linear-gradient(90deg,var(--surface) 25%,var(--surface-2) 37%,var(--surface) 63%);background-size:400% 100%;animation:shimmer 1.4s ease infinite}.thumb-icon{width:44%;height:44%;color:var(--text-muted)}.play-badge{position:absolute;width:30%;height:30%;color:#fff;filter:drop-shadow(0 1px 3px rgba(0,0,0,.6));pointer-events:none}.card--skeleton{aspect-ratio:1 / 1;border-radius:var(--radius);background:linear-gradient(90deg,var(--surface) 25%,var(--surface-2) 37%,var(--surface) 63%);background-size:400% 100%;animation:shimmer 1.4s ease infinite}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.state{padding:2rem 1rem;text-align:center;color:var(--text-muted)}.state--error{color:var(--text)}.state-detail{color:var(--text-muted);font-size:.85rem;word-break:break-word}.state--full{display:flex;align-items:center;justify-content:center;height:100%}.state button{margin-top:.75rem;background:var(--accent);color:#fff;border:none;border-radius:var(--radius);padding:.5rem 1.2rem}.state button:hover{background:var(--accent-hover)}.viewer{position:fixed;top:0;right:0;bottom:0;left:0;background:#000;display:flex;flex-direction:column;z-index:200;animation:viewer-in .18s ease}@keyframes viewer-in{0%{opacity:0;transform:scale(.985)}to{opacity:1;transform:scale(1)}}.viewer--message{align-items:center;justify-content:center;color:var(--text);gap:.75rem;text-align:center}.viewer--message button{background:var(--surface-2);color:var(--text);border:none;border-radius:var(--radius);padding:.5rem 1.2rem}.viewer-chrome{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;background:linear-gradient(#0000008c,#0000);color:#fff;z-index:2}.viewer-close{background:#0006;color:#fff;border:none;border-radius:50%;width:2rem;height:2rem;font-size:1rem;line-height:1}.viewer-title{flex:1;min-width:0;font-size:.95rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.viewer-action{background:#0006;color:#fff;border:none;border-radius:50%;width:2rem;height:2rem;font-size:1rem;line-height:1}.viewer-action:hover{background:#000000a6}.viewer-stagearea{position:relative;flex:1;overflow:hidden;touch-action:none}.viewer-track{display:flex;width:100%;height:100%;will-change:transform}.viewer-slot{flex:0 0 100%;height:100%;display:flex;align-items:center;justify-content:center;position:relative}.viewer-media{width:100%;height:100%;object-fit:contain;-webkit-user-select:none;user-select:none}.image-stage{width:100%;height:100%;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden}.image-stage--zoomed{cursor:grab}.image-stage .viewer-media{position:absolute;top:0;right:0;bottom:0;left:0;transition:opacity .35s ease}.slide-preview{width:100%;height:100%;display:flex;align-items:center;justify-content:center;position:relative}.video-poster{position:relative;display:flex;align-items:center;justify-content:center;width:100%;height:100%}.video-play{position:absolute;background:none;border:none;color:#fff;width:22%;height:22%;display:flex;align-items:center;justify-content:center}.play-badge--lg{position:static;width:100%;height:100%}.viewer-nav{position:absolute;top:50%;transform:translateY(-50%);background:#0006;color:#fff;border:none;border-radius:50%;width:2.75rem;height:2.75rem;font-size:1.6rem;line-height:1;z-index:2}.viewer-nav:hover{background:#000000a6}.viewer-nav--left{left:.75rem}.viewer-nav--right{right:.75rem}.viewer-message{color:#fff;text-align:center;padding:1rem}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;display:flex;align-items:center;justify-content:center;padding:1rem;z-index:100}.modal{background:var(--surface);border-radius:14px;padding:1.25rem 1.5rem 1.5rem;width:100%;max-width:420px;box-shadow:0 10px 40px #00000080}.modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem}.modal-header h2{margin:0;font-size:1.15rem}.setting{display:flex;flex-direction:column;gap:.5rem;padding:.85rem 0;border-top:1px solid var(--surface-2)}.setting-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;cursor:pointer}.setting-label{font-weight:500}.setting-hint{font-size:.8rem;color:var(--text-muted)}.segmented{display:inline-flex;border:1px solid var(--surface-2);border-radius:var(--radius);overflow:hidden;align-self:flex-start}.segment{background:transparent;color:var(--text);border:none;padding:.45rem 1rem}.segment+.segment{border-left:1px solid var(--surface-2)}.segment--active{background:var(--accent);color:#fff}.modal-actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:1rem}.progress{height:.5rem;background:var(--surface-2);border-radius:999px;overflow:hidden;margin-top:.75rem}.progress-bar{height:100%;background:var(--accent);transition:width .2s ease}.setting select{background:var(--surface-2);color:var(--text);border:1px solid var(--surface-2);border-radius:var(--radius);padding:.35rem .6rem;font:inherit}.login{display:flex;align-items:center;justify-content:center;height:100%;padding:1rem}.login-card{background:var(--surface);border-radius:14px;padding:2rem 2.5rem;text-align:center;max-width:420px;width:100%}.login-card button{background:var(--accent);color:#fff;border:none;border-radius:var(--radius);padding:.6rem 1.4rem;font-size:1rem}.login-card button:hover:not(:disabled){background:var(--accent-hover)}.login-card button:disabled{opacity:.6;cursor:default}
