/* ============================================================
   Molo Technologies — public theme on Bootstrap 5.3.6
   Design language overrides + brand component styles.
   ============================================================ */
:root{
    --ink:#0F2036;
    --ink-2:#16304C;
    --paper:#EEF1EE;
    --paper-2:#E4E8E2;
    --line:#C7CDC5;
    --line-on-ink:rgba(238,241,238,0.18);
    --brass:#AD7F2C;
    --brass-bright:#C9963C;
    --teal:#1F6F63;
    --text:#16222E;
    --text-muted:#4C5A61;
    --text-on-ink:#EEF1EE;
    --text-on-ink-muted:#9FB0BC;
    --serif:'Newsreader', Georgia, serif;
    --sans:'IBM Plex Sans', -apple-system, sans-serif;
    --mono:'IBM Plex Mono', 'Courier New', monospace;
    --radius:2px;
}

/* Bootstrap variable overrides for the public site */
.public{
    --bs-body-bg:var(--paper);
    --bs-body-color:var(--text);
    --bs-body-font-family:var(--sans);
    --bs-body-font-size:1rem;
    --bs-body-line-height:1.55;
    --bs-primary:#0F2036;
    --bs-primary-rgb:15,32,54;
    --bs-secondary:#AD7F2C;
    --bs-secondary-rgb:173,127,44;
    --bs-link-color:#16304C;
    --bs-link-hover-color:var(--brass);
    --bs-link-decoration:none;
    --bs-border-color:var(--line);
    --bs-border-radius:var(--radius);
    --bs-border-radius-lg:4px;
    --bs-navbar-color:var(--text);
    --bs-navbar-hover-color:var(--ink);
    --bs-navbar-active-color:var(--ink);
    --bs-navbar-brand-color:var(--ink);
    --bs-navbar-brand-hover-color:var(--ink);
    --bs-nav-link-color:var(--text);
    --bs-nav-link-hover-color:var(--ink);
    --bs-nav-link-active-color:var(--ink);
    --bs-dropdown-link-color:var(--text);
    --bs-dropdown-link-active-bg:var(--ink);
    --bs-dropdown-link-hover-bg:var(--paper-2);
}

html{scroll-behavior:smooth;}
body.public{display:flex; flex-direction:column; min-height:100vh;}
body.public > main{flex:1 0 auto;}
body.public .container{max-width:1120px; padding-inline:44px;}
body.public .navbar-molo .container, body.public .public-page .container{padding-inline:32px;}
body.public .container > .row, body.public .container > form > .row{margin-inline:calc(var(--bs-gutter-x, 1.5rem) * -0.5);}
[class*="section"]{scroll-margin-top:88px;}
[id]{scroll-margin-top:88px;}
@media (max-width:640px){
    body.public .container{padding-inline:32px;}
    body.public .navbar-molo .container, body.public .public-page .container{padding-inline:20px;}
}

