/* Studio reference basket: a small floating window (non-modal) and pinned comparison images.
   Shares the gallery palette and text styles (gallery.css); deliberately lighter than the full-screen gallery detail. */

/* ---- Floating handle: rounded tag with the latest thumbnails ---- */
.basket-tag{position:fixed;right:22px;bottom:22px;z-index:50;display:inline-flex;align-items:center;gap:10px;height:44px;padding:0 16px 0 8px;border:1px solid var(--c-c9cfc2);border-radius:999px;background:var(--c-f7f6f1);color:var(--t-242d28);font:inherit;font-size:12px;letter-spacing:.04em;cursor:pointer;box-shadow:0 10px 26px -16px #18203077,0 1px 0 #ffffff inset;translate:var(--pull-x,0) var(--pull-y,0);scale:var(--pull-s,1);transition:border-color .2s,background-color .2s,box-shadow .25s}
.basket-tag:hover,.basket-tag:focus-visible{border-color:var(--c-384bff);box-shadow:0 14px 30px -16px #18203088}
.basket-tag.is-active{background:var(--c-242d28);border-color:var(--c-242d28);color:var(--t-f2f1ec)}
.basket-tag.is-empty{padding-left:16px}
.basket-tag-thumbs{display:flex;align-items:center}
.basket-tag-thumbs:empty{display:none}
.basket-tag-thumbs img{width:28px;height:28px;object-fit:cover;border:2px solid var(--c-ffffff);border-radius:7px;background:var(--c-eef0ea);box-shadow:0 2px 6px -2px #1820304d;rotate:calc((var(--n,0) - 1) * 6deg)}
.basket-tag-thumbs img+img{margin-left:-12px}
.basket-tag-label{display:inline-flex;align-items:baseline;gap:6px}
.basket-tag-dot{color:var(--t-9aa293)}
.basket-tag-count{font:12px monospace}
.basket-tag.has-new::after{content:"";position:absolute;top:6px;right:8px;width:7px;height:7px;border-radius:50%;background:var(--c-e8835f);animation:basket-glow 2.6s ease-in-out infinite}
@keyframes basket-glow{50%{opacity:.35}}

/* ---- Window ---- */
.basket-window{position:fixed;z-index:60;display:flex;flex-direction:column;min-width:0;background:var(--c-f7f6f1);border:1px solid var(--c-cfd5c8);border-radius:10px;box-shadow:0 24px 60px -30px #18203088,0 2px 8px -4px #1820301f;color:var(--t-242d28);overflow:hidden}
.basket-window[hidden]{display:none}
.basket-window.is-entering{animation:basket-pop .32s cubic-bezier(.2,.7,.1,1)}
@keyframes basket-pop{from{opacity:0;translate:0 14px;scale:.98}}
.basket-window.is-moving,.basket-window.is-resizing{box-shadow:0 34px 70px -30px #18203099,0 2px 8px -4px #1820301f;user-select:none}
.basket-bar{display:flex;align-items:center;gap:10px;min-height:42px;padding:0 6px 0 12px;border-bottom:1px solid var(--c-dde1d7);background:var(--c-f2f1ec);cursor:grab;touch-action:none;user-select:none}
.basket-window.is-moving .basket-bar{cursor:grabbing}
.basket-grip{width:10px;height:16px;flex:none;background:radial-gradient(var(--c-9aa293) 1.1px,transparent 1.4px) 0 0/5px 5px;opacity:.8}
.basket-bar h2{flex:1;display:flex;align-items:baseline;gap:8px;margin:0;font-size:13px;font-weight:500;letter-spacing:-.01em;min-width:0}
.basket-win-count{font:11px monospace;color:var(--t-657560)}
.basket-win-actions{display:flex;gap:2px}
.basket-win-button{width:32px;height:32px;border:0;border-radius:6px;background:transparent;font:inherit;font-size:15px;line-height:1;color:var(--t-596651);cursor:pointer}
.basket-win-button:hover,.basket-win-button:focus-visible{background:var(--c-e5e8df);color:var(--t-242d28)}
.basket-win-button[aria-pressed="true"]{color:var(--t-384bff)}
.basket-body{flex:1;display:flex;flex-direction:column;min-height:0}
.basket-window.is-min .basket-body{display:none}
.basket-window.is-min .basket-bar{border-bottom:0}
.basket-list{flex:1;display:flex;flex-direction:column;min-height:0}
.basket-list[hidden]{display:none}
.basket-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:10px 12px 4px}
.basket-filters{display:flex;gap:4px}
.basket-filters .gallery-chip{height:28px;padding:0 9px;font-size:11px}
.basket-arrange{height:28px;margin-left:auto;padding:0 11px;border:1px solid var(--c-242d28);border-radius:0;background:transparent;font:inherit;font-size:11px;color:var(--t-242d28);cursor:pointer}
.basket-arrange:hover{background:var(--c-242d28);color:var(--t-ffffff)}
.basket-arrange[hidden]{display:none}
.basket-shelf-link{font-size:11px;color:var(--t-4858a3);text-decoration:underline;text-underline-offset:3px;padding:0 2px}
.basket-arrange[hidden]+.basket-shelf-link{margin-left:auto}
.basket-note{margin:0;padding:0 12px 8px;font-size:10px;color:var(--t-818b79)}
.basket-filters .gallery-chip.is-hidden-filter{border-style:dashed}
/* Style tags: one scrollable row; the active tag narrows the board. */
.basket-tags{display:flex;gap:4px;overflow-x:auto;padding:4px 12px 8px;scrollbar-width:none;mask-image:linear-gradient(90deg,#000 calc(100% - 24px),transparent)}
.basket-tags[hidden]{display:none}
.basket-tags::-webkit-scrollbar{display:none}
.basket-tag-chip{flex:none;display:inline-flex;align-items:baseline;gap:5px;height:24px;padding:0 9px;border:1px solid var(--c-d2d7cc);border-radius:999px;background:var(--c-ffffff);font:inherit;font-size:10px;line-height:22px;color:var(--t-596651);cursor:pointer;transition:background-color .2s,border-color .2s,color .2s}
.basket-tag-chip small{font-size:9px;color:var(--t-818b79)}
.basket-tag-chip:hover{border-color:var(--c-384bff);color:var(--t-384bff)}
.basket-tag-chip[aria-pressed="true"]{background:var(--c-242d28);border-color:var(--c-242d28);color:var(--t-ffffff)}
.basket-tag-chip[aria-pressed="true"] small{color:var(--t-c9cfc2)}
/* Undo bar */
.basket-snack{position:absolute;left:12px;right:12px;bottom:12px;z-index:5;display:flex;align-items:center;gap:12px;padding:10px 12px 10px 14px;background:var(--c-242d28);color:var(--t-ffffff);font-size:11px;line-height:1.5;box-shadow:0 14px 30px -14px #10111788}
.basket-snack[hidden]{display:none}
.basket-snack.is-shown{animation:basket-snack-in .3s cubic-bezier(.2,.7,.1,1)}
@keyframes basket-snack-in{from{opacity:0;translate:0 10px}}
.basket-snack span{flex:1}
.basket-snack button{flex:none;height:28px;padding:0 10px;border:1px solid var(--c-ffffff50);background:transparent;font:inherit;font-size:11px;color:var(--t-ffffff);cursor:pointer}
.basket-snack button:hover{background:var(--c-ffffff20)}
.basket-snack button[hidden]{display:none}
.basket-body{position:relative}
/* Resize from every edge and corner (window and pins). Corners show a faint bracket while hovering. */
.basket-edge{position:absolute;z-index:4;touch-action:none}
.basket-edge.is-n,.basket-edge.is-s{left:14px;right:14px;height:6px;cursor:ns-resize}
.basket-edge.is-n{top:0}.basket-edge.is-s{bottom:0}
.basket-edge.is-e,.basket-edge.is-w{top:14px;bottom:14px;width:6px;cursor:ew-resize}
.basket-edge.is-e{right:0}.basket-edge.is-w{left:0}
.basket-edge.is-ne,.basket-edge.is-se,.basket-edge.is-sw,.basket-edge.is-nw{width:16px;height:16px}
.basket-edge.is-ne{top:0;right:0;cursor:nesw-resize}.basket-edge.is-sw{bottom:0;left:0;cursor:nesw-resize}
.basket-edge.is-nw{top:0;left:0;cursor:nwse-resize}.basket-edge.is-se{bottom:0;right:0;cursor:nwse-resize}
.basket-edge.is-ne::after,.basket-edge.is-se::after,.basket-edge.is-sw::after,.basket-edge.is-nw::after{content:"";position:absolute;width:8px;height:8px;border:0 solid var(--c-9aa293);opacity:0;transition:opacity .2s}
.basket-edge.is-nw::after{top:3px;left:3px;border-top-width:1.5px;border-left-width:1.5px}
.basket-edge.is-ne::after{top:3px;right:3px;border-top-width:1.5px;border-right-width:1.5px}
.basket-edge.is-sw::after{bottom:3px;left:3px;border-bottom-width:1.5px;border-left-width:1.5px}
.basket-edge.is-se::after{bottom:3px;right:3px;border-bottom-width:1.5px;border-right-width:1.5px;opacity:.7}
.basket-window:hover>.basket-edge::after,.basket-pin:hover>.basket-edge::after,.basket-edge:hover::after{opacity:1}
.basket-window.is-min>.basket-edge{display:none}

/* ---- Board ---- */
.basket-board{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;padding:12px 14px 40px;border-top:1px solid var(--c-e5e8df);background-color:var(--c-f2f1ec);background-image:radial-gradient(var(--c-d3d8cc) 1px,transparent 1.3px);background-size:18px 18px;scrollbar-width:thin}
.basket-board[hidden]{display:none}
.basket-canvas{position:relative;min-height:100%}
.basket-card{position:absolute;display:block;padding:6px 6px 7px;background:var(--c-ffffff);box-shadow:0 10px 22px -14px #18203066,0 1px 0 #1820300d;cursor:grab;user-select:none;-webkit-user-select:none;touch-action:none;rotate:calc(var(--card-r,0deg) + var(--pull-r,0deg));translate:var(--pull-x,0) var(--pull-y,0);scale:var(--pull-s,1);transform-origin:50% 12%;transition:box-shadow .25s}
.basket-card:hover{box-shadow:0 22px 38px -20px #18203088,0 1px 0 #1820300d}
/* Hover tilt with a moving sheen, as on the gallery wall. */
.basket-card-image{position:relative;transform:perspective(700px) rotateX(var(--tilt-y,0deg)) rotateY(var(--tilt-x,0deg));transition:transform .3s ease-out}
.basket-card-image::after{content:"";position:absolute;inset:0;background:radial-gradient(circle at var(--glare-x,50%) var(--glare-y,50%),var(--c-ffffff59),var(--c-ffffff00) 55%);opacity:0;transition:opacity .3s;pointer-events:none;mix-blend-mode:soft-light}
.basket-card:hover .basket-card-image::after{opacity:1}
.basket-card-image img{transition:scale .45s ease}
.basket-card:hover .basket-card-image img{scale:1.04}
.basket-card.is-entering{animation:basket-card-in .62s cubic-bezier(.2,.75,.15,1.08) var(--enter-delay,0ms) both}
@keyframes basket-card-in{from{opacity:0;translate:0 22px;scale:.9;rotate:calc(var(--card-r,0deg) + 5deg)}}
.basket-card:focus-visible{outline:2px solid var(--c-384bff);outline-offset:3px}
.basket-card.is-dragging{cursor:grabbing;scale:1.04;rotate:calc(var(--card-r,0deg) * .5);box-shadow:0 26px 44px -20px #18203088;transition:none}
.basket-card.is-scaling{box-shadow:0 0 0 1px #384bff,0 20px 36px -20px #18203088;transition:none}
.basket-card-image{display:block;overflow:hidden;background:var(--c-eef0ea)}
.basket-card-image img{display:block;width:100%;height:100%;object-fit:cover;pointer-events:none}
.basket-card-image.is-unavailable{display:grid;place-items:center;padding:12px;text-align:center;font-size:10px;line-height:1.7;color:var(--t-818b79);background:repeating-linear-gradient(-45deg,var(--c-eef0ea) 0 8px,var(--c-e6e9e1) 8px 16px)}
.basket-kind{position:absolute;top:10px;left:10px;padding:2px 6px;font-size:9px;letter-spacing:.12em;color:var(--t-ffffff);background:var(--c-242d28)}
.basket-kind.is-ref{background:var(--c-384bff)}
.basket-kind.is-versions{background:var(--c-f7f6f1e6);color:var(--t-242d28);letter-spacing:.04em}
.basket-labels{position:absolute;top:10px;left:10px;display:flex;flex-wrap:wrap;gap:3px;max-width:calc(100% - 20px);pointer-events:none}
.basket-labels .basket-kind,.basket-labels.is-static{position:static}
.basket-card-title{display:block;margin-top:5px;font-size:10px;line-height:1.4;color:var(--t-354d30);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* Hover actions on each card: pin to compare, remove (references) or hide (own works). */
.basket-card-actions{position:absolute;top:8px;right:8px;display:flex;gap:4px;opacity:0;translate:0 -3px;transition:opacity .2s,translate .2s}
.basket-card:hover .basket-card-actions,.basket-card:focus-within .basket-card-actions,.basket-card:has(.is-unavailable) .basket-card-actions,.basket-card.is-hidden-work .basket-card-actions{opacity:1;translate:0 0}
.basket-card-action{height:24px;min-width:24px;padding:0 8px;border:1px solid var(--c-ffffffb3);border-radius:999px;background:var(--c-f7f6f1e6);font:inherit;font-size:10px;line-height:1;color:var(--t-242d28);cursor:pointer;transition:border-color .2s,color .2s,background-color .2s}
.basket-card-action:hover,.basket-card-action:focus-visible{border-color:var(--c-384bff);color:var(--t-384bff)}
.basket-card-action.is-remove{width:24px;padding:0;font-size:13px}
.basket-card-action.is-remove:hover,.basket-card-action.is-remove:focus-visible{border-color:var(--c-a34642);background:var(--c-fff1ed);color:var(--t-873f3b)}
.basket-card.is-hidden-work .basket-card-image{opacity:.6}
.basket-card-scale{position:absolute;width:14px;height:14px;border:1px solid var(--c-9aa293);border-radius:4px;background:var(--c-ffffff);touch-action:none;opacity:0;transition:opacity .2s,scale .2s}
.basket-card-scale.is-se{right:-5px;bottom:-5px;cursor:nwse-resize}.basket-card-scale.is-nw{left:-5px;top:-5px;cursor:nwse-resize}
.basket-card-scale.is-ne{right:-5px;top:-5px;cursor:nesw-resize}.basket-card-scale.is-sw{left:-5px;bottom:-5px;cursor:nesw-resize}
.basket-card-scale:hover{scale:1.25;border-color:var(--c-384bff)}
.basket-board.is-free .basket-card:hover .basket-card-scale,.basket-card.is-scaling .basket-card-scale{opacity:1}
.basket-board:not(.is-free):not(.is-flow) .basket-card:hover .basket-card-scale{opacity:.6}
.basket-board.is-flow .basket-card-scale{display:none}
.basket-canvas.is-arranging .basket-card{transition:left .62s cubic-bezier(.2,.7,.1,1),top .62s cubic-bezier(.2,.7,.1,1),width .62s cubic-bezier(.2,.7,.1,1),rotate .62s cubic-bezier(.2,.7,.1,1),box-shadow .25s}
.basket-card.is-dropping{animation:basket-drop .9s cubic-bezier(.2,.7,.1,1) var(--drop-delay,0ms) both}
@keyframes basket-drop{
 0%{opacity:0;translate:0 -120px;rotate:calc(var(--card-r,0deg) - 12deg)}
 55%{opacity:1;translate:0 8px;rotate:calc(var(--card-r,0deg) + 3deg)}
 78%{translate:0 -3px}
 100%{opacity:1;translate:0 0;rotate:var(--card-r,0deg)}
}
.basket-empty{display:grid;place-content:center;gap:12px;flex:1;padding:30px 20px;text-align:center;font-size:12px;line-height:1.9;color:var(--t-727e6b)}
.basket-empty[hidden]{display:none}
.basket-empty a{color:var(--t-4858a3);text-decoration:underline;text-underline-offset:4px}
/* Plain grid for touch, narrow screens and reduced motion */
.basket-board.is-flow .basket-canvas{columns:2;column-gap:12px;height:auto!important}
.basket-board.is-flow .basket-card{position:relative;width:auto!important;left:auto!important;top:auto!important;margin:0 0 12px;break-inside:avoid;rotate:none;translate:none;scale:none;cursor:pointer;touch-action:auto}
/* Touch / narrow: actions sit in their own row under the title, clear of the labels on the image. */
.basket-board.is-flow .basket-card-actions{position:static;justify-content:flex-end;margin-top:6px;opacity:1;translate:0 0}
.basket-board.is-flow .basket-card-action{height:32px;min-width:32px;border-color:var(--c-d2d7cc)}
.basket-board.is-flow .basket-card-action.is-remove{width:32px}
.basket-board.is-flow .basket-card-image{transform:none}

/* ---- In-window detail (compact; the full-screen panel stays a gallery thing) ---- */
.basket-view{flex:1;min-height:0;overflow:auto;padding:10px 14px 18px;scrollbar-width:thin;background:var(--c-f7f6f1)}
.basket-view.is-closing{position:absolute;inset:0;z-index:6;overflow:hidden}
/* Cards keep their stacking order inside the board, so the folding detail always stays above them. */
.basket-board{isolation:isolate}
.basket-view[hidden]{display:none}
.basket-view-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.basket-view-head .basket-kind{position:static}
.basket-back{height:30px;padding:0 4px;border:0;background:none;font:inherit;font-size:12px;color:var(--t-4858a3);cursor:pointer}
.basket-view-figure{margin:0;background:var(--c-ffffff);border:1px solid var(--c-e5e8df);padding:6px}
.basket-view-image{display:block;width:100%;max-height:300px;object-fit:contain;background:var(--c-ffffff)}
.basket-view-tabs{display:flex;gap:4px;margin:8px 0 12px}
.basket-view-tab{height:28px;padding:0 10px;border:1px solid var(--c-c9cfc2);background:transparent;font:inherit;font-size:11px;color:var(--t-596651);cursor:pointer}
.basket-view-tab[aria-pressed="true"]{border-color:var(--c-242d28);background:var(--c-242d28);color:var(--t-ffffff)}
.basket-view .gallery-meta{margin:0 0 4px}
.basket-view-title{margin:0 0 4px;font-size:18px;font-weight:500;letter-spacing:-.02em}
.basket-view h4{margin:14px 0 6px;font-size:10px;font-weight:500;letter-spacing:.14em;color:var(--t-657560)}
.basket-view .gallery-brief,.basket-view .gallery-points{font-size:12px}
.basket-view .detail-fold{margin-top:10px}
.basket-view-actions{display:flex;flex-direction:column;gap:6px;margin-top:16px}
.basket-view-actions .gallery-make{min-height:42px}
.basket-view-actions small{font-size:10px;line-height:1.6;color:var(--t-818b79)}
.basket-view-head .basket-labels{display:flex;gap:3px}
.basket-view-tags{margin:6px 0 2px}
.basket-view-tags button{border:0;background:none;padding:2px 0;font:inherit;color:var(--t-4858a3);cursor:pointer;text-decoration:underline;text-decoration-color:var(--t-4858a355);text-underline-offset:3px}
.basket-view-tags button:hover{color:var(--t-384bff);text-decoration-color:currentColor}
.basket-view-badge{display:inline-block;margin:6px 0 0;padding:2px 7px;font-size:10px;letter-spacing:.06em;border:1px solid var(--c-c9cfc2);color:var(--t-596651)}
.basket-versions{margin-top:-4px}
.basket-adjustments{margin:0;padding-left:1.4em;font-size:11px;line-height:1.7;color:var(--t-596651)}
.basket-text-button{align-self:flex-start;height:28px;padding:0;border:0;background:none;font:inherit;font-size:11px;color:var(--t-596651);text-decoration:underline;text-underline-offset:3px;cursor:pointer}

/* ---- Pinned comparison images ---- */
.basket-pin{position:fixed;z-index:58;display:flex;flex-direction:column;background:var(--c-ffffff);border:1px solid var(--c-cfd5c8);border-radius:10px;box-shadow:0 20px 44px -24px #18203088;overflow:hidden}
.basket-pin.is-arriving{animation:basket-pop .32s cubic-bezier(.2,.7,.1,1)}
.basket-pin.is-flash{animation:basket-flash .6s ease}
@keyframes basket-flash{30%{box-shadow:0 0 0 3px #384bff,0 20px 44px -24px #18203088}}
.basket-pin.is-moving{box-shadow:0 30px 56px -24px #18203099;user-select:none}
.basket-pin-bar{display:flex;align-items:center;gap:8px;min-height:36px;padding:0 4px 0 10px;background:var(--c-f7f6f1);border-bottom:1px solid var(--c-e5e8df);cursor:grab;touch-action:none;user-select:none}
.basket-pin-bar .basket-kind{position:static}
.basket-pin-bar strong{flex:1;min-width:0;font-size:11px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.basket-pin-figure{margin:0;background:var(--c-ffffff)}
.basket-pin-image{display:block;width:100%;height:auto;pointer-events:none}
.basket-pin .basket-view-tabs{margin:6px 8px}
.basket-pin-action{display:flex;justify-content:space-between;align-items:center;margin:0 8px 8px;height:34px;padding:0 12px;border:0;background:var(--c-242d28);color:var(--t-ffffff);font:inherit;font-size:11px;cursor:pointer}
.basket-pin-action:hover{background:var(--c-384bff)}

/* ---- The history spot in the side panel becomes the doorway into the basket ---- */
.activity-records #history-list,.activity-records #catalog-history,.activity-records #refresh-history{display:none}
.history-basket{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;width:100%;margin:12px 0 4px;padding:10px 12px;border:1px solid var(--c-d2d7cc);background:var(--c-ffffff);font:inherit;text-align:left;color:var(--t-242d28);cursor:pointer;transition:border-color .2s,box-shadow .2s}
.history-basket:hover{border-color:var(--c-384bff);box-shadow:0 10px 20px -16px #18203066}
.history-basket-thumbs{display:flex;min-width:40px;height:40px}
.history-basket-thumbs img{width:40px;height:40px;object-fit:cover;border:2px solid var(--c-ffffff);background:var(--c-eef0ea);box-shadow:0 2px 6px -2px #1820303d}
.history-basket-thumbs img+img{margin-left:-22px}
.history-basket-thumbs:empty{width:40px;background:var(--c-eef0ea)}
.history-basket-copy{display:grid;gap:2px;min-width:0}
.history-basket-copy strong{font-size:13px;font-weight:500}
.history-basket-copy small{display:flex;gap:8px;font-size:11px;color:var(--t-727e6b)}
.history-basket-count{font-family:monospace}
.history-basket-arrow{font-size:16px;color:var(--t-657560)}

@media(max-width:760px){
 .basket-tag{right:14px;bottom:14px}
 .basket-window{left:8px!important;right:8px;top:auto!important;bottom:8px;width:auto!important;height:72dvh!important;border-radius:12px}
 .basket-window.is-min{height:auto!important}
 .basket-bar{cursor:default}
 .basket-window>.basket-edge,.basket-expand{display:none}
 .basket-pin{max-width:calc(100vw - 16px)}
}
@media(prefers-reduced-motion:reduce){
 .basket-window.is-entering,.basket-pin.is-arriving,.basket-pin.is-flash,.basket-card.is-dropping,.basket-card.is-entering{animation:none}
 .basket-card-image,.basket-card-image img{transform:none;transition:none}
 .basket-tag.has-new::after{animation:none}
}
