/* Studio Platform — shared styles.
   IMPORTANT: brand colours (--ink/--primary/--accent) are for the CANVAS.
   The app's own furniture uses fixed --ui-* neutrals so a dark brand
   (EXIT CODE, Metis) doesn't render an unreadable interface. */
:root{
  --ui-bg:#F4F6FA;
  --ui-panel:#FFFFFF;
  --ui-line:#E3E7EE;
  --ui-chip:#EEF1F6;
  --ui-text:#212734;
  --ui-muted:#6B7385;
}
*{box-sizing:border-box;min-width:0}
html,body{margin:0;height:100%;overflow:hidden}
body{
  font-family:var(--font-body),system-ui,-apple-system,sans-serif;
  color:var(--ui-text);background:var(--ui-bg);-webkit-font-smoothing:antialiased;
}
button{font:inherit;cursor:pointer;border:none;background:none;color:inherit}
input,textarea,select{font:inherit;color:var(--ui-text)}

/* ---------- gate (this one DOES use brand colour, it's a brand moment) ---------- */
.gate{position:fixed;inset:0;background:var(--ink);display:grid;place-items:center;z-index:1000;padding:24px}
.gate-card{width:100%;max-width:400px;background:#fff;border-radius:18px;padding:38px 30px 30px;text-align:center;
  box-shadow:0 24px 60px rgba(0,0,0,.3)}
