:root{--bg: #f6f7f9;--fg: #16181d;--muted: #5d6573;--card: #fff;--line: #d9dde3;--accent: #2f5bea;--danger: #b3261e;color-scheme:light dark;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}@media (prefers-color-scheme: dark){:root{--bg: #14161a;--fg: #eceef2;--muted: #a0a7b4;--card: #1d2026;--line: #333844;--accent: #7c9bff;--danger: #ff8a80}}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--fg)}.page{max-width:960px;margin:0 auto;padding:2.5rem 1rem 4rem}h1{margin:0 0 .25rem}.lead{margin:0 0 1.5rem;color:var(--muted)}label{display:block;font-weight:600;margin-bottom:.35rem}.row{display:flex;gap:.5rem}input{flex:1;min-width:0;padding:.65rem .8rem;font:inherit;color:inherit;background:var(--card);border:1px solid var(--line);border-radius:8px}input[aria-invalid=true]{border-color:var(--danger)}button{padding:.65rem 1.2rem;font:inherit;font-weight:600;cursor:pointer;color:#fff;background:var(--accent);border:0;border-radius:8px}button:disabled{opacity:.5;cursor:not-allowed}:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.field-error{min-height:1.4em;margin:.35rem 0 0;color:var(--danger);font-size:.9rem}.result{display:grid;gap:1.5rem;margin-top:1.5rem;grid-template-columns:minmax(0,1fr)}@media (min-width: 800px){.result{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start}}.result img{width:100%;border:1px solid var(--line);border-radius:8px;background:var(--card)}.description{white-space:pre-wrap;line-height:1.55}.meta{color:var(--muted);font-size:.85rem;word-break:break-all}.error{margin-top:1.5rem;padding:1rem 1.25rem;display:flex;gap:1rem;align-items:center;justify-content:space-between;flex-wrap:wrap;background:var(--card);border:1px solid var(--danger);border-radius:8px}.error p{margin:0}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10;display:flex;flex-direction:column;gap:1rem;align-items:center;justify-content:center;background:color-mix(in srgb,var(--bg) 85%,transparent);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.spinner{width:48px;height:48px;border-radius:50%;border:5px solid var(--line);border-top-color:var(--accent);animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.spinner{animation-duration:3s}}
