/* ============================================================================
   Make a Picture — "Studio Dark" theme
   Dark layered surfaces, a violet accent, a left tool-rail, dense & image-forward.
   ========================================================================== */
:root{
  --bg:#0b0c10; --panel:#14161c; --elev:#1c1f27; --line:#262a34; --line-2:#30353f;
  --ink:#e7e9ee; --ink-soft:#8b909d; --ink-faint:#5b606c;
  --accent:#8b5cf6; --accent-hi:#a78bfa; --accent-2:#22d3ee;
  --danger:#f0616d; --good:#34d399; --warn:#f59e0b;
  --radius:12px; --shadow:0 12px 34px rgba(0,0,0,.5);
  --mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  --sans:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
}
*{box-sizing:border-box}
html,body{height:100%;color-scheme:dark}   /* native controls (checkboxes, selects, pickers) render dark */
body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.55 var(--sans);-webkit-font-smoothing:antialiased}
body.app{min-height:100vh}   /* the rail is fixed (below); .main is offset by its width */
a{color:var(--accent-hi)}
/* dark scrollbars (textareas, grids, logs, the page) */
*{scrollbar-width:thin;scrollbar-color:var(--line-2) transparent}
::-webkit-scrollbar{width:11px;height:11px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--line-2);border-radius:7px;border:3px solid var(--bg)}
::-webkit-scrollbar-thumb:hover{background:#3d4350}

/* --- left tool rail --------------------------------------------------------- */
.rail{background:#0f1116;border-right:1px solid var(--line);display:flex;flex-direction:column;align-items:center;gap:6px;
  padding:14px 0;position:fixed;top:0;left:0;width:60px;height:100vh;z-index:10}
.rail a,.rail button{width:40px;height:40px;display:grid;place-items:center;border-radius:10px;color:var(--ink-soft);
  text-decoration:none;font-size:18px;background:transparent;border:none;cursor:pointer;transition:.15s}
.rail a:hover,.rail button:hover{background:var(--elev);color:var(--ink)}
.rail a.on{background:color-mix(in srgb,var(--accent) 22%,transparent);color:#fff}
.rail .sp{flex:1}
.rail form{margin:0}

/* --- main + top bar --------------------------------------------------------- */
.main{margin-left:60px;min-width:0;padding-bottom:64px}
.topbar{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;position:sticky;top:0;z-index:5;
  background:linear-gradient(var(--bg),rgba(11,12,16,.82));backdrop-filter:blur(6px);border-bottom:1px solid transparent}
.topbar .title h1{font-size:16px;font-weight:650;margin:0;letter-spacing:-.01em}
.topbar .title h1 a{color:inherit;text-decoration:none}
.topbar .crumbs{color:var(--ink-faint);font:12px var(--mono);margin-top:1px}
.topbar .who{position:relative}
.topbar .who>summary{display:flex;align-items:center;gap:9px;color:var(--ink-soft);font-size:13px;cursor:pointer;list-style:none;padding:4px 8px;border-radius:9px}
.topbar .who>summary::-webkit-details-marker{display:none}
.topbar .who>summary:hover{background:var(--elev);color:var(--ink)}
.topbar .who[open]>summary{background:var(--elev);color:var(--ink)}
.topbar .who .av{width:26px;height:26px;border-radius:50%;background:linear-gradient(135deg,#f472b6,#8b5cf6)}
.who-menu{position:absolute;right:0;top:calc(100% + 6px);background:var(--panel);border:1px solid var(--line-2);border-radius:10px;box-shadow:var(--shadow);padding:8px;min-width:190px;z-index:20}
.who-menu form{margin:0}
.who-name{font-size:12px;color:var(--ink-faint);padding:6px 8px 8px}
.who-name b{color:var(--ink-soft);font-weight:600}
.who-logout{width:100%;text-align:left;appearance:none;background:transparent;border:none;color:var(--danger);font:inherit;font-size:13.5px;font-weight:600;padding:8px;border-radius:7px;cursor:pointer}
.who-logout:hover{background:var(--elev)}
.page{padding:18px 28px 0}   /* fills the space right of the rail */

/* mobile portrait: the left rail eats too much width on a phone, so lay it out as a top bar instead.
   The rail goes horizontal + fixed to the top edge; .main loses its left offset and clears the rail with
   padding-top; the title/account topbar flows normally (no second persistent bar stacked under the rail). */
@media (max-width:600px){
  .rail{flex-direction:row;width:auto;height:50px;top:0;left:0;right:0;
    border-right:none;border-bottom:1px solid var(--line);padding:0 12px;gap:4px}
  .rail a,.rail button{width:38px;height:38px;font-size:17px}
  .main{margin-left:0;padding-top:50px}
  .topbar{position:static}
  .page{padding:14px 16px 0}
}

/* --- shared bits ------------------------------------------------------------ */
.link-btn{appearance:none;background:transparent;border:none;color:var(--accent-hi);font:inherit;font-size:13px;font-weight:600;
  cursor:pointer;padding:4px 6px;border-radius:8px;text-decoration:none}
.link-btn:hover{background:var(--elev);color:#fff}
.tagline{text-align:center;color:var(--ink-soft);font-size:14px;margin:2px 0 20px}
.hidden{display:none!important}
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:var(--elev);color:#fff;border:1px solid var(--line-2);
  padding:9px 16px;border-radius:999px;font-size:13.5px;box-shadow:var(--shadow);z-index:200;max-width:90vw;text-align:center}
.toast.hidden{display:none}

/* Browse views + the composer fill the full width; a single image/conversation is capped so it
   isn't gigantic on wide screens. */
#result,#editView,#simpleThread,.refine-composer{max-width:840px;margin-left:auto;margin-right:auto}

/* --- composer --------------------------------------------------------------- */
.composer{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px;position:relative;margin-top:6px}
/* two-column Advanced composer: prompt | controls */
.composer-grid{display:grid;grid-template-columns:1fr 300px;gap:18px;align-items:start}
.cpane-main{min-width:0;position:relative}
.cpane-side{display:flex;flex-direction:column;gap:12px}
.fld-label{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-faint);margin-bottom:6px}
.field{display:flex;flex-direction:column}
.prompt-wrap{position:relative}
.side-gen{width:100%;margin-top:4px}
.side-gen #generate{width:100%}
@media (max-width:680px){.composer-grid{grid-template-columns:1fr}}
textarea#prompt,textarea#askBox{width:100%;border:1px solid var(--line);outline:none;resize:vertical;background:var(--elev);color:var(--ink);
  font:inherit;font-size:18px;line-height:1.45;min-height:104px;padding:12px 14px;border-radius:10px}
textarea#prompt:focus,textarea#askBox:focus{border-color:var(--accent)}
textarea#prompt::placeholder,textarea#askBox::placeholder{color:var(--ink-faint)}
/* Simple/Advanced as a sliding pair: a clipped viewport whose track holds both panes side by side and
   translates between them; the off-screen pane is collapsed so it adds no height. */
.pane-slider{overflow:hidden;transition:height .34s cubic-bezier(.4,0,.2,1)}
.pane-track{display:flex;align-items:flex-start;width:200%;transition:transform .34s cubic-bezier(.4,0,.2,1)}
.pane-track.to-advanced{transform:translateX(-50%)}
.pane{width:50%;flex:0 0 50%;min-width:0;padding:0 2px}
.pane[aria-hidden="true"]{pointer-events:none}
.pane.pane-collapsed{height:0;overflow:hidden}
.pane-switch{display:flex;margin:0 0 12px}
.pane-switch.right{justify-content:flex-end}
.pane-switch.left{justify-content:flex-start}
.switch-pill{appearance:none;display:inline-flex;align-items:center;gap:6px;background:var(--elev);border:1px solid var(--line);
  color:var(--ink-soft);font:inherit;font-size:12.5px;font-weight:600;padding:5px 12px;border-radius:999px;cursor:pointer;
  transition:border-color .15s,color .15s;user-select:none;touch-action:manipulation}
.switch-pill:hover{border-color:var(--accent);color:var(--ink)}
.switch-pill span{color:var(--accent-hi);font-size:13px}
.composer-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px}
button#generate,button#simpleGenerate,#refineSend,#editSend,#ccGo{appearance:none;border:none;border-radius:999px;
  background:linear-gradient(135deg,var(--accent),var(--accent-hi));color:#fff;font:inherit;font-weight:650;font-size:16px;
  padding:12px 28px;cursor:pointer;transition:.12s;white-space:nowrap;box-shadow:0 6px 20px -8px var(--accent);touch-action:manipulation}
