.dict-stage{
  padding:0;
  height:100vh;
  box-sizing:border-box;
  display:flex;
  flex-direction:column;
  overflow:hidden;
  position:relative; /* anchors the floating topics dropdown */
}

/* Compact one-row header — the display wordmark shrinks to a nameplate */
.dict-stage .masthead{
  display:flex;align-items:center;gap:30px;
  padding:12px 22px 10px;
  border-bottom:1px solid rgba(var(--ink-rgb),.14);
  flex:none;
}
.dict-stage .wordmark{
  font-size:21px;letter-spacing:-.03em;line-height:1;
  align-items:center;
}
.dict-stage .wm-dot{ width:.2em;height:.2em;margin-bottom:0; }
.dict-stage .wm-rule{ display:none; }
.dict-stage .nav{
  flex:1;padding:0;font-size:12.5px;
  gap:clamp(12px,2.5vw,36px);
}

.dict-toolbar{
  display:flex;align-items:center;justify-content:space-between;
  padding:10px 22px 8px;
  margin-bottom:0;flex-wrap:wrap;gap:10px;
}
.dict-toolbar-left{display:flex;align-items:center;gap:10px;}
.dict-toolbar-right{display:flex;align-items:center;gap:8px;}
/* search-forward toolbar: prominent centred search, small tools either side */
.dict-toolbar--search{gap:14px;}
.dict-toolbar--search .dict-toolbar-left,
.dict-toolbar--search .dict-toolbar-right{flex:1 1 0;min-width:0;}
.dict-toolbar--search .dict-toolbar-right{justify-content:flex-end;}
.dict-toolbar-center{flex:0 1 560px;min-width:0;display:flex;justify-content:center;}
.dict-toolbar-center .dict-search-wrap{width:100%;max-width:560px;}
.dict-search-icon{
  position:absolute;left:14px;top:50%;transform:translateY(-50%);
  color:var(--mute);pointer-events:none;z-index:1;
}
.dict-toolbar-center .dict-search{
  width:100%;padding:11px 14px 11px 38px;font-size:13px;border-radius:999px;
  border:1px solid rgba(var(--ink-rgb),.28);
  transition:border-color .18s, box-shadow .18s;
}
.dict-toolbar-center .dict-search::placeholder{color:var(--mute);opacity:.85;}
.dict-toolbar-center .dict-search:focus{
  border-color:var(--accent);
  box-shadow:0 0 0 3px rgba(var(--accent-rgb),.14);
}
.dict-toolbar-center .dict-dropdown{left:0;right:0;width:auto;}

.dict-btn{
  font-family:"Inter",system-ui,sans-serif;font-size:11px;letter-spacing:.02em;
  padding:7px 13px;cursor:pointer;background:none;border:1px solid var(--rule);color:var(--ink);
}
.dict-btn--solid{background:var(--ink);color:var(--paper);}
.dict-btn:hover{background:var(--ink);color:var(--paper);}

.dict-current-label{font-size:11px;color:var(--mute);}

.dict-search-wrap, .dict-fav-wrap{position:relative;}
.dict-search{
  width:150px;box-sizing:border-box;background:var(--paper);
  border:1px solid var(--rule);padding:7px 9px;font-size:11px;
  font-family:"Inter",system-ui,sans-serif;color:var(--ink);outline:none;
}
.dict-dropdown{
  display:none;position:absolute;right:0;top:100%;margin-top:2px;
  width:200px;max-height:280px;overflow-y:auto;
  background:var(--paper);border:1px solid var(--rule);z-index:30;
}
.dict-dropdown.is-open{display:block;}
.dict-dropdown-row{
  font-size:11.5px;padding:8px 12px;cursor:pointer;
  border-bottom:1px solid rgba(var(--ink-rgb),.08);
}
.dict-dropdown-row:hover{background:rgba(var(--accent-rgb),.10);}
.dict-dropdown-empty{font-size:10.5px;color:var(--mute);padding:9px 12px;}

/* Topics dropdown: drops down below the toolbar (in flow, full width) with
   the index's design language and a smooth expand animation */
