/* The composer beside the board (Luke, 5 Oct 2026, direction A; composer.js).
   Design system v2: tokens only (v2-tokens.css), with fallbacks for a page
   that loads none. White panel, ink text, the one primary button in ink with
   citrus words, soft fills for chips. No new colours. */

/* List / Storyboard, just above the board */
.sb-viewsw{display:none;margin:18px 0 0;position:sticky;top:var(--sbar-h,68px);z-index:49;pointer-events:none}
.sb-viewsw .sbar-views{pointer-events:auto;box-shadow:0 0 0 4px var(--tint)}
html.has-sbar .sb-viewsw{display:flex}
html.has-sbar.sheet-open .sb-viewsw{display:none}
.sb-viewsw .sbar-views{background:var(--calm-2)}
html.has-sbar .sb-viewsw + #view-edit,html.has-sbar .sb-viewsw ~ #view-board{margin-top:14px}
@media (max-width:640px){.sb-viewsw .sbar-views{flex:1}.sb-viewsw .sbar-views button{flex:1}}
@media print{.sb-viewsw{display:none!important}}

/* the board and the composer, side by side */
.sb-layout{display:block}
.sb-layout.has-composer{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:24px;align-items:start}
.sb-boardmain{min-width:0}
.sb-composer{position:sticky;top:calc(var(--sbar-h,68px) + 16px);max-height:calc(100vh - var(--sbar-h,68px) - 32px);overflow:auto;box-sizing:border-box;
  background:var(--white);border:1px solid var(--line);border-radius:var(--r,16px);padding:18px;display:flex;flex-direction:column;gap:16px;color:var(--ink)}
.sb-composer[hidden]{display:none}
.sb-composer>*{flex-shrink:0}
@media (max-width:900px){
  .sb-layout.has-composer{grid-template-columns:minmax(0,1fr);gap:18px}
  .sb-composer{position:static;max-height:none;overflow:visible}
}
@media print{.sb-composer{display:none!important}.sb-layout.has-composer{display:block}}

/* the card in hand */
.sb-card.is-current{box-shadow:0 0 0 2px var(--ink);border-color:var(--ink)}
.sb-card-h .sl-size{height:32px;max-width:60%;min-width:0;padding:0 26px 0 10px;font-size:var(--fs-label);flex:0 1 auto}
.sb-card-h .sb-cardopen{margin-left:auto;height:32px;font-size:var(--fs-label);flex:none}
.sb-card{cursor:default}