button#generate:hover:not(:disabled),button#simpleGenerate:hover:not(:disabled),#refineSend:hover,#editSend:hover:not(.is-cancel){filter:brightness(1.08)}
button#generate:active:not(:disabled),button#simpleGenerate:active:not(:disabled){transform:translateY(1px)}
button#generate:disabled,button#simpleGenerate:disabled{opacity:.5;cursor:default}
button#generate.is-cancel,#editSend.is-cancel{background:var(--danger);box-shadow:none}
.hint{font-size:12px;color:var(--ink-faint)}
.model-bar{display:flex;align-items:center;gap:8px;margin-top:16px;padding-top:14px;border-top:1px solid var(--line);color:var(--ink-soft);font-size:13px}
.model-bar label{white-space:nowrap}
.shape-bar{display:flex;align-items:center;gap:8px;margin-top:12px;color:var(--ink-soft);font-size:13px}
.shape-bar label{white-space:nowrap}
.shape-options{display:flex;flex:1;gap:6px}
.shape-options button{flex:1;appearance:none;background:var(--elev);border:1px solid var(--line);border-radius:10px;color:var(--ink-soft);
  font:inherit;font-size:12px;padding:7px 4px;cursor:pointer;transition:.15s;white-space:nowrap}
.shape-options button:hover{border-color:var(--accent)}
.shape-options button.active{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}
.opt-bar{display:flex;align-items:center;gap:8px;margin-top:12px;color:var(--ink-soft);font-size:13px}
.opt-bar[hidden]{display:none}
.opt-chk{display:inline-flex;align-items:center;gap:8px;cursor:pointer;user-select:none}
.opt-chk input{accent-color:var(--accent);width:16px;height:16px;cursor:pointer;flex:none}
.opt-sub{color:var(--ink-faint)}
.model-tip{margin:12px 2px 0;font-size:12.5px;line-height:1.5;color:var(--ink-soft)}
.model-tip b{color:var(--ink);font-weight:600}
.model-tip .mi-note{margin-top:6px}
.model-tip a{color:var(--accent-hi);text-decoration:underline}
select#model,select#editModel{flex:1;min-width:0;appearance:none;background:var(--elev);border:1px solid var(--line);border-radius:10px;
  color:var(--ink);font:inherit;font-size:13px;padding:8px 11px;cursor:pointer;text-overflow:ellipsis}
