:root{
  --ink:#221B13;
  --gold:#BE8A3D;
  --gold-soft:#E6C583;
  --gold-deep:#9C6F2C;
  --green:#33593A;
  --green-soft:#436B49;
  --maroon:#B5502E;
  --cream:#F8F3E8;
  --paper:#FFFFFF;
  --text:#2B2620;
  --text-soft:#7A7266;
  --line:#E9E1D0;
  --radius:12px;
  --radius-sm:8px;
  --shadow: 0 20px 45px -25px rgba(34,27,19,0.38);
  --shadow-sm: 0 8px 20px -14px rgba(34,27,19,0.28);
  --sidebar-w: 250px;
  --topbar-h: 62px;
  --ease: cubic-bezier(.4,0,.2,1);

  /* Public header — its own palette, independent of admin/site colors above */
  --pubhead-bg:#FFFFFF;
  --pubhead-bg-deep:#F4F1E8;
  --pubhead-border:#E9E1D0;
  --pubhead-text:#221B13;
  --pubhead-link:#6B6459;
  --pubhead-link-hover-bg:rgba(34,27,19,0.06);
  --pubhead-accent:#1D9E75;
  --pubhead-accent-soft:#3DBE94;
  --pubhead-accent-text:#FFFFFF;

  /* Admin sidebar menu — its own palette too, independent of the public header and site above */
  --sidebar-bg:#232733;
  --sidebar-text:#fff;
  --sidebar-link:#B7BCCB;
  --sidebar-link-hover-bg:rgba(255,255,255,0.06);
  --sidebar-accent:#D9762B;
  --sidebar-accent-text:#211102;
  --sidebar-muted:#8C90A0;
}
*{ box-sizing:border-box; }
body{
  margin:0; background:var(--cream); color:var(--text);
  font-family:'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  font-size:14.5px; line-height:1.5; display:flex; flex-direction:column; min-height:100vh;
}
h1,h2,h3,h4{ font-family:'Fraunces', Georgia, serif; margin:0 0 8px; color:var(--ink); }
a{ color:var(--maroon); text-decoration:none; }
a:hover{ text-decoration:underline; }
img{ max-width:100%; display:block; }
p{ margin:0 0 12px; }
.muted{ color:var(--text-soft); }
a:focus-visible, button:focus-visible, summary:focus-visible{ outline:2px solid var(--gold); outline-offset:2px; }