.cp-head{display:flex;align-items:baseline;gap:10px}
.cp-h{font-size:var(--fs-body);font-weight:600}
.cp-bal{margin-left:auto;font-size:var(--fs-label);color:var(--ink-2);font-variant-numeric:tabular-nums;background:none;border:0;padding:0 2px;font-family:inherit;cursor:pointer;text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--field-edge);min-height:32px}
.cp-bal:hover{color:var(--ink)}
/* one balance on the board: the composer's (gap review G17); the header's stays for the phone sheet and pages without a composer */
.sb-layout:has(> .sb-composer:not([hidden])) .sb-head .sb-bal{display:none}
.cp-shot{display:flex;align-items:center;gap:8px}
.cp-shot select{flex:1;min-width:0;height:44px;border:1px solid var(--field-edge);border-radius:var(--r-s,10px);padding:0 36px 0 12px;font:inherit;font-size:var(--fs-small);font-weight:600;color:var(--ink);text-overflow:ellipsis;white-space:nowrap;overflow:hidden;
  -webkit-appearance:none;appearance:none;background:var(--white) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6 9l6 6 6-6' fill='none' stroke='%235E4D5A' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round' vector-effect='non-scaling-stroke'/%3E%3C/svg%3E") no-repeat right 12px center/16px 16px}   /* the label clears the chevron (gap review G16) */
.cp-shot .sb-round svg{width:18px;height:18px}
.cp-fields{display:flex;flex-direction:column;gap:10px;padding:12px;border-radius:var(--r-s);background:var(--tint);box-shadow:inset 0 0 0 1px var(--line)}
.cp-field{display:flex;flex-direction:column;gap:4px}
.cp-field .sb-lab{margin:0}
.cp-type .sl-size{height:40px;align-self:flex-start}
.cp-text{font-size:var(--fs-small);line-height:1.45;outline:none;min-height:1.45em;white-space:pre-wrap}
.cp-text:empty::before{content:attr(data-ph);color:var(--ink-3)}
.cp-text:focus{box-shadow:0 2px 0 var(--ink)}
.cp-text.is-read i{font-style:normal;color:var(--ink-3)}
.cp-link{font-size:var(--fs-label);font-weight:600;color:var(--ink)}

.cp-sec{display:flex;flex-direction:column;gap:8px}
.cp-sec>.sb-lab{margin:0}
.cp-tiles{display:flex;gap:8px;flex-wrap:wrap}
.cp-tile{position:relative;width:76px;padding:0;border:0;background:none;font:inherit;color:var(--ink);cursor:pointer;display:flex;flex-direction:column;gap:4px;text-align:left}
.cp-tile img{width:76px;height:76px;object-fit:cover;border-radius:var(--r-s,10px);display:block;box-shadow:inset 0 0 0 1px var(--line);background:var(--calm-2)}
.cp-tile span{font-size:var(--fs-micro);font-weight:600;line-height:1.25;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.cp-tile.is-unnamed span{color:var(--ink-2);font-weight:500}
.cp-tile[aria-pressed="true"] img{outline:2.5px solid var(--ink);outline-offset:2px}
.cp-tile:focus-visible{outline:2px solid var(--ink);outline-offset:3px;border-radius:var(--r-s,10px)}
.cp-tile .rs-ai{right:4px;top:4px}
.cp-tilewrap{position:relative;display:block}
.cp-edit{position:absolute;right:-6px;top:58px;width:28px;height:28px;border:0;border-radius:var(--r);background:var(--white);box-shadow:0 0 0 1px var(--field-edge);color:var(--ink);display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0}
.cp-edit svg{width:16px;height:16px;fill:currentColor}
.cp-edit:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
.cp-add{align-items:center;justify-content:center;height:76px;border-radius:var(--r-s,10px);box-shadow:inset 0 0 0 1px var(--field-edge);background:var(--white);gap:2px;text-align:center}
.cp-add svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round}
.cp-add span{font-size:var(--fs-micro)}

.cp-help{font-size:var(--fs-label);color:var(--ink-2);line-height:1.45;margin:0}
.cp-sec>.sb-pill{align-self:flex-start}
.cp-match{display:flex;gap:12px;align-items:center}
.cp-mpic{position:relative;flex:none;width:96px;height:64px;border-radius:var(--r-s,10px);overflow:hidden;background:var(--calm-2)}
.cp-mpic img{width:100%;height:100%;object-fit:cover;display:block}
.cp-mtog{flex:1;display:flex;flex-direction:column;gap:6px;min-width:0}
.cp-mx{width:36px;height:36px}
.cp-tog{position:relative;display:flex;align-items:center;gap:10px;min-height:32px;font-size:var(--fs-small);font-weight:600;cursor:pointer}
.cp-tog input{position:absolute;opacity:0;width:36px;height:22px;margin:0;cursor:pointer}
.cp-tog i{width:36px;height:22px;border-radius:var(--pill);background:var(--field-edge);position:relative;flex:none;transition:background .2s ease-in-out}
.cp-tog i::after{content:"";position:absolute;left:3px;top:3px;width:16px;height:16px;border-radius:var(--r-s);background:var(--white);transition:left .2s ease-in-out}
.cp-tog input:checked+i{background:var(--ink)}
.cp-tog input:checked+i::after{left:17px}
.cp-tog input:focus-visible+i{outline:2px solid var(--ink);outline-offset:2px}

.cp-styles button{height:40px}
.cp-desc{align-items:flex-start}
.cp-desc i{margin-top:2px}
.cp-desc span{display:flex;flex-direction:column;gap:2px}
.cp-desc small{font-size:var(--fs-label);font-weight:400;color:var(--ink-2);line-height:1.45}
.cp-row2{flex-direction:row;gap:18px;flex-wrap:wrap}
.cp-row2>div{display:flex;flex-direction:column;gap:8px}
.cp-go{display:flex;align-items:center;gap:12px;border-top:1px solid var(--line);padding-top:14px}
.cp-go span{flex:1;font-size:var(--fs-label);color:var(--ink-2)}
.cp-go .sb-btn{height:48px}
.cp-go .sb-primary:focus-visible{outline:2px solid var(--ink);outline-offset:2px}

.cp-opts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.cp-opt{display:flex;flex-direction:column;gap:6px;align-items:flex-start}
.cp-opt .sb-frame{width:100%}
.cp-opt .sb-frame img{position:absolute}
.cp-opt .sb-pill{height:34px}
.cp-err{margin:0;font-size:var(--fs-small);color:var(--danger);font-weight:600}
.cp-fail{display:flex;flex-direction:column;align-items:flex-start;gap:8px}
.cp-picked{display:flex;gap:12px;padding:12px;border-radius:var(--r-s);background:var(--calm-1)}
.cp-picked>.sb-frame{flex:none;width:112px;align-self:flex-start}
.cp-picked .sb-frame img{position:absolute}
.cp-pickedb{flex:1;min-width:0;display:flex;flex-direction:column;gap:8px}
.cp-pickedb b{font-size:var(--fs-small)}
.cp-pickedf{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.cp-words{width:100%;box-sizing:border-box;font:inherit;font-size:var(--fs-small);padding:9px 11px;border:1px solid var(--field-edge);border-radius:var(--r-s,10px);color:var(--ink);background:var(--white);resize:vertical}
.cp-words:focus-visible{outline:2px solid var(--ink);outline-offset:1px}
.cp-vpic{display:flex;flex-direction:column;gap:10px}
.cp-vpic>.sb-frame{width:100%;max-height:260px}
.cp-vpic .sb-frame img{position:absolute}
.cp-priv{margin:0;font-size:var(--fs-micro);color:var(--ink-2)}
.cp-priv a{color:var(--ink);font-weight:600}
.cp-ptile{position:relative}
.cp-ptile span{position:absolute;left:6px;bottom:6px;font-size:var(--fs-micro);font-weight:700;padding:2px 7px;border-radius:var(--r-s);background:var(--white);color:var(--ink)}
@media (max-width:420px){.sb-composer{padding:14px}.cp-picked{flex-direction:column}.cp-picked>.sb-frame{width:100%}}

/* the composer over the moodboard: a sheet at the side */
.cp-sheet-back{position:fixed;inset:0;z-index:2147481000;background:var(--ink-a35,rgba(42,23,51,.35));display:flex;justify-content:flex-end}
.cp-sheet{width:min(440px,100%);height:100%;overflow:auto;box-sizing:border-box;background:var(--white);box-shadow:var(--float,0 8px 48px rgba(0,0,0,.15));display:flex;flex-direction:column}
.cp-sheet-top{display:flex;align-items:center;gap:10px;padding:14px 18px 0}
.cp-sheet-top b{flex:1;font-size:var(--fs-label);color:var(--ink-2);font-weight:600}
.cp-sheet .sb-composer{position:static;max-height:none;border:0;border-radius:0}
