:root{--bg:#16130f;--panel:#1f1b16;--line:#35302a;--text:#ece7df;--muted:#9a938a;--accent:#c9a15e}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:Hiragino Kaku Gothic ProN,Yu Gothic,Segoe UI,system-ui,sans-serif;-webkit-font-smoothing:antialiased}header.bar{position:-webkit-sticky;position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 24px;background:rgba(22,19,15,.85);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}header.bar h2{margin:0;font-size:16px;font-weight:600;letter-spacing:.03em}.bar-actions{display:flex;align-items:center;gap:12px}.bar-error{color:#d98a6a;font-size:12px}.upload-btn{padding:8px 14px;background:var(--accent);color:#1a1611;border:none;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;transition:opacity .15s}.upload-btn:hover:not(:disabled){opacity:.9}.upload-btn:disabled{opacity:.6;cursor:default}.gallery-body{min-height:calc(100vh - 57px)}.gallery-body.is-dragover{outline:2px dashed var(--accent);outline-offset:-8px;background:rgba(201,161,94,.06)}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));grid-gap:4px;gap:4px;padding:4px}.grid figure{margin:0;aspect-ratio:1/1;overflow:hidden;background:var(--panel);cursor:pointer}.grid img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .35s ease}.grid figure:hover img{transform:scale(1.04)}.empty{padding:80px 24px;text-align:center;color:var(--muted);font-size:14px;line-height:1.8}.empty code{color:var(--accent);background:var(--panel);padding:2px 6px;border-radius:4px}.lightbox{position:fixed;inset:0;z-index:50;background:rgba(0,0,0,.92);display:flex;align-items:center;justify-content:center;padding:24px}.lightbox img{max-width:100%;max-height:100%;object-fit:contain}.lightbox .close{position:absolute;top:20px;right:24px;font-size:32px;color:#fff;cursor:pointer;line-height:1;opacity:.8;background:none;border:none}.lightbox .close:hover{opacity:1}.lightbox .nav{position:absolute;top:50%;transform:translateY(-50%);z-index:51;width:48px;height:48px;font-size:28px;line-height:1;color:#fff;background:rgba(0,0,0,.35);border:1px solid rgba(255,255,255,.2);border-radius:50%;cursor:pointer;opacity:.85;display:flex;align-items:center;justify-content:center;padding:0}.lightbox .nav:hover{opacity:1;background:rgba(0,0,0,.55)}.lightbox .nav.prev{left:16px}.lightbox .nav.next{right:16px}.lightbox-counter{position:absolute;bottom:20px;left:50%;transform:translateX(-50%);color:rgba(255,255,255,.85);font-size:13px;letter-spacing:.04em;-webkit-user-select:none;-moz-user-select:none;user-select:none}@media (max-width:640px){.lightbox{padding:16px 56px}.lightbox .nav{width:40px;height:40px;font-size:22px}.lightbox .nav.prev{left:8px}.lightbox .nav.next{right:8px}}.login-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}.login-card{width:100%;max-width:380px;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:36px 32px}.login-card h1{margin:0 0 4px;font-size:22px;font-weight:600;letter-spacing:.02em}.login-card p.sub{margin:0 0 24px;color:var(--muted);font-size:13px}.field{margin-bottom:16px}.field label{display:block;font-size:12px;color:var(--muted);margin-bottom:8px;line-height:1.5}.field input{width:100%;padding:11px 13px;background:#14110d;border:1px solid var(--line);border-radius:8px;color:var(--text);font-size:15px;outline:none;transition:border-color .15s}.field input:focus{border-color:var(--accent)}.login-btn{width:100%;margin-top:8px;padding:12px;background:var(--accent);color:#1a1611;border:none;border-radius:8px;font-size:15px;font-weight:600;cursor:pointer;transition:opacity .15s}.login-btn:hover:not(:disabled){opacity:.9}.login-btn:disabled{opacity:.6;cursor:default}.error-msg{margin-top:14px;min-height:18px;color:#d98a6a;font-size:13px}