:root {
  --base:#e5e5e5; --surface:#e5e5e5; --control:#fff;
  --ink:#202b3b; --muted:#526075; --brand:#285dae; --brand-deep:#174780;
  --line:#e1e4e9; --divider:#b8bec8;
  --raised:7px 7px 13px rgba(13,39,80,.16),-6px -6px 12px #fff;
  --recessed:inset 2px 3px 3px #b0bdd0,inset -2px -2px 3px #fff,0 1px 0 #fff;
}
html[data-theme="dark"] {
  --base:#292e37; --surface:#292e37; --control:#343b47;
  --ink:#edf2fa; --muted:#b3bfd0; --brand:#75a7f7; --brand-deep:#a8c8ff;
  --line:#444c5b; --divider:#626e80;
  --raised:7px 7px 14px #1c2027,-6px -6px 12px #353c48;
  --recessed:inset 2px 3px 4px #1c2027,inset -2px -2px 3px #39414e;
}
* {box-sizing:border-box}
[hidden] {display:none!important}
body {margin:0;background:var(--base);font:14px system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--ink);padding-bottom:82px;letter-spacing:.01em}
input,select,textarea,button {font:inherit}
button {border:0;border-radius:20px;padding:11px 16px;font-weight:700;cursor:pointer;background:var(--brand);color:#fff;box-shadow:3px 3px 7px rgba(13,39,80,.2),-2px -2px 4px rgba(255,255,255,.25)}
button:active {transform:translateY(1px)}
input,select,textarea {width:100%;border:1px solid var(--line);border-radius:24px;padding:11px 14px;background:var(--control);box-shadow:var(--recessed);color:var(--ink);outline-color:var(--brand)}
textarea {min-height:86px;resize:vertical;border-radius:16px}
.topbar {background:var(--surface);padding:22px max(18px,calc((100% - 1120px)/2));position:sticky;top:0;z-index:4;border-bottom:1px solid var(--line)}
.header-inner {max-width:1080px;margin:auto;display:flex;justify-content:space-between;gap:16px;align-items:center}
.topbar h1 {font-size:22px;letter-spacing:-.025em;margin:0 0 4px;color:var(--brand)}
.topbar p {margin:0;color:var(--muted);font-size:13px}
.theme-toggle {background:var(--surface);color:var(--ink);box-shadow:var(--raised);border-radius:50%;width:40px;height:40px;padding:0;font-size:17px;flex:none}
.main-content {margin:auto;padding:24px 18px}
.toolbar {max-width:1080px;margin:0 auto 18px;background:var(--surface);border-radius:18px;padding:20px;box-shadow:var(--raised);display:grid;grid-template-columns:1fr auto;gap:12px}
.search-box {display:flex;align-items:center;gap:10px;min-width:0}
.search-box input {min-width:0}
.search-box>span,kbd {display:none}
.filter-row {display:flex;gap:5px;flex-wrap:wrap;min-width:0}
.pill,.select-button,.sort-button,.text-button,.lang-tab {background:transparent;color:var(--muted);box-shadow:none;padding:8px 13px;font-size:12px}
.pill.active {color:var(--brand);font-weight:800;text-decoration:underline;text-underline-offset:5px}
.select-button {justify-self:end;color:var(--brand)}
.secondary {background:var(--surface);color:var(--ink);box-shadow:var(--raised)}
.demo-banner,.notice {max-width:1080px;margin:12px auto;font-size:12px;line-height:1.5;color:var(--muted)}
.notice {padding:10px 13px;background:#fff1da;color:#77500a;border-radius:14px}
.collection-head {display:flex;justify-content:space-between;align-items:center;margin:24px 0 14px;gap:12px}
.collection-head h2 {font-size:17px;margin:0;letter-spacing:-.015em}
.collection-head p {font-size:12px;color:var(--muted);margin:4px 0 0}
.gallery {display:block}
.photo-group {margin-bottom:24px}
.photo-group-heading {font-size:14px;font-weight:700;margin:0 0 12px}
.photo-grid {display:flex;flex-wrap:wrap;gap:4px;align-items:flex-start}
.image-card {position:relative;width:180px;height:180px;min-width:0;flex:none;cursor:pointer;background:transparent;border:0;border-radius:0;box-shadow:none;overflow:hidden}
.thumb-wrap {width:100%;height:100%;background:var(--surface);display:grid;place-items:center}
.thumb-wrap img {display:block;width:100%;height:100%;object-fit:contain}
.thumb-wrap>span {padding:12px;font-size:12px;color:var(--muted);text-align:center}
.card-info {display:none}
.card-check {display:none;position:absolute;z-index:2;top:8px;left:8px;width:22px;height:22px;margin:0;padding:0;box-shadow:none;accent-color:var(--brand)}
.selecting .card-check {display:block}
.image-card.selected {outline:3px solid var(--brand);outline-offset:-3px}
.load-more {display:block;margin:18px auto}
.state-panel {padding:34px;text-align:center;color:var(--muted)}
.state-panel h2 {color:var(--ink);font-size:17px}
.spinner {display:block;margin:0 auto;width:28px;height:28px;border:3px solid var(--divider);border-top-color:var(--brand);border-radius:50%;animation:spin .8s linear infinite}
@keyframes spin {to {transform:rotate(360deg)}}
.upload-panel,.bulk-bar {position:fixed;z-index:6;bottom:82px;background:var(--surface);border-radius:18px;box-shadow:var(--raised);padding:16px}
.upload-panel {right:14px;width:min(430px,calc(100vw - 28px));max-height:45vh;overflow:auto}
.upload-row {display:flex;gap:8px;align-items:center;margin:10px 0;font-size:12px}
.upload-row progress {min-width:40px;flex:1;accent-color:var(--brand)}
.bulk-bar {left:50%;transform:translateX(-50%);max-width:calc(100vw - 28px);display:flex;gap:7px;align-items:center;overflow:auto;white-space:nowrap}
.bulk-bar button {background:transparent;color:var(--brand);box-shadow:none;padding:8px 10px;font-size:12px}
.detail-dialog,.small-dialog,.login-dialog {width:min(680px,calc(100vw - 48px));max-height:calc(100dvh - 48px);overflow-y:auto;overscroll-behavior:contain;margin:auto;border:1px solid var(--line);border-radius:18px;padding:24px;background:var(--surface);color:var(--ink);box-shadow:0 12px 36px rgba(0,0,0,.18)}
dialog::backdrop {background:rgba(20,30,45,.35);backdrop-filter:none}
.detail-media img {display:block;width:100%;max-height:340px;object-fit:contain;border-radius:14px;margin-bottom:18px;border:1px solid var(--line)}
.detail-form h2,.small-dialog h2 {font-size:19px;margin:0 0 18px;overflow-wrap:anywhere}
.eyebrow {font-size:11px;letter-spacing:.075em;color:var(--muted);margin:0 0 7px}
.detail-form label,.login-dialog label,.small-dialog label {display:block;font-size:12px;font-weight:700;margin:14px 0 5px}
.detail-form input,.detail-form select,.detail-form textarea,.login-dialog input,.small-dialog input,.small-dialog select {margin-top:5px}
.detail-form small {font-size:11px;font-weight:400;color:var(--muted)}
.language-tabs {display:flex;gap:8px;margin:14px 0 0}
.lang-tab.active {color:var(--brand);font-weight:800;text-decoration:underline;text-underline-offset:5px}
.form-actions {display:flex;justify-content:flex-end;gap:10px;margin-top:20px;padding:18px 0 4px;border-top:1px solid var(--line)}
.modal-close {position:absolute;right:12px;top:10px;background:transparent;color:var(--brand);box-shadow:none;padding:4px 8px;font-size:23px;border-radius:8px}
.login-dialog {max-width:460px}
.login-mark {color:var(--brand);font-size:22px;font-weight:800}
.login-dialog h1 {font-size:22px;color:var(--brand)}
.login-dialog h1 em {font-style:normal}
.login-copy {font-size:13px;color:var(--muted)}
.form-error {color:#b53535;font-size:12px}
.login-dialog .primary-button {width:100%;margin-top:14px}
.discard-dialog {max-width:430px}
.discard-content p {color:var(--muted);line-height:1.5}
.mobile-bottom-nav {position:fixed;z-index:5;bottom:14px;left:50%;transform:translateX(-50%);background:var(--surface);border-radius:22px;box-shadow:var(--raised);display:flex;justify-content:center;gap:5px;padding:7px}
.mobile-bottom-nav button {color:var(--muted);background:transparent;box-shadow:none;padding:8px 14px;font-size:12px;white-space:nowrap}
.mobile-bottom-nav .nav-main {color:var(--brand);font-weight:750}
.sidebar {display:none}
.sidebar.open {display:flex;flex-direction:column;position:fixed;z-index:8;left:12px;top:12px;bottom:82px;width:min(320px,calc(100vw - 24px));padding:20px;background:var(--surface);border:1px solid var(--line);border-radius:18px;box-shadow:var(--raised);overflow:auto}
.sidebar .brand {display:flex;gap:10px;color:var(--brand);font-size:22px;font-weight:700;margin:10px 0}
.sidebar .brand small {font-size:10px}
.nav-list {display:grid;gap:5px}
.nav-item {display:flex;justify-content:space-between;gap:12px;background:transparent;color:var(--ink);box-shadow:none;text-align:left;padding:11px 12px}
.nav-item.active {color:var(--brand)}
.nav-label {font-size:12px;color:var(--muted);padding:10px 12px 3px}
.sidebar-footer {margin-top:auto;padding-top:18px;display:flex;flex-wrap:wrap;gap:8px;align-items:center}
button:focus-visible,article:focus-visible {outline:2px solid var(--brand);outline-offset:3px}
@media(max-width:640px) {
  .topbar {padding:17px 16px}
  .main-content {padding:18px 14px}
  .toolbar {grid-template-columns:1fr;padding:16px;margin-bottom:16px}
  .upload-button {width:100%}
  .filter-row {gap:2px}
  .select-button {justify-self:start}
  .mobile-bottom-nav {bottom:10px;width:calc(100% - 28px)}
  .mobile-bottom-nav button {flex:1;padding:8px 10px}
  .detail-dialog,.small-dialog,.login-dialog {width:calc(100vw - 24px);max-height:calc(100dvh - 24px);border-radius:16px;padding:18px}
  .form-actions {flex-direction:column-reverse}
  .form-actions button {width:100%}
  .upload-row {flex-wrap:wrap}
}
