/* Member portraits use a visual crop; original image files are preserved. */
.member-card{display:flex;flex-wrap:wrap;align-items:flex-start;gap:20px;padding:28px}
.member-card .profile-copy{flex:1 1 200px;min-width:0;padding:0}
.member-card .profile-image{flex:0 0 112px;width:112px;height:112px;margin:0;border-radius:50%;overflow:hidden;background:var(--line)}
.member-card .profile-image img{width:100%;height:100%;aspect-ratio:1;object-fit:cover;object-position:50% 50%}
.article>.member-portrait{width:144px;height:144px;border-radius:50%;object-fit:cover;object-position:50% 50%;margin:28px 0;background:var(--line)}
.portrait-editor{display:grid;grid-template-columns:160px minmax(0,1fr);gap:16px 24px;margin:20px 0;padding:18px 0;border-block:1px solid var(--line)}
.portrait-window{width:160px;height:160px;border:2px solid var(--line);border-radius:50%;overflow:hidden;position:relative;display:grid;place-items:center;background:var(--paper);cursor:grab;touch-action:none;user-select:none}
.portrait-window[data-empty=true]{cursor:default;touch-action:auto}.portrait-window[data-dragging=true]{cursor:grabbing}
.portrait-window img{width:100%;height:100%;object-fit:cover;object-position:50% 50%;pointer-events:none;user-select:none;max-width:none}
.portrait-placeholder{font-size:12px;color:var(--muted);text-align:center;padding:12px}.portrait-tools{min-width:0;max-width:340px}.portrait-tools p{margin:0 0 12px}.portrait-tools label{font-size:11px;margin:12px 0 3px}
.portrait-tools input[type=range]{padding:0;min-height:32px;border:0;background:transparent;accent-color:var(--accent);cursor:pointer}.portrait-tools .button{margin-top:12px}.portrait-message{grid-column:1/-1;margin:0}.portrait-message:empty{display:none}
.portrait-tools[hidden],.portrait-window img[hidden],.portrait-window [hidden]{display:none}
@media(max-width:650px){.member-card{padding:24px}.portrait-editor{grid-template-columns:minmax(0,1fr);gap:12px}.portrait-tools{width:100%;max-width:none}}
/* The square selection is projected into a circular viewport, without changing source bytes. */
.member-portrait-frame{display:block;width:144px;height:144px;border-radius:50%;overflow:hidden;margin:28px 0;background:var(--line)}
.photo-cover-link .member-portrait-frame .member-portrait{display:block;margin:0;width:100%;height:100%;border-radius:0;max-width:none}
.portrait-window{cursor:default;touch-action:auto}.portrait-window img{border-radius:0}
html.portrait-open{overflow:hidden;scrollbar-gutter:stable}
.portrait-dialog{width:min(760px,calc(100vw - 24px));max-width:none;max-height:calc(100dvh - 24px);border:1px solid var(--line);border-radius:10px;background:var(--paper);color:var(--ink);padding:0;overscroll-behavior:contain}
.portrait-dialog::backdrop{background:#000b}.portrait-dialog-layout{padding:20px}
.portrait-dialog header{display:flex;justify-content:space-between;align-items:center;gap:12px}.portrait-dialog h2{font-size:24px;margin:0}
.portrait-dialog button:not(.button){min-width:44px;min-height:44px;padding:8px 12px;border:1px solid var(--line);background:var(--white);color:var(--ink);border-radius:5px;font:inherit;font-size:13px;cursor:pointer}
.portrait-dialog button:focus-visible,.crop-selection:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
.crop-stage{height:min(52vh,420px);width:100%;display:grid;place-items:center;background:#15171b;overflow:hidden;user-select:none}
.crop-image-box{position:relative;overflow:hidden;flex-shrink:0}.crop-image-box>img{display:block;width:100%;height:100%;max-width:none;pointer-events:none;user-select:none}
.crop-selection{position:absolute;border:2px solid #fff;box-shadow:0 0 0 9999px #0009;touch-action:none;cursor:move;min-width:0;min-height:0}
.crop-circle{position:absolute;inset:0;border:1px dashed #fff;border-radius:50%;pointer-events:none}
.portrait-dialog button.crop-handle{position:absolute;right:-2px;bottom:-2px;min-width:28px;min-height:28px;width:28px;height:28px;padding:0;background:#fff;color:#15171b;border:2px solid #15171b;border-radius:4px 0 0 0;font-size:18px;cursor:nwse-resize;touch-action:none}
.crop-controls{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-block:14px}.crop-controls span{font-size:12px;color:var(--muted)}
.portrait-dialog footer{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap}.portrait-dialog footer .button{margin:0}
@media(max-width:650px){.portrait-dialog-layout{padding:14px}.portrait-dialog h2{font-size:21px}.portrait-dialog .field-help{font-size:11px}.crop-stage{height:min(45vh,340px)}.portrait-dialog footer .button{padding:12px 16px}}
