:root{--ink:#101426;--navy:#0d1428;--green:#00a76f;--mint:#00d891;--soft:#effaf6;--muted:#667186;--line:#dfe8e4;--white:#fff;--shadow:0 22px 60px rgba(6,67,48,.11)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;color:var(--ink);background:#fff;font:400 16px/1.65 "DM Sans",sans-serif}body.menu-open{overflow:hidden}a{text-decoration:none;color:inherit}button,input{font:inherit}.shell{width:min(1180px,calc(100% - 40px));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}.skip-link{position:fixed;top:-70px;left:15px;background:#fff;padding:10px 16px;z-index:2000}.skip-link:focus{top:15px}.site-header{height:72px;position:fixed;z-index:1000;top:0;left:0;width:100%;background:rgba(255,255,255,.97);box-shadow:0 5px 24px rgba(13,20,40,.07);backdrop-filter:blur(16px)}.nav-shell{height:100%;width:min(1240px,calc(100% - 40px));margin:auto;display:flex;align-items:center;justify-content:space-between}.brand img{display:block;width:214px;height:auto}.site-nav{display:flex;align-items:center;gap:30px;font-size:14px;font-weight:600}.site-nav>a{color:#414b5e}.site-nav>a:hover,.site-nav>a.active{color:var(--green)}.nav-actions{display:flex;align-items:center;gap:20px;margin-left:14px}.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:10px;background:linear-gradient(135deg,var(--mint),#009f6b);color:#fff;font-weight:700;padding:13px 21px;box-shadow:0 10px 25px rgba(0,167,111,.22);transition:.2s}.button:hover{transform:translateY(-2px);box-shadow:0 14px 30px rgba(0,167,111,.3)}.button.small{padding:10px 17px}.menu-toggle{display:none;border:0;background:transparent}.menu-toggle span{display:block;width:24px;height:2px;background:var(--ink);margin:5px}.page-hero{padding:150px 0 105px;text-align:center;background:radial-gradient(circle at 50% 10%,rgba(0,216,145,.11),transparent 32%),linear-gradient(#f8fcfa,#fff)}.eyebrow{font-size:10px;font-weight:800;letter-spacing:2px;color:var(--green)}.page-hero h1{font:800 clamp(44px,6vw,72px)/1.05 Manrope,sans-serif;letter-spacing:-3.5px;margin:18px 0}.page-hero h1 em,.pricing-faq h2 em{font-style:normal;color:var(--green)}.page-hero>div>p{max-width:690px;margin:0 auto;color:var(--muted);font-size:18px}.search-box{max-width:650px;margin:36px auto 0;background:#fff;border:1px solid var(--line);border-radius:14px;padding:0 18px;display:flex;align-items:center;box-shadow:0 13px 40px rgba(20,35,55,.09)}.search-box span{font-size:25px;color:var(--green)}.search-box input{width:100%;border:0;outline:0;padding:18px 13px;font-size:16px;background:transparent}.template-browser,.pricing-content{padding:42px 0 110px}.filters{display:flex;gap:8px;flex-wrap:wrap;justify-content:center}.filters button{border:1px solid var(--line);background:#fff;padding:9px 14px;border-radius:100px;color:#5d687b;font-size:12px;cursor:pointer}.filters button:hover,.filters button.active{background:var(--navy);border-color:var(--navy);color:#fff}.results-line{display:flex;justify-content:space-between;margin:42px 0 20px;font-size:13px}.results-line span{color:#8791a2}.templates-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}.template-card{border:1px solid var(--line);border-radius:17px;overflow:hidden;background:#fff;transition:.25s}.template-card:hover{transform:translateY(-5px);box-shadow:var(--shadow)}.template-card[hidden]{display:none}.template-art{height:220px;margin:10px;border-radius:11px;padding:15px;position:relative;overflow:hidden;background:linear-gradient(145deg,#e7f8f1,#d8f1e8)}.template-art:after{content:"";position:absolute;width:160px;height:160px;border-radius:50%;right:-50px;top:-70px;background:rgba(0,216,145,.16)}.art-label{font-size:7px;font-weight:800;letter-spacing:1.2px;padding:5px 8px;background:rgba(255,255,255,.8);border-radius:100px}.art-window{position:absolute;left:28px;right:28px;bottom:24px;background:#fff;padding:16px;border-radius:9px;box-shadow:0 12px 30px rgba(14,42,34,.11)}.art-window small{display:block;color:#7c8797;font-size:8px}.art-window strong{display:block;font:700 24px Manrope;color:#008f60}.art-chart{position:absolute;right:15px;bottom:17px;width:90px;height:35px;display:flex;gap:4px;align-items:end}.art-chart i{flex:1;background:#75d8b6;border-radius:2px 2px 0 0}.art-chart i:nth-child(1){height:30%}.art-chart i:nth-child(2){height:55%}.art-chart i:nth-child(3){height:42%}.art-chart i:nth-child(4){height:75%}.art-chart i:nth-child(5){height:95%}.art-solar{background:linear-gradient(145deg,#e8fbf4,#d7f6e9)}.art-roi,.art-pricing{background:linear-gradient(145deg,#fff4e9,#ffead9)}.art-home,.art-renovation{background:linear-gradient(145deg,#eef2ff,#e7ecf7)}.art-quote,.art-lead,.art-contact{background:linear-gradient(145deg,#eff8ff,#e1f1f9)}.template-info{padding:10px 20px 21px}.template-info>span{font-size:8px;letter-spacing:1px;text-transform:uppercase;color:var(--green);font-weight:800}.template-info h2{font:700 18px Manrope;margin:5px 0}.template-info>p{font-size:12px;color:var(--muted);min-height:40px}.template-info>div{display:flex;align-items:center;justify-content:space-between;margin-top:15px}.preview-link{font-size:12px;font-weight:700}.use-button{padding:9px 12px;font-size:10px;box-shadow:none}.empty-state{text-align:center;padding:70px}.simple-cta{padding:90px 0;text-align:center;color:#fff;background:linear-gradient(135deg,#00a76f,#007a53)}.simple-cta>div>span{display:inline-grid;width:42px;height:42px;place-items:center;background:rgba(255,255,255,.13);border-radius:12px}.simple-cta h2{font:800 42px Manrope;margin:14px 0 4px}.simple-cta p{color:#caf1e4;margin:0 0 24px}.button.light{background:#fff;color:#00865b;box-shadow:none}
.pricing-hero{padding-bottom:155px}.trial-note{display:block;color:#839087;margin-top:10px}.pricing-content{padding-top:0}.pricing-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:-92px;align-items:stretch}.price-card{position:relative;background:#fff;border:1px solid var(--line);border-radius:18px;padding:30px;box-shadow:0 16px 45px rgba(15,48,37,.07)}.price-card.popular{border:2px solid var(--green);transform:translateY(-10px);box-shadow:0 24px 60px rgba(0,167,111,.15)}.popular-label{position:absolute;left:50%;top:-13px;transform:translateX(-50%);background:var(--green);color:#fff;padding:5px 13px;border-radius:100px;font-size:8px;letter-spacing:1px;font-weight:800}.plan-head{position:relative;padding-left:32px}.plan-metals{position:absolute;width:0;height:0;overflow:hidden}.plan-shield{position:absolute;left:0;top:1px;width:24px;height:24px}.plan-shield svg{display:block;width:100%;height:100%;filter:drop-shadow(0 1px 2px rgba(15,48,37,.22))}.plan-head h2{font:700 22px Manrope;margin:0}.plan-head p{font-size:11px;color:var(--muted);min-height:36px}.price{display:flex;align-items:start;margin:24px 0 0}.price>span{font:700 20px Manrope;margin-top:8px}.price strong{font:800 52px/1 Manrope;letter-spacing:-2px}.price small{align-self:end;color:#778294;margin:0 0 6px 6px}.tool-limit{display:block;font-size:12px;margin:14px 0}.plan-button{width:100%;margin:4px 0 22px}.price-card ul{list-style:none;padding:0;border-top:1px solid var(--line);padding-top:17px}.price-card li{font-size:11px;margin:9px 0}.price-card li:before{content:"✓";color:var(--green);font-weight:800;margin-right:9px}.best-for{display:block;color:#8993a3;font-size:9px;margin-top:20px}.comparison-wrap{margin-top:95px}.comparison-heading{text-align:center;margin-bottom:35px}.comparison-heading h2,.pricing-faq h2{font:800 42px Manrope;margin:10px 0}.table-scroll{overflow:auto;border:1px solid var(--line);border-radius:16px}table{border-collapse:collapse;width:100%;min-width:700px;background:#fff}th,td{padding:15px 22px;border-bottom:1px solid #e8eeeb;text-align:center;font-size:14px}th:first-child{text-align:left;width:43%}thead th{font:700 16px Manrope;background:#f8fbfa}thead small{display:block;color:var(--green);font:600 9px DM Sans}.table-group th{background:#eff8f4;color:#39725f;text-transform:uppercase;letter-spacing:1.2px;font-size:11px;font-weight:700}.yes{display:inline-grid;place-items:center;width:24px;height:24px;background:#e6f8f1;color:var(--green);border-radius:50%;font-size:13px}.no{color:#a8b0bc}.fastspring-badge{width:max-content;margin:28px auto 0;display:flex;align-items:center;gap:14px;padding:12px 20px;border:1px solid var(--line);border-radius:11px;background:#fff;box-shadow:0 6px 20px rgba(13,40,30,.06)}.fastspring-badge small{font-size:11px;letter-spacing:.5px;text-transform:uppercase;color:#8b95a3;white-space:nowrap}.fastspring-badge img{display:block;width:150px;height:auto}.secure-lock{color:var(--green);font-size:20px}.fastspring-badge div{display:flex;flex-direction:column;line-height:1}.fastspring-badge small{font-size:6px;letter-spacing:1px;color:#7a8595}.fastspring-badge strong{font:700 15px Manrope}.fastspring-badge>i{font-style:normal;color:var(--green);border-left:1px solid var(--line);padding-left:10px}.policy-note{display:grid;grid-template-columns:70px 1.1fr .9fr;gap:28px;align-items:center;margin-top:90px;background:var(--navy);color:#fff;padding:40px;border-radius:20px}.policy-note>div{width:60px;height:60px;border-radius:17px;background:#123d34;display:grid;place-items:center;color:var(--mint);font-size:24px}.policy-note h2{font:700 28px Manrope;margin:8px 0}.policy-note p{font-size:12px;color:#aeb9ca}.policy-note ul{list-style:none;padding:0;margin:0}.policy-note li{display:flex;flex-direction:column;border-bottom:1px solid #253147;padding:9px}.policy-note li b{font:700 12px Manrope;color:#5de2b5}.policy-note li span{font-size:9px;color:#8d9bb0}.pricing-faq{display:grid;grid-template-columns:.7fr 1.3fr;gap:80px;margin-top:100px}.accordion details{border-bottom:1px solid var(--line);padding:17px 0}.accordion summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;font:700 14px Manrope}.accordion summary::-webkit-details-marker{display:none}.accordion summary span{width:25px;height:25px;display:grid;place-items:center;border-radius:50%;background:#edf3f0}.accordion details[open] summary span{transform:rotate(45deg);background:var(--green);color:#fff}.accordion p{font-size:12px;color:var(--muted);padding-right:30px}
@media(max-width:900px){.site-nav{position:fixed;inset:72px 0 0;background:#fff;padding:30px 24px;display:flex;flex-direction:column;align-items:flex-start;transform:translateX(100%);transition:.25s}.site-nav.open{transform:none}.site-nav>a{font-size:19px}.nav-actions{margin:12px 0;flex-direction:column;align-items:stretch;width:100%}.menu-toggle{display:block}.templates-grid{grid-template-columns:1fr 1fr}.pricing-grid{grid-template-columns:1fr;max-width:570px;margin:-90px auto 0}.price-card.popular{transform:none}.policy-note{grid-template-columns:60px 1fr}.policy-note ul{grid-column:1/-1}.pricing-faq{grid-template-columns:1fr}}
@media(max-width:600px){.shell,.nav-shell{width:calc(100% - 28px)}.brand img{width:180px}.page-hero{padding:125px 0 80px}.page-hero h1{font-size:42px;letter-spacing:-2px}.page-hero>div>p{font-size:15px}.templates-grid{grid-template-columns:1fr}.results-line{margin-top:28px}.filters{justify-content:flex-start;overflow-x:auto;flex-wrap:nowrap;padding-bottom:8px}.filters button{white-space:nowrap}.pricing-hero{padding-bottom:140px}.price-card{padding:25px}.policy-note{grid-template-columns:1fr;padding:28px}.policy-note>div{display:none}.simple-cta h2{font-size:33px}}

/* Support */
.support-hero{padding-bottom:90px;background:radial-gradient(circle at 50% 5%,rgba(0,216,145,.15),transparent 35%),linear-gradient(#f6fcf9,#fff)}.support-hero h1{margin-bottom:14px}.support-search{max-width:720px}.support-search kbd{border:1px solid var(--line);background:#f6f8f7;color:#788396;border-radius:5px;padding:3px 7px;font:600 9px "DM Sans";white-space:nowrap}.quick-links{display:flex;justify-content:center;gap:12px;margin-top:15px;color:#7d8899;font-size:12px}.quick-links a{color:#008f60;font-weight:700}.support-content{padding:85px 0 110px}.support-section-head{display:flex;justify-content:space-between;align-items:end;margin-bottom:30px}.support-section-head h2{font:800 38px/1.15 Manrope;margin:9px 0 0;letter-spacing:-1.6px}.support-section-head>p{max-width:410px;color:var(--muted);font-size:13px}.support-section-head>a{font-size:12px;color:var(--green);font-weight:700}.support-categories{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.support-category{display:grid;grid-template-columns:44px 1fr 20px;gap:13px;align-items:start;border:1px solid var(--line);border-radius:14px;padding:20px;background:#fff;transition:.2s}.support-category:hover{transform:translateY(-3px);border-color:#9edbc7;box-shadow:var(--shadow)}.support-category[hidden],.guide-row[hidden]{display:none}.support-icon{width:42px;height:42px;border-radius:11px;background:var(--soft);color:var(--green);display:grid;place-items:center;font:700 17px Manrope}.support-category h3{font:700 15px Manrope;margin:0}.support-category p{font-size:12.5px;line-height:1.55;color:var(--muted);margin:6px 0 10px}.support-category small{font-size:11px;color:#8b95a3}.support-category>b{color:#a1aab7;margin-top:10px}.popular-guides{margin-top:95px}.guides-list{border:1px solid var(--line);border-radius:17px;overflow:hidden}.guide-row{display:grid;grid-template-columns:44px 1fr 84px 20px;gap:15px;align-items:center;padding:19px 22px;border-bottom:1px solid var(--line);transition:.2s}.guide-row:last-child{border:0}.guide-row:hover{background:#f7fbf9}.guide-number{font:700 10px Manrope;color:#a0a9b6}.guide-row>div>span{font-size:9px;letter-spacing:1px;text-transform:uppercase;color:var(--green);font-weight:800}.guide-row h3{font:700 15px Manrope;margin:3px 0}.guide-row p{font-size:12.5px;line-height:1.5;color:var(--muted);margin:0}.guide-row>small{font-size:11px;color:#8b95a3;white-space:nowrap}.guide-row>b{color:var(--green)}.support-empty{text-align:center;padding:70px 20px}.support-empty>span{font-size:35px;color:var(--green)}.support-empty h2{font:700 23px Manrope}.support-empty p{color:var(--muted)}.support-empty button{border:0;background:var(--soft);color:var(--green);padding:9px 15px;border-radius:7px;font-weight:700;cursor:pointer}.support-path{display:grid;grid-template-columns:.8fr 1.1fr auto;gap:40px;align-items:center;margin-top:90px;background:linear-gradient(135deg,#0d1428,#073b2d);color:#fff;border-radius:21px;padding:42px}.path-copy h2{font:700 28px Manrope;margin:8px 0}.path-copy p{font-size:11px;color:#aab8c9}.support-path ol{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:1fr 1fr;gap:12px}.support-path li{display:flex;align-items:center;gap:10px}.support-path li>span{width:28px;height:28px;display:grid;place-items:center;border-radius:8px;background:#123f34;color:#51dbad;font:700 9px Manrope}.support-path li div{display:flex;flex-direction:column}.support-path li b{font:700 12px Manrope}.support-path li small{font-size:10.5px;color:#93a3b6}.contact-support{padding:90px 0;background:#eff9f5}.contact-support>.shell{display:grid;grid-template-columns:.8fr 1.2fr;gap:90px;align-items:center}.contact-support h2{font:800 38px Manrope;margin:8px 0}.contact-support p{color:var(--muted);font-size:13px}.contact-options{display:grid;grid-template-columns:1fr 1fr;gap:14px}.contact-options>a{display:grid;grid-template-columns:42px 1fr 18px;gap:12px;align-items:center;background:#fff;border:1px solid var(--line);border-radius:13px;padding:18px;transition:.2s}.contact-options>a:hover{transform:translateY(-3px);box-shadow:var(--shadow)}.contact-options>a>span{width:40px;height:40px;display:grid;place-items:center;background:var(--soft);color:var(--green);border-radius:10px;font-weight:800}.contact-options div{display:flex;flex-direction:column}.contact-options b{font:700 13px Manrope}.contact-options small{font-size:11px;color:#8792a2}.contact-options i{font-style:normal;color:var(--green)}
@media(max-width:900px){.support-categories{grid-template-columns:1fr 1fr}.support-path{grid-template-columns:1fr}.contact-support>.shell{grid-template-columns:1fr;gap:30px}}
@media(max-width:600px){.quick-links{flex-wrap:wrap}.support-section-head{display:block}.support-categories{grid-template-columns:1fr}.guide-row{grid-template-columns:30px 1fr 16px}.guide-row>small{display:none}.support-path{padding:28px}.support-path ol{grid-template-columns:1fr}.contact-options{grid-template-columns:1fr}.support-content{padding-top:65px}}

/* ===========================================================================
   The template library
   ---------------------------------------------------------------------------
   A sidebar of groupings and categories, and a grid of cards whose pictures
   travel on hover. A template is a long page and a card is a small box, so the
   picture shows its top at rest and walks down to its end under the pointer.
   ========================================================================= */

.tpl-layout {
    display: grid;
    grid-template-columns: 232px minmax(0, 1fr);
    gap: 40px;
    /*
     * Stretched, not start - the same reason as .help-layout. A sticky element
     * travels only inside its own parent, and "start" shrinks the sidebar
     * column to the height of the menu, leaving it nowhere to stick.
     */
    align-items: stretch;
}

/* --- the sidebar ------------------------------------------------------- */

.tpl-side { position: sticky; top: 96px; }

.tpl-side__group + .tpl-side__group {
    margin-top: 28px;
    padding-top: 22px;
    border-top: 1px solid #e8ecf3;
}

.tpl-side__group h2 {
    margin: 0 0 10px;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: #8695ab;
}

.tpl-side ul { list-style: none; margin: 0; padding: 0; }

.tpl-side li + li { margin-top: 2px; }

.tpl-side a {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 8px 10px;
    border-radius: 8px;
    color: #3d4a5c;
    font-size: 14px;
    text-decoration: none;
}

.tpl-side a span {
    font-size: 11.5px;
    color: #8695ab;
    font-variant-numeric: tabular-nums;
}

.tpl-side a:hover { background: #f3f6fa; color: #16a34a; }

.tpl-side a.is-active {
    background: #e9f8ef;
    color: #15803d;
    font-weight: 600;
}

.tpl-side a.is-active span { color: inherit; }

/* --- the grid ---------------------------------------------------------- */

.tpl-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(288px, 1fr));
    gap: 26px;
}

.tpl-card {
    display: flex;
    flex-direction: column;
    background: #fff;
    border: 1px solid #e3e8ef;
    border-radius: 14px;
    overflow: hidden;
    transition: box-shadow .18s ease, transform .18s ease;
}

.tpl-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 12px 30px rgba(16, 24, 40, .1);
}

/*
 * The window the picture travels inside. Fixed height, hidden overflow: the
 * image is taller than this and slides up on hover to show its foot.
 */
.tpl-card__shot {
    position: relative;
    display: block;
    height: 210px;
    overflow: hidden;
    background: #f3f6fa;
    border-bottom: 1px solid #e3e8ef;
}

.tpl-card__shot img {
    display: block;
    width: 100%;
    height: auto;
    /* Slow enough to read on the way past, and only ever moved by script -
       a CSS-only version cannot know how far the picture actually overflows. */
    transition: transform 2.4s ease-in-out;
}

/* No screenshot yet: the initial, rather than a broken image. */
.tpl-card__noshot {
    display: grid;
    place-items: center;
    height: 100%;
    font-size: 46px;
    font-weight: 700;
    color: #c3cddb;
}

.tpl-card__peek {
    position: absolute;
    inset: 0;
    display: grid;
    place-items: center;
    background: rgba(16, 24, 40, .38);
    opacity: 0;
    transition: opacity .18s ease;
}

.tpl-card__shot:hover .tpl-card__peek,
.tpl-card__shot:focus-within .tpl-card__peek { opacity: 1; }

.tpl-card__body { padding: 16px 18px 18px; display: flex; flex-direction: column; gap: 8px; flex: 1; }

.tpl-card__cat {
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .06em;
    text-transform: uppercase;
    color: #16a34a;
}

.tpl-card__body h3 { margin: 0; font-size: 16.5px; line-height: 1.35; }
.tpl-card__body h3 a { color: #16202e; text-decoration: none; }
.tpl-card__body h3 a:hover { color: #16a34a; }

.tpl-card__body p { margin: 0; font-size: 13.5px; line-height: 1.55; color: #5c6b82; }

.tpl-card__actions {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-top: auto;
    padding-top: 6px;
}

/* --- the preview dialog ------------------------------------------------ */

body.has-modal { overflow: hidden; }

/*
 * Scrolls itself rather than clipping.
 *
 * place-items:center on a fixed box centres a child that FITS and clips the
 * top off one that does not - which is why the dialog appeared jammed against
 * the header with its own header half missing. Auto margins on the box centre
 * it when there is room and let it scroll when there is not.
 */
.tpl-modal {
    position: fixed;
    inset: 0;
    z-index: 200;
    overflow: auto;
    /*
     * The top padding clears the site header, which is sticky and sits above
     * this. 40px was measured against the viewport rather than against the
     * header, so the dialog opened underneath it and looked jammed to the top
     * of the screen with its own corner missing.
     */
    padding: 108px 24px 48px;
}

.tpl-modal[hidden] { display: none; }

.tpl-modal__back { position: fixed; inset: 0; background: rgba(16, 24, 40, .55); }

.tpl-modal__box {
    position: relative;
    width: min(1120px, 100%);
    margin: 0 auto;
    background: #fff;
    border-radius: 16px;
    box-shadow: 0 24px 60px rgba(16, 24, 40, .3);
}

.tpl-modal__close {
    position: absolute;
    top: 14px;
    right: 14px;
    z-index: 2;
    width: 34px; height: 34px;
    display: grid; place-items: center;
    border: 1px solid #e3e8ef;
    border-radius: 9px;
    background: #fff;
    font-size: 20px;
    line-height: 1;
    color: #5c6b82;
    cursor: pointer;
}

.tpl-modal__close:hover { border-color: #c3cddb; color: #16202e; }

/* The template on the left, what it is on the right. */
.tpl-modal__grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 340px;
    gap: 0;
}

.tpl-modal__preview {
    padding: 22px;
    background: #eef2f7;
    border-radius: 16px 0 0 16px;
}

/*
 * The window the scaled frame sits in.
 *
 * --tpl-zoom is the only number to change. The iframe is made bigger than this
 * box by exactly 1/zoom and then scaled back down, so the PAGE INSIDE it lays
 * out at the larger width and more of the form is visible at once. Sizing the
 * iframe to the box and scaling would just shrink a narrow page.
 */
.tpl-modal__frame {
    --tpl-zoom: .72;

    position: relative;
    height: min(64vh, 620px);
    /*
     * Down only. The preview is scaled to fit the width exactly, so anything
     * sideways would be a rounding error made scrollable - and a box with two
     * scrollbars reads as broken however it got there.
     */
    overflow-x: hidden;
    overflow-y: auto;
    background: #fff;
    border: 1px solid #dbe3ec;
    border-radius: 10px;
    box-shadow: 0 6px 18px rgba(16, 24, 40, .06);
    -webkit-overflow-scrolling: touch;
}

/*
 * The height this occupies is the height the preview DRAWS at - script sets it
 * from the frame's own reported height times the zoom. Without it the wrapper
 * would scroll the frame's un-scaled layout box and run on into empty space
 * for a third of its length.
 */
.tpl-modal__scaler {
    position: relative;
    width: 100%;
    /* Until the frame reports in, one screenful - never zero, or the preview
       is invisible for as long as the load takes. */
    height: 100%;
}

.tpl-modal__frame iframe {
    display: block;
    /* Wider than the window by exactly 1/zoom, so the PAGE INSIDE lays out at
       the larger width and more of the form is visible once it is scaled. */
    width: calc(100% / var(--tpl-zoom));
    height: 100%;
    border: 0;
    transform: scale(var(--tpl-zoom));
    transform-origin: 0 0;
}

.tpl-modal__side {
    display: flex;
    flex-direction: column;
    gap: 14px;
    padding: 42px 28px 28px;
}

.tpl-modal__crumbs {
    margin: 0;
    font-size: 12.5px;
    font-weight: 600;
    color: #16a34a;
}

.tpl-modal__crumbs[hidden] { display: none; }

.tpl-modal__side h2 { margin: 0; font-size: 25px; line-height: 1.25; }

.tpl-modal__summary { margin: 0; font-size: 14.5px; line-height: 1.6; color: #5c6b82; }
.tpl-modal__summary[hidden] { display: none; }

.tpl-modal__use { justify-content: center; text-align: center; }

.tpl-modal__details {
    font-size: 13.5px;
    color: #5c6b82;
    text-align: center;
}

.tpl-modal__details[hidden] { display: none; }

.tpl-modal__facts {
    list-style: none;
    margin: 6px 0 0;
    padding: 16px 0 0;
    border-top: 1px solid #e8ecf3;
    display: grid;
    gap: 9px;
}

.tpl-modal__facts li {
    position: relative;
    padding-left: 24px;
    font-size: 13.5px;
    color: #5c6b82;
}

.tpl-modal__facts li::before {
    content: "✓";
    position: absolute;
    left: 0;
    color: #16a34a;
    font-weight: 700;
}

@media (max-width: 860px) {
    .tpl-modal { padding: 84px 14px 28px; }

    .tpl-modal__grid { grid-template-columns: minmax(0, 1fr); }

    .tpl-modal__preview { border-radius: 16px 16px 0 0; padding: 16px; }

    /* Less to scale down on a narrow screen - the form is already close to
       the width it was designed for. */
    .tpl-modal__frame { --tpl-zoom: .85; height: 52vh; }

    .tpl-modal__side { padding: 22px 20px 24px; }
}

@media (max-width: 900px) {
    .tpl-layout { grid-template-columns: minmax(0, 1fr); gap: 24px; }
    .tpl-side { position: static; }
    .tpl-side__group ul { display: flex; flex-wrap: wrap; gap: 6px; }
    .tpl-side li + li { margin-top: 0; }
    .tpl-side a { border: 1px solid #e3e8ef; }
}

/* --- one template on a page of its own ---------------------------------- */

.tpl-crumbs { border-bottom: 1px solid #e8ecf3; background: #fff; }

.tpl-crumbs .shell {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 12px 0;
    font-size: 13px;
    color: #8695ab;
}

.tpl-crumbs a { color: #5c6b82; text-decoration: none; }
.tpl-crumbs a:hover { color: #16a34a; }

.tpl-single { padding: 44px 0 20px; }

/* ---------------------------------------------------------------------------
 * A template's own page
 *
 * The copy across the top, the working calculator below it laid out as a
 * browser window. It used to be a narrow column beside the text, which is the
 * one shape a calculator is never used in - a two-column form had to stack, so
 * the preview showed a layout no visitor would ever see.
 * ------------------------------------------------------------------------ */
.tpl-single__head {
    display: grid;
    grid-template-columns: minmax(0, 3fr) minmax(0, 2fr);
    gap: 48px;
    align-items: start;
    margin-bottom: 34px;
}

.tpl-single__copy h1 { margin: 0 0 14px; font-size: 34px; line-height: 1.2; }

.tpl-single__lede { margin: 0 0 16px; font-size: 17px; line-height: 1.6; color: #3d4a5c; }
/*
 * The description is HTML written in the admin portal - paragraphs, a heading
 * and a list. It used to be printed escaped, so the only thing this rule had
 * to style was a wall of visible tags; now that it renders, the tags inside it
 * need spacing of their own or the whole thing runs together.
 */
.tpl-single__body { font-size: 16px; line-height: 1.65; color: #3d4a5c; }

.tpl-single__body > :first-child { margin-top: 0; }
.tpl-single__body > :last-child { margin-bottom: 0; }

.tpl-single__body p { margin: 0 0 16px; }

/*
 * A sub-heading inside the description. It has to be bigger than the prose it
 * introduces, not the same size in a heavier weight - at 16px against 15px it
 * read as an emphasised sentence, and now that the prose is 16px too it would
 * not read as a heading at all.
 */
.tpl-single__body h2,
.tpl-single__body h3 {
    margin: 26px 0 10px;
    font-size: 18px;
    line-height: 1.35;
    font-weight: 640;
    /* Darker than the prose around it, so a heading reads as one. */
    color: var(--ink, #101426);
}

.tpl-single__body h4 {
    margin: 22px 0 8px;
    font-size: 16px;
    font-weight: 640;
    color: var(--ink, #101426);
}

.tpl-single__body ul,
.tpl-single__body ol { margin: 0 0 16px; padding-left: 22px; }

.tpl-single__body li { margin-bottom: 7px; }

.tpl-single__body a { color: var(--brand, #00a862); }
.tpl-single__body strong { color: var(--ink, #101426); font-weight: 640; }

.tpl-single__actions {
    display: flex;
    align-items: center;
    gap: 18px;
    margin: 26px 0 26px;
    flex-wrap: wrap;
}

.tpl-single__facts { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }

.tpl-single__facts li {
    position: relative;
    padding-left: 26px;
    font-size: 14.5px;
    color: #5c6b82;
}

.tpl-single__facts li::before {
    content: "\2713";
    position: absolute;
    left: 0;
    color: #16a34a;
    font-weight: 700;
}

/* ---------------------------------------------------------------------------
 * The preview, as a browser window
 * ------------------------------------------------------------------------ */
.tpl-browser {
    border: 1px solid #dfe5ee;
    border-radius: 14px;
    overflow: hidden;
    background: #fff;
    box-shadow: 0 18px 44px rgba(16, 24, 40, .10);
}

.tpl-browser__bar {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 10px 14px;
    background: linear-gradient(#fbfcfe, #f4f7fa);
    border-bottom: 1px solid #e6ebf2;
}

/* The three lights. Decorative, and told so - they say "this is a browser"
   and nothing a screen reader needs to hear. */
.tpl-browser__dots { display: flex; gap: 6px; flex: 0 0 auto; }

.tpl-browser__dots i {
    width: 11px;
    height: 11px;
    border-radius: 50%;
    background: #dfe3ea;
}

.tpl-browser__dots i:nth-child(1) { background: #ff5f57; }
.tpl-browser__dots i:nth-child(2) { background: #febc2e; }
.tpl-browser__dots i:nth-child(3) { background: #28c840; }

.tpl-browser__address {
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
    align-items: center;
    gap: 7px;
    padding: 5px 12px;
    max-width: 420px;
    margin: 0 auto;
    font-size: 12.5px;
    color: #7b899c;
    background: #fff;
    border: 1px solid #e6ebf2;
    border-radius: 999px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.tpl-browser__lock { font-size: 10px; opacity: .6; }

.tpl-browser__devices { display: flex; gap: 4px; flex: 0 0 auto; }

.tpl-browser__device {
    padding: 5px 11px;
    font: inherit;
    font-size: 12.5px;
    font-weight: 600;
    color: #5c6b82;
    background: transparent;
    border: 1px solid transparent;
    border-radius: 8px;
    cursor: pointer;
    transition: background-color .12s ease, color .12s ease, border-color .12s ease;
}

.tpl-browser__device:hover { color: #1a2231; background: #eef2f7; }

.tpl-browser__device.is-active {
    color: #0b6b4a;
    background: #e7f7f0;
    border-color: #bfe8d7;
}

/*
 * The page inside. A tinted surround so a narrowed viewport reads as a device
 * on a desk rather than as a form that failed to fill its box.
 */
.tpl-browser__stage {
    padding: 0;
    background: #eef1f6;
    transition: padding .18s ease;
}

.tpl-browser[data-showing="tablet"] .tpl-browser__stage,
.tpl-browser[data-showing="mobile"] .tpl-browser__stage { padding: 22px 16px; }

.tpl-browser__viewport {
    margin: 0 auto;
    background: #fff;
    transition: max-width .18s ease;
}

.tpl-browser[data-showing="tablet"] .tpl-browser__viewport,
.tpl-browser[data-showing="mobile"] .tpl-browser__viewport {
    border-radius: 10px;
    overflow: hidden;
    box-shadow: 0 6px 20px rgba(16, 24, 40, .12);
}

/*
 * A starting height only. The calculator inside measures itself and reports
 * its height, and template-preview.js writes that onto this element - so this
 * is what the frame is before the first message arrives, and what it stays if
 * the script never runs.
 */
.tpl-browser__viewport iframe {
    display: block;
    width: 100%;
    height: 940px;
    border: 0;
}

/* Only once it has been measured. The first reading usually differs from the
   starting height above, and animating that reads as the page settling badly
   rather than as the frame following its content. */
.tpl-browser__viewport iframe[data-sized] { transition: height .18s ease; }

/* ---------------------------------------------------------------------------
   What the template is for
   ---------------------------------------------------------------------------
   Under the preview, because it is worth reading once the thing it describes
   has been seen. Held to a reading measure rather than the full width of the
   browser mock above it - several hundred words set that wide are a wall.
   --------------------------------------------------------------------------- */

.tpl-about {
    /* Left edge shared with the preview above it, not centred under it: two
       blocks on one page that start in different places read as two pages.
       The measure is still capped, because several hundred words set to the
       full width of the browser mock are a wall. */
    max-width: 760px;
    margin: 34px 0 0;
}

.tpl-about__title {
    margin: 0 0 16px;
    font-size: 23px;
    line-height: 1.25;
    letter-spacing: -.01em;
    color: var(--ink, #101426);
}

.tpl-browser__note {
    margin: 0;
    padding: 10px 16px;
    font-size: 12.5px;
    color: #8695ab;
    background: #fbfcfe;
    border-top: 1px solid #eef1f6;
}

@media (max-width: 900px) {
    .tpl-single__head { grid-template-columns: minmax(0, 1fr); gap: 26px; }
    .tpl-single__copy h1 { font-size: 27px; }

    /* The address is the first thing worth losing: the buttons are the point
       of the bar and the lights are what make it read as a browser. */
    .tpl-browser__address { display: none; }
    .tpl-browser__viewport iframe { height: 820px; }

}

@media (max-width: 560px) {
    .tpl-browser__device { padding: 5px 8px; font-size: 12px; }
}

/* --- searching the library ---------------------------------------------- */

/*
 * One control made of three: a box, a grouping, and a button. Kept as a real
 * form so a search is an address and works with JavaScript off - the joins
 * between the parts are drawn rather than being three separate fields.
 */
.tpl-search {
    display: flex;
    align-items: stretch;
    gap: 0;
    width: min(760px, 100%);
    margin: 28px auto 0;
    background: #fff;
    border: 1px solid #dbe3ec;
    border-radius: 999px;
    box-shadow: 0 10px 30px rgba(16, 24, 40, .07);
    /*
     * Deliberately NOT overflow:hidden.
     *
     * It was, to clip the square-cornered Search button into the pill - and it
     * clipped the grouping dropdown as well, which opens BELOW the pill and so
     * was cut off entirely. The trigger worked, the caret turned, and nothing
     * appeared.
     *
     * The button rounds its own right-hand end instead, which is all the clip
     * was ever doing.
     */
}

.tpl-search__icon {
    display: grid;
    place-items: center;
    padding-left: 22px;
    font-size: 19px;
    color: #8695ab;
}

.tpl-search input[type="search"] {
    flex: 1;
    min-width: 0;
    border: 0;
    outline: none;
    padding: 17px 14px;
    font-size: 15.5px;
    color: #16202e;
    background: transparent;
    /* The browser's own clear button sits oddly in a pill and duplicates the
       "clear" link beside the result count. */
    -webkit-appearance: none;
    appearance: none;
}

.tpl-search input::placeholder { color: #8695ab; }

.tpl-search select {
    border: 0;
    border-left: 1px solid #e8ecf3;
    outline: none;
    padding: 0 14px;
    font-size: 14px;
    color: #3d4a5c;
    background: transparent;
    cursor: pointer;
    max-width: 190px;
}

.tpl-search .button {
    /* The pill's right-hand end. Square on the left, where it meets the
       grouping, round on the right, where the pill ends. */
    border-radius: 0 999px 999px 0;
    padding: 0 26px;
    white-space: nowrap;
}

.tpl-search:focus-within {
    border-color: #16a34a;
    box-shadow: 0 0 0 4px rgba(22, 163, 74, .12), 0 10px 30px rgba(16, 24, 40, .07);
}

.results-line a { color: #16a34a; }

@media (max-width: 720px) {
    /* A pill cannot hold three controls on a phone, so it becomes a stack -
       and the button goes full width, where a thumb can reach it. */
    .tpl-search {
        flex-wrap: wrap;
        border-radius: 16px;
        padding: 6px;
        gap: 6px;
    }

    .tpl-search__icon { display: none; }

    .tpl-search input[type="search"] { flex: 1 1 100%; padding: 13px 14px; }

    .tpl-search select {
        flex: 1 1 auto;
        border-left: 0;
        border: 1px solid #e8ecf3;
        border-radius: 10px;
        padding: 11px 12px;
        max-width: none;
    }

    .tpl-search .button { flex: 1 1 auto; border-radius: 10px; padding: 12px 20px; }
}

/* --- the grouping, as a dropdown that belongs to the box ----------------- */

/*
 * A native <select> cannot be styled past its border - the list it opens is
 * drawn by the operating system, in the operating system's font, at the
 * operating system's size. Against a rounded pill it reads as a control
 * borrowed from another decade.
 *
 * So the select is still there, still submitted and still what a screen reader
 * is handed, and script draws this over it. Nothing here exists until that
 * script runs, which is why the select is hidden by a class script adds rather
 * than by a rule sitting here waiting.
 */
.tpl-search__native {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
    border: 0;
}

.tpl-pick { position: relative; display: flex; }

.tpl-pick__trigger {
    display: flex;
    align-items: center;
    gap: 10px;
    height: 100%;
    padding: 0 18px;
    border: 0;
    border-left: 1px solid #e8ecf3;
    background: transparent;
    font: inherit;
    font-size: 14px;
    color: #3d4a5c;
    white-space: nowrap;
    cursor: pointer;
}

.tpl-pick__trigger:hover { color: #16202e; }

/* The caret, drawn rather than typed - a glyph would inherit the font and
   sit differently on every platform, which is the thing being fixed. */
.tpl-pick__trigger i {
    width: 8px;
    height: 8px;
    border-right: 2px solid currentColor;
    border-bottom: 2px solid currentColor;
    transform: translateY(-2px) rotate(45deg);
    transition: transform .15s ease;
}

.tpl-pick__trigger[aria-expanded="true"] i { transform: translateY(1px) rotate(-135deg); }

.tpl-pick__panel {
    position: absolute;
    top: calc(100% + 10px);
    right: 0;
    z-index: 30;
    min-width: 220px;
    padding: 6px;
    background: #fff;
    border: 1px solid #e3e8ef;
    border-radius: 14px;
    box-shadow: 0 18px 40px rgba(16, 24, 40, .14);
}

.tpl-pick__panel[hidden] { display: none; }

.tpl-pick__item {
    display: block;
    width: 100%;
    padding: 10px 12px;
    border: 0;
    border-radius: 9px;
    background: none;
    font: inherit;
    font-size: 14px;
    color: #3d4a5c;
    text-align: left;
    cursor: pointer;
}

.tpl-pick__item:hover { background: #f3f6fa; color: #16202e; }

.tpl-pick__item[aria-selected="true"] {
    background: #e9f8ef;
    color: #15803d;
    font-weight: 600;
}

/* While an answer is on its way. Deliberately faint: the grid underneath is
   still the last real answer, not a placeholder. */
.tpl-search.is-busy .tpl-search__icon { opacity: .35; }

@media (max-width: 720px) {
    .tpl-pick { flex: 1 1 auto; }

    .tpl-pick__trigger {
        justify-content: space-between;
        width: 100%;
        border: 1px solid #e8ecf3;
        border-radius: 10px;
        padding: 11px 14px;
    }

    .tpl-pick__panel { left: 0; right: 0; min-width: 0; }
}

/* ===========================================================================
   The documentation
   ---------------------------------------------------------------------------
   Everything on one page with an anchor per section. For docs this size that
   beats forty separate pages: a reader can search the lot with their own
   browser, and a search engine sees one substantial document rather than forty
   thin ones competing with each other.
   ========================================================================= */

.help-hero { padding-bottom: 70px; }

.help-body { padding: 0 0 110px; }

.help-layout {
    display: grid;
    grid-template-columns: 268px minmax(0, 1fr);
    gap: 56px;
    /*
     * NOT align-items: start.
     *
     * A sticky element can only travel inside its own parent. With "start" the
     * <aside> shrinks to the height of the menu itself, so the menu had no
     * room to stick across and scrolled away with the page the moment the
     * aside's bottom passed - which looked exactly like sticky not working.
     *
     * Stretched, the aside is as tall as the documentation beside it, and the
     * menu stays put for the whole of it.
     */
    align-items: stretch;
}

/* --- the contents ------------------------------------------------------- */

/*
 * Stuck in place while the documentation scrolls past it.
 *
 * It had a max-height and its own scrollbar, which turned the contents into a
 * second scrolling region beside the first - two scrollbars on one screen, and
 * the menu moving under the pointer when the intention was for it to stay put.
 *
 * With every topic collapsed the eleven rows fit on any screen worth
 * supporting, so there is nothing to scroll. Opening several at once can make
 * it taller than the viewport; overflow is visible rather than auto so the
 * page takes that scroll instead of the menu growing a bar of its own.
 */
/*
 * The aside is the full height of the row; this is the part that stays put.
 * max-height keeps a very long open menu from running past the bottom of the
 * screen, and only then does it get a scrollbar of its own.
 */
.help-side__inner {
    position: sticky;
    top: 96px;
    max-height: calc(100vh - 120px);
    overflow-y: auto;
    overscroll-behavior: contain;
    padding: 14px;
    border: 1px solid var(--line);
    border-radius: 16px;
    background: #fff;
}

.help-side h2 {
    margin: 0 0 10px;
    font-size: 11px;
    font-weight: 800;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: #8695ab;
}

.help-side nav { display: grid; gap: 2px; }

/*
 * A topic is a <details> now, so the grid belongs on its <summary> - see
 * further down. It was left here from when a topic was a single link, which
 * made the details itself a three-column grid and dealt its summary, its
 * overview link and every section into those columns. That is what put the
 * section count in the middle of "Getting started".
 */

/* Which topic the page is parked on. :target follows the anchor, so this needs
   no script at all. */
/* Topic headings are green already - see above. */

/* --- a topic ------------------------------------------------------------ */

.help-topic { padding-top: 26px; }

/* The heading clears the fixed site header when jumped to, instead of hiding
   underneath it - which is what makes every anchor on this page usable. */
.help-topic,
.help-section { scroll-margin-top: 96px; }

.help-topic__head {
    display: grid;
    grid-template-columns: 46px minmax(0, 1fr);
    gap: 16px;
    align-items: start;
    padding-bottom: 18px;
    margin-bottom: 8px;
    border-bottom: 2px solid var(--line);
}

.help-topic__icon {
    width: 44px;
    height: 44px;
    display: grid;
    place-items: center;
    border-radius: 12px;
    background: var(--soft);
    color: var(--green);
    font: 700 18px Manrope, sans-serif;
}

.help-topic__head h2 {
    font: 800 27px Manrope, sans-serif;
    margin: 0 0 4px;
    letter-spacing: -.6px;
    /* Green, so a topic reads as the start of something rather than as one
       more heading in a very long page. */
    color: var(--green);
}
.help-topic__head p { margin: 0; font-size: 13.5px; color: var(--muted); }

/* --- a section ---------------------------------------------------------- */

.help-section { padding: 26px 0; border-bottom: 1px solid #eef2f0; }
.help-section:last-child { border-bottom: 0; }

.help-section h3 {
    font: 700 19px Manrope, sans-serif;
    margin: 0 0 10px;
    scroll-margin-top: 96px;
}

/* The link to a section's own address. Shown on hover, because it is for
   copying rather than for reading. */
.help-anchor {
    margin-left: 8px;
    color: #c3cddb;
    font-weight: 400;
    opacity: 0;
    transition: opacity .15s ease;
}

.help-section:hover .help-anchor,
.help-anchor:focus { opacity: 1; }
.help-anchor:hover { color: var(--green); }

/* A section arrived at by its anchor, marked so the reader can see they got
   what they clicked. */
.help-section:target {
    background: #f4fbf7;
    border-radius: 12px;
    padding-left: 16px;
    padding-right: 16px;
    margin-left: -16px;
    margin-right: -16px;
}

/* --- the prose ---------------------------------------------------------- */

.help-prose { font-size: 14.5px; line-height: 1.72; color: #3d4a5c; }
.help-prose p { margin: 0 0 .9em; }
.help-prose ul, .help-prose ol { margin: 0 0 .9em; padding-left: 1.4em; }
.help-prose li { margin-bottom: .35em; }
.help-prose strong { color: #16202e; }
.help-prose a { color: var(--green); font-weight: 600; }

.help-prose code {
    background: #f1f5f4;
    border: 1px solid #e3eae7;
    border-radius: 5px;
    padding: 1px 6px;
    font-family: ui-monospace, Menlo, Consolas, monospace;
    font-size: .89em;
}

.help-prose pre {
    background: #0d1428;
    color: #d7e6df;
    border-radius: 10px;
    padding: 14px 16px;
    overflow: auto;
    font-size: 12.5px;
}

.help-prose pre code { background: none; border: 0; color: inherit; padding: 0; }

.help-prose table { width: 100%; min-width: 0; margin: 0 0 1em; }
.help-prose th, .help-prose td { text-align: left; font-size: 13px; }

.help-foot {
    margin-top: 40px;
    padding: 22px;
    border-radius: 14px;
    background: var(--soft);
    text-align: center;
    font-size: 14px;
}

.help-foot p { margin: 0; }
.help-foot a { color: var(--green); font-weight: 700; }

@media (max-width: 900px) {
    .help-layout { grid-template-columns: minmax(0, 1fr); gap: 26px; }
    .help-side__inner { position: static; max-height: none; }
    .help-side nav { grid-template-columns: 1fr 1fr; display: grid; }
    .help-topic__head h2 { font-size: 23px; }
}

/* --- the documentation's search, sidebar and code blocks ---------------- */

.help-search { margin-top: 26px; }

/* The results list, under the box in the hero. */
.help-results {
    width: min(760px, 100%);
    margin: 14px auto 0;
    padding: 14px;
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 14px;
    box-shadow: 0 14px 36px rgba(16, 24, 40, .1);
    text-align: left;
}

.help-results[hidden] { display: none; }

/*
 * The same panel on the support hero, where it hangs OVER the page instead of
 * pushing it down - the quick-links and the first row of cards sit directly
 * under the box, and shoving them half a screen down on every keystroke made
 * the page jump about while somebody was still typing.
 */
.support-searchwrap { position: relative; width: min(720px, 100%); margin: 0 auto; }

.support-searchwrap .help-results {
    position: absolute;
    top: calc(100% + 8px);
    left: 0;
    right: 0;
    width: auto;
    margin: 0;
    z-index: 30;
    max-height: min(60vh, 460px);
    overflow-y: auto;
}

.support-search__clear {
    border: 0;
    background: none;
    color: #98a3b2;
    font-size: 19px;
    line-height: 1;
    padding: 0 4px;
    cursor: pointer;
}

.support-search__clear:hover { color: #16202e; }
.support-search__clear[hidden] { display: none; }

.help-results__count,
.help-results__none {
    margin: 0 0 8px;
    font-size: 12px;
    color: #8695ab;
}

.help-results__none { margin: 0; }

.help-results__list { display: grid; gap: 2px; }

.help-results__list a {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    padding: 9px 11px;
    border-radius: 9px;
}

.help-results__list a:hover { background: #f3f6fa; }

.help-results__main { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.help-results__main strong { font-size: 14px; font-weight: 600; color: #16202e; }

/* The words either side of the match, for a result whose title does not
   already explain itself. */
.help-results__main em {
    font-style: normal;
    font-size: 11.5px;
    line-height: 1.45;
    color: #8695ab;
    overflow: hidden;
    display: -webkit-box;
    -webkit-line-clamp: 1;
    -webkit-box-orient: vertical;
}

.help-results__topic {
    flex: 0 0 auto;
    font-size: 11px;
    color: #8695ab;
    white-space: nowrap;
    padding-top: 2px;
}

/* A formula function, which is a different kind of answer from a section. */
.help-results__topic.is-fn { color: var(--green); font-weight: 600; }

/* Where a search sent you, marked briefly so the jump is visible. */
.is-found {
    animation: es-found 1.8s ease;
    border-radius: 10px;
}

@keyframes es-found {
    0%, 55% { background: #e9f8ef; }
    100%    { background: transparent; }
}

/* --- the contents, which expands ---------------------------------------- */

/* Thin, and only drawn when the menu is actually taller than the screen. */
.help-side__inner::-webkit-scrollbar { width: 8px; }
.help-side__inner::-webkit-scrollbar-thumb {
    background: #dde5ec;
    border-radius: 99px;
}
.help-side__inner::-webkit-scrollbar-track { background: transparent; }

.help-side__topic { border-bottom: 1px solid #f0f3f6; }
.help-side__topic:last-child { border-bottom: 0; }

.help-side__topic > summary {
    display: grid;
    grid-template-columns: 18px minmax(0, 1fr) auto;
    align-items: center;
    gap: 9px;
    padding: 8px 7px;
    border-radius: 9px;
    font-size: 13px;
    font-weight: 600;
    line-height: 1.35;
    color: #16202e;
    cursor: pointer;
    list-style: none;
}

.help-side__topic > summary::-webkit-details-marker { display: none; }
.help-side__topic > summary:hover { background: #f3f6fa; }

.help-side__icon { color: var(--green); font-size: 12px; text-align: center; }
.help-side__topic b { font-size: 11px; font-weight: 600; color: #a1aab7; }

.help-side__topic[open] > summary { color: var(--green); }

.help-side__all,
.help-side__link {
    display: block;
    padding: 5px 8px 5px 27px;
    border-radius: 8px;
    font-size: 12.8px;
    line-height: 1.45;
    color: #5c6b82;
}

.help-side__all { font-style: italic; color: #8695ab; }

.help-side__all:hover,
.help-side__link:hover { background: #f3f6fa; color: var(--green); }

/* --- code blocks -------------------------------------------------------- */

.es-doc-codewrap { position: relative; }

.es-doc-code {
    background: #0d1428;
    color: #d7e6df;
    border-radius: 10px;
    padding: 15px 16px;
    margin: 0 0 1em;
    overflow: auto;
    font-family: ui-monospace, Menlo, Consolas, monospace;
    font-size: 12.5px;
    line-height: 1.62;
    white-space: pre;
}

.es-doc-copy {
    position: absolute;
    top: 9px;
    right: 9px;
    padding: 5px 10px;
    border: 1px solid rgba(255, 255, 255, .18);
    border-radius: 7px;
    background: rgba(255, 255, 255, .08);
    color: #b9cdc4;
    font: 600 11px "DM Sans", sans-serif;
    cursor: pointer;
    opacity: 0;
    transition: opacity .15s ease;
}

.es-doc-codewrap:hover .es-doc-copy,
.es-doc-copy:focus { opacity: 1; }
.es-doc-copy:hover { background: rgba(255, 255, 255, .16); color: #fff; }

/* --- the language bar --------------------------------------------------- */

.es-doc-tabs { margin: 0 0 16px; }

.es-doc-tabs__bar {
    display: flex;
    gap: 4px;
    padding: 4px;
    border: 1px solid var(--line);
    border-bottom: 0;
    border-radius: 10px 10px 0 0;
    background: #f6f8fa;
}

.es-doc-tabs__btn {
    padding: 7px 14px;
    border: 0;
    border-radius: 7px;
    background: transparent;
    font: 600 12px "DM Sans", sans-serif;
    color: #5c6b82;
    cursor: pointer;
}

.es-doc-tabs__btn:hover { color: #16202e; }

.es-doc-tabs__btn.is-active {
    background: #fff;
    color: var(--green);
    box-shadow: 0 1px 3px rgba(16, 24, 40, .08);
}

/* The bar and the block it belongs to read as one thing. */
.es-doc-tabs .es-doc-code { border-radius: 0 0 10px 10px; margin: 0; }
.es-doc-tab[hidden] { display: none; }

/* --- the function reference --------------------------------------------- */

.es-doc-fns { display: grid; gap: 14px; margin-bottom: 22px; }

.es-doc-fn {
    padding: 16px 18px;
    border: 1px solid var(--line);
    border-radius: 12px;
    background: #fff;
}

.es-doc-fn__sig {
    display: inline-block;
    margin-bottom: 6px;
    padding: 3px 9px;
    border-radius: 6px;
    background: var(--soft);
    color: #0c7a53;
    font-family: ui-monospace, Menlo, Consolas, monospace;
    font-size: 12.5px;
    font-weight: 600;
}

.es-doc-fn p { margin: 0 0 8px; font-size: 13.5px; color: var(--muted); }
.es-doc-fn__case { font-size: 13px; }

.es-doc-args { width: 100%; margin: 0 0 10px; border-collapse: collapse; }

.es-doc-args th,
.es-doc-args td {
    padding: 6px 10px;
    border-bottom: 1px solid #f0f3f6;
    font-size: 12.5px;
    text-align: left;
    vertical-align: top;
}

.es-doc-args th { width: 34%; font-weight: 600; }
.es-doc-args__opt { font-size: 10px; color: #a1aab7; font-weight: 500; }

/* ---------------------------------------------------------------------------
   Documentation blocks the builder styles but the site did not.

   The docs are written once and rendered in two places - the builder's own
   Documentation screen and /help/ - off one set of markup. Three classes were
   only ever styled in the builder, so on the public page all 22 callouts
   rendered as ordinary paragraphs: the warnings that say "this cannot be
   undone" or "editing the xlsx will not change the copy" read as though they
   were part of the prose around them.
   --------------------------------------------------------------------------- */

.help-prose .es-doc-note {
    margin: 16px 0;
    padding: 13px 16px;
    background: #fff8e8;
    border-left: 3px solid #e8a33d;
    border-radius: 8px;
    font-size: 14.5px;
    line-height: 1.6;
    color: #3d3320;
}

/* Numbered steps, as circles rather than the browser's own numbering. */
.help-prose .es-doc-steps {
    counter-reset: dstep;
    list-style: none;
    padding-left: 0;
}

.help-prose .es-doc-steps li {
    counter-increment: dstep;
    position: relative;
    padding-left: 34px;
    margin-bottom: 10px;
}

.help-prose .es-doc-steps li::before {
    content: counter(dstep);
    position: absolute;
    left: 0;
    top: 0;
    width: 23px;
    height: 23px;
    display: grid;
    place-items: center;
    border-radius: 50%;
    background: var(--soft, #e8f7f1);
    color: var(--green, #008f60);
    font: 700 12px Manrope, sans-serif;
}

/*
 * A small table for showing what an example produces.
 *
 * Wide ones scroll inside their own box rather than stretching the page - the
 * same rule the calculator's own data table follows.
 */
.help-prose .es-doc-table {
    display: block;
    overflow-x: auto;
    width: 100%;
    margin: 0 0 16px;
    border-collapse: collapse;
    font-size: 14px;
    white-space: nowrap;
}

.help-prose .es-doc-table th,
.help-prose .es-doc-table td {
    padding: 8px 14px;
    border: 1px solid var(--line, #dfe8e4);
    text-align: left;
}

.help-prose .es-doc-table th {
    background: #f4f8f6;
    font: 700 13px Manrope, sans-serif;
}

.help-prose .es-doc-table td.num { text-align: right; font-variant-numeric: tabular-nums; }
.help-prose .es-doc-table tbody tr:nth-child(even) td { background: #fafcfb; }
.help-prose .es-doc-table caption {
    caption-side: top;
    text-align: left;
    padding: 0 0 7px;
    font-size: 13px;
    color: var(--muted, #637089);
}


/* ---------------------------------------------------------------------------
   Pricing, with one billing period
   --------------------------------------------------------------------------- */

/*
 * What the toggle used to imply, said plainly instead. There is no annual
 * plan - every row in the billing table renews monthly - and a switch offering
 * a price nothing can be charged at is worse than no switch.
 */
.billing-note {
    margin: 30px auto 0;
    max-width: 460px;
    font-size: 14px;
    color: var(--muted);
}

.price-card .renews {
    margin: 2px 0 0;
    font-size: 12px;
    color: #8b95a3;
}

/* ---------------------------------------------------------------------------
   Privacy, terms and refunds
   --------------------------------------------------------------------------- */

.legal-hero { padding-bottom: 60px; }
.legal-hero p { color: var(--muted); font-size: 14px; }

.legal-content { padding: 70px 0 100px; }

.legal-shell {
    display: grid;
    grid-template-columns: 250px minmax(0, 1fr);
    gap: 60px;
    /* Stretch, so the sticky column below has a tall parent to stick inside. */
    align-items: stretch;
}

.legal-side__inner {
    position: sticky;
    top: 100px;
}

.legal-side h2 {
    font: 700 12px Manrope, sans-serif;
    letter-spacing: 1.2px;
    text-transform: uppercase;
    color: #8b95a3;
    margin: 0 0 14px;
}

.legal-side nav, .legal-side__other { display: flex; flex-direction: column; gap: 9px; }

.legal-side a {
    font-size: 13.5px;
    line-height: 1.45;
    color: var(--muted);
    transition: color .15s;
}

.legal-side a:hover { color: var(--green); }
.legal-side__other { margin-top: 30px; }
.legal-side__other a { color: var(--green); font-weight: 600; }

.legal-body { max-width: 760px; }
.legal-body section { margin-bottom: 42px; scroll-margin-top: 100px; }

.legal-body h2 {
    font: 700 23px/1.3 Manrope, sans-serif;
    color: var(--green);
    margin: 0 0 14px;
}

.legal-body p, .legal-body li { font-size: 15.5px; line-height: 1.75; color: #35404f; }
.legal-body p { margin: 0 0 14px; }
.legal-body ul { margin: 0 0 16px; padding-left: 22px; }
.legal-body li { margin-bottom: 9px; }
.legal-body strong { color: var(--ink); }
.legal-body a { color: var(--green); font-weight: 600; text-decoration: underline; }

.legal-body code {
    background: #f2f6f4;
    border-radius: 4px;
    padding: 2px 6px;
    font-size: 14px;
}

.legal-contact {
    border-top: 1px solid var(--line);
    padding-top: 26px;
}

@media (max-width: 900px) {
    .legal-shell { grid-template-columns: 1fr; gap: 34px; }
    .legal-side__inner { position: static; }
    .legal-side nav { display: grid; grid-template-columns: 1fr 1fr; }
}

/* ---------------------------------------------------------------------------
   Contact
   --------------------------------------------------------------------------- */

.contact-hero { padding-bottom: 60px; }
.contact-hero p { max-width: 560px; margin-left: auto; margin-right: auto; }

.contact-content { padding: 70px 0 110px; }

.contact-shell {
    display: grid;
    grid-template-columns: minmax(0, 1.25fr) minmax(0, .75fr);
    gap: 45px;
    align-items: start;
}

.contact-formwrap {
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 18px;
    padding: 34px;
    box-shadow: var(--shadow);
}

.contact-form { display: grid; gap: 20px; }

.contact-form .field { display: grid; gap: 7px; }

.contact-form label {
    font: 600 13.5px Manrope, sans-serif;
    color: var(--ink);
}

/* "optional" beside a label, so it is read as part of the label. */
.contact-form label em {
    font-style: normal;
    font-weight: 500;
    font-size: 12px;
    color: #97a2b0;
    margin-left: 5px;
}

.contact-form input,
.contact-form textarea {
    width: 100%;
    padding: 12px 14px;
    border: 1px solid var(--line);
    border-radius: 10px;
    background: #fcfdfd;
    font: 400 15px/1.5 "DM Sans", sans-serif;
    color: var(--ink);
    transition: border-color .15s, box-shadow .15s;
}

.contact-form textarea { resize: vertical; min-height: 150px; }

.contact-form input:focus,
.contact-form textarea:focus {
    outline: 0;
    border-color: var(--green);
    box-shadow: 0 0 0 3px rgba(0, 216, 145, .16);
    background: #fff;
}

.contact-form .has-error input,
.contact-form .has-error textarea { border-color: #e0645a; background: #fffafa; }

.contact-form .field small { font-size: 12.5px; color: #d0453a; }

.contact-form button[type="submit"] { justify-self: start; }

.contact-privacy { margin: 0; font-size: 12.5px; color: var(--muted); }
.contact-privacy a { color: var(--green); font-weight: 600; }

/* The honeypot. Off-screen rather than display:none - some bots skip what is
   hidden the obvious way, and none of them read the label. */
.contact-hp {
    position: absolute;
    left: -9999px;
    width: 1px;
    height: 1px;
    overflow: hidden;
}

.contact-sent {
    display: flex;
    gap: 14px;
    align-items: flex-start;
    margin-bottom: 26px;
    padding: 18px 20px;
    background: #eafaf3;
    border: 1px solid #a8e2c9;
    border-radius: 12px;
}

.contact-sent > span {
    display: grid;
    place-items: center;
    flex: 0 0 30px;
    width: 30px;
    height: 30px;
    border-radius: 50%;
    background: var(--green);
    color: #fff;
    font-weight: 700;
}

.contact-sent h2 { margin: 0 0 3px; font: 700 17px Manrope, sans-serif; }
.contact-sent p { margin: 0; font-size: 14px; color: #40614f; }

.contact-error {
    margin: 0 0 22px;
    padding: 14px 18px;
    background: #fff2f1;
    border: 1px solid #f0b6b0;
    border-radius: 12px;
    font-size: 14px;
    color: #97362d;
}

/* --- the two cards beside it ------------------------------------------- */

.contact-side { display: grid; gap: 16px; }

.contact-card {
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 16px;
    padding: 24px;
    transition: border-color .2s, box-shadow .2s;
}

.contact-card:hover { border-color: #9edbc7; box-shadow: var(--shadow); }

.contact-icon {
    display: grid;
    place-items: center;
    width: 42px;
    height: 42px;
    border-radius: 11px;
    background: var(--soft, #e8f7f1);
    font-size: 19px;
    margin-bottom: 13px;
}

.contact-card h2 { margin: 0 0 6px; font: 700 17px Manrope, sans-serif; }
.contact-card p { margin: 0 0 16px; font-size: 13.5px; line-height: 1.6; color: var(--muted); }
.contact-card small { display: block; margin-top: 10px; font-size: 12.5px; color: #97a2b0; }

/*
 * "Opening chat..." was on the card from the moment the page loaded.
 *
 * The element carries the `hidden` attribute, but `hidden` is only a UA rule
 * of display:none - and the rule above sets display:block on every small in
 * the card, which outranks it. Any display declaration silently defeats
 * `hidden`; this is the one line that puts it back.
 */
.contact-card small[hidden] { display: none; }

/* While the script is being fetched. A line of text with nothing moving reads
   as a message that has been left behind rather than as work in progress. */
.contact-card small.is-working {
    display: flex;
    align-items: center;
    gap: 8px;
    color: #55677d;
}

.contact-card small.is-working:before {
    content: "";
    width: 13px;
    height: 13px;
    flex: 0 0 13px;
    border: 2px solid rgba(0, 167, 111, .25);
    border-top-color: #00a76f;
    border-radius: 50%;
    animation: contact-spin .7s linear infinite;
}

@keyframes contact-spin { to { transform: rotate(360deg); } }

/* Somebody who has asked for less movement gets the words without the wheel. */
@media (prefers-reduced-motion: reduce) {
    .contact-card small.is-working:before { animation: none; }
}

/* The drawn icons take the card's own colour and sit at a size that suits the
   tile, rather than whatever an emoji happened to be. */
.contact-icon svg { width: 20px; height: 20px; display: block; color: #00a76f; }

.button.ghost {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    background: var(--soft, #e8f7f1);
    color: var(--green);
    border: 0;
    padding: 11px 17px;
    border-radius: 9px;
    font: 700 13.5px Manrope, sans-serif;
    cursor: pointer;
    transition: background .15s, color .15s;
}

.button.ghost:hover { background: var(--green); color: #fff; }
.button.ghost:disabled { opacity: .6; cursor: default; }

.contact-details {
    background: #f7faf9;
    border: 1px solid var(--line);
    border-radius: 16px;
    padding: 24px;
}

.contact-details h2 {
    margin: 0 0 14px;
    font: 700 12px Manrope, sans-serif;
    letter-spacing: 1.1px;
    text-transform: uppercase;
    color: #8b95a3;
}

.contact-details dl { margin: 0; display: grid; gap: 13px; }
.contact-details dt { font: 600 12.5px Manrope, sans-serif; color: #8b95a3; margin-bottom: 2px; }
.contact-details dd { margin: 0; font-size: 14px; line-height: 1.55; color: var(--ink); }

@media (max-width: 900px) {
    .contact-shell { grid-template-columns: 1fr; }
}

/* The reason dropdown, matching the other fields rather than the browser's
   default control. */
.contact-form select {
    width: 100%;
    padding: 12px 14px;
    border: 1px solid var(--line);
    border-radius: 10px;
    background: #fcfdfd;
    font: 400 15px/1.5 "DM Sans", sans-serif;
    color: var(--ink);
    cursor: pointer;
    transition: border-color .15s, box-shadow .15s;

    /* The browser's arrow, drawn to match the borders around it. */
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%23637089' d='M1.4 0 6 4.6 10.6 0 12 1.4 6 7.4 0 1.4z'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 14px center;
    padding-right: 38px;
}

.contact-form select:focus {
    outline: 0;
    border-color: var(--green);
    box-shadow: 0 0 0 3px rgba(0, 216, 145, .16);
    background-color: #fff;
}

.contact-form .has-error select { border-color: #e0645a; background-color: #fffafa; }

/* Nothing chosen yet reads as placeholder text, not as an answer. */
.contact-form select:invalid { color: #97a2b0; }

.contact-parent {
    margin: 16px 0 0;
    padding-top: 14px;
    border-top: 1px solid var(--line);
    font-size: 13px;
    line-height: 1.55;
    color: var(--muted);
}

.contact-parent a { color: var(--green); font-weight: 600; }

.sitemap-hero { padding-bottom: 55px; }
.sitemap-hero p { color: var(--muted); font-size: 14.5px; }
.sitemap-hero a { color: var(--green); font-weight: 600; }

.sitemap-content { padding: 60px 0 100px; }

.sitemap-group { margin-bottom: 44px; }

.sitemap-group h2 {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 0 0 16px;
    padding-bottom: 11px;
    border-bottom: 1px solid var(--line);
    font: 700 19px Manrope, sans-serif;
    color: var(--green);
}

.sitemap-group h2 b {
    font: 700 11px Manrope, sans-serif;
    color: #8b95a3;
    background: #f2f6f4;
    border-radius: 20px;
    padding: 3px 10px;
}

.sitemap-group ul {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
    gap: 9px 24px;
}

.sitemap-group a { font-size: 14.5px; color: #35404f; transition: color .15s; }
.sitemap-group a:hover { color: var(--green); }

/* ---------------------------------------------------------------------------
   Example templates
   ---------------------------------------------------------------------------
   Templates attached to a topic or a section in the application, under Admin >
   Docs examples. Blue, so it reads as a pointer somewhere else rather than as
   another callout - the amber note above it is the product telling the reader
   to be careful, and this is the product handing them something to open.
   --------------------------------------------------------------------------- */

.help-examples {
    margin: 18px 0 4px;
    padding: 14px 18px;
    background: #eef5ff;
    border: 1px solid #cfe0fb;
    border-left: 3px solid #2f6feb;
    border-radius: 10px;
}

.help-examples b {
    display: block;
    margin-bottom: 6px;
    font-size: 13px;
    font-weight: 700;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: #1b4fb5;
}

.help-examples ul {
    margin: 0;
    padding-left: 20px;
    list-style: disc;
}

.help-examples li {
    margin: 4px 0;
    font-size: 15px;
    line-height: 1.55;
    color: #24324a;
}

.help-examples a {
    color: #1b4fb5;
    font-weight: 600;
    text-decoration: underline;
    text-underline-offset: 2px;
}

.help-examples a:hover {
    color: #14357c;
}

/* Under a topic heading rather than a section, where it sits against the
   topic's own blurb and needs the same width as the sections below it. */
.help-topic > .help-examples {
    margin: 4px 0 22px;
}

/* ---------------------------------------------------------------------------
   The menu on a phone
   ---------------------------------------------------------------------------
   The same fix the homepage needed: the panel had no z-index and nothing to
   scroll in, so on a short screen it opened under the page and its last items
   were unreachable. Kept here as well because these pages carry their own
   stylesheet - one of them would otherwise be right and the rest wrong.
   --------------------------------------------------------------------------- */

@media (max-width: 900px) {
    .site-header .site-nav {
        z-index: 1200;
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
        box-shadow: -14px 0 40px rgba(7, 21, 46, .16);
    }

    body.menu-open { overflow: hidden; }
    body.menu-open .site-header { background: #fff; box-shadow: 0 4px 18px rgba(7, 21, 46, .08); }

    .site-nav .nav-actions { width: 100%; }
    .site-nav .nav-actions .button { width: 100%; justify-content: center; }
}

/* The same trap as the homepage: backdrop-filter on the header makes it the
   containing block for the fixed menu panel, so the panel resolves its inset
   against a 72px bar and opens one link tall. The blur goes on the narrow
   layout, where the bar is opaque white anyway. */
@media (max-width: 900px) {
    .site-header {
        backdrop-filter: none;
        -webkit-backdrop-filter: none;
    }
}

/* The menu drawer, in the same gradient the homepage uses - one menu across
   the site rather than a dark one on the homepage and a white one everywhere
   else. */
@media (max-width: 900px) {
    .site-header .site-nav {
        background: linear-gradient(135deg, #0d1428 0%, #073a2c 100%);
        padding: 28px 24px calc(28px + env(safe-area-inset-bottom, 0px));
        gap: 0;
        box-shadow: -16px 0 44px rgba(4, 16, 12, .35);
    }

    .site-header .site-nav > a {
        width: 100%;
        padding: 15px 2px;
        border-bottom: 1px solid rgba(255, 255, 255, .09);
        color: #fff;
        font-size: 17px;
        font-weight: 700;
        letter-spacing: -.2px;
    }

    .site-header .site-nav > a:hover,
    .site-header .site-nav > a.active { color: #34d9a3; }

    .site-header .site-nav > a.active { padding-left: 12px; box-shadow: inset 3px 0 0 #34d9a3; }

    .site-nav .nav-actions { gap: 12px; margin-top: 26px; }

    .site-nav .nav-actions .button { width: 100%; justify-content: center; }

    .site-nav .nav-actions .text-link,
    .site-nav .nav-actions .login {
        width: 100%;
        padding: 13px;
        border: 1px solid rgba(255, 255, 255, .28);
        border-radius: 11px;
        text-align: center;
        font-size: 15px;
        font-weight: 700;
        color: #fff;
    }

    .site-nav .nav-actions .text-link:hover,
    .site-nav .nav-actions .login:hover {
        border-color: rgba(52, 217, 163, .6);
        color: #34d9a3;
    }
}

/* ===========================================================================
   The glossary
   ---------------------------------------------------------------------------
   A definition list, styled as one. <dl> is the right element for terms and
   their meanings - a search engine and an assistant both read the pairing
   directly, which a list of bolded paragraphs only implies.
   ========================================================================= */

.es-doc-terms {
    margin: 0 0 1.4em;
    padding: 0;
}

.es-doc-terms dt {
    margin-top: 18px;
    font: 700 15px Manrope, sans-serif;
    color: #101426;
}

.es-doc-terms dt:first-child { margin-top: 0; }

.es-doc-terms dd {
    margin: 5px 0 0;
    padding-left: 15px;
    border-left: 2px solid #e3ece8;
    font-size: 14.5px;
    line-height: 1.68;
    color: #46536a;
}

@media (max-width: 600px) {
    .es-doc-terms dd { padding-left: 12px; }
}

/* ===========================================================================
   Solution and platform pages
   ---------------------------------------------------------------------------
   One layout, twelve pages. Quiet on purpose - these pages earn their place by
   answering a question, and a landing page that shouts reads as one that has
   nothing to say.
   ========================================================================= */

.solution-hero h1 { max-width: 15ch; margin-left: auto; margin-right: auto; }

.solution-actions {
    display: flex;
    justify-content: center;
    gap: 12px;
    margin-top: 32px;
    flex-wrap: wrap;
}

.solution-note { display: block; margin-top: 14px; font-size: 12px; color: #8b95a3; }

.solution-body { padding: 80px 0 100px; }

/* The reading column. Full-width prose at 1180px is a line nobody finishes. */
.solution-body > .shell { max-width: 820px; }

.solution-body h2 {
    font: 800 30px/1.2 Manrope, sans-serif;
    letter-spacing: -1.2px;
    margin: 62px 0 22px;
}

.solution-body h2:first-child { margin-top: 0; }

/* --- the numbered steps ------------------------------------------------- */

.solution-steps {
    list-style: none;
    padding: 0;
    margin: 0;
    display: grid;
    gap: 2px;
}

.solution-steps li {
    display: grid;
    grid-template-columns: 46px 1fr;
    gap: 16px;
    padding: 18px 20px;
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 13px;
}

.solution-steps li > span {
    font: 800 12px Manrope, sans-serif;
    color: var(--green);
    padding-top: 3px;
}

.solution-steps b { display: block; font: 700 15px Manrope, sans-serif; }
.solution-steps p { margin: 5px 0 0; font-size: 14px; color: var(--muted); line-height: 1.6; }

/* --- where the snippet goes --------------------------------------------- */

.solution-where { margin: 0; padding-left: 20px; }
.solution-where li { margin-bottom: 10px; font-size: 15px; line-height: 1.68; }

.solution-warn {
    margin: 22px 0;
    padding: 18px 20px;
    background: #fff8ec;
    border: 1px solid #f2dfbc;
    border-left: 3px solid #e0a53c;
    border-radius: 11px;
}

.solution-warn b { display: block; font: 700 13px Manrope, sans-serif; color: #8a6114; }
.solution-warn p { margin: 6px 0 0; font-size: 14px; line-height: 1.65; color: #6b5628; }

.solution-extra { font-size: 14.5px; line-height: 1.7; color: var(--muted); }

/* --- what you get -------------------------------------------------------- */

.solution-points { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }

.solution-points article {
    padding: 22px;
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 14px;
}

.solution-points h3 { font: 700 15px Manrope, sans-serif; margin: 0 0 8px; }
.solution-points p { margin: 0; font-size: 13.5px; line-height: 1.62; color: var(--muted); }

/* --- questions ----------------------------------------------------------- */

.solution-faq { border: 1px solid var(--line); border-radius: 14px; overflow: hidden; }

.solution-faq details { border-bottom: 1px solid var(--line); background: #fff; }
.solution-faq details:last-child { border-bottom: 0; }

.solution-faq summary {
    padding: 17px 46px 17px 20px;
    font: 700 15px Manrope, sans-serif;
    cursor: pointer;
    position: relative;
    list-style: none;
}

.solution-faq summary::-webkit-details-marker { display: none; }

.solution-faq summary:after {
    content: "+";
    position: absolute;
    right: 20px;
    top: 15px;
    font-size: 19px;
    font-weight: 400;
    color: var(--green);
}

.solution-faq details[open] summary:after { content: "\2013"; }
.solution-faq summary:hover { color: var(--green); }

.solution-faq p {
    margin: 0;
    padding: 0 20px 19px;
    font-size: 14px;
    line-height: 1.7;
    color: var(--muted);
}

/* --- read more ------------------------------------------------------------ */

.solution-links { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }

.solution-links a {
    display: block;
    padding: 17px 19px;
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 12px;
    transition: .2s;
}

.solution-links a:hover { border-color: #9edbc7; transform: translateY(-2px); }
.solution-links a > span { color: var(--green); font-weight: 700; }
.solution-links b { display: block; font: 700 13px Manrope, sans-serif; margin-top: 4px; }
.solution-links small { display: block; font-size: 12px; color: #8b95a3; margin-top: 2px; }

.solution-hub-note {
    margin: 30px auto 0;
    max-width: 640px;
    text-align: center;
    font-size: 14px;
    line-height: 1.7;
    color: var(--muted);
}

.solution-hub-note a { color: #009f6b; font-weight: 700; }

/* A hub card's heading is an h2, not an h3 - it is the page's list of
   subjects, and the level should say so. */
.support-category h2 { font: 700 15px Manrope, sans-serif; margin: 0; }

@media (max-width: 700px) {
    .solution-body { padding: 55px 0 70px; }
    .solution-body h2 { font-size: 25px; margin: 46px 0 18px; }
    .solution-points,
    .solution-links { grid-template-columns: 1fr; }
    .solution-hero h1 { max-width: none; }
}

/* The hub's own words, above its list of links. Narrower than the card grid:
   prose at the width of a three-column layout is prose nobody reads. */
.solution-hub-prose { max-width: 700px; margin: 54px auto 0; }
.solution-hub-prose h2 { font: 800 27px/1.25 Manrope, sans-serif; letter-spacing: -1.1px; margin: 0 0 16px; }
.solution-hub-prose p { font-size: 15px; line-height: 1.75; color: var(--muted); margin: 0 0 15px; }
.solution-hub-prose code { background: #eef4f1; padding: 2px 6px; border-radius: 5px; font-size: 13px; color: #0c7a56; }

/* ===========================================================================
   Icons
   ---------------------------------------------------------------------------
   Inline SVG, so they take the colour of whatever they sit in and cost no
   request. The brand marks are the exception - a logo has one correct shape,
   so those come from the brands webfont. See includes/icons.php.
   ========================================================================= */

.es-icon {
    width: 20px;
    height: 20px;
    display: block;
    /* The tile centres it; without this the SVG's own line-height leaves it
       sitting a pixel or two low. */
    margin: auto;
}

/* The tile in a hub card. .support-icon already sizes and colours it; this is
   only what changes now that the contents are a drawing rather than a glyph. */
.support-icon { line-height: 0; }

.support-icon--brand {
    font-size: 19px;
    line-height: 1;
    /* A brand mark is a logo, not an illustration - it reads better in the
       ink colour than in the accent one. */
    color: #263243;
    background: #f2f5f8;
}

/* --- the mark in a page hero -------------------------------------------- */

.solution-mark {
    width: 54px;
    height: 54px;
    margin: 0 auto 22px;
    display: grid;
    place-items: center;
    border-radius: 15px;
    background: var(--soft);
    color: var(--green);
    box-shadow: 0 10px 26px rgba(0, 167, 111, .13);
}

.solution-mark .es-icon { width: 25px; height: 25px; }

.solution-mark--brand {
    background: #f2f5f8;
    color: #263243;
    font-size: 24px;
    box-shadow: 0 10px 26px rgba(20, 35, 55, .1);
}

/* --- the read-more cards -------------------------------------------------- */

/* These held a text glyph; now they hold a 20px drawing, which needs a box of
   its own or the heading under it shifts. */
.solution-links a > span {
    display: grid;
    place-items: center;
    width: 34px;
    height: 34px;
    border-radius: 10px;
    background: var(--soft);
    color: var(--green);
    line-height: 0;
}

.solution-links a > span.is-brand {
    background: #f2f5f8;
    color: #263243;
    font-size: 16px;
    line-height: 1;
}

.solution-links a > span .es-icon { width: 17px; height: 17px; }

/* A screenshot on a platform page. Its width and height come off the file, so
   the space is reserved before it loads and the text below does not jump. */
.solution-shot { margin: 26px 0 0; }

.solution-shot img {
    display: block;
    width: 100%;
    height: auto;
    border: 1px solid var(--line);
    border-radius: 12px;
    background: #fff;
}

.solution-shot figcaption {
    margin-top: 10px;
    font-size: 12.5px;
    color: #8b95a3;
    text-align: center;
}

/* ===========================================================================
   Comparison pages
   ---------------------------------------------------------------------------
   The layout follows the argument: what they do better, then the two price
   lists side by side, then the structural differences. The concession comes
   first and is styled to be read, not skimmed past.
   ========================================================================= */

.compare-hero h1 { max-width: 18ch; margin-left: auto; margin-right: auto; }

/*
 * When the figures were checked, said on the page itself rather than only in
 * the markup. A comparison is worth exactly as much as the day its prices were
 * read, and hiding that would be the first dishonest thing on an otherwise
 * honest page.
 */
/*
 * Scoped under .page-hero on purpose.
 *
 * This is a <p>, and the hero already says
 * `.page-hero > div > p { margin: 0 auto }` - two classes and a type, which
 * outranks a lone .compare-checked. The margin here simply never applied and
 * the box sat flush against the sentence above it. Matching the hero's own
 * specificity is what makes it stick.
 */
.page-hero .compare-checked {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    width: min(600px, 100%);
    margin: 40px auto 0;
    padding: 16px 20px;
    text-align: left;
    background: #fff;
    border: 1px solid var(--line);
    /* The green edge marks it as a note about provenance rather than another
       line of the pitch - it is the one part of the hero making a promise
       about accuracy. */
    border-left: 3px solid var(--green);
    border-radius: 12px;
    box-shadow: 0 10px 30px rgba(20, 35, 55, .06);
    font-size: 13.5px;
    line-height: 1.65;
    color: #46536a;
}

.compare-checked strong { color: var(--ink); font-weight: 700; white-space: nowrap; }

.compare-checked__icon {
    flex: 0 0 18px;
    width: 18px;
    height: 18px;
    color: var(--green);
    margin-top: 2px;
}

.compare-body { padding: 80px 0 100px; }
.compare-body > .shell { max-width: 860px; }

.compare-body h2 {
    font: 800 30px/1.2 Manrope, sans-serif;
    letter-spacing: -1.2px;
    margin: 62px 0 22px;
}

.compare-body h2:first-child { margin-top: 0; }

/* --- what they do better -------------------------------------------------- */

/*
 * Given room and a mark of its own. This section is the reason the rest of the
 * page is believable, so it is not styled as small print.
 */
.compare-credit {
    margin: 0;
    padding: 24px 26px 24px 46px;
    background: var(--soft);
    border-radius: 14px;
    list-style: none;
}

.compare-credit li {
    position: relative;
    margin-bottom: 14px;
    font-size: 15px;
    line-height: 1.68;
    color: #2b3a4d;
}

.compare-credit li:last-child { margin-bottom: 0; }

.compare-credit li:before {
    content: "\2713";
    position: absolute;
    left: -22px;
    color: var(--green);
    font-weight: 700;
}

/* --- the two price lists -------------------------------------------------- */

.compare-prices { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }

.compare-prices__col {
    padding: 22px 24px;
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 14px;
}

/* Ours marked, but not shouted. The reader knows whose site this is. */
.compare-prices__col--ours { border-color: #9edbc7; background: #fbfffd; }

.compare-prices__col h3 {
    margin: 0 0 16px;
    font: 700 16px Manrope, sans-serif;
}

.compare-prices dl { margin: 0; }

.compare-prices dt {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    align-items: baseline;
    margin-top: 14px;
    font-size: 13.5px;
    font-weight: 600;
    color: var(--ink);
}

.compare-prices dt:first-child { margin-top: 0; }
.compare-prices dt b { font: 700 15px Manrope, sans-serif; white-space: nowrap; }

.compare-prices dd {
    margin: 3px 0 0;
    font-size: 12.5px;
    line-height: 1.55;
    color: var(--muted);
}

.compare-prices__note {
    margin: 18px 0 0;
    padding-top: 14px;
    border-top: 1px solid #dcefe7;
    font-size: 12px;
    color: var(--muted);
}

/* --- the differences ------------------------------------------------------ */

.compare-points { display: grid; gap: 14px; }

.compare-points article {
    padding: 22px 24px;
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 14px;
}

.compare-points h3 { margin: 0 0 8px; font: 700 16px Manrope, sans-serif; }

.compare-points p {
    margin: 0;
    font-size: 14.5px;
    line-height: 1.7;
    color: var(--muted);
}

@media (max-width: 760px) {
    .compare-body { padding: 55px 0 70px; }
    .compare-body h2 { font-size: 25px; margin: 46px 0 18px; }
    .compare-prices { grid-template-columns: 1fr; }
    .compare-hero h1 { max-width: none; }
}

/* --- the comparison cards on the hub -------------------------------------- */

/*
 * Two per row, not the three the support grid uses. Each card carries a full
 * sentence, and at a third of the width that sentence ran to nine lines while
 * "ConvertCalculator" broke mid-word in the heading.
 */
.compare-cards {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 18px;
}

.compare-card {
    display: grid;
    grid-template-columns: 64px minmax(0, 1fr);
    gap: 18px;
    align-items: start;
    padding: 24px;
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 16px;
    transition: .2s;
}

.compare-card:hover {
    transform: translateY(-3px);
    border-color: #9edbc7;
    box-shadow: var(--shadow);
}

/*
 * The competitor's own mark, on a neutral tile. Their logos come in every
 * colour there is, so the tile stays grey rather than tinting one of them
 * green and making it look like ours.
 */
.compare-card__mark {
    display: grid;
    place-items: center;
    width: 64px;
    height: 64px;
    border-radius: 14px;
    background: #f2f5f8;
    overflow: hidden;
}

.compare-card__mark img { display: block; width: 48px; height: 48px; object-fit: contain; }

/* No logo file for this one - a letter, never a broken image. */
.compare-card__mark b { font: 800 24px Manrope, sans-serif; color: #48566b; }

.compare-card__body h2 {
    margin: 0 0 8px;
    font: 700 19px/1.3 Manrope, sans-serif;
    /* A long product name wraps rather than breaking mid-word. */
    overflow-wrap: break-word;
}

.compare-card__body h2 em { font-style: normal; color: #8b95a3; font-weight: 500; }

.compare-card__body p {
    margin: 0 0 12px;
    font-size: 13.5px;
    line-height: 1.62;
    color: var(--muted);
}

.compare-card__go { font-size: 13px; font-weight: 700; color: var(--green); }

/* --- the mark on a comparison page's own hero ----------------------------- */

.compare-hero__mark {
    display: grid;
    place-items: center;
    width: 72px;
    height: 72px;
    margin: 0 auto 20px;
    border-radius: 18px;
    background: #fff;
    border: 1px solid var(--line);
    box-shadow: 0 10px 26px rgba(20, 35, 55, .08);
}

.compare-hero__mark img { display: block; width: 52px; height: 52px; object-fit: contain; }

/* A logo in a read-more card sits on the neutral tile too, not the green one. */
.solution-links a > span.is-logo { background: #f2f5f8; }
.solution-links a > span.is-logo img { display: block; width: 20px; height: 20px; object-fit: contain; }

@media (max-width: 760px) {
    .compare-cards { grid-template-columns: 1fr; }
}

@media (max-width: 420px) {
    .compare-card { grid-template-columns: 1fr; gap: 14px; }
}

/* --- the feature table ---------------------------------------------------- */

/*
 * Scrolls inside its own box rather than pushing the page sideways. Three
 * columns is narrow enough to fit most screens, but a long feature label plus
 * its note is not, and a page that scrolls horizontally is worse than a table
 * that does.
 */
.compare-table-wrap {
    overflow-x: auto;
    border: 1px solid var(--line);
    border-radius: 14px;
    background: #fff;
}

.compare-table {
    width: 100%;
    min-width: 520px;
    border-collapse: collapse;
    text-align: left;
}

/*
 * The provenance line, under the table rather than over it - it is what to
 * read after a row raises a question, not before.
 */
.compare-table caption {
    caption-side: bottom;
    padding: 14px 20px 16px;
    border-top: 1px solid var(--line);
    font-size: 12px;
    line-height: 1.6;
    color: #8b95a3;
    text-align: left;
}

.compare-table thead th {
    padding: 14px 16px;
    background: #f7fafc;
    border-bottom: 1px solid var(--line);
    font: 700 12px Manrope, sans-serif;
    letter-spacing: .3px;
    color: #48566b;
    white-space: nowrap;
}

.compare-table thead th:not(:first-child) { text-align: center; width: 140px; }

.compare-table tbody th {
    padding: 14px 16px;
    border-bottom: 1px solid #eef2f6;
    font: 600 14px "DM Sans", sans-serif;
    color: var(--ink);
}

/* The reason a row says what it says, where the row says it. */
.compare-table tbody th small {
    display: block;
    margin-top: 4px;
    font-size: 12px;
    font-weight: 400;
    line-height: 1.55;
    color: var(--muted);
}

.compare-table tbody td {
    padding: 14px 16px;
    border-bottom: 1px solid #eef2f6;
    text-align: center;
    vertical-align: top;
}

.compare-table tbody tr:last-child th,
.compare-table tbody tr:last-child td { border-bottom: 0; }

/* Ours tinted, but only faintly - the reader knows whose site this is. */
.compare-table tbody td:first-of-type { background: #fbfffd; }
.compare-table thead th:nth-child(2) { background: #f0faf6; color: #0c7a56; }

/* --- the three states ------------------------------------------------------ */

/*
 * The mark alone. The word beside it is for a screen reader, and it was marked
 * es-sr-only - the application's class, on a site page, where nothing defines
 * it - so "Yes" and "No" rendered under every mark. The site's own class is
 * .sr-only.
 */
/*
 * Mark and badge on one line where they fit, wrapping to two where they do
 * not. Stacked always, a one-word badge left a lot of empty column; side by
 * side reads as one answer, which is what it is.
 */
.compare-cell {
    display: inline-flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 8px;
}

.compare-yes,
.compare-no {
    display: grid;
    place-items: center;
    width: 26px;
    height: 26px;
    border-radius: 50%;
}

.compare-yes { background: #dff5ea; color: #0e8a5f; }
.compare-yes svg { width: 13px; height: 13px; }

/* Red, not grey. A missing feature is a real difference and the table should
   say so as plainly as it says the opposite. */
.compare-no { background: #fdeaea; color: #c0392b; }
.compare-no svg { width: 11px; height: 11px; }

/*
 * Neither, and it says which. Their site not saying is a different claim from
 * the answer being no, so it is neither green nor red - and it is written out,
 * because a symbol for "we could not check" is a symbol nobody can read.
 */
.compare-unknown {
    display: inline-block;
    padding: 4px 9px;
    border-radius: 100px;
    background: #fdf0dd;
    color: #a4620a;
    font-size: 10.5px;
    font-weight: 700;
    letter-spacing: .2px;
    white-space: nowrap;
}

/* --- the price on a row both products have -------------------------------- */

/*
 * The real comparison on those rows. "PDF results: yes / yes" is true and
 * useless; "on every plan" against "$200/month" is the same fact and the
 * actual answer.
 */
.compare-badge {
    display: inline-block;
    padding: 3px 9px;
    border-radius: 100px;
    font-size: 11px;
    font-weight: 700;
    white-space: nowrap;
}

.compare-badge--good { background: #dff5ea; color: #0e8a5f; }
.compare-badge--bad { background: #fdeaea; color: #c0392b; }
.compare-badge--plain { background: #f2f5f8; color: #5c6b82; }

@media (max-width: 600px) {
    .compare-table thead th:not(:first-child) { width: 84px; }
    .compare-table tbody th,
    .compare-table tbody td,
    .compare-table thead th { padding: 12px 12px; }
}

/* ---------------------------------------------------------------------------
 * What a template uses
 *
 * Shown in the preview dialog and on the template's own page. It answers the
 * question a screenshot cannot: what will I have to connect before this works?
 *
 * A panel rather than a bare list. It sat directly above the "Free / No code /
 * Embed anywhere" ticks and the two read as one run, so the facts specific to
 * THIS template were lost among three that are true of every template.
 * ------------------------------------------------------------------------ */
.tpl-uses {
    padding: 18px 20px;
    background: #f7f9fc;
    border: 1px solid #e6ebf2;
    border-radius: 12px;
}

.tpl-uses__title {
    margin: 0 0 12px;
    font-size: 11.5px;
    font-weight: 700;
    letter-spacing: .06em;
    text-transform: uppercase;
    color: #8695ab;
}

.tpl-uses__list {
    margin: 0;
    padding: 0;
    list-style: none;
    display: flex;
    flex-direction: column;
    gap: 9px;
}

.tpl-uses__list li {
    display: flex;
    gap: 9px;
    align-items: flex-start;
    font-size: 14px;
    line-height: 1.45;
    color: #3d4a5c;
}

.tpl-uses__list li span {
    flex: 0 0 auto;
    color: #16a34a;
    font-weight: 700;
}

/*
 * A dotted underline on the ones that have a note, so it is discoverable that
 * hovering says more - an invisible tooltip helps nobody.
 */
.tpl-uses__list li[title] {
    cursor: help;
    text-decoration: underline dotted rgba(134, 149, 171, .6);
    text-underline-offset: 3px;
    text-decoration-skip-ink: none;
}

/* Inside the preview dialog the panel has a card of its own around it. */
.tpl-modal .tpl-uses { background: transparent; border: 0; padding: 18px 0 0; }
.tpl-modal .tpl-uses__title { margin-top: 0; }

/* ---------------------------------------------------------------------------
 * The account badge in the header, shown once we know somebody is signed in.
 *
 * Colours are inherited rather than stated: the header is white on the inner
 * pages and dark on the home page, and one widget has to sit on both. The only
 * fixed colour is the initials circle, which carries its own contrast either
 * way.
 * ------------------------------------------------------------------------- */

/*
 * hidden has to win here.
 *
 * [hidden] and .button are both one class worth of specificity, so whichever
 * the stylesheet states last takes it - and .button says display:inline-flex.
 * Hiding the signed-out buttons with el.hidden therefore did nothing, and the
 * header showed "Log in", "Start for free" AND "My Account" at once. Scoped to
 * this widget rather than fixing [hidden] globally, which would change how
 * every other toggle on the site behaves.
 */
[data-auth] [hidden] { display: none !important; }

.account-link {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    font-weight: 600;
    font-size: 14px;
    color: inherit;
    padding: 5px 12px 5px 5px;
    border-radius: 100px;
    border: 1px solid rgba(128, 145, 165, .3);
    transition: background .2s, border-color .2s;
}

.account-link:hover {
    background: rgba(128, 145, 165, .14);
    border-color: rgba(128, 145, 165, .55);
}

.account-avatar {
    width: 30px;
    height: 30px;
    flex: none;
    border-radius: 50%;
    overflow: hidden;
    display: grid;
    place-items: center;
    background: linear-gradient(135deg, #00d891, #009f6b);
    color: #fff;
    font: 700 12px/1 Manrope, sans-serif;
    letter-spacing: .3px;
    text-transform: uppercase;
}

.account-avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

/* The mobile menu stacks its actions full width; this one follows. */
@media (max-width: 800px) {
    .site-nav .nav-actions .account-link {
        width: 100%;
        justify-content: center;
        padding: 9px 14px;
    }
}