select#model:focus,select#editModel:focus{outline:none;border-color:var(--accent)}
.edit-entry{margin-top:14px;text-align:center}
/* tag autocomplete popup */
.tag-pop{position:absolute;z-index:60;max-height:262px;overflow-y:auto;background:var(--elev);border:1px solid var(--line-2);
  border-radius:12px;box-shadow:var(--shadow);padding:4px}
.tag-pop.hidden{display:none}
.tag-pop .opt{display:flex;align-items:baseline;justify-content:space-between;gap:14px;padding:7px 10px;border-radius:8px;cursor:pointer;font-size:14px;color:var(--ink)}
.tag-pop .opt .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tag-pop .opt .nm .mk{color:var(--accent-2);font-weight:700;margin-right:1px}
.tag-pop .opt .ct{flex:none;color:var(--ink-faint);font:12px var(--mono)}
.tag-pop .opt.sel,.tag-pop .opt:hover{background:var(--panel)}
.nsfw-yes,.nsfw-limited{color:var(--warn);font-weight:600}
.nsfw-no{color:var(--good);font-weight:600}
.nsfw-unknown{color:var(--ink-soft);font-weight:600}
/* count picker + custom modal */
.gen-wrap{position:relative;display:inline-flex}
.count-pop{position:absolute;bottom:calc(100% + 8px);right:0;display:flex;gap:6px;background:var(--elev);border:1px solid var(--line-2);
  border-radius:14px;padding:6px;box-shadow:var(--shadow);z-index:30}