.dict-inline-menu{
  margin:0 22px;
  max-height:0;overflow:hidden;
  border:1px solid transparent;border-radius:12px;
  background:var(--paper);
  padding:0 10px;box-sizing:border-box;
  opacity:0;transform:translateY(-6px);
  transition:max-height .45s cubic-bezier(.22,.8,.28,1), opacity .3s,
    transform .35s cubic-bezier(.22,.8,.28,1), margin .3s, border-color .3s, padding .3s;
}
.dict-inline-menu.is-open{
  max-height:min(440px,58vh);
  overflow-y:auto;
  margin-bottom:12px;
  border-color:rgba(var(--ink-rgb),.14);
  box-shadow:0 12px 40px rgba(0,0,0,.10);
  padding:4px 10px 12px;
  opacity:1;transform:none;
}
.dict-topic-group-label{
  font-size:9.5px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--mute);
  padding:13px 6px 7px;
}
.dict-inline-grid{display:grid;grid-template-columns:1fr 1fr;gap:4px;}
@media (max-width:760px){ .dict-inline-grid{grid-template-columns:1fr;} }
.dict-topic-row{
  --sec:#888;
  display:flex;align-items:center;gap:9px;
  font-size:12px;color:var(--ink);font-weight:600;
  padding:9px 10px;cursor:pointer;
  border:1px solid transparent;border-left:3px solid var(--sec);
  border-radius:8px;
  transition:background .2s,border-color .2s;
}
.dict-topic-row:hover{
  background:rgba(var(--ink-rgb),.05);
  border-color:var(--sec);
}
.dict-topic-swatch{ width:9px;height:9px;border-radius:3px;background:var(--sec);flex:none; }
.dict-topic-name{ flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
.dict-topic-count{ font-size:9.5px;color:var(--mute);font-weight:700; }

.dict-layout{display:flex;gap:0;align-items:stretch;flex:1;min-height:0;}

.dict-board{
  flex:1;min-width:0;display:flex;align-items:stretch;
  border:none;border-top:1px solid rgba(var(--ink-rgb),.12);
  background:var(--board-bg);
  overflow:hidden;
}
.dict-board-inner{flex:1;min-width:0;position:relative;}

.dict-back{
  display:none;position:absolute;left:12px;top:12px;z-index:5;
  background:var(--paper);border:1px solid var(--rule);color:var(--ink);
  font-size:11px;padding:6px 12px;cursor:pointer;font-family:"Inter",system-ui,sans-serif;
}
.dict-back.is-visible{display:block;}

.dict-ring-stage{
  position:relative;width:100%;height:100%;overflow:hidden;cursor:grab;touch-action:none;
  user-select:none;-webkit-user-select:none;-moz-user-select:none;
}
.dict-ring-stage.is-panning{cursor:grabbing;}
.dict-stage-inner{position:absolute;inset:0;transform-origin:center center;}
.dict-ring-badge img{-webkit-user-drag:none;user-drag:none;pointer-events:none;}
.dict-ring-prompt{
  position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  text-align:center;color:var(--mute);font-size:13px;padding:0 40px;
}

.dict-ring-node{
  position:absolute;text-align:center;cursor:pointer;width:88px;
  transform:translate(-50%,-50%);transition:transform .15s;
}
.dict-ring-node:hover{transform:translate(-50%,-50%) scale(1.08);}

.dict-ring-badge{
  border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-weight:500;margin:0 auto 4px;overflow:hidden;
}
.dict-ring-badge img{
  width:100%;height:100%;object-fit:cover;border-radius:50%;display:block;
}
.dict-ring-name{font-size:11px;line-height:1.25;}
.dict-ring-overflow{font-size:9px;color:var(--mute);margin-top:2px;}

.dict-ring-center .dict-ring-name{font-size:16px;font-weight:500;max-width:190px;margin:0 auto;}
.dict-ring-center .dict-ring-role{font-size:10px;color:var(--mute);margin-top:2px;}

/* Info panel: slide-in overlay from the right — closed until an entry opens.
   Contained to the graph area (below header + toolbar), up to a third wide. */
.dict-layout{ position:relative; }
.dict-panel{
  position:absolute;top:0;right:0;bottom:0;
  width:clamp(440px,42vw,760px);max-width:92%;
  background:var(--paper);
  border:none;border-left:1px solid var(--rule);
  box-shadow:-16px 0 56px rgba(0,0,0,.12);
  padding:52px 40px 24px;box-sizing:border-box;
  transform:translateX(104%);
  transition:transform .55s cubic-bezier(.22,.8,.28,1);
  z-index:60;
  flex:none;min-width:0;
  pointer-events:none; /* closed/closing: taps pass through */
}
.dict-panel.is-open{ transform:translateX(0); pointer-events:auto; }

.dict-panel-close{
  position:absolute;top:14px;left:16px;z-index:2;
  background:none;border:none;cursor:pointer;
  color:var(--mute);font-size:14px;line-height:1;padding:4px;
}
.dict-panel-close:hover{ color:var(--ink); }
.dict-sheet-grab{ display:none; } /* only shown on the mobile bottom sheet */

.dict-panel-scroll{height:100%;overflow-y:auto;padding-right:6px;}

/* Save pill — on the left, in line with the close button */
.dict-save-btn{
  position:absolute;top:11px;left:44px;z-index:2;
  font-size:11px;font-weight:700;letter-spacing:.04em;
  padding:7px 15px;border-radius:999px;cursor:pointer;
  background:var(--accent);color:#fff;border:none;
  font-family:"Inter",system-ui,sans-serif;
}
.dict-save-btn:hover{ background:var(--accent-2); }
.dict-save-btn.is-saved{ background:var(--ink);color:var(--paper); }
/* entry hero photo — a visual anchor before the text begins */
.dict-panel-hero{
  display:none;position:relative;
  margin:0 0 18px;
  border:1px solid rgba(var(--ink-rgb),.14);
  border-top:3px solid var(--psec,var(--accent));
  overflow:hidden;
  background:rgba(var(--ink-rgb),.05);
}
.dict-panel-hero img{
  width:100%;aspect-ratio:16/8.5;object-fit:cover;object-position:center 22%;
  display:block;filter:grayscale(.12);
  transition:filter .5s ease;
}
.dict-panel-hero:hover img{filter:grayscale(0)}

.dict-panel-sec{
  display:flex;align-items:center;gap:10px;
  font-size:9.5px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;
  color:var(--psec,var(--accent));margin-bottom:12px;
}
.dict-panel-sec:not(:empty)::after{content:"";flex:1;height:1px;background:rgba(var(--ink-rgb),.14);}
.dict-panel-name{
  font-size:clamp(26px,2.3vw,36px);font-weight:800;letter-spacing:-.025em;
  line-height:1.05;margin-bottom:7px;max-width:calc(100% - 60px);
}
.dict-panel-role{
  font-size:10px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;
  color:var(--mute);margin-bottom:12px;
}
.dict-panel-tagline{
  font-size:15px;font-style:italic;font-weight:500;color:var(--ink);opacity:.82;
  margin-bottom:22px;line-height:1.55;max-width:52ch;
}
.dict-panel-desc{font-size:13.5px;line-height:1.75;color:var(--ink);opacity:.88;max-width:60ch;}
.dict-panel-section{margin-bottom:28px;}
.dict-panel-label{
  display:flex;align-items:center;gap:10px;
  font-size:9.5px;font-weight:700;letter-spacing:.15em;text-transform:uppercase;
  color:var(--ink);margin-bottom:12px;
}
.dict-panel-label:not(:empty)::after{content:"";flex:1;height:1px;background:rgba(var(--ink-rgb),.12);}

.dict-tagchips{display:flex;flex-wrap:wrap;gap:6px;}
.dict-tagchip{
  font-size:10px;font-weight:600;letter-spacing:.03em;padding:4px 10px;color:var(--mute);
  border:1px solid rgba(var(--ink-rgb),.22);
  transition:color .2s,border-color .2s;
}
.dict-tagchip:hover{color:var(--ink);border-color:rgba(var(--ink-rgb),.5);}

.dict-watch{
  display:flex;align-items:center;gap:12px;text-decoration:none;color:inherit;
  border:1px solid rgba(var(--ink-rgb),.14);padding:10px;
  transition:background .25s,border-color .25s;
}
.dict-watch:hover{background:rgba(var(--ink-rgb),.04);border-color:rgba(var(--ink-rgb),.3);}
.dict-watch-thumb{
  position:relative;width:152px;height:85px;flex-shrink:0;background:rgba(var(--ink-rgb),.08);
  overflow:hidden;
}
.dict-watch-thumb img{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none;-webkit-user-drag:none;}
.dict-watch-play{
  position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  width:42px;height:30px;background:rgba(var(--ink-rgb),.85);border-radius:5px;
  display:flex;align-items:center;justify-content:center;
}
.dict-watch-play-tri{
  width:0;height:0;margin-left:2px;
  border-top:7px solid transparent;border-bottom:7px solid transparent;
  border-left:10px solid var(--paper);
}
.dict-watch-body{min-width:0;}
.dict-watch-title{font-size:12.5px;color:var(--ink);line-height:1.4;}
.dict-watch-sub{font-size:10px;color:var(--mute);margin-top:3px;}
.dict-watch:hover .dict-watch-thumb{opacity:.88;}

.dict-keyworks{display:grid;grid-template-columns:1fr 1fr;}
.dict-keywork{
  position:relative;padding:18px;box-sizing:border-box;
  border-right:1px solid rgba(var(--ink-rgb),.18);
  border-bottom:1px solid rgba(var(--ink-rgb),.18);
}
.dict-keywork.dict-kw-no-right{border-right:none;}
.dict-keywork.dict-kw-no-bottom{border-bottom:none;}
.dict-keywork-corner{position:absolute;width:9px;height:9px;}
.dict-keywork-corner.tl{top:7px;left:7px;border-top:1px solid rgba(var(--ink-rgb),.45);border-left:1px solid rgba(var(--ink-rgb),.45);}
.dict-keywork-corner.tr{top:7px;right:7px;border-top:1px solid rgba(var(--ink-rgb),.45);border-right:1px solid rgba(var(--ink-rgb),.45);}
.dict-keywork-corner.bl{bottom:7px;left:7px;border-bottom:1px solid rgba(var(--ink-rgb),.45);border-left:1px solid rgba(var(--ink-rgb),.45);}
.dict-keywork-corner.br{bottom:7px;right:7px;border-bottom:1px solid rgba(var(--ink-rgb),.45);border-right:1px solid rgba(var(--ink-rgb),.45);}
.dict-keywork-title{font-size:12px;font-weight:600;color:var(--ink);margin:5px 0 1px;}
.dict-keywork-year{font-size:9.5px;color:var(--mute);margin-bottom:9px;}
.dict-keywork-photo{
  width:100%;aspect-ratio:16/9;background:rgba(var(--ink-rgb),.08);
  overflow:hidden;margin-bottom:8px;position:relative;
}
.dict-keywork-photo--vertical{aspect-ratio:4/5;}
.dict-keywork-photo img{
  width:100%;height:100%;object-fit:cover;display:block;
  pointer-events:none;-webkit-user-drag:none;transform-origin:50% 50%;
}
/* Hotlinked (not re-hosted) photo — Pinterest-style: show the image, credit
   the source, link through to it. The img itself stays pointer-events:none
   (matches downloaded photos), but the credit chip is clickable. */
.dict-keywork-photo--hotlink .dict-keywork-credit{
  position:absolute;left:0;right:0;bottom:0;z-index:2;
  font-size:9px;letter-spacing:.03em;color:#fff;
  background:linear-gradient(to top, rgba(0,0,0,.55), rgba(0,0,0,0));
  padding:14px 7px 5px;pointer-events:auto;
  text-decoration:none;
}
.dict-keywork-photo--hotlink .dict-keywork-credit:hover{text-decoration:underline;}
.dict-keywork-desc{font-size:11px;line-height:1.5;color:var(--ink);opacity:.82;}
.dict-keywork-noimg .dict-keywork-year{margin-bottom:3px;}

.dict-further-reading{display:flex;flex-direction:column;gap:6px;}
.dict-further-reading a{
  font-size:12px;color:var(--ink);text-decoration:none;
  display:flex;align-items:baseline;gap:6px;
}
.dict-further-reading a:hover{color:var(--accent);}
.dict-further-reading .dict-fr-source{font-size:9.5px;color:var(--mute);text-transform:uppercase;letter-spacing:.06em;flex-shrink:0;}
.dict-further-reading .dict-fr-title{border-bottom:1px solid rgba(var(--ink-rgb),.3);}

.dict-quote{
  margin:0 0 8px;padding:4px 0 4px 18px;border-left:3px solid var(--psec,var(--accent));
  font-size:16.5px;line-height:1.55;font-style:italic;font-weight:500;color:var(--ink);
  letter-spacing:-.01em;
}
.dict-quote-attr{
  font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
  color:var(--mute);padding-left:21px;
}

.dict-tags{display:flex;flex-wrap:wrap;gap:6px;}
.dict-tag{
  font-size:11px;padding:4px 10px;cursor:pointer;
  border:1px dashed rgba(var(--ink-rgb),.45);color:var(--ink);
}
.dict-tag:hover{border-color:var(--ink);}

.dict-links{
  display:grid;grid-template-columns:1fr 1fr;gap:6px;
}
.dict-link-row{
  font-size:12.5px;padding:8px 11px;cursor:pointer;
  border-left:2px solid var(--accent);background:rgba(var(--accent-rgb),.05);
  transition:background .2s,padding-left .25s cubic-bezier(.22,.8,.28,1);
  min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.dict-link-row:hover{background:rgba(var(--accent-rgb),.14);padding-left:15px;}
.dict-link-row .dict-link-role{font-size:9px;color:var(--mute);text-transform:uppercase;letter-spacing:.06em;display:block;margin-bottom:2px;}
.dict-link-row.is-plain{cursor:default;border-left-color:rgba(var(--ink-rgb),.25);background:transparent;}
.dict-link-row.is-plain:hover{padding-left:11px;}
.dict-links .dict-edit-btn{grid-column:1 / -1;justify-self:start;}

/* ---- Admin edit mode ---- */
.dict-edit-btn{
  font-family:"Inter",system-ui,sans-serif;font-size:10px;cursor:pointer;
  background:none;border:1px solid rgba(var(--ink-rgb),.3);color:var(--mute);
  padding:2px 7px;margin-left:8px;vertical-align:middle;
}
.dict-edit-btn:hover{border-color:var(--accent);color:var(--accent);}
.dict-edit-btn--inline{margin-left:0;}
.dict-editable-text.is-placeholder{color:var(--mute);font-style:italic;}

.dict-admin-row{margin-top:6px;}

.dict-edit-input{
  display:block;width:100%;box-sizing:border-box;
  font-family:"Inter",system-ui,sans-serif;font-size:12px;color:var(--ink);
  border:1px solid rgba(var(--ink-rgb),.35);background:var(--paper);
  padding:6px 8px;margin-bottom:6px;outline:none;
}
.dict-edit-input:focus{border-color:var(--accent);}
textarea.dict-edit-input{resize:vertical;font-family:inherit;}

.dict-edit-actions{display:flex;gap:6px;margin-bottom:4px;}
.dict-edit-save,.dict-edit-cancel,.dict-edit-remove{
  font-family:"Inter",system-ui,sans-serif;font-size:10.5px;cursor:pointer;
  padding:5px 11px;border:1px solid rgba(var(--ink-rgb),.3);background:none;color:var(--ink);
}
.dict-edit-save{background:var(--ink);color:var(--paper);border-color:var(--ink);}
.dict-edit-save:hover{background:var(--accent);border-color:var(--accent);}
.dict-edit-cancel:hover{border-color:var(--ink);}
.dict-edit-danger{color:var(--accent);border-color:var(--accent);}
.dict-edit-danger:hover{background:var(--accent);color:var(--paper);}
.dict-edit-remove{
  display:inline-block;margin-left:8px;padding:0 5px;font-size:11px;
  border:none;color:var(--mute);vertical-align:middle;
}
.dict-edit-remove:hover{color:var(--accent);}

.dict-kw-edit-btn{
  position:absolute;bottom:18px;right:18px;z-index:3;
  font-family:"Inter",system-ui,sans-serif;font-size:9.5px;cursor:pointer;
  background:var(--paper);border:1px solid rgba(var(--ink-rgb),.3);color:var(--mute);
  padding:3px 7px;
}
.dict-kw-edit-btn:hover{border-color:var(--accent);color:var(--accent);}
.dict-kw-edit-form{
  position:absolute;inset:18px;z-index:4;background:var(--paper);
  border:1px solid rgba(var(--ink-rgb),.45);padding:10px;overflow-y:auto;
}

.dict-crop-frame{
  width:100%;aspect-ratio:16/9;overflow:hidden;position:relative;
  background:rgba(var(--ink-rgb),.12);margin-bottom:8px;cursor:grab;
  touch-action:none;
}
.dict-crop-frame.is-dragging{cursor:grabbing;}
.dict-crop-frame img{
  width:100%;height:100%;object-fit:cover;display:block;
  -webkit-user-drag:none;transform-origin:50% 50%;
}
.dict-crop-zoom-row{display:flex;align-items:center;gap:8px;margin-bottom:8px;}
.dict-crop-zoom-row label{font-size:9.5px;color:var(--mute);text-transform:uppercase;letter-spacing:.06em;flex-shrink:0;}
.dict-crop-zoom-row input[type="range"]{flex:1;}
.dict-crop-hint{font-size:9.5px;color:var(--mute);margin-bottom:8px;}
.dict-crop-orient-row{margin-bottom:8px;}
.dict-crop-orient-btn{font-size:9.5px;padding:3px 8px;border:1px solid rgba(var(--ink-rgb),.3);background:none;color:var(--ink);border-radius:3px;cursor:pointer;letter-spacing:.04em;}
.dict-crop-orient-btn:hover{border-color:var(--accent);color:var(--accent);}

/* ---- Admin login modal ---- */
.dict-login-overlay{
  display:none;position:fixed;inset:0;z-index:100;
  background:rgba(var(--ink-rgb),.55);
  align-items:center;justify-content:center;
}
.dict-login-overlay.is-open{display:flex;}
.dict-login-modal{
  width:280px;background:var(--paper);border:1px solid var(--rule);
  padding:22px;box-sizing:border-box;
}
.dict-login-title{font-size:14px;font-weight:600;margin-bottom:14px;color:var(--ink);}
.dict-login-error{font-size:11px;color:var(--accent);min-height:14px;margin-bottom:4px;}
.dict-login-actions{display:flex;gap:8px;margin-top:4px;}

.nav .account{cursor:pointer;}
.nav .dict-edits-nav-toggle{cursor:pointer;margin-right:14px;}
.dict-link-row.is-plain:hover{background:transparent;}

/* ---- Admin: key works add/remove ---- */
.dict-kw-remove-btn{
  position:absolute;top:18px;right:18px;z-index:3;
  font-family:"Inter",system-ui,sans-serif;font-size:11px;cursor:pointer;
  background:none;border:none;color:var(--mute);padding:0 4px;
}
.dict-kw-remove-btn:hover{color:var(--accent);}
.dict-kw-add-form{
  margin-top:10px;padding:12px;border:1px dashed rgba(var(--ink-rgb),.35);
}

/* ---- Admin: node photo ---- */
.dict-node-photo{
  width:56px;height:56px;border-radius:50%;overflow:hidden;
  background:rgba(var(--ink-rgb),.08);
}
.dict-node-photo img{width:100%;height:100%;object-fit:cover;display:block;}
.dict-node-photo-empty{
  width:100%;height:100%;display:flex;align-items:center;justify-content:center;
  font-size:9px;color:var(--mute);text-align:center;
}

/* ---- Admin: video thumbnail preview ---- */
.dict-video-edit-thumb{
  width:100%;aspect-ratio:16/9;background:rgba(var(--ink-rgb),.1);
  margin-bottom:8px;overflow:hidden;display:none;
}
.dict-video-edit-thumb.is-visible{display:block;}
.dict-video-edit-thumb img{width:100%;height:100%;object-fit:cover;display:block;}

/* ---- Admin: edits dashboard — a real flex item inside .dict-board, so
   opening it PUSHES the graph (.dict-board-inner shrinks via flex:1) rather
   than overlaying it. Width animates 0 -> --edits-w; the graph re-renders
   to the new space on transitionend. Resizable via the handle on its right
   edge. Styled to match the .dict-panel info card: flat paper, 1px border,
   no drop shadow. ---- */
.dict-edits-panel{
  --edits-w:380px;
  position:relative;flex-shrink:0;width:0;background:var(--paper);
  display:flex;flex-direction:column;overflow:hidden;
  transition:width .32s cubic-bezier(.22,.9,.28,1);
}
.dict-edits-panel.is-open{width:var(--edits-w);border-right:1px solid var(--rule);}
.dict-edits-panel.is-resizing{transition:none;}
.dict-edits-inner{width:var(--edits-w);height:100%;flex-shrink:0;display:flex;flex-direction:column;}
.dict-edits-resize-handle{
  display:none;position:absolute;top:0;right:-3px;bottom:0;width:7px;
  cursor:col-resize;z-index:5;
}
.dict-edits-panel.is-open .dict-edits-resize-handle{display:block;}
.dict-edits-resize-handle:hover,.dict-edits-panel.is-resizing .dict-edits-resize-handle{
  background:rgba(var(--accent-rgb),.25);
}
.dict-edits-header{
  display:flex;align-items:center;justify-content:space-between;
  padding:24px 26px 14px;font-size:23px;font-weight:600;flex-shrink:0;
}
.dict-edits-header button{
  font-family:"Inter",system-ui,sans-serif;font-size:16px;cursor:pointer;
  background:none;border:none;color:var(--mute);line-height:1;
}
.dict-edits-header button:hover{color:var(--accent);}
.dict-edits-summary{
  font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--mute);
  padding:0 26px 16px;flex-shrink:0;
}
.dict-edits-list{overflow-y:auto;flex:1;padding:0 26px 20px;}
.dict-edits-section-header{
  display:flex;align-items:center;gap:7px;cursor:pointer;
  padding:14px 0 7px;margin-top:4px;
  font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--mute);
  border-top:1px solid rgba(var(--ink-rgb),.14);
}
.dict-edits-section-header:first-child{border-top:none;margin-top:0;}
.dict-edits-section-header:hover{color:var(--ink);}
.dict-edits-section-caret{font-size:9px;width:9px;flex-shrink:0;}
.dict-edits-section-name{flex:1;}
.dict-edits-section-count{flex-shrink:0;color:var(--mute);}
.dict-edits-row{
  display:flex;align-items:center;justify-content:space-between;gap:8px;
  padding:10px 0;font-size:11.5px;margin:0 -26px;padding-left:26px;padding-right:26px;
  border-bottom:1px solid rgba(var(--ink-rgb),.08);cursor:pointer;
}
.dict-edits-row:hover{background:rgba(var(--accent-rgb),.06);}
.dict-edits-row-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;}
.dict-edits-badges{display:flex;gap:3px;flex-shrink:0;}
.dict-edits-badge{
  font-size:8.5px;padding:2px 5px;border:1px solid var(--accent);color:var(--accent);
  text-transform:uppercase;letter-spacing:.03em;
}
.dict-edits-row.is-unedited .dict-edits-badges::after{
  content:"—";color:var(--mute);font-size:11px;
}
.dict-edits-status{
  font-family:"Inter",system-ui,sans-serif;font-size:9.5px;
  border:1px solid rgba(var(--ink-rgb),.3);background:var(--paper);color:var(--ink);
  padding:3px 4px;flex-shrink:0;max-width:92px;
}