.gate-card h1{font-family:var(--font-display),sans-serif;font-weight:800;font-size:25px;margin:0 0 6px;color:var(--ink)}
.gate-card p{color:var(--ui-muted);font-size:14px;margin:0 0 22px}
.gate-card input{width:100%;padding:13px 15px;border:1px solid var(--ui-line);border-radius:10px;font-size:16px;text-align:center;letter-spacing:.18em}
.gate-card input:focus{outline:none;border-color:var(--primary)}
.gate-card button{width:100%;margin-top:12px;background:var(--primary);color:var(--on-primary,#fff);
  padding:13px;border-radius:10px;font-weight:700}
.gate-err{color:#d33;font-size:13px;margin-top:10px;min-height:18px}

/* ---------- layout ---------- */
.app{display:grid;grid-template-columns:290px 1fr 330px;height:100vh}
.panel{background:var(--ui-panel);border-right:1px solid var(--ui-line);display:flex;flex-direction:column;overflow:hidden}
.panel.right{border-right:none;border-left:1px solid var(--ui-line)}
.panel-head{padding:16px 18px;border-bottom:1px solid var(--ui-line);display:flex;align-items:center;justify-content:space-between;gap:10px}
.panel-head h2{font-family:var(--font-display),sans-serif;font-size:14px;margin:0;font-weight:700;letter-spacing:.02em;color:var(--ui-text)}
.panel-body{overflow-y:auto;padding:14px 16px;flex:1}

.topbar{display:flex;align-items:center;justify-content:space-between;padding:12px 18px;
  border-bottom:1px solid var(--ui-line);background:var(--ui-panel);gap:12px}
.topbar .name{font-family:var(--font-display),sans-serif;font-weight:800;font-size:15px;color:var(--ui-text)}
.topbar .right{display:flex;gap:8px;align-items:center}
.mini{font-size:12.5px;padding:7px 12px;border-radius:8px;background:var(--ui-chip);font-weight:600;color:var(--ui-text)}
.mini:hover{background:var(--ui-line)}
.autosave{font-size:11.5px;color:var(--ui-muted);opacity:0;transition:opacity .3s}
.autosave.on{opacity:1}

/* ---------- stage ---------- */
.stage{display:flex;flex-direction:column;overflow:hidden;background:var(--ui-bg)}
.stage-inner{flex:1;display:grid;place-items:center;padding:22px;overflow:auto}
#post-canvas{max-width:100%;max-height:100%;box-shadow:0 18px 44px rgba(0,0,0,.16);border-radius:6px;background:#fff}
.stage-foot{padding:9px 18px;border-top:1px solid var(--ui-line);font-size:12px;color:var(--ui-muted);background:var(--ui-panel);text-align:center}

/* ---------- templates ---------- */
.search{width:100%;padding:9px 12px;border:1px solid var(--ui-line);border-radius:9px;font-size:13.5px;margin-bottom:12px;background:#fff}
.search:focus{outline:none;border-color:var(--primary)}
/* season / year filters */
.filters{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}
.filters label{display:flex;align-items:center;gap:7px;font-size:12px;font-weight:600;color:var(--ui-muted);cursor:pointer}
.filters input{accent-color:var(--primary);margin:0}
#season-banner{background:var(--ui-chip);border-radius:9px;padding:9px 11px;margin-bottom:10px;
  font-size:12px;color:var(--ui-text);display:flex;align-items:center;justify-content:space-between;gap:8px}
#season-banner strong{color:var(--primary)}
#season-banner button{font-size:11.5px;font-weight:700;color:var(--primary);white-space:nowrap}
.tag-live{display:inline-block;font-style:normal;font-size:9.5px;font-weight:800;background:#DCF5E4;color:#1B7A3D;
  padding:1px 5px;border-radius:4px;margin-left:5px;vertical-align:middle}
.tag-soon{display:inline-block;font-style:normal;font-size:9.5px;font-weight:800;background:#FFF0D4;color:#8A6100;
  padding:1px 5px;border-radius:4px;margin-left:5px;vertical-align:middle}
.tag-arch{display:inline-block;font-style:normal;font-size:9.5px;font-weight:800;background:#ECEEF2;color:#7A8494;
  padding:1px 5px;border-radius:4px;margin-left:5px;vertical-align:middle}
.tpl.arch{opacity:.55}

#cat-list{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}
.cat{font-size:12px;font-weight:600;padding:5px 11px;border-radius:999px;background:var(--ui-chip);color:var(--ui-muted);text-transform:capitalize}
.cat.on{background:var(--primary);color:var(--on-primary,#fff)}
#tpl-list{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.tpl{border:2px solid transparent;border-radius:11px;overflow:hidden;background:var(--ui-chip);text-align:left;padding:0;transition:border-color .15s}
.tpl img{width:100%;display:block;aspect-ratio:4/5;object-fit:cover}
.tpl span{display:block;padding:7px 9px;font-size:11.5px;font-weight:600;line-height:1.3;color:var(--ui-text)}
.tpl.on{border-color:var(--primary)}
.empty{font-size:13px;color:var(--ui-muted);text-align:center;padding:20px 0}

/* ---------- fields ---------- */
.field{margin-bottom:14px}
.field label{display:block;font-size:12px;font-weight:700;color:var(--ui-muted);margin-bottom:5px;letter-spacing:.02em}
.field input[type=text],.field textarea{width:100%;padding:9px 11px;border:1px solid var(--ui-line);border-radius:9px;
  font-size:13.5px;resize:vertical;background:#fff}
.field input:focus,.field textarea:focus{outline:none;border-color:var(--primary)}
.field textarea{min-height:74px;line-height:1.5}
.file-btn{display:block;padding:11px;border:1.5px dashed var(--ui-line);border-radius:10px;text-align:center;
  font-size:12.5px;font-weight:600;color:var(--ui-muted);cursor:pointer}
.file-btn:hover{border-color:var(--primary);color:var(--primary)}
.file-btn input{display:none}
.ba-row{display:grid;grid-template-columns:1fr 1fr;gap:9px}

#fmt-row{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}
.fmt{font-size:12px;font-weight:600;padding:6px 11px;border-radius:8px;background:var(--ui-chip);color:var(--ui-muted)}
.fmt.on{background:var(--ui-text);color:#fff}

/* photo library */
#photo-library{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:8px;max-height:190px;overflow-y:auto}
.libimg{border-radius:8px;overflow:hidden;padding:0;border:2px solid transparent}
.libimg img{width:100%;aspect-ratio:1;object-fit:cover;display:block}
.libimg:hover{border-color:var(--primary)}

/* lint */
.lint{font-size:11.5px;margin-top:6px;line-height:1.8;min-height:16px}
.lint.ok{color:#2e8b57}
.lint-tag{display:inline-block;padding:2px 7px;border-radius:5px;font-weight:700;margin-right:4px}
.lint-tag.warn{background:#FFF4D6;color:#8A6100}
.lint-tag.block{background:#FFE0E0;color:#A11}

/* export */
.export-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:6px}
.xbtn{padding:11px 8px;border-radius:9px;background:var(--ui-chip);font-size:12.5px;font-weight:600;text-align:center;color:var(--ui-text)}
.xbtn:hover{background:var(--ui-line)}
.xbtn.primary{background:var(--primary);color:var(--on-primary,#fff);grid-column:1/-1}
.xbtn.recording{background:#d33;color:#fff}

/* toast */
#toast{position:fixed;left:50%;bottom:26px;transform:translateX(-50%) translateY(14px);opacity:0;pointer-events:none;
  background:#212734;color:#fff;padding:11px 20px;border-radius:10px;font-size:13.5px;font-weight:600;
  transition:opacity .2s,transform .2s;z-index:900}
#toast.show{opacity:1;transform:translateX(-50%)}
#toast.err{background:#c22}

/* mobile */
.mtabs{display:none}
@media (max-width:1000px){
  .app{grid-template-columns:1fr;grid-template-rows:1fr}
  .mtabs{display:flex;border-bottom:1px solid var(--ui-line);background:var(--ui-panel)}
  .mtab{flex:1;padding:11px;font-size:12.5px;font-weight:700;color:var(--ui-muted)}
  .mtab.on{color:var(--primary);box-shadow:inset 0 -2px 0 var(--primary)}
  .panel{display:none;border:none}
  .stage{display:none}
  body[data-mobile="templates"] .panel.left{display:flex}
  body[data-mobile="edit"] .panel.right{display:flex}
  body[data-mobile="preview"] .stage{display:flex}
  body:not([data-mobile]) .panel.left{display:flex}
}

/* ---------- scheduler ---------- */
.stabs{display:flex;gap:4px;width:100%}
.stab{flex:1;padding:10px 8px;font-size:12.5px;font-weight:700;color:var(--ui-muted);border-radius:8px 8px 0 0}
.stab.on{color:var(--primary);background:var(--ui-chip)}
.stab .badge{font-style:normal;background:var(--primary);color:var(--on-primary,#fff);font-size:10px;
  padding:1px 5px;border-radius:99px;margin-left:4px}
.xbtn.sched{background:var(--ui-text);color:#fff}
.xbtn.sched:hover{opacity:.9}

.due-banner{background:#FFF0D4;color:#8A6100;border-radius:9px;padding:9px 11px;font-size:12px;
  display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:12px;font-weight:600}
.due-banner button{font-size:11.5px;font-weight:800;color:#8A6100;text-decoration:underline}

.cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.cal-head span{font-size:13px;font-weight:700;color:var(--ui-text)}
.cal-head button{font-size:18px;color:var(--ui-muted);padding:2px 9px;border-radius:6px}
.cal-head button:hover{background:var(--ui-chip)}
.cal-dow{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;margin-bottom:3px}
.cal-dow span{text-align:center;font-size:9.5px;font-weight:800;color:var(--ui-muted)}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;margin-bottom:16px}
.cal-cell{aspect-ratio:1;border-radius:6px;background:var(--ui-chip);display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:2px;position:relative;font-size:10.5px}
.cal-cell.empty{background:transparent}
.cal-cell.today{outline:2px solid var(--primary)}
.cal-cell.has{cursor:pointer;background:#fff;border:1px solid var(--ui-line)}
.cal-cell.has:hover{border-color:var(--primary)}
.cal-cell .dnum{font-weight:600;color:var(--ui-text);line-height:1}
.cal-cell .dot{width:5px;height:5px;border-radius:50%;background:var(--primary);display:inline-block;margin:0 1px}
.cal-cell .dot.posted{background:#1B7A3D}
.cal-cell .more{font-size:8px;color:var(--ui-muted)}

.sched-list h4{font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--ui-muted);margin:0 0 8px}
.sched-item{background:#fff;border:1px solid var(--ui-line);border-radius:9px;padding:9px 10px;margin-bottom:7px;
  display:flex;align-items:flex-start;justify-content:space-between;gap:8px}
.sched-item.posted{opacity:.6}
.si-main{display:flex;flex-direction:column;gap:2px;min-width:0}
.si-main strong{font-size:12.5px;color:var(--ui-text)}
.si-meta{font-size:10.5px;color:var(--ui-muted)}
.si-note{font-size:10.5px;color:var(--primary);font-style:italic}
.si-actions{display:flex;align-items:center;gap:4px;flex:none}
.si-actions button{font-size:10.5px;font-weight:700;padding:4px 7px;border-radius:6px;background:var(--ui-chip);color:var(--ui-text)}
.si-actions button.ok{background:#DCF5E4;color:#1B7A3D}
.si-actions button.del{background:transparent;color:var(--ui-muted);font-size:15px;padding:2px 5px}
.si-done{font-size:10.5px;color:#1B7A3D;font-weight:700}

#sched-dialog{border:none;border-radius:16px;padding:0;box-shadow:0 30px 70px rgba(0,0,0,.28);max-width:380px;width:92%}
#sched-dialog::backdrop{background:rgba(20,24,32,.45)}
.sd{padding:24px 26px 20px}
.sd h3{font-family:var(--font-display),sans-serif;margin:0 0 16px;font-size:18px;color:var(--ui-text)}
.sd-l{display:block;font-size:11.5px;font-weight:700;color:var(--ui-muted);margin:12px 0 5px}
.sd input[type=date],.sd input[type=text]{width:100%;padding:9px 11px;border:1px solid var(--ui-line);
  border-radius:8px;font-size:13.5px}
.sd-plats{display:grid;grid-template-columns:1fr 1fr;gap:5px}
.sd-plats label{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--ui-text);cursor:pointer}
.sd-plats input{accent-color:var(--primary);margin:0}
.sd-hint{font-size:11px;color:var(--ui-muted);line-height:1.5;margin:14px 0 0}
.sd-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:18px}
.sd-ghost{padding:9px 16px;border-radius:8px;background:var(--ui-chip);font-weight:600;font-size:13px}
.sd-primary{padding:9px 18px;border-radius:8px;background:var(--primary);color:var(--on-primary,#fff);font-weight:700;font-size:13px}
