:root{--bg:#fff;--surface:#f6f8fc;--fg:#1f1f1f;--muted:#5f6368;--line:#e3e5e8;--accent:#0b57d0;--accent-bg:#d3e3fd;--hover:#edf0f5;--shadow:0 1px 3px rgba(60,64,67,.3),0 4px 8px 3px rgba(60,64,67,.15)}
@media(prefers-color-scheme:dark){:root{--bg:#131314;--surface:#1b1b1d;--fg:#e3e3e3;--muted:#9aa0a6;--line:#2c2d2f;--accent:#a8c7fa;--accent-bg:#0842a0;--hover:#262729;--shadow:0 1px 3px rgba(0,0,0,.6),0 4px 12px 3px rgba(0,0,0,.4)}}
*{box-sizing:border-box}
body{margin:0;font:14px/1.4 "Google Sans",Roboto,Inter,system-ui,-apple-system,sans-serif;background:var(--bg);color:var(--fg);display:flex;min-height:100vh;-webkit-font-smoothing:antialiased}
button{font:inherit;font-weight:500;cursor:pointer;border:0;border-radius:999px;padding:9px 18px;background:var(--hover);color:var(--fg);display:inline-flex;align-items:center;gap:8px;transition:background .15s,box-shadow .15s}
button:hover{filter:brightness(.97)}
button.primary{background:var(--accent);color:var(--bg);padding:10px 20px}button.primary:hover{box-shadow:var(--shadow)}
button.link{background:none;color:var(--accent);padding:6px 10px}
button.icon{background:none;font-size:18px;padding:8px 12px}
input{font:inherit;color:var(--fg);outline:0}
.logo{display:inline-block;width:26px;height:26px;border-radius:8px;background:conic-gradient(from 200deg,#4285f4,#34a853,#fbbc04,#ea4335,#4285f4);vertical-align:-6px;margin-right:10px}
.logo.big{width:44px;height:44px;border-radius:14px;margin:0 0 4px}
#side{width:256px;padding:12px 12px 16px;flex:none;position:sticky;top:0;height:100vh;overflow:auto;background:var(--bg)}
#side h1{font-size:22px;font-weight:500;margin:6px 12px 18px}
#nav a,#albumlist a{display:flex;align-items:center;gap:16px;padding:0 16px;height:44px;border-radius:999px;cursor:pointer;color:var(--fg)}
#nav a:hover,#albumlist a:hover{background:var(--hover)}
#nav a.on,#albumlist a.on{background:var(--accent-bg);color:var(--accent);font-weight:600}
#albumlist{margin:10px 0;border-top:1px solid var(--line);padding-top:10px}#albumlist a{height:38px;font-size:13px;color:var(--muted);padding-left:52px}
#side>.link{margin:12px 8px 0;color:var(--muted)}
main{flex:1;min-width:0}
header{display:flex;gap:16px;align-items:center;padding:10px 24px;position:sticky;top:0;background:var(--bg);z-index:5}
#menu{display:none}
.searchbox{flex:1;max-width:720px;display:flex;align-items:center;gap:12px;background:var(--surface);border-radius:999px;padding:0 20px;height:48px;color:var(--muted);transition:box-shadow .15s,background .15s}
.searchbox:focus-within{background:var(--bg);box-shadow:var(--shadow)}
#search{flex:1;border:0;background:none;height:100%}
#density{margin-left:auto}#size{accent-color:var(--accent);width:110px}
#content{padding:0 24px 80px}
h2{font-weight:400;font-size:28px;margin:20px 0 10px}
.day{margin:28px 0 10px;font-weight:500;font-size:14px;display:flex;align-items:baseline;gap:10px}.day span{color:var(--muted);font-size:12px;font-weight:400}
.grid{display:flex;flex-wrap:wrap;gap:4px}
.grid::after{content:"";flex-grow:1e9}
.item{position:relative;flex-grow:1;cursor:pointer;background:var(--hover);overflow:hidden;border-radius:6px}
.item i{display:block}
.item img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .15s}
.item::after{content:"";position:absolute;inset:0;background:linear-gradient(rgba(0,0,0,.35),transparent 40%);opacity:0;transition:opacity .15s;pointer-events:none}
.item:hover::after{opacity:1}
.item .chk{position:absolute;top:8px;left:8px;width:22px;height:22px;border-radius:50%;border:2px solid #fff;background:rgba(0,0,0,.2);opacity:0;color:#fff;text-align:center;line-height:18px;font-size:13px;z-index:2;transition:opacity .15s}
.item:hover .chk,body.selecting .chk{opacity:1}
.item.sel{background:var(--accent-bg)}.item.sel .chk{background:var(--accent);border-color:var(--accent);opacity:1;color:var(--bg)}.item.sel img{transform:scale(.84);border-radius:10px}
.item .tag{position:absolute;right:8px;bottom:6px;color:#fff;font-size:12px;text-shadow:0 0 4px rgba(0,0,0,.8);z-index:2}
.albums{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:20px;padding-top:20px}
.album{cursor:pointer}.album .cov{aspect-ratio:1;background:var(--hover);border-radius:14px;overflow:hidden;transition:box-shadow .15s}.album:hover .cov{box-shadow:var(--shadow)}.album img{width:100%;height:100%;object-fit:cover}
.album b{display:block;margin-top:8px;font-weight:500}.album span{color:var(--muted);font-size:12px}
.empty{color:var(--muted);text-align:center;padding:120px 0;font-size:16px}
.muted{color:var(--muted)}.err{color:#d93025;min-height:1.2em;font-size:13px}
#selbar{position:sticky;top:68px;z-index:6;background:var(--bg);box-shadow:var(--shadow);border-radius:999px;margin:0 24px;display:flex;gap:12px;align-items:center;padding:6px 8px 6px 20px;flex-wrap:wrap}
#selcount{font-weight:500}#selbar button{background:none;color:var(--accent)}#selbar button:hover{background:var(--hover)}#selbar .link{margin-left:auto;color:var(--muted)}
#selactions{display:flex;gap:2px;flex-wrap:wrap}
#progress{margin:8px 24px;padding:12px 18px;background:var(--surface);border-radius:12px}
#drop{position:fixed;inset:12px;background:rgba(11,87,208,.12);border:2px dashed var(--accent);border-radius:20px;display:flex;align-items:center;justify-content:center;font-size:26px;z-index:50;pointer-events:none;color:var(--accent)}
#viewer{position:fixed;inset:0;background:#000;z-index:40;display:flex;align-items:center;justify-content:center;color:#fff}
#viewer[hidden],[hidden]{display:none!important}
#vstage{width:100%;height:100%;display:flex;align-items:center;justify-content:center;padding:56px 72px}
#vstage img,#vstage video{max-width:100%;max-height:100%;border-radius:4px}
#vclose{position:absolute;top:8px;left:8px;color:#fff;z-index:2}
.nav{position:absolute;top:50%;transform:translateY(-50%);background:rgba(255,255,255,.12);color:#fff;font-size:26px;width:48px;height:48px;padding:0;justify-content:center;z-index:2}#vprev{left:12px}#vnext{right:12px}
#vbar{position:absolute;top:0;left:56px;right:0;display:flex;justify-content:space-between;align-items:center;padding:10px 16px;z-index:1}
#vname{opacity:.8}#vactions{display:flex;gap:6px}#vactions button{background:rgba(255,255,255,.14);color:#fff}
#toast{position:fixed;bottom:24px;left:24px;background:#2d2e30;color:#e3e3e3;padding:14px 22px;border-radius:8px;z-index:60;box-shadow:var(--shadow)}
dialog{border:0;border-radius:24px;background:var(--bg);color:var(--fg);min-width:320px;padding:24px;box-shadow:var(--shadow)}
dialog::backdrop{background:rgba(0,0,0,.4)}dialog b{display:block;font-size:20px;font-weight:400;margin-bottom:8px}dialog a{display:block;padding:12px 14px;border-radius:12px;cursor:pointer}dialog a:hover{background:var(--hover)}dialog button{margin-top:12px}
body.login{align-items:center;justify-content:center;background:var(--surface)}
.card{width:420px;max-width:94vw;display:flex;flex-direction:column;gap:14px;padding:44px 40px 36px;background:var(--bg);border:1px solid var(--line);border-radius:28px;box-shadow:0 2px 6px rgba(60,64,67,.08)}
.card h1{margin:6px 0 0;font-size:24px;font-weight:400}.card p{margin:0 0 10px}
.card input{height:54px;border:1px solid var(--line);border-radius:8px;padding:0 16px;background:var(--bg);width:100%}.card input:focus{border:2px solid var(--accent);padding:0 15px}
.card>button{margin-top:10px;height:44px;justify-content:center;background:var(--accent);color:var(--bg)}
.pw{position:relative}.pw .link{position:absolute;right:6px;top:9px}
@media(max-width:760px){#side{position:fixed;z-index:30;box-shadow:var(--shadow);transform:translateX(-110%);transition:transform .2s}#side.open{transform:none}#menu{display:block}#density{display:none}#uploadbtn span{display:none}header{padding:8px 12px}#content{padding:0 8px 80px}#selbar{margin:0 8px}#vstage{padding:56px 8px}.nav{display:none}}
