/* Studio — contact-sheet look: graphite light table, film-frame gallery, grease-pencil yellow for the one thing you press. */
@font-face{font-family:"Archivo";src:url(/static/archivo-x800.woff2) format("woff2");font-weight:800;font-stretch:125%;font-display:swap}
@font-face{font-family:"Instrument Sans";src:url(/static/instrumentsans.woff2) format("woff2");font-weight:400 700;font-display:swap}
@font-face{font-family:"DM Mono";src:url(/static/dmmono-400.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"DM Mono";src:url(/static/dmmono-500.woff2) format("woff2");font-weight:500;font-display:swap}

:root{
  --bg:#232629;--panel:#2c3034;--panel2:#363b40;--line:#464c52;--line2:#5a6168;
  --ink:#eeeae2;--muted:#a3a9ae;--acc:#f3c94b;--acc-ink:#1d1e1f;--bad:#f07a66;--ok:#8fd1a8;
  --film:#111213;--hole:#3b3f43;--edge:#d9a441;
  --display:"Archivo","Arial Black",sans-serif;--body:"Instrument Sans","Segoe UI",-apple-system,Roboto,Arial,sans-serif;--mono:"DM Mono",ui-monospace,Menlo,monospace;
}
*{box-sizing:border-box}html,body{margin:0;height:100%}[hidden]{display:none!important}
body{background:var(--bg);color:var(--ink);font:15px/1.45 var(--body);-webkit-font-smoothing:antialiased}
button,select,input,textarea{font:inherit;color:inherit}
button{cursor:pointer;border:1px solid var(--line);background:var(--panel2);border-radius:8px;padding:8px 12px}
button:hover{border-color:var(--line2)}button:disabled{opacity:.5;cursor:default}
:focus-visible{outline:2px solid var(--acc);outline-offset:2px}
.primary{background:var(--acc);border:0;color:var(--acc-ink);font-weight:700;padding:12px 24px;border-radius:8px}
.primary:hover{background:#f7d66e}
.ghost{white-space:nowrap;background:transparent;border-color:transparent;color:var(--muted)}.ghost:hover{color:var(--ink);border-color:var(--line)}
.danger{color:var(--bad)}
.muted{color:var(--muted)}.err{color:var(--bad);font-size:13.5px;margin:8px 0 0}
.logo{display:flex;align-items:center;gap:10px;font:800 17px/1 var(--display);font-stretch:125%;letter-spacing:.14em;text-transform:uppercase}
.logo img{width:26px;height:26px}

/* login */
body.login{display:grid;place-items:center;padding:16px}
.login-card{width:100%;max-width:360px;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:26px}
.login-card .muted{margin:14px 0 0;font-size:14px}
.login-card label{display:block;margin-top:16px;font-size:13px;color:var(--muted)}
.login-card input{display:block;width:100%;margin-top:6px;height:44px;padding:0 12px;background:var(--bg);border:1px solid var(--line);border-radius:8px}
.login-card input:focus{outline:none;border-color:var(--acc)}
.login-card .primary{width:100%;margin-top:22px}

/* shell */
.top{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:14px;padding:12px 24px;background:rgba(35,38,41,.94);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.spend{margin-left:auto;white-space:nowrap;font:500 12.5px var(--mono);color:var(--muted);letter-spacing:.02em}
.layout{display:grid;grid-template-columns:minmax(340px,420px) minmax(0,1fr);gap:28px;padding:24px;max-width:1700px;margin:0 auto}
.create{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:18px;align-self:start;position:sticky;top:76px;max-height:calc(100vh - 96px);overflow:auto}

.kinds{display:grid;grid-template-columns:repeat(4,1fr);gap:2px;background:var(--bg);border:1px solid var(--line);border-radius:9px;padding:3px}
.kinds button{border:0;background:transparent;padding:8px 4px;font-weight:600;font-size:14px;color:var(--muted);border-radius:6px}
.kinds button:hover{color:var(--ink)}
.kinds button.on{background:var(--panel2);color:var(--ink);box-shadow:inset 0 -2px 0 var(--acc)}

/* model list: name left, price right on the same line, like a rate card */
.models{display:grid;gap:6px;margin:16px 0}
.model{text-align:left;display:grid;grid-template-columns:1fr auto;column-gap:10px;row-gap:2px;padding:10px 12px;background:var(--bg);border-color:var(--line)}
.model b{font-size:14.5px;font-weight:600}
.model span{grid-column:1/-1;font-size:13px;color:var(--muted)}
.model em{grid-row:1;grid-column:2;font:500 12px/1.6 var(--mono);font-style:normal;color:var(--muted)}
.model.on{border-color:var(--acc);background:#2a2c2b}
.model.on em{color:var(--acc)}

.field{margin:18px 0}
.label{display:flex;justify-content:space-between;align-items:baseline;gap:10px;font-size:13.5px;font-weight:600;margin-bottom:7px}
.label .muted{font-weight:400;font-size:12.5px}
textarea{width:100%;background:var(--bg);border:1px solid var(--line);border-radius:9px;padding:11px 12px;resize:vertical;line-height:1.5}
textarea::placeholder{color:#80868c}
textarea:focus,select:focus,input:focus{outline:none;border-color:var(--acc)}
.presets{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px}
.chip{font-size:12.5px;padding:4px 10px;border-radius:99px;background:transparent;color:var(--muted)}
.chip:hover{color:var(--ink)}
.chip::before{content:"+ ";color:var(--acc)}

.drop{border:1.5px dashed var(--line2);border-radius:10px;padding:10px;display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.drop.over{border-color:var(--acc);background:#2f2e28}
.thumbs{display:contents}.thumb{position:relative;width:76px;height:76px}
.thumb img{width:100%;height:100%;object-fit:cover;border-radius:6px;border:3px solid var(--film)}
.thumb button{position:absolute;top:-7px;right:-7px;width:22px;height:22px;padding:0;border-radius:50%;font-size:11px;background:var(--film);border-color:var(--line2)}
.add{display:inline-flex;align-items:center;justify-content:center;height:76px;padding:0 16px;border-radius:6px;background:var(--bg);color:var(--muted);cursor:pointer;font-size:13.5px}
.add:hover{color:var(--ink)}
.add:focus-within{outline:2px solid var(--acc)}
.add.small{height:40px}
.endframe{margin-top:10px;display:flex;flex-wrap:wrap;gap:8px;align-items:center}.endframe .label{width:100%}

.opts{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.opts label{display:grid;gap:5px;font-size:12.5px;color:var(--muted)}
.opts select{height:38px;background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:0 8px}
.opts .check{display:flex;align-items:center;gap:8px;color:var(--ink);font-size:14px;align-self:end;height:38px}
.opts .check input{accent-color:var(--acc);width:16px;height:16px}
.go{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:18px;position:sticky;bottom:-18px;background:var(--panel);padding:14px 0;border-top:1px solid var(--line)}
.est{font:500 13px var(--mono);color:var(--ink)}

/* gallery: a contact sheet. Each result sits in a film frame; the edge print carries frame no., model, cost and time. */
.ghead{display:flex;align-items:baseline;gap:12px;margin-bottom:14px}
.ghead h2{margin:0;font:800 15px/1 var(--display);font-stretch:125%;letter-spacing:.14em;text-transform:uppercase}
.ghead .muted{font:500 12.5px var(--mono)}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:22px 18px}
.card{display:flex;flex-direction:column;min-width:0}
.frame{background:var(--film);border-radius:4px;padding:0 10px;box-shadow:0 1px 0 rgba(255,255,255,.04),0 8px 20px rgba(0,0,0,.25)}
.edge{position:relative;display:flex;justify-content:space-between;gap:10px;height:30px;align-items:flex-end;padding-bottom:5px;
  font:500 10.5px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--edge);white-space:nowrap;overflow:hidden}
.edge span{overflow:hidden;text-overflow:ellipsis}
.edge::before{content:"";position:absolute;left:-4px;right:-4px;top:5px;height:7px;
  background:linear-gradient(90deg,var(--hole) 0 9px,transparent 9px) 0 0/18px 7px repeat-x;border-radius:1px}
.edge.bot{align-items:flex-start;padding:5px 0 0}
.edge.bot::before{top:auto;bottom:5px}
.edge .no{color:var(--ink);opacity:.8}
.media{aspect-ratio:1;background:#0b0c0d;display:grid;border-radius:2px;overflow:hidden}
.media img,.media video{width:100%;height:100%;object-fit:contain;cursor:zoom-in;display:block}
.media.multi{grid-template-columns:1fr 1fr;gap:2px}
.ph{display:grid;place-items:center;align-content:center;gap:10px;color:var(--muted);font:500 12px var(--mono);letter-spacing:.06em;text-transform:uppercase}
.card.failed .ph,.card.cancelled .ph{color:var(--bad)}
/* in-progress: a slow safelight wash across the empty frame */
.card.queued .media,.card.running .media{background:linear-gradient(100deg,#0b0c0d 30%,#1d1a12 50%,#0b0c0d 70%) 0 0/300% 100%;animation:wash 2.4s ease-in-out infinite}
@keyframes wash{from{background-position:100% 0}to{background-position:0 0}}
.spin{display:none}
.prompt{margin:10px 2px 0;font-size:13px;color:var(--muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.card .err{margin:6px 2px 0}
.acts{display:flex;flex-wrap:wrap;gap:6px;padding:10px 0 0;margin-top:auto}
.acts button,.acts .btn{font-size:13px;padding:6px 10px;background:transparent}
.acts button:hover,.acts .btn:hover{background:var(--panel2)}
.acts .danger{margin-left:auto;border-color:transparent}
.btn{display:inline-block;border:1px solid var(--line);border-radius:8px;color:var(--ink);text-decoration:none}
.empty{padding:48px 20px;text-align:center;border:1.5px dashed var(--line);border-radius:12px}
.viewer{position:fixed;inset:0;z-index:20;background:rgba(10,11,12,.94);display:grid;place-items:center;padding:20px}
.viewer img,.viewer video{max-width:100%;max-height:90vh;border:10px solid var(--film);border-radius:4px}
.viewer .close{position:absolute;top:14px;right:14px;font-size:18px}
.tabbar{display:none}

@media (prefers-reduced-motion:reduce){.card.queued .media,.card.running .media{animation:none;background:#16150f}}

/* phone: own layout — one pane at a time, bottom tab bar */
@media (max-width:820px){
  .top{padding:10px 16px;gap:8px}
  .top .ghost{padding:8px 4px}
  .kinds button{font-size:13px;white-space:nowrap}
  .layout{grid-template-columns:1fr;padding:12px 16px 90px;gap:0}
  .create{position:static;max-height:none;overflow:visible;margin-bottom:70px}
  body[data-pane="create"] .gallery,body[data-pane="gallery"] .create{display:none}
  .grid{grid-template-columns:1fr 1fr;gap:16px 10px}
  .frame{padding:0 6px}
  .edge{font-size:9.5px;height:26px}
  .acts button,.acts .btn{padding:8px 10px}
  .go{position:fixed;left:0;right:0;bottom:calc(60px + env(safe-area-inset-bottom));z-index:9;margin:0;padding:10px 16px;background:#202326;border-top:1px solid var(--line)}
  body[data-pane="gallery"] .go{display:none}
  .tabbar{display:grid;grid-template-columns:1fr 1fr;position:fixed;left:0;right:0;bottom:0;z-index:10;background:#202326;border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom)}
  .tabbar button{border:0;background:none;border-radius:0;padding:9px 0 11px;display:grid;justify-items:center;gap:2px;color:var(--muted);position:relative}
  .tabbar button b{font-size:19px;line-height:1}.tabbar button span{font-size:11.5px}
  .tabbar button.on{color:var(--acc)}
  .tabbar i{position:absolute;top:5px;left:calc(50% + 10px);background:var(--acc);color:var(--acc-ink);font-style:normal;font-size:10.5px;font-weight:700;border-radius:99px;padding:0 6px}
}
@media (max-width:420px){.grid{grid-template-columns:1fr}.acts .danger{margin-left:0}}
