/* APPDEVELOPER.NET.AU NDA REMOVAL 2026-08-05 */
/* APPDEVELOPER.NET.AU DESIGNER BUILD V3 2026-07-27 */
:root{--green:#64ff00;--blue:#0b69ff;--navy:#0e2f72;--deep:#071f50;--ink:#0b2657;--muted:#586d91;--soft:#f3f7ff;--line:#d7e3ff;--white:#fff;--shadow:0 24px 70px rgba(14,47,114,.14);--radius:30px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:"Noto Sans",Arial,sans-serif;color:var(--ink);background:#fff;font-size:17px;line-height:1.65}img{max-width:100%;height:auto}a{color:inherit}button,input,select,textarea{font:inherit}.container{width:min(1240px,calc(100% - 48px));margin:auto}.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}.site-header{position:sticky;top:0;z-index:100;background:rgba(255,255,255,.97);border-bottom:1px solid rgba(14,47,114,.08);backdrop-filter:blur(14px)}.nav-wrap{min-height:84px;display:flex;align-items:center;justify-content:space-between;gap:28px}.brand{display:flex;align-items:center;flex:0 0 auto}.brand img{width:188px;height:auto;display:block}.nav-links{display:flex;align-items:center;gap:4px;list-style:none;margin:0;padding:0}.nav-links>li{position:relative}.nav-links a,.nav-parent>a{display:flex;align-items:center;min-height:48px;padding:0 15px;text-decoration:none;color:var(--navy);font-weight:800;font-size:.92rem;border-radius:999px}.nav-links a:hover,.nav-links a:focus,.nav-links a[aria-current="page"]{background:#eef4ff;color:var(--blue)}.nav-cta{background:var(--navy)!important;color:#fff!important;padding-inline:20px!important}.nav-cta:hover,.nav-cta:focus{background:var(--blue)!important}.nav-parent{display:flex;align-items:center}.submenu-toggle{border:0;background:transparent;color:var(--navy);padding:6px;cursor:pointer;font-weight:900}.submenu{position:absolute;left:0;top:calc(100% + 6px);min-width:265px;list-style:none;margin:0;padding:12px;background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow);display:none;grid-template-columns:1fr}.has-menu:hover>.submenu,.has-menu:focus-within>.submenu,.has-menu.open>.submenu{display:grid}.submenu a{border-radius:10px;min-height:40px;font-size:.86rem}.menu-toggle{display:none;border:0;background:var(--navy);border-radius:14px;width:48px;height:48px;padding:12px}.menu-toggle span:not(.sr-only){display:block;height:3px;background:#fff;border-radius:3px;margin:4px 0}.hero,.city-hero,.page-hero{position:relative;overflow:hidden;color:#fff;background:linear-gradient(120deg,#133b56 0%,var(--navy) 46%,var(--blue) 100%)}.hero:before,.city-hero:before,.page-hero:before{content:"";position:absolute;width:520px;height:520px;border-radius:50%;right:-180px;bottom:-300px;background:var(--green);filter:blur(1px);opacity:.22}.home-hero{min-height:720px;display:flex;align-items:center;padding:80px 0 70px}.hero-grid,.page-hero-grid{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,1.02fr) minmax(480px,.98fr);align-items:center;gap:68px}.hero-copy h1,.page-hero h1{font-size:clamp(3.6rem,7vw,6.9rem);line-height:.98;letter-spacing:-.065em;margin:.18em 0 .35em;color:#fff;max-width:780px}.hero-copy>p,.page-hero p{font-size:1.16rem;color:rgba(255,255,255,.86);max-width:720px}.kicker{display:inline-flex;align-items:center;padding:.42rem .72rem;border-radius:999px;background:#eaffdf;color:var(--navy);font-weight:900;font-size:.72rem;text-transform:uppercase;letter-spacing:.08em}.kicker.on-dark{background:var(--green);color:var(--navy)}.actions,.center-actions{display:flex;flex-wrap:wrap;gap:14px;margin-top:28px}.center-actions{justify-content:center}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:54px;padding:0 24px;border-radius:999px;text-decoration:none;font-weight:900;border:2px solid transparent;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease,background .2s ease}.btn:hover,.btn:focus{transform:translateY(-2px);box-shadow:0 14px 34px rgba(0,0,0,.16)}.btn-primary{background:var(--green);color:var(--navy)}.btn-secondary{background:var(--navy);color:#fff}.btn-outline-light{border-color:rgba(255,255,255,.55);color:#fff;background:rgba(255,255,255,.05)}.hero-visual,.page-hero-art{position:relative;display:flex;align-items:center;justify-content:center}.hero-visual img,.page-hero-art img{position:relative;z-index:2;width:100%;max-width:680px;border-radius:34px;border:1px solid rgba(255,255,255,.22);box-shadow:0 34px 80px rgba(1,18,55,.42);transform:rotate(.6deg)}.visual-glow{position:absolute;inset:15% 8%;border-radius:50%;background:var(--green);filter:blur(80px);opacity:.28}.hero-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:34px;max-width:720px}.hero-stats div{border:1px solid rgba(255,255,255,.2);background:rgba(255,255,255,.08);border-radius:20px;padding:16px 18px}.hero-stats strong{display:block;color:var(--green);font-size:1.35rem}.hero-stats span{color:rgba(255,255,255,.8);font-size:.86rem}.proof-strip{background:var(--green);color:var(--navy)}.proof-strip .container{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:rgba(14,47,114,.16)}.proof-strip div div{background:var(--green);padding:22px}.proof-strip strong{display:block;font-size:1rem}.proof-strip span{font-size:.83rem}.section{padding:92px 0}.section.soft{background:var(--soft)}.section.dark{background:var(--deep);color:#fff}.section.dark p{color:rgba(255,255,255,.78)}.section-heading{margin-bottom:34px}.section-heading.split{display:grid;grid-template-columns:1fr .85fr;gap:42px;align-items:end}.section-heading h2,.two-col h2,.feature-split h2,.process-feature h2,.team-teaser h2,.values-grid h2,.map-grid h2,.legal-hero h1,.faq-narrow h2{font-size:clamp(2.25rem,4vw,4.2rem);line-height:1.03;letter-spacing:-.055em;margin:.22em 0;color:var(--navy)}.section-heading p,.two-col p,.section p{color:var(--muted)}.cards{display:grid;gap:22px}.service-cards{grid-template-columns:repeat(3,1fr)}.service-card,.package-card,.city-card,.project-card,.team-card,.local-panel,.value-panel,.illustration-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 14px 44px rgba(14,47,114,.08)}.service-card{padding:30px;min-height:310px;display:flex;flex-direction:column;justify-content:flex-start}.service-card img{width:78px;height:78px;object-fit:contain;margin-bottom:24px}.service-card h3,.package-card h3,.project-card h3,.team-card h3,.local-panel h3,.value-panel h3{font-size:1.55rem;line-height:1.15;margin:0 0 14px;color:var(--navy)}.service-card p,.package-card p,.project-card p,.team-card p{color:var(--muted);margin-bottom:0}.accent-section{background:linear-gradient(120deg,var(--navy),var(--blue));color:#fff}.feature-split,.two-col,.process-feature,.team-teaser,.values-grid,.map-grid{display:grid;grid-template-columns:1fr 1fr;gap:58px;align-items:center}.feature-split h2,.process-feature h2,.values-grid h2{color:#fff}.feature-image img,.process-art img{border-radius:30px;border:1px solid rgba(255,255,255,.2);box-shadow:0 24px 60px rgba(0,0,0,.25);display:block}.check-list{list-style:none;padding:0;margin:24px 0;display:grid;gap:12px}.check-list li{position:relative;padding-left:38px;color:var(--muted)}.check-list li:before{content:"✓";position:absolute;left:0;top:.05em;display:grid;place-items:center;width:25px;height:25px;border-radius:9px;background:var(--green);color:var(--navy);font-weight:1000}.check-list.on-dark li{color:rgba(255,255,255,.88)}.package-grid{grid-template-columns:repeat(4,1fr)}.package-card{padding:28px;min-height:450px}.package-badge{display:inline-block;background:var(--navy);color:var(--green);border-radius:999px;padding:.45rem .8rem;font-weight:900;font-size:.72rem;letter-spacing:.08em;margin-bottom:16px}.package-card ul{padding-left:1.1rem;color:var(--muted)}.package-card li{margin-bottom:10px}.project-grid{grid-template-columns:repeat(3,1fr)}.project-card{overflow:hidden}.project-card img{display:block;width:100%;aspect-ratio:1.9/1;object-fit:cover;background:var(--navy)}.project-card>div{padding:24px}.process-feature{align-items:start}.process-list{display:grid;gap:18px;margin-top:28px}.process-step{display:grid;grid-template-columns:54px 1fr;gap:18px;align-items:start}.process-step>span{width:54px;height:54px;display:grid;place-items:center;border-radius:18px;background:var(--green);color:var(--navy);font-weight:1000;font-size:1.25rem}.process-step h3{margin:0 0 6px;color:#fff}.process-step p{margin:0}.team-teaser{background:var(--soft);border-radius:38px;padding:44px}.team-portrait-row{display:flex;justify-content:center;align-items:end}.team-portrait-row img{width:180px;height:180px;object-fit:contain;border-radius:50%;margin-left:-22px;background:#fff;border:8px solid #fff;box-shadow:var(--shadow)}.city-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.city-card{padding:26px;text-decoration:none;min-height:210px;display:flex;flex-direction:column}.city-card>span{font-size:.72rem;font-weight:900;color:var(--blue);text-transform:uppercase}.city-card strong{font-size:1.45rem;margin:8px 0;color:var(--navy)}.city-card p{font-size:.92rem}.city-card em{margin-top:auto;color:var(--blue);font-style:normal;font-weight:900}.contact-section{background:#edf3ff}.form-shell{display:grid;grid-template-columns:.78fr 1.22fr;overflow:hidden;border-radius:36px;box-shadow:var(--shadow);background:#fff;border:1px solid var(--line)}.form-intro{background:linear-gradient(150deg,var(--navy),var(--blue));color:#fff;padding:44px}.form-intro h2{font-size:clamp(2rem,3.3vw,3.5rem);line-height:1.05;margin:.25em 0}.form-intro p{color:rgba(255,255,255,.82)}.email-link{display:inline-block;margin-top:24px;color:#fff;font-weight:900}.lead-form{padding:38px}.form-heading{border-bottom:1px solid var(--line);padding-bottom:20px;margin-bottom:24px}.form-heading>span{font-size:.75rem;color:var(--blue);text-transform:uppercase;font-weight:900}.form-heading h3{font-size:2rem;margin:.1em 0;color:var(--navy)}.form-heading p{margin:0;font-size:.9rem;color:var(--muted)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.lead-form label>span{display:block;font-weight:800;color:var(--navy);margin-bottom:8px}.lead-form input,.lead-form select,.lead-form textarea{display:block;width:100%;border:2px solid #cfddf7;border-radius:15px;padding:14px 15px;background:#fff;color:var(--ink);transition:border-color .18s ease,box-shadow .18s ease}.lead-form textarea{resize:vertical;min-height:130px}.lead-form input:focus,.lead-form select:focus,.lead-form textarea:focus{outline:0;border-color:var(--blue);box-shadow:0 0 0 5px rgba(11,105,255,.12)}.full{grid-column:1/-1}.form-actions{display:flex;align-items:center;gap:18px;flex-wrap:wrap}.form-note{flex:1;min-width:250px;font-size:.86rem;color:var(--muted)}.status{font-weight:800}.status.success{color:#187100}.status.error{color:#a00000}.page-hero,.city-hero{padding:88px 0}.page-hero.compact{padding:70px 0}.page-hero-grid{grid-template-columns:1.08fr .92fr}.page-hero-art img{max-height:480px;object-fit:cover}.two-col{align-items:center}.two-col.reverse>div:first-child{order:1}.illustration-card{min-height:420px;display:grid;place-items:center;padding:40px;background:var(--soft)}.illustration-card img{max-height:310px;object-fit:contain}.illustration-card.large img{max-height:420px}.team-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}.team-card{overflow:hidden}.team-card img{width:100%;aspect-ratio:1.2/1;object-fit:contain;background:linear-gradient(145deg,#eaf2ff,#fff)}.team-card div{padding:24px}.team-card span{color:var(--blue);font-size:.75rem;font-weight:900;text-transform:uppercase}.value-panel,.local-panel{padding:32px}.values-grid{align-items:start}.mini-cards{display:grid;gap:16px}.mini-cards article{border:1px solid rgba(255,255,255,.18);border-radius:22px;padding:22px;background:rgba(255,255,255,.08)}.mini-cards strong{display:block;color:var(--green);font-size:1.2rem}.mini-cards span{color:rgba(255,255,255,.8)}.contact-quick{border:1px solid rgba(255,255,255,.22);background:rgba(255,255,255,.08);border-radius:26px;padding:30px;display:grid;gap:5px}.contact-quick span{font-size:.72rem;text-transform:uppercase;color:var(--green);font-weight:900;margin-top:12px}.contact-quick a,.contact-quick strong{font-size:1.1rem;color:#fff}.city-hero{padding:74px 0}.city-hero h1{font-size:clamp(3.8rem,7vw,7rem)}.local-facts{display:grid;grid-template-columns:1fr;gap:12px;margin-top:30px}.local-facts div{border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.08);border-radius:18px;padding:15px}.local-facts span{display:block;color:var(--green);font-size:.7rem;text-transform:uppercase;font-weight:900}.local-facts strong{font-size:.9rem}.city-visual img{max-height:500px;object-fit:cover}.text-link{color:var(--blue);font-weight:900;text-decoration:none}.map-grid{align-items:start}.map{width:100%;height:410px;border:0;border-radius:28px;box-shadow:var(--shadow)}.faq-narrow{max-width:940px}.faq details{border:1px solid var(--line);border-radius:18px;background:#fff;margin:12px 0;overflow:hidden}.faq summary{cursor:pointer;padding:20px 22px;font-weight:900;color:var(--navy);list-style:none}.faq summary::-webkit-details-marker{display:none}.faq summary:after{content:"+";float:right;color:var(--blue)}.faq details[open] summary:after{content:"−"}.faq details div{padding:0 22px 20px}.legal-hero{padding:72px 0;background:var(--soft)}.legal-hero p{max-width:760px;color:var(--muted)}.legal-layout{max-width:900px}.legal-section{padding:30px 0;border-bottom:1px solid var(--line)}.legal-section h2{font-size:1.7rem;color:var(--navy)}.site-footer{background:#061b43;color:#fff;padding:60px 0 24px}.footer-grid{display:grid;grid-template-columns:1.2fr .7fr 1fr .75fr;gap:32px}.footer-brand img{width:190px;filter:brightness(0) invert(1)}.footer-brand p{color:rgba(255,255,255,.75)}.footer-brand-note{font-size:.85rem}.site-footer h2{font-size:1rem;margin:0 0 16px}.footer-list{list-style:none;padding:0;margin:0;display:grid;gap:7px}.footer-list.columns{grid-template-columns:1fr 1fr}.site-footer a{text-decoration:none;color:rgba(255,255,255,.86)}.site-footer a:hover,.site-footer a:focus{color:var(--green)}.footer-bottom{display:flex;justify-content:space-between;gap:20px;border-top:1px solid rgba(255,255,255,.13);margin-top:36px;padding-top:20px;color:rgba(255,255,255,.62);font-size:.83rem}
@media(max-width:1120px){.package-grid{grid-template-columns:repeat(2,1fr)}.hero-grid,.page-hero-grid{grid-template-columns:1fr 440px}.service-cards,.project-grid,.city-grid{grid-template-columns:repeat(2,1fr)}.footer-grid{grid-template-columns:1fr 1fr}}
@media(max-width:900px){.menu-toggle{display:block}.nav-wrap{min-height:72px}.brand img{width:150px}.nav-wrap nav{position:absolute;left:0;right:0;top:100%}.nav-links{display:none;background:#fff;border-top:1px solid var(--line);box-shadow:0 20px 50px rgba(14,47,114,.14);padding:18px 24px;align-items:stretch;flex-direction:column}.nav-links.open{display:flex}.nav-links a,.nav-parent>a{min-height:44px}.nav-parent{justify-content:space-between}.submenu{position:static;box-shadow:none;border:0;padding:4px 0 8px 18px;border-left:2px solid var(--line);border-radius:0}.hero-grid,.page-hero-grid,.feature-split,.two-col,.process-feature,.team-teaser,.values-grid,.map-grid,.form-shell{grid-template-columns:1fr}.home-hero{padding-top:54px}.hero-copy h1,.page-hero h1{font-size:clamp(3rem,10vw,5rem)}.hero-visual{margin-top:8px}.hero-visual img{max-width:760px}.proof-strip .container{grid-template-columns:1fr 1fr}.section-heading.split{grid-template-columns:1fr;gap:10px}.team-grid{grid-template-columns:1fr}.team-teaser{padding:28px}.form-intro,.lead-form{padding:28px}.two-col.reverse>div:first-child{order:0}.footer-grid{grid-template-columns:1fr 1fr}}
@media(max-width:640px){body{font-size:16px}.container{width:min(100% - 30px,1240px)}.site-header{position:relative}.service-cards,.project-grid,.city-grid,.package-grid,.hero-stats,.proof-strip .container,.form-grid,.footer-grid{grid-template-columns:1fr}.section{padding:68px 0}.home-hero{min-height:auto;padding:52px 0}.hero-copy h1,.page-hero h1,.city-hero h1{font-size:clamp(2.85rem,14vw,4.3rem)}.hero-visual img,.page-hero-art img{border-radius:22px}.hero-stats{grid-template-columns:1fr 1fr}.proof-strip div div{padding:16px}.service-card{min-height:auto}.package-card{min-height:auto}.feature-split,.two-col,.process-feature,.team-teaser,.values-grid,.map-grid{gap:32px}.form-intro,.lead-form{padding:22px}.form-shell{border-radius:24px}.form-actions{display:block}.form-note{margin-top:14px}.footer-list.columns{grid-template-columns:1fr}.footer-bottom{display:block}.footer-bottom span{display:block;margin-top:8px}.team-portrait-row img{width:110px;height:110px}.map{height:320px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}

/* APPDEVELOPER.NET.AU PHONE BOOKING CONTACT SCHEMA UPDATE 2026-07-27 */
html{scroll-behavior:smooth}#contact-form{scroll-margin-top:110px}.city-phone{margin-top:12px}.city-phone a,.phone-link{font-weight:900;color:var(--blue);text-decoration:none}.city-phone a:hover,.phone-link:hover{text-decoration:underline}.contact-intro .phone-link{display:inline-flex;margin-top:14px;padding:.55rem .9rem;border:1px solid rgba(255,255,255,.35);border-radius:999px;color:#fff}.booking-page{background:linear-gradient(180deg,#eff5ff 0%,#fff 100%);min-height:100vh}.booking-header{padding:18px 0;background:#fff;border-bottom:1px solid var(--line)}.booking-header .container{display:flex;align-items:center;justify-content:center}.booking-header img{width:180px;height:auto}.booking-main{padding:54px 0 80px}.booking-main .contact-section{padding:0;background:transparent}.booking-main .contact-shell{grid-template-columns:1fr;max-width:920px}.booking-main .contact-intro{display:none}.booking-main .form-panel{border:1px solid var(--line);border-radius:30px;box-shadow:var(--shadow)}.booking-title{margin-bottom:24px}.booking-title h1{font-size:clamp(2.2rem,5vw,4.3rem);color:var(--navy);line-height:1.05}.booking-meta{display:flex;gap:12px 22px;flex-wrap:wrap;margin-top:12px;color:var(--muted)}.booking-meta a{color:var(--blue);font-weight:900;text-decoration:none}.contact-location-list .city-phone-small{margin-top:8px;color:var(--blue);font-weight:800}.contact-location-list .city-phone-small:hover{text-decoration:underline}@media(max-width:620px){#contact-form{scroll-margin-top:80px}.booking-main{padding:32px 0 60px}.booking-main .form-panel{padding:22px}.booking-title h1{font-size:2.35rem}}

/* APPDEVELOPER.NET.AU LOCATION PHONES BOOKING PAGES SEO V4 2026-07-27 */
.city-phone-link{color:#fff!important;font-weight:900;text-decoration:none}.city-phone-link:hover,.city-phone-link:focus{color:var(--green)!important}.local-facts a{color:#fff;text-decoration:none}.footer-email-text{color:rgba(255,255,255,.86)}.booking-form-only{min-height:calc(100vh - 84px);display:flex;align-items:flex-start;padding:72px 0 92px;background:linear-gradient(180deg,#edf3ff 0%,#fff 100%)}.booking-form-card{width:min(900px,100%);margin:0 auto;background:#fff;border:1px solid var(--line);border-radius:34px;box-shadow:var(--shadow);padding:42px}.booking-form-card .lead-form{padding:0}.booking-form-card .form-heading{margin-bottom:28px}.booking-form-card .form-heading h1{font-size:clamp(2.1rem,4vw,3.4rem);line-height:1.06;letter-spacing:-.045em;margin:.12em 0;color:var(--navy)}.booking-form-back{display:inline-flex;margin-bottom:22px;color:var(--blue);font-weight:900;text-decoration:none}.booking-form-back:hover,.booking-form-back:focus{text-decoration:underline}@media(max-width:640px){.booking-form-only{padding:34px 0 60px}.booking-form-card{border-radius:22px;padding:22px}}

/* APPDEVELOPER.NET.AU MENU HOVER PHONE DEDUPE 2026-07-27 */
@media (min-width:901px) and (hover:hover) and (pointer:fine){
  .has-menu{position:relative;}
  .has-menu>.submenu{
    top:calc(100% - 1px)!important;
    margin-top:0!important;
    z-index:240!important;
    pointer-events:auto!important;
  }
  .has-menu:after{
    content:"";
    position:absolute;
    left:0;
    right:0;
    top:calc(100% - 2px);
    height:12px;
    z-index:230;
  }
  .has-menu:hover>.submenu,
  .has-menu:focus-within>.submenu,
  .has-menu.open>.submenu,
  .has-menu.hover-open>.submenu{display:grid!important;}
}

/* APPDEVELOPER.NET.AU PLAYFUL TYPOGRAPHY SYSTEM V6 2026-07-28
   Typography-only pass: same Noto Sans typeface, stronger weight contrast,
   balanced headings and improved final-line wrapping. Page copy and layout
   structure remain unchanged. */
:root{
  --type-black:900;
  --type-bold:800;
  --type-semibold:700;
  --type-regular:400;
  --type-light:300;
}
html{
  font-kerning:normal;
  font-synthesis:none;
  text-rendering:optimizeLegibility;
}
body{
  font-family:"Noto Sans",Arial,sans-serif;
  font-weight:var(--type-regular);
  line-height:1.72;
  letter-spacing:-.006em;
  font-feature-settings:"kern" 1,"liga" 1;
}
p,li,dd,blockquote,figcaption,.form-note,.footer-brand-note{
  text-wrap:pretty;
  orphans:3;
  widows:3;
  hyphens:none;
}
h1,h2,h3,h4,h5,h6,
.hero-copy h1,.page-hero h1,.city-hero h1,
.section-heading h2,.two-col h2,.feature-split h2,.process-feature h2,
.team-teaser h2,.values-grid h2,.map-grid h2,.legal-hero h1,.faq-narrow h2,
.form-intro h2,.form-heading h3,.booking-title h1,.booking-form-card .form-heading h1{
  font-family:"Noto Sans",Arial,sans-serif;
  font-weight:var(--type-black);
  font-synthesis:none;
  text-wrap:balance;
  overflow-wrap:normal;
  word-break:normal;
  hyphens:none;
}
.hero-copy h1,.page-hero h1,.city-hero h1{
  font-weight:var(--type-black);
  line-height:.91;
  letter-spacing:-.078em;
}
.hero-copy>p,.page-hero p,.city-hero .hero-copy>p,.form-intro>p,.legal-hero>p{
  font-weight:var(--type-light);
  line-height:1.72;
  letter-spacing:-.012em;
}
.section-heading h2,.two-col h2,.feature-split h2,.process-feature h2,
.team-teaser h2,.values-grid h2,.map-grid h2,.legal-hero h1,.faq-narrow h2{
  font-weight:var(--type-black);
  line-height:.98;
  letter-spacing:-.065em;
}
.section-heading p,.two-col p,.section p,.legal-section p,.legal-section li{
  font-weight:var(--type-regular);
  letter-spacing:-.008em;
}
.kicker,.package-badge,.form-heading>span,.city-card>span,.team-card span,
.contact-quick span,.local-facts span,.drapp-resource-kicker{
  font-weight:var(--type-black)!important;
  letter-spacing:.12em!important;
  line-height:1.1;
  text-transform:uppercase;
}
.nav-links a,.nav-parent>a,.submenu a,.nav-cta,.btn,.booking-form-back,
.email-link,.text-link,.city-card em,.footer-list a{
  font-weight:var(--type-bold);
  letter-spacing:-.018em;
}
.service-card h3,.package-card h3,.project-card h3,.team-card h3,
.local-panel h3,.value-panel h3,.process-step h3,.legal-section h2,
.faq summary,.city-card strong{
  font-weight:var(--type-black);
  letter-spacing:-.048em;
  line-height:1.06;
  text-wrap:balance;
}
.service-card h3{
  font-size:clamp(1.55rem,1.7vw,1.92rem);
}
.package-card h3{
  font-size:clamp(1.8rem,2.1vw,2.35rem);
  line-height:1;
}
.project-card h3,.team-card h3,.local-panel h3,.value-panel h3{
  font-size:clamp(1.45rem,1.55vw,1.78rem);
}
.service-card:nth-child(2n) h3,
.package-card:nth-child(2n) h3,
.project-card:nth-child(3n+2) h3,
.city-card:nth-child(3n+2) strong{
  color:var(--blue);
}
.service-card p,.package-card p,.project-card p,.team-card p,
.package-card li,.city-card p,.process-step p,.local-panel p,.value-panel p{
  font-weight:var(--type-regular);
  line-height:1.7;
  letter-spacing:-.006em;
  text-wrap:pretty;
}
.package-card li::marker,.legal-section li::marker{
  color:var(--blue);
  font-weight:var(--type-black);
}
.hero-stats strong,.proof-strip strong,.mini-cards strong{
  font-weight:var(--type-black);
  letter-spacing:-.035em;
  text-wrap:balance;
}
.hero-stats span,.proof-strip span,.mini-cards span{
  font-weight:var(--type-regular);
  letter-spacing:.005em;
}
.form-heading h3,.booking-form-card .form-heading h1{
  font-weight:var(--type-black);
  letter-spacing:-.055em;
  line-height:1;
}
.form-grid label>span,.checkbox strong,.booking-meta strong{
  font-weight:var(--type-bold);
  letter-spacing:-.018em;
}
.form-grid input,.form-grid select,.form-grid textarea{
  font-weight:var(--type-regular);
  letter-spacing:-.004em;
}
.checkbox small,.form-note,.status{
  font-weight:var(--type-regular);
  line-height:1.45;
}
.site-footer h2{
  font-weight:var(--type-black);
  letter-spacing:.08em;
  text-transform:uppercase;
}
.site-footer p,.site-footer li,.footer-bottom{
  font-weight:var(--type-regular);
  letter-spacing:-.004em;
  text-wrap:pretty;
}
.footer-brand p:first-of-type{
  font-weight:var(--type-light);
}
.legal-section h2{
  font-size:clamp(1.65rem,2.3vw,2.15rem);
  color:var(--blue);
}
@media(max-width:900px){
  .hero-copy h1,.page-hero h1,.city-hero h1{
    letter-spacing:-.068em;
    line-height:.94;
  }
  .section-heading h2,.two-col h2,.feature-split h2,.process-feature h2,
  .team-teaser h2,.values-grid h2,.map-grid h2,.faq-narrow h2{
    letter-spacing:-.055em;
    line-height:1.01;
  }
}
@media(max-width:640px){
  body{line-height:1.68;letter-spacing:-.004em;}
  .hero-copy h1,.page-hero h1,.city-hero h1{
    letter-spacing:-.058em;
    line-height:.96;
  }
  .service-card h3,.package-card h3,.project-card h3,.team-card h3,
  .local-panel h3,.value-panel h3,.city-card strong{
    letter-spacing:-.038em;
  }
}
/* APPDEVELOPER.NET.AU HERO HEADINGS UPPERCASE 2026-07-28: only top-of-page hero H1 text is visually uppercase. */
.hero-copy h1,
.page-hero h1,
.city-hero h1{
  text-transform:uppercase;
}

/* APPDEVELOPER.NET.AU HERO SIZE AND GREEN ACCENT LINE 2026-07-28 */
.hero-copy h1,
.page-hero h1,
.city-hero h1{
  font-size:clamp(3.3rem,6.2vw,6.2rem);
}
.hero-copy h1 .hero-accent-line,
.page-hero h1 .hero-accent-line,
.city-hero h1 .hero-accent-line{
  display:block;
  color:var(--green);
}
@media(max-width:900px){
  .hero-copy h1,.page-hero h1,.city-hero h1{
    font-size:clamp(2.8rem,8.8vw,4.6rem);
  }
}
@media(max-width:640px){
  .hero-copy h1,.page-hero h1,.city-hero h1{
    font-size:clamp(2.45rem,11.5vw,3.8rem);
  }
}


/* APPDEVELOPER.NET.AU HERO TRACKING AND MEANING ACCENTS V6.3 2026-07-28
   Slightly wider tracking on top hero headings. Only selected meaning-bearing
   words are light green; all remaining hero text stays white. */
.hero-copy h1,
.page-hero h1,
.city-hero h1{
  letter-spacing:-.052em;
  color:#fff;
}
.hero-copy h1 .hero-accent-line,
.page-hero h1 .hero-accent-line,
.city-hero h1 .hero-accent-line{
  display:inline;
  color:var(--green);
}
@media(max-width:900px){
  .hero-copy h1,.page-hero h1,.city-hero h1{
    letter-spacing:-.046em;
  }
}
@media(max-width:640px){
  .hero-copy h1,.page-hero h1,.city-hero h1{
    letter-spacing:-.038em;
  }
}


/* APPDEVELOPER.NET.AU FOOTER LOGO REGULAR LINKS AND HOME HERO ORPHAN FIX V6.4 2026-07-28 */
/* Use the exact supplied logo shape, rendered as an actual white footer asset. */
.site-footer .footer-brand .footer-logo-white{
  display:block;
  width:min(100%,305px);
  height:auto;
  margin:0 0 26px;
  object-fit:contain;
  filter:none!important;
}
/* Footer link lists are deliberately regular weight; section labels stay black/bold. */
.site-footer .footer-list li,
.site-footer .footer-list a,
.site-footer p,
.site-footer p a,
.site-footer .footer-brand-note{
  font-weight:var(--type-regular,400)!important;
  letter-spacing:0!important;
}
.site-footer h2{
  font-weight:var(--type-black,900)!important;
}
/* Front-page H1 uses fixed semantic line groups so no single word is orphaned. */
.home-hero .hero-title-home{
  font-size:clamp(3rem,5.35vw,5.4rem);
  line-height:.98;
  letter-spacing:-.045em;
  max-width:820px;
}
.home-hero .hero-title-home .hero-title-line{
  display:block!important;
  white-space:nowrap;
  color:#fff;
}
.home-hero .hero-title-home .hero-accent-line{
  color:var(--green)!important;
}
@media(max-width:900px){
  .home-hero .hero-title-home{
    font-size:clamp(2.65rem,8.1vw,4.5rem);
    letter-spacing:-.04em;
  }
}
@media(max-width:640px){
  .home-hero .hero-title-home{
    font-size:clamp(2rem,10.2vw,3.3rem);
    letter-spacing:-.032em;
  }
  .site-footer .footer-brand .footer-logo-white{width:min(100%,260px);}
}

/* APPDEVELOPER.NET.AU NATURAL HERO KERNING AND NAVY PAGE LABEL V6.5 2026-07-28
   Restore Noto Sans' native kerning and use one identical tracking value across
   white and green words. Only the top hero page label changes to navy/white. */
.hero-copy h1,
.page-hero h1,
.city-hero h1,
.home-hero .hero-title-home{
  font-family:"Noto Sans",Arial,sans-serif!important;
  font-weight:900!important;
  font-style:normal!important;
  font-stretch:normal!important;
  font-synthesis:none!important;
  font-kerning:normal!important;
  font-feature-settings:"kern" 1!important;
  font-variant-ligatures:normal!important;
  font-optical-sizing:auto;
  text-rendering:optimizeLegibility;
  letter-spacing:0!important;
  word-spacing:0!important;
}
.hero-copy h1 span,
.page-hero h1 span,
.city-hero h1 span,
.home-hero .hero-title-home span{
  font:inherit!important;
  font-weight:inherit!important;
  font-kerning:inherit!important;
  font-feature-settings:inherit!important;
  font-variant-ligatures:inherit!important;
  letter-spacing:inherit!important;
  word-spacing:inherit!important;
}
/* Page-name label shown above the top hero heading only. */
.hero-copy > .kicker.on-dark,
.page-hero .page-hero-grid > div > .kicker.on-dark,
.city-hero .hero-copy > .kicker.on-dark{
  background:#0d2e73!important;
  color:#fff!important;
  border:1px solid rgba(255,255,255,.24)!important;
  box-shadow:none!important;
}
