/* Rebiha Studio — preview bar and local-library styles */
:root{--bar:34px}
body{padding-top:var(--bar)}
.preview-bar{position:fixed;z-index:300;top:0;left:0;right:0;height:var(--bar);display:flex;gap:16px;align-items:center;justify-content:center;padding:0 12px;background:#fff6e0;border-bottom:1px solid #f0c36b;color:#6b4a00;font-size:12.5px;white-space:nowrap;overflow:hidden}
.preview-bar a{color:#2161cb;font-weight:700;text-decoration:underline;text-underline-offset:3px;white-space:nowrap}
.rail{top:var(--bar)}
.topbar{top:var(--bar)}
.side-card{top:calc(var(--bar) + 96px)}
/*r2*/.preview-bar .short{display:none}
@media(max-width:900px){.preview-bar{height:auto;min-height:var(--bar);flex-wrap:wrap;justify-content:space-between;align-content:center;row-gap:2px;padding:6px 12px;white-space:normal;overflow:visible}.preview-bar .long{display:none}.preview-bar .short{display:block;order:3;flex:1 0 100%;font-size:12.5px;line-height:1.35}.preview-bar a{order:2}}
.clip{touch-action:none;user-select:none;-webkit-user-select:none;position:absolute;overflow:hidden;white-space:nowrap}
.clip::after{content:"";position:absolute;right:0;top:0;bottom:0;width:8px;cursor:ew-resize;background:#ffffff59}
.clip.sel{outline:2px solid #fff;box-shadow:0 0 0 4px var(--blue),0 6px 14px #0b1d4a44;z-index:2}
.clip.muted{opacity:.4;filter:saturate(.3)}
.track-line.drop-target{outline:2px dashed var(--blue);outline-offset:-2px;background:#dfeaff}
.timeline .track>span[contenteditable]{cursor:text;border-radius:6px;padding:2px 4px;margin-left:-4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.timeline .track>span[contenteditable]:hover{background:#eef4fc}
.scene b[contenteditable],.scene small[contenteditable]{border-radius:5px;outline:0;cursor:text}
.scene b[contenteditable]:hover,.scene small[contenteditable]:hover,.scene [contenteditable]:focus{background:#eef4fc;box-shadow:0 0 0 2px #cfe0f7}
.file-preview .rm-media{position:absolute;top:8px;right:8px;width:28px;height:28px;border:0;border-radius:50%;background:#0b1830cc;color:#fff;font-size:16px;cursor:pointer;z-index:2}
.ref-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px}
.file-preview.ref{min-height:0;aspect-ratio:1}
.file-preview.ref img,.file-preview.ref video{min-height:0;height:100%}
.file-preview audio{width:100%;margin:90px 0;padding:0 14px}
.lib-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;margin-top:18px}
.media-tile{display:grid;gap:6px;padding:12px;border:1px solid #d5e2ef;border-radius:14px;background:#fff}
.media-tile b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}
.media-tile small{color:#718197;font-size:11px}
.media-prev{display:grid;place-items:center;height:140px;overflow:hidden;border-radius:10px;background:#e8eff7}
.media-prev img,.media-prev video{width:100%;height:100%;object-fit:cover}
.audio-tile{font-size:40px;color:#276bff}
.media-tile .row{display:flex;gap:8px}
.media-tile a.tag{text-decoration:none}
.swatches{display:flex;flex-wrap:wrap;gap:10px;margin:14px 0}
.swatch{width:96px;height:64px;border:1px solid #0002;border-radius:12px;color:#fff;font-size:11px;font-weight:700;cursor:pointer;text-shadow:0 1px 3px #0009}
.row{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.row .action{width:auto;padding:0 18px;flex:0 0 auto}
.safe{color:#6b7e97;font-size:12.5px;line-height:1.55}
.url-bar{display:flex;gap:10px}
#brand-color{width:48px;height:44px;padding:0;border:1px solid #cbdbea;border-radius:10px;background:#fff}
#versions-box .history-item span.tag,#versions-box button.tag{cursor:pointer;border:0}

/* release 2: Studio mobile shell */
.rail-hist{display:none}
html.rail-lock,html.rail-lock body{overflow:hidden}
.workspace-switch strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.workspace-switch>span:nth-child(2){min-width:0}
@media(max-width:850px){
.menu{width:44px;height:44px;flex:none;min-width:44px}
.help{width:44px;height:44px}
.rail-brand button{width:44px;height:44px;display:grid;place-items:center;padding:0;font-size:26px;line-height:1;border-radius:10px;cursor:pointer}
.rail-hist{display:grid;grid-template-columns:38px 1fr;align-items:center;gap:10px;width:calc(100% - 32px);min-height:48px;margin:-4px 16px 10px;padding:8px 12px;border:1px solid var(--line);border-radius:12px;background:#fff;color:var(--ink);font:650 15px Inter,sans-serif;text-align:left;cursor:pointer}
.rail-hist-ico{display:grid;place-items:center;width:34px;height:34px;border-radius:10px;background:#eef4ff;color:#2161cb;font-size:17px}
}
@media(max-width:900px){html{scroll-padding-top:calc(var(--bar) + 84px)}}
@media(max-width:1100px){body .cx-drawer{top:var(--bar)}}
/* release 3: responsive layout corrections for Directed Lip Sync and Character Builder (no redesign) */
body .ls-stagewrap,body .cb-main{grid-template-columns:minmax(0,1fr)}
body .ls .t2i-stage,body .ls .t2i-controls,body .ls .t2i-side,body .cb-main,body .cb-list{min-width:0}
@media(max-width:1100px){body .ls .t2i-grid{grid-template-columns:minmax(0,1fr)}body .ls .t2i-stage{position:static;order:-1}body .ls .t2i-side{grid-column:auto;grid-template-columns:1fr 1fr}}
@media(max-width:860px){body .ls .t2i-side{grid-template-columns:minmax(0,1fr)}}
body .ls-ruler span,body .ls-ruler{font-size:11.5px}
body .ls-tl span{font-size:max(11px,1em)}
@media(max-width:860px){
body .ls-ruler span,body .ls-ruler{font-size:12px}
body #ls button,body #ls select,body #ls .small-input,body .cb button,body .cb select,body .cb .small-input{min-height:44px}
body #ls .ls-tl button,body #ls .ls-badge{min-height:0}
body .cb .tag,body #ls .tag{min-width:44px;padding-left:12px;padding-right:12px}
}
/* v25.12.8.1: character card list: avatar | name above status, with a real gap and wrapping */
body .cb-item{grid-template-columns:44px minmax(0,1fr);align-items:center;column-gap:12px;row-gap:0}
body .cb-item .cb-av{width:44px;height:44px;border-radius:12px;font-size:16px}
body .cb-item>span:last-child{display:grid;gap:2px;min-width:0}
body .cb-item b,body .cb-item small{display:block;min-width:0;white-space:normal;overflow-wrap:anywhere}
body .cb-items{list-style:none;margin:0;padding:0}
body .cb-item{width:100%}
/* release 4: skip link, banner moved out of <main>, sidebar label */
.skip-link{position:fixed;z-index:1000;left:12px;top:-60px;padding:10px 16px;border-radius:10px;background:#0c1730;color:#fff;font:700 14px Inter,sans-serif;text-decoration:none;transition:top .15s}
.skip-link:focus{top:calc(var(--bar) + 8px);outline:3px solid #8fb4ff;outline-offset:2px}
.topbar{margin-left:var(--rail)}
@media(max-width:850px){.topbar{margin-left:0}}
@media(min-width:1101px){body.cx-drawer-open .topbar{margin-right:360px}body.cx-drawer-collapsed .topbar{margin-right:56px}}

/* release 5: Asset Drawer is a modal at 1100px and below */
html.cx-lock,html.cx-lock body{overflow:hidden}
#cx-scrim{position:fixed;inset:0;z-index:89;background:rgba(12,23,48,.35)}#cx-scrim[hidden]{display:none}
@media(max-width:1100px){body .cx-drawer [data-cx=drawer-collapse]{display:none}}

/* Release 6 — shell typography and contrast: labels >= 12px, shell body text 14px, every shell text colour >= 4.5:1 on its surface */
:root{--shell-label:#52627b;--shell-small:#4f5f78}
body .workspace-switch small,body .rail-foot small,body .model-pill small{color:var(--shell-small);font-size:12px;line-height:1.35}
body .workspace-switch i,body .nav-section>span,body .crumb span,body #page-group span{color:var(--shell-label)}
body .nav-section>span,body .crumb span,body #page-group span{font-size:12px}
body .nav-section a em{font-size:12px}
body .nav-section a em.soon{color:#5546b5}
body .rail-foot strong,body .acct-btn,body .acct-long,body .acct-short{font-size:14px}
body .acct-ring.none{color:#4b5d78}
body .workspace-avatar{background:linear-gradient(145deg,#1f5fe0,#0d7c96)}
body .credit-orb{color:#1a56d6}
body .user-orb{color:#00667a}
body .preview-bar,body .preview-bar .short{font-size:14px}
body .history-item span,body .project-list span{color:var(--shell-small)}
body .cx-empty small{font-size:12px}
body .cx-drawer .safe,body .cx-drawer .safe p,body .cx-drawer #cx-drawer-note{color:var(--shell-small)}
body .acct-i[disabled],body .acct-i small,body .acct-act small{color:#566780}
body .acct-i small{font-size:12px}
body .acct-i,body .acct-r{font-size:14px}
body .notice,body .topbar .notice{font-size:14px}
@media(max-width:1100px),(pointer:coarse){body .menu{width:44px;height:44px}body .preview-bar a{display:inline-flex;align-items:center;min-height:44px;margin:-14px 0}body .rail-brand a{display:inline-flex;align-items:center;min-height:44px}body .skip-link{display:inline-flex;align-items:center;min-height:44px}}
@media(max-width:1180px){body .preview-bar{height:auto;min-height:var(--bar);flex-wrap:wrap;justify-content:space-between;align-content:center;row-gap:2px;padding:6px 12px;white-space:normal;overflow:visible}body .preview-bar .long{display:none}body .preview-bar .short{display:block;order:3;flex:1 0 100%;font-size:14px;line-height:1.35}body .preview-bar a{order:2}}
@media(max-width:1100px),(pointer:coarse){body .plain,body .help{min-height:44px;min-width:44px}}
body #rail :focus-visible,body .topbar :focus-visible,body .preview-bar :focus-visible{outline:3px solid #1a56d6;outline-offset:2px}
@media(max-width:600px){body .acct-btn{gap:6px;padding-left:0}}

/* ---- v25.12.15 (Release 7): one in-flow notice for every width, dismissible, never over controls; not-found screen ---- */
body .topbar{flex-wrap:wrap;align-content:center;row-gap:8px}
body .topbar:has(.notice.slot){padding-top:10px;padding-bottom:10px}
body .topbar .notice,body .topbar .notice.show{position:static;transform:none;inset:auto;bottom:auto;max-width:none;margin:0;flex:1 0 100%;order:9;transition:none;box-shadow:none;display:none;align-items:center;gap:10px;padding:6px 6px 6px 14px;border:1px solid #9fc2e7;border-radius:12px;background:#eef4ff;color:#173a63;font-size:14px;line-height:1.4}
body .topbar .notice.show{display:flex}
body .topbar .notice-text{flex:1 1 auto;min-width:0;overflow-wrap:anywhere}
body .topbar .notice[data-kind="error"]{border-color:#c0392b;background:#fff3f1;color:#8a1f12}
body .topbar .notice-x{flex:0 0 auto;width:44px;height:44px;display:grid;place-items:center;border:1px solid transparent;border-radius:10px;background:transparent;color:inherit;cursor:pointer;font-size:22px;line-height:1}
body .topbar .notice-x::before{content:"\00d7"}
body .topbar .notice-x:hover{background:#ffffffb0;border-color:currentColor}
body .topbar .notice-x:focus-visible{outline:3px solid #1a56d6;outline-offset:1px}
@media(max-width:850px){body:has(#bp) .topbar .notice,body:has(#bp) .topbar .notice.show{display:none}}
body .generation-panel{top:calc(98px + var(--tb-extra,0px))}
body .side-card{top:calc(var(--bar) + 96px + var(--tb-extra,0px))}
body .t2i-stage,body .t2i-side{top:calc(128px + var(--tb-extra,0px))}
@media(max-width:900px){html{scroll-padding-top:calc(var(--bar) + 84px + var(--tb-extra,0px))}}
body .nf-card{width:min(1440px,calc(100% - 72px));margin:0 auto 60px;padding:0 0 24px}
body .nf-addr{display:grid;gap:6px;margin:0 0 18px;color:var(--shell-small,#4f5f78);font-size:14px}
body .nf-addr code{display:block;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink);font-size:14px;overflow-wrap:anywhere}
body .nf-actions{display:flex;flex-wrap:wrap;gap:12px;align-items:center}
body .nf-actions .action,body .nf-actions .nf-back{width:auto;margin:0;height:auto;display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 20px;border-radius:12px;font-size:15px;font-weight:700;text-decoration:none}
body .nf-actions .nf-back{border:1px solid #9fc2e7;background:#fff;color:#1a4fa8}
@media(max-width:850px){body .nf-card{width:min(100% - 32px,1440px)}}
body .topbar .crumb{flex:1 1 0;min-width:0}
body .topbar .top-actions{flex:0 0 auto}

/* ---- v25.12.15.1: recovery screen polish ---- */
body .nf-heading,body .nf-heading:focus,body .nf-heading:focus-visible{outline:none}
body .nf-addr code{direction:ltr;unicode-bidi:isolate;text-align:left}
body .nf-actions a:focus-visible{outline:3px solid #1a56d6;outline-offset:3px}

/* ---- v25.12.15.2: light-surface Studio logo (landing keeps its dark-surface logo) ---- */
body .rail-brand picture{display:block;flex:0 0 49px;width:49px;height:40px}
body .rail-brand picture img,body .rail-brand img#brand-logo-img{display:block;width:49px;height:40px;object-fit:contain;object-position:center}
body .rail-brand img#brand-logo-img[data-failed]{visibility:hidden}

/* ---- v25.12.16 / Release 8: per-tool corrections ---- */
/* 1. Visually hidden text must not sit at left:-9999px (sideways scroll in RTL). */
body .tle .cx-sr,body .tm .t2i-hidden{position:absolute;left:auto;inset-inline-start:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;opacity:0}
/* 2. Buttons styled as .tag never show the browser's default outset border. */
:where(button.tag){border:0}
/* 3. Thumbnail Maker density and canvas handles. */
body .tm .tag,body .mu .tag,body .mu-sec .tag{font-size:12px}
body .tm .tm-mw figcaption{font-size:12px;color:#4a5a73}
body .tm .tm-ov span{font-size:12px;line-height:1.2;max-width:calc(100% - 6px);overflow:hidden;text-overflow:ellipsis;padding:1px 5px}
body .tm .tm-h{position:absolute;display:block;width:16px;height:16px;box-sizing:border-box;border-radius:50%;background:#fff;border:2px solid #1a56d6;box-shadow:0 1px 3px rgba(0,0,0,.4);touch-action:none;z-index:5;margin:0;padding:0}
body .tm .tm-h::after{content:"";position:absolute;inset:-16px}
body .tm .tm-h-nw{left:0;top:0;cursor:nwse-resize;transform:translate(-50%,-50%)}
body .tm .tm-h-ne{right:0;top:0;cursor:nesw-resize;transform:translate(50%,-50%)}
body .tm .tm-h-sw{left:0;bottom:0;cursor:nesw-resize;transform:translate(-50%,50%)}
body .tm .tm-h-se{right:0;bottom:0;cursor:nwse-resize;transform:translate(50%,50%)}
/* 4. Music Studio structure rows. */
body .mu-secs{container-type:inline-size}
body .mu-sec{display:grid;grid-template-columns:32px minmax(0,1fr) 96px auto;align-items:center;gap:8px 10px;padding:10px}
body .mu-sec.mu-sec-score{grid-template-columns:32px minmax(0,1fr) 96px minmax(0,1fr) auto}
body .mu-sec .mu-n{width:32px;height:32px;font-size:14px;font-weight:700}
body .mu-sec .small-input{min-height:44px;width:100%;max-width:none;min-width:0}
body .mu-sec .mu-num{width:100%}
body .mu-sec .mu-sc{margin:0;display:flex;gap:6px;justify-content:flex-end}
body .mu-sec .mu-sc .tag{min-height:44px;min-width:44px;display:inline-flex;align-items:center;justify-content:center;padding:0 12px;font-size:13px;font-weight:800}
body .mu-sec .mu-sc .tag:focus-visible{outline:3px solid #1a56d6;outline-offset:2px}
body .mu-sec .mu-sc .tag:disabled{opacity:1;background:#eef1f6;color:#5c6b82}
@container (max-width:560px){
  body .mu-sec,body .mu-sec.mu-sec-score{grid-template-columns:32px minmax(0,1fr) minmax(0,1fr)}
  body .mu-sec .mu-k{grid-column:2 / 4}
  body .mu-sec .mu-num{grid-column:1 / 3}
  body .mu-sec.mu-sec-score .mu-en{grid-column:3}
  body .mu-sec .mu-sc{grid-column:1 / -1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}
}

/* v25.12.21.1: the notice keeps a reserved in-flow slot for the rest of the workspace session once it has appeared; hiding never collapses it */
body .topbar .notice.slot:not(.show){display:flex;visibility:hidden;pointer-events:none}
@media(max-width:850px){body:has(#bp) .topbar .notice.slot:not(.show){display:none}}

/* ---- v25.12.17 / Release 9: Text to Image workspace audit ---- */
/* reference pictures: Upload beside Choose from Assets */
body #t2i .t2i-refrow{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
body #t2i .t2i-refrow .t2i-upload{min-height:44px;padding:8px 10px;text-align:center;font-size:13px;line-height:1.2}
body #t2i .t2i-refrow .t2i-pick{border-style:solid;background:#fff}
body #t2i .t2i-refnote{margin:6px 2px 0}
@media (max-width:360px){body #t2i .t2i-refrow{grid-template-columns:minmax(0,1fr)}}
/* text never under 12px */
body #t2i small,body #t2i .t2i-muted,body #t2i .t2i-note,body #t2i .t2i-dot,body #t2i .tag{font-size:12px}
/* touch targets: every control at least 44px */
body #t2i .t2i-link,body #t2i .t2i-add,body #t2i .tag,body #t2i .chip,body #t2i .t2i-seg button,body #t2i #t2i-rnd,body #t2i #t2i-fill,body #t2i .t2i-builder>summary,body #t2i details>summary{min-height:44px}
body #t2i .t2i-link,body #t2i #t2i-rnd,body #t2i #t2i-fill,body #t2i .tag{display:inline-flex;align-items:center;justify-content:center;padding-inline:12px}
body #t2i .t2i-promptbar>span:last-child{display:flex;gap:2px;align-items:center}
body #t2i .t2i-stepper button,body #t2i [data-step]{min-width:44px;min-height:44px}
body #t2i #image-count{min-height:44px}
body #t2i input[type=range]{min-height:44px}
body #t2i label:has(>input[type=checkbox]),body #t2i .t2i-check{min-height:44px;display:flex;align-items:center;gap:8px}
body:has(#t2i) .cx-btn{min-height:44px}
/* the sticky Generate bar must never hide the focused control */
html:has(#t2i){scroll-padding-bottom:132px}
body #t2i *{scroll-margin-bottom:132px}
body #t2i summary small,body #t2i .t2i-bgroup>span,body #t2i .t2i-itembody small,body #t2i .t2i-next small,body #t2i .t2i-frame.ghost small{font-size:12px}
body #t2i summary small{margin-left:0;margin-inline-start:6px}
body #t2i summary::after{float:none;float:inline-end}
body #t2i input[type=checkbox]{width:24px;height:24px;flex:none;margin:0}
html:has(#t2i){scroll-padding-top:128px}
@media (max-width:850px){html:has(#t2i){scroll-padding-top:168px}body #t2i *{scroll-margin-top:168px}}
@media (min-width:851px){body #t2i *{scroll-margin-top:128px}}
body #t2i .t2i-bgroup{grid-template-columns:minmax(0,1fr);gap:2px;margin:10px 0}
body #t2i .t2i-bgroup>span{padding-top:0}
body #t2i .t2i-bgroup>div{gap:6px}
body #t2i .t2i-add{padding-block:0;display:inline-flex;align-items:center}

/* ---- v25.12.17.1: exact reference identity ---- */
body #t2i .t2i-unavail{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:84px;padding:10px 12px;border:1.5px dashed #d9a066;border-radius:12px;background:#fff7ec;color:#7a4a12;margin-top:12px}
body #t2i .t2i-unavail-t{display:grid;gap:2px;font-size:12px;line-height:1.35}
body #t2i .t2i-unavail-t b{font-size:13px;color:#8a3b00}
body #t2i .t2i-unavail .rm-media{position:static;flex:none;min-width:44px;min-height:44px}
body #t2i .t2i-refline{display:block;margin-top:2px;color:var(--muted);font-size:12px}
body #t2i .t2i-refline[data-unavailable]{color:#8a3b00;font-weight:700}

body #t2i .t2i-report{margin:8px 0 0;padding:10px 12px 10px 28px;border:1.5px solid #d9a066;border-radius:12px;background:#fff7ec;color:#7a4a12;font-size:12px;line-height:1.45;display:grid;gap:4px}
body #t2i .t2i-report[hidden]{display:none}

/* ---- v25.12.18 / Release 10: Text to Video workspace audit (every rule below is scoped to #t2v; other tools share the .t2i / .t2v-* classes) ---- */
body #t2v button,body #t2v a.tag,body #t2v .t2i-link,body #t2v .t2i-add,body #t2v summary,body #t2v .chip,body #t2v .t2i-seg button,body #t2v .t2i-itembody,body #t2v .cx-act,body #t2v select,body #t2v input:not([type=hidden]),body #t2v textarea.compact{min-height:44px}
body #t2v .t2i-link,body #t2v .t2i-step-n button,body #t2v [data-step]{min-width:44px;display:inline-flex;align-items:center;justify-content:center}
body #t2v .t2i-add,body #t2v a.tag,body #t2v .t2v-acts .tag,body #t2v .cx-act{display:inline-flex;align-items:center;justify-content:center}
body #t2v .t2v-acts .tag,body #t2v .cx-act,body #t2v .t2i-actions .tag{font-size:12px;padding:0 14px}
body #t2v input[type=range]{min-height:44px;width:100%}
body #t2v #video-count{min-height:44px;min-width:56px;text-align:center}
body #t2v summary{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
body #t2v summary small{margin:0;margin-inline-start:6px}
body #t2v summary::after{float:none;float:inline-end;margin-inline-start:auto}
body #t2v .t2i-dot,body #t2v small,body #t2v .t2i-note,body #t2v .cx-nexth,body #t2v .t2i-meta,body #t2v .t2i-chip,body #t2v .t2i-muted,body #t2v .t2v-why,body #t2v .t2v-counts,body #t2v .t2i-frame.ghost small,body #t2v .t2i-bgroup>span{font-size:12px}
body #t2v .t2i-style,body #t2v .t2i-itembody{text-align:start;justify-items:start}
body #t2v .t2v-plan{padding-left:0;padding-inline-start:18px}
/* visible 3px focus on every control; the ring is never clipped by the boxes that hold the segmented controls */
body #t2v :is(button,a,input,select,textarea,summary,[tabindex]):focus-visible{outline:3px solid #0b4fd1;outline-offset:2px;box-shadow:0 0 0 5px #fff}
body #t2v :is(.t2i-seg button,.t2i-step-n button,.t2i-step-n input):focus-visible{outline-offset:-3px;box-shadow:none}
/* the sticky Save bar and the sticky header never hide the focused control */
html:has(#t2v){scroll-padding-bottom:132px;scroll-padding-top:176px}
body #t2v *{scroll-margin-bottom:132px;scroll-margin-top:176px}
@media (max-width:850px){html:has(#t2v){scroll-padding-top:224px}body #t2v *{scroll-margin-top:224px}}
/* the sticky preview and history sit below the header even while its notice line is showing */
body #t2v .t2i-stage,body #t2v .t2i-side{top:176px}
@media (max-width:1280px){body #t2v .t2i-side{position:static}}
body #t2v .t2i-gen{flex-wrap:wrap}
body #t2v #t2v-save{min-height:48px;min-width:140px}
body #t2v #t2v-save[aria-disabled=true]{opacity:.65;cursor:not-allowed}
body #t2v .t2v-counts{display:flex;flex-wrap:wrap;gap:2px 14px;min-width:0}
body #t2v .t2i-promptbar{flex-wrap:wrap;gap:4px 8px}
body #t2v #t2v-count.warn{color:#9a3a00;font-weight:800}
body #t2v .t2v-limitmsg{margin:6px 0 0;padding:8px 12px;border:1.5px solid #d9a066;border-radius:10px;background:#fff7ec;color:#7a4a12;font-size:12px;line-height:1.45}
body #t2v .t2v-limitmsg[hidden],body #t2v .t2v-why[hidden]{display:none}
body #t2v .t2v-why{margin:6px 0 0;color:#7a4a12;line-height:1.45}
body #t2v .t2v-full{margin:0 0 6px}
body #t2v .t2v-card{min-width:0}
body #t2v .t2v-card .t2v-why{color:var(--muted)}
body #t2v .t2v-card[data-state=failed] .t2v-why{color:#8a3b00}
body #t2v .t2v-video{display:block;width:100%}
body #t2v .t2i-chip.bad{background:#fff1ee;border-color:#e9a595;color:#8a2a12}
body #t2v .t2v-bar{height:8px;margin-top:8px;border-radius:99px;background:#dfe9f6;overflow:hidden}
body #t2v .t2v-bar i{display:block;height:100%;background:#276bff;border-radius:99px}
body #t2v .t2v-acts{margin-top:8px}
body #t2v .t2v-card .cx-next{margin-top:8px}
body #t2v .t2i-item>span{flex-wrap:wrap}
body #t2v .t2i-cardhead{flex-wrap:wrap;gap:4px 8px}
body #t2v .t2i-actions{flex-wrap:wrap}
/* result cards wrap by the room the preview really has, so four stay readable in a narrow column */
body #t2v .t2v-cards,body #t2v .t2v-cards.n2,body #t2v .t2v-cards.n3,body #t2v .t2v-cards.n4{grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr))}
@media (max-width:860px){body #t2v .t2v-cards.n2,body #t2v .t2v-cards.n3,body #t2v .t2v-cards.n4{grid-template-columns:minmax(0,1fr)}
/* keyboard order equals reading order: the preview follows the controls, it is not pulled in front of them */
body #t2v .t2i-stage{order:0}}
@media (prefers-reduced-motion:reduce){html:has(#t2v){scroll-behavior:auto}body #t2v *,body #t2v *::before,body #t2v *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

/* ---- v25.12.19 / Release 11: Image to Video workspace audit (every rule below is scoped to #i2v; other tools share the .t2i / .i2v-* / .t2v-* classes) ---- */
body #i2v button,body #i2v a.tag,body #i2v .t2i-link,body #i2v .t2i-add,body #i2v summary,body #i2v .chip,body #i2v .t2i-seg button,body #i2v .t2i-itembody,body #i2v .cx-act,body #i2v select,body #i2v input:not([type=hidden]),body #i2v textarea.compact{min-height:44px}
body #i2v .t2i-link,body #i2v .t2i-step-n button,body #i2v [data-step]{min-width:44px;display:inline-flex;align-items:center;justify-content:center}
body #i2v .t2i-add,body #i2v a.tag,body #i2v .t2v-acts .tag,body #i2v .cx-act{display:inline-flex;align-items:center;justify-content:center}
body #i2v .t2v-acts .tag,body #i2v .cx-act,body #i2v .t2i-actions .tag{font-size:12px;padding:0 14px}
body #i2v input[type=range]{min-height:44px;width:100%}
body #i2v #i2v-videos{min-height:44px;min-width:56px;text-align:center}
body #i2v summary{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
body #i2v summary small{margin:0;margin-inline-start:6px}
body #i2v summary::after{float:none;float:inline-end;margin-inline-start:auto}
body #i2v .t2i-dot,body #i2v small,body #i2v .t2i-note,body #i2v .cx-nexth,body #i2v .t2i-meta,body #i2v .t2i-chip,body #i2v .t2i-muted,body #i2v .t2v-why,body #i2v .t2v-counts,body #i2v .t2i-frame.ghost small,body #i2v .t2i-bgroup>span{font-size:12px}
body #i2v .t2i-style,body #i2v .t2i-itembody{text-align:start;justify-items:start}
body #i2v .t2v-plan{padding-left:0;padding-inline-start:18px}
/* visible 3px focus on every control; the ring is never clipped by the boxes that hold the segmented controls */
body #i2v :is(button,a,input,select,textarea,summary,[tabindex]):focus-visible{outline:3px solid #0b4fd1;outline-offset:2px;box-shadow:0 0 0 5px #fff}
body #i2v :is(.t2i-seg button,.t2i-step-n button,.t2i-step-n input):focus-visible{outline-offset:-3px;box-shadow:none}
/* the sticky Save bar and the sticky header never hide the focused control */
html:has(#i2v){scroll-padding-bottom:132px;scroll-padding-top:176px}
body #i2v *{scroll-margin-bottom:132px;scroll-margin-top:176px}
@media (max-width:850px){html:has(#i2v){scroll-padding-top:224px}body #i2v *{scroll-margin-top:224px}}
/* the sticky preview and history sit below the header even while its notice line is showing */
body #i2v .t2i-stage,body #i2v .t2i-side{top:176px}
@media (max-width:1280px){body #i2v .t2i-side{position:static}}
body #i2v .t2i-gen{flex-wrap:wrap}
body #i2v #i2v-save{min-height:48px;min-width:140px}
body #i2v #i2v-save[aria-disabled=true]{opacity:.65;cursor:not-allowed}
body #i2v .t2v-counts{display:flex;flex-wrap:wrap;gap:2px 14px;min-width:0}
body #i2v .t2i-promptbar{flex-wrap:wrap;gap:4px 8px}
body #i2v #i2v-count.warn{color:#9a3a00;font-weight:800}
body #i2v .t2v-limitmsg{margin:6px 0 0;padding:8px 12px;border:1.5px solid #d9a066;border-radius:10px;background:#fff7ec;color:#7a4a12;font-size:12px;line-height:1.45}
body #i2v .t2v-limitmsg[hidden],body #i2v .t2v-why[hidden]{display:none}
body #i2v .t2v-why{margin:6px 0 0;color:#7a4a12;line-height:1.45}
body #i2v .t2v-full{margin:0 0 6px}
body #i2v .t2v-card{min-width:0}
body #i2v .t2v-card .t2v-why{color:var(--muted)}
body #i2v .t2v-card[data-state=failed] .t2v-why{color:#8a3b00}
body #i2v .t2v-video{display:block;width:100%}
body #i2v .t2i-chip.bad{background:#fff1ee;border-color:#e9a595;color:#8a2a12}
body #i2v .t2v-bar{height:8px;margin-top:8px;border-radius:99px;background:#dfe9f6;overflow:hidden}
body #i2v .t2v-bar i{display:block;height:100%;background:#276bff;border-radius:99px}
body #i2v .t2v-acts{margin-top:8px}
body #i2v .t2v-card .cx-next{margin-top:8px}
body #i2v .t2i-item>span{flex-wrap:wrap}
body #i2v .t2i-cardhead{flex-wrap:wrap;gap:4px 8px}
body #i2v .t2i-actions{flex-wrap:wrap}
/* result cards wrap by the room the preview really has, so four stay readable in a narrow column */
body #i2v .t2v-cards,body #i2v .t2v-cards.n2,body #i2v .t2v-cards.n3,body #i2v .t2v-cards.n4{grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr))}
@media (max-width:860px){body #i2v .t2v-cards.n2,body #i2v .t2v-cards.n3,body #i2v .t2v-cards.n4{grid-template-columns:minmax(0,1fr)}
/* keyboard order equals reading order: the preview follows the controls, it is not pulled in front of them */
body #i2v .t2i-stage{order:0}}
/* source pictures, movement and protection panels */
body #i2v .i2v-tog,body #i2v .i2v-btns .tag,body #i2v .i2v-srcbtns .action{min-height:44px}
body #i2v .i2v-srcbtns{display:flex;flex-wrap:wrap;gap:10px;margin:6px 0}
body #i2v .i2v-srcbtns .action{flex:1 1 150px;display:inline-flex;align-items:center;justify-content:center;text-align:center;padding:0 14px}
body #i2v .i2v-btns{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}
body #i2v .i2v-btns .tag{display:inline-flex;align-items:center;justify-content:center;font-size:12px;padding:0 14px}
body #i2v .i2v-have{flex-wrap:wrap}
body #i2v .i2v-have[data-state=gone]{border-color:#e9a595;background:#fff7f5}
body #i2v .i2v-have[data-state=gone] .i2v-thumb{background:#fff1ee;border:1.5px dashed #e9a595}
body #i2v .i2v-gonebadge{font-weight:800;font-size:12px;color:#8a2a12;padding:4px 10px;text-align:center}
body #i2v .i2v-thumb{grid-template-rows:90px;grid-template-columns:120px}
body #i2v .i2v-thumb img{max-width:120px;max-height:90px;width:auto;height:auto}
body #i2v .i2v-gonebadge[hidden],body #i2v .i2v-thumb img[hidden]{display:none}
body #i2v .i2v-info{flex:1 1 200px}
body #i2v .i2v-info b{white-space:normal;overflow-wrap:anywhere}
body #i2v .i2v-slot.drag{outline:2px dashed #276bff;outline-offset:3px}
body #i2v .i2v-slotmsg{margin:6px 0 0}
body #i2v .i2v-tog{text-align:start;align-items:flex-start}
body #i2v .i2v-tog small,body #i2v .i2v-badge,body #i2v .i2v-avail,body #i2v .t2i-coachmsg,body #i2v .i2v-sum,body #i2v .i2v-keephint,body #i2v .t2i-hint{font-size:12px}
body #i2v .i2v-avail{display:block;color:#8a2a12;font-weight:700}
body #i2v .i2v-avail:empty{display:none}
body #i2v .t2i-item[data-unavailable=true]{border-color:#e9a595}
body #i2v .t2i-coachmsg.bad{color:#8a2a12}
body #i2v .i2v-fpv{max-width:100%}
body #i2v .i2v-move,body #i2v .i2v-keep{min-width:0}
body #i2v .i2v-togs{grid-template-columns:repeat(auto-fill,minmax(min(100%,150px),1fr))}
body #i2v #i2v-prompt{min-width:0}
body #i2v .i2v-hth{width:34px;height:34px}
body #i2v .i2v-hth[hidden]{display:none}
body #i2v .t2i-itembody{display:flex;gap:9px;align-items:center}
@media (prefers-reduced-motion:reduce){html:has(#i2v){scroll-behavior:auto}body #i2v *,body #i2v *::before,body #i2v *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

/* ---- v25.12.20 / Release 12: Voice Studio audit (every rule below is scoped to #voice; other tools share the .t2i / .cx-* / .t2v-* classes) ---- */
body #voice button,body #voice a.tag,body #voice .t2i-link,body #voice .t2i-add,body #voice summary,body #voice .chip,body #voice .t2i-seg button,body #voice .t2i-itembody,body #voice .cx-act,body #voice select,body #voice input:not([type=hidden]),body #voice textarea.compact{min-height:44px}
body #voice .t2i-link,body #voice .t2i-step-n button,body #voice [data-step]{min-width:44px;display:inline-flex;align-items:center;justify-content:center}
body #voice .t2i-add,body #voice a.tag,body #voice .t2v-acts .tag,body #voice .cx-act{display:inline-flex;align-items:center;justify-content:center}
body #voice .t2v-acts .tag,body #voice .cx-act,body #voice .t2i-actions .tag{font-size:12px;padding:0 14px}
body #voice input[type=range]{min-height:44px;width:100%}
body #voice #vs-takes{min-height:44px;min-width:56px;text-align:center}
body #voice summary{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
body #voice summary small{margin:0;margin-inline-start:6px}
body #voice summary::after{float:none;float:inline-end;margin-inline-start:auto}
body #voice .t2i-dot,body #voice small,body #voice .t2i-note,body #voice .cx-nexth,body #voice .t2i-meta,body #voice .t2i-chip,body #voice .t2i-muted,body #voice .t2v-why,body #voice .t2v-counts,body #voice .t2i-frame.ghost small,body #voice .t2i-bgroup>span{font-size:12px}
body #voice .t2i-style,body #voice .t2i-itembody{text-align:start;justify-items:start}
body #voice .t2v-plan{padding-left:0;padding-inline-start:18px}
/* visible 3px focus on every control; the ring is never clipped by the boxes that hold the segmented controls */
body #voice :is(button,a,input,select,textarea,summary,[tabindex]):focus-visible{outline:3px solid #0b4fd1;outline-offset:2px;box-shadow:0 0 0 5px #fff}
body #voice :is(.t2i-seg button,.t2i-step-n button,.t2i-step-n input):focus-visible{outline-offset:-3px;box-shadow:none}
/* the sticky Save bar and the sticky header never hide the focused control */
html:has(#voice){scroll-padding-bottom:132px;scroll-padding-top:176px}
body #voice *{scroll-margin-bottom:132px;scroll-margin-top:176px}
@media (max-width:850px){html:has(#voice){scroll-padding-top:224px}body #voice *{scroll-margin-top:224px}}
/* the sticky preview and history sit below the header even while its notice line is showing */
body #voice .t2i-stage,body #voice .t2i-side{top:176px}
body #voice .t2i-stage{position:static}
/* keyboard order equals reading order: the takes follow the controls, they are not pulled in front of them */
@media(max-width:1100px){body #voice .t2i-stage{order:0}}
@media (max-width:1280px){body #voice .t2i-side{position:static}}
body #voice .t2i-gen{flex-wrap:wrap}
body #voice #vs-save{min-height:48px;min-width:140px}
body #voice #vs-save[aria-disabled=true]{opacity:.65;cursor:not-allowed}
body #voice .t2v-counts{display:flex;flex-wrap:wrap;gap:2px 14px;min-width:0}
body #voice .t2i-promptbar{flex-wrap:wrap;gap:4px 8px}
body #voice #vs-count.warn{color:#9a3a00;font-weight:800}
body #voice .t2v-limitmsg{margin:6px 0 0;padding:8px 12px;border:1.5px solid #d9a066;border-radius:10px;background:#fff7ec;color:#7a4a12;font-size:12px;line-height:1.45}
body #voice .t2v-limitmsg[hidden],body #voice .t2v-why[hidden]{display:none}
body #voice .t2v-why{margin:6px 0 0;color:#7a4a12;line-height:1.45}
body #voice .t2v-full{margin:0 0 6px}
body #voice .t2v-card{min-width:0}
body #voice .t2v-card .t2v-why{color:var(--muted)}
body #voice .t2v-card[data-state=failed] .t2v-why{color:#8a3b00}
body #voice .t2v-video{display:block;width:100%}
body #voice .t2i-chip.bad{background:#fff1ee;border-color:#e9a595;color:#8a2a12}
body #voice .t2v-bar{height:8px;margin-top:8px;border-radius:99px;background:#dfe9f6;overflow:hidden}
body #voice .t2v-bar i{display:block;height:100%;background:#276bff;border-radius:99px}
body #voice .t2v-acts{margin-top:8px}
body #voice .t2v-card .cx-next{margin-top:8px}
body #voice .t2i-item>span{flex-wrap:wrap}
body #voice .t2i-cardhead{flex-wrap:wrap;gap:4px 8px}
body #voice .t2i-actions{flex-wrap:wrap}

body #voice .t2i-add{min-width:44px}
body #voice .tag,body #voice .vs-pick{font-size:12px}
body #voice .t2i-check{display:flex;align-items:center;gap:10px}
body #voice .t2i-check input[type=checkbox]{width:44px;height:44px;flex:none;margin:0}
/* tabs scroll inside their own row and never widen the page */
body #voice .cx-tabs{flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;max-width:100%;-webkit-overflow-scrolling:touch;scrollbar-width:thin}
body #voice .cx-tab{flex:0 0 auto;white-space:nowrap;min-width:44px;font-size:14px}
/* the library, previews and cards */
body #voice .vs-filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,150px),1fr));gap:10px;align-items:end}
body #voice .vs-filters label{font-size:12px}
body #voice .vs-filters .t2i-link{justify-self:start}
body #voice .vs-voices{max-height:none;overflow:visible;grid-template-columns:repeat(auto-fill,minmax(min(100%,230px),1fr))}
body #voice .vs-vwrap{min-width:0}
body #voice .vs-voice{width:100%;min-width:0;text-align:start}
body #voice .vs-vb{min-width:0;overflow-wrap:anywhere}
body #voice .vs-vb b,body #voice .vs-vb small,body #voice .vs-tname,body #voice .vs-who,body #voice .vs-what,body #voice .cx-pvname{overflow-wrap:anywhere;white-space:normal}
body #voice .vs-vb small,body #voice .vs-lock,body #voice .vs-pvwhy,body #voice .vs-why,body #voice .vs-tmeta,body #voice .vs-lncount,body #voice .vs-spkno,body #voice .vs-pick small,body #voice .cx-table,body #voice .cx-pvc small,body #voice .cx-tk,body #voice .vs-clock,body #voice .vs-needed{font-size:12px}
body #voice .vs-vprev{width:100%;display:inline-flex;align-items:center;justify-content:center}
body #voice .vs-vprev[aria-disabled=true]{opacity:.7;cursor:not-allowed}
body #voice .vs-pvwhy{display:block;margin:0}
body #voice .vs-picked{margin:6px 0;font-size:13px;overflow-wrap:anywhere}
body #voice .vs-alias{margin:8px 0}
body #voice .vs-counts{display:flex;flex-wrap:wrap;gap:2px 14px;min-width:0}
body #voice .vs-counts .warn{color:#9a3a00;font-weight:800}
body #voice .vs-needed{margin:6px 0 4px;padding-inline-start:18px}
body #voice .vs-needed li{margin:2px 0;overflow-wrap:anywhere}
body #voice .t2i-coachmsg.bad{color:#8a2a12}
body #voice .t2i-chip.bad{background:#fff1ee;border-color:#e9a595;color:#8a2a12}
/* speakers, lines, pronunciation */
body #voice .vs-spkrow{grid-template-columns:minmax(0,auto) minmax(0,1.1fr) minmax(0,1.2fr) minmax(0,1fr) auto;align-items:center}
body #voice .vs-spkrow .vs-pick{text-align:start;min-width:0;overflow-wrap:anywhere;height:auto}
body #voice .vs-spkrow .vs-resolve{grid-column:1/-1}
body #voice .vs-resolve{margin-top:6px;padding:10px 12px;border:1.5px solid #e6c34a;border-radius:12px;background:#fff9e6}
body #voice .vs-resolve p{margin:0 0 8px;font-size:13px}
body #voice .vs-line{grid-template-columns:minmax(0,150px) minmax(0,1fr)}
body #voice .vs-lbtns{flex-wrap:wrap;align-items:center;gap:6px}
body #voice .vs-lbtns small{flex:1 1 100%}
body #voice .vs-pron{grid-template-columns:minmax(0,1fr) auto minmax(0,1.3fr) auto}
body #voice [aria-disabled=true]{cursor:not-allowed}
body #voice .tag[aria-disabled=true],body #voice .action[aria-disabled=true]{opacity:.6}
@media (max-width:700px){body #voice .vs-spkrow{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}body #voice .vs-spkrow .vs-spkno{grid-column:1/-1}body #voice .vs-line{grid-template-columns:minmax(0,1fr)}body #voice .vs-pron{grid-template-columns:minmax(0,1fr) auto}body #voice .vs-pron>span{display:none}}
/* take cards */
body #voice .vs-take{min-width:0}
body #voice .vs-thead{flex-wrap:wrap}
body #voice .vs-take .t2v-acts,body #voice .t2v-acts{display:flex;flex-wrap:wrap;gap:8px}
body #voice .vs-play{min-width:76px}
body #voice .vs-time{font-size:13px}
body #voice .vs-dlsel select{min-width:0;max-width:100%}
body #voice .vs-quote{margin-top:10px;font-size:13px}
body #voice .vs-quote[data-stale=true]{padding:8px 12px;border:1.5px solid #d9a066;border-radius:10px;background:#fff7ec}
body #voice .vs-hbtns{display:flex;flex-wrap:wrap;gap:4px}
body #voice .cx-takes>li,body #voice .cx-pvc{min-width:0;overflow-wrap:anywhere}
body #voice .cx-tablewrap{max-width:100%}
body #voice .cx-pvv li{overflow-wrap:anywhere}
body #voice .cx-pvv li .tag{margin-inline-start:6px}
/* the recorder dialog stays inside the viewport at every size */
body #voice .vs-dialog{position:fixed;inset:0;z-index:2200;display:grid;place-items:center;padding:16px;background:rgba(14,26,46,.55);overflow:auto}
body #voice .vs-dialogbox{box-sizing:border-box;width:min(100%,460px);max-height:calc(100vh - 32px);overflow:auto;padding:18px;border-radius:16px;background:#fff;box-shadow:0 20px 60px rgba(14,26,46,.35)}
body #voice .vs-dialogbox h2{margin:0 0 6px;font-size:20px}
body #voice .vs-clock{display:block;margin:8px 0;font:800 28px Manrope,sans-serif;font-variant-numeric:tabular-nums}
body #voice .vs-wavecv{display:block;width:100%;height:48px;margin:6px 0;border-radius:8px;background:#f1f6ff}
body #voice .vs-wavecv[hidden],body #voice .vs-dialog [hidden]{display:none}
html:has(#voice #vs-rec),body:has(#voice #vs-rec){overflow:hidden}
@media (max-width:420px){body #voice .vs-dialog{padding:8px}body #voice .vs-dialogbox{padding:14px}}
@media (prefers-reduced-motion:reduce){html:has(#voice){scroll-behavior:auto}body #voice *,body #voice *::before,body #voice *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

/* v25.12.36 Voice Library: problem and set-aside boxes, Recently deleted, duplicate and integrity notes, 44x44 targets, readable on light and dark */
body #voice .cx-pv .tag,body #voice .cx-pvc .tag,body #voice .cx-pvc summary,body #voice .cx-pv a.tag{min-height:44px;min-width:44px;display:inline-flex;align-items:center;justify-content:center;padding-left:12px;padding-right:12px;box-sizing:border-box}
body #voice .cx-pvc summary{display:flex;justify-content:flex-start}
body #voice .cx-problem,body #voice .cx-over{padding:12px 14px;border-radius:12px;background:#fff8e8;color:#4a2b00;border:1px solid #c98a00;margin:8px 0}
body #voice .cx-problem b,body #voice .cx-problem p,body #voice .cx-problem small,body #voice .cx-over{color:#4a2b00}
body #voice .cx-problem .tag{background:#fff;color:#0c1730;border:1px solid #9a6a00}
body #voice .cx-dup,body #voice .cx-integ{display:block;overflow-wrap:anywhere}
body #voice .cx-integ[data-integ=mismatch],body #voice .cx-integ[data-integ=missing]{font-weight:700}
body #voice .cx-pvl{list-style:none;padding:0;margin:0}
body #voice .cx-pvc{overflow-wrap:anywhere}
body #voice .cx-pvc .t2v-acts{gap:8px;flex-wrap:wrap}
