:root{--bg:#0f0f12;--bg-elevated:#18181c;--text:#e8e6e3;--text-muted:#9c9890;--accent:#c9a227;--danger:#e07060;--sans:"Segoe UI", system-ui, sans-serif;font-family:var(--sans);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--text);background:var(--bg)}*,:before,:after{box-sizing:border-box}html,body{height:100%;margin:0;overflow:hidden}#root{flex-direction:column;height:100%;min-height:100dvh;display:flex}.app{flex-direction:column;flex:1;min-height:0;display:flex;position:relative}.app__storage-error{z-index:110;max-width:min(22rem,100vw - 2rem);color:var(--text);background:var(--bg-elevated);border:1px solid #e0706073;border-radius:8px;padding:.65rem .85rem;font-size:.8125rem;position:fixed;bottom:4.25rem;left:50%;transform:translate(-50%);box-shadow:0 6px 24px #0006}.app__storage-error p{margin:0}.app__storage-error button{font:inherit;cursor:pointer;color:var(--accent);background:0 0;border:none;margin-top:.45rem;padding:.25rem .65rem;font-size:.75rem;text-decoration:underline}.bookmarks-panel{z-index:100;background:var(--bg);flex-direction:column;display:flex;position:fixed;inset:0}.bookmarks-panel__header{background:var(--bg-elevated);border-bottom:1px solid #ffffff0f;flex-shrink:0;align-items:center;gap:.75rem;padding:.65rem 1rem;display:flex}.bookmarks-panel__back{font:inherit;cursor:pointer;color:var(--accent);background:0 0;border:1px solid #c9a22759;border-radius:6px;padding:.4rem .75rem;font-size:.875rem}.bookmarks-panel__back:hover{background:#c9a22714}.bookmarks-panel__title{margin:0;font-size:1rem;font-weight:600}.bookmarks-panel__scroll{flex:1;min-height:0;padding:1rem;overflow-y:auto}.bookmarks-panel__empty{text-align:center;max-width:20rem;color:var(--text-muted);margin:2rem auto;font-size:.9rem;line-height:1.5}.bookmark-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1rem;margin:0;padding:0;list-style:none;display:grid}.bookmark-card{background:var(--bg-elevated);border:1px solid #ffffff0f;border-radius:8px;flex-direction:column;display:flex;overflow:hidden}.bookmark-card__thumb{aspect-ratio:4/3;background:#00000040;justify-content:center;align-items:center;display:flex}.bookmark-card__img{object-fit:cover;width:100%;height:100%}.bookmark-card__placeholder{width:100%;height:100%;min-height:120px;color:var(--text-muted);justify-content:center;align-items:center;font-size:.8rem;display:flex}.bookmark-card__meta{text-align:center;padding:.75rem 1rem 1rem}.bookmark-card__title{margin:0;font-size:1rem;font-weight:600;line-height:1.3}.bookmark-card__artist{color:var(--text-muted);margin:.35rem 0 0;font-size:.875rem}.bookmark-card__year{color:var(--text-muted);margin:.2rem 0 0;font-size:.8rem}.bookmark-card__links{color:var(--text-muted);margin:.55rem 0 0;font-size:.7rem}.bookmark-card__links a{color:var(--accent);text-decoration:none}.bookmark-card__links a:hover{text-decoration:underline}.bookmark-card__remove{font:inherit;cursor:pointer;color:var(--danger);background:0 0;border:1px solid #e0706059;border-radius:6px;margin-top:.65rem;padding:.35rem .85rem;font-size:.8rem}.bookmark-card__remove:hover{background:#e0706014}.painting-feed{scroll-snap-type:y mandatory;scroll-behavior:smooth;flex:1;min-height:0;overflow-y:auto}.painting-slide{scroll-snap-align:start;scroll-snap-stop:always;background:var(--bg);border-bottom:1px solid #ffffff0f;flex-direction:column;min-height:100dvh;display:flex}.painting-slide__frame{flex:1;justify-content:center;align-items:center;min-height:0;padding:.75rem;display:flex}.painting-slide__img{object-fit:contain;border-radius:4px;width:auto;max-width:100%;height:auto;max-height:min(72dvh,720px);box-shadow:0 8px 32px #00000073}.painting-slide__placeholder{min-height:200px;color:var(--text-muted);border:1px dashed #ffffff1f;border-radius:4px;justify-content:center;align-items:center;width:100%;max-width:480px;font-size:.9rem;display:flex}.painting-slide__meta{text-align:center;flex-shrink:0;padding:1rem 1.25rem 1.5rem}.painting-slide__title{margin:0;font-size:1.25rem;font-weight:600;line-height:1.3}.painting-slide__artist{color:var(--text-muted);margin:.35rem 0 0;font-size:1rem}.painting-slide__year{color:var(--text-muted);margin:.25rem 0 0;font-size:.9rem}.painting-slide__actions{justify-content:center;align-items:center;gap:.75rem;margin:.85rem 0 0;display:flex}.painting-slide__icon-btn{cursor:pointer;width:3rem;height:3rem;color:var(--accent);background:#18181cd9;border:1px solid #ffffff24;border-radius:50%;justify-content:center;align-items:center;padding:0;display:inline-flex;box-shadow:0 4px 16px #00000059}.painting-slide__icon-btn:hover:not(:disabled){background:#c9a2271f;border-color:#c9a22773}.painting-slide__icon-btn:disabled{opacity:.45;cursor:wait}.painting-slide__icon-btn[aria-pressed=true]{color:var(--accent);background:#c9a22733;border-color:#c9a2278c}.painting-slide__icon-svg{width:1.35rem;height:1.35rem;display:block}.painting-slide__links{color:var(--text-muted);margin:.75rem 0 0;font-size:.75rem}.painting-slide__links a{color:var(--accent);text-decoration:none}.painting-slide__links a:hover{text-decoration:underline}.painting-feed__sentinel{width:100%;height:1px}.painting-feed__status{text-align:center;color:var(--text-muted);padding:.75rem;font-size:.875rem}.painting-feed__status--center{flex:1;justify-content:center;align-items:center;min-height:40dvh;display:flex}.painting-feed__error{text-align:center;color:var(--danger);padding:1rem;font-size:.875rem}.painting-feed__error button{font:inherit;cursor:pointer;color:var(--text);background:var(--bg-elevated);border:1px solid #ffffff26;border-radius:6px;margin-top:.5rem;padding:.4rem .9rem}.painting-feed__error button:hover{background:#ffffff0f}.painting-feed__end{text-align:center;color:var(--text-muted);margin:0;padding:1rem;font-size:.8rem}
