/* Poster controls are siblings of the open-film button, never nested buttons. */
.poster-surface{position:relative;min-width:0;border-radius:12px;background:#101017}
.profile-poster .poster-open{display:block;width:100%;padding:0;background:none;text-align:left;border-radius:13px}
.profile-poster .poster-open img{transition:opacity .18s,border-color .18s}
.profile-poster .poster-caption{margin-top:5px}
.profile-poster .poster-caption>.poster-name{margin-top:0}
.film-card .art>img{transition:transform .35s,opacity .2s}
.film-card.is-seen .art>img,.profile-poster.is-seen .poster-open>img{opacity:.4}
@media(min-width:651px) and (hover:hover) and (pointer:fine){.film-card.is-seen:hover .art>img,.profile-poster.is-seen:hover .poster-open>img{opacity:.6}}
@media(max-width:650px),(hover:none),(pointer:coarse){.film-card.is-seen .art>img,.profile-poster.is-seen .poster-open>img{opacity:.48}}
.film-card.is-seen .art,.profile-poster.is-seen .poster-open>img{border-color:#9ab7ba66}
.film-card .seen-note,.profile-poster .seen-note{--seen-bg:#162d27;--seen-edge:#357566;--seen-ink:#e1eeeb;--seen-check:#43d7ad;--seen-score:#ffda87;min-height:22px;padding:0;margin:4px 0 0;border-radius:0;background:none;border:0;color:var(--seen-ink);font-size:10px;font-weight:600;gap:5px}
.film-card .seen-note>.seen-label,.profile-poster .seen-note>.seen-label{display:inline-flex;align-items:center;gap:5px;margin:0;padding:3px 7px;border:1px solid var(--seen-edge);border-radius:8px;background:var(--seen-bg);color:inherit;font-size:10px;font-weight:600;line-height:1.4;white-space:nowrap}
.seen-label svg{width:12px;height:12px;flex:none;fill:none;stroke:var(--seen-check);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.seen-note .seen-score{color:var(--seen-score);font-size:11px}
.film-card .card-caption{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:7px;align-items:start}
.film-card .card-caption .card-meta{grid-column:1;grid-row:1;min-width:0;flex-wrap:wrap;gap:4px 7px;padding:7px 3px 0;align-items:center}
.card-caption .card-meta>span:first-child{min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.card-meta .card-year{display:inline-flex;align-items:center;gap:7px;white-space:nowrap}
.film-card .card-caption .seen-note{grid-column:2;grid-row:1;width:auto;display:flex;flex-direction:row;align-items:center;justify-content:flex-end;gap:6px;margin-top:4px}
.film-card .card-caption .seen-score{margin-left:0;align-self:center}
.profile-poster .seen-note{justify-content:flex-end;flex-direction:row;gap:7px}
.profile-poster .seen-note .seen-score{margin-left:0}
/* Badge contrast follows its local profile surface, not another viewer's theme. */
:root[data-theme=light] :is(.film-card,.profile-poster) .seen-note{--seen-bg:#e5f4ee;--seen-edge:#8bbfac;--seen-ink:#185b48;--seen-check:#18775d;--seen-score:#805410;color:var(--seen-ink)}
.profile-page :is(#memberPanel,#publicProfileContent)[data-palette]:where(:not([data-palette=standard])) .seen-note{--seen-bg:#162d27;--seen-edge:#357566;--seen-ink:#e1eeeb;--seen-check:#43d7ad;--seen-score:#ffda87;color:var(--seen-ink)}
.profile-page :is(#memberPanel,#publicProfileContent):is([data-palette=white],[data-palette=ice],[data-palette=pearl-mint],[data-palette=pearl-lavender],[data-palette=pearl-peach]) .seen-note{--seen-bg:#e5f4ee;--seen-edge:#8bbfac;--seen-ink:#185b48;--seen-check:#18775d;--seen-score:#805410;color:var(--seen-ink)}
:root[data-theme=light] :is(.film-card,.profile-poster) .seen-note>.seen-label,.profile-page :is(#memberPanel,#publicProfileContent)[data-palette] .seen-note>.seen-label{color:var(--seen-ink)}
:root[data-theme=light] :is(.film-card,.profile-poster) .seen-note>.seen-score,.profile-page :is(#memberPanel,#publicProfileContent)[data-palette] .seen-note>.seen-score{color:var(--seen-score)}
.quick-rating{position:absolute;z-index:4;left:0;right:0;bottom:0;padding:0;border-radius:0 0 11px 11px;background:linear-gradient(0deg,#111018 76%,#11101800);color:#f0edf4;opacity:0;visibility:hidden;transform:translateY(6px);transition:opacity .22s,transform .22s,visibility .22s;isolation:isolate;pointer-events:auto}
.quick-rating-body{padding:10px 5px 6px}
/* The title shares the same bottom-anchored stack, rising with the controls. */
.poster-footer{--quick-controls-space:44px;position:absolute;z-index:4;left:0;right:0;bottom:0;padding-bottom:0;border-radius:0 0 11px 11px;background:linear-gradient(0deg,#101017e6,transparent);pointer-events:none;transition:padding-bottom .22s ease}
.poster-footer .art-title{position:relative;left:auto;right:auto;bottom:auto;margin:0 10px 12px;font-size:clamp(12px,1.2vw,16px);line-height:1.25;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;pointer-events:none}
.poster-footer .quick-rating-body{padding:6px 5px}
.poster-surface:focus-within .poster-footer,.quick-open .poster-footer{padding-bottom:var(--quick-controls-space)}
.quick-stars{display:grid;grid-template-columns:repeat(10,minmax(0,1fr));gap:0}
.quick-stars>button{position:relative;min-width:0;padding:5px 0 2px;border:0;border-radius:5px;background:none;color:#958da2;display:flex;flex-direction:column;align-items:center;gap:4px;overflow:visible;cursor:pointer}
.quick-stars>button svg{width:clamp(10px,1.1vw,16px);height:16px;fill:currentColor;stroke:currentColor}
.quick-stars>button small{font:500 9px/1.1 'Segoe UI',Arial,sans-serif;color:#e0d9e9}
.quick-stars>button.lit{color:#ffd06b}
.quick-stars>button[aria-pressed=true]{background:#ffc75a22;box-shadow:inset 0 0 0 1px #ffd06b77}
.quick-stars>button:hover,.quick-stars>button:focus-visible{color:#ffe19a;background:#ffd06b22;outline:1px solid #ffd06b;outline-offset:0}
.quick-rating .quick-rating-status{position:absolute;width:1px;height:1px;min-height:0;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);clip-path:inset(50%);white-space:nowrap;border:0}
.quick-rating.is-saving .quick-rating-status{color:#ffda87}
.quick-rating .rating-sparkles{margin:0}
.quick-rating .rating-sparkles>span{width:18px;height:18px;margin:-9px;animation-duration:1s}
.quick-rating .rating-sparkles svg{width:100%;height:100%}
.quick-rating-toggle{position:absolute;right:7px;bottom:7px;z-index:5;display:none;place-items:center;width:30px;height:30px;padding:0;border-radius:50%;border:1px solid #f5d39588;background:#15101ded;color:#ffd06b}
.quick-rating-toggle svg{width:15px;height:15px;fill:currentColor}
.poster-surface:focus-within .quick-rating,.quick-open .quick-rating{opacity:1;visibility:visible;transform:none}
.quick-open .quick-rating-toggle{bottom:auto;top:7px}
@media(hover:hover) and (pointer:fine){.poster-surface:hover .quick-rating{opacity:1;visibility:visible;transform:none}.poster-surface:hover .poster-footer{padding-bottom:var(--quick-controls-space)}}
@media(max-width:650px),(hover:none),(pointer:coarse){.quick-rating-toggle{display:grid}.quick-stars{grid-template-columns:repeat(5,minmax(0,1fr));gap:3px}.quick-stars>button{min-height:38px}.quick-stars>button svg{width:16px;height:16px}.quick-rating-body{padding-top:10px}.film-card:not(.quick-open) .quick-rating,.profile-poster:not(.quick-open) .quick-rating{opacity:0;visibility:hidden}.quick-open .poster-surface .quick-rating{opacity:1;visibility:visible;transform:none}.poster-footer{--quick-controls-space:68px}.poster-footer .quick-stars>button{min-height:30px;padding:3px 0 1px;gap:2px}.poster-footer .art-title{font-size:12px;line-height:1.25}.film-card .art{min-height:164px}.film-card:not(.quick-open) .poster-footer{padding-bottom:0}.film-card.quick-open .poster-footer{padding-bottom:var(--quick-controls-space)}}
@media(prefers-reduced-motion:reduce){.quick-rating,.poster-footer{transition:none;transform:none}.film-card .art>img,.profile-poster .poster-open>img{transition:none}}
/* Touch controls keep a fixed place beside the heart, clear of poster captions. */
@media(max-width:650px),(hover:none),(pointer:coarse){.film-card .quick-rating-toggle{top:7px;bottom:auto;left:43px;right:auto}.profile-poster .quick-rating-toggle{top:7px;bottom:auto;left:7px;right:auto}}

/* The current section stays visible and interactive while its successor loads. */
.profile-tabs button[aria-busy=true]:after{content:'…';margin-left:5px}
.profile-page .profile-followers{font-size:13px;line-height:1.5;color:var(--profile-accent,#c8bccc);margin:8px 0 0}
.profile-page .profile-stats{grid-template-columns:repeat(5,minmax(0,1fr))}
@media(max-width:650px){.profile-page .profile-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.profile-page .profile-stats>button:last-child:nth-child(odd){grid-column:1/-1}.profile-page .profile-followers{font-size:12px}}
