:root{
  /* color tokens */
  --navy:#0a1c38;--navy2:#0e2547;--panel:#0f2444;--panel2:#12294a;--bg:#08152b;
  --cream:#f6efdf;--gold:#c8a34a;--gold2:#e0c27a;--red:#b22234;--red2:#d13a4a;
  --grn:#37d39b;--t1:#dfd3b8;--t2:#9fb0c8;--line:rgba(200,163,74,.22);--line2:rgba(255,255,255,.09);
  /* space + radius + motion tokens */
  --s1:6px;--s2:10px;--s3:14px;--s4:20px;--r1:4px;--r2:8px;--r3:10px;
  --focus:0 0 0 2px var(--bg),0 0 0 4px var(--gold2);--dur:.15s;
}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:'Inter',system-ui,sans-serif;background:var(--bg);color:var(--t1);line-height:1.5;font-size:14px}
a{color:var(--gold2)}
button{font-family:inherit;cursor:pointer}
.hide{display:none!important}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.mono{font-family:'Oswald',ui-monospace,monospace;text-transform:uppercase;letter-spacing:1.5px}
/* visible focus ring for keyboard users (WCAG 2.4.7) */
:focus-visible{outline:none;box-shadow:var(--focus);border-radius:var(--r1)}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{box-shadow:var(--focus)}
@media (prefers-reduced-motion: reduce){*{transition:none!important;animation:none!important}}

