/* Visual Batch 1: presentation only, with progressive motion enhancement. */
:root{
    --motion-fast:120ms;
    --motion-normal:220ms;
    --motion-reveal:280ms;
    --motion-care-line:380ms;
    --ease-calm:cubic-bezier(.2,0,0,1);
    --surface-blue:#EAF3FA;
    --blue-deep:#073A66
}
input,select,textarea{
    border-color:#71889C
}
.cta-panel .button:focus-visible{
    outline-color:white
}
.public-shell .container{
    width:min(100% - 2.5rem,84rem)
}
.public-shell .site-header{
    padding-block:.5rem
}
.public-shell .brand-logo{
    width:72px
}
.coverage-bar{
    font-size:.75rem;
    padding-block:.2rem;
    letter-spacing:.02em
}
.public-shell h1{
    font-size:clamp(2.2rem,5vw,4.2rem);
    letter-spacing:-.045em
}
.public-shell h2{
    font-size:clamp(1.85rem,3.1vw,2.8rem)
}
.public-shell .eyebrow{
    letter-spacing:.11em;
    font-size:.75rem;
    margin-bottom:1rem
}
.public-shell .page-intro{
    padding-block:2.5rem
}
.public-shell .section{
    margin-block:3.5rem
}
.button{
    border-radius:6px;
    transition:background-color var(--motion-fast),border-color var(--motion-fast),box-shadow var(--motion-fast)
}
.button:hover{
    background:var(--blue-deep)
}
.button:active{
    box-shadow:inset 0 2px 3px #0003;
    background:#052F53
}
.button-light:hover,.button-outline:hover{
    background:var(--surface-blue);
    color:var(--blue-deep)
}
.button:focus-visible{
    outline-offset:4px
}
.text-link{
    gap:.75rem
}
.text-link span{
    transition:transform var(--motion-fast)
}
@media(hover:hover) and (prefers-reduced-motion:no-preference){
    .text-link:hover span{
        transform:translateX(3px)
    }
}
.primary-nav>a{
    border-radius:5px;
    transition:background-color var(--motion-fast)
}
.primary-nav:not([hidden]){
    animation:menu-enter var(--motion-normal) var(--ease-calm)
}
.home-hero{
    padding-block:2.4rem 2rem;
    gap:2rem
}
.home-hero h1{
    margin-bottom:1.15rem
}
.home-hero .lead{
    max-width:38ch
}
.home-hero .actions{
    margin:1.5rem 0 .9rem
}
.hero-expectation{
    font-size:.85rem;
    color:var(--muted);
    max-width:44ch
}
.preparation-link{
    display:inline-flex;
    gap:.7rem;
    align-items:center;
    font-size:.85rem;
    text-decoration:none;
    padding-block:.5rem
}
.line-mark{
    display:inline-block;
    width:32px;
    height:2px;
    background:currentColor;
    position:relative;
    flex-shrink:0
}
.line-mark::before,.line-mark::after{
    content:'';
    width:6px;
    height:6px;
    border:1.5px solid currentColor;
    background:white;
    border-radius:50%;
    position:absolute;
    top:-3px
}
.line-mark::after{
    right:0
}
.marketing-visual{
    margin:0;
    min-width:0
}
.marketing-visual picture{
    display:block;
    overflow:hidden;
    border-radius:12px;
    background:var(--surface-blue)
}
.marketing-visual img{
    width:100%;
    height:auto
}
.principles{
    gap:.8rem 1.5rem;
    justify-content:flex-start;
    font-size:.8rem
}
.principles span::before{
    content:'\2014'
}
.service-overview{
    border-top:1px solid var(--line)
}
.service-overview>a{
    display:flex;
    align-items:center;
    gap:1.25rem;
    padding:1.5rem 0;
    border-bottom:1px solid var(--line);
    text-decoration:none
}
.service-overview>a>div{
    flex:1
}
.service-overview h3{
    margin:0 0 .4rem
}
.service-overview p{
    color:var(--muted);
    font-size:.95rem
}
.service-overview>a:hover h3{
    text-decoration:underline;
    text-underline-offset:.25em
}
.service-symbol{
    display:inline-grid;
    place-items:center;
    width:40px;
    height:40px;
    flex:0 0 40px;
    border:1px solid #97B7D0;
    border-radius:50%;
    font-size:.8rem;
    font-variant-numeric:tabular-nums;
    color:var(--primary-blue)
}
.journey-section{
    background:#F3F8FC;
    padding:2rem 1.25rem;
    border-radius:12px
}
.care-journey{
    list-style:none;
    padding:0;
    margin:2rem 0;
    position:relative;
    display:grid;
    gap:1.5rem
}
.care-journey::before{
    content:'';
    position:absolute;
    left:18px;
    top:20px;
    bottom:20px;
    width:2px;
    background:#8CAFCB;
    transform-origin:top
}
.care-journey li{
    position:relative;
    padding-left:3.5rem
}
.journey-node{
    position:absolute;
    left:0;
    top:0;
    width:38px;
    height:38px;
    border:1.5px solid var(--primary-blue);
    background:#F3F8FC;
    color:var(--primary-blue);
    border-radius:50%;
    display:grid;
    place-items:center;
    font-size:.75rem;
    font-variant-numeric:tabular-nums
}
.care-journey h3{
    margin:.35rem 0 .6rem;
    font-size:1.1rem
}
.care-journey p{
    font-size:.9rem
}
.journey-note{
    border-top:1px solid #BACFDF;
    padding-top:1.25rem;
    font-size:.85rem
}
.preparation-section{
    display:grid;
    gap:2rem;
    border-block:1px solid var(--line);
    padding-block:2.5rem
}
.preparation-measure{
    border-left:2px solid var(--primary-blue);
    padding-left:1.5rem;
    color:var(--primary-blue)
}
.preparation-measure>span{
    display:block;
    font-size:.85rem
}
.preparation-measure strong{
    display:block;
    font-size:4.5rem;
    line-height:1.2;
    font-weight:500;
    letter-spacing:-.06em
}
.preparation-measure strong span{
    font-size:1.3rem;
    letter-spacing:0;
    margin-left:.5rem
}
.local-story{
    display:grid;
    gap:2rem;
    align-items:center
}
.public-shell .card-grid .card{
    border:0;
    border-top:1px solid var(--line);
    border-radius:0;
    padding:1.5rem 0
}
.public-shell .card-grid{
    gap:1.5rem 2.5rem
}
.public-shell .card-number{
    margin-bottom:1rem
}
.public-shell .service-families{
    display:block
}
.service-families .service-card{
    margin-bottom:1.5rem
}
.service-families .marketing-visual{
    margin-top:1.25rem
}
.service-families .service-list{
    list-style:none;
    padding:0
}
.service-families .service-list li{
    padding:.8rem 0 .8rem 1.5rem;
    border-bottom:1px solid #EDF2F6;
    position:relative
}
.service-families .service-list li::before{
    content:'';
    width:6px;
    height:6px;
    border:1.5px solid var(--primary-blue);
    border-radius:50%;
    position:absolute;
    left:1px;
    top:1.4rem
}
.service-index{
    display:flex;
    flex-wrap:wrap;
    gap:.5rem 1.5rem;
    padding-block:1.2rem;
    border-bottom:1px solid var(--line)
}
.service-index a{
    min-height:44px;
    display:inline-flex;
    align-items:center;
    font-size:.9rem
}
.public-shell .team-gallery{
    gap:1.5rem;
    max-width:850px
}
.public-shell .team-gallery figure{
    border:0;
    border-radius:10px
}
.team-introduction{
    display:grid;
    gap:2rem;
    align-items:start
}
.team-introduction .section{
    margin-top:0
}
.team-introduction .team-gallery{
    margin:0
}
.team-gallery figcaption{
    font-size:.85rem;
    padding-top:.8rem;
    color:var(--muted)
}
.public-shell .about-brand{
    grid-template-columns:88px 1fr;
    gap:1.5rem
}
.public-shell .about-brand .brand-logo{
    width:88px
}
.public-shell .about-brand h2{
    font-size:1.6rem
}
.contact-layout{
    display:grid;
    gap:2rem
}
.contact-layout .contact-details a{
    font-size:1.15rem
}
.coverage-summary{
    background:#F3F8FC;
    padding:1.75rem;
    border-radius:10px
}
.coverage-place{
    border-left:2px solid var(--primary-blue);
    padding-left:1.25rem;
    margin-block:1.5rem
}
.coverage-place strong{
    display:block;
    font-size:1.5rem;
    color:var(--primary-blue)
}
.public-shell .cta-panel{
    border-radius:10px;
    padding:clamp(1.5rem,4vw,3rem)
}
.public-shell .site-footer{
    margin-top:1.5rem;
    background:#F3F8FC
}
.public-shell .footer-brand .brand-logo{
    width:80px
}
.public-shell .footer-bottom{
    font-size:.8rem
}
.request-intro h1{
    font-size:clamp(2rem,3.8vw,3.2rem)
}
.public-shell .request-intro{
    padding-block:2rem 1.25rem;
    border-bottom:0
}
.public-shell .request-intro+.preparation-notice{
    margin-top:0
}
.preparation-notice{
    background:#F3F8FC;
    border-left-width:2px
}
.preparation-notice summary{
    cursor:pointer;
    font-weight:600;
    color:var(--primary-blue);
    min-height:44px;
    display:list-item;
    padding-block:.3rem
}
.preparation-notice summary+p{
    margin-top:.8rem
}
.preparation-notice .notice-summary{
    font-size:.85rem;
    margin-bottom:.6rem
}
.care-form fieldset{
    counter-increment:form-section
}
.care-form legend::before{
    content:'0' counter(form-section) ' / ';
    font-size:.8rem;
    color:var(--muted)
}
.care-form{
    counter-reset:form-section
}
.care-form legend{
    font-size:1.25rem
}
.request-aside{
    border-left:2px solid #AAC6DB;
    border-radius:0;
    background:#F7FAFC;
    padding:1.5rem
}
/* Reserved reusable wrappers;
Batch 1 hides no form fields. */
.public-shell .footer-grid h2{
    font-size:.8rem;
    letter-spacing:.08em
}
.public-shell .notice h2{
    font-size:1.2rem
}
.public-shell .request-aside h2,.public-shell .prose h2{
    font-size:1.4rem
}
.contact-layout>.card{
    border:0;
    padding:0
}
.service-icon{
    display:inline-block;
    vertical-align:middle;
    margin-right:.75rem
}
.service-families .card-number{
    display:flex;
    align-items:center;
    letter-spacing:.04em
}
.form-stage-heading{
    display:flex;
    align-items:center;
    gap:.75rem
}
.form-progress{
    list-style:none;
    padding:0;
    display:flex;
    gap:.75rem
}
.submit-feedback{
    font-size:.9rem;
    margin-top:.8rem;
    color:var(--primary-blue)
}
.submit-motif{
    display:inline-block;
    width:24px;
    height:6px;
    border-inline:6px solid currentColor;
    border-radius:4px;
    background:linear-gradient(currentColor,currentColor) center/100% 2px no-repeat;
    animation:care-pending 1.2s ease-in-out 2
}
.receipt{
    max-width:52rem;
    margin:3rem auto
}
.receipt-mark{
    display:inline-grid;
    place-items:center;
    width:44px;
    height:44px;
    border:1px solid var(--primary-blue);
    border-radius:50%;
    color:var(--primary-blue);
    font-size:1.3rem;
    margin-bottom:1.5rem;
    animation:acknowledge var(--motion-normal) var(--ease-calm)
}
.receipt-next{
    border-left:2px solid var(--primary-blue);
    padding-left:1.25rem;
    margin:1.5rem 0
}
.admin-shell .site-header{
    padding-block:.65rem
}
.admin-shell .brand-logo{
    width:64px
}
.admin-shell .admin-main h1{
    font-size:clamp(1.8rem,3vw,2.6rem)
}
.admin-shell .metric-grid{
    gap:.8rem
}
.admin-shell .metric{
    border-top:2px solid #729CBC;
    border-radius:6px;
    padding:1.25rem
}
.admin-shell .metric strong{
    font-size:1.9rem;
    font-variant-numeric:tabular-nums;
    margin-top:.6rem
}
.admin-shell .panel{
    border-radius:8px;
    padding:clamp(1rem,2.5vw,2rem)
}
.admin-nav a{
    font-size:.9rem;
    text-decoration-thickness:1px;
    text-underline-offset:.3em
}
.admin-shell .status-badge{
    border-radius:4px
}
.admin-shell th{
    font-size:.8rem
}
.admin-shell td{
    font-variant-numeric:tabular-nums
}
.admin-shell tr:hover td{
    background:#F7FAFC
}
.message[role="alert"]{
    background:#FFF5F6;
    border-left-color:#8C2433
}
.message[role="status"]{
    border-left-color:var(--primary-blue)
}
@media(min-width:42rem){
    .public-shell .container{
        width:min(100% - 4rem,84rem)
    }
    .public-shell .section{
        margin-block:5rem
    }
    .public-shell .page-intro{
        padding-block:3.5rem
    }
    .journey-section{
        padding:2.5rem
    }
    .preparation-section{
        grid-template-columns:1fr 2fr;
        gap:3rem
    }
    .contact-layout{
        grid-template-columns:1.1fr 1fr;
        gap:3rem
    }
    .service-families .service-card{
        display:grid;
        grid-template-columns:1fr 1.7fr;
        gap:0 2rem
    }
    .service-families .card-number,.service-families h3{
        grid-column:1
    }
    .service-families .service-list{
        grid-column:2;
        grid-row:1 / span 3
    }
    .service-families .service-card>p{
        grid-column:1
    }
    .service-families .marketing-visual{
        grid-column:1;
        grid-row:3;
        align-self:start;
        margin-top:.5rem
    }
}
@media(min-width:60rem){
    .home-hero{
        grid-template-columns:1fr 1.1fr;
        gap:3rem;
        padding-block:3.5rem
    }
    .local-story{
        grid-template-columns:1.1fr 1fr;
        gap:3.5rem
    }
    .journey-heading{
        display:grid;
        grid-template-columns:1fr 1fr;
        gap:3rem;
        align-items:end
    }
    .care-journey{
        grid-template-columns:repeat(3,minmax(0,1fr));
        gap:2.5rem
    }
    .care-journey::before{
        left:0;
        right:0;
        width:auto;
        top:19px;
        height:2px;
        bottom:auto;
        transform-origin:left
    }
    .care-journey li{
        padding:3.5rem 0 0
    }
    .journey-node{
        left:0
    }
    .team-introduction{
        grid-template-columns:.85fr 1.4fr;
        gap:4rem
    }
}
@media(min-width:72rem){
    .primary-nav:not([hidden]){
        animation:none
    }
}
@media(min-width:60rem) and (max-width:71.99rem){
    .care-journey{
        grid-template-columns:1fr
    }
    .care-journey li{
        padding:0 0 0 3.5rem
    }
    .care-journey::before{
        left:18px;
        right:auto;
        width:2px;
        top:20px;
        bottom:20px;
        height:auto
    }
}
@media(min-width:72rem){
    .care-journey{
        grid-template-columns:repeat(6,minmax(0,1fr));
        gap:1rem
    }
    .care-journey h3{
        min-height:2.8em
    }
    .journey-note{
        max-width:none
    }
}
@media(max-width:671px){
    .public-shell .site-header .brand-logo{width:48px}
    .public-shell .footer-brand .brand-logo{width:72px}
    .public-shell .about-brand{grid-template-columns:72px minmax(0,1fr);gap:1rem}
    .public-shell .about-brand .brand-logo{width:72px}
}
@media(max-width:359px){
    .public-shell .about-brand{
        grid-template-columns:1fr
    }
    .home-hero .button{
        width:100%;
        padding-inline:.75rem
    }
    .service-overview>a{
        gap:.75rem
    }
}
@keyframes menu-enter{
    from{
        opacity:.7;
        transform:translateY(-4px)
    }
    to{
        opacity:1;
        transform:none
    }
}
@keyframes section-enter{
    from{
        opacity:.72;
        transform:translateY(6px)
    }
    to{
        opacity:1;
        transform:none
    }
}
@keyframes line-enter{
    from{
        opacity:.35
    }
    to{
        opacity:1
    }
}
@keyframes acknowledge{
    from{
        opacity:.5;
        transform:scale(.95)
    }
    to{
        opacity:1;
        transform:none
    }
}
@keyframes care-pending{
    50%{
        opacity:.4
    }
}
@media(prefers-reduced-motion:no-preference){
    [data-reveal].is-revealed{
        animation:section-enter var(--motion-reveal) var(--ease-calm)
    }
    .is-revealed .care-journey::before{
        animation:line-enter var(--motion-care-line) var(--ease-calm)
    }
}
@media(prefers-reduced-motion:reduce){
    *,*::before,*::after{
        animation:none!important;
        transition:none!important;
        scroll-behavior:auto!important
    }
    [data-reveal],.text-link span,.primary-nav{
        opacity:1!important;
        transform:none!important
    }
}
/* Compact public navigation: separate wordmark keeps the name legible. */
.public-shell .site-header .navbar-brand { gap:.65rem; flex-shrink:0; }
.public-shell .site-header .navbar-logo { width:56px; height:auto; aspect-ratio:256 / 248; background:transparent; }
.brand-name { display:grid; gap:.2rem; line-height:1.05; }
.brand-name strong { font-size:1.1rem; font-weight:700; letter-spacing:-.025em; }
.brand-name > span { font-size:.72rem; font-weight:500; letter-spacing:.09em; }
.public-shell .site-header .header-inner { min-height:54px; }
@media(max-width:671px) {
    .public-shell .site-header .navbar-logo { width:48px; }
    .public-shell .site-header .header-inner { min-height:48px; gap:.75rem; }
    .brand-name strong { font-size:1rem; }
    .brand-name > span { font-size:.65rem; }
}
/* Keep the primary action reachable while browsing on narrow screens. */
.mobile-care-action { display:none; }
@media(max-width:71.99rem) {
    .public-shell.has-care-action { padding-bottom:calc(98px + env(safe-area-inset-bottom)); }
    html { scroll-padding-bottom:calc(110px + env(safe-area-inset-bottom)); }
    .mobile-care-action { display:grid; gap:.25rem; position:fixed; bottom:0; inset-inline:0; z-index:100; padding:.65rem 1.25rem calc(.5rem + env(safe-area-inset-bottom)); background:white; border-top:1px solid var(--line); box-shadow:0 -4px 18px #17324D0D; }
    .mobile-care-action .button { width:100%; min-height:44px; justify-content:center; }
    .mobile-care-action p { margin:0; max-width:none; text-align:center; font-size:.72rem; color:var(--muted); }
}
/* Narrow-screen review: preserve readable controls while reclaiming space. */
@media(max-width:671px) {
    .mobile-care-action { padding:.4rem 1.25rem calc(.35rem + env(safe-area-inset-bottom)); gap:.15rem; }
    .mobile-care-action .button { min-height:44px; padding:.55rem 1rem; line-height:1.2; }
    .mobile-care-action p { font-size:.7rem; line-height:1.3; }
    .public-shell.has-care-action { padding-bottom:calc(80px + env(safe-area-inset-bottom)); }
    .public-shell [aria-labelledby="leadership-title"] { margin-top:2rem; gap:1rem; }
    [aria-labelledby="leadership-title"] .lead { margin-bottom:0; }
}