.count-pop[hidden]{display:none}
.count-pop button{appearance:none;border:1px solid var(--line);background:var(--panel);color:var(--ink);border-radius:10px;font:inherit;font-size:15px;min-width:40px;padding:9px 12px;cursor:pointer}
.count-pop button:hover{border-color:var(--accent);color:#fff}
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center;z-index:120;padding:20px}
.modal-overlay.hidden{display:none}
.modal-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:22px;width:min(320px,92vw);text-align:center}
.modal-card h3{margin:0 0 16px;font-size:16px;color:var(--ink)}
.num-row{display:flex;align-items:center;justify-content:center;gap:10px;margin-bottom:18px}
.num-row input{width:96px;text-align:center;font:inherit;font-size:22px;padding:8px;border:1px solid var(--line);border-radius:10px;background:var(--elev);color:var(--ink)}
.num-row input:focus{outline:none;border-color:var(--accent)}
.num-row button{appearance:none;border:1px solid var(--line);background:var(--elev);color:var(--ink);width:44px;height:44px;border-radius:10px;font-size:22px;line-height:1;cursor:pointer}
.num-row button:hover{border-color:var(--accent);color:#fff}
.modal-actions{display:flex;justify-content:flex-end;gap:10px;align-items:center}

/* --- status + progress ------------------------------------------------------ */
.status{margin:22px auto 0;min-height:22px;text-align:center;font-size:14px;color:var(--ink-soft)}
.status.error{color:var(--danger)}
.bar{height:4px;background:var(--line);border-radius:999px;overflow:hidden;margin:10px auto 0;max-width:320px;display:none}
.bar.show{display:block}
.bar>i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--accent),var(--accent-2));transition:width .2s ease}

/* --- result card ------------------------------------------------------------ */
#result{margin-top:22px}
.result-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;animation:rise .35s ease}
@keyframes rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.result-card img{display:block;width:100%;height:auto;cursor:pointer}
.result-actions{display:flex;justify-content:flex-end;align-items:center;padding:10px 12px;border-top:1px solid var(--line)}
a.download{text-decoration:none;color:var(--ink-soft);font-size:13.5px;padding:6px 12px;border-radius:999px}
a.download:hover{background:var(--elev);color:#fff}

/* --- recent strip + galleries ----------------------------------------------- */
.hist-head{display:flex;align-items:center;justify-content:space-between;margin:30px 2px 14px}
.hist-head h2{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-soft);margin:0}
.hist-head-actions{display:flex;align-items:center;gap:8px}
/* image card grid (gallery, recent, bookmarks) — image + meta footer */
.cardgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:16px}
#recent,#active{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px}
.imgcard{display:block;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;text-decoration:none;color:inherit;transition:.16s}
.imgcard:hover{border-color:var(--accent);transform:translateY(-2px)}
.imgcard .img{aspect-ratio:1;background:var(--elev)}
.imgcard .img img{width:100%;height:100%;object-fit:cover;display:block}
.imgcard .meta{padding:10px 11px}
.imgcard .meta .p{font-size:12.5px;color:var(--ink);line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:34px}
.imgcard .meta .row{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:8px}
.imgcard .tag{font:10.5px/1.4 var(--mono);color:var(--accent-2);background:color-mix(in srgb,var(--accent-2) 14%,transparent);padding:2px 7px;border-radius:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:62%}
.imgcard .seed{font:10.5px var(--mono);color:var(--ink-faint);white-space:nowrap}
/* "In progress" tiles: a non-clickable card with a live progress bar (cross-device generation tracking) */
.imgcard.active{cursor:default}
.imgcard.active:hover{transform:none;border-color:var(--line)}
.imgcard.active .img{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;color:var(--ink-soft)}
.imgcard.active .act{display:flex;flex-direction:column;align-items:center;gap:10px;width:100%;padding:0 18px}
.imgcard.active .act-dots{font:11px var(--mono);letter-spacing:.04em;text-transform:uppercase;animation:actPulse 1.4s ease-in-out infinite}
.imgcard.active .act-bar{width:82%;height:4px;background:var(--line);border-radius:999px;overflow:hidden}
.imgcard.active .act-bar>i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--accent),var(--accent-2));transition:width .2s ease}
@keyframes actPulse{0%,100%{opacity:.5}50%{opacity:1}}

/* --- artist page + artist cards --------------------------------------------- */
/* .gen wraps an .imgcard plus a corner button (set-display on the artist page, remove × on bookmarks) */
.gen{position:relative}
.gen .set-display,.gen .card-x{position:absolute;top:8px;right:8px;width:30px;height:30px;border-radius:8px;
  border:1px solid var(--line-2);background:rgba(11,12,16,.72);color:var(--ink-soft);font-size:15px;line-height:1;
  display:grid;place-items:center;cursor:pointer;opacity:0;transition:.15s}