.skip-link{position:absolute;left:-9999px;top:0;z-index:120;background:var(--ink);color:#fff;padding:10px 14px;}
.skip-link:focus{left:0;}

h1,h2,h3,.h1,.h2,.h3{color:var(--ink);}

/* ---------- navbar ---------- */
.navbar-molo{
    background:var(--paper);
    border-bottom:1px solid var(--line);
    padding-top:18px; padding-bottom:18px;
}
.navbar-molo .navbar-brand{
    font-family:var(--mono); font-weight:600; font-size:16px; letter-spacing:.02em;
    display:flex; align-items:center; gap:10px;
}
.navbar-molo .brand-dot{width:9px; height:9px; background:var(--brass); border-radius:50%; display:inline-block;}
.navbar-molo .nav-link{font-weight:600; font-size:14px; padding:8px 14px; border-bottom:2px solid transparent;}
.navbar-molo .nav-link:hover{color:var(--brass);}
.navbar-molo .nav-link.active{color:var(--ink); border-bottom-color:var(--brass);}
.navbar-molo .dropdown-toggle::after{margin-left:.5rem; font-size:.7em;}
.navbar-molo .dropdown-menu{
    border:1px solid var(--line); border-radius:var(--radius); background:#fff;
    box-shadow:0 16px 38px rgba(15,32,54,.16);
    padding:.4rem 0; margin-top:.55rem; max-width:88vw;
}
.navbar-molo .dropdown-menu.mega-menu{
    min-width:560px; padding:14px 14px 16px;
    grid-template-columns:repeat(2, 1fr); gap:2px;
    border:1px solid var(--line); border-top:3px solid var(--brass); border-radius:var(--radius);
    box-shadow:0 18px 44px rgba(15,32,54,.18);
}
.navbar-molo .panel-eyebrow{
    grid-column:1/-1; display:flex; align-items:center; gap:9px;
    padding:2px 2px 12px; margin:0 0 6px;
    font-family:var(--mono); font-size:11px; letter-spacing:.1em;
    text-transform:uppercase; color:var(--brass);
    border-bottom:1px solid var(--line);
}
.navbar-molo .panel-eyebrow::before{content:''; width:18px; height:1px; background:var(--brass);}
.navbar-molo .dropdown-menu.mega-menu.show{display:grid;}
.navbar-molo .dropdown-menu.mega-menu .dropdown-item{
    white-space:normal; padding:12px 30px 12px 8px; border-radius:var(--radius);
    border-left:2px solid transparent; position:relative;
}
.navbar-molo .dropdown-menu.mega-menu .dropdown-item:hover{
    background:var(--paper-2); border-left-color:var(--brass);
}
.navbar-molo .dropdown-menu.mega-menu .dropdown-item::after{
    content:'\2192'; position:absolute; right:10px; top:50%; transform:translateY(-50%);
    color:var(--brass); opacity:0; transition:opacity .15s ease, transform .15s ease;
}
.navbar-molo .dropdown-menu.mega-menu .dropdown-item:hover::after{opacity:1;}
@media (min-width:992px){
    .navbar-molo .is-mega:hover > .dropdown-menu{display:grid;}
    .navbar-molo .dropdown-menu.mega-menu{margin-top:0; top:calc(100% - 4px);}
}
.navbar-molo .dm-title{display:block; font-weight:600; color:var(--ink); font-size:14px; letter-spacing:-.01em;}
.navbar-molo .dm-sub{display:block; color:var(--text-muted); font-size:12px; margin-top:2px; line-height:1.45;}
.navbar-molo .dropdown-item:hover .dm-title{color:var(--brass);}
.navbar-molo .nav-cta{font-weight:600; font-size:14px; padding:10px 20px; background:var(--ink); color:#fff; border:1px solid var(--ink);}
.navbar-molo .nav-cta:hover{background:var(--ink-2); color:#fff; border-color:var(--ink-2);}
.navbar-molo .is-mega{position:relative;}
@media (max-width:991.98px){
    .navbar-molo .dropdown-menu.mega-menu.show{display:block;}
}

/* ---------- eyebrow ---------- */
.eyebrow{
    font-family:var(--mono); font-size:12px; letter-spacing:0.12em; text-transform:uppercase;
    color:var(--brass-bright); margin-bottom:22px; display:flex; align-items:center; gap:10px;
}
.eyebrow::before{content:''; width:22px; height:1px; background:var(--brass-bright);}
.eyebrow.on-light, .light-section .eyebrow{color:var(--brass);}
.eyebrow.on-light::before, .light-section .eyebrow::before{background:var(--brass);}

/* ---------- hero ---------- */
.hero{background:var(--ink); color:var(--text-on-ink); padding:88px 0 0; position:relative; overflow:hidden;}
.hero .row{padding-bottom:80px;}
.hero-figure{margin:0; height:100%;}
.hero-img{width:100%; height:100%; min-height:340px; max-height:480px; object-fit:cover; border-radius:var(--radius); border:1px solid var(--line-on-ink);}
.hero h1{
    font-family:var(--serif); font-weight:500; font-size:clamp(34px,4.6vw,54px);
    line-height:1.12; letter-spacing:-0.01em; color:var(--text-on-ink); max-width:15ch;
}
.hero h1 em{font-style:italic; color:var(--brass-bright); font-weight:500;}
.hero .lede{margin-top:22px; font-size:17px; color:var(--text-on-ink-muted); max-width:46ch; line-height:1.6;}
.hero-ctas{display:flex; gap:14px; margin-top:34px; flex-wrap:wrap;}
.btn-accent{
    --bs-btn-bg:var(--brass); --bs-btn-color:var(--ink); --bs-btn-border-color:var(--brass);
    --bs-btn-hover-bg:var(--brass-bright); --bs-btn-hover-color:var(--ink); --bs-btn-hover-border-color:var(--brass-bright);
    --bs-btn-active-bg:var(--brass-bright); --bs-btn-active-color:var(--ink);
    --bs-btn-focus-box-shadow:0 0 0 .25rem rgba(173,127,44,.45);
    font-weight:600; font-size:14.5px; padding:.8rem 1.5rem; border-radius:var(--radius);
}
.btn-ghost{
    --bs-btn-color:var(--text-on-ink); --bs-btn-border-color:var(--line-on-ink);
    --bs-btn-hover-color:#fff; --bs-btn-hover-border-color:var(--text-on-ink-muted);
    --bs-btn-active-color:var(--text-on-ink); --bs-btn-active-border-color:var(--text-on-ink);
    font-weight:600; font-size:14.5px; padding:.8rem 1.5rem; border-radius:var(--radius);
}
.hero .btn-accent, .hero .btn-ghost{display:inline-flex; align-items:center; gap:8px;}

/* strip of frameworks */
.frame-strip{border-top:1px solid var(--line-on-ink); padding:20px 0; background:var(--ink);}
.frame-strip .container{display:flex; flex-wrap:wrap; gap:10px 28px; align-items:center; justify-content:center;}
.frame-strip span{font-family:var(--mono); font-size:11.5px; letter-spacing:0.06em; color:var(--text-on-ink-muted); text-transform:uppercase;}
.frame-strip .strip-label{color:var(--brass-bright);}

/* ---------- section shell ---------- */
.light-section{padding:88px 0;}
.section-head{max-width:640px; margin-bottom:48px;}
.section-head h2{font-family:var(--serif); font-weight:500; font-size:clamp(26px,3vw,36px); color:var(--ink); letter-spacing:-0.01em; margin:0;}
.section-head p{margin-top:14px; color:var(--text-muted); font-size:16px; max-width:52ch;}
.bg-paper2{background:var(--paper-2);}
.bg-paper{background:var(--paper);}

/* ---------- services: risk register table ---------- */
.register{border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; background:#fff;}
.register-head{
    display:grid; grid-template-columns:70px 1fr 2.5fr; gap:16px;
    padding:14px 22px; background:var(--ink); color:var(--text-on-ink-muted);
    font-family:var(--mono); font-size:11px; letter-spacing:0.08em; text-transform:uppercase;
}
.register-row{
    display:grid; grid-template-columns:70px 1fr 2.5fr; gap:16px; align-items:center;
    padding:20px 22px; border-top:1px solid var(--line); transition:background .15s;
}
.register-row:hover{background:var(--paper);}
.register-row .ref{font-family:var(--mono); color:var(--brass); font-weight:600; font-size:14px;}
.register-row .area{font-weight:600; font-size:15px;}
.register-row .desc{color:var(--text-muted); font-size:14.5px;}
.status{
    font-family:var(--mono); font-size:11px; letter-spacing:0.05em; text-transform:uppercase;
    padding:5px 10px; border-radius:20px; width:fit-content; white-space:nowrap;
}
.status.active{background:rgba(31,111,99,0.1); color:var(--teal);}
@media (max-width:760px){
    .register-head{display:none;}
    .register-row{grid-template-columns:1fr; gap:6px; padding:20px;}
    .register-row .ref{font-size:12px;}
}

/* ---------- case study / product cards ---------- */
.case-card{
    border:1px solid var(--line); border-radius:var(--radius); background:#fff;
    display:flex; flex-direction:column; height:100%;
}
.case-card .card-body{display:flex; flex-direction:column; gap:12px; padding:26px 24px;}
.case-card .tag{font-family:var(--mono); font-size:11px; letter-spacing:0.08em; text-transform:uppercase; color:var(--teal);}
.case-card .h3-card{font-family:var(--serif); font-size:21px; font-weight:500; color:var(--ink); margin:0;}
.case-card .case-desc{font-size:14.5px; color:var(--text-muted); margin:0;}
.case-card .metrics{display:flex; gap:20px; margin-top:auto; padding-top:14px; border-top:1px solid var(--line);}
.case-card .metric{font-family:var(--mono);}
.case-card .metric .n{font-weight:600; color:var(--ink); font-size:15px;}
.case-card .metric .l{font-size:10.5px; color:var(--text-muted); text-transform:uppercase; letter-spacing:0.05em;}
.case-card .more-link{font-weight:600; font-size:14px; color:var(--ink); text-decoration:none;}
.case-card .more-link:hover{color:var(--brass);}

/* ---------- about ---------- */
.about-wrap p{color:var(--text-muted); font-size:16px; margin-bottom:16px;}
.about-wrap h2{font-family:var(--serif); font-weight:500; font-size:clamp(26px,3vw,36px); color:var(--ink); margin-bottom:18px;}
.about-panel{border:1px solid var(--line); border-radius:var(--radius); background:#fff; padding:28px 26px; height:100%;}
.about-panel .eyebrow{color:var(--brass); margin-bottom:14px;}
.about-panel .eyebrow::before{background:var(--brass);}
.about-text{font-size:16.5px; line-height:1.7; color:var(--text); margin:0;}
.value-card .vk{font-family:var(--mono); font-size:11px; letter-spacing:.1em; color:var(--brass); text-transform:uppercase;}
.value-card .vh{font-family:var(--serif); font-weight:500; font-size:19px; color:var(--ink); margin:8px 0 0;}
.value-card .vb{font-size:14.5px; color:var(--text-muted); margin:10px 0 0; line-height:1.6;}
.more-link{font-weight:600; color:var(--ink); text-decoration:none;}
.more-link:hover{color:var(--brass);}
.credentials{display:flex; flex-direction:column; gap:0; border-top:1px solid var(--line);}
.credential{display:flex; justify-content:space-between; padding:16px 0; border-bottom:1px solid var(--line); font-size:14.5px;}
.credential .k{color:var(--text-muted);}
.credential .v{font-family:var(--mono); font-weight:500; text-align:right;}

/* ---------- contact ---------- */
.contact-band{background:var(--ink); color:var(--text-on-ink); padding:88px 0;}
.contact-band h2{font-family:var(--serif); font-size:clamp(28px,3.4vw,40px); font-weight:500; color:var(--text-on-ink); max-width:14ch;}
.contact-band > .container > div:first-child p{color:var(--text-on-ink-muted);}
.contact-band .contact-intro{margin-top:14px; max-width:40ch;}
.contact-info{margin-top:32px; display:flex; flex-direction:column; gap:18px;}
.contact-info .row{display:flex; flex-direction:column; gap:3px;}
.contact-info .row + .row{border-top:1px solid var(--line-on-ink); padding-top:16px;}
.contact-info .k{font-family:var(--mono); font-size:11px; letter-spacing:0.08em; text-transform:uppercase; color:var(--text-on-ink-muted);}
.contact-info .v{font-size:15px;}
.contact-form{display:flex; flex-direction:column; gap:16px;}
.field label{display:block; font-family:var(--mono); font-size:11px; letter-spacing:0.06em; text-transform:uppercase; color:var(--text-on-ink-muted); margin-bottom:7px;}
.field input, .field select, .field textarea{
    width:100%; background:rgba(238,241,238,0.04); border:1px solid var(--line-on-ink); color:var(--text-on-ink);
    padding:12px 14px; border-radius:var(--radius); font-family:var(--sans); font-size:14.5px;
}
.field textarea{resize:vertical; min-height:120px;}
.field input:focus, .field select:focus, .field textarea:focus{outline:2px solid var(--brass-bright); outline-offset:1px; border-color:transparent;}
.field select option{color:var(--ink);}
.contact-form button[type="submit"]{
    margin-top:6px; font-family:var(--sans); font-weight:600; font-size:14.5px;
    background:var(--brass); color:var(--ink); border:none; padding:14px 24px; border-radius:var(--radius);
    cursor:pointer; transition:background .15s;
}
.contact-form button[type="submit"]:hover{background:var(--brass-bright);}
.contact-form button[type="submit"]:disabled{opacity:.6; cursor:default;}
.consent{font-size:13px; color:var(--text-on-ink-muted); margin:6px 0 14px; line-height:1.5;}
.consent input[type="checkbox"]{margin:1px 6px 0 0; vertical-align:middle; width:auto; padding:0; border:none; background:none; box-shadow:none; appearance:auto;}
.consent a{color:var(--brass-bright); text-decoration:underline;}
.hp-field{position:absolute !important; left:-10000px; top:auto; width:1px; height:1px; overflow:hidden;}

/* ---------- footer ---------- */
footer{background:var(--ink-2); color:var(--text-on-ink-muted); padding:56px 0 0; margin-top:0;}
.footer-grid{padding-bottom:44px; border-bottom:1px solid var(--line-on-ink);}
.footer-grid h4{font-family:var(--mono); font-size:11px; letter-spacing:0.08em; text-transform:uppercase; color:var(--text-on-ink); margin-bottom:14px;}
.footer-grid a{display:block; font-size:14px; color:var(--text-on-ink-muted); text-decoration:none; margin-bottom:10px; width:fit-content;}
.footer-grid a:hover{color:var(--text-on-ink);}
.footer-brand{font-family:var(--mono); color:var(--text-on-ink); font-weight:600; font-size:16px; margin-bottom:10px; display:flex; align-items:center; gap:8px;}
.footer-brand .dot{width:8px; height:8px; background:var(--brass); border-radius:50%; display:inline-block;}
.footer-brand-desc{font-size:13.5px; max-width:32ch; line-height:1.6;}
.footer-muted{font-size:13.5px; opacity:.8;}
.bottom-bar{display:flex; justify-content:center; text-align:center; padding-top:22px; padding-bottom:22px; font-size:12.5px; flex-wrap:wrap; gap:10px;}
.bottom-bar a{color:var(--text-on-ink-muted); text-decoration:none;}
.bottom-bar a:hover{color:var(--text-on-ink);}

/* ---------- content pages ---------- */
.public-page{padding:70px 0 90px;}
.public-page h1{font-family:var(--serif); font-weight:500; color:var(--ink); font-size:clamp(28px,4vw,44px); margin-bottom:18px;}
.public-page .eyebrow{margin-bottom:18px;}
.public-page .lead{font-size:17px; line-height:1.6; font-weight:400; margin:10px 0 0;}
.public-page .prose{max-width:72ch;}
.page-meta{font-size:13px; color:var(--text-muted);}
.prose{color:var(--text); line-height:1.75;}
.prose h1,.prose h2,.prose h3{color:var(--ink); font-family:var(--serif); margin-top:2rem;}
.prose h2{font-size:1.5rem;}
.prose p{margin:0 0 1rem;}
.prose ul{ margin:0 0 1rem 1.2rem;}
.prose a{color:var(--ink); text-decoration:underline; text-underline-offset:2px;}
.prose a:hover{color:var(--brass);}
.public-muted{color:var(--text-muted);}

/* ---------- cookie banner ---------- */
#cookie-banner{position:fixed; bottom:0; left:0; right:0; z-index:150; background:var(--ink); color:#fff; padding:14px 0; box-shadow:0 -8px 30px rgba(15,32,54,.25);}
#cookie-banner p{margin:0; font-size:14px; color:#fff;}
#cookie-banner a{color:#fff; text-decoration:underline;}
.cookie-inner{display:flex; align-items:center; justify-content:space-between; gap:20px; flex-wrap:wrap;}
.cookie-inner .btn-light{margin:0; font-weight:600;}

/* ---------- flashes (public, on dark band) ---------- */
.contact-band .flash{background:rgba(238,241,238,.08); border-left:4px solid var(--brass-bright); color:var(--text-on-ink);}
.contact-band .flash.error{border-left-color:#e08b84;}
.contact-band .flash.success{border-left-color:#7fbf9c;}
.flash{padding:12px 14px; margin-bottom:18px; background:#eee; border-left:4px solid var(--ink); font-size:14px;}
.flash.error{border-left-color:#9b3c35;}
.flash.success{border-left-color:#47735b;}

/* ---------- draft preview (public context) ---------- */
.preview-bar{background:#0F4C3A; color:#fff; padding:12px 20px; display:flex; justify-content:space-between; align-items:center; font-size:85%;}
.preview-bar a{color:#c8d8d0;}
.preview-bar a:hover{color:#fff;}
.preview-body{max-width:760px; margin:0 auto; padding:30px 20px;}
.admin-main.preview-body .eyebrow{color:var(--brass);}
.admin-main.preview-body .panel{background:#fff; border:1px solid var(--line); border-radius:var(--radius); padding:24px;}
.admin-main.preview-body h1{font-family:var(--serif); color:var(--ink); font-weight:500;}
.admin-main.preview-body .detail-table{width:100%; border-collapse:collapse;}
.admin-main.preview-body .detail-table th{text-align:left; vertical-align:top; padding:8px 12px 8px 0; border-bottom:1px solid #eee; font-weight:600; width:140px; white-space:nowrap; color:var(--ink);}
.admin-main.preview-body .detail-table td{padding:8px 0; border-bottom:1px solid #eee;}
.admin-main.preview-body .btn{background:var(--ink); color:#fff; border:0; padding:10px 16px; border-radius:var(--radius); font-weight:600;}
.admin-main.preview-body code{font-family:var(--mono); font-size:13px; background:var(--paper); padding:2px 5px;}
.admin-main.preview-body .muted{color:var(--text-muted);}
/* ---------- search ---------- */
.search-form{display:flex; gap:10px; max-width:600px; flex-wrap:wrap;}
.search-input{flex:1 1 280px; padding:11px 14px; font-size:15px; border:1px solid var(--line); border-radius:var(--radius);}
.search-input:focus{outline:2px solid rgba(15,76,58,.35);}
.search-results{display:grid; gap:14px;}
.search-result{padding:16px 18px; background:var(--paper); border:1px solid var(--line); border-radius:var(--radius);}
.search-result .more-link{font-size:1.05rem; font-weight:600;}
.search-kind{text-transform:uppercase; letter-spacing:.08em; font-size:.7rem; color:var(--brass); margin:.15rem 0 .3rem;}

/* ---------- public blocks (page content) ---------- */
.public-blockquote{padding:.4rem 1.1rem; border-left:3px solid var(--brass); color:var(--text-muted); font-style:italic;}
.public-callout{padding:1rem 1.2rem; border:1px solid var(--line); border-left:4px solid var(--brass); background:var(--paper); border-radius:var(--radius);}
.public-cta{display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap; padding:1.1rem 1.3rem; background:var(--ink); color:#fff; border-radius:var(--radius);}
.public-cta-copy strong{font-family:var(--serif); font-size:1.15rem;}
.public-cta p{color:rgba(255,255,255,.85);}
.article-figure{margin:0;}
.article-figure figcaption{font-size:.85rem;}
.nav-search-link{white-space:nowrap;}
.public-alert{padding:12px 16px;border-radius:8px;border:1px solid var(--line);margin:14px 0;font-size:.95rem;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.04);}
.public-alert-error{border-left:4px solid #c0392b;color:#8c2f24;}
.public-alert-success{border-left:4px solid #1f7a4d;color:#14532d;}
.public-alert-info{border-left:4px solid var(--brand);color:var(--ink);}
.comment-form,.contrib-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:22px 24px;margin-top:18px;}
.comment-form label,.contrib-card label{display:block;font-weight:600;margin-bottom:12px;}
.comment-form input,.comment-form textarea,.comment-form select,.contrib-card input,.contrib-card textarea,.contrib-card select{width:100%;}
.comment-form .form-row,.contrib-card .form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
.consent-check{display:flex!important;gap:10px;align-items:flex-start;font-weight:400!important;font-size:.9rem;line-height:1.4;}
.consent-check input{width:auto!important;margin-top:3px;}
.comment-item{border-top:1px solid var(--line);padding:14px 0;}
.comment-meta{font-size:.85rem;}
.comments-section{margin-top:34px;}
.share-preview-bar{background:#17324d; color:#fff; padding:.55rem 1.25rem; text-align:center; font-size:.85rem;}