/* buttons */
.btn{border:1px solid var(--line);background:rgba(255,255,255,.03);color:var(--cream);padding:8px 14px;border-radius:4px;font-size:13px;transition:.15s;display:inline-flex;align-items:center;gap:7px}
.btn:hover{border-color:var(--gold);background:rgba(200,163,74,.1)}
.btn.primary{background:var(--red);border-color:var(--red);color:#fff}
.btn.primary:hover{background:var(--red2)}
.btn.gold{background:var(--gold);border-color:var(--gold);color:var(--navy);font-weight:600}
.btn.gold:hover{background:var(--gold2)}
.btn.sm{padding:5px 10px;font-size:12px}
.btn.danger:hover{border-color:var(--red2);background:rgba(178,34,52,.15);color:#ffb4b4}

/* login */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}
.login-card{width:100%;max-width:380px;background:var(--navy2);border:1px solid var(--line);border-top:3px solid var(--gold);border-radius:10px;padding:34px 30px;text-align:center}
.login-card img{width:64px;height:64px;border-radius:50%;box-shadow:0 0 0 2px var(--gold);margin-bottom:14px}
.login-card h1{font-family:'Cormorant Garamond',serif;color:var(--cream);font-size:24px;font-weight:700}
.login-card p{color:var(--t2);font-size:13px;margin-bottom:20px}
.login-card .msg{min-height:18px;font-size:12.5px;color:#ff9a9a;margin-top:6px}

/* inputs */
label{display:block;text-align:left;font-size:11px;letter-spacing:1px;text-transform:uppercase;color:var(--gold2);margin:12px 0 5px;font-family:'Oswald',sans-serif}
input[type=text],input[type=password],input[type=url],textarea,select{
  width:100%;background:#0a1c38;border:1px solid var(--line2);border-radius:5px;color:var(--cream);
  padding:9px 11px;font-size:14px;font-family:inherit}
input:focus,textarea:focus,select:focus{outline:none;border-color:var(--gold)}
textarea{resize:vertical;min-height:64px}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.check{display:flex;align-items:center;gap:8px;margin-top:12px}
.check input{width:auto}
.check label{margin:0;text-transform:none;letter-spacing:0;color:var(--t1);font-family:inherit;font-size:13px}

/* app shell */
.app{display:grid;grid-template-columns:230px 1fr;min-height:100vh}
.side{background:#0a1c38;border-right:1px solid var(--line2);padding:20px 16px;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:4px}
.side .brand{display:flex;align-items:center;gap:10px;margin-bottom:20px}
.side .brand img{width:36px;height:36px;border-radius:50%;box-shadow:0 0 0 2px var(--gold)}
.side .brand b{font-family:'Cormorant Garamond',serif;color:var(--cream);font-size:16px;line-height:1.1}
.navbtn{text-align:left;background:none;border:none;color:var(--t2);padding:10px 12px;border-radius:6px;font-size:13.5px;display:flex;gap:10px;align-items:center}
.navbtn:hover{background:rgba(255,255,255,.04);color:var(--cream)}
.navbtn.active{background:rgba(200,163,74,.14);color:var(--gold2)}
.side .spacer{flex:1}
.main{padding:28px 34px;max-width:1000px}
.head{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px;gap:12px;flex-wrap:wrap}
.head h2{font-family:'Cormorant Garamond',serif;color:var(--cream);font-size:26px;font-weight:700}
.head .sub{color:var(--t2);font-size:13px}

/* pages list */
.plist{display:flex;flex-direction:column;gap:10px}
.pcard{background:#0e2547;border:1px solid var(--line2);border-radius:8px;padding:14px 16px;display:flex;align-items:center;gap:14px}
.pcard.dragging{opacity:.4}
.pcard .grip{color:var(--t2);cursor:grab;font-size:16px}
.pcard .pinfo{flex:1;min-width:0}
.pcard .pinfo b{color:var(--cream);font-size:15px}
.pcard .pinfo .meta{color:var(--t2);font-size:12px;margin-top:2px}
.badge{font-size:10px;letter-spacing:1px;text-transform:uppercase;padding:3px 8px;border-radius:20px;font-family:'Oswald',sans-serif}
.badge.pub{background:rgba(55,211,155,.15);color:var(--grn)}
.badge.draft{background:rgba(159,176,200,.15);color:var(--t2)}
.badge.cta{background:rgba(200,163,74,.16);color:var(--gold2)}
.pact{display:flex;gap:6px}

/* block editor */
.block-list{display:flex;flex-direction:column;gap:10px;margin-top:8px}
.bcard{background:#0e2547;border:1px solid var(--line2);border-radius:8px;padding:12px 14px;display:flex;align-items:center;gap:12px}
.bcard.dragging{opacity:.4;border-color:var(--gold)}
.bcard .grip{color:var(--t2);cursor:grab}
.bcard .btype{font-family:'Oswald',sans-serif;text-transform:uppercase;letter-spacing:1px;font-size:12px;color:var(--gold2);width:96px;flex:none}
.bcard .bsum{flex:1;color:var(--t1);font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.card2{background:#0e2547;border:1px solid var(--line2);border-radius:8px;padding:20px;margin-bottom:18px}
.card2 h3{font-family:'Cormorant Garamond',serif;color:var(--cream);font-size:19px;margin-bottom:4px}

/* modal */
.modal-bg{position:fixed;inset:0;background:rgba(4,10,22,.72);display:flex;align-items:flex-start;justify-content:center;padding:40px 16px;z-index:50;overflow:auto}
.modal{width:100%;max-width:640px;background:#0e2547;border:1px solid var(--line);border-top:3px solid var(--gold);border-radius:10px;padding:24px}
.modal h3{font-family:'Cormorant Garamond',serif;color:var(--cream);font-size:22px;margin-bottom:4px}
.modal .mfoot{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}

/* field groups */
.fieldset{border:1px solid var(--line2);border-radius:8px;padding:12px 14px;margin-top:10px}
.fieldset > .fs-h{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}
.fieldset .fs-h span{font-family:'Oswald',sans-serif;text-transform:uppercase;letter-spacing:1px;font-size:11px;color:var(--gold2)}
.listitem{border:1px dashed var(--line2);border-radius:7px;padding:10px 12px;margin-top:8px;position:relative}
.listitem .rm{position:absolute;top:8px;right:8px}

/* image picker */
.imgfield{display:flex;gap:12px;align-items:center;margin-top:6px}
.imgfield .thumb{width:74px;height:74px;border-radius:6px;object-fit:cover;border:1px solid var(--line2);background:#0a1c38;flex:none}
.imgfield .thumb.empty{display:flex;align-items:center;justify-content:center;color:var(--t2);font-size:11px;text-align:center}

/* media */
.dropzone{border:2px dashed var(--line);border-radius:10px;padding:34px;text-align:center;color:var(--t2);transition:.2s;background:rgba(255,255,255,.02)}
.dropzone.over{border-color:var(--gold);background:rgba(200,163,74,.08);color:var(--gold2)}
.mgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:14px;margin-top:18px}
.mtile{background:#0e2547;border:1px solid var(--line2);border-radius:8px;overflow:hidden}
.mtile img{width:100%;height:120px;object-fit:cover;display:block;background:#0a1c38;cursor:pointer}
.mtile .mmeta{padding:8px 10px;font-size:11px;color:var(--t2);display:flex;justify-content:space-between;align-items:center;gap:6px}
.mtile .mmeta span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);background:#0e2547;border:1px solid var(--gold);color:var(--cream);padding:10px 18px;border-radius:8px;font-size:13px;z-index:80;box-shadow:0 10px 30px rgba(0,0,0,.5)}
.empty-note{color:var(--t2);font-size:13px;padding:20px;text-align:center;border:1px dashed var(--line2);border-radius:8px}

/* ============ frontend-architect: state + a11y component styles ============ */
/* button variants used by UI.js */
.btn.danger-solid{background:var(--red);border-color:var(--red);color:#fff}
.btn.danger-solid:hover{background:var(--red2)}
.btn[disabled]{opacity:.5;cursor:not-allowed}

/* toast variants (base .toast already defined above) */
.toast-success{border-color:var(--grn)}
.toast-error{border-color:var(--red2);color:#ffd7d7}

/* dialog message text (confirm/prompt) */
.dlg-msg{color:var(--t1);font-size:14px;margin-bottom:6px}

/* skeleton loading (respects reduced-motion via .noanim) */
@keyframes shimmer{0%{background-position:-320px 0}100%{background-position:320px 0}}
.sk-line,.sk-row,.sk-tile{background:linear-gradient(90deg,rgba(255,255,255,.04) 25%,rgba(255,255,255,.09) 37%,rgba(255,255,255,.04) 63%);background-size:640px 100%;animation:shimmer 1.3s infinite linear;border-radius:var(--r1)}
.sk-line{height:12px;margin:8px 0}
.sk-row{background:none;animation:none;display:flex;justify-content:space-between;gap:14px;padding:16px;border:1px solid var(--line2);border-radius:var(--r2);margin-bottom:10px}
.sk-row .sk-line{height:14px}
.sk-tile{height:150px}
.noanim{animation:none!important;background:rgba(255,255,255,.05)!important}

/* empty + error state boxes */
.state-box{text-align:center;padding:40px 24px;border:1px dashed var(--line2);border-radius:var(--r2);color:var(--t2);display:flex;flex-direction:column;align-items:center;gap:8px}
.state-box.err{border-color:rgba(178,34,52,.5);background:rgba(178,34,52,.06)}
.state-ic{font-size:30px;color:var(--gold2);opacity:.85}
.state-box.err .state-ic{color:var(--red2)}
.state-t{font-family:'Cormorant Garamond',serif;color:var(--cream);font-size:20px}
.state-m{font-size:13px;max-width:420px}
.state-box .btn{margin-top:8px}

/* keyboard reorder controls (accessible alternative to drag) */
.reorder{display:inline-flex;flex-direction:column;gap:2px}
.reorder button{background:none;border:1px solid var(--line2);color:var(--t2);border-radius:3px;width:22px;height:18px;line-height:1;font-size:11px;padding:0}
.reorder button:hover:not([disabled]){border-color:var(--gold);color:var(--gold2)}
.reorder button[disabled]{opacity:.3}
.grip{cursor:grab}
.grip:active{cursor:grabbing}
