/* Riggler dashboard pages, layered on studio-base.css (the preview's own sheet). */
[hidden]{display:none!important}
body{overflow:auto}
.app{min-height:100vh;height:auto}
.sidebar{position:sticky;top:0;height:100vh;overflow:auto}
.topbar{position:sticky;top:0;z-index:6}
.workspace{overflow:visible}
.brand{text-decoration:none;color:inherit}
.account{display:flex;align-items:center;gap:10px;padding:10px;margin:0 2px;border:1px solid #263b30;border-radius:12px;background:#101c16}
.avatar{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(135deg,var(--accent),var(--pink));font-weight:800;color:#fff;flex:none}
.account .who{min-width:0}
.account b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.account small{display:block;color:var(--muted);font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.usage-card{background:linear-gradient(145deg,#193427,#101e17);border:1px solid #2a4b3b;border-radius:12px;padding:11px 12px;margin:0 2px}
.usage-card small{display:block;color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.12em}
.usage-card b{font-size:26px;line-height:1.1}
.usage-card>span{color:var(--accent);font-size:11px;margin-left:6px}
.usage-line{color:#a0a3a2;font-size:11px;margin-top:6px}
.sidebar-bottom .linkish{background:none;border:0;color:#d4e0da;padding:5px 0;font-size:11px;cursor:pointer;font-family:inherit}
.sidebar-bottom .ok{color:var(--good)}
.sidebar-bottom .bad{color:var(--red)}
.page-title{font-weight:700;font-size:15px;color:#e7edea}
.top-actions a.ghost{text-decoration:none;display:inline-flex;align-items:center}
.spacer{flex:1}
.muted{color:var(--muted)}
.small{font-size:12px}

/* page scaffolding */
.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:14px;margin:4px 0 16px}
.page-head h1{font-size:23px;letter-spacing:-.025em;margin:0 0 4px}
.page-head p{margin:0;color:var(--muted)}
.toolbar{display:flex;gap:9px;flex-wrap:wrap;align-items:center;margin-bottom:16px}
.search{flex:1;min-width:220px;background:#0f1914;border:1px solid #253b30;border-radius:9px;padding:10px 12px;color:var(--text);outline:0}
.search:focus{border-color:var(--accent)}
.toolbar select{background:#0f1914;border:1px solid #253b30;border-radius:9px;padding:9px 10px;color:var(--text)}
.btn{display:inline-flex;align-items:center;gap:6px;border:1px solid #334e40;background:#15221c;color:#e5ece8;border-radius:8px;padding:8px 13px;font-weight:650;font-size:12px;text-decoration:none;cursor:pointer;font-family:inherit;white-space:nowrap}
.btn:hover{border-color:var(--accent)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}
.section-title{font-size:15px;margin:24px 0 10px;color:#dae5e0}

/* cards */
.grid-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px}
.card-item,.pack{border:1px solid #263b30;background:#101c16;border-radius:12px;overflow:hidden;display:flex;flex-direction:column}
.card-item.selected{border-color:var(--accent);box-shadow:0 0 0 2px #2ec27855}
.thumb{position:relative;aspect-ratio:1/.82;background:radial-gradient(ellipse at 50% 40%,#244937,#101d16 70%);display:grid;place-items:center;color:#626564;font-weight:800;letter-spacing:.12em;font-size:12px}
.thumb img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.badge{position:absolute;left:8px;top:8px;border-radius:6px;background:#0c1510cc;border:1px solid #334e40;color:#ccdad3;font-size:10px;padding:3px 7px;letter-spacing:0;font-weight:600}
.badge.shared{left:auto;right:8px;color:var(--good)}
.pick{position:absolute;right:8px;bottom:8px;background:#0c1510cc;border:1px solid #334e40;border-radius:6px;padding:3px 5px;display:flex}
.pick input{accent-color:var(--accent);margin:0;cursor:pointer}
.card-body{padding:10px 12px;flex:1;min-width:0}
.card-body b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:6px}
.card-body p{margin:0 0 6px}
.chips{display:flex;flex-wrap:wrap;gap:5px}
.chip{border:1px solid #373b39;background:#15221c;color:#abaeac;border-radius:99px;padding:3px 8px;font-size:10px;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.chip.good{color:var(--good);border-color:#2f6b5a}
.chip.bad{color:var(--red);border-color:#6b2f3a}
.chip.warn{color:#ffc56b;border-color:#6b5a2f}
.chip.r15{color:#7fb0ff;border-color:#2f4a6b}
.head-actions .chip{padding:6px 10px;font-size:11px}
.tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:7px}
.tags span{background:#1b3227;color:#d6e1dc;border-radius:5px;padding:2px 6px;font-size:10px}
.card-actions,.row-actions,.clip-actions{display:flex;flex-wrap:wrap;gap:6px}
.card-actions{padding:0 12px 12px}
.card-actions button,.row-actions button,.clip-actions button{border:1px solid #3c5e4d;background:#182b22;color:#d2ded8;border-radius:6px;padding:6px 9px;font-size:11px;cursor:pointer;font-family:inherit}
.card-actions button:hover,.row-actions button:hover,.clip-actions button:hover{border-color:var(--accent)}
.card-actions button.primary,.clip-actions button.primary{background:var(--accent);border-color:var(--accent);color:#fff}
button.danger{color:#ff9aac!important;border-color:#5a2a3a!important}
.pack-thumbs{display:grid;grid-template-columns:1fr 1fr;aspect-ratio:1/.62;background:#13241c;gap:2px}
.pack-thumbs img,.pack-thumbs span{width:100%;height:100%;object-fit:cover;display:block;background:#192e24}

/* lists */
.list{display:flex;flex-direction:column;gap:8px}
.row{display:flex;align-items:center;gap:12px;border:1px solid #263b30;background:#101c16;border-radius:10px;padding:10px 12px}
.row-main{flex:1;min-width:0}
.row-main b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:5px}
.dot{width:9px;height:9px;border-radius:50%;background:#707271;flex:none}
.dot.complete{background:var(--good)}
.dot.failed{background:var(--red)}
.dot.plugin{background:#7fb0ff}
.dot.queued,.dot.planning,.dot.generating,.dot.processing,.dot.analyzing{background:#ffc56b;animation:pulse 1s infinite}
@keyframes pulse{50%{opacity:.3}}
.empty{border:1px dashed #373b39;border-radius:14px;padding:44px 20px;text-align:center;color:var(--muted);grid-column:1/-1}
.empty-mark{font-size:26px;color:var(--accent)}
.empty b{display:block;color:#e0e8e4;margin:8px 0 4px;font-size:16px}
.empty p{margin:0 0 14px}

/* explore tiles */
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin-bottom:6px}
.tile{position:relative;border:1px solid #ffffff22;border-radius:12px;padding:30px 12px 12px;text-align:left;color:#fff;cursor:pointer;overflow:hidden;min-height:92px;font-family:inherit}
.tile:after{content:"";position:absolute;right:-18px;top:-18px;width:70px;height:70px;border-radius:18px;background:#ffffff1f;transform:rotate(18deg)}
.tile b{display:block;font-size:17px;letter-spacing:.02em;text-shadow:0 2px 0 #0005}
.tile span{font-size:11px;color:#ffffffd9}
.tile.active{outline:2px solid #fff;outline-offset:2px}
.t-locomotion{background:linear-gradient(135deg,#2f7bf2,#2a9d64)}.t-combat{background:linear-gradient(135deg,#f24a3d,#5d6862)}.t-dance{background:linear-gradient(135deg,#2a9d64,#84928b)}.t-sports{background:linear-gradient(135deg,#2fbf71,#1c7ab8)}.t-gestures{background:linear-gradient(135deg,#f2a93d,#e2553a)}.t-emotions{background:linear-gradient(135deg,#f25a8e,#2a9d64)}.t-interactions{background:linear-gradient(135deg,#3dc6f2,#2a9d64)}.t-daily{background:linear-gradient(135deg,#43b86b,#b8a943)}.t-work{background:linear-gradient(135deg,#8a6a4a,#557f6a)}.t-other{background:linear-gradient(135deg,#696c6a,#2a9d64)}

/* generate page extras */
.composer-meta{flex-wrap:wrap}
.composer .source-btn{font-family:inherit}
.clip-panel{margin-top:12px;background:#0f1914;border:1px solid #253b30;border-radius:10px;padding:14px}
.clip-main{display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap;align-items:flex-start}
.clip-main small{color:var(--good);font-size:10px;text-transform:uppercase;letter-spacing:.12em}
.clip-main h2{margin:2px 0 8px;font-size:17px}
.clip-panel p{margin:10px 0 0}
.recipe{margin-top:12px;display:flex;gap:14px;align-items:center;flex-wrap:wrap;border:1px solid #253b30;background:#0d1612;border-radius:10px;padding:12px 14px}
.recipe b{display:block;font-size:12px}
.recipe span{color:var(--muted);font-size:11px}
.recipe-examples{display:flex;gap:6px;flex-wrap:wrap}
.recipe-examples button{border:1px solid #2d4539;background:#13211a;color:#c5d5cd;border-radius:99px;padding:5px 10px;font-size:11px;cursor:pointer;font-family:inherit}
.recipe-examples button:hover{border-color:var(--accent);color:#fff}
.selection-bar{display:flex;gap:8px;align-items:center;padding:8px 10px;border:1px solid var(--accent);background:#192e24;border-radius:10px;margin-bottom:12px}

/* panels, settings */
.panel-box{border:1px solid #263b30;background:#0f1914;border-radius:12px;padding:16px;margin-bottom:14px}
.panel-box h2{font-size:16px;margin:0 0 12px}
.kv{display:grid;grid-template-columns:140px 1fr;gap:8px 12px;font-size:13px}
.kv span{color:var(--muted)}
.stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px}
.stat{border:1px solid #263b30;background:#101c16;border-radius:10px;padding:12px}
.stat b{display:block;font-size:22px}
.stat span{color:var(--muted);font-size:12px}
.steps-list{margin:0;padding-left:18px;color:#c5c8c6;line-height:1.7}
.steps-list a{color:#d4e0da}
.code-inline{font:12px ui-monospace,Consolas,monospace;background:#0b1410;border:1px solid #263b30;border-radius:5px;padding:1px 6px;color:#d6e1dc}

/* dialogs and toasts */
dialog.dialog{border:1px solid #334e40;background:#111d17;color:var(--text);border-radius:14px;padding:22px;width:min(470px,92vw)}
dialog::backdrop{background:#040907cc}
.dialog h2{margin:0 0 14px;font-size:19px}
.dialog label{display:block;margin-bottom:12px;font-size:12px;color:#c0c2c1}
.dialog input[type=text],.dialog textarea,.dialog select{display:block;width:100%;margin-top:5px;background:#0c1510;border:1px solid #2d4539;border-radius:9px;padding:10px;color:var(--text);font:inherit;font-size:13px}
.dialog .inline{display:flex;gap:8px;align-items:center;font-size:13px;color:#d3dfd9}
.dialog .inline input{accent-color:var(--accent)}
.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}
.check-list{max-height:260px;overflow:auto;border:1px solid #263b30;border-radius:9px;padding:6px}
.check-row{display:flex!important;gap:8px;align-items:center;padding:6px;border-radius:6px;font-size:13px!important;color:#dee7e2!important;margin:0!important;cursor:pointer}
.check-row:hover{background:#192b22}
.check-row input{accent-color:var(--accent)}
.check-row small{color:var(--muted)}
.toasts{position:fixed;right:18px;bottom:18px;display:flex;flex-direction:column;gap:8px;z-index:60}
.toast{background:#192b22;border:1px solid #334e40;border-radius:10px;padding:10px 14px;max-width:380px;font-size:13px;box-shadow:0 12px 30px #0008;transition:opacity .5s,transform .5s}
.toast.good{border-color:#2f6b5a}
.toast.error{border-color:#6b2f3a;color:#ffc2cc}
.toast.out{opacity:0;transform:translateY(8px)}
/* history rows animate too */
.row-thumb{width:66px;height:54px;border-radius:8px;flex:none;overflow:hidden;background:radial-gradient(ellipse at 50% 40%,#244937,#101d16 70%)}
.row-thumb img{width:100%;height:100%;object-fit:cover;display:block}
@media(prefers-reduced-motion:reduce){.row:hover .row-thumb.strip{animation:none}}

/* storage cleanup */
.cleanup{display:flex;gap:14px;flex-wrap:wrap;align-items:center;margin-top:14px}
.cleanup .inline{display:flex;align-items:center;gap:7px;font-size:12px;color:#d3dfd9}
.cleanup input{accent-color:var(--accent)}
.dot.cancelled{background:#8c8e8d}

/* takes of one prompt */
.variations{display:flex;gap:6px;margin-top:9px;flex-wrap:wrap;align-items:center}
.variations small{color:var(--muted);font-size:11px;margin-right:2px}
.variations button{border:1px solid #3c5e4d;background:#182b22;color:#d2ded8;border-radius:6px;padding:5px 11px;font-size:11px;cursor:pointer;font-family:inherit}
.variations button.active{background:var(--accent);border-color:var(--accent);color:#fff}

/* download menu */
.menu-wrap{position:relative;display:inline-flex}
.menu{position:absolute;bottom:calc(100% + 6px);left:0;z-index:30;background:#182b22;border:1px solid #334e40;border-radius:10px;padding:5px;display:flex;flex-direction:column;gap:3px;min-width:230px;box-shadow:0 16px 34px #000a}
.menu button{text-align:left;white-space:nowrap;width:100%}
.menu button:disabled{opacity:.45;cursor:not-allowed}

/* walk path */
.pathbox{display:grid;grid-template-columns:330px 1fr;gap:14px;align-items:center;margin-top:12px;padding:12px;border:1px solid #253b30;border-radius:10px;background:#0d1612}
.pathbox canvas{border-radius:8px;border:1px solid #263b30;cursor:crosshair;max-width:100%}
.path-controls{display:flex;flex-direction:column;gap:8px;min-width:0}
.path-controls b{font-size:13px}
@media(max-width:760px){.pathbox{grid-template-columns:1fr}}

/* video trim */
.trim{display:grid;grid-template-columns:170px 1fr;gap:14px;align-items:center;margin-top:12px;padding:12px;border:1px solid #253b30;border-radius:10px;background:#0d1612}
.trim video{width:100%;max-height:120px;border-radius:8px;background:#000}
.trim-controls{display:flex;flex-direction:column;gap:8px;min-width:0}
.trim-controls label{display:flex;align-items:center;gap:10px;font-size:11px;color:var(--muted)}
.trim-controls label span{width:34px}
.trim-controls input[type=range]{flex:1;accent-color:var(--accent)}
.trim-note{color:var(--muted);font-size:11px}
.trim-note b{color:var(--good)}

/* Animated card previews: the poses are a grid on one sheet and the card shows a cell at a
   time. Both the sheet size and the cell position are set by the driver in app.js -- 0% is the
   first cell and 100% the last, because a percentage offset is measured against
   (card size - sheet size), not against one cell. */
.thumb.strip{background-repeat:no-repeat;background-position:0% 0%}
/* A pair cell holds the clip on both rigs, so the card is twice as wide as one figure. */
.thumb.strip.pair{aspect-ratio:42/25}
.thumb.strip.pair::before,.thumb.strip.pair::after{position:absolute;bottom:6px;z-index:2;
  font-size:9px;font-weight:700;letter-spacing:.08em;color:#cfe0d8;background:#0b1610b8;
  border:1px solid #2f4c3e;border-radius:5px;padding:2px 6px;pointer-events:none}
.thumb.strip.pair::before{content:'R15';left:calc(25% - 14px)}
.thumb.strip.pair::after{content:'R6';right:calc(25% - 11px)}

@media(max-width:950px){.account .who{display:none}.account{justify-content:center}.trim{grid-template-columns:1fr}}

/* An element told to hide must hide: a class that sets display otherwise beats the plain
   [hidden] attribute, which is how a hidden field ends up on screen anyway. */
[hidden]{display:none !important}

/* ------------------------------------------------------------------ paging a long card list */
.pager{display:flex;align-items:center;justify-content:center;gap:10px;margin:16px 0 4px}
.pager button{border:1px solid #35533f;background:#16241c;color:#cfe0d8;border-radius:7px;
  padding:7px 13px;font:inherit;font-size:12px;font-weight:600;cursor:pointer}
.pager button:hover:not(:disabled){border-color:var(--accent);color:#fff}
.pager button:disabled{opacity:.4;cursor:default}
.pager span{color:#9aa5a0;font-size:12px;min-width:56px;text-align:center}

/* History is paged nine at a time, so it is laid out as the three by three it is meant to be.
   The cards are wider than the packed grid elsewhere because each preview holds two rigs. */
#historyList{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
#historyList .card-body{padding:12px 14px}
#historyList .card-body b{font-size:15px}
@media(max-width:1100px){#historyList{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:720px){#historyList{grid-template-columns:minmax(0,1fr)}}
