:root{
  --ink:#172420;
  --green:#3E9464;
  --green-dark:#245C3E;
  --steel:#626567;
  --amber:#DE9B34;
  --blue:#2F5AA8;
  --navy:#2F5AA8;
  --paper:#F5F5F0;
  --paper-alt:#EBE9E0;
  --ash:#E7E9E5;
  --deep-green:#1E4030;
  --deep-green-light:#2C5A44;
  --line: rgba(23,36,32,.14);
  --line-strong: rgba(23,36,32,.28);
}
*{box-sizing:border-box; margin:0; padding:0;}
body{background:var(--paper); color:var(--ink); font-family:'Inter',sans-serif; line-height:1.6;}
.eyebrow{font-family:'IBM Plex Mono',monospace; font-size:12px; letter-spacing:.12em; text-transform:uppercase; color:var(--green-dark);}
.eyebrow-badge{display:inline-block; font-size:14px; padding:6px 14px; background:rgba(62,148,100,.16); border:1px solid var(--green); border-radius:3px; color:var(--green);}
.ql-align-center{text-align:center;}
.ql-align-right{text-align:right;}
.ql-align-justify{text-align:justify;}
h1,h2,h3{font-family:'Big Shoulders Display',sans-serif; text-transform:uppercase; letter-spacing:.01em; line-height:1.02;}
.wrap{max-width:1180px; margin:0 auto; padding:0 32px;}
a{color:inherit; text-decoration:none; cursor:pointer;}
img{max-width:100%; display:block;}
button{font-family:inherit; cursor:pointer;}

.bracket{position:relative;}
.bracket::before,.bracket::after{content:""; position:absolute; width:22px; height:22px; border:2px solid var(--green); opacity:.9;}
.bracket::before{top:-8px; left:-8px; border-right:none; border-bottom:none;}
.bracket::after{bottom:-8px; right:-8px; border-left:none; border-top:none;}