.dict-edits-section-header--deleted{
  margin-top:16px;border-top:1px solid rgba(var(--ink-rgb),.12);padding-top:10px;opacity:.7;
}
.dict-edits-row--deleted .dict-edits-row-name{
  text-decoration:line-through;color:var(--mute);
}
.dict-edits-row--deleted{ cursor:default; }
.dict-edits-row--deleted:hover{ background:none; }

#dDeleteAdmin:not(:empty){
  margin-top:32px;padding-top:20px;
  border-top:1px solid rgba(var(--ink-rgb),.12);
}
.dict-delete-confirm{
  font-size:12px;line-height:1.5;color:var(--mute);margin-bottom:10px;
}
.dict-edits-status[data-status="in-progress"]{border-color:#c8a030;color:#c8a030;}
.dict-edits-status[data-status="needs-review"]{border-color:#5b9ec9;color:#5b9ec9;}
.dict-edits-status[data-status="done"]{border-color:#5aaf78;color:#5aaf78;}

/* ---- Universe graph ---- */
.dict-ring-stage.is-universe{ cursor:default; }
#dUniverse{
  position:absolute;inset:0;overflow:visible;pointer-events:none;
  /* CONTAINMENT: nodes carry z-index up to 500 (hover). Without a stacking
     context here those values compete with page overlays (panels, sheets,
     pills) and nodes paint over / steal taps from UI. z-index:1 traps all
     node stacking inside the graph. Do not remove. */
  z-index:1;
}
.uv-canvas{
  position:absolute;top:0;left:0;pointer-events:none;
}
.uv-node{
  position:absolute;top:0;left:0;cursor:pointer;will-change:transform;
}

/* Universe graph node cards — landscape editorial namecard.
   Authored at 2x (500x232, shown at half scale) so text stays crisp when
   zooming deep in. The JS no-overlap math (UV_CARD_W/H) depends on this
   exact fixed footprint. */
.uv-card{
  --sec:#888;
  width:500px;height:232px;
  display:flex;
  background:var(--paper);
  border-radius:14px;
  border:1.5px solid rgba(var(--ink-rgb),.10);
  border-left:6px solid var(--sec);
  overflow:hidden;
  box-sizing:border-box;
  box-shadow:0 4px 20px rgba(var(--ink-rgb),.12), 0 20px 64px rgba(var(--ink-rgb),.08);
  transition:box-shadow .25s, border-color .25s;
}
.uv-node:hover .uv-card{
  border-color:var(--sec);
  box-shadow:0 8px 32px rgba(var(--ink-rgb),.18), 0 28px 88px rgba(var(--ink-rgb),.14);
}
/* Focused (centre) node gets a section-colored ring */
.uv-node.uv-focus .uv-card{
  border-color:var(--sec);
  box-shadow:0 0 0 4px var(--sec), 0 12px 44px rgba(var(--ink-rgb),.22), 0 36px 112px rgba(var(--ink-rgb),.16);
}
.uv-photo{
  width:184px;flex:none;
  background:rgba(var(--ink-rgb),.06);
  display:flex;align-items:center;justify-content:center;
  overflow:hidden;
}
.uv-photo img{
  width:100%;height:100%;
  object-fit:cover;object-position:center 18%;
  display:block;
  transition:filter .3s;
}
.uv-initials{
  font-size:52px;font-weight:800;
  color:var(--sec);
  letter-spacing:-.03em;
}
.uv-body{
  flex:1;min-width:0;
  padding:18px 20px 16px;
  display:flex;flex-direction:column;
}
.uv-chip{
  align-self:flex-start;
  font-size:12px;font-weight:800;line-height:1;
  text-transform:uppercase;letter-spacing:.14em;
  color:#fff;background:var(--sec);
  padding:5px 11px;border-radius:5px;
  margin-bottom:9px;
  max-width:100%;box-sizing:border-box;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.uv-name{
  font-size:27px;font-weight:800;color:var(--ink);line-height:1.08;
  letter-spacing:-.015em;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  margin-bottom:6px;
}
.uv-tagline{
  font-size:14px;color:var(--mute);line-height:1.5;font-style:italic;
  overflow:hidden;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;
  flex:1;
}
.uv-foot{
  border-top:1.5px solid rgba(var(--ink-rgb),.10);
  margin-top:8px;padding-top:8px;
  display:flex;align-items:baseline;justify-content:space-between;gap:16px;
  font-size:13px;color:var(--mute);line-height:1.2;
}
.uv-kw{
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;letter-spacing:.01em;
}
.uv-kw::before{ content:'\25c6  '; color:var(--sec); font-size:10px; }
.uv-kw--none::before{ content:''; }
.uv-deg{
  flex:none;font-weight:700;
  text-transform:uppercase;letter-spacing:.08em;
  color:var(--sec);
}
/* Level of detail: distant/small cards drop secondary text & desaturate.
   Card keeps its fixed footprint so the no-overlap math stays valid. */
.uv-node.uv-far .uv-tagline,
.uv-node.uv-far .uv-foot{ display:none; }
.uv-node.uv-far .uv-photo img{ filter:grayscale(.55) contrast(.96); }

/* Hover peek: the card grows a square tail of key-work photos (contained,
   never cropped); multiple works crossfade as a slideshow. Total open
   footprint is 500x500 — the landscape card becomes 1:1. */
.uv-peek{
  position:absolute;top:230px;left:0;
  width:500px;height:0;overflow:hidden;
  box-sizing:border-box;
  background:var(--paper);
  border:1.5px solid rgba(var(--ink-rgb),.10);border-top:none;
  border-radius:0 0 14px 14px;
  transition:height .45s cubic-bezier(.22,.8,.28,1);
  pointer-events:none;
}
.uv-node.uv-open .uv-peek{ height:268px; }
.uv-node.uv-open .uv-card{
  border-bottom-left-radius:0;border-bottom-right-radius:0;
}
/* Filmstrip: full-height images side by side, marching right-to-left.
   The doubled sequence + translateX(-50%) makes a seamless loop. */
.uv-peek-track{
  position:absolute;top:16px;bottom:16px;left:0;
  display:flex;align-items:center;
  padding-left:16px;
  width:max-content;
}
.uv-peek-track:not(.is-marquee){
  width:100%;justify-content:center;padding-left:0;box-sizing:border-box;
}
.uv-peek-track.is-marquee{
  animation:uvPeekSlide 16s linear infinite;
}
/* uniform skeleton cells (YouTube-style): a grey shimmer holds the space while
   the work loads, then the contained image fades in — no pop-in, no shift */
.uv-peek-cell{
  position:relative;flex:none;height:100%;aspect-ratio:1/1;
  margin-right:16px;border-radius:6px;overflow:hidden;
  background:rgba(var(--ink-rgb),.06);
}
.uv-peek-cell::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(100deg,transparent 28%,rgba(var(--ink-rgb),.12) 50%,transparent 72%);
  background-size:220% 100%;
  animation:uvPeekShimmer 1.25s linear infinite;
}
.uv-peek-cell.is-loaded::after{opacity:0;animation:none}
.uv-peek-im{
  position:absolute;inset:0;width:100%;height:100%;
  object-fit:contain;display:block;
  opacity:0;transition:opacity .5s ease;
}
.uv-peek-cell.is-loaded .uv-peek-im{opacity:1}
@keyframes uvPeekSlide{
  from{ transform:translateX(0); }
  to{ transform:translateX(-50%); }
}
@keyframes uvPeekShimmer{
  from{ background-position:220% 0; }
  to{ background-position:-220% 0; }
}

/* ---- Cylinder intro: section label + hint ---- */
.uv-cyl-label{
  position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  font-size:clamp(12px,1.5vw,19px);font-weight:500;
  letter-spacing:.34em;line-height:1.5;
  text-transform:uppercase;text-align:center;
  max-width:62%;
  pointer-events:none;z-index:2;
  transition:color .4s;
}
.uv-cyl-sub{
  position:absolute;left:50%;bottom:22px;transform:translateX(-50%);
  font-size:10px;font-weight:600;
  letter-spacing:.16em;text-transform:uppercase;
  color:var(--mute);white-space:nowrap;
  pointer-events:none;z-index:2;
}

/* Section rail: quiet color ticks on the right edge; the active section
   spells its name, hover previews, click glides the drum there */
.uv-cyl-rail{
  position:absolute;right:16px;top:50%;transform:translateY(-50%);
  display:flex;flex-direction:column;gap:8px;align-items:flex-end;
  z-index:600;pointer-events:auto; /* above every node (max 500) so ticks stay tappable */
}
.uv-cyl-rail-item{
  display:flex;align-items:center;gap:9px;
  cursor:pointer;padding:2px 0;
}
.uv-cyl-rail-label{
  font-size:9px;font-weight:600;
  letter-spacing:.14em;text-transform:uppercase;
  color:var(--sec);
  opacity:0;transform:translateX(5px);
  transition:opacity .25s,transform .25s;
  white-space:nowrap;max-width:220px;overflow:hidden;text-overflow:ellipsis;
  pointer-events:none;
}
.uv-cyl-rail-tick{
  width:12px;height:2px;border-radius:2px;flex:none;
  background:var(--sec);opacity:.35;
  transition:width .25s,opacity .25s;
}
.uv-cyl-rail-item:hover .uv-cyl-rail-tick{ opacity:.8;width:19px; }
.uv-cyl-rail-item:hover .uv-cyl-rail-label{ opacity:.75;transform:none; }
.uv-cyl-rail-item.is-active .uv-cyl-rail-tick{ width:27px;opacity:1; }
.uv-cyl-rail-item.is-active .uv-cyl-rail-label{ opacity:1;transform:none; }

/* ---- Boards: save popover, image save buttons, boards overlay ---- */
.dict-save-pop{
  position:fixed;z-index:420;min-width:220px; /* above the SHARED lightbox (400) — saving from it must not hide the popover */
  background:var(--paper);border:1px solid var(--rule);
  box-shadow:0 14px 44px rgba(0,0,0,.20);border-radius:10px;
  padding:6px;
}
.dict-save-pop-row{
  display:flex;justify-content:space-between;align-items:baseline;gap:14px;
  padding:8px 10px;font-size:12px;cursor:pointer;border-radius:6px;color:var(--ink);
}
.dict-save-pop-row:hover{ background:rgba(var(--ink-rgb),.06); }
.dict-save-pop-state{ color:var(--mute);font-size:10px;letter-spacing:.04em; }
.dict-save-pop-row.is-saved .dict-save-pop-state{
  color:var(--accent);font-weight:700;
  animation:dictSavedPop .4s cubic-bezier(.22,.8,.28,1);
}
@keyframes dictSavedPop{
  0%{transform:scale(1)}45%{transform:scale(1.45)}100%{transform:scale(1)}
}
.dict-save-pop-state{display:inline-block} /* so the saved pop can scale */
.dict-save-pop-new{
  display:flex;gap:6px;padding:8px 8px 6px;
  border-top:1px solid rgba(var(--ink-rgb),.10);margin-top:4px;
}
.dict-save-pop-new input{
  flex:1;min-width:0;font:inherit;font-size:11px;
  padding:6px 8px;border-radius:6px;
  border:1px solid rgba(var(--ink-rgb),.2);
  background:var(--bg);color:var(--ink);outline:none;
}
.dict-save-pop-new input:focus{ border-color:var(--accent); }
.dict-save-pop-new button{
  font:inherit;font-size:10.5px;font-weight:700;
  padding:6px 10px;border-radius:6px;border:none;cursor:pointer;
  background:var(--ink);color:var(--paper);
}
.dict-kw-save-btn{
  position:absolute;top:26px;right:8px;z-index:3;
  width:26px;height:26px;border-radius:50%;border:none;cursor:pointer;
  background:rgba(0,0,0,.55);color:#fff;font-size:15px;line-height:1;
  opacity:0;transition:opacity .2s;
}
.dict-keywork:hover .dict-kw-save-btn{ opacity:1; }

.dict-boards-overlay{
  position:fixed;inset:0;z-index:200;background:rgba(0,0,0,.45);
  display:none;align-items:center;justify-content:center;
}
.dict-boards-overlay.is-open{ display:flex; }
.dict-boards-modal{
  width:min(860px,92vw);max-height:84vh;overflow-y:auto;
  background:var(--paper);border:1px solid var(--rule);border-radius:14px;
  padding:24px 28px 28px;box-sizing:border-box;
}
.dict-boards-head{ display:flex;align-items:baseline;gap:16px;margin-bottom:20px; }
.dict-boards-title{ font-size:19px;font-weight:800;color:var(--ink);flex:1; }
.dict-boards-admin{ font-size:10.5px;color:var(--mute);cursor:pointer;text-decoration:underline; }
.dict-boards-admin:hover{ color:var(--ink); }
.dict-boards-close{ background:none;border:none;font-size:14px;cursor:pointer;color:var(--mute); }
.dict-boards-close:hover{ color:var(--ink); }
.dict-board-sec{ margin-bottom:24px; }
.dict-board-sec-head{ display:flex;gap:10px;align-items:baseline;margin-bottom:10px; }
.dict-board-sec-name{
  font-size:11.5px;font-weight:800;color:var(--ink);
  text-transform:uppercase;letter-spacing:.08em;
}
.dict-board-sec-count{ font-size:9.5px;color:var(--mute); }
.dict-board-tiles{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(122px,1fr));gap:10px;
}
.dict-board-tile{
  position:relative;cursor:pointer;overflow:hidden;
  border:1px solid rgba(var(--ink-rgb),.12);border-radius:8px;
  background:var(--bg);
}
.dict-board-tile img{ width:100%;height:88px;object-fit:cover;display:block; }
.dict-board-tile-name{
  font-size:10.5px;font-weight:600;color:var(--ink);padding:6px 8px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.dict-board-tile-x{
  position:absolute;top:5px;right:5px;z-index:2;
  width:20px;height:20px;border-radius:50%;border:none;cursor:pointer;
  background:rgba(0,0,0,.55);color:#fff;font-size:10px;line-height:1;
  opacity:0;transition:opacity .2s;
}
.dict-board-tile:hover .dict-board-tile-x{ opacity:1; }
.dict-board-empty{ font-size:11px;color:var(--mute);font-style:italic; }

/* ---- Admin dropdown/chip editors (section, role, tags, connections) ---- */
.dict-edit-select{
  font:inherit;font-size:11px;
  padding:6px 8px;border-radius:6px;
  border:1px solid rgba(var(--ink-rgb),.25);
  background:var(--paper);color:var(--ink);
  max-width:100%;cursor:pointer;
}
.dict-edit-select:focus{ outline:none;border-color:var(--accent); }
.dict-chips-editor,.dict-links-editor{
  display:flex;flex-direction:column;gap:8px;align-items:flex-start;width:100%;
}
.dict-chip-row{ display:flex;flex-wrap:wrap;gap:5px; }
.dict-tagchip--edit{ display:inline-flex;align-items:center;gap:5px; }
.dict-chip-remove{
  background:none;border:none;cursor:pointer;
  color:var(--accent);font-size:10px;padding:0 2px;line-height:1;
}
.dict-chip-remove:hover{ color:var(--accent-2); }
.dict-chip-add-row{ display:flex;gap:6px;align-items:center;flex-wrap:wrap;width:100%; }
.dict-chip-new-input{ width:150px; }
.dict-link-row.is-editing{ display:flex;align-items:center;gap:6px;cursor:default;width:100%;box-sizing:border-box;grid-column:1 / -1;white-space:normal; }
.dict-link-row.is-editing .dict-chip-remove{ margin-left:auto; }
.dict-links .dict-chip-add-row{ grid-column:1 / -1; }

/* ---- Index panel: floats ON the graph (left side), follows the drum ---- */
.dict-index-panel{
  position:absolute;left:14px;top:56px;bottom:16px;z-index:40; /* below the back button */
  width:0;overflow:hidden;flex:none;
  border-radius:12px;
  box-shadow:0 14px 48px rgba(0,0,0,.14);
  opacity:0;
  transition:width .45s cubic-bezier(.22,.8,.28,1), opacity .35s;
}
.dict-index-panel.is-open{ width:var(--index-w,320px); opacity:1; }
.dict-index-inner{
  width:var(--index-w,320px);height:100%;
  display:flex;flex-direction:column;
  border:1px solid rgba(var(--ink-rgb),.14);border-radius:12px;
  background:var(--paper);
  box-sizing:border-box;
}
.dict-index-header{
  display:flex;align-items:baseline;gap:8px;
  padding:14px 16px 10px;
  border-bottom:1px solid rgba(var(--ink-rgb),.12);
}
.dict-index-title{
  font-size:13px;font-weight:800;color:var(--ink);
  text-transform:uppercase;letter-spacing:.08em;
}
.dict-index-count{ font-size:10px;color:var(--mute);flex:1; }
.dict-index-header button{
  background:none;border:none;cursor:pointer;
  color:var(--mute);font-size:13px;padding:2px 4px;line-height:1;
}
.dict-index-header button:hover{ color:var(--ink); }
.dict-index-search-wrap{
  padding:10px 14px;
  border-bottom:1px solid rgba(var(--ink-rgb),.08);
}
.dict-index-search{
  width:100%;box-sizing:border-box;
  font:inherit;font-size:11px;
  padding:7px 10px;border-radius:6px;
  border:1px solid rgba(var(--ink-rgb),.18);
  background:var(--bg);color:var(--ink);outline:none;
}
.dict-index-search:focus{ border-color:var(--accent); }
.dict-index-list{ flex:1;overflow-y:auto;padding:10px 10px 20px;position:relative; }
/* Each topic is a clearly bounded group card with its colour as the spine */
.dict-index-sec{
  border:1px solid rgba(var(--ink-rgb),.10);
  border-left:3px solid var(--secc,#888);
  border-radius:10px;overflow:hidden;
  margin-bottom:10px;
  background:var(--paper);
  transition:border-color .3s, box-shadow .3s;
}
.dict-index-sec.is-live{
  border-color:var(--secc,#888);
  box-shadow:0 0 0 1px var(--secc,#888), 0 6px 22px rgba(0,0,0,.08);
}
.dict-index-sec.is-live .dict-index-sec-head{
  background:rgba(var(--ink-rgb),.06);
}
.dict-index-sec-head{
  display:flex;align-items:center;gap:8px;
  padding:10px 12px 9px;
  background:rgba(var(--ink-rgb),.035);
  border-bottom:1px solid rgba(var(--ink-rgb),.08);
  cursor:pointer;user-select:none;
  transition:background .3s;
}
.dict-index-swatch{ width:9px;height:9px;border-radius:3px;flex:none; }
.dict-index-sec-name{
  font-size:9.5px;font-weight:800;color:var(--ink);
  text-transform:uppercase;letter-spacing:.1em;
  flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.dict-index-sec-count{ font-size:9px;color:var(--mute);font-weight:700; }
.dict-index-caret{ font-size:8px;color:var(--mute);transition:transform .25s; }
.dict-index-sec.is-collapsed .dict-index-caret{ transform:rotate(-90deg); }
.dict-index-sec.is-collapsed .dict-index-rows{ display:none; }
.dict-index-row{
  --sec:#888;
  display:flex;align-items:center;gap:10px;
  padding:7px 16px 7px 13px;cursor:pointer;
  border-left:3px solid transparent;
}
.dict-index-row:hover{
  background:rgba(var(--ink-rgb),.05);
  border-left-color:var(--sec);
}
.dict-index-row.is-current{
  background:rgba(var(--accent-rgb),.08);
  border-left-color:var(--sec);
}
.dict-index-thumb{
  width:32px;height:32px;border-radius:6px;object-fit:cover;flex:none;
  background:rgba(var(--ink-rgb),.07);
}
.dict-index-thumb--txt{
  display:flex;align-items:center;justify-content:center;
  font-size:11px;font-weight:800;
}
.dict-index-row-main{ min-width:0;display:flex;flex-direction:column;gap:1px; }
.dict-index-row-name{
  font-size:11.5px;font-weight:700;color:var(--ink);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.dict-index-row-tag{
  font-size:8.5px;color:var(--mute);font-style:italic;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}

/* ---- "In the shop" card in the info panel ---- */
.dict-shop-card{
  display:flex;align-items:stretch;gap:0;
  border:1px solid rgba(var(--ink-rgb),.18);
  background:var(--paper);overflow:hidden;
  transition:border-color .25s;
}
.dict-shop-card:hover{border-color:var(--accent)}
.dict-shop-img{
  flex:none;width:96px;object-fit:cover;display:block;
  background:rgba(var(--ink-rgb),.06);
  transition:transform .5s var(--ease);
}
.dict-shop-card:hover .dict-shop-img{transform:scale(1.04)}
.dict-shop-txt{
  flex:1;min-width:0;padding:12px 14px;
  display:flex;flex-direction:column;gap:4px;justify-content:center;
}
.dict-shop-name{font-size:12.5px;font-weight:700;letter-spacing:-.01em}
.dict-shop-why{font-size:10.5px;line-height:1.5;color:var(--mute)}
.dict-shop-price{
  font-size:9.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;
  color:var(--accent);margin-top:3px;
}

/* ---- Annotation lightbox ---- */
.dict-lb{
  position:fixed;inset:0;z-index:240;
  display:none;flex-direction:column;align-items:center;justify-content:center;
}
.dict-lb.is-open{display:flex}
.dict-lb-backdrop{
  position:absolute;inset:0;
  background:rgba(20,18,14,.82);backdrop-filter:blur(6px);
}
.dict-lb-stage{
  position:relative;z-index:2;
  max-width:min(78vw,1100px);max-height:70vh;
  display:flex;align-items:center;justify-content:center;
  overflow:hidden;
}
.dict-lb-imgbox{
  position:relative;line-height:0;
  transform-origin:center center;
  transition:transform .12s ease-out;
  touch-action:none;
}
.dict-lb-img{
  display:block;max-width:min(78vw,1100px);max-height:70vh;
  width:auto;height:auto;
  box-shadow:0 30px 90px rgba(0,0,0,.5);
  -webkit-user-drag:none;user-select:none;
}
.dict-lb-anno{
  position:absolute;inset:0;width:100%;height:100%;
  pointer-events:none;overflow:visible;
}
.dict-lb-close{
  position:absolute;top:18px;right:22px;z-index:4;
  width:38px;height:38px;border-radius:50%;
  background:rgba(246,239,224,.12);border:1px solid rgba(246,239,224,.3);
  color:#f6efe0;font-size:15px;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  transition:background .2s;
}
.dict-lb-close:hover{background:rgba(246,239,224,.25)}
.dict-lb-arrow{
  position:absolute;top:50%;transform:translateY(-50%);z-index:4;
  width:44px;height:44px;border-radius:50%;
  background:rgba(246,239,224,.1);border:1px solid rgba(246,239,224,.28);
  color:#f6efe0;font-size:24px;line-height:0;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  transition:background .2s,transform .2s;
}
.dict-lb-arrow:hover{background:rgba(246,239,224,.22)}
.dict-lb-arrow--prev{left:26px}
.dict-lb-arrow--next{right:26px}
.dict-lb-rail{
  position:relative;z-index:3;
  display:flex;align-items:center;gap:18px;flex-wrap:wrap;justify-content:center;
  margin-top:18px;
  background:rgba(28,25,18,.85);border:1px solid rgba(246,239,224,.16);
  padding:9px 16px;border-radius:999px;
  backdrop-filter:blur(8px);
}
.dict-lb-rail-group{display:flex;align-items:center;gap:8px}
.dict-lb-rail-group + .dict-lb-rail-group{
  border-left:1px solid rgba(246,239,224,.18);padding-left:18px;
}
.dict-lb-tool{
  width:30px;height:30px;border-radius:50%;
  background:none;border:1px solid transparent;color:rgba(246,239,224,.75);
  cursor:pointer;font-size:14px;line-height:0;
  display:flex;align-items:center;justify-content:center;
  transition:color .2s,border-color .2s,background .2s;
}
.dict-lb-tool:hover{color:#f6efe0}
.dict-lb-tool.is-active{
  color:var(--accent-2);border-color:var(--accent-2);
  background:rgba(214,90,51,.14);
}
.dict-lb-swatch{
  width:15px;height:15px;border-radius:50%;padding:0;cursor:pointer;
  border:2px solid transparent;transition:transform .15s,border-color .2s;
}
.dict-lb-swatch:hover{transform:scale(1.2)}
.dict-lb-swatch.is-active{border-color:#f6efe0}
.dict-lb-swatch[data-lbcolor="accent"]{background:#d65a33}
.dict-lb-swatch[data-lbcolor="ink"]{background:#e8e3d3}
.dict-lb-swatch[data-lbcolor="blue"]{background:#4080B8}
.dict-lb-check{
  display:flex;align-items:center;gap:6px;
  font-size:9.5px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;
  color:rgba(246,239,224,.6);cursor:pointer;
}
.dict-lb-check input{accent-color:#d65a33}
.dict-lb-action{
  font-family:"Inter",system-ui,sans-serif;
  font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  background:#f6efe0;color:#1f1f1d;border:0;border-radius:999px;
  padding:8px 14px;cursor:pointer;text-decoration:none;
  transition:opacity .2s;display:inline-block;
}
.dict-lb-action:hover{opacity:.85}
.dict-lb-action.is-saved-flash{
  background:var(--accent-2);color:#f6efe0;
  animation:dictSavedPop .45s cubic-bezier(.22,.8,.28,1);
}
.dict-lb-action--ghost{
  background:none;color:rgba(246,239,224,.8);
  border:1px solid rgba(246,239,224,.3);
}
.dict-lb-action--ghost:hover{color:#f6efe0;border-color:rgba(246,239,224,.6);opacity:1}
.dict-lb-caption{
  position:relative;z-index:3;margin-top:12px;
  display:flex;align-items:baseline;gap:16px;
  color:rgba(246,239,224,.75);font-size:11.5px;
}
.dict-lb-cap-title{font-weight:600;color:#f6efe0}
.dict-lb-cap-count{font-variant-numeric:tabular-nums;font-size:10px}
.dict-lb-cap-hint{
  font-size:8.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;
  color:rgba(246,239,224,.4);
}

/* ══════════════ PHONE MODE (≤699px) ══════════════
   The graph never initialises here — dictionary.js renders the index list
   instead, and the info panel becomes a full-screen sheet. */
@media (max-width: 699px){
  /* One-line header: small wordmark + a horizontally scrollable nav strip.
     The right-edge fade signals there's more to scroll. */
  .dict-stage .masthead{
    flex-wrap:nowrap;gap:14px;padding:12px 14px 10px;
    align-items:center;
    /* above the Topics/Index pills (70) so the Sections dropdown isn't
       covered, below the sheets (80/85/90) so they still slide over */
    z-index:75;
  }
  .dict-stage .wordmark{ font-size:17px;flex:none; }
  .dict-stage .nav{
    flex:1 1 auto;order:0;min-width:0;
    overflow-x:auto;scrollbar-width:none;
    font-size:11.5px;gap:15px;
    padding:2px 0;
    -webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 26px),transparent);
    mask-image:linear-gradient(90deg,#000 calc(100% - 26px),transparent);
  }
  .dict-stage .nav::-webkit-scrollbar{display:none}
  .dict-stage .nav a{ flex:none; }
  .dict-stage .nav a i{ display:none; } /* drop the ↗ glyphs to save width */
  .dict-stage .nav-right{ gap:14px;margin-left:6px; }
  .dict-stage .theme-toggle{ transform:scale(.85);transform-origin:center; }
  .dict-toolbar{display:none}
  #dEditsPanel{display:none !important}

  /* back pill: bottom-left of the graph (top-left collided with the
     section chip); when the info sheet opens it rides up above it */
  .dict-back{
    position:fixed;left:12px;top:auto;
    bottom:calc(14px + env(safe-area-inset-bottom,0px));
    z-index:95; /* above the info sheet (90) so it stays tappable */
    font-size:12px;padding:10px 16px;
    border-radius:999px;
    box-shadow:0 4px 16px rgba(31,31,29,.14);
    transition:bottom .45s cubic-bezier(.22,.8,.28,1);
  }
  body:has(.dict-panel.is-open) .dict-back{
    bottom:calc(56% + 12px);
  }

  /* Section links collapse into the Menu dropdown; toggle + Account stay */
  .dict-stage .nav > a{ display:none; }
  .dict-stage .nav{
    -webkit-mask-image:none;mask-image:none;
    overflow:visible;position:relative;
  }
  #dMobileMenuBtn{
    flex:none;display:inline-flex;align-items:center;gap:6px;
    font-family:"Inter",system-ui,sans-serif;
    font-size:11.5px;font-weight:700;letter-spacing:.03em;
    background:none;border:1px solid rgba(var(--ink-rgb),.3);
    color:var(--ink);border-radius:999px;
    padding:7px 14px;cursor:pointer;
  }
  .dict-m-menu-caret{ font-size:9px;opacity:.7; }
  #dMobileMenuDrop{
    position:absolute;left:0;top:calc(100% + 8px);z-index:120;
    min-width:190px;
    background:var(--paper);
    border:1px solid rgba(var(--ink-rgb),.14);
    border-radius:12px;
    box-shadow:0 16px 48px rgba(31,31,29,.2);
    padding:6px;
    opacity:0;transform:translateY(-6px);
    pointer-events:none;visibility:hidden;
    transition:opacity .25s, transform .3s cubic-bezier(.22,.8,.28,1), visibility .25s;
  }
  #dMobileMenuDrop.is-open{
    opacity:1;transform:none;pointer-events:auto;visibility:visible;
  }
  #dMobileMenuDrop a{
    display:block;
    font-size:13px;font-weight:600;color:var(--ink);
    padding:11px 12px;border-radius:8px;
  }
  #dMobileMenuDrop a:active{ background:rgba(var(--ink-rgb),.06); }

  /* Topics + Index pills: top-right of the graph (back button owns top-left).
     top 92px clears the one-line masthead — 68px overlapped it (owner). */
  #dMobileBar{
    position:fixed;right:12px;top:92px;z-index:70;
    display:flex;gap:8px;
  }
  .dict-m-fab{
    display:inline-flex;align-items:center;gap:7px;
    font-family:"Inter",system-ui,sans-serif;
    font-size:11.5px;font-weight:700;letter-spacing:.04em;
    background:var(--paper);color:var(--ink);
    border:1px solid rgba(var(--ink-rgb),.25);border-radius:999px;
    padding:10px 15px;cursor:pointer;
    box-shadow:0 8px 26px rgba(31,31,29,.18);
  }
  .dict-m-fab--solid{
    background:var(--ink);color:var(--paper);border:0;
    box-shadow:0 8px 26px rgba(31,31,29,.3);
  }

  /* Topics: compact slide-up sheet, one colour-coded row per topic */
  #dMobileTopics{
    position:fixed;left:0;right:0;bottom:0;z-index:85;
    max-height:72%;overflow-y:auto;
    -webkit-overflow-scrolling:touch;scrollbar-width:none;
    background:var(--paper);
    border-top:1px solid rgba(var(--ink-rgb),.14);
    border-radius:22px 22px 0 0;
    box-shadow:0 -18px 56px rgba(31,31,29,.24);
    padding:4px 10px 22px;
    transform:translateY(103%);
    transition:transform .45s cubic-bezier(.22,.8,.28,1);
  }
  #dMobileTopics{ pointer-events:none; } /* closed/closing: taps pass through */
  #dMobileTopics.is-open{ transform:none; pointer-events:auto; }
  #dMobileTopics::-webkit-scrollbar{ display:none; }
  .dict-m-topics-head{
    display:flex;align-items:center;justify-content:space-between;
    padding:14px 8px 10px 12px;
    font-size:11px;font-weight:800;letter-spacing:.11em;text-transform:uppercase;
    color:var(--ink);
  }
  .dict-m-topic-row{
    width:100%;display:flex;align-items:center;gap:10px;
    font-family:inherit;font-size:13.5px;font-weight:600;color:var(--ink);
    text-align:left;cursor:pointer;
    background:none;border:1px solid transparent;
    border-left:3px solid var(--msec,#888);
    border-radius:10px;
    padding:13px 12px;
  }
  .dict-m-topic-row:active{
    background:rgba(var(--ink-rgb),.05);
    border-color:var(--msec,#888);
  }
  .dict-m-topic-name{
    flex:1;min-width:0;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  }

  /* the index: a slide-up overlay over the graph */
  #dMobileList{
    position:fixed;inset:0;z-index:80;
    overflow-y:auto;
    -webkit-overflow-scrolling:touch;
    background:var(--paper);
    scrollbar-width:none;
    transform:translateY(103%);
    transition:transform .45s cubic-bezier(.22,.8,.28,1);
  }
  #dMobileList{pointer-events:none} /* closed/closing: taps pass through */
  #dMobileList.is-open{transform:none;pointer-events:auto}
  #dMobileList::-webkit-scrollbar{display:none}
  .dict-m-close{
    flex:none;width:42px;height:42px;
    background:none;border:1px solid rgba(var(--ink-rgb),.25);
    color:var(--ink);font-size:15px;cursor:pointer;
    display:flex;align-items:center;justify-content:center;
  }
  .dict-m-bar{
    position:sticky;top:0;z-index:10;
    display:flex;gap:8px;align-items:center;
    padding:12px 14px;
    background:var(--paper);
    border-bottom:1px solid var(--rule);
  }
  .dict-m-search{
    flex:1;min-width:0;
    font-family:"Inter",system-ui,sans-serif;font-size:13px;
    background:var(--bg);border:1px solid rgba(var(--ink-rgb),.25);
    color:var(--ink);padding:10px 12px;outline:none;border-radius:0;
    -webkit-appearance:none;
  }
  .dict-m-search:focus{border-color:var(--accent)}
  .dict-m-shuffle{
    flex:none;font-family:inherit;
    font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
    background:var(--ink);color:var(--paper);border:0;
    padding:11px 14px;cursor:pointer;
  }
  .dict-m-sec-head{
    position:sticky;top:58px;z-index:9;
    display:flex;align-items:center;gap:9px;
    padding:11px 14px 9px;
    background:var(--paper);
    border-bottom:1px solid rgba(var(--ink-rgb),.14);
    font-size:10px;font-weight:800;letter-spacing:.11em;text-transform:uppercase;
  }
  .dict-m-sec-swatch{
    width:10px;height:10px;border-radius:3px;background:var(--msec,#888);flex:none;
  }
  .dict-m-sec-name{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .dict-m-sec-count{font-size:9.5px;color:var(--mute);font-weight:700}
  /* section headers are tappable — they open the topic as a graph view */
  .dict-m-sec-head{cursor:pointer}
  .dict-m-sec-head:active{background:rgba(var(--ink-rgb),.05)}
  .dict-m-sec-view{
    flex:none;font-size:9px;font-weight:700;
    letter-spacing:.08em;text-transform:uppercase;
    color:var(--msec,#888);
    border:1px solid var(--msec,#888);
    border-radius:999px;padding:4px 9px;
  }
  .dict-m-row{
    width:100%;display:flex;align-items:center;gap:12px;
    padding:10px 14px;
    background:none;border:0;border-bottom:1px solid rgba(var(--ink-rgb),.09);
    border-left:3px solid transparent;
    font-family:inherit;color:inherit;text-align:left;cursor:pointer;
  }
  .dict-m-row:active{background:rgba(var(--ink-rgb),.05);border-left-color:var(--msec,#888)}
  .dict-m-thumb{
    width:42px;height:42px;border-radius:50%;object-fit:cover;flex:none;
    border:1px solid rgba(var(--ink-rgb),.15);
  }
  .dict-m-thumb--txt{
    display:flex;align-items:center;justify-content:center;
    color:#f6efe0;font-weight:900;font-size:16px;border:0;
  }
  .dict-m-row-txt{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
  .dict-m-row-name{
    font-size:14px;font-weight:600;letter-spacing:-.01em;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  }
  .dict-m-row-sub{
    font-size:11px;color:var(--mute);
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  }
  .dict-m-row-chev{flex:none;font-size:17px;color:var(--mute);opacity:.5}

  /* info panel → half-height bottom sheet: the network stays live above,
     rounded top + grab handle say "slide me down" */
  .dict-panel{
    position:fixed;
    top:auto;left:0;right:0;bottom:0;
    height:56%;
    width:100%;max-width:100%;
    border-left:0;
    border-top:1px solid rgba(var(--ink-rgb),.14);
    border-radius:22px 22px 0 0;
    box-shadow:0 -20px 60px rgba(31,31,29,.22);
    padding:64px 18px 24px; /* content starts BELOW the ✕/Save row — the
                               save pill must never sit on the photo */
    transform:translateY(103%);
    transition:transform .45s cubic-bezier(.22,.8,.28,1);
    z-index:90;
  }
  .dict-panel.is-open{transform:none}
  /* Grab strip only covers the CENTRE of the top edge — the corners
     belong to ✕ (left) and Save (right), otherwise the invisible strip
     eats their taps and Save feels broken/awkward. */
  .dict-sheet-grab{
    display:block;position:absolute;top:0;left:25%;right:25%;height:34px;
    cursor:grab;touch-action:none;z-index:3;
  }
  .dict-sheet-grab span{
    position:absolute;top:9px;left:50%;transform:translateX(-50%);
    width:44px;height:5px;border-radius:3px;
    background:rgba(var(--ink-rgb),.28);
  }
  .dict-panel-close{
    top:12px;left:10px;z-index:4;
    width:44px;height:44px;font-size:18px;
    display:flex;align-items:center;justify-content:center;
  }
  .dict-save-btn{
    left:auto;right:14px;top:14px;z-index:4;
    padding:11px 20px;font-size:12.5px;
  }
  .dict-panel-name{font-size:22px}
  .dict-keyworks{grid-template-columns:1fr !important}

  /* lightbox, reworked for phones: image centred and unobstructed, all
     controls stacked BELOW it, prev/next as a bottom-centre pair (they
     used to float over the image and looked like a mistake) */
  .dict-lb{padding:10px 0 calc(66px + env(safe-area-inset-bottom,0px))}
  .dict-lb-stage{max-width:94vw;max-height:48vh}
  .dict-lb-img{max-width:94vw;max-height:48vh}
  .dict-lb-rail{
    margin:14px 12px 0;border-radius:16px;
    gap:8px 14px;padding:10px 14px;
    max-width:94vw;
  }
  .dict-lb-rail-group + .dict-lb-rail-group{border-left:0;padding-left:0}
  .dict-lb-action{padding:9px 14px;font-size:10.5px}
  .dict-lb-arrow{
    top:auto;bottom:calc(12px + env(safe-area-inset-bottom,0px));
    transform:none;width:44px;height:44px;
  }
  .dict-lb-arrow--prev{left:calc(50% - 54px)}
  .dict-lb-arrow--next{right:calc(50% - 54px)}
  .dict-lb-caption{padding:0 14px;flex-wrap:wrap;gap:6px 12px;text-align:center;justify-content:center}
  .dict-lb-cap-hint{display:none} /* scroll/drag hint is desktop language */
}

/* ══════════════ 2026-07-09: index collapse-all + mobile rail→chip ══════════════ */
/* Desktop index: master collapse/expand button in the panel header */
.dict-index-collapse-all{
  font-size:9.5px !important;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  border:1px solid rgba(var(--ink-rgb),.22) !important;border-radius:999px;
  padding:4px 10px !important;align-self:center;
}

@media (max-width:699px){
  /* cart + Menu sit flush right (was drifting to the centre) */
  .dict-stage .nav-right{ margin-left:auto; }

  /* the right-edge section rail sat on top of nodes and stole taps —
     replaced by the current-section chip in the top bar */
  .uv-cyl-rail{ display:none !important; }

  /* current-section chip: left of Topics/Index — PURELY visual (no taps);
     long names slide across once inside the clip to reveal their length */
  #dMobileSecChip{
    display:inline-flex;align-items:center;gap:7px;
    font-family:"Inter",system-ui,sans-serif;
    font-size:10.5px;font-weight:700;letter-spacing:.03em;
    background:var(--paper);color:var(--ink);
    border:1px solid rgba(var(--ink-rgb),.25);border-radius:999px;
    padding:10px 12px;
    box-shadow:0 8px 26px rgba(31,31,29,.18);
    max-width:132px;
    pointer-events:none;
  }
  #dMobileSecChip .dict-m-sec-swatch{
    width:8px;height:8px;border-radius:2px;flex:none;
    background:var(--msec,#888);
  }
  .dict-m-chip-clip{
    overflow:hidden;min-width:0;
    -webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 10px),transparent);
    mask-image:linear-gradient(90deg,#000 calc(100% - 10px),transparent);
  }
  #dMobileSecChipName{
    display:inline-block;white-space:nowrap;will-change:transform;
  }

  /* mobile index: collapsed sections keep only their header */
  .dict-m-sec.is-collapsed .dict-m-row{ display:none !important; }

  /* drum hint: smaller + wrappable so it never clips at 375px */
  .uv-cyl-sub{
    font-size:9.5px;letter-spacing:.14em;
    left:16px;right:16px;transform:none;
    white-space:normal;text-align:center;
  }

  /* info sheet: grab-handle drag up = full screen, down = 56%, down again = tucked */
  .dict-panel{
    transition:transform .45s cubic-bezier(.22,.8,.28,1),
               height .4s cubic-bezier(.22,.8,.28,1);
  }
  .dict-panel.is-full{
    height:calc(100% - env(safe-area-inset-top,0px));
    border-radius:0;
  }
  body:has(.dict-panel.is-full) .dict-back{opacity:0;pointer-events:none}
}

/* Touch devices: the keywork + save button can't wait for a hover */
@media (hover:none){
  .dict-kw-save-btn{opacity:1}
}

/* ═══ Admin: node-photo framing + keywork drag-reorder (2026-07-20) ═══ */
.dict-node-crop{margin-top:10px}
.dict-node-crop:empty{display:none}
.dict-kw-drag-grip{
  position:absolute;top:8px;left:8px;z-index:3;
  font-size:13px;line-height:1;color:var(--mute);cursor:grab;
  padding:3px 5px;border-radius:5px;background:rgba(var(--ink-rgb),.07);
  user-select:none;
}
.dict-keywork:hover .dict-kw-drag-grip{color:var(--ink)}
.dict-keywork.dict-kw-dragging{opacity:.45}
.dict-keywork.dict-kw-drop-target{outline:2px dashed var(--accent);outline-offset:-4px}

/* ═══ Mobile masthead cleanup (2026-07-22, owner) ═══
   Two hairlines painted 2px apart (.masthead border-bottom + .dict-board
   border-top) read as a doubled rule — keep the masthead's only. And the
   wordmark dot was flex-centered, floating high; sit it on the baseline
   like a period. */
@media (max-width:699px){
  .dict-board{ border-top:0; }
  .masthead .wordmark{ align-items:flex-end; }
  .masthead .wm-dot{ align-self:flex-end; margin-bottom:9px; }
}
/* ══════════════ Finder (2026-07-21) — fuzzy search + browse panel ══════════════
   Rides on .dict-dropdown (positioning/open state) via the extra .dict-finder
   class; wider, richer rows with thumbnails, plus the empty-query browse
   panel (field chips + recently viewed). */
.dict-dropdown.dict-finder{
  width:380px;max-height:min(520px,66vh);
  border-radius:12px;box-shadow:0 18px 48px rgba(var(--ink-rgb),.18);
  padding:6px;
}
/* centred search opens the panel full-width under the bar */
.dict-toolbar-center .dict-dropdown.dict-finder{width:auto;}
/* sort control row */
.dict-finder-sortbar{
  display:flex;align-items:center;justify-content:space-between;gap:8px;
  padding:6px 8px 8px;margin-bottom:2px;
  border-bottom:1px solid rgba(var(--ink-rgb),.1);
}
.dict-finder-count{font-size:10px;font-weight:600;color:var(--mute);letter-spacing:.02em;}
.dict-finder-seg{display:flex;gap:2px;background:rgba(var(--ink-rgb),.06);border-radius:999px;padding:2px;}
.dict-finder-segbtn{
  font-family:"Inter",system-ui,sans-serif;
  font-size:10px;font-weight:600;letter-spacing:.01em;
  border:0;background:none;color:var(--mute);cursor:pointer;
  padding:4px 10px;border-radius:999px;
}
.dict-finder-segbtn.is-on{background:var(--paper);color:var(--ink);box-shadow:0 1px 3px rgba(var(--ink-rgb),.12);}
.dict-finder-year{
  font-size:10px;font-weight:600;color:var(--mute);margin-left:7px;
  font-variant-numeric:tabular-nums;letter-spacing:.02em;
}
.dict-finder-row{
  display:flex;align-items:center;gap:11px;
  padding:7px 8px;border-radius:8px;cursor:pointer;
}
.dict-finder-row:hover,
.dict-finder-row.is-active{background:rgba(var(--ink-rgb),.06)}
.dict-finder-thumb{
  width:38px;height:38px;flex:0 0 38px;
  object-fit:cover;object-position:center 20%;
  border-radius:8px;display:block;
  background:rgba(var(--ink-rgb),.07);
}
.dict-finder-thumb--txt{
  display:flex;align-items:center;justify-content:center;
  font-size:14px;font-weight:800;letter-spacing:0;
}
.dict-finder-txt{flex:1;min-width:0}
.dict-finder-name{
  font-size:13px;font-weight:700;letter-spacing:-.01em;color:var(--ink);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.dict-finder-sub{
  font-size:10.5px;color:var(--mute);margin-top:1px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.dict-finder-dot{
  width:8px;height:8px;flex:0 0 8px;border-radius:50%;
}
.dict-finder-none{
  padding:14px 12px;font-size:11.5px;color:var(--mute);
}
.dict-finder-label{
  font-size:9px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;
  color:var(--mute);padding:10px 8px 6px;
}
.dict-finder-chips{
  display:flex;flex-wrap:wrap;gap:6px;padding:0 8px 8px;
}
.dict-finder-chip{
  display:inline-flex;align-items:center;gap:7px;
  font:inherit;font-size:10.5px;font-weight:600;color:var(--ink);
  background:none;border:1px solid rgba(var(--ink-rgb),.18);
  padding:5px 10px;border-radius:999px;cursor:pointer;
}
.dict-finder-chip:hover{border-color:var(--ink)}
.dict-finder-chip-sw{
  width:8px;height:8px;border-radius:50%;flex:none;
}
