:root{
  --midnight:#131720; --bronze:#A78463; --ivory:#F5F2EC;
  --mist:#8B8F96; --onyx:#0B0E14; --ember:#1C2230;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  font-family:'Inter',system-ui,sans-serif;
  background:var(--midnight); color:var(--ivory);
  -webkit-font-smoothing:antialiased; min-height:100vh;
}
h1{font-family:'Archivo',sans-serif; text-transform:uppercase; letter-spacing:.08em; font-weight:600; font-size:1.5rem; margin:0}
a{color:var(--bronze); text-decoration:none}
a:hover{text-decoration:underline}
.muted{color:var(--mist)}

/* ---- top bar ---- */
.topbar{
  display:flex; align-items:center; justify-content:space-between;
  padding:1rem 1.5rem; border-bottom:1px solid rgba(245,242,236,.08);
  background:var(--onyx);
}
.brand,.brand-lg{font-family:'Archivo',sans-serif; letter-spacing:.22em; font-weight:600}
.brand{font-size:.95rem}
.brand span,.brand-lg span{color:var(--bronze)}
.topbar nav{display:flex; align-items:center; gap:1rem}
.who{color:var(--mist); font-size:.8rem; text-transform:uppercase; letter-spacing:.1em}

/* ---- layout ---- */
main.wrap{max-width:980px; margin:0 auto; padding:2.5rem 1.5rem}
main.center{min-height:100vh; display:flex; align-items:center; justify-content:center; padding:1.5rem}
.head{display:flex; align-items:center; justify-content:space-between; margin-bottom:1.75rem}

/* ---- buttons ---- */
.btn,button[type=submit]{
  display:inline-block; background:var(--bronze); color:var(--midnight);
  font-family:'Archivo',sans-serif; text-transform:uppercase; letter-spacing:.12em;
  font-weight:600; font-size:.78rem; padding:.7rem 1.2rem; border:0; border-radius:2px;
  cursor:pointer;
}
.btn:hover,button[type=submit]:hover{filter:brightness(1.08); text-decoration:none}
.btn-ghost{color:var(--mist); font-size:.78rem; text-transform:uppercase; letter-spacing:.12em}

/* ---- login card ---- */
.card.login{
  width:100%; max-width:360px; background:var(--ember);
  border:1px solid rgba(245,242,236,.06); padding:2.5rem 2rem; border-radius:4px; text-align:center;
}
.brand-lg{font-size:1.35rem}
.card.login .muted{margin:.4rem 0 1.75rem; font-size:.7rem; text-transform:uppercase; letter-spacing:.25em}
.card.login form{display:flex; flex-direction:column; gap:1rem; text-align:left}
.card.login label{display:flex; flex-direction:column; gap:.4rem; font-size:.72rem; text-transform:uppercase; letter-spacing:.12em; color:var(--mist)}
.card.login input{
  background:var(--onyx); border:1px solid rgba(245,242,236,.1); color:var(--ivory);
  padding:.7rem .8rem; border-radius:2px; font-size:.95rem; font-family:'Inter',sans-serif;
}
.card.login input:focus{outline:none; border-color:var(--bronze)}
.card.login button{margin-top:.5rem}
.alert{background:rgba(167,132,99,.12); border:1px solid var(--bronze); color:var(--ivory); padding:.7rem .8rem; border-radius:2px; font-size:.85rem; margin-bottom:1.25rem}

/* ---- dashboard ---- */
.empty{background:var(--ember); border:1px solid rgba(245,242,236,.06); border-radius:4px; padding:3rem 2rem; text-align:center}
.empty p{margin:.25rem 0}
table.list{width:100%; border-collapse:collapse; background:var(--ember); border:1px solid rgba(245,242,236,.06); border-radius:4px; overflow:hidden}
table.list th,table.list td{text-align:left; padding:.85rem 1rem; border-bottom:1px solid rgba(245,242,236,.05); font-size:.9rem}
table.list th{font-family:'Archivo',sans-serif; text-transform:uppercase; letter-spacing:.1em; font-size:.7rem; color:var(--mist)}
table.list tr:last-child td{border-bottom:0}
.pill{font-size:.68rem; text-transform:uppercase; letter-spacing:.08em; padding:.2rem .55rem; border-radius:99px; border:1px solid rgba(245,242,236,.2)}
.pill-draft{color:var(--mist)}
.pill-published{color:var(--bronze); border-color:var(--bronze)}

/* ===== nav / flash ===== */
.bar-left{display:flex;align-items:center;gap:2rem}
.brand{text-decoration:none;color:var(--ivory)}
.mainnav{display:flex;gap:1.5rem}
.mainnav a{color:var(--mist);font-size:.75rem;text-transform:uppercase;letter-spacing:.12em;text-decoration:none}
.mainnav a:hover{color:var(--bronze)}
.bar-right{display:flex;align-items:center;gap:1rem}
.flash{max-width:980px;margin:1rem auto -.5rem;padding:.6rem 1rem;background:rgba(167,132,99,.14);
  border:1px solid var(--bronze);border-radius:2px;color:var(--ivory);font-size:.85rem}