header{position:sticky; top:0; z-index:50; background:rgba(245,245,240,.96); backdrop-filter:blur(6px); border-bottom:1px solid var(--line);}
.topbar{display:flex; justify-content:space-between; align-items:center; font-family:'IBM Plex Mono',monospace; font-size:11.5px; color:rgba(255,255,255,.78); padding:8px 0; background:var(--navy);}
.topbar span{margin-right:22px;}
.nav{display:flex; align-items:center; justify-content:space-between; padding:16px 0;}
.logo{display:flex; align-items:center; gap:10px; background:#fff; border:1px solid var(--line-strong); padding:8px 16px; border-radius:4px;}
.logo img{height:44px;}
.logo-fallback{font-family:'Big Shoulders Display',sans-serif; font-weight:700; font-size:18px; color:var(--ink);}
.menu{display:flex; gap:34px; font-size:14px; font-weight:500;}
.menu a{position:relative; padding:4px 0;}
.menu a.active{color:var(--blue); border-bottom:2px solid var(--blue);}
.cta-btn{font-family:'IBM Plex Mono',monospace; font-size:12px; letter-spacing:.06em; text-transform:uppercase; background:var(--navy); color:#fff; padding:11px 20px; border:1px solid var(--navy);}
.menu-toggle{display:none; background:none; border:1px solid var(--line-strong); padding:8px 10px; font-size:18px;}

.hero{position:relative; overflow:hidden; background:linear-gradient(rgba(23,36,32,.72), rgba(23,36,32,.72)), repeating-linear-gradient(0deg, rgba(255,255,255,.05) 0 1px, transparent 1px 40px), repeating-linear-gradient(90deg, rgba(255,255,255,.05) 0 1px, transparent 1px 40px), linear-gradient(120deg,#1f3a2c,#152621); background-blend-mode:normal; color:#fff; padding:120px 0 100px; text-shadow:0 2px 14px rgba(0,0,0,.7), 0 1px 3px rgba(0,0,0,.8);}
.hero .wrap{position:relative;}
.hero .eyebrow{color:var(--amber);}
.hero h1{font-size:clamp(36px,6vw,74px); max-width:820px; margin-top:14px;}
.hero h1 em{font-style:normal; color:var(--green);}
.hero p{max-width:520px; margin-top:20px; color:rgba(255,255,255,.78); font-size:16px;}
.hero-actions{display:flex; gap:14px; margin-top:36px;}
.btn-primary{background:var(--navy); color:#fff; padding:14px 26px; font-weight:600; font-size:14px; border:1px solid var(--navy); display:inline-block;}
.btn-ghost{border:1px solid rgba(255,255,255,.4); color:#fff; padding:14px 26px; font-weight:600; font-size:14px; display:inline-block; background:none;}
.hero-stats{display:flex; gap:48px; margin-top:70px; border-top:1px solid rgba(255,255,255,.18); padding-top:26px; flex-wrap:wrap;}
.hero-stats div b{font-family:'Big Shoulders Display',sans-serif; font-size:34px; display:block; color:var(--amber);}
.hero-stats div span{font-family:'IBM Plex Mono',monospace; font-size:11px; letter-spacing:.08em; text-transform:uppercase; color:rgba(255,255,255,.65);}
.hero-slides{position:absolute; right:32px; bottom:26px; display:flex; gap:8px;}
.hero-slides i{width:26px; height:3px; background:rgba(255,255,255,.3); display:block; border:none; padding:0;}
.hero-slides i.on{background:var(--amber);}

.hero.theme-light{background:linear-gradient(rgba(23,36,32,.28), rgba(23,36,32,.28)), repeating-linear-gradient(0deg, rgba(255,255,255,.05) 0 1px, transparent 1px 40px), repeating-linear-gradient(90deg, rgba(255,255,255,.05) 0 1px, transparent 1px 40px), linear-gradient(120deg,#3d5d47,#2d4438); color:var(--ink); text-shadow:0 2px 10px rgba(255,255,255,.6), 0 1px 3px rgba(255,255,255,.7);}
.hero.theme-light .eyebrow{color:var(--green-dark);}
.hero.theme-light h1 em{color:var(--green-dark);}
.hero.theme-light .btn-ghost{border-color:var(--ink); color:var(--ink);}
.hero.theme-light .hero-stats{border-top-color:rgba(23,36,32,.25);}
.hero.theme-light .hero-stats div b{color:var(--green-dark);}
.hero.theme-light .hero-stats div span{color:rgba(23,36,32,.7);}
.hero.theme-light .hero-slides i{background:rgba(23,36,32,.25);}
.hero.theme-light .hero-slides i.on{background:var(--green-dark);}

section{padding:96px 0;}
.section-ash{background:var(--ash);}
.section-deepgreen{background:var(--deep-green); color:#fff;}
.section-deepgreen .eyebrow{color:var(--green);}
.section-deepgreen p, .section-deepgreen .intro-clamp{color:rgba(255,255,255,.75);}
.section-deepgreen .section-head{border-color:rgba(255,255,255,.16);}
.section-deepgreen .service-link{color:#fff; border-color:rgba(255,255,255,.6);}

/* one-corner-cut image treatment + hover zoom, used across photo boxes site-wide */
.cut-corner{clip-path:polygon(0 0, calc(100% - 26px) 0, 100% 26px, 100% 100%, 0 100%); overflow:hidden; cursor:zoom-in;}
.cut-corner img{transition:transform .4s ease; display:block;}
.cut-corner:hover img{transform:scale(1.08);}
.section-head{display:flex; justify-content:space-between; align-items:flex-end; gap:24px; margin-bottom:48px; border-bottom:1px solid var(--line); padding-bottom:24px; flex-wrap:wrap;}
.section-head h2{font-size:clamp(28px,3.6vw,46px);}
.section-head p{max-width:380px; font-size:14.5px; color:var(--steel);}

.about-grid{display:grid; grid-template-columns:.85fr 1.15fr; gap:64px; align-items:center;}
.about-img{height:460px; background:linear-gradient(160deg,#dedad0,#c9c4b6); position:relative; overflow:hidden;}
.about-img img{width:100%; height:100%; object-fit:cover;}
.pill-cards{display:grid; grid-template-columns:1fr 1fr; gap:16px; margin-top:28px;}
.pill-card{border:1px solid var(--line-strong); padding:20px;}
.pill-card .eyebrow{margin-bottom:8px;}
.pill-card p{font-size:13.5px; color:var(--steel);}
.intro-clamp{display:-webkit-box; -webkit-line-clamp:6; -webkit-box-orient:vertical; overflow:hidden; color:var(--ink);}
.intro-clamp p{margin-bottom:0;}

.services{background:var(--ink); color:#fff;}
.services .section-head{border-color:rgba(255,255,255,.14);}
.services .eyebrow{color:var(--amber);}
.services .section-head p{color:rgba(255,255,255,.6);}
.service-grid{display:flex; flex-wrap:wrap; gap:14px;}
.service-card{width:calc(33.333% - 10px); box-sizing:border-box; background:#1c2b25; display:flex; flex-direction:column; overflow:hidden;}
.service-card-img{height:210px; overflow:hidden; background:rgba(255,255,255,.06); flex-shrink:0; cursor:zoom-in;}
.service-card-img img{width:100%; height:100%; object-fit:cover; display:block; transition:transform .4s ease;}
.service-card-img:hover img{transform:scale(1.08);}
.service-card-body{padding:26px 26px 30px;}
.service-num{font-family:'IBM Plex Mono',monospace; font-size:12px; color:var(--amber); margin-bottom:16px; display:block;}
.service-card h3{font-size:22px; margin-bottom:12px;}
.service-desc{font-size:13.5px; color:rgba(255,255,255,.65); margin-bottom:18px; line-height:1.6; display:-webkit-box; -webkit-line-clamp:6; -webkit-box-orient:vertical; overflow:hidden;}
.service-link{margin-top:22px; display:inline-block; font-family:'IBM Plex Mono',monospace; font-size:11.5px; letter-spacing:.06em; text-transform:uppercase; color:var(--green); border-bottom:1px solid var(--green); padding-bottom:2px; background:none; border-top:none; border-left:none; border-right:none;}

.clients-row{display:grid; grid-template-columns:repeat(5,1fr); gap:1px; background:var(--line);}
.client-box{background:var(--paper); height:90px; display:flex; align-items:center; justify-content:center; font-family:'IBM Plex Mono',monospace; font-size:11px; color:var(--steel); padding:10px;}
.client-box img{max-height:44px; width:auto;}

.team-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:26px;}
.team-card .photo{height:260px; background:linear-gradient(160deg,#dedad0,#c9c4b6); margin-bottom:16px; position:relative; overflow:hidden;}
.team-card .photo img{width:100%; height:100%; object-fit:cover;}
.team-card h4{font-family:'Inter',sans-serif; font-weight:600; font-size:15.5px;}
.team-card span{font-family:'IBM Plex Mono',monospace; font-size:11px; color:var(--steel); text-transform:uppercase; letter-spacing:.05em;}

.work-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:18px;}
.work-card{border:1px solid var(--line-strong); background:var(--paper); height:490px; display:flex; flex-direction:column; overflow:hidden;}
.work-card-img{height:170px; flex-shrink:0; overflow:hidden; background:linear-gradient(160deg,#dedad0,#c9c4b6);}
.work-card-img img{width:100%; height:100%; object-fit:cover; display:block;}
.work-card-text{height:320px; padding:16px 18px; display:flex; flex-direction:column; overflow:hidden;}
.work-card-text .eyebrow{margin-bottom:5px; font-size:10.5px; flex-shrink:0;}
.work-card-text h4{font-family:'Inter',sans-serif; font-weight:600; font-size:15px; text-transform:none; letter-spacing:normal; margin-bottom:6px; flex-shrink:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
.work-card-text p, .work-card-text .wc-desc{font-size:12.5px; color:var(--steel); line-height:1.55; display:-webkit-box; -webkit-line-clamp:7; -webkit-box-orient:vertical; overflow:hidden;}
.work-card-text .wc-desc p{display:inline;}
@media(max-width:760px){ .work-grid{grid-template-columns:1fr 1fr;} .service-card{width:100%;} }
@media(max-width:520px){ .work-grid{grid-template-columns:1fr;} }
.work-card-img.icon-box{display:flex; align-items:center; justify-content:center; background:var(--paper-alt);}
.work-card-img.icon-box img{width:52px; height:52px; object-fit:contain;}

.about-stats{display:grid; grid-template-columns:repeat(4,1fr); gap:1px; background:var(--line); border:1px solid var(--line); margin-top:36px;}
.about-stat{background:var(--paper); padding:20px 18px; text-align:center;}
.about-stat b{font-family:'Big Shoulders Display',sans-serif; font-size:22px; color:var(--green-dark); display:block; margin-bottom:6px;}
.about-stat span{font-family:'IBM Plex Mono',monospace; font-size:10.5px; letter-spacing:.06em; text-transform:uppercase; color:var(--steel);}
@media(max-width:760px){ .about-stats{grid-template-columns:1fr 1fr;} }

.licence-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:18px;}
.licence-card{display:block; border:1px solid var(--line-strong); background:var(--paper); padding:14px;}
.licence-card-img{height:300px; overflow:hidden; background:var(--paper-alt); margin-bottom:10px;}
.licence-card-img img{width:100%; height:100%; object-fit:cover; display:block;}
.licence-card p{font-size:13px; font-weight:600; color:var(--ink); text-align:center;}
@media(max-width:760px){ .licence-grid{grid-template-columns:repeat(2,1fr);} }

.a4-sheet{max-width:794px; margin:0 auto; background:#fff; border:1px solid var(--line-strong); box-shadow:0 4px 24px rgba(23,36,32,.08); padding:36px 32px;}
.a4-title{display:flex; align-items:center; gap:12px; margin-bottom:24px; border-bottom:2px dotted var(--green); padding-bottom:14px;}
.a4-title-icon{font-size:22px;}
.a4-title h2{font-family:'Big Shoulders Display',sans-serif; font-size:22px; color:var(--green-dark); letter-spacing:.02em;}
.projects-table{width:100%; border-collapse:collapse; font-size:12.5px;}
.projects-table th{background:var(--green); color:#fff; font-family:'IBM Plex Mono',monospace; font-weight:500; font-size:10.5px; text-transform:uppercase; letter-spacing:.04em; padding:10px 8px; border:1px solid var(--green-dark); text-align:center;}
.projects-table td{padding:10px 8px; border:1px solid var(--line); text-align:center; vertical-align:middle; color:var(--ink);}
.projects-table td.name-col{text-align:left; max-width:220px;}
.projects-table td.sl{font-weight:600; color:var(--green-dark);}
.projects-table td.num{font-family:'IBM Plex Mono',monospace;}
.projects-table tbody tr:nth-child(even){background:var(--paper-alt);}
@media(max-width:600px){ .a4-sheet{padding:20px 16px;} .projects-table{font-size:11px;} .projects-table th, .projects-table td{padding:7px 5px;} }

.download-list{display:flex; flex-direction:column; border:1px solid var(--line-strong);}
.download-row{display:flex; align-items:center; gap:16px; padding:16px 20px; border-bottom:1px solid var(--line);}
.download-row:last-child{border-bottom:none;}
.download-row:nth-child(even){background:var(--paper-alt);}
.download-sl{font-family:'IBM Plex Mono',monospace; font-size:12px; color:var(--green-dark); width:28px; flex-shrink:0;}
.download-title{flex:1; font-size:14.5px; font-weight:600;}
.download-row .btn-primary{padding:9px 20px; font-size:12.5px;}
@media(max-width:520px){ .download-row{flex-wrap:wrap;} }

.expertise-grid{display:grid; grid-template-columns:1fr 1fr; gap:20px;}
.expertise-card{border:1px solid var(--line-strong); background:var(--paper); padding:26px;}
.expertise-card-head{display:flex; align-items:center; gap:14px; margin-bottom:16px;}
.expertise-icon{width:48px; height:48px; border-radius:50%; background:var(--paper-alt); flex-shrink:0; display:flex; align-items:center; justify-content:center; overflow:hidden;}
.expertise-icon img{width:26px; height:26px; object-fit:contain;}
.expertise-card-head h3{font-family:'Inter',sans-serif; font-weight:600; font-size:16.5px; text-transform:none; letter-spacing:normal; color:var(--ink);}
.expertise-bullets{list-style:none; margin-bottom:16px;}
.expertise-bullets li{position:relative; padding-left:18px; font-size:13.5px; color:var(--steel); margin-bottom:8px; line-height:1.5;}
.expertise-bullets li::before{content:"•"; position:absolute; left:0; color:var(--green);}
.expertise-bullets ul{list-style:none; margin:0;}
.expertise-illustration{height:200px; overflow:hidden; background:var(--paper-alt); margin-top:12px;}
.expertise-illustration img{width:100%; height:100%; object-fit:cover; display:block;}
@media(max-width:760px){ .expertise-grid{grid-template-columns:1fr;} }

footer{background:#132019; color:rgba(255,255,255,.7); padding:72px 0 20px; font-size:13.5px;}
.foot-grid{display:grid; grid-template-columns:1.4fr 1fr 1fr 1fr; gap:40px; padding-bottom:48px; border-bottom:1px solid rgba(255,255,255,.12);}
.foot-grid h5{font-family:'IBM Plex Mono',monospace; font-size:11.5px; letter-spacing:.1em; text-transform:uppercase; color:#fff; margin-bottom:18px;}
.foot-grid li{list-style:none; margin-bottom:10px;}
.foot-grid li a:hover{text-decoration:underline; color:#fff;}
.foot-bottom{display:flex; justify-content:space-between; padding-top:24px; font-size:12px; flex-wrap:wrap; gap:8px;}
.admin-link{color:rgba(255,255,255,.35); font-family:'IBM Plex Mono',monospace; font-size:11px;}
.social-row{display:flex; gap:10px; margin-top:16px;}
.social-row a{width:32px; height:32px; border-radius:50%; border:1px solid rgba(255,255,255,.2); display:flex; align-items:center; justify-content:center; color:rgba(255,255,255,.7); transition:.15s;}
.social-row a:hover{color:#fff; border-color:var(--green); background:rgba(62,148,100,.15);}

@media(max-width:900px){
  .menu{display:none;}
  .menu-toggle{display:inline-block;}
  .about-grid{grid-template-columns:1fr;}
  .clients-row{grid-template-columns:repeat(2,1fr);}
  .team-grid{grid-template-columns:repeat(2,1fr);}
  .foot-grid{grid-template-columns:1fr 1fr;}
  .hero{padding:80px 0 60px;}
}
.menu.open{display:flex; position:absolute; top:100%; left:0; right:0; background:var(--paper); flex-direction:column; padding:16px 32px; border-bottom:1px solid var(--line); gap:16px; z-index:60;}

@media(max-width:640px){
  .topbar{flex-direction:column; align-items:flex-start; gap:4px; padding:8px 0; font-size:10.5px;}
  .topbar > div:last-child{display:none;}
  .topbar span{margin-right:14px;}
  .logo{padding:6px 12px;}
  .logo img{height:36px;}
  .cta-btn{padding:9px 14px; font-size:11px;}
  section{padding:56px 0;}
  .hero{padding:64px 0 48px;}
  .hero-actions{flex-direction:column; align-items:stretch; gap:10px;}
  .hero-actions a{text-align:center;}
  .hero-stats{gap:28px;}
  .about-stats{grid-template-columns:1fr 1fr;}
  .expertise-card{padding:18px;}
  .expertise-card-head{gap:10px;}
}
@media(max-width:460px){
  .foot-grid{grid-template-columns:1fr;}
  .clients-row{grid-template-columns:repeat(2,1fr);}
  .team-grid{grid-template-columns:1fr;}
  .about-stats{grid-template-columns:1fr;}
}

/* ===== admin ===== */
.admin-shell{min-height:100vh; background:var(--paper-alt); display:grid; grid-template-columns:220px 1fr;}
.admin-side{background:var(--ink); color:#fff; padding:24px 0;}
.admin-side .brand{font-family:'Big Shoulders Display',sans-serif; font-size:20px; padding:0 20px 20px; border-bottom:1px solid rgba(255,255,255,.14); margin-bottom:12px;}
.admin-tab{display:block; width:100%; text-align:left; background:none; border:none; color:rgba(255,255,255,.65); padding:12px 20px; font-size:13.5px; border-left:3px solid transparent;}
.admin-tab.active{color:#fff; background:rgba(255,255,255,.06); border-left-color:var(--amber);}
.admin-tab:hover{color:#fff;}
.admin-logout{margin-top:20px; border-top:1px solid rgba(255,255,255,.14); padding-top:16px;}
.admin-main{padding:36px 44px; overflow-y:auto;}
.admin-main h2{font-size:24px; text-transform:none; font-family:'Inter',sans-serif; font-weight:600; margin-bottom:6px;}
.admin-sub{color:var(--steel); font-size:13.5px; margin-bottom:28px;}
.card{background:#fff; border:1px solid var(--line-strong); border-radius:8px; padding:22px 24px; margin-bottom:20px;}
.field{margin-bottom:14px;}
.field label{display:block; font-size:12.5px; font-weight:600; margin-bottom:6px; color:var(--steel); text-transform:uppercase; letter-spacing:.04em;}
.field input[type=text], .field input[type=number], .field input[type=password], .field textarea, .field select{
  width:100%; border:1px solid var(--line-strong); border-radius:4px; padding:9px 11px; font-family:inherit; font-size:14px; background:#fbfbf9;
}
.field textarea{resize:vertical; min-height:70px;}
.rt-wrap{margin-bottom:2px;}
.rt-wrap .ql-toolbar{border:1px solid var(--line-strong); border-bottom:none; border-radius:4px 4px 0 0; background:#fbfbf9;}
.rt-wrap .ql-container{border:1px solid var(--line-strong); border-radius:0 0 4px 4px; font-family:'Inter',sans-serif; font-size:14px; min-height:110px; background:#fbfbf9;}
.rt-wrap .ql-editor{min-height:110px;}
.row2{display:grid; grid-template-columns:1fr 1fr; gap:16px;}
.row3{display:grid; grid-template-columns:1fr 1fr 1fr; gap:16px;}
.img-row{display:flex; gap:10px; align-items:flex-start;}
.img-preview{width:60px; height:60px; border:1px solid var(--line-strong); border-radius:4px; object-fit:cover; background:#eee; flex-shrink:0;}
.btn{background:var(--ink); color:#fff; border:1px solid var(--ink); padding:10px 18px; font-size:13.5px; font-weight:600; border-radius:4px;}
.btn.secondary{background:none; color:var(--ink);}
.btn.danger{background:none; color:#b23; border-color:#b23; padding:6px 12px; font-size:12px;}
.btn.small{padding:6px 12px; font-size:12px;}
.sub-item{border:1px solid var(--line); border-radius:6px; padding:16px; margin-bottom:12px; background:#fbfbf9;}
.sub-item-head{display:flex; justify-content:space-between; align-items:center; margin-bottom:10px;}
details.sub-item{padding:0; overflow:hidden;}
details.sub-item > summary{list-style:none; cursor:pointer; padding:14px 16px; display:flex; align-items:center; gap:10px; font-size:13.5px; font-weight:600; color:var(--ink); user-select:none;}
details.sub-item > summary::-webkit-details-marker{display:none;}
details.sub-item > summary::before{content:"▸"; color:var(--green-dark); font-size:12px; transition:transform .15s; flex-shrink:0;}
details.sub-item[open] > summary::before{transform:rotate(90deg);}
details.sub-item > summary .sub-item-label{overflow:hidden; text-overflow:ellipsis; white-space:nowrap; flex:1;}
details.sub-item .sub-item-body{padding:0 16px 16px;}
.flash{background:#e7f3ec; border:1px solid var(--green); color:var(--green-dark); padding:10px 14px; border-radius:4px; font-size:13.5px; margin-bottom:20px;}
.flash.error{background:#fbeaea; border-color:#b23; color:#b23;}
.login-screen{min-height:100vh; display:flex; align-items:center; justify-content:center; background:var(--ink);}
.login-box{background:#fff; padding:40px; border-radius:8px; width:360px;}
.login-box h2{font-size:20px; font-family:'Inter',sans-serif; text-transform:none; margin-bottom:4px;}
.login-note{font-size:12px; color:var(--steel); margin-top:14px; line-height:1.5;}
.err{color:#b23; font-size:12.5px; margin-top:8px; display:none;}
.err.show{display:block;}
@media(max-width:800px){ .admin-shell{grid-template-columns:1fr;} .admin-side{display:flex; overflow-x:auto; padding:12px;} .admin-tab{white-space:nowrap; border-left:none; border-bottom:3px solid transparent;} .admin-tab.active{border-left:none; border-bottom-color:var(--amber);} .admin-main{padding:24px 18px;} .row2,.row3{grid-template-columns:1fr;} }