/* ---------- Buttons ---------- */
.btn{
  display:inline-flex; align-items:center; gap:6px; padding:9px 16px; border-radius:8px;
  font-size:13.5px; font-weight:600; cursor:pointer; border:1px solid transparent; transition:all .15s var(--ease);
}
.btn-primary{ background:var(--green); color:#fff; }
.btn-primary:hover{ background:var(--green-soft); text-decoration:none; }
.btn-outline{ background:var(--paper); color:var(--ink); border-color:var(--line); }
.btn-outline:hover{ border-color:var(--ink); text-decoration:none; }
.btn-danger{ background:#fff; color:var(--maroon); border-color:#E9C7BE; }
.btn-danger:hover{ background:#FBEDE9; text-decoration:none; }
.btn-sm{ padding:6px 11px; font-size:12.5px; }

/* ---------- Forms ---------- */
.form-grid{ display:grid; grid-template-columns:1fr 1fr; gap:14px 18px; }
.field{ display:flex; flex-direction:column; gap:5px; }
.field.full{ grid-column:1 / -1; }
label{ font-size:12.5px; font-weight:600; color:var(--ink); }
input, select, textarea{
  font-family:inherit; font-size:14px; padding:9px 11px; border:1px solid var(--line); border-radius:8px;
  background:var(--paper); color:var(--text); width:100%;
}
input:focus, select:focus, textarea:focus{ outline:2px solid var(--gold); outline-offset:1px; border-color:var(--gold); }
textarea{ min-height:110px; resize:vertical; }

/* ---------- Cards / tables ---------- */
.card{ background:var(--paper); border:1px solid var(--line); border-radius:var(--radius); padding:22px 24px; margin-bottom:20px; box-shadow:var(--shadow-sm); }
a.card{ transition:transform .15s var(--ease), box-shadow .15s var(--ease); }
a.card:hover{ transform:translateY(-2px); box-shadow:var(--shadow); }
table{ width:100%; border-collapse:collapse; }
th, td{ text-align:left; padding:11px 10px; border-bottom:1px solid var(--line); font-size:13.5px; vertical-align:middle; }
th{ font-size:11.5px; text-transform:uppercase; letter-spacing:.5px; color:var(--text-soft); font-weight:700; }
tr:hover td{ background:#FAF6EA; }
.thumb{ width:44px; height:44px; object-fit:cover; border-radius:6px; border:1px solid var(--line); }

.badge{ display:inline-block; padding:3px 9px; border-radius:20px; font-size:11px; font-weight:700; letter-spacing:.3px; }
.badge-completed{ background:#E4EEE4; color:var(--green); }
.badge-ongoing{ background:#FBF0DA; color:#8A6416; }
.badge-proposed{ background:#F7E3DA; color:#95441F; }
.career-status-button{ display:flex; flex-direction:column; align-items:flex-start; gap:1px; padding:6px 10px; border:1px solid transparent; border-radius:7px; cursor:pointer; font:inherit; text-align:left; }
.career-status-button strong{ font-size:12px; }
.career-status-button span{ font-size:10px; opacity:.75; }
.career-status-button.is-published{ background:#E4EEE4; color:var(--green); border-color:#C5DCC5; }
.career-status-button.is-hidden{ background:#FBF0DA; color:#8A6416; border-color:#E8D6A8; }
.career-status-button:hover{ filter:brightness(.96); }

.alert{ padding:11px 14px; border-radius:8px; margin-bottom:16px; font-size:13.5px; }
.alert-success{ background:#E4EEE4; color:var(--green); }
.alert-error{ background:#FBEAE5; color:var(--maroon); }

.pagination{ display:flex; gap:6px; margin-top:16px; flex-wrap:wrap; }
.pagination a, .pagination span{
  display:inline-flex; align-items:center; justify-content:center; min-width:32px; height:32px; padding:0 8px;
  border:1px solid var(--line); border-radius:7px; font-size:13px; color:var(--text);
}
.pagination .current{ background:var(--ink); color:var(--cream); border-color:var(--ink); }
.pagination a:hover{ border-color:var(--ink); text-decoration:none; }

/* ---------- Admin layout ---------- */
.app-shell{ display:flex; min-height:100vh; }
.sidebar{
  width:var(--sidebar-w); flex-shrink:0; background:var(--sidebar-bg); color:var(--sidebar-text); min-height:100vh;
  position:fixed; top:0; left:0; bottom:0; overflow-y:auto; transition:transform .2s var(--ease); z-index:40;
}
.sidebar .brand{ display:flex; align-items:center; gap:10px; padding:18px 18px 16px; }
.sidebar .brand .mark{ width:30px; height:30px; border-radius:7px; background:var(--sidebar-accent); color:var(--sidebar-accent-text); font-family:'Fraunces',serif; font-weight:700; display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.sidebar .brand span{ font-size:14px; font-weight:700; color:var(--sidebar-text); line-height:1.25; }
.sidebar nav{ padding:6px 10px 20px; display:flex; flex-direction:column; gap:2px; }
.sidebar nav .nav-title{ font-size:10.5px; text-transform:uppercase; letter-spacing:1px; color:var(--sidebar-muted); margin:14px 10px 6px; }
.sidebar nav a{ color:var(--sidebar-link); padding:9px 10px; border-radius:7px; font-size:13.5px; font-weight:500; }
.sidebar nav a:hover{ background:var(--sidebar-link-hover-bg); text-decoration:none; color:var(--sidebar-text); }
.sidebar nav a.active{ background:var(--sidebar-accent); color:var(--sidebar-accent-text); font-weight:700; }

.main{ margin-left:var(--sidebar-w); flex:1; min-width:0; }
.topbar{
  height:var(--topbar-h); background:var(--paper); border-bottom:1px solid var(--line);
  display:flex; align-items:center; justify-content:space-between; padding:0 24px; position:sticky; top:0; z-index:30;
}
.topbar .menu-toggle{ display:none; background:none; border:none; font-size:20px; cursor:pointer; }
.topbar .who{ font-size:13px; color:var(--text-soft); }
.topbar .who a{ color:var(--maroon); }
.content{ padding:26px 28px 60px; max-width:1180px; margin:0 auto; }
.content h1{ font-size:24px; margin-bottom:4px; }
.page-head{ display:flex; align-items:flex-end; justify-content:space-between; gap:16px; margin-bottom:20px; flex-wrap:wrap; }

@media (max-width: 880px){
  .sidebar{ transform:translateX(-100%); box-shadow:var(--shadow); }
  .sidebar.open{ transform:translateX(0); }
  .main{ margin-left:0; }
  .topbar .menu-toggle{ display:block; }
  .form-grid{ grid-template-columns:1fr; }
}

/* ---------- Public site ---------- */
.public-utility-bar{ display:flex; align-items:center; justify-content:space-between; gap:16px; padding:7px 5vw; background:var(--ink); color:#E8DDC8; font-size:12px; }
.public-utility-contact, .public-utility-socials{ display:flex; align-items:center; gap:16px; flex-wrap:wrap; }
.public-utility-bar a{ color:#E8DDC8; display:inline-flex; align-items:center; gap:6px; }
.public-utility-bar a:hover{ color:#fff; text-decoration:none; }
.public-utility-socials a{ font-size:15px; }
.public-nav{
  display:flex; align-items:center; justify-content:space-between; padding:16px 5vw;
  background:var(--pubhead-bg); color:var(--pubhead-text); position:sticky; top:0; flex-wrap:wrap; gap:10px;
  border-bottom:1px solid var(--pubhead-border); z-index:70;
}
.public-nav .brand{ display:flex; align-items:center; gap:10px; color:var(--pubhead-text); }
.public-nav .brand .mark{ width:34px; height:34px; border-radius:8px; background:var(--pubhead-accent); color:var(--pubhead-accent-text); font-family:'Fraunces',serif; font-weight:700; display:flex; align-items:center; justify-content:center; }
.public-nav .brand span{ font-weight:700; font-size:16px; }
.nav-toggle{ display:none; background:none; border:none; color:var(--pubhead-text); font-size:20px; cursor:pointer; padding:4px 8px; }
.public-nav .links{ display:flex; gap:2px; align-items:center; }
.public-nav .links a{ color:var(--pubhead-link); padding:8px 12px; border-radius:7px; font-size:13.5px; font-weight:600; white-space:nowrap; }
.public-nav .links a:hover, .public-nav .links a.active{ background:var(--pubhead-link-hover-bg); color:var(--pubhead-text); text-decoration:none; }
.cta-btn{
  background:var(--pubhead-accent) !important; color:var(--pubhead-accent-text) !important; font-weight:700 !important;
  padding:8px 16px !important; margin-left:4px;
}
.cta-btn:hover{ background:var(--pubhead-accent-soft) !important; }
@media (max-width: 880px){ .cta-btn{ margin-left:0; margin-top:4px; text-align:center; } }

.nav-dropdown{ position:relative; }
.nav-dropdown summary{
  list-style:none; cursor:pointer; color:var(--pubhead-link); padding:8px 12px; border-radius:7px; font-size:13.5px; font-weight:600;
  display:flex; align-items:center; gap:5px; user-select:none;
}
.nav-dropdown summary::-webkit-details-marker{ display:none; }
.nav-dropdown summary::after{ content:"\25BE"; font-size:10px; margin-top:1px; }
.nav-dropdown summary:hover{ background:var(--pubhead-link-hover-bg); color:var(--pubhead-text); }
.nav-dropdown[open] summary{ background:var(--pubhead-link-hover-bg); color:var(--pubhead-text); }
.nav-dropdown .dropdown-menu{
  position:absolute; top:calc(100% + 6px); left:0; background:var(--pubhead-bg-deep); border:1px solid var(--pubhead-border);
  border-radius:9px; padding:6px; min-width:190px; box-shadow:var(--shadow); z-index:60; display:flex; flex-direction:column; gap:1px;
}
.nav-dropdown .dropdown-menu a{ color:var(--pubhead-link); padding:8px 10px; border-radius:6px; font-size:13.5px; font-weight:500; white-space:nowrap; }
.nav-dropdown .dropdown-menu a:hover, .nav-dropdown .dropdown-menu a.active{ background:var(--pubhead-link-hover-bg); color:var(--pubhead-text); text-decoration:none; }

@media (max-width: 880px){
  .public-utility-bar{ padding:7px 5vw; }
  .public-utility-contact a{ font-size:11px; }
  .public-nav{ flex-wrap:nowrap; }
  .nav-toggle{ display:block; }
  .public-nav .links{
    display:none; position:absolute; top:100%; left:0; right:0; background:var(--pubhead-bg); flex-direction:column;
    align-items:stretch; padding:8px; gap:2px; border-top:1px solid var(--pubhead-border); box-shadow:var(--shadow); z-index:60;
  }
  .public-nav .links.open{ display:flex; }
  .public-nav .links a{ padding:11px 12px; }
  .nav-dropdown{ width:100%; }
  .nav-dropdown summary{ padding:11px 12px; }
  .nav-dropdown .dropdown-menu{ position:static; box-shadow:none; border:none; margin-top:2px; padding:0 0 0 12px; background:transparent; }
}
@media (max-width: 520px){
  .public-utility-bar{ justify-content:center; }
  .public-utility-contact{ justify-content:center; gap:10px; }
  .public-utility-socials{ display:none; }
}

.hero{
  background:linear-gradient(135deg, var(--ink) 0%, #2A2016 100%); color:#fff;
  padding:60px 5vw 50px; text-align:center; border-bottom:3px solid var(--gold);
}
.hero .eyebrow{ font-size:12px; letter-spacing:3px; text-transform:uppercase; color:var(--gold-soft); font-weight:700; margin-bottom:10px; }
.hero h1{ color:#fff; font-size:38px; max-width:820px; margin:0 auto 14px; }
.hero p{ color:#D8D0BE; max-width:640px; margin:0 auto; font-size:15.5px; }
.page-section-editor{ border:1px solid var(--line); border-radius:10px; padding:16px; margin-top:10px; background:var(--cream); display:grid; gap:9px; }
.page-section-head{ display:flex; align-items:center; justify-content:space-between; gap:10px; }
.page-section-preview{ width:180px; height:90px; object-fit:cover; border-radius:7px; border:1px solid var(--line); }
.about-page-hero-image{ width:100%; max-height:360px; object-fit:cover; margin-bottom:28px; }
.page-content-section{ display:grid; gap:24px; align-items:center; margin-bottom:38px; }
.page-content-section.image-left, .page-content-section.image-right{ grid-template-columns:minmax(0, 1fr) minmax(0, 1fr); }
.page-content-section.image-left .page-section-image{ grid-column:1; grid-row:1; }
.page-content-section.image-left .page-section-copy{ grid-column:2; grid-row:1; }
.page-content-section.image-right .page-section-image{ grid-column:2; grid-row:1; }
.page-content-section.image-right .page-section-copy{ grid-column:1; grid-row:1; }
.page-section-image{ width:100%; max-height:360px; object-fit:cover; border-radius:12px; box-shadow:var(--shadow-sm); }
.page-section-image-full{ grid-column:1 / -1; max-height:420px; }
.page-content-section.without-image{ display:block; }
.ql-editor .ql-size-small, .rich-content .ql-size-small{ font-size:.75em; }
.ql-editor .ql-size-large, .rich-content .ql-size-large{ font-size:1.5em; }
.ql-editor .ql-size-huge, .rich-content .ql-size-huge{ font-size:2.5em; }
.ql-editor .ql-font-serif, .rich-content .ql-font-serif{ font-family:Georgia, 'Times New Roman', serif; }
.ql-editor .ql-font-monospace, .rich-content .ql-font-monospace{ font-family:'Courier New', monospace; }
@media (max-width: 700px){
  .page-content-section.image-left, .page-content-section.image-right{ grid-template-columns:1fr; }
  .page-content-section.image-left .page-section-image, .page-content-section.image-right .page-section-image,
  .page-content-section.image-left .page-section-copy, .page-content-section.image-right .page-section-copy{ grid-column:1; grid-row:auto; }
}

/* ---------- Homepage hero slider ---------- */
#hero {
  position: relative;
  width: 100%;
  background: var(--ink);
}

.carousel {
  position: relative;
  width: 100%;
}

.carousel-inner {
  position: relative;
  width: 100%;
  overflow: hidden;
}

.carousel-item {
  position: relative;
  display: none;
  float: left;
  width: 100%;
  margin-right: -100%;
  backface-visibility: hidden;
  transition: opacity 0.6s ease-in-out;
  background-size: cover;
  background-position: center;
  min-height: 60vh;
}

.home-hero .carousel-item{ min-height:315px; height:315px; }
.home-hero .carousel-content{ padding:24px; }

.carousel-item.active {
  display: block;
  opacity: 1;
}

.carousel-fade .carousel-item {
  opacity: 0;
  transition-property: opacity;
  transform: none;
}

.carousel-fade .carousel-item.active {
  opacity: 1;
}

.carousel-container {
  display: flex;
  justify-content: center;
  align-items: center;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(0, 0, 0, 0.4);
}

.carousel-content {
  position: relative;
  text-align: center;
  color: #fff;
  padding: 40px;
  max-width: 800px;
}

.carousel-content h2 {
  color: #fff;
  font-size: 36px;
  margin-bottom: 16px;
  font-weight: 700;
}

.carousel-content h2 span {
  color: var(--gold-soft);
}

.carousel-content p {
  color: #E8DFC8;
  font-size: 16px;
  margin-bottom: 24px;
  line-height: 1.6;
}

.text-center {
  text-align: center;
}

.carousel-control-prev,
.carousel-control-next {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 10;
  background: rgba(27, 22, 17, 0.45);
  border: none;
  cursor: pointer;
  width: 38px;
  height: 38px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  transition: background 0.15s var(--ease);
}

.carousel-control-prev:hover,
.carousel-control-next:hover {
  background: rgba(27, 22, 17, 0.75);
}

.carousel-control-prev {
  left: 16px;
}

.carousel-control-next {
  right: 16px;
}

.carousel-control-prev-icon,
.carousel-control-next-icon {
  display: inline-block;
  width: 20px;
  height: 20px;
  background-image: none;
  background-repeat: no-repeat;
  background-position: 50%;
  background-size: 100% 100%;
  color: #fff;
  font-size: 14px;
}

.bx-left-arrow::before,
.bx-right-arrow::before {
  color: #fff;
  font-size: 18px;
}

.carousel-indicators {
  position: absolute;
  right: 5vw;
  bottom: 14px;
  z-index: 15;
  display: flex;
  gap: 7px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.carousel-indicators li,
.carousel-indicators button {
  box-sizing: content-box;
  flex: 0 1 auto;
  width: 9px;
  height: 9px;
  padding: 0;
  margin-right: 0;
  margin-left: 0;
  text-indent: -999px;
  cursor: pointer;
  background-color: rgba(255, 255, 255, 0.5);
  background-clip: padding-box;
  border: 1.5px solid #fff;
  border-radius: 50%;
  opacity: 0.7;
  transition: opacity 0.15s var(--ease);
}

.carousel-indicators .active,
.carousel-indicators button.active {
  opacity: 1;
  background-color: var(--gold);
  border-color: var(--gold);
}

.btn-get-started {
  display: inline-block;
  padding: 10px 24px;
  background: var(--gold);
  color: var(--ink);
  text-decoration: none;
  border-radius: 8px;
  font-weight: 700;
  font-size: 14px;
  transition: all 0.15s var(--ease);
  border: none;
  cursor: pointer;
}

.btn-get-started:hover {
  background: var(--gold-soft);
  transform: translateY(-2px);
  text-decoration: none;
  color: var(--ink);
}

@media (max-width: 768px) {
  .carousel-content h2 {
    font-size: 26px;
  }

  .carousel-content p {
    font-size: 14px;
  }

  .carousel-indicators {
    right: 16px;
  }
}

@media (max-width: 480px) {
  .carousel-item {
    min-height: 45vh;
  }

  .home-hero .carousel-item{ min-height:260px; height:260px; }

  .carousel-content {
    padding: 24px;
  }

  .carousel-content h2 {
    font-size: 20px;
  }

  .carousel-content p {
    font-size: 13px;
  }

  .carousel-control-prev,
  .carousel-control-next {
    width: 32px;
    height: 32px;
  }
}


.section{ padding:44px 5vw; max-width:1180px; margin:0 auto; }
.home-section{ padding-top:22px; padding-bottom:22px; }
.home-section + .home-section{ padding-top:8px; }
.home-section h2{ margin-bottom:12px; }
.home-section .grid-3{ gap:14px; }
.home-section .portfolio-grid{ gap:12px; }
.home-section .tile img{ height:120px; }
.home-section .tile .body{ padding:12px 14px; }
.home-section .portfolio-card{ min-height:260px; }
.welcome-layout{ align-items:start; gap:24px; }
.welcome-image{ width:100%; aspect-ratio:4 / 3; height:auto; align-self:start; object-fit:cover; border-radius:14px; box-shadow:var(--shadow); }
.welcome-layout > div{ padding-top:2px; }
.welcome-layout .rich-content p:empty,
.welcome-layout .rich-content p:has(> br:only-child){ display:none; }
.welcome-layout .rich-content > p:last-child{ margin-bottom:0; }
.section-title{ font-size:11.5px; letter-spacing:2.5px; text-transform:uppercase; color:var(--maroon); font-weight:700; margin-bottom:6px; }
.section h2{ font-size:26px; margin-bottom:16px; }

.grid-3{ display:grid; grid-template-columns:repeat(3, 1fr); gap:20px; }
.portfolio-grid{ display:grid; grid-template-columns:repeat(4, minmax(0, 1fr)); gap:14px; }
.portfolio-card{ display:flex; flex-direction:column; min-width:0; min-height:292px; border-radius:9px; transition:transform .18s var(--ease), box-shadow .18s var(--ease), border-color .18s var(--ease); }
.portfolio-card:hover{ transform:translateY(-3px); border-color:#D7C59D; box-shadow:var(--shadow); }
.portfolio-image-link{ display:flex; align-items:center; justify-content:center; height:132px; padding:8px; background:var(--cream); border-bottom:1px solid var(--line); overflow:hidden; }
.portfolio-image-link img{ width:100%; height:100%; object-fit:contain; transition:transform .2s var(--ease); }
.portfolio-card:hover .portfolio-image-link img{ transform:scale(1.03); }
.portfolio-image-placeholder{ background:linear-gradient(135deg, var(--ink), var(--green)); }
.portfolio-image-placeholder span{ color:#fff; font-family:'Fraunces',serif; font-size:42px; opacity:.9; }
.portfolio-card .body{ display:flex; flex:1; flex-direction:column; padding:13px 14px 14px; }
.portfolio-card h3{ display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2; line-clamp:2; overflow:hidden; min-height:42px; font-size:16px; line-height:1.3; margin:7px 0 5px; }
.portfolio-title-link{ color:var(--ink); transition:color .15s var(--ease), text-decoration-color .15s var(--ease); text-decoration:underline; text-decoration-color:transparent; text-underline-offset:3px; }
.portfolio-title-link:hover, .portfolio-title-link:focus-visible{ color:var(--maroon); text-decoration-color:var(--gold); }
.portfolio-card .badge{ align-self:flex-start; max-width:100%; line-height:1.25; white-space:normal; }
.portfolio-card .body > p{ font-size:12.5px; margin-bottom:6px; }
.portfolio-description{ display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:3; line-clamp:3; overflow:hidden; margin-top:3px; color:var(--text-soft); font-size:12.5px; line-height:1.5; }
.portfolio-description > p:first-child{ color:inherit; font-family:inherit; font-size:inherit; line-height:inherit; }
.portfolio-description p{ margin-bottom:0; }
.portfolio-link{ margin-top:auto; padding-top:10px; font-size:12.5px; font-weight:700; }
.software-store-section{ max-width:1040px; padding-top:32px; padding-bottom:40px; }
.software-product-grid{ display:grid; grid-template-columns:repeat(4, minmax(0, 1fr)); gap:14px; }
.software-product-card{ border-radius:9px; }
.software-product-card .body{ padding:13px 14px; }
.software-product-card h2{ font-size:18px; line-height:1.25; margin-bottom:8px; }
.software-product-card .rich-content{ font-size:13px; line-height:1.55; }
.software-product-card .rich-content > p:first-child{ font-size:15px; line-height:1.45; }
.software-product-card .rich-content p{ margin-bottom:8px; }
.software-product-card > .body > p{ margin-bottom:10px; font-size:13px; }
.software-product-card .btn{ padding:7px 11px; font-size:12.5px; }
.careers-section{ max-width:1100px; padding-top:30px; }
.career-list{ display:flex; flex-direction:column; gap:8px; }
.career-row{ display:grid; grid-template-columns:92px minmax(0,1fr) 150px; gap:12px; align-items:stretch; padding:8px; background:#fff; border:1px solid #D9DDE2; box-shadow:0 1px 3px rgba(34,27,19,.08); }
.career-logo-wrap{ width:90px; height:74px; border:1px solid #D9DDE2; background:#fff; display:flex; align-items:center; justify-content:center; overflow:hidden; }
.career-logo-wrap img{ width:100%; height:100%; object-fit:contain; }
.career-logo-wrap span{ font-family:'Fraunces',serif; font-size:32px; color:var(--pubhead-accent); }
.career-info{ min-width:0; }
.career-info h2{ font-family:'Inter',sans-serif; font-size:15px; line-height:1.25; margin:0 0 2px; }
.career-info h2 a{ color:#07549A; }
.career-info h2 a:hover{ color:var(--maroon); }
.career-meta, .career-summary, .career-location{ font-size:12px; line-height:1.35; margin:0 0 3px; color:#29313A; }
.career-summary{ color:#4E5964; display:-webkit-box; -webkit-line-clamp:2; line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.career-location{ margin-top:7px; }
.career-side{ display:grid; grid-template-columns:1fr; align-content:space-between; justify-items:end; text-align:right; font-size:12px; }
.career-side time{ color:#4E5964; }
.career-side a{ color:#07549A; font-weight:600; }
.career-type{ display:inline-block; padding:3px 8px; color:#fff; background:#F36C21; font-size:11px; font-weight:700; border-radius:2px; white-space:nowrap; }
.career-detail{ max-width:850px; margin:0 auto 16px; display:grid; grid-template-columns:150px minmax(0,1fr); gap:24px; }
.career-detail-logo{ width:150px; height:120px; object-fit:contain; border:1px solid var(--line); }
.career-detail-main h2{ margin-top:10px; }
.career-company{ color:var(--text-soft); }
@media (max-width:700px){ .career-row{ grid-template-columns:64px minmax(0,1fr); } .career-logo-wrap{ width:64px; height:64px; } .career-side{ grid-column:2; grid-template-columns:auto auto auto; gap:10px; align-items:center; justify-items:start; text-align:left; } .career-detail{ grid-template-columns:1fr; } .career-detail-logo{ width:100%; max-height:150px; } }
.grid-2{ display:grid; grid-template-columns:1fr 1fr; gap:28px; align-items:center; }
.section > .card:nth-of-type(even) .service-layout > img{ order:2; }
.about-page-image{ width:100%; max-height:420px; object-fit:cover; border-radius:14px; box-shadow:var(--shadow-sm); }
.page-hero{ padding:44px 5vw 38px; background:linear-gradient(135deg, var(--ink) 0%, #2A2016 100%); color:#fff; border-bottom:3px solid var(--gold); }
.page-hero-copy{ max-width:1180px; margin:0 auto; }
.page-hero h1{ color:#fff; font-size:38px; margin:0; }
.page-content-section{ display:grid; gap:28px; align-items:center; margin-bottom:42px; }
.page-content-section.image-left, .page-content-section.image-right{ grid-template-columns:minmax(0, 1fr) minmax(0, 1fr); }
.page-content-section.image-left .page-section-image{ grid-column:1; grid-row:1; }
.page-content-section.image-left .page-section-copy{ grid-column:2; grid-row:1; }
.page-content-section.image-right .page-section-image{ grid-column:2; grid-row:1; }
.page-content-section.image-right .page-section-copy{ grid-column:1; grid-row:1; }
.page-section-image{ width:100%; max-height:360px; object-fit:cover; border-radius:12px; box-shadow:var(--shadow-sm); }
.page-content-section.without-image{ display:block; }
@media (max-width: 860px){ .grid-3{ grid-template-columns:1fr 1fr; } .grid-2{ grid-template-columns:1fr; } .welcome-image{ aspect-ratio:16 / 9; } }
@media (max-width: 1050px){ .portfolio-grid{ grid-template-columns:repeat(3, minmax(0, 1fr)); } }
@media (max-width: 700px){ .portfolio-grid{ grid-template-columns:repeat(2, minmax(0, 1fr)); gap:12px; } }
@media (max-width: 460px){ .portfolio-grid{ grid-template-columns:1fr; } }
@media (max-width: 980px){ .software-product-grid{ grid-template-columns:repeat(3, minmax(0, 1fr)); } }
@media (max-width: 680px){ .software-product-grid{ grid-template-columns:repeat(2, minmax(0, 1fr)); gap:12px; } }
@media (max-width: 440px){ .software-product-grid{ grid-template-columns:1fr; } }
@media (max-width: 760px){
  .page-content-section.image-left, .page-content-section.image-right{ grid-template-columns:1fr; }
  .page-content-section.image-left .page-section-image, .page-content-section.image-right .page-section-image,
  .page-content-section.image-left .page-section-copy, .page-content-section.image-right .page-section-copy{ grid-column:1; grid-row:auto; }
}
@media (max-width: 560px){ .grid-3{ grid-template-columns:1fr; } }

.tile{ background:var(--paper); border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; box-shadow:var(--shadow-sm); transition:transform .15s var(--ease); }
.tile:hover{ transform:translateY(-3px); }
.tile img{ width:100%; height:150px; object-fit:contain; background:var(--cream); display:flex; align-items:center; justify-content:center; }
.tile .body{ padding:16px 18px; }
.tile h3{ font-size:16px; margin-bottom:6px; }
.tile p{ font-size:13px; color:var(--text-soft); margin-bottom:0; }

.tabs{ display:flex; gap:8px; margin-bottom:24px; flex-wrap:wrap; }
.tabs a{ padding:8px 16px; border-radius:20px; border:1px solid var(--line); font-size:13px; font-weight:600; color:var(--text); }
.tabs a.active{ background:var(--ink); color:#fff; border-color:var(--ink); }
.tabs a:hover{ text-decoration:none; border-color:var(--ink); }

.clients-row{ display:flex; flex-wrap:wrap; justify-content:center; align-items:center; gap:28px; margin-top:10px; }
.clients-row img{ max-height:40px; max-width:110px; object-fit:contain; opacity:.75; filter:grayscale(40%); transition:opacity .15s var(--ease), filter .15s var(--ease); }
.clients-row a:hover img, .clients-row img:hover{ opacity:1; filter:none; }

.public-footer{ background:var(--ink); color:#B9AF98; padding:16px 5vw; text-align:center; font-size:12px; margin-top:auto; }
.public-footer a{ color:var(--gold-soft); }
.footer-line{ display:flex; flex-wrap:wrap; justify-content:center; align-items:center; gap:0; }
.footer-line span{ padding:0 10px; border-left:1px solid rgba(255,255,255,0.15); line-height:1.6; }
.footer-line span:first-child{ border-left:none; padding-left:0; }
.footer-copy{ margin-top:4px; opacity:.6; font-size:11px; }
@media (max-width: 640px){ .footer-line span{ border-left:none; padding:0 8px; } }

.rich-content{ color:#4A4238; font-size:15.5px; line-height:1.85; }
.rich-content > p:first-child{ color:var(--ink); font-family:'Fraunces', Georgia, serif; font-size:19px; line-height:1.6; }
.rich-content h2{ font-size:24px; margin:34px 0 12px; padding-bottom:8px; border-bottom:1px solid var(--line); }
.rich-content h3{ font-size:18px; margin:24px 0 8px; color:var(--green); }
.rich-content p{ margin-bottom:16px; }
.rich-content a{ color:var(--green); font-weight:700; text-decoration:underline; text-decoration-color:var(--gold-soft); text-underline-offset:3px; }
.rich-content a:hover{ color:var(--maroon); text-decoration-color:var(--maroon); }
.rich-content ul, .rich-content ol{ padding:14px 22px 14px 38px; margin:18px 0; background:var(--cream); border-left:4px solid var(--gold); border-radius:0 8px 8px 0; }
.rich-content li{ padding:3px 0; }
.rich-content blockquote{ margin:26px 0; padding:18px 22px; border-left:4px solid var(--pubhead-accent); background:#EEF7F2; color:var(--green); font-family:'Fraunces', Georgia, serif; font-size:20px; line-height:1.5; }
.rich-content img{ display:block; width:auto; max-width:100%; max-height:480px; border-radius:12px; margin:24px auto; box-shadow:var(--shadow-sm); }
.rich-content .ql-align-left{ text-align:left; }
.rich-content .ql-align-center{ text-align:center; }
.rich-content .ql-align-right{ text-align:right; }
.rich-content .ql-align-left img{ float:left; margin:8px 28px 18px 0; }
.rich-content .ql-align-center img{ margin-left:auto; margin-right:auto; }
.rich-content .ql-align-right img{ float:right; margin:8px 0 18px 28px; }
@media (max-width: 640px){
  .rich-content .ql-align-right, .rich-content .ql-align-left{ text-align:center; }
  .rich-content .ql-align-right img, .rich-content .ql-align-left img{ float:none; margin:24px auto; }
}

.search-box{ display:flex; gap:8px; margin-bottom:22px; max-width:420px; }
.gallery-grid{ display:grid; grid-template-columns:repeat(4, 1fr); gap:12px; }
.gallery-grid img{ width:100%; height:150px; object-fit:cover; border-radius:8px; cursor:pointer; }
@media (max-width: 700px){ .gallery-grid{ grid-template-columns:repeat(2, 1fr); } }

/* ---------- WhatsApp Widget ---------- */
.whatsapp-widget{
  position:fixed; bottom:24px; right:24px; z-index:50;
  display:flex; align-items:center; justify-content:center;
  width:60px; height:60px; border-radius:50%; background:#25D366; color:#fff;
  box-shadow:0 4px 20px rgba(37, 211, 102, 0.4); cursor:pointer; transition:all .2s var(--ease);
  text-decoration:none; font-size:28px; line-height:1;
}
.whatsapp-widget:hover{ 
  transform:scale(1.1); box-shadow:0 6px 28px rgba(37, 211, 102, 0.5);
  text-decoration:none; color:#fff;
}
.whatsapp-widget:active{ transform:scale(0.95); }
@media (max-width: 768px){ .whatsapp-widget{ bottom:16px; right:16px; width:56px; height:56px; } }
@media (max-width: 480px){ .whatsapp-widget{ bottom:12px; right:12px; width:52px; height:52px; font-size:24px; } }