/* ===== forms / cards ===== */
.card.form{max-width:520px}
.form label,.module-card label{display:flex;flex-direction:column;gap:.4rem;margin-bottom:1.1rem;
  font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;color:var(--mist)}
.form input,.module-card input,.module-card textarea,.module-card select,.card select{
  background:var(--onyx);border:1px solid rgba(245,242,236,.1);color:var(--ivory);
  padding:.65rem .75rem;border-radius:2px;font-size:.95rem;font-family:'Inter',sans-serif}
input:focus,textarea:focus,select:focus{outline:none;border-color:var(--bronze)}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.head-actions,.head>div{display:flex;flex-direction:column;gap:.25rem}
.back{font-size:.72rem;text-transform:uppercase;letter-spacing:.12em;text-decoration:none}
.row-actions a{margin-right:.9rem;font-size:.8rem}
.form-actions{margin:1.5rem 0}
.sub{font-family:'Archivo',sans-serif;text-transform:uppercase;letter-spacing:.1em;font-size:.9rem;color:var(--bronze);margin:1.5rem 0 1rem}

.module-card{margin-top:1.5rem}
.module-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:1.25rem;
  border-bottom:1px solid rgba(245,242,236,.08);padding-bottom:.75rem}
.module-head h2{font-size:1.1rem;margin:0}
.add-module{margin-top:1.5rem;text-align:center}

/* ===== financials editor ===== */
.fin-cat{background:var(--onyx);border:1px solid rgba(245,242,236,.07);border-radius:3px;padding:1rem;margin-bottom:1rem}
.fin-cat-head{display:flex;gap:.5rem;margin-bottom:.75rem}
.cat-name{flex:1;font-weight:500}
.fin-item{display:grid;grid-template-columns:1fr 140px 32px;gap:.5rem;margin-bottom:.5rem}
.fin-cat-sub{display:flex;justify-content:space-between;margin-top:.5rem;padding-top:.5rem;
  border-top:1px solid rgba(245,242,236,.08);font-size:.8rem;color:var(--mist);text-transform:uppercase;letter-spacing:.08em}
.cat-sub{color:var(--ivory)}
.fin-contingency{display:flex;align-items:center;gap:.75rem;margin:1rem 0}
.fin-contingency label{margin:0;font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;color:var(--mist)}
.fin-contingency input{width:90px}
.fin-totals{margin-top:1rem;border-top:1px solid rgba(245,242,236,.12);padding-top:1rem}
.fin-total-row{display:flex;justify-content:space-between;padding:.3rem 0;font-size:.95rem}
.fin-total-row.muted{color:var(--mist);font-size:.85rem}
.fin-total-row.grand{margin-top:.5rem;padding-top:.6rem;border-top:1px solid rgba(167,132,99,.4);
  font-family:'Archivo',sans-serif;color:var(--bronze);font-size:1.1rem}

.btn-soft{background:transparent;color:var(--bronze);border:1px solid rgba(167,132,99,.4);
  border-radius:2px;padding:.5rem .9rem;font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;cursor:pointer}