.gen:hover .set-display,.gen:hover .card-x{opacity:1}
.gen .set-display:hover,.gen .card-x:hover{color:#fff;border-color:var(--accent)}
.gen.is-display .set-display{opacity:1;color:var(--accent-hi);border-color:var(--accent)}
@media (hover:none){.gen .set-display,.gen .card-x{opacity:.9}}
.artcard-empty{aspect-ratio:1;display:grid;place-items:center;color:var(--ink-faint);font:11px var(--mono);text-transform:uppercase;letter-spacing:.08em}
.artist-name{font-weight:600}
.artist-hero{display:flex;gap:20px;align-items:center;margin:6px 2px 26px}
.artist-hero-img{width:160px;height:160px;flex:none;border-radius:var(--radius);overflow:hidden;background:var(--elev);border:1px solid var(--line)}
.artist-hero-img img{width:100%;height:100%;object-fit:cover;display:block}
.artist-hero-name{font-size:22px;font-weight:650;letter-spacing:-.01em}
.artist-hero-sub{color:var(--ink-soft);font-size:13px;margin-top:3px}
.artist-hero-note{color:var(--ink-faint);font-size:12.5px;margin:8px 0 12px}
@media (max-width:600px){.artist-hero{gap:14px}.artist-hero-img{width:104px;height:104px}.artist-hero-name{font-size:18px}}
/* artist-mode composer (on the artist page): locked artist, no Simple tab / Random-artist option */
.mode-artist .pane-switch{display:none}
.mode-artist #randomArtistBar{display:none}
.locked-artist{font-size:12.5px;color:var(--ink-soft);background:color-mix(in srgb,var(--accent) 12%,transparent);
  border:1px solid color-mix(in srgb,var(--accent) 28%,transparent);border-radius:9px;padding:8px 11px;margin-bottom:12px}
.locked-artist b{color:var(--ink)}
.imgcard.fresh{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent),0 0 16px rgba(139,92,246,.4)}
#galleryPager{display:flex;align-items:center;justify-content:center;gap:16px;margin-top:22px;color:var(--ink-soft);font-size:13px}
.pager-btn{appearance:none;border:1px solid var(--line);background:var(--panel);border-radius:10px;color:var(--ink);font:inherit;font-size:13px;padding:8px 16px;cursor:pointer;text-decoration:none}
.pager-btn:hover{border-color:var(--accent)}
.pager-btn.disabled{opacity:.35;cursor:default}

