/* Penrith Tree Permit Services — site styles */
html { scroll-behavior: smooth; }
html, body { height: auto; min-height: 100%; }
body { margin: 0; background: #ffffff; color: #45463F; font-family: "Source Sans 3", system-ui, sans-serif; -webkit-font-smoothing: antialiased; }
* { box-sizing: border-box; }
a { color: #004E1F; text-decoration: underline; text-underline-offset: 3px; }
a:hover { color: #8A4E0B; }
h1, h2, h3, h4 { font-family: Archivo, system-ui, sans-serif; color: #003D18; margin: 0; text-wrap: pretty; }
p { margin: 0; }
summary::-webkit-details-marker { display: none; }
summary { list-style: none; }
input, select, textarea, button { font-family: inherit; font-size: 16px; }
img { max-width: 100%; }
@keyframes ptps-fade { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
.ptps-q::after { content: "+"; flex: 0 0 auto; width: 34px; height: 34px; border-radius: 50%; background: #F0F4EC; border: 1px solid #DFE9D8; color: #004E1F; font-family: Archivo, sans-serif; font-weight: 600; font-size: 21px; line-height: 32px; text-align: center; }
details[open] .ptps-q::after { content: "\2212"; background: #004E1F; border-color: #004E1F; color: #ffffff; }

/* visibility by width */
.only-wide { display: none; }
.only-narrow { display: block; }
.only-phone { display: block; }
@media (min-width: 560px) { .only-phone { display: none; } }
@media (min-width: 960px) { .only-wide { display: block; } .only-narrow { display: none; } }

/* header */
.hdr-nav { display: flex; align-items: center; gap: 26px; }
.hdr-mobile { display: flex; align-items: center; gap: 30px; }
.h-headerPhoneStyle { display: none !important; }
@media (min-width: 560px) { .h-headerPhoneStyle { display: flex !important; } }

/* mega + mobile panels start closed */
.mega-panel, .mobile-panel { display: none !important; }
.mega-panel.is-open, .mobile-panel.is-open { display: block !important; }

/* hero */
.h-heroFormStyle { flex: 1 1 100% !important; max-width: none !important; }
@media (min-width: 1060px) { .h-heroFormStyle { flex: 0 1 563px !important; max-width: 563px !important; } }
.h-heroTicksStyle { grid-template-columns: 1fr !important; }
@media (min-width: 520px) { .h-heroTicksStyle { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; } }
@media (min-width: 1060px) { .h-heroTicksStyle { grid-template-columns: max-content max-content !important; gap: 24px 60px !important; } }
.h-statColStyle { flex: 1 1 100% !important; max-width: none !important; width: 100% !important; }
@media (min-width: 1060px) { .h-statColStyle { flex: 1 1 320px !important; max-width: 560px !important; width: auto !important; } }
.h-homeStatsStyle { grid-template-columns: 1fr !important; }
@media (min-width: 520px) { .h-homeStatsStyle { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; } }
@media (min-width: 1180px) { .h-homeStatsStyle { grid-template-columns: repeat(4, minmax(0, 1fr)) !important; } }

.h-heroH1Style { font-size: 47px !important; }
@media (min-width: 560px) { .h-heroH1Style { font-size: clamp(38px, 5.6vw, 58px) !important; } }

/* page heroes */
.h-heroGridStyle { grid-template-columns: 1fr !important; gap: 30px !important; }
@media (min-width: 1000px) { .h-heroGridStyle { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 0 clamp(40px, 5vw, 76px) !important; align-items: start !important; } }
.h-heroColA { grid-column: 1 !important; grid-row: 1 !important; }
.h-heroColB { grid-column: 1 !important; grid-row: 3 !important; }
@media (min-width: 1000px) { .h-heroColB { grid-row: 2 !important; } }
.h-heroImg { grid-column: 1 !important; grid-row: 2 !important; }
@media (min-width: 1000px) { .h-heroImg { grid-column: 2 !important; grid-row: 1 / span 2 !important; align-self: start !important; } }

/* two-column content sections */
.h-splitGridStyle { grid-template-columns: 1fr !important; gap: 32px !important; }
@media (min-width: 1000px) { .h-splitGridStyle { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: clamp(40px, 5vw, 76px) !important; align-items: start !important; } }
.h-splitImgStyle { width: 100% !important; }
@media (min-width: 480px) { .h-splitImgStyle { width: 85% !important; margin-right: auto !important; } }
@media (min-width: 560px) { .h-splitImgStyle { width: 70% !important; margin-right: auto !important; } }
@media (min-width: 700px) { .h-splitImgStyle { width: 50% !important; margin-right: auto !important; } }
@media (min-width: 1000px) { .h-splitImgStyle { width: 100% !important; margin-right: 0 !important; } }
.h-notesGridStyle { grid-template-columns: 1fr !important; gap: 30px !important; }
@media (min-width: 1000px) { .h-notesGridStyle { grid-template-columns: minmax(0, 2fr) minmax(0, 1fr) !important; gap: clamp(40px, 5vw, 64px) !important; align-items: start !important; } }
.h-faqGridStyle { grid-template-columns: 1fr !important; gap: 30px !important; }
@media (min-width: 1000px) { .h-faqGridStyle { grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr) !important; gap: 56px !important; align-items: start !important; } }

/* which report rows */
.h-reportListStyle { grid-template-columns: 1fr !important; gap: 14px !important; }
@media (min-width: 560px) { .h-reportListStyle { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; grid-auto-rows: 1fr !important; gap: 20px !important; } }
@media (min-width: 1000px) { .h-reportListStyle { grid-template-columns: 1fr !important; grid-auto-rows: auto !important; gap: 12px !important; } }
.h-reportRowStyle { grid-template-columns: 1fr !important; gap: 6px !important; }
@media (min-width: 1000px) { .h-reportRowStyle { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; gap: 12px 28px !important; align-items: center !important; } }
@media (min-width: 560px) and (max-width: 999px) { .h-reportSpanStyle { grid-column: 1 / -1 !important; } }

/* closing CTAs */
.h-ctaStyle { flex-direction: column !important; align-items: flex-start !important; gap: 40px !important; }
@media (min-width: 1060px) { .h-ctaStyle { flex-direction: row !important; flex-wrap: wrap !important; align-items: center !important; justify-content: space-between !important; gap: clamp(28px, 4vw, 56px) !important; } }
.h-ctaTextStyle { width: 100% !important; }
@media (min-width: 1060px) { .h-ctaTextStyle { flex: 1 1 440px !important; max-width: 760px !important; width: auto !important; } }
.h-ctaActionsStyle { width: 100% !important; flex-direction: column !important; align-items: stretch !important; gap: 20px !important; }
@media (min-width: 560px) { .h-ctaActionsStyle { width: auto !important; flex-direction: row !important; flex-wrap: wrap !important; align-items: center !important; gap: 22px 34px !important; } }
@media (min-width: 1060px) { .h-ctaActionsStyle { flex: 0 0 auto !important; flex-direction: column !important; align-items: center !important; gap: 18px !important; } }
.h-ctaPhoneStyle { display: none !important; }
@media (min-width: 560px) { .h-ctaPhoneStyle { display: flex !important; } }

/* buttons */
.h-btnStyle { display: block !important; width: 100% !important; min-width: 0 !important; }
@media (min-width: 560px) { .h-btnStyle { display: inline-block !important; width: auto !important; min-width: 224px !important; } }
.h-btnRowStyle { flex-direction: column !important; align-items: stretch !important; gap: 18px !important; }
@media (min-width: 560px) { .h-btnRowStyle { flex-direction: row !important; flex-wrap: wrap !important; align-items: center !important; gap: 20px 30px !important; } }
.h-btnLinkStyle { justify-content: center !important; width: 100% !important; }
@media (min-width: 560px) { .h-btnLinkStyle { justify-content: flex-start !important; width: auto !important; } }

/* forms */
.h-formCardPad { padding: 20px !important; }
@media (min-width: 560px) { .h-formCardPad { padding: 32px !important; } }
@media (min-width: 1000px) { .h-formCardPad { padding: 40px !important; } }

/* footer */
.h-footerBaseStyle { flex-direction: column-reverse !important; align-items: flex-start !important; gap: 16px !important; }
@media (min-width: 1060px) { .h-footerBaseStyle { flex-direction: row !important; flex-wrap: wrap !important; align-items: center !important; justify-content: space-between !important; gap: 14px 32px !important; } }
.h-legalLinksStyle { flex-direction: column !important; gap: 12px !important; }
@media (min-width: 560px) { .h-legalLinksStyle { flex-direction: row !important; flex-wrap: wrap !important; align-items: center !important; gap: 12px 24px !important; } }

/* review slider */
.slider-track { display: flex; align-items: stretch; gap: 24px; transition: transform 1.1s cubic-bezier(0.33,0,0.2,1); }
.slider-track > blockquote { flex: 0 0 auto; box-sizing: border-box; margin: 0; width: 100%; }
@media (min-width: 700px) { .slider-track > blockquote { width: calc((100% - 24px) / 2); } }
@media (min-width: 1180px) { .slider-track > blockquote { width: calc((100% - 48px) / 3); } }
.slider-dot { width: 11px; height: 11px; padding: 0; border: 0; border-radius: 50%; cursor: pointer; background: #CFD8C8; transition: background 0.3s ease; }
.slider-dot.is-active { background: #004E1F; }

/* back to top */
.to-top { display: none !important; position: fixed; right: 24px; bottom: 100px; z-index: 80; width: 52px; height: 52px; border: 0; border-radius: 50%; background: #B4531E; color: #ffffff; cursor: pointer; display: none; align-items: center; justify-content: center; box-shadow: 0 10px 24px rgba(0,40,15,0.28); transition: bottom 0.3s ease, background 0.2s ease, transform 0.2s ease; }
.to-top.is-shown { display: flex !important; }
.to-top.is-near-bottom { bottom: 164px; }
.to-top:hover { background: #9A4415; transform: translateY(-2px); }
@media (min-width: 960px) { .to-top { bottom: 32px; } .to-top.is-near-bottom { bottom: 116px; } }

/* hover and focus states */
a, button, summary, [class*="hv"] { transition: color 0.18s ease, background-color 0.18s ease, border-color 0.18s ease, box-shadow 0.18s ease, transform 0.18s ease; }
a:focus-visible, button:focus-visible, summary:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible { outline: 2px solid #B4531E; outline-offset: 2px; }
summary:hover { cursor: pointer; }
.hv0:hover,
.hv0:focus-visible {
  color: #A8D48F !important;
}
.hv1:hover,
.hv1:focus-visible {
  color: #003D18 !important;
}
.hv2:hover,
.hv2:focus-visible {
  background: #9A4415 !important;
}
.hv3:hover,
.hv3:focus-visible {
  color: #8A4E0B !important;
}
.hv4:hover,
.hv4:focus-visible {
  color: #004E1F !important;
}
.hv5:hover,
.hv5:focus-visible {
  color: #8A4E0B !important;
  border-color: #8A4E0B !important;
}
.hv6:hover,
.hv6:focus-visible {
  border-color: #74A855 !important;
  background: #EEF5E9 !important;
}
.hv7:hover,
.hv7:focus-visible {
  background: #00330F !important;
}
.hv8:hover,
.hv8:focus-visible {
  border-color: #74A855 !important;
  box-shadow: 0 14px 30px rgba(0,50,20,0.08) !important;
}
.hv9:hover,
.hv9:focus-visible {
  color: #ffffff !important;
}
.hv10:hover,
.hv10:focus-visible {
  text-decoration: underline !important;
}
.hv11:hover,
.hv11:focus-visible {
  border-color: #004E1F !important;
  background: #F4F8F0 !important;
}
.hv12:hover,
.hv12:focus-visible {
  background: #C9652A !important;
}
.hv13:hover,
.hv13:focus-visible {
  color: #ffffff !important;
  text-decoration: underline !important;
}
.hv14:hover,
.hv14:focus-visible {
  background: #9A4415 !important;
  transform: translateY(-2px) !important;
}
.hv15:hover,
.hv15:focus-visible {
  border-color: #74A855 !important;
  background: #F6F1E6 !important;
}
.hv16:hover,
.hv16:focus-visible {
  color: #C2700F !important;
}

/* separator rows: inline on wider screens, stacked list on phones */
.sep-row { display: flex; flex-wrap: wrap; align-items: baseline; }
.sep-mark { color: inherit; padding: 0 10px; font-weight: 700; }
.sep-chev { color: #C2700F; padding: 0 10px; }
@media (max-width: 559px) {
  .sep-row { flex-direction: column; align-items: flex-start; gap: 10px; line-height: 1.5 !important; }
  .sep-mark { display: none; }
  .sep-row > span:not(.sep-mark) { position: relative; padding-left: 16px; }
  .sep-row > span:not(.sep-mark)::before { content: ""; position: absolute; left: 0; top: 0.55em; width: 6px; height: 6px; border-radius: 50%; background: #74A855; }
}

/* phones: card padding matches the section's edge padding so nothing is inset twice */
@media (max-width: 559px) {
  [style*="padding:clamp(64px,8vw,112px) 28px"],
  [style*="padding:clamp(56px,7vw,96px) 28px"],
  [style*="padding:clamp(64px,8.6vw,150px) 28px"],
  [style*="padding:clamp(72px,9vw,140px) 28px"],
  [style*="padding:clamp(48px,6vw,88px) 28px"],
  [style*="padding:clamp(40px,5vw,64px) 28px"],
  [style*="padding:0 28px clamp(48px,6vw,76px)"],
  [style*="padding:clamp(32px,3.4vw,44px) 28px"] { padding-left: 20px !important; padding-right: 20px !important; }
  [style*="border-radius:6px;padding:28px"],
  [style*="border-radius:6px;padding:30px"],
  [style*="border-radius:6px;padding:clamp(22px,2.4vw,28px)"],
  [style*="border-radius:6px;padding:clamp(24px,2.6vw,30px)"],
  [style*="border-radius:6px;padding:clamp(26px,2.6vw,34px)"],
  [style*="border-radius:6px;padding:clamp(28px,3.5vw,48px)"],
  [style*="border-radius:6px;padding:clamp(26px,3vw,36px)"],
  [style*="border-radius:8px;padding:clamp(28px,3vw,44px)"] { padding: 20px !important; }
  [style*="padding:22px 26px"] { padding: 20px !important; }
}

@media (max-width: 559px) {
  /* credential rows read as ticks; process and category rows keep the dot */
  .sep-trust > span:not(.sep-mark) { padding-left: 24px; }
  .sep-trust > span:not(.sep-mark)::before {
    content: "\2713"; background: none; width: auto; height: auto; border-radius: 0;
    top: 0; left: 0; color: #74A855; font-weight: 700; font-size: 15px; line-height: inherit;
  }
  /* even breathing room above and below a button on a phone */
  .h-btnRowStyle { margin-top: 30px !important; }
  a[style*="margin-top:56px"], a[style*="margin-top:40px"] { margin-top: 30px !important; }
  .sep-row { margin-top: 30px !important; }
}

/* FAQ accordions: flush with the heading in the two-column layout, tighter on phones */
.faq-list { margin-top: 12px !important; }
@media (min-width: 1000px) { .faq-list { margin-top: 0 !important; } }

/* file upload: style the native selector button so it is identical in every browser */
input[type="file"]::file-selector-button,
input[type="file"]::-webkit-file-upload-button {
  margin: 0 14px 0 0;
  padding: 9px 16px;
  border: 1px solid #D9D6CB;
  border-radius: 4px;
  background: #F7F5EF;
  color: #003D18;
  font-family: Archivo, sans-serif;
  font-weight: 600;
  font-size: 14px;
  line-height: 1.2;
  cursor: pointer;
  -webkit-appearance: none;
  appearance: none;
  transition: background-color 0.18s ease, border-color 0.18s ease, color 0.18s ease;
}
input[type="file"]::file-selector-button:hover,
input[type="file"]::-webkit-file-upload-button:hover {
  background: #EFEADC;
  border-color: #74A855;
  color: #8A4E0B;
}
input[type="file"] {
  font-family: 'Source Sans 3', sans-serif;
  -webkit-appearance: none;
  appearance: none;
}

/* data tables: never force the page wider than the viewport */
.tbl-wrap { max-width: 100%; min-width: 0; -webkit-overflow-scrolling: touch; }
.tbl-wrap table { max-width: 100%; }
@media (max-width: 700px) {
  .tbl-wrap table { min-width: 0 !important; font-size: 15px; }
  .tbl-wrap th, .tbl-wrap td { padding: 12px 14px !important; }
}
/* grid and flex children must be allowed to shrink below their content width */
main section > div > div, main section > div > aside { min-width: 0; }

/* species list: a stacked card per row on phones, so nothing needs sideways scrolling */
@media (max-width: 700px) {
  .tbl-species { display: block; font-size: 16px !important; }
  .tbl-species thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
  .tbl-species tbody, .tbl-species tr, .tbl-species td { display: block; width: auto; }
  .tbl-species tr { padding: 18px 16px 20px; border-bottom: 1px solid #E6E3D9; background: #ffffff !important; }
  .tbl-species tr:last-child { border-bottom: 0; }
  .tbl-species td { padding: 0 !important; border: 0 !important; }
  .tbl-species td[data-label="#"] { display: none; }
  .tbl-species td[data-label="Common name"] { font-size: 19px; line-height: 1.3; }
  .tbl-species td[data-label="Scientific name"] { margin-top: 4px; color: #5F6B59; }
  .tbl-species td[data-label="Exemption criteria"] { margin-top: 12px; }
  .tbl-species td[data-label="Exemption criteria"]::before {
    content: "Exemption criteria";
    display: block; margin-bottom: 4px;
    font-family: Archivo, sans-serif; font-weight: 600; font-size: 13px;
    letter-spacing: 0.04em; text-transform: uppercase; color: #8A4E0B;
  }
  .tbl-wrap:has(.tbl-species) { overflow-x: visible; }
}
