/* One global squirrel; card ledges reserve landing space without obscuring controls. */
:root{--z-pet:120;--z-pet-controls:110;--space-pet-ledge:3rem;--space-control-bar:5.5rem}
body{padding-bottom:calc(var(--space-control-bar) + env(safe-area-inset-bottom))}
.home-placeholder{display:none;color:var(--color-muted);font-size:var(--text-xs);padding:var(--space-sm);border:1px dashed var(--color-control);border-radius:var(--radius-pill)}
.mascot-button{display:flex;align-items:center;justify-content:center}
.mascot-button .mascot-shadow{position:absolute;bottom:var(--space-sm);top:auto;left:50%;transform:translateX(-50%)}
.mascot-button.is-away .home-placeholder{display:block}
.mascot-button.is-away .mascot-shadow{display:none}
.squirrel{position:fixed;top:0;left:0;width:216px;height:216px;z-index:var(--z-pet);pointer-events:none;transform-origin:0 0;contain:layout style}
.squirrel-sprite,.squirrel-facing{width:216px;height:216px;transform-origin:50% 95%;pointer-events:none}
.squirrel-facing{transform-origin:50% 50%}
.squirrel .squirrel-art{width:216px;height:216px;display:block;overflow:visible;stroke:none;pointer-events:none}
.squirrel-art g{transform-box:view-box}
.squirrel[data-state=resting]{opacity:.72}
.pet-controls{position:fixed;bottom:max(var(--space-md),env(safe-area-inset-bottom));right:var(--space-md);display:flex;align-items:center;gap:var(--space-2xs);background:var(--color-surface);color:var(--color-ink);border:1px solid var(--color-control);border-radius:var(--radius-pill);padding:var(--space-2xs) var(--space-xs);z-index:var(--z-pet-controls);max-width:calc(100% - 32px)}
.pet-dock{width:30px;height:28px;flex-shrink:0;pointer-events:none}.pet-status{display:none;color:var(--color-muted);font-size:var(--text-xs);margin-right:var(--space-xs);white-space:nowrap}
.pet-controls button{font-size:var(--text-xs);min-height:44px;min-width:44px;border-radius:var(--radius-pill);padding:var(--space-xs) var(--space-sm)}
.pet-controls button:hover,.pet-controls button[aria-pressed=true]{background:var(--color-soft);color:var(--color-ink)}
.resource,.spot-card{padding-top:var(--space-pet-ledge);position:relative}
.resource-grid{row-gap:var(--space-lg)}.resource-visual{width:100%;padding:0;text-align:left;white-space:normal}
.resource-visual:hover>img{transform:none}.resource-visual:active{transform:none}
.resource:focus-within .resource-visual,.resource.is-inspected .resource-visual,.resource.pet-perched .resource-visual{border-color:var(--color-accent-text);outline:1px solid var(--color-accent-text);outline-offset:3px}
.card-ledge{position:absolute;top:var(--space-2xs);left:0;right:72px;height:40px;display:flex;align-items:center;gap:var(--space-xs)}
.call-pet{min-height:44px;min-width:44px;padding:var(--space-xs);margin-left:calc(-1 * var(--space-xs));font-size:var(--text-xs);color:var(--color-muted)}
.call-pet:hover{color:var(--color-accent-text)}.resource.pet-perched .call-pet{color:var(--color-accent-text)}
.resource.pet-perched .call-pet::after{content:' · 在这里'}
.quick-preview-hint{position:absolute;left:var(--space-sm);bottom:var(--space-sm);border-radius:var(--radius-pill);padding:var(--space-xs) var(--space-sm);background:var(--color-ink);color:var(--color-paper);font-size:var(--text-xs);opacity:0;transform:translateY(4px);transition:opacity var(--dur-short) var(--ease-out),transform var(--dur-short) var(--ease-out)}
.resource:focus-within .quick-preview-hint,.resource.is-inspected .quick-preview-hint{opacity:1;transform:none}
.card-actions{display:flex;align-items:center;justify-content:space-between;gap:var(--space-xs);padding-top:var(--space-xs);border-top:1px solid var(--color-rule);margin-top:var(--space-sm)}
.card-actions button{min-height:44px;padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);font-size:var(--text-xs);display:flex;align-items:center;gap:var(--space-xs)}
.card-actions button:first-child{padding-left:0}.card-actions svg{width:16px;height:16px}.save-button[aria-pressed=true]{color:var(--color-accent-text);background:var(--color-accent-soft)}
.save-button[aria-pressed=true] svg{fill:currentColor}
.saved-filter{min-height:44px;font-size:var(--text-xs);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-pill);color:var(--color-muted)}
.saved-filter[aria-pressed=true]{background:var(--color-accent-soft);color:var(--color-accent-text)}
.storage-note{font-size:var(--text-xs);color:var(--color-muted);margin-top:var(--space-xl)}
.category[aria-pressed=true]::before{content:'';width:5px;height:5px;border-radius:50%;background:var(--color-accent-text);flex-shrink:0}
#preview-dialog{width:min(720px,calc(100% - 32px));max-height:86dvh}
#preview-kind{font-size:var(--text-xs);color:var(--color-muted)}
#preview-image{margin-block:var(--space-md);background:var(--color-soft);border-radius:var(--radius-md);overflow:clip}
#preview-image img{width:100%;height:auto;max-height:320px;object-fit:contain;object-position:top}
#preview-image .typographic-cover{min-height:168px;gap:var(--space-lg)}
#preview-title{font-size:var(--text-title);line-height:1.3;margin-top:var(--space-lg)}
#preview-description{color:var(--color-muted);margin-block:var(--space-sm) var(--space-lg);font-size:var(--text-sm)}
#preview-facts{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-xs) var(--space-md);font-size:var(--text-sm);margin:0}
#preview-facts dt{font-size:var(--text-xs);color:var(--color-muted);margin-top:var(--space-xs)}
#preview-facts dd{margin:0;overflow-wrap:anywhere}
.preview-actions{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-sm);margin-top:var(--space-xl)}
.preview-actions a,.preview-actions button{min-height:44px;padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);font-size:var(--text-sm);display:inline-flex;align-items:center;white-space:nowrap}
.preview-actions a:first-child{background:var(--color-ink);color:var(--color-paper)}
.preview-actions a:nth-child(2){text-decoration:underline;text-underline-offset:3px}
.preview-actions button[aria-pressed=true]{background:var(--color-accent-soft);color:var(--color-accent-text)}
@media(min-width:40rem){.pet-status{display:inline}#preview-facts{grid-template-columns:92px minmax(0,1fr)}#preview-facts dt{margin:0}}
@media(hover:none){.quick-preview-hint{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.quick-preview-hint{transition:none;transform:none}}
