/* Futurist's Studio: Timeline Studio's dark tokens (object-timeline-prediction, client/src/styles.css),
 * laid out for a phone as one screen. The video runs full width; the object pills and the selected
 * objects' cards sit below it and scroll sideways; the page itself never scrolls. */
:root{
  color-scheme:dark;
  --bg:#0b0e13;--surface:#141922;--raised:#10141b;--line:#1c222c;--line-2:#242c38;--line-hover:#3a4555;
  --text:#e8ebf0;--text-2:#c9d0da;--muted:#8b94a3;--faint:#6b7482;--disabled:#5e6775;
  --accent:#a78bfa;--accent-hover:#c4b5fd;--on-accent:#1b1033;--ok:#7fe08a;--danger:#ff8a8a;
  --ov-bg:rgba(11,14,19,.85);--ov-bg-soft:rgba(11,14,19,.55);
  --mono:'JetBrains Mono',ui-monospace,monospace;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%;background:var(--bg);color:var(--text);font-family:'Instrument Sans',system-ui,sans-serif;-webkit-text-size-adjust:100%}
body{display:flex;flex-direction:column;height:100dvh;overflow:hidden;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}
main{flex:1;min-height:0;display:flex;flex-direction:column}
[hidden]{display:none!important}
button{font:inherit;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.fu-mono{font-family:var(--mono)}

.fu-head{flex:none;display:flex;align-items:center;gap:8px;height:44px;padding:0 12px}
.fu-logo{width:9px;height:9px;border-radius:50%;background:var(--accent);flex:none}
.fu-brand{font-weight:600;font-size:15px}
.fu-status{flex:1;min-width:0;font-size:10.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fu-ghost{flex:none;height:30px;padding:0 12px;border-radius:8px;border:1px solid var(--line-2);background:var(--surface);font-size:13px}

/* gate and shoot */
.fu-screen{flex:1;min-height:0}
.fu-center{display:flex;flex-direction:column;justify-content:center;max-width:520px;width:100%;margin:0 auto;padding:0 16px 24px}
h1{font-size:24px;line-height:1.2;margin:0 0 10px;font-weight:600}
.fu-lead{color:var(--text-2);font-size:15px;line-height:1.45;margin:0 0 22px}
.fu-note{min-height:1.3em;font-size:13px;color:var(--muted);margin:10px 0 0}
.fu-note.bad{color:var(--danger)}
.fu-primary,.fu-secondary{display:flex;align-items:center;justify-content:center;min-height:46px;padding:0 18px;border-radius:10px;font-size:15px;font-weight:600;border:1px solid transparent;text-align:center;cursor:pointer}
.fu-primary{background:var(--accent);color:var(--on-accent)}
.fu-primary:active{background:var(--accent-hover)}
.fu-secondary{background:var(--surface);color:var(--text);border-color:var(--line-2)}
.fu-big{width:100%;min-height:54px;margin-bottom:12px;font-size:16px}
.fu-gate-form{display:flex;gap:10px}
.fu-gate-form input{flex:1;min-width:0;min-height:46px;border-radius:10px;border:1px solid var(--line-2);background:var(--surface);color:var(--text);padding:0 14px;font:inherit;font-size:16px}

/* the studio: stage, bar, pills, cards */
.fu-studio{display:flex;flex-direction:column}
.fu-stage{flex:none;position:relative;background:#000;width:100%;display:flex;justify-content:center}
.fu-frame{position:relative;overflow:hidden;touch-action:manipulation}
.fu-frame img,.fu-frame video{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;display:block}
.fu-frame video{opacity:0;transition:opacity .25s}
.fu-frame video.on{opacity:1}
.fu-frame.busy img{animation:fu-breathe 1.8s ease-in-out infinite}
@keyframes fu-breathe{0%,100%{filter:blur(3px) brightness(.75)}50%{filter:blur(7px) brightness(.95)}}
.fu-svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.fu-svg .box{fill:transparent;stroke-width:1.5;stroke-dasharray:4 3;opacity:.5}
.fu-svg .box.on{stroke-dasharray:none;stroke-width:2;opacity:.95}
.fu-svg .box.dim{opacity:0}
.fu-svg .alt{fill:none;stroke-width:6;stroke:transparent;cursor:pointer}
.fu-svg .alt-line{fill:none;stroke-width:1.5;stroke-dasharray:3 4;opacity:.38;pointer-events:none}
.fu-svg .plan{fill:none;stroke-width:2;stroke-dasharray:6 5;stroke-linecap:round}
.fu-svg .plan.dim{opacity:.55}
.fu-svg .head{fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.fu-svg .ghost{fill:none;stroke-width:1.2;stroke-dasharray:2 3;opacity:.6}
.fu-svg .track{fill:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}
.fu-svg .dot{stroke:#0b0e13;stroke-width:2}
.fu-svg .probe{fill:none;stroke:#fff;stroke-width:1.5;stroke-dasharray:3 3;animation:fu-pulse 1s ease-in-out infinite}
@keyframes fu-pulse{0%,100%{opacity:.4}50%{opacity:1}}
.fu-stage-note{position:absolute;left:8px;bottom:8px;margin:0;max-width:calc(100% - 16px);padding:4px 8px;border-radius:6px;background:var(--ov-bg);color:var(--text-2);font-size:11px;pointer-events:none}
.fu-stage-note:empty{display:none}

.fu-bar{flex:none;padding:6px 12px 4px;background:var(--raised);border-bottom:1px solid var(--line)}
.fu-row{display:flex;align-items:center;gap:10px;min-height:34px}
.fu-play{flex:none;width:32px;height:32px;border-radius:50%;border:0;background:var(--accent);color:var(--on-accent);font-size:12px;padding:0}
.fu-t{flex:none;width:76px;font-size:12px;color:var(--text-2)}
#fu-scrub{flex:1;min-width:0;accent-color:var(--accent)}
.fu-render{flex:none;height:30px;padding:0 12px;border-radius:8px;border:1px solid var(--line-2);background:var(--surface);font-size:13px;font-weight:600}
.fu-render.go{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
.fu-render:disabled{color:var(--disabled);background:transparent;cursor:default}
.fu-line{flex:1;min-width:0;font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.fu-pills{flex:none;display:flex;gap:8px;overflow-x:auto;padding:6px 12px 10px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.fu-pills::-webkit-scrollbar{display:none}
.fu-pill{flex:none;display:inline-flex;align-items:center;gap:7px;height:32px;padding:0 12px;border-radius:16px;border:1px solid var(--line-2);background:var(--surface);font-size:13.5px;white-space:nowrap}
.fu-pill.on{border-color:var(--c);background:color-mix(in srgb,var(--c) 20%,var(--surface))}
.fu-pill.hint{border-style:dashed;color:var(--muted);background:transparent;cursor:default}
.fu-tabs{flex:none;display:flex;gap:4px;margin:8px 12px 2px;padding:3px;border-radius:10px;background:var(--surface);border:1px solid var(--line)}
.fu-tab{flex:1;height:30px;border:0;border-radius:7px;background:transparent;color:var(--muted);font-size:13px;font-weight:600}
.fu-tab.on{background:var(--raised);color:var(--text);box-shadow:0 0 0 1px var(--line-2)}
.fu-tab span{font-family:var(--mono);font-size:11px;color:var(--accent);margin-left:3px}
.fu-view{flex:1;min-height:0;display:flex;flex-direction:column}
.fu-clips-tools{flex:none;display:flex;align-items:center;gap:10px;padding:8px 12px 6px}
.fu-clips-tools .fu-ghost:disabled{color:var(--disabled);cursor:default}
.fu-clips-hint{flex:1;min-width:0;font-size:10px;color:var(--faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fu-clips-list{position:relative;flex:1;min-height:0;overflow-y:auto;padding:0 12px 12px;-webkit-overflow-scrolling:touch}
.fu-clip{display:flex;align-items:stretch;margin:0 0 6px;border-radius:8px;border:1px solid var(--line);overflow:hidden}
.fu-clip.on{border-color:var(--accent);background:var(--surface)}
.fu-clip.flagged{border-left:3px solid var(--danger)}
.fu-clip.flagged .fu-clip-part{opacity:.6}
.fu-clip-main{flex:1;min-width:0;display:grid;grid-template-columns:16px 1fr auto;align-items:center;gap:8px;min-height:44px;padding:7px 10px;border:0;background:transparent;text-align:left}
.fu-clip-main:disabled{opacity:.6;cursor:default}
.fu-list-sec{margin:6px 0 5px;font-family:var(--mono);font-size:9.5px;letter-spacing:.08em;color:var(--faint)}
.fu-fold{display:flex;align-items:center;gap:6px;width:100%;height:36px;margin:8px 0 6px;padding:0 10px;border-radius:8px;border:1px dashed var(--line-hover);background:transparent;color:var(--muted);font-size:13px;text-align:left}
.fu-flag{flex:none;width:40px;border:0;border-left:1px solid var(--line);background:transparent;color:var(--faint);font-size:14px}
.fu-flag.on{color:var(--danger)}
.fu-review{font-size:11.5px;line-height:1.35;color:var(--muted);white-space:normal}
.fu-review b{font-weight:600;margin-right:2px}
.fu-review.pass b{color:var(--ok)}
.fu-review.warn b,.fu-review.hint b{color:#f5b82e}
.fu-review.fail,.fu-review.flag{color:var(--danger)}
.fu-play-mark{font-size:10px;color:var(--accent)}
.fu-clip-text{display:flex;flex-direction:column;gap:2px;min-width:0}
.fu-clip-part{display:flex;align-items:center;gap:6px;font-size:13px;line-height:1.25;color:var(--text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fu-clip-part b{font-weight:600;color:var(--text)}
.fu-clip-meta{font-family:var(--mono);font-size:11px;color:var(--muted)}
.fu-dot{width:9px;height:9px;border-radius:50%;background:var(--c,#888);flex:none}

.fu-cards{flex:1;min-height:0;display:flex;gap:10px;overflow-x:auto;overflow-y:hidden;padding:0 12px 12px;scroll-snap-type:x mandatory;scroll-padding:0 12px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.fu-cards::-webkit-scrollbar{display:none}
.fu-card{flex:none;width:min(86%,380px);height:100%;scroll-snap-align:start;display:flex;flex-direction:column;border:1px solid var(--line);border-radius:12px;background:var(--raised);overflow:hidden}
.fu-cards.one .fu-card{width:100%}
.fu-card-head{flex:none;display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--line)}
.fu-card-head b{flex:1;min-width:0;font-size:15px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fu-x{width:28px;height:28px;border:0;border-radius:6px;background:transparent;color:var(--muted);font-size:16px}
.fu-card-body{flex:1;min-height:0;overflow-y:auto;padding:10px 12px 12px;-webkit-overflow-scrolling:touch}
.fu-stats{display:grid;grid-template-columns:1fr 1fr 56px;gap:8px;margin-bottom:10px}
.fu-stats small{display:block;font-family:var(--mono);font-size:9.5px;letter-spacing:.06em;color:var(--faint);margin-bottom:2px}
.fu-stats span{font-family:var(--mono);font-size:11.5px;line-height:1.35;color:var(--text-2)}
.fu-stats .acc{color:var(--accent)}
.fu-sub{font-family:var(--mono);font-size:9.5px;letter-spacing:.06em;color:var(--faint);margin:0 0 6px}
.fu-future{display:grid;grid-template-columns:1fr 54px 36px;align-items:center;gap:8px;width:100%;min-height:40px;padding:6px 10px;margin:0 0 6px;border-radius:8px;border:1px solid var(--line);background:transparent;text-align:left}
.fu-future.on{border-color:var(--c,var(--accent));background:var(--surface)}
.fu-future .lbl{font-size:13.5px;line-height:1.3}
.fu-future .lbl em{font-style:normal;font-family:var(--mono);font-size:10px;color:var(--accent);margin-left:6px}
.fu-meter{height:4px;border-radius:2px;background:var(--line-2);overflow:hidden}
.fu-meter i{display:block;height:100%;background:var(--c,var(--accent))}
.fu-pct{font-family:var(--mono);font-size:12px;color:var(--text-2);text-align:right}
.fu-add{display:flex;gap:6px;margin-top:8px}
.fu-add input{flex:1;min-width:0;height:34px;border-radius:8px;border:1px dashed var(--line-hover);background:transparent;color:var(--text);padding:0 10px;font:inherit;font-size:16px}
.fu-add button{flex:none;height:34px;padding:0 12px;border-radius:8px;border:1px solid var(--line-2);background:var(--surface);font-size:13px}
.fu-wait{font-size:13.5px;color:var(--muted);line-height:1.45}
.fu-wait.bad{color:var(--danger)}
.fu-card.hint .fu-card-body{display:flex;align-items:center;justify-content:center;text-align:center;color:var(--muted);font-size:14px;line-height:1.5;padding:16px}

.fu-toast{position:fixed;left:50%;bottom:calc(16px + env(safe-area-inset-bottom));transform:translateX(-50%);max-width:calc(100% - 32px);margin:0;padding:9px 14px;border-radius:10px;background:var(--ov-bg);border:1px solid var(--line-2);font-size:13.5px;color:var(--text);z-index:5}
.fu-toast.bad{color:var(--danger)}