/* --- detail ----------------------------------------------------------------- */
.detail-stage{position:relative;max-width:840px;margin:12px auto}
.detail-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;animation:rise .25s ease}
.detail-card img{display:block;width:100%;height:auto;background:var(--elev)}
.detail-meta{padding:18px}
.detail-meta #detailPrompt{margin:0 0 10px;font-size:15.5px;line-height:1.5;color:var(--ink);word-break:break-word;display:flex;flex-wrap:wrap;gap:6px}
.detail-sub{margin:0 0 14px;font:12px var(--mono);color:var(--ink-faint)}
.detail-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.detail-actions .link-btn.on{color:#fff;background:var(--accent)}
.detail-nav{position:absolute;top:50%;transform:translateY(-50%);z-index:40;border:1px solid var(--line-2);cursor:pointer;width:46px;height:72px;
  border-radius:12px;background:rgba(20,22,28,.8);color:var(--ink);font-size:26px;display:flex;align-items:center;justify-content:center;text-decoration:none;backdrop-filter:blur(6px)}
.detail-nav:hover{background:var(--accent);color:#fff;border-color:var(--accent)}
.detail-nav.prev{left:-58px}
.detail-nav.next{right:-58px}
/* no room outside the card on narrow screens — overlay just inside the image edges instead */
@media (max-width:980px){.detail-nav.prev{left:8px}.detail-nav.next{right:8px}}

/* --- lightbox (in-page detail modal) ---------------------------------------- */
/* Reuses the shared .detail-card fragment but re-flows it into a viewport-fitted, two-column
   viewer: the image auto-fits height & width, the meta/prompt panel sits beside it. */
.lightbox{position:fixed;inset:0;z-index:120;display:flex;align-items:center;justify-content:center;
  background:rgba(6,7,10,.86);backdrop-filter:blur(5px);animation:lbfade .18s ease}
.lightbox.hidden{display:none}
@keyframes lbfade{from{opacity:0}to{opacity:1}}
.lightbox .lb-stage{display:flex;align-items:center;justify-content:center;width:100%;height:100%;padding:24px}
.lightbox .lb-content{display:flex;max-width:96vw;max-height:92vh}
.lightbox .lb-spin{color:var(--ink-soft);font-size:14px;padding:48px}
.lightbox .detail-card{display:flex;flex-direction:row;align-items:stretch;max-width:96vw;max-height:92vh;margin:0;animation:rise .2s ease}
.lightbox .detail-card img{width:auto;height:auto;max-width:calc(96vw - 340px);max-height:92vh;object-fit:contain;background:var(--elev)}
.lightbox .detail-meta{flex:0 0 332px;max-width:332px;max-height:92vh;overflow-y:auto}
.lightbox .lb-nav{position:fixed;top:50%;transform:translateY(-50%);z-index:2;width:48px;height:84px;
  border:1px solid var(--line-2);border-radius:12px;background:rgba(20,22,28,.72);color:var(--ink);font-size:30px;
  display:flex;align-items:center;justify-content:center;cursor:pointer;backdrop-filter:blur(6px)}
.lightbox .lb-nav:hover{background:var(--accent);color:#fff;border-color:var(--accent)}
.lightbox .lb-nav.hidden{display:none}
.lightbox .lb-prev{left:18px}
.lightbox .lb-next{right:18px}
.lightbox .lb-close{position:fixed;top:16px;right:18px;z-index:2;width:40px;height:40px;border:1px solid var(--line-2);
  border-radius:10px;background:rgba(20,22,28,.72);color:var(--ink);font-size:22px;line-height:1;cursor:pointer;backdrop-filter:blur(6px)}
.lightbox .lb-close:hover{background:var(--danger);color:#fff;border-color:var(--danger)}
/* narrow screens: stack the image over the meta, fill the screen, nudge arrows inside the edges */
@media (max-width:860px){
  .lightbox .lb-stage{padding:0}
  .lightbox .lb-content,.lightbox .detail-card{max-width:100vw;max-height:100vh}
  .lightbox .detail-card{flex-direction:column;overflow-y:auto;border-radius:0}
  .lightbox .detail-card img{max-width:100vw;max-height:64vh}
  .lightbox .detail-meta{flex:none;max-width:none;max-height:none;overflow:visible}
  .lightbox .lb-prev{left:6px}.lightbox .lb-next{right:6px}
}

/* --- prompt chips (detail + bookmarks) -------------------------------------- */
.plainchip{font-size:15px;color:var(--ink-soft);padding:2px 0}
.tagchip{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:999px;font-size:13px;border:1px solid var(--line);background:var(--elev);color:var(--ink);user-select:none;cursor:pointer}
.tagchip.tag{border-color:#2e4a52}
.tagchip.artist{border-color:var(--accent);color:var(--accent-hi)}
.tagchip .tc-star{font-size:12px;color:var(--ink-faint);line-height:1}
.tagchip.on{background:var(--accent);border-color:var(--accent);color:#fff}
.tagchip.on .tc-star{color:#ffd86b}
.tagchip .tc-name{appearance:none;background:none;border:none;color:inherit;font:inherit;cursor:pointer;padding:0;text-decoration:none}
.tagchip .tc-x{appearance:none;background:none;border:none;color:inherit;font:inherit;font-size:15px;line-height:1;cursor:pointer;padding:0 0 0 3px;opacity:.7}
.tagchip .tc-x:hover{opacity:1}
.tagchip.banned{background:color-mix(in srgb,var(--danger) 16%,var(--elev));border-color:var(--danger);color:var(--danger)}
.tagchip.banned .tc-star{color:var(--danger)}
.tagchip.banned .tc-name{text-decoration:line-through;opacity:.85}

/* --- bookmarks view --------------------------------------------------------- */
.bm-group{margin:22px 2px 0}
.bm-group h3{margin:0 0 10px;font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft);font-weight:600}
.bm-chips{display:flex;flex-wrap:wrap;gap:8px}
.bm-empty{margin:40px 2px;color:var(--ink-soft);font-size:14px;text-align:center}

/* --- edit conversation ------------------------------------------------------ */
#editView{margin-top:6px}
.edit-head{display:flex;align-items:center;gap:10px;margin:0 2px 14px}
.edit-head-label{font-size:13px;color:var(--ink-soft);white-space:nowrap}
#thread,#simpleThread{display:flex;flex-direction:column;gap:14px;padding:4px 2px 8px}
#thread{min-height:38vh}
.bubble{animation:rise .25s ease}
.bubble.user{align-self:flex-end;max-width:88%;display:flex;flex-direction:column;align-items:flex-end}
.bubble.ai{align-self:flex-start;width:88%}
.bubble.user .b-text{background:var(--accent);color:#fff;border-radius:16px 16px 4px 16px;padding:10px 14px;font-size:15px;line-height:1.45;white-space:pre-wrap;word-break:break-word}
.bubble.ai .b-img{background:var(--panel);border:1px solid var(--line);border-radius:16px 16px 16px 4px;box-shadow:var(--shadow);overflow:hidden}
.bubble.ai .b-img img{display:block;width:100%;height:auto;cursor:pointer;background:var(--elev)}
.bubble.ai .b-text{margin-top:6px;color:var(--ink-soft);font-size:13px}
.bubble.ai.loading .b-img{min-height:120px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;color:var(--ink-soft);font-size:13.5px}
.bubble.ai.loading .b-bar{width:60%;max-width:220px;height:4px;background:var(--line);border-radius:999px;overflow:hidden}
.bubble.ai.loading .b-bar>i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--accent),var(--accent-2));transition:width .2s ease}
.b-edit{margin-top:3px;background:none;border:none;color:var(--ink-faint);font-size:12px;cursor:pointer;padding:2px 4px}
.b-edit:hover{color:var(--accent-hi)}
.b-editta{width:min(78vw,460px);border:1px solid var(--line);border-radius:14px;padding:10px 13px;font:inherit;font-size:15px;resize:vertical;background:var(--elev);color:var(--ink)}
.b-editrow{display:flex;gap:8px;margin-top:6px}
.b-save,.b-cancel{border:none;border-radius:10px;padding:7px 13px;font-size:13px;cursor:pointer}
.b-save{background:var(--accent);color:#fff}
.b-cancel{background:var(--line);color:var(--ink)}
.bubble.user .b-refs{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end;margin-bottom:5px}
.bubble.user .b-refs img{width:56px;height:56px;object-fit:cover;border-radius:8px;cursor:pointer;border:1px solid var(--line);background:var(--elev)}
#editComposer{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:12px;position:sticky;bottom:8px;margin-top:8px}
.edit-refs{flex-basis:100%;display:flex;flex-wrap:wrap;gap:8px}
.edit-ref-hint{flex-basis:100%;font-size:12px;line-height:1.45;color:var(--ink-soft);background:var(--elev);border:1px solid var(--line);border-radius:8px;padding:7px 10px}
.edit-refs .ref-chip{position:relative;width:48px;height:48px;border-radius:8px;overflow:hidden;border:1px solid var(--line);background:var(--elev)}
.edit-refs .ref-chip img{width:100%;height:100%;object-fit:cover;display:block}
.edit-refs .ref-chip button{position:absolute;top:1px;right:1px;width:17px;height:17px;border:none;border-radius:50%;background:rgba(0,0,0,.65);color:#fff;font-size:12px;line-height:17px;cursor:pointer;padding:0}
.edit-ref-btn{appearance:none;background:var(--elev);border:1px solid var(--line);border-radius:999px;color:var(--ink-soft);font:inherit;font-size:13px;padding:9px 13px;cursor:pointer;white-space:nowrap}
.edit-ref-btn:hover:not(:disabled){border-color:var(--accent);color:var(--ink)}
.edit-ref-btn:disabled{opacity:.5;cursor:default}
#instruction,#refineBox{flex:1;border:none;outline:none;resize:none;background:transparent;color:var(--ink);font:inherit;font-size:16px;min-height:24px;max-height:120px;padding:6px 4px}
#instruction::placeholder,#refineBox::placeholder{color:var(--ink-faint)}
.refine-composer{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:12px;position:sticky;bottom:8px;margin-top:8px}
.refine-head{display:flex;align-items:center;justify-content:space-between;font-size:12.5px;color:var(--ink-soft);margin-bottom:8px}
.refine-row{display:flex;gap:10px;align-items:flex-end}
@media (max-width:560px){#editComposer #instruction{flex-basis:100%}#editComposer #editSend{margin-left:auto}}

/* --- footer + debug/prewarm panels ------------------------------------------ */
.app-foot{text-align:center;margin:40px 0 4px}
.app-foot .link-btn{color:var(--ink-faint);font-weight:400}
.app-foot .link-btn:hover{color:var(--ink)}
.dbg-panel{position:fixed;left:0;right:0;bottom:0;max-height:62vh;z-index:60;display:flex;flex-direction:column;background:#08090c;color:#d6d9df;border-top:2px solid var(--accent);box-shadow:0 -10px 30px rgba(0,0,0,.6)}
.dbg-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 14px;border-bottom:1px solid var(--line);font-size:13px;flex:0 0 auto}
.dbg-head strong{color:#e8eaee}
.dbg-actions{display:flex;gap:14px}
.dbg-head .link-btn{color:var(--accent-2)}
#dbgLog{margin:0;padding:10px 14px;overflow:auto;-webkit-overflow-scrolling:touch;font:12px/1.5 var(--mono);white-space:pre-wrap;word-break:break-word}

/* --- settings --------------------------------------------------------------- */
.settings{max-width:680px;margin:0 auto;display:flex;flex-direction:column;gap:16px}
.settings-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px}
.settings-card h3{margin:0 0 6px;font-size:15px;font-weight:650;color:var(--ink)}
.settings-desc{margin:0 0 14px;font-size:13px;color:var(--ink-soft);line-height:1.55}
.temp-row{display:flex;align-items:center;gap:12px}
.temp-row input[type=range]{flex:1;accent-color:var(--accent);height:4px;cursor:pointer}
.temp-end{font-size:11px;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.06em}
.temp-val{font:13px var(--mono);color:var(--accent-2);min-width:44px;text-align:right}
.settings-btn{appearance:none;border:1px solid var(--line);background:var(--elev);color:var(--ink);font:inherit;font-size:14px;font-weight:600;padding:10px 18px;border-radius:10px;cursor:pointer}
.settings-btn:hover:not(:disabled){border-color:var(--accent)}
.settings-btn:disabled{opacity:.6;cursor:default}
.settings-log{margin:14px 0 0;padding:10px 12px;background:var(--bg);border:1px solid var(--line);border-radius:8px;max-height:220px;overflow:auto;font:12px/1.5 var(--mono);white-space:pre-wrap;word-break:break-word;color:var(--ink-soft)}
.ban-model{appearance:none;background:var(--elev);border:1px solid var(--line);border-radius:10px;color:var(--ink);font:inherit;font-size:14px;padding:9px 12px;width:100%;margin-bottom:12px}
.ban-lists{display:flex;flex-direction:column;gap:10px;margin-bottom:14px}
.ban-group{display:flex;flex-wrap:wrap;align-items:center;gap:7px}
.ban-group-h{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-faint);margin-right:2px}
.ban-lists .tagchip{cursor:default}
.ban-add{display:flex;gap:8px}
.ban-add select,.ban-add input{appearance:none;background:var(--elev);border:1px solid var(--line);border-radius:10px;color:var(--ink);font:inherit;font-size:14px;padding:9px 12px}
.ban-add input{flex:1}
.ban-add input:focus,.ban-add select:focus,.ban-model:focus{outline:none;border-color:var(--accent)}

/* --- account (login / register) --------------------------------------------- */
body.auth{display:block;background:radial-gradient(60% 50% at 50% 0%,#171327,#0b0c10 70%)}
body.auth .page{max-width:none;padding:0}
.account{display:flex;justify-content:center;align-items:center;min-height:100vh;padding:24px}
.account .card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:34px;width:min(360px,92vw);text-align:center}
.account h2{margin:0 0 18px;font-weight:650}
.account form{display:flex;flex-direction:column;gap:10px;text-align:left}
.account input{appearance:none;border:1px solid var(--line);border-radius:10px;padding:12px 13px;font:inherit;font-size:15px;background:var(--elev);color:var(--ink)}
.account input:focus{outline:none;border-color:var(--accent)}
.account button[type=submit]{appearance:none;border:none;border-radius:999px;background:linear-gradient(135deg,var(--accent),var(--accent-hi));color:#fff;font:inherit;font-weight:650;font-size:16px;padding:12px 24px;cursor:pointer;margin-top:6px}
.account button[type=submit]:hover{filter:brightness(1.08)}
.account .auth-error{color:var(--danger);font-size:13px;margin-bottom:8px}
.account .auth-toggle{margin:16px 0 0}
.account .auth-toggle a{color:var(--accent-hi);text-decoration:none}
.auth-error{color:var(--danger);font-size:13px}
.auth-toggle{margin:14px 0 0}