.btn-soft.small{padding:.35rem .7rem;font-size:.68rem}
.icon-btn{background:transparent;border:1px solid rgba(245,242,236,.15);color:var(--mist);border-radius:2px;cursor:pointer;font-size:1rem;line-height:1}
.icon-btn:hover{color:var(--ivory);border-color:var(--bronze)}
.link-danger{background:none;border:0;color:#c98b8b;cursor:pointer;font-size:.8rem;text-transform:uppercase;letter-spacing:.1em}
.btn-danger{background:transparent;border:1px solid #7a3b3b;color:#c98b8b;border-radius:2px;
  padding:.55rem 1rem;font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;cursor:pointer}
.btn-danger:hover{background:#7a3b3b;color:var(--ivory)}
.inline-form{margin-top:1rem}
.danger-zone{margin-top:2.5rem;padding-top:1.5rem;border-top:1px solid rgba(245,242,236,.06)}

/* ===== image library ===== */
.dropzone{border:1.5px dashed rgba(245,242,236,.18);border-radius:4px;padding:2.5rem;text-align:center;background:var(--ember);margin-bottom:2rem}
.dropzone.drag{border-color:var(--bronze);background:rgba(167,132,99,.08)}
.dropzone p{margin:.4rem 0}
.small{font-size:.8rem}
.asset-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:1rem}
.asset{position:relative;margin:0;background:var(--ember);border:1px solid rgba(245,242,236,.07);border-radius:3px;overflow:hidden}
.asset img{width:100%;height:130px;object-fit:cover;display:block}
.asset figcaption{padding:.5rem;font-size:.72rem;color:var(--mist);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.asset-del{position:absolute;top:.4rem;right:.4rem;width:24px;height:24px;border-radius:50%;border:0;
  background:rgba(11,14,20,.8);color:var(--ivory);cursor:pointer;font-size:1rem;line-height:1}
.asset-del:hover{background:#7a3b3b}

@media(max-width:640px){.grid2{grid-template-columns:1fr}.fin-item{grid-template-columns:1fr 100px 32px}}

/* ===== editor toolbar + cards (Phase 2.1 UI pass) ===== */
.editor-bar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;
  gap:1rem;margin:-2.5rem -1.5rem 1.75rem;padding:1rem 1.5rem;background:rgba(11,14,20,.96);
  backdrop-filter:blur(8px);border-bottom:1px solid rgba(245,242,236,.08)}
.eb-left{display:flex;align-items:center;gap:1.25rem;min-width:0}
.eb-title{font-family:'Archivo',sans-serif;text-transform:uppercase;letter-spacing:.05em;font-size:.95rem;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.eb-right{display:flex;align-items:center;gap:1.25rem}
.save-status{font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;display:inline-flex;align-items:center;gap:.45rem}
.save-status::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;opacity:.9}
.save-status.saved{color:#7fae8f}
.save-status.dirty{color:var(--mist)}
.save-status.saving{color:var(--bronze)}
.save-status.error{color:#c98b8b}

.ed-card{background:var(--ember);border:1px solid rgba(245,242,236,.06);border-radius:5px;padding:1.5rem 1.75rem;margin-bottom:1.25rem}
.ed-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;margin-bottom:1.25rem;
  padding-bottom:.75rem;border-bottom:1px solid rgba(245,242,236,.08)}
.ed-h{font-family:'Archivo',sans-serif;text-transform:uppercase;letter-spacing:.08em;font-size:1rem;font-weight:600;margin:0}
.ed-sub{font-family:'Archivo',sans-serif;text-transform:uppercase;letter-spacing:.1em;font-size:.78rem;color:var(--bronze);margin:1.75rem 0 1rem}
.grid3{display:grid;grid-template-columns:1.4fr 1.4fr .8fr;gap:1rem}
.ed-card label{display:flex;flex-direction:column;gap:.4rem;margin-bottom:1rem;font-size:.7rem;
  text-transform:uppercase;letter-spacing:.1em;color:var(--mist)}
.ed-card input,.ed-card textarea,.ed-card select{background:var(--onyx);border:1px solid rgba(245,242,236,.1);
  color:var(--ivory);padding:.6rem .7rem;border-radius:3px;font-size:.95rem;font-family:'Inter',sans-serif}
.ed-card textarea{resize:vertical}

/* financials editor refined */
.fin-cat{background:var(--onyx);border:1px solid rgba(245,242,236,.08);border-radius:4px;padding:1.1rem 1.2rem;margin-bottom:1rem}
.fin-cat-head{display:flex;gap:.5rem;align-items:center;margin-bottom:.85rem}
.cat-name{flex:1;font-weight:500;font-size:1rem!important;text-transform:none!important;letter-spacing:0!important}
.fin-cols{display:grid;grid-template-columns:1fr 150px 34px;gap:.6rem;padding:0 0 .35rem;
  font-size:.62rem;text-transform:uppercase;letter-spacing:.1em;color:var(--mist)}
.fin-cols span:nth-child(2){padding-left:.2rem}
.fin-item{display:grid;grid-template-columns:1fr 150px 34px;gap:.6rem;margin-bottom:.5rem;align-items:center}
.cost-wrap{position:relative;display:flex;align-items:center}
.cost-wrap .dollar{position:absolute;left:.65rem;color:var(--mist);font-size:.9rem;pointer-events:none}
.it-cost{width:100%;padding-left:1.5rem!important;text-align:right}
.fin-cat-sub{display:flex;justify-content:space-between;margin-top:.6rem;padding-top:.6rem;
  border-top:1px solid rgba(245,242,236,.08);font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;color:var(--mist)}
.cat-sub{color:var(--ivory);font-weight:500}
.fin-contingency{display:flex;align-items:center;gap:.6rem;margin:1.25rem 0}
.fin-contingency label{margin:0;font-size:.7rem;text-transform:uppercase;letter-spacing:.1em;color:var(--mist)}
.ct-input{width:80px;text-align:right}
.fin-contingency .pct{color:var(--mist)}
.fin-totals{margin-top:1.25rem;border-top:1px solid rgba(245,242,236,.14);padding-top:1.1rem}
.fin-total-row{display:flex;justify-content:space-between;padding:.32rem 0;font-size:.95rem}
.fin-total-row.muted{color:var(--mist);font-size:.85rem}
.fin-total-row.grand{margin-top:.6rem;padding-top:.7rem;border-top:1px solid rgba(167,132,99,.45);
  font-family:'Archivo',sans-serif;text-transform:uppercase;letter-spacing:.05em;color:var(--bronze);font-size:1.05rem}
