/* Design system: sheet (bottom sheet on phone, centred dialog on desktop) and full-screen image viewer (lazy). */
html.ds-sheet-open{overflow:hidden}.ds-sheet{position:fixed;inset:0;z-index:var(--z-sheet);display:grid;align-items:end;justify-items:center}.ds-sheet__backdrop{position:absolute;inset:0;background:var(--scrim);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);opacity:0;transition:opacity var(--dur-3)}.ds-sheet__panel{position:relative;display:flex;flex-direction:column;width:100%;max-width:560px;max-height:88dvh;background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);border:1px solid var(--line-2);border-bottom:0;border-radius:var(--r-xl) var(--r-xl) 0 0;box-shadow:var(--shadow);transform:translateY(calc(100% + 24px));transition:transform var(--dur-3) var(--ease);outline:none}.ds-sheet.is-open .ds-sheet__backdrop{opacity:1}.ds-sheet.is-open .ds-sheet__panel{transform:translateY(var(--drag-y,0px))}.ds-sheet.is-drag .ds-sheet__panel{transition:none}.ds-sheet__handle{position:relative;flex:none;width:44px;height:5px;margin:var(--sp-2) auto 0;border-radius:3px;background:var(--line-2);touch-action:none;cursor:grab}.ds-sheet__handle:before{content:"";position:absolute;inset:-10px -40px}.ds-sheet__head{flex:none;display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-5) var(--sp-2);touch-action:none}.ds-sheet__title{flex:1;margin:0;font-size:var(--fs-lg);font-weight:800;line-height:var(--lh-tight)}.ds-sheet__close{flex:none;width:36px;height:36px;border:0;border-radius:50%;background:var(--surface-3);color:var(--muted);cursor:pointer;font-size:18px;line-height:1}.ds-sheet__body{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:var(--sp-2) var(--sp-5) var(--sp-4);color:var(--text);line-height:var(--lh-base)}.ds-sheet__foot{flex:none;display:flex;flex-wrap:wrap;gap:var(--sp-3);padding:var(--sp-3) var(--sp-5) calc(var(--sp-4) + var(--safe-b));border-top:1px solid var(--line)}.ds-sheet__foot:empty{display:none}.ds-sheet__foot .ds-btn{flex:1;min-width:120px}
@media(min-width:821px){.ds-sheet{align-items:center}.ds-sheet__panel{border-bottom:1px solid var(--line-2);border-radius:var(--r-xl);max-height:min(86dvh,720px);transform:translateY(24px) scale(.97);opacity:0;transition:transform var(--dur-3) var(--ease),opacity var(--dur-3)}.ds-sheet.is-open .ds-sheet__panel{transform:none;opacity:1}.ds-sheet__handle{display:none}.ds-sheet__head{padding-top:var(--sp-5)}}
html[data-low-end] .ds-sheet__backdrop{backdrop-filter:none;-webkit-backdrop-filter:none}
/* image viewer */
.ds-viewer{position:fixed;inset:0;z-index:var(--z-viewer);display:flex;flex-direction:column;background:color-mix(in oklab,var(--bg) 94%,transparent);touch-action:none}.ds-viewer__bar{flex:none;display:flex;align-items:center;gap:var(--sp-2);padding:calc(var(--sp-3) + var(--safe-t)) var(--sp-4) var(--sp-3);background:linear-gradient(var(--bg),transparent)}.ds-viewer__bar .ds-viewer__close{margin-inline-start:auto}.ds-viewer__btn{width:44px;height:44px;border:1px solid var(--line-2);border-radius:14px;background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);color:var(--text);cursor:pointer;font-size:20px;font-weight:800;line-height:1;display:grid;place-items:center}.ds-viewer__btn:disabled{opacity:.4;cursor:default}.ds-viewer__stage{position:relative;flex:1;min-height:0;overflow:hidden;display:grid;place-items:center;cursor:grab}.ds-viewer__stage.is-pan{cursor:grabbing}.ds-viewer__img{max-width:100%;max-height:100%;object-fit:contain;transform:translate3d(var(--vx,0px),var(--vy,0px),0) scale(var(--vs,1));transform-origin:center;transition:transform var(--dur-2) var(--ease);user-select:none;-webkit-user-drag:none;will-change:transform}.ds-viewer.is-gesture .ds-viewer__img{transition:none}.ds-viewer__state{position:absolute;inset:0;display:grid;place-content:center;justify-items:center;gap:var(--sp-3);padding:var(--sp-5);text-align:center;color:var(--muted);font-size:var(--fs-md);pointer-events:none}.ds-viewer__state:before{content:"";width:38px;height:38px;border-radius:50%;border:3px solid var(--accent-soft);border-top-color:var(--accent);animation:ds-spin 1s linear infinite}@keyframes ds-spin{to{transform:rotate(360deg)}}.ds-viewer.is-error .ds-viewer__state:before{display:none}.ds-viewer.is-error .ds-viewer__state{color:var(--danger-ink)}.ds-viewer.is-ready .ds-viewer__state{display:none}
.ds-sheet__text{margin:0;color:var(--muted);line-height:var(--lh-loose)}
