/* ==========================================================================
   FALC website stylesheet
   Part 1: design-system tokens and component classes, copied verbatim from
           the handoff (design_handoff_falc_website/styles.css). Prefix falc-.
   Part 2: page layout classes derived from the handoff page files
           (pages/*.dc.html). Values are the page-file values.
   Fonts: self-hosted from assets/fonts/ (see the @font-face block below).
   ========================================================================== */

/* --------------------------------------------------------------------------
   Part 1. Design system (verbatim)
   -------------------------------------------------------------------------- */
/* Self-hosted typefaces (SIL Open Font License). Latin and Latin Extended
   subsets only, woff2, taken from the same builds Google Fonts serves so the
   rendering matches the handoff. Source Serif 4 and IBM Plex Sans upright are
   variable fonts covering their full weight range in one file each.
   Files and sources: assets/fonts/README.txt */
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:url("../fonts/ibm-plex-mono-400-normal-latin-ext.woff2") format("woff2");unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:url("../fonts/ibm-plex-mono-400-normal-latin.woff2") format("woff2");unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;src:url("../fonts/ibm-plex-mono-500-normal-latin-ext.woff2") format("woff2");unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;src:url("../fonts/ibm-plex-mono-500-normal-latin.woff2") format("woff2");unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'IBM Plex Sans';font-style:italic;font-weight:400;font-display:swap;src:url("../fonts/ibm-plex-sans-400-italic-latin-ext.woff2") format("woff2");unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'IBM Plex Sans';font-style:italic;font-weight:400;font-display:swap;src:url("../fonts/ibm-plex-sans-400-italic-latin.woff2") format("woff2");unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:300 600;font-display:swap;src:url("../fonts/ibm-plex-sans-300-600-normal-latin-ext.woff2") format("woff2");unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:300 600;font-display:swap;src:url("../fonts/ibm-plex-sans-300-600-normal-latin.woff2") format("woff2");unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Source Serif 4';font-style:italic;font-weight:300 700;font-display:swap;src:url("../fonts/source-serif-4-300-700-italic-latin-ext.woff2") format("woff2");unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'Source Serif 4';font-style:italic;font-weight:300 700;font-display:swap;src:url("../fonts/source-serif-4-300-700-italic-latin.woff2") format("woff2");unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Source Serif 4';font-style:normal;font-weight:300 700;font-display:swap;src:url("../fonts/source-serif-4-300-700-normal-latin-ext.woff2") format("woff2");unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'Source Serif 4';font-style:normal;font-weight:300 700;font-display:swap;src:url("../fonts/source-serif-4-300-700-normal-latin.woff2") format("woff2");unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
:root{
--falc-teal-50:#E6F5F5;--falc-teal-100:#BFE6E6;--falc-teal-200:#80CFCF;--falc-teal-300:#40B8B8;--falc-teal-400:#1FA9A9;--falc-teal-500:#00A0A0;--falc-teal-600:#008C8C;--falc-teal-700:#0B6F70;--falc-teal-800:#0A5455;--falc-teal-900:#0B3B3F;
--falc-deep-900:#062B2E;--falc-deep-800:#0B3B3F;--falc-deep-700:#10494E;--falc-deep-600:#175A5F;
--falc-gray-50:#F7F7F7;--falc-gray-100:#EDEDED;--falc-gray-200:#D9D9D9;--falc-gray-300:#BDBDBD;--falc-gray-400:#9A9A9A;--falc-gray-500:#707070;--falc-gray-600:#585858;--falc-gray-700:#404040;--falc-gray-800:#2A2C2D;--falc-gray-900:#1C1F20;
--falc-sand-50:#F4EFE6;--falc-sand-100:#E9E1D2;--falc-sand-200:#DFD4BF;--falc-sand-300:#D4C6AA;--falc-sand-500:#B8A886;--falc-sand-700:#7D6B49;
--falc-oxide-500:#A8452E;--falc-oxide-700:#7E3222;--falc-oxide-100:#F3DED7;
--falc-success:#2E7D4F;--falc-warning:#B7791F;--falc-danger:#A8452E;
--color-bg:#FFFFFF;--color-bg-sand:var(--falc-sand-50);--color-bg-deep:var(--falc-deep-900);--color-surface:#FFFFFF;--color-surface-2:var(--falc-gray-50);
--color-ink:var(--falc-gray-900);--color-ink-2:var(--falc-gray-600);--color-ink-3:var(--falc-gray-500);--color-ink-inverse:#FFFFFF;--color-ink-inverse-2:#FFFFFF;
--color-line:var(--falc-gray-200);--color-line-strong:var(--falc-gray-400);--color-line-inverse:rgba(255,255,255,.18);
--color-brand:var(--falc-teal-500);--color-brand-hover:var(--falc-teal-600);--color-brand-active:var(--falc-teal-700);--color-brand-soft:var(--falc-teal-50);--color-brand-ink:var(--falc-gray-500);
--color-accent:var(--falc-oxide-500);--color-focus:var(--falc-teal-500);
--font-display:'Source Serif 4',Georgia,'Times New Roman',serif;--font-sans:'IBM Plex Sans',system-ui,-apple-system,'Segoe UI',sans-serif;--font-mono:'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace;
--text-xs:12px;--text-sm:14px;--text-md:16px;--text-lg:18px;--text-xl:22px;--text-2xl:28px;--text-3xl:36px;--text-4xl:48px;--text-5xl:64px;--text-6xl:96px;
--leading-tight:1.08;--leading-snug:1.2;--leading-normal:1.55;--leading-loose:1.7;
--tracking-label:.14em;--tracking-tight:-.015em;--tracking-display:-.02em;
--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--space-16:64px;--space-20:80px;--space-24:96px;--space-32:128px;
--radius-sm:2px;--radius-md:4px;--radius-lg:8px;--radius-pill:999px;
--shadow-1:0 1px 2px rgba(28,31,32,.08),0 1px 1px rgba(28,31,32,.04);--shadow-2:0 8px 24px rgba(6,43,46,.14),0 2px 6px rgba(6,43,46,.08);--shadow-3:0 24px 64px rgba(6,43,46,.24);
--ease-out:cubic-bezier(.2,.7,.2,1);--ease-in-out:cubic-bezier(.65,0,.35,1);--dur-fast:150ms;--dur-base:260ms;--dur-slow:600ms;--dur-reveal:900ms;
--container:1200px;--gutter:clamp(20px,4vw,48px);
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;font-family:var(--font-sans);font-size:var(--text-md);line-height:var(--leading-normal);color:var(--color-ink);background:var(--color-bg);-webkit-font-smoothing:antialiased}
h1,h2,h3,h4{margin:0;font-family:var(--font-display);font-weight:400;letter-spacing:var(--tracking-tight);line-height:var(--leading-snug);color:inherit}
h1{font-size:var(--text-5xl);line-height:var(--leading-tight);letter-spacing:var(--tracking-display)}h2{font-size:var(--text-3xl)}h3{font-size:var(--text-xl)}h4{font-size:var(--text-lg)}
p{margin:0}a{color:var(--falc-teal-700);text-decoration:none;text-underline-offset:3px;transition:color var(--dur-fast) var(--ease-out)}a:hover{color:var(--falc-teal-500);text-decoration:underline}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}
::selection{background:var(--falc-teal-100);color:var(--falc-deep-900)}
.falc-eyebrow{font-family:var(--font-mono);font-size:var(--text-xs);font-weight:500;letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--falc-teal-600)}
.falc-ground-deep{background:var(--color-bg-deep);color:var(--color-ink-inverse)}.falc-ground-deep a{color:var(--falc-teal-300)}.falc-ground-deep .falc-eyebrow{color:var(--falc-teal-300)}
.falc-ground-sand{background:var(--color-bg-sand);color:var(--color-ink)}
.falc-lede{font-family:var(--font-display);font-size:var(--text-xl);line-height:var(--leading-normal);color:var(--color-ink-2)}.falc-ground-deep .falc-lede{color:var(--color-ink-inverse-2)}
.falc-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:44px;padding:0 var(--space-6);border:1px solid transparent;border-radius:var(--radius-sm);font-family:var(--font-sans);font-size:var(--text-sm);font-weight:500;letter-spacing:.02em;line-height:1;cursor:pointer;text-decoration:none;white-space:nowrap;transition:background var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out)}
.falc-btn:hover{text-decoration:none}.falc-btn:active{transform:translateY(1px)}.falc-btn[disabled],.falc-btn[aria-disabled="true"]{opacity:.45;pointer-events:none}
.falc-btn-sm{min-height:36px;padding:0 var(--space-4);font-size:13px}.falc-btn-lg{min-height:52px;padding:0 var(--space-8);font-size:var(--text-md)}
.falc-btn-primary{background:var(--color-brand);color:#fff}.falc-btn-primary:hover{background:var(--color-brand-hover);color:#fff}.falc-btn-primary:active{background:var(--color-brand-active)}
.falc-btn-ink{background:var(--falc-gray-900);color:#fff}.falc-btn-ink:hover{background:var(--falc-gray-700);color:#fff}
.falc-btn-outline{background:transparent;color:var(--color-ink);border-color:var(--color-line-strong)}.falc-btn-outline:hover{border-color:var(--color-ink);color:var(--color-ink)}
.falc-btn-ghost{background:transparent;color:var(--falc-teal-700);padding-inline:var(--space-2)}.falc-btn-ghost:hover{color:var(--falc-teal-500);text-decoration:underline}
.falc-ground-deep .falc-btn-outline{color:#fff;border-color:rgba(255,255,255,.45)}.falc-ground-deep .falc-btn-outline:hover{border-color:#fff;color:#fff}.falc-ground-deep .falc-btn-ghost{color:var(--falc-teal-300)}.falc-ground-deep .falc-btn-ink{background:#fff;color:var(--falc-deep-900)}
.falc-iconbtn{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border:1px solid var(--color-line);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-ink);cursor:pointer;transition:border-color var(--dur-fast) var(--ease-out),background var(--dur-fast) var(--ease-out)}.falc-iconbtn:hover{border-color:var(--color-ink)}.falc-iconbtn-sm{width:36px;height:36px}.falc-iconbtn-plain{border-color:transparent;background:transparent}.falc-iconbtn-plain:hover{background:var(--color-surface-2);border-color:transparent}.falc-ground-deep .falc-iconbtn{background:transparent;color:#fff;border-color:rgba(255,255,255,.3)}.falc-ground-deep .falc-iconbtn:hover{border-color:#fff}
.falc-field{display:flex;flex-direction:column;gap:var(--space-2)}.falc-label{font-family:var(--font-mono);font-size:var(--text-xs);font-weight:500;letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--color-ink-2)}.falc-hint{font-size:13px;color:var(--color-ink-3)}.falc-hint-error{color:var(--falc-danger)}
.falc-input{width:100%;min-height:44px;padding:10px 12px;border:1px solid var(--color-line-strong);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-ink);font-size:var(--text-md);transition:border-color var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out)}.falc-input::placeholder{color:var(--falc-gray-400)}.falc-input:hover{border-color:var(--falc-gray-600)}.falc-input:focus{outline:none;border-color:var(--color-brand);box-shadow:0 0 0 3px var(--falc-teal-50)}.falc-input[aria-invalid="true"]{border-color:var(--falc-danger)}.falc-input[disabled]{background:var(--color-surface-2);color:var(--color-ink-3)}
textarea.falc-input{min-height:120px;resize:vertical;line-height:var(--leading-normal)}
.falc-selectwrap{position:relative}.falc-selectwrap select.falc-input{appearance:none;padding-right:40px;cursor:pointer}.falc-selectwrap::after{content:"";position:absolute;right:14px;top:50%;width:8px;height:8px;margin-top:-6px;border-right:1.5px solid var(--color-ink);border-bottom:1.5px solid var(--color-ink);transform:rotate(45deg);pointer-events:none}
.falc-check,.falc-radio{display:inline-flex;align-items:flex-start;gap:var(--space-3);cursor:pointer;font-size:var(--text-sm);line-height:1.4;min-height:24px}.falc-check input,.falc-radio input{position:absolute;opacity:0;width:0;height:0}
.falc-check-box{flex:none;width:20px;height:20px;margin-top:1px;border:1.5px solid var(--color-line-strong);border-radius:var(--radius-sm);background:var(--color-surface);display:grid;place-items:center;transition:background var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out)}.falc-check-box svg{width:12px;height:12px;opacity:0;transform:scale(.6);transition:all var(--dur-fast) var(--ease-out)}.falc-check input:checked+.falc-check-box{background:var(--color-brand);border-color:var(--color-brand)}.falc-check input:checked+.falc-check-box svg{opacity:1;transform:none}.falc-check input:focus-visible+.falc-check-box{outline:2px solid var(--color-focus);outline-offset:2px}
.falc-radio-dot{flex:none;width:20px;height:20px;margin-top:1px;border:1.5px solid var(--color-line-strong);border-radius:50%;display:grid;place-items:center;transition:border-color var(--dur-fast) var(--ease-out)}.falc-radio-dot::after{content:"";width:10px;height:10px;border-radius:50%;background:var(--color-brand);transform:scale(0);transition:transform var(--dur-fast) var(--ease-out)}.falc-radio input:checked+.falc-radio-dot{border-color:var(--color-brand)}.falc-radio input:checked+.falc-radio-dot::after{transform:scale(1)}.falc-radio input:focus-visible+.falc-radio-dot{outline:2px solid var(--color-focus);outline-offset:2px}
.falc-switch{display:inline-flex;align-items:center;gap:var(--space-3);cursor:pointer;font-size:var(--text-sm)}.falc-switch input{position:absolute;opacity:0;width:0;height:0}.falc-switch-track{width:40px;height:22px;border-radius:var(--radius-pill);background:var(--falc-gray-300);position:relative;transition:background var(--dur-base) var(--ease-out);flex:none}.falc-switch-track::after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;transition:transform var(--dur-base) var(--ease-out)}.falc-switch input:checked+.falc-switch-track{background:var(--color-brand)}.falc-switch input:checked+.falc-switch-track::after{transform:translateX(18px)}.falc-switch input:focus-visible+.falc-switch-track{outline:2px solid var(--color-focus);outline-offset:2px}
.falc-card{background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-md);padding:var(--space-6);display:flex;flex-direction:column;gap:var(--space-3)}.falc-card-flat{border-color:transparent;background:var(--color-surface-2)}.falc-card-sand{border-color:transparent;background:var(--falc-sand-50)}.falc-card-deep{border-color:transparent;background:var(--falc-deep-800);color:#fff}.falc-card-deep .falc-eyebrow{color:var(--falc-teal-300)}.falc-card-elevated{border-color:transparent;box-shadow:var(--shadow-2)}.falc-card-interactive{cursor:pointer;transition:border-color var(--dur-fast) var(--ease-out),box-shadow var(--dur-base) var(--ease-out),transform var(--dur-base) var(--ease-out)}.falc-card-interactive:hover{border-color:var(--color-brand);box-shadow:var(--shadow-2);transform:translateY(-2px)}
.falc-badge{display:inline-flex;align-items:center;gap:6px;height:22px;padding:0 8px;border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap}.falc-badge-neutral{background:var(--falc-gray-100);color:var(--falc-gray-700)}.falc-badge-brand{background:var(--falc-teal-50);color:var(--falc-teal-800)}.falc-badge-sand{background:var(--falc-sand-100);color:var(--falc-sand-700)}.falc-badge-success{background:#E4F2EA;color:var(--falc-success)}.falc-badge-warning{background:#FBF0DC;color:#8A5A12}.falc-badge-danger{background:var(--falc-oxide-100);color:var(--falc-oxide-700)}.falc-badge-solid{background:var(--falc-deep-800);color:#fff}
.falc-tag{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 12px;border:1px solid var(--color-line);border-radius:var(--radius-pill);background:var(--color-surface);font-size:13px;color:var(--color-ink);cursor:pointer;transition:border-color var(--dur-fast) var(--ease-out),background var(--dur-fast) var(--ease-out)}.falc-tag:hover{border-color:var(--color-ink)}.falc-tag[aria-pressed="true"],.falc-tag-selected{background:var(--falc-deep-800);border-color:var(--falc-deep-800);color:#fff}.falc-tag-x{display:inline-grid;place-items:center;width:16px;height:16px;border-radius:50%;opacity:.7}.falc-tag-x:hover{opacity:1}
.falc-tabs{display:flex;gap:var(--space-6);border-bottom:1px solid var(--color-line);margin:0;padding:0;list-style:none}.falc-tab{position:relative;padding:12px 0;border:0;background:none;font-size:var(--text-sm);font-weight:500;color:var(--color-ink-3);cursor:pointer;transition:color var(--dur-fast) var(--ease-out)}.falc-tab:hover{color:var(--color-ink)}.falc-tab[aria-selected="true"]{color:var(--color-ink)}.falc-tab::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--color-brand);transform:scaleX(0);transform-origin:left;transition:transform var(--dur-base) var(--ease-out)}.falc-tab[aria-selected="true"]::after{transform:scaleX(1)}.falc-ground-deep .falc-tabs{border-color:var(--color-line-inverse)}.falc-ground-deep .falc-tab{color:rgba(255,255,255,.6)}.falc-ground-deep .falc-tab[aria-selected="true"],.falc-ground-deep .falc-tab:hover{color:#fff}
.falc-scrim{position:fixed;inset:0;background:rgba(6,43,46,.6);display:grid;place-items:center;padding:var(--space-6);z-index:100;animation:falc-fade var(--dur-base) var(--ease-out)}.falc-dialog{width:min(560px,100%);background:var(--color-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-3);padding:var(--space-8);display:flex;flex-direction:column;gap:var(--space-4);animation:falc-rise var(--dur-base) var(--ease-out)}.falc-dialog-title{font-family:var(--font-display);font-size:var(--text-2xl);line-height:var(--leading-snug)}.falc-dialog-actions{display:flex;justify-content:flex-end;gap:var(--space-3);margin-top:var(--space-2)}
.falc-toast{display:flex;align-items:flex-start;gap:var(--space-3);width:min(420px,100%);padding:14px 16px;border-radius:var(--radius-md);background:var(--falc-gray-900);color:#fff;box-shadow:var(--shadow-2);font-size:var(--text-sm);line-height:1.45;animation:falc-rise var(--dur-base) var(--ease-out)}.falc-toast-rule{flex:none;width:3px;align-self:stretch;border-radius:2px;background:var(--color-brand)}.falc-toast-success .falc-toast-rule{background:#5FB27F}.falc-toast-warning .falc-toast-rule{background:#E0A94A}.falc-toast-danger .falc-toast-rule{background:#E2755C}.falc-toast-body{flex:1;display:flex;flex-direction:column;gap:2px}.falc-toast-title{font-weight:600}.falc-toast-close{background:none;border:0;color:rgba(255,255,255,.7);cursor:pointer;padding:0;line-height:1}.falc-toast-close:hover{color:#fff}
.falc-tooltip{position:relative;display:inline-flex}.falc-tooltip-bubble{position:absolute;left:50%;bottom:calc(100% + 8px);transform:translate(-50%,4px);padding:6px 10px;border-radius:var(--radius-sm);background:var(--falc-gray-900);color:#fff;font-size:13px;line-height:1.3;white-space:nowrap;pointer-events:none;opacity:0;transition:opacity var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out)}.falc-tooltip-bubble::after{content:"";position:absolute;left:50%;top:100%;margin-left:-5px;border:5px solid transparent;border-top-color:var(--falc-gray-900)}.falc-tooltip:hover .falc-tooltip-bubble,.falc-tooltip:focus-within .falc-tooltip-bubble,.falc-tooltip-open .falc-tooltip-bubble{opacity:1;transform:translate(-50%,0)}
.falc-diamond{display:inline-block;width:10px;height:10px;transform:rotate(45deg);border:1.25px solid currentColor;position:relative;flex:none}.falc-diamond::after{content:"";position:absolute;inset:2px;background:var(--color-accent)}.falc-diamond-plain::after{display:none}.falc-diamond-lg{width:16px;height:16px}.falc-diamond-lg::after{inset:4px}
.falc-rule{display:flex;align-items:center;gap:var(--space-4);color:var(--color-ink-3)}.falc-rule::before,.falc-rule::after{content:"";flex:1;height:1px;background:currentColor;opacity:.35}
.falc-stat{display:flex;flex-direction:column;gap:var(--space-2)}.falc-stat-value{font-family:var(--font-display);font-weight:300;font-size:var(--text-5xl);line-height:1;letter-spacing:var(--tracking-display);font-variant-numeric:lining-nums;display:flex;align-items:baseline;gap:6px}.falc-stat-xl .falc-stat-value{font-size:var(--text-6xl)}.falc-stat-md .falc-stat-value{font-size:var(--text-4xl)}.falc-stat-affix{font-family:var(--font-mono);font-size:.32em;font-weight:500;letter-spacing:.06em;color:var(--falc-teal-500)}.falc-stat-label{font-size:var(--text-sm);color:inherit;max-width:26ch;line-height:1.4}.falc-ground-deep .falc-stat-label{color:var(--color-ink-inverse)}.falc-ground-deep .falc-stat-affix{color:var(--falc-teal-300)}
.falc-arch{position:relative;overflow:hidden;isolation:isolate}.falc-arch>svg.falc-arch-svg{position:absolute;inset:-8% 0;width:100%;height:116%;z-index:-1;will-change:transform}.falc-arch-content{position:relative}
/* Gate keyline: the opening of the central arch, drawn as a hairline so the
   motif reads as a gate even where the section crops its apex. */
.falc-arch-keyline{color:var(--falc-teal-300);opacity:.28}

.falc-photo{position:relative;overflow:hidden;background:var(--falc-deep-900)}.falc-photo img{display:block;width:100%;height:100%;object-fit:cover}.falc-photo-cut img{clip-path:polygon(0 0,100% 0,100% calc(100% - var(--cut,140px)),calc(100% - var(--cut,140px)) 100%,0 100%)}.falc-photo-cut-tl img{clip-path:polygon(var(--cut,140px) 0,100% 0,100% 100%,0 100%,0 var(--cut,140px))}.falc-photo-tint::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(6,43,46,0) 30%,rgba(6,43,46,.78) 100%)}.falc-photo-duotone img{filter:grayscale(1) contrast(1.1)}.falc-photo-duotone::after{content:"";position:absolute;inset:0;background:var(--falc-deep-800);mix-blend-mode:screen;opacity:.85}.falc-photo-duotone::before{content:"";position:absolute;inset:0;background:var(--falc-teal-500);mix-blend-mode:multiply;z-index:1;opacity:.55}
.falc-lattice{background-image:url("../motif/lattice.svg");background-size:48px 48px;opacity:.12}
@keyframes falc-fade{from{opacity:0}to{opacity:1}}@keyframes falc-rise{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}}

/* --------------------------------------------------------------------------
   Part 2. Site layout (from the handoff page files)
   -------------------------------------------------------------------------- */

/* Base */
html { scroll-behavior: smooth; }
img { max-width: 100%; }
ol, ul { margin: 0; padding: 0; }
address { font-style: normal; }
main { display: block; }
.skip-link { position: absolute; left: -9999px; top: 0; z-index: 200; background: var(--falc-deep-900); color: #fff; padding: 10px 18px; border-radius: 0 0 4px 0; text-decoration: none; }
.skip-link:focus { left: 0; color: #fff; }
.falc-sr-only { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
.preview-ribbon { background: var(--falc-oxide-500); color: #fff; text-align: center; font-family: var(--font-mono); font-size: 11px; letter-spacing: .12em; text-transform: uppercase; padding: 7px 16px; }

/* Container: max-width 1296px, gutter clamp(20px,4vw,48px) */
.container { max-width: 1296px; margin: 0 auto; padding-inline: var(--gutter); }

/* Type helpers */
.h-page { font-size: clamp(36px, 4vw, 56px); line-height: 1.08; letter-spacing: -.02em; }
.h-section { font-size: 40px; line-height: 1.15; letter-spacing: -.015em; }
.h-section-sm { font-size: 34px; line-height: 1.2; letter-spacing: -.015em; }
.lede { font-family: var(--font-display); font-size: 22px; line-height: 1.5; color: var(--color-ink); }
.lede-2 { font-family: var(--font-display); font-size: 20px; line-height: 1.5; color: var(--falc-gray-600); }
.mono-num { font-family: var(--font-mono); font-size: 13px; color: var(--falc-teal-500); }
.mono-meta { font-family: var(--font-mono); font-size: 11px; letter-spacing: .1em; text-transform: uppercase; color: var(--falc-sand-700); }
.mono-note { font-family: var(--font-mono); font-size: 12px; color: var(--falc-gray-600); }
.text-link { font-size: 14px; font-weight: 500; color: var(--color-ink); text-decoration: none; border-bottom: 1px solid var(--falc-teal-500); padding-bottom: 2px; width: max-content; }
.text-link:hover { color: var(--falc-teal-600); text-decoration: none; }
.falc-ground-deep .text-link { color: #fff; }
.prose-body { font-size: 17px; line-height: 1.65; }
.prose-body p + p { margin-top: 22px; }
.muted { color: var(--falc-gray-600); }
.max-66 { max-width: 66ch; }
.pretty { text-wrap: pretty; }
.stack-16 { display: grid; gap: 16px; align-content: start; }
.stack-12 { display: grid; gap: 12px; align-content: start; }
.stack-14 { display: grid; gap: 14px; align-content: start; }
.stack-28 { display: grid; gap: 28px; }
/* Pinned intro for the two-column splits. Only pinned once the split is
   really side by side; in a single column it would slide over the list. */
.sticky { position: static; }
@media (min-width: 800px) { .sticky { position: sticky; top: calc(var(--chrome-h, 88px) + 24px); } }

/* Two-column split used on most inner pages */
.split { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr)); gap: 48px 64px; align-items: start; }
.split-end { align-items: end; }

/* Section padding rhythm */
.sec-88 { padding-block: 88px; }
.sec-96 { padding-block: 96px; }
.sec-104 { padding-block: 104px; }
.sec-head { padding: 88px var(--gutter) 64px; }

/* Buttons at the page-file size (48px) */
.btn-48 { min-height: 48px; padding-inline: 28px; }
.falc-btn-white { background: #fff; color: var(--falc-deep-900); }
.falc-btn-white:hover { background: var(--falc-teal-50); color: var(--falc-deep-900); }

/* Hairline row lists (practices index, matters, sectors) */
.rows { list-style: none; border-top: 1px solid var(--falc-gray-200); }
.rows > li { border-bottom: 1px solid var(--falc-gray-200); }

/* Reveal on scroll: 12px rise + fade, once */
.reveal { opacity: 0; transform: translateY(12px); transition: opacity var(--dur-reveal) var(--ease-out), transform var(--dur-reveal) var(--ease-out); }
.reveal.is-in, .no-js .reveal { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) { .reveal { opacity: 1; transform: none; transition: none; } }

/* --- Site header (SiteNav) --- */
.site-header { background: #fff; }
.site-header .container { display: flex; align-items: center; justify-content: space-between; gap: 16px 24px; flex-wrap: wrap; padding-block: 18px; }
.site-header .brand { display: block; line-height: 0; }
.site-header .brand img { width: 132px; height: auto; }
.site-nav { display: flex; gap: 8px 18px; align-items: center; font-size: 14px; font-weight: 500; flex-wrap: wrap; justify-content: flex-end; }
.site-nav a { color: var(--color-ink); text-decoration: none; padding: 4px 0; }
.site-nav a:hover { color: var(--falc-teal-600); }
.site-nav a[aria-current="page"] { border-bottom: 1px solid var(--falc-teal-500); padding-bottom: 3px; }
.site-nav .nav-cta { display: inline-flex; align-items: center; min-height: 40px; padding: 0 20px; background: var(--falc-teal-500); color: #fff; border-radius: 2px; }
.site-nav .nav-cta:hover { background: var(--falc-teal-600); color: #fff; }
.site-nav .nav-cta[aria-current="page"] { border-bottom: 0; padding-bottom: 0; }
.nav-toggle { display: none; }
/* Wrapped nav exceeds two rows below roughly 760px, so a menu control appears there. */
@media (max-width: 760px) {
  .nav-toggle { display: inline-flex; align-items: center; gap: 8px; min-height: 40px; padding: 0 14px; border: 1px solid var(--falc-gray-400); border-radius: 2px; background: #fff; font-size: 13px; font-weight: 500; cursor: pointer; }
  .nav-toggle-bars { width: 16px; height: 2px; background: currentColor; position: relative; }
  .nav-toggle-bars::before, .nav-toggle-bars::after { content: ""; position: absolute; left: 0; width: 16px; height: 2px; background: currentColor; }
  .nav-toggle-bars::before { top: -5px; } .nav-toggle-bars::after { top: 5px; }
  .site-nav { display: none; flex-basis: 100%; flex-direction: column; align-items: stretch; gap: 0; border-top: 1px solid var(--falc-gray-200); padding-top: 8px; }
  .site-nav.is-open { display: flex; }
  .site-nav a { padding: 12px 0; border-bottom: 1px solid var(--falc-gray-100); }
  .site-nav a[aria-current="page"] { border-bottom: 1px solid var(--falc-gray-100); color: var(--falc-teal-600); padding-bottom: 12px; }
  .site-nav .nav-cta { margin-top: 12px; justify-content: center; border-bottom: 0; }
  .site-nav .nav-cta[aria-current="page"] { color: #fff; border-bottom: 0; padding-bottom: 0; }
}

/* --- Site footer (SiteFooter) --- */
.site-footer { background: var(--falc-deep-900); color: #fff; font-size: 14px; }
.site-footer .container { padding: 72px var(--gutter) 40px; display: grid; gap: 56px; }
.footer-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 40px; }
.footer-brand { display: grid; gap: 20px; align-content: start; }
.footer-brand img { width: 124px; height: auto; }
.footer-brand address { line-height: 1.6; color: #fff; }
.footer-brand a { color: #fff; text-decoration: none; }
.footer-brand a:hover { text-decoration: underline; }
.footer-col { display: grid; gap: 12px; align-content: start; }
.footer-col ul { list-style: none; display: grid; gap: 12px; }
.footer-heading { font-family: var(--font-mono); font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--falc-teal-300); font-weight: 400; margin: 0; }
.footer-col a { color: inherit; text-decoration: none; }
.footer-col a:hover { color: var(--falc-teal-300); }
.footer-legal { display: flex; justify-content: space-between; align-items: center; gap: 24px; flex-wrap: wrap; border-top: 1px solid rgba(255,255,255,.18); padding-top: 28px; font-size: 12px; color: #fff; }
.footer-legal .copy { max-width: 72ch; }
.footer-legal .links { display: flex; gap: 20px; }
.footer-legal .links a { color: inherit; text-decoration: none; }
.footer-legal .links a:hover { text-decoration: underline; }

/* --- Home: hero (ArchField deep, anchor bottom) ---
   The gate stands on the centre line. The copy sits in the left half over a
   scrim, so the arch is read whole while the headline keeps its contrast. */
.hero { --hero-scrim: 62%; }
.hero::before { content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none;
  background: linear-gradient(100deg, rgba(6,43,46,.88) 0%, rgba(6,43,46,.66) 38%, rgba(6,43,46,0) var(--hero-scrim)); }
.hero::after { content: ""; position: absolute; inset: auto 0 0 0; height: 45%; z-index: -1; pointer-events: none;
  background: linear-gradient(180deg, rgba(6,43,46,0) 0%, rgba(6,43,46,.55) 100%); }
/* The hero fills whatever is visible below the header on first load:
   --chrome-h is the header (and preview ribbon) height, set by site.js. */
.hero .container { min-height: calc(100vh - var(--chrome-h, 88px)); min-height: calc(100svh - var(--chrome-h, 88px)); display: grid; align-content: end; gap: 22px; padding-block: 120px 88px; color: #fff; }
.hero h1 { font-size: clamp(40px, 5.2vw, 72px); line-height: 1.06; letter-spacing: -.02em; max-width: 14ch; }
.hero .lede { color: #fff; max-width: 52ch; }
.hero-actions { display: flex; gap: 14px; margin-top: 12px; flex-wrap: wrap; }
@media (max-width: 760px) {
  /* Phones: the copy stacks at the foot of the hero, so the scrim runs top to
     bottom (clear above, dark behind the text) instead of across, and the
     keyline gate is raised so its apex clears the headline; its legs fade
     out before they reach the copy. The animations are unchanged. */
  .hero::before { background: linear-gradient(180deg, rgba(6,43,46,0) 0%, rgba(6,43,46,.12) 38%, rgba(6,43,46,.74) 100%); }
  .hero .container { padding-block: 96px 64px; }
  .hero-glow { top: 10%; }
}

/* --- Home: statistics band --- */
.stats-band { background: var(--falc-deep-800); color: #fff; }
.stats-band .container { padding-block: 72px; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 200px), 1fr)); gap: 40px 32px; }
.stats-band .falc-stat-label { color: #fff; }
.stats-band .falc-stat-affix { color: var(--falc-teal-300); }
/* Counting figures: tabular numerals so the row does not reflow while a value
   runs up, and a short rise as the band enters the viewport. */
.falc-stat-value .falc-count { font-variant-numeric: tabular-nums lining-nums; }
.stats-band .falc-stat { opacity: 1; transition: opacity var(--dur-base) var(--ease-out), transform var(--dur-base) var(--ease-out); }
.stats-band.is-counting .falc-stat-value { transform: none; }
@media (prefers-reduced-motion: reduce) { .stats-band .falc-stat { transition: none; } }

/* --- Home: pillars --- */
.pillars .container { padding-block: 104px; display: grid; gap: 48px; }
.pillar-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 340px), 1fr)); gap: 24px; }
.pillar { display: grid; gap: 18px; align-content: start; padding: 36px 32px; border: 1px solid var(--falc-gray-200); border-radius: 4px; color: var(--color-ink); text-decoration: none; transition: border-color var(--dur-base) var(--ease-out), transform var(--dur-base) var(--ease-out), box-shadow var(--dur-base) var(--ease-out); }
.pillar:hover { border-color: var(--falc-teal-500); transform: translateY(-2px); box-shadow: var(--shadow-2); text-decoration: none; color: var(--color-ink); }
.pillar p { font-family: var(--font-display); font-size: 20px; line-height: 1.45; }
.pillar .text-link { font-size: 14px; }

/* --- Home: vision (sand, text left, photo right with 140px 45° cut) --- */
.vision { background: var(--falc-sand-50); }
.vision-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 420px), 1fr)); min-height: 520px; }
.vision-text { padding: 96px var(--gutter); display: grid; align-content: center; gap: 24px; max-width: 720px; margin-left: auto; width: 100%; }
.vision-text h2 { font-size: 40px; line-height: 1.15; letter-spacing: -.015em; }
.vision-photo { position: relative; min-height: 320px; display: grid; }
.vision-photo img { display: block; width: 100%; height: 100%; min-height: 320px; object-fit: cover; clip-path: polygon(clamp(0px, calc((100% - 420px) * 999), 140px) 0, 100% 0, 100% 100%, 0 100%); }
@media (max-width: 480px) { .vision-text h2 { font-size: 32px; } }

/* --- Home: sectors index --- */
.sectors-home .container { padding-block: 96px; display: grid; gap: 32px; }
.sectors-home-head { display: flex; justify-content: space-between; align-items: baseline; gap: 24px; flex-wrap: wrap; }
.sectors-home ol { list-style: none; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); gap: 0 32px; }
.sectors-home li { display: flex; gap: 16px; align-items: baseline; padding: 18px 0; border-top: 1px solid var(--falc-gray-200); }
.sectors-home li .name { font-family: var(--font-display); font-size: 20px; }

/* --- Home: network band --- */
.network { background: var(--falc-deep-900); color: #fff; }
.network .container { padding-block: 88px; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr)); gap: 40px 48px; align-items: center; }
.network p { font-family: var(--font-display); font-size: 28px; line-height: 1.35; max-width: 34ch; }
.network .falc-stat-label { color: #fff; }

/* --- Home: CTA (ArchField teal, anchor top) --- */
.cta .container { padding-block: 120px; display: grid; gap: 20px; text-align: center; justify-items: center; color: #fff; }
.cta h2 { font-size: 44px; line-height: 1.12; letter-spacing: -.015em; max-width: 24ch; }
.cta .falc-btn { margin-top: 8px; }
@media (max-width: 480px) { .cta h2 { font-size: 34px; } }

/* --- The Firm --- */
.firm-intro { padding-block: 88px 96px; }
.firm-intro .prose-body { color: #3A3A3A; max-width: 66ch; display: grid; gap: 22px; }
.firm-intro .prose-body p + p { margin-top: 0; }
.firm-vision { background: var(--falc-deep-900); color: #fff; position: relative; overflow: hidden; }
.firm-vision .container { padding-block: 104px; }
.firm-vision .prose-body { display: grid; gap: 28px; color: #fff; max-width: 66ch; }
.firm-vision .prose-body p + p { margin-top: 0; }
.q-list { list-style: none; display: grid; border-top: 1px solid rgba(255,255,255,.18); }
.q-list li { display: grid; grid-template-columns: 40px minmax(0, 1fr); gap: 16px; padding: 18px 0; border-bottom: 1px solid rgba(255,255,255,.18); }
.q-list .mono-num { color: var(--falc-teal-300); }
.q-list strong { font-weight: 500; color: #fff; }
.icon-defs { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr)); gap: 20px; }
.icon-def { padding: 24px; border: 1px solid rgba(255,255,255,.18); border-radius: 4px; display: grid; gap: 8px; }
.icon-def .k { font-family: var(--font-mono); font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--falc-teal-300); }
.firm-vision .pull { font-family: var(--font-display); font-size: 24px; line-height: 1.4; color: #fff; }
.values .container { padding-block: 104px; display: grid; gap: 40px; }
.value-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 250px), 1fr)); gap: 24px; }
.value { display: grid; gap: 16px; align-content: start; padding: 32px 28px; border: 1px solid var(--falc-gray-200); border-radius: 4px; }
.value .letter { font-family: var(--font-display); font-weight: 300; font-size: 64px; line-height: 1; color: var(--falc-teal-500); }
.value h3 { font-size: 22px; }
.value p { font-size: 15px; line-height: 1.6; color: var(--falc-gray-600); }
.credentials { background: var(--falc-sand-50); }
.credentials .container { padding-block: 96px; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); gap: 48px; }
.credentials h2 { font-size: 28px; line-height: 1.25; }
.credentials p { font-size: 16px; line-height: 1.6; color: #3A3A3A; }
.credentials .spacer { color: transparent; }
.network-list { background: var(--falc-deep-800); color: #fff; }
.network-list .container { padding-block: 88px; display: grid; gap: 28px; }
.network-list ul { list-style: none; display: flex; flex-wrap: wrap; gap: 12px 0; }
.network-list li { font-family: var(--font-display); font-size: 24px; padding-right: 28px; margin-right: 28px; border-right: 1px solid rgba(255,255,255,.25); }
.network-list li:last-child { border-right: 0; margin-right: 0; padding-right: 0; }

/* --- Practices index --- */
.practices-index { padding-block: 88px 112px; }
.practice-row { display: grid; grid-template-columns: 48px minmax(0, 1fr) 24px; gap: 20px; padding: 26px 0; align-items: baseline; color: var(--color-ink); text-decoration: none; }
.practice-row:hover { color: var(--color-ink); text-decoration: none; }
.practice-row:hover .name { color: var(--falc-teal-600); }
.practice-row .name { font-family: var(--font-display); font-size: 26px; line-height: 1.25; transition: color var(--dur-fast) var(--ease-out); }
.practice-row .short { font-size: 15px; line-height: 1.55; color: var(--falc-gray-600); max-width: 60ch; }
.practice-row .body { display: grid; gap: 6px; }
.practice-row svg { align-self: center; }
@media (max-width: 480px) { .practice-row { grid-template-columns: 36px minmax(0, 1fr); } .practice-row svg { display: none; } .practice-row .name { font-size: 22px; } }

/* --- Practice template --- */
.page-band { background: var(--falc-deep-900); color: #fff; }
.page-band .container { padding-block: 88px 80px; display: grid; gap: 22px; }
.crumbs { display: flex; gap: 10px; align-items: center; font-family: var(--font-mono); font-size: 12px; letter-spacing: .14em; text-transform: uppercase; color: var(--falc-teal-300); flex-wrap: wrap; }
.crumbs a { color: inherit; text-decoration: none; }
.crumbs a:hover { color: #fff; }
.h-band { font-size: clamp(36px, 4.6vw, 64px); line-height: 1.06; letter-spacing: -.02em; max-width: 18ch; }
.practice-intro { padding-block: 88px; }
.practice-intro .lede { line-height: 1.55; max-width: 62ch; }
.stat-panel { display: grid; gap: 36px; padding: 32px; background: var(--falc-sand-50); border-radius: 4px; }
.stat-panel .falc-stat-value { font-size: 56px; gap: 8px; }
.stat-panel .falc-stat-affix { font-size: 14px; color: var(--falc-teal-600); }
.stat-panel .falc-stat-label { color: var(--falc-gray-600); line-height: 1.45; }
.workflow { background: var(--falc-sand-50); }
.workflow .container { padding-block: 96px; display: grid; gap: 40px; }
.workflow h2 { font-size: 36px; line-height: 1.2; letter-spacing: -.015em; }
.step-grid { list-style: none; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 250px), 1fr)); gap: 24px; }
.step { display: grid; gap: 14px; align-content: start; padding: 28px; background: #fff; border-radius: 4px; }
.step h3, .step h2 { font-size: 22px; line-height: 1.3; }
.step p { font-size: 15px; line-height: 1.6; color: var(--falc-gray-600); }
.practice-photo { position: relative; min-height: 420px; background: var(--falc-deep-900); }
.practice-photo img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.experience-sel { padding-block: 96px; }
.matter-list { list-style: none; border-top: 1px solid var(--falc-gray-200); }
.matter { display: grid; grid-template-columns: 72px minmax(0, 1fr); gap: 20px; padding: 26px 0; border-bottom: 1px solid var(--falc-gray-200); scroll-margin-top: 32px; }
.matter .id { font-family: var(--font-mono); font-size: 12px; letter-spacing: .06em; color: var(--falc-teal-500); padding-top: 4px; }
.matter .body { display: grid; gap: 8px; }
.matter p { font-size: 16px; line-height: 1.6; max-width: 66ch; text-wrap: pretty; }
.matter:target { background: var(--falc-teal-50); box-shadow: 0 0 0 12px var(--falc-teal-50); border-radius: 2px; }
@media (max-width: 480px) { .matter { grid-template-columns: 1fr; gap: 8px; } }
.closing { background: var(--falc-sand-50); }
.closing .container { padding-block: 96px; display: grid; gap: 24px; justify-items: center; text-align: center; }
.closing p { font-family: var(--font-display); font-size: 36px; line-height: 1.25; letter-spacing: -.015em; max-width: 26ch; }
@media (max-width: 480px) { .closing p { font-size: 28px; } }

/* --- Sectors --- */
.sector-list { padding: 0 var(--gutter) 112px; }
.sector-row { display: grid; grid-template-columns: 48px repeat(auto-fit, minmax(min(100%, 260px), 1fr)); gap: 24px 32px; padding: 36px 0; align-items: start; }
.sector-row .mono-num { padding-top: 8px; }
.sector-row h2 { font-size: 30px; line-height: 1.2; }
.sector-row .body { display: grid; gap: 10px; }
.sector-row .body p { font-size: 16px; line-height: 1.55; color: var(--falc-gray-600); max-width: 44ch; }
.sector-matter { display: grid; gap: 8px; padding: 24px; background: var(--falc-sand-50); border-radius: 4px; color: var(--color-ink); text-decoration: none; transition: background var(--dur-fast) var(--ease-out); }
.sector-matter:hover { background: var(--falc-sand-100); color: var(--color-ink); text-decoration: none; }
.sector-matter .text { font-size: 15px; line-height: 1.6; text-wrap: pretty; }
@media (max-width: 480px) { .sector-row { grid-template-columns: 1fr; } .sector-row .mono-num { padding-top: 0; } }

/* --- Experience --- */
.exp-head { padding-block: 88px 72px; display: grid; gap: 16px; }
.exp-stats { background: var(--falc-deep-800); color: #fff; }
.exp-stats .container { padding-block: 80px; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)); gap: 0 32px; }
.exp-stat { padding: 24px 0; border-top: 1px solid rgba(255,255,255,.18); display: grid; gap: 8px; align-content: start; }
.exp-stat .v { font-family: var(--font-display); font-weight: 300; font-size: 44px; line-height: 1; letter-spacing: -.02em; }
.exp-stat .l { font-size: 14px; line-height: 1.5; color: #fff; }
.exp-stat .v { display: flex; align-items: baseline; gap: 6px; }
.exp-stat .falc-stat-affix { color: var(--falc-teal-300); }
.exp-groups { padding-block: 104px; display: grid; gap: 72px; }
.exp-group h2 { font-size: 34px; line-height: 1.2; letter-spacing: -.015em; }
.jurisdictions { background: var(--falc-sand-50); }
.jurisdictions .container { padding-block: 96px; display: grid; gap: 40px; }
.jurisdictions h2 { font-size: 34px; line-height: 1.2; letter-spacing: -.015em; }
.continents { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 180px), 1fr)); gap: 32px; }
.continent { display: grid; gap: 12px; align-content: start; border-top: 1px solid var(--falc-sand-300); padding-top: 16px; }
.continent .k { font-family: var(--font-mono); font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--falc-sand-700); }
.continent ul { list-style: none; display: grid; gap: 8px; }
.continent li { font-family: var(--font-display); font-size: 20px; }
.outcomes { padding-block: 104px; }
.outcomes h2 { font-size: 34px; line-height: 1.2; letter-spacing: -.015em; }

/* --- People --- */
.people-head { padding-block: 88px 64px; }
.people-head .lede { color: var(--falc-gray-600); max-width: 44ch; }
.people-grid-wrap { padding: 0 var(--gutter) 112px; }
.people-grid { list-style: none; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 260px), 1fr)); gap: 24px; }
.person-card { display: grid; grid-template-rows: 180px 1fr; color: var(--color-ink); text-decoration: none; border: 1px solid var(--falc-gray-200); border-radius: 4px; overflow: hidden; height: 100%; transition: border-color var(--dur-base) var(--ease-out), transform var(--dur-base) var(--ease-out), box-shadow var(--dur-base) var(--ease-out); }
.person-card:hover { border-color: var(--falc-teal-500); transform: translateY(-2px); box-shadow: var(--shadow-2); color: var(--color-ink); text-decoration: none; }
.monogram { display: grid; place-items: center; height: 180px; background: var(--falc-deep-800); color: #fff; font-family: var(--font-display); font-weight: 300; font-size: 56px; letter-spacing: .02em; }
.person-card .body { display: grid; gap: 6px; padding: 20px 22px 24px; align-content: start; }
.person-card .name { font-family: var(--font-display); font-size: 22px; line-height: 1.25; }
.person-card .title { font-family: var(--font-mono); font-size: 11px; letter-spacing: .1em; text-transform: uppercase; color: var(--falc-teal-600); }
.person-card .headline { font-size: 14px; line-height: 1.5; color: var(--falc-gray-600); margin-top: 6px; }

/* --- Person template --- */
.profile-band { background: var(--falc-deep-900); color: #fff; }
.profile-band .container { padding-block: 80px; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 200px), 1fr)); gap: 48px; align-items: end; }
.profile-monogram { display: grid; place-items: center; width: 200px; max-width: 100%; aspect-ratio: 1; background: var(--falc-deep-800); font-family: var(--font-display); font-weight: 300; font-size: 64px; letter-spacing: .02em; border-radius: 4px; }
.profile-band .intro { display: grid; gap: 14px; }
.profile-band h1 { font-size: clamp(36px, 4.6vw, 60px); line-height: 1.06; letter-spacing: -.02em; }
.profile-band .headline { font-family: var(--font-display); font-size: 22px; line-height: 1.4; color: #fff; max-width: 40ch; }
@media (min-width: 900px) { .profile-band .container { grid-template-columns: 200px minmax(0, 1fr); } }
.bio { padding-block: 88px; }
.bio .highlight { padding: 20px 24px; background: var(--falc-sand-50); border-radius: 4px; font-family: var(--font-display); font-size: 19px; line-height: 1.45; }
.bio .text { font-size: 17px; line-height: 1.65; max-width: 66ch; text-wrap: pretty; }
.facts { display: grid; gap: 28px; }
.fact { display: grid; gap: 6px; border-top: 1px solid var(--falc-gray-200); padding-top: 16px; }
.fact .v { font-family: var(--font-display); font-weight: 300; font-size: 44px; line-height: 1; letter-spacing: -.02em; }
.fact .l { font-size: 14px; line-height: 1.5; color: var(--falc-gray-600); }
.fact .k { font-family: var(--font-mono); font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--falc-teal-600); }
.fact .t { font-size: 15px; line-height: 1.55; }
.competencies { background: var(--falc-sand-50); }
.competencies .container { padding-block: 88px; display: grid; gap: 36px; }
.comp-grid { list-style: none; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); gap: 24px; }
.comp { display: grid; gap: 12px; align-content: start; padding: 28px; background: #fff; border-radius: 4px; }
.comp h2 { font-size: 22px; line-height: 1.3; }
.comp p { font-size: 15px; line-height: 1.6; color: var(--falc-gray-600); text-wrap: pretty; }
.focus { background: var(--falc-sand-50); }
.focus .container { padding-block: 88px; }
.pills { list-style: none; display: flex; flex-wrap: wrap; gap: 8px; }
.pills li { font-size: 14px; padding: 8px 14px; border: 1px solid var(--falc-gray-400); border-radius: 999px; }
.hl-list { list-style: none; border-top: 1px solid var(--falc-sand-300); }
.hl-list li { display: grid; grid-template-columns: 40px minmax(0, 1fr); gap: 16px; padding: 18px 0; border-bottom: 1px solid var(--falc-sand-300); }
.hl-list .t { font-size: 16px; line-height: 1.6; }
.person-close { padding-block: 80px; display: flex; justify-content: space-between; align-items: center; gap: 24px; flex-wrap: wrap; }

/* --- Client Service --- */
.cs-head { padding-block: 88px 72px; display: grid; gap: 16px; }
.cs-standards { padding: 0 var(--gutter) 104px; }
.card-grid { list-style: none; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 250px), 1fr)); gap: 24px; }
.card-grid-300 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); }
.outline-card { display: grid; gap: 12px; align-content: start; padding: 28px; border: 1px solid var(--falc-gray-200); border-radius: 4px; }
.outline-card-32 { padding: 32px; gap: 14px; }
.outline-card h2, .outline-card h3 { font-size: 22px; }
.outline-card h3.lg { font-size: 24px; line-height: 1.3; }
.outline-card p { font-size: 15px; line-height: 1.6; color: var(--falc-gray-600); }
.reporting { background: var(--falc-deep-800); color: #fff; }
.reporting .container { padding-block: 88px; display: grid; gap: 48px; }
.reporting .lede { color: #fff; max-width: 66ch; }
.dispute { padding-block: 104px; }
.dispute h2 { font-size: 34px; line-height: 1.2; letter-spacing: -.015em; }
.dispute .prose-body { display: grid; gap: 24px; max-width: 66ch; }
.dispute .prose-body p + p { margin-top: 0; }
.dispute .pull { font-family: var(--font-display); font-size: 22px; line-height: 1.45; color: var(--falc-teal-600); }
.conflicts { background: var(--falc-sand-50); }
.conflicts .container { padding-block: 88px; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr)); gap: 48px; }
.conflicts h2 { font-size: 24px; line-height: 1.3; }
.conflicts p { font-size: 15px; line-height: 1.6; color: #3A3A3A; }
.conflicts .spacer { color: transparent; }
.training .container { padding-block: 104px; display: grid; gap: 40px; }
.training h2 { font-size: 34px; line-height: 1.2; letter-spacing: -.015em; max-width: 24ch; }

/* --- Insights holding page --- */
/* --- Insights: index and article --- */
.insights-head { padding-block: 88px 48px; display: grid; gap: 16px; }
.insights-head h1 { max-width: 22ch; }
.insights-list { padding-block: 0 112px; }
.insight-grid { list-style: none; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr)); gap: 48px 32px; }
.insight-card a { display: grid; gap: 20px; color: var(--color-ink); text-decoration: none; }
.insight-card a:hover { text-decoration: none; color: var(--color-ink); }
.insight-card a:hover h2 { color: var(--falc-teal-600); }
.insight-media { overflow: hidden; border-radius: 4px; background: var(--falc-gray-100); aspect-ratio: 3 / 2; }
.insight-media img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform 1.2s var(--ease-out); }
.insight-card a:hover .insight-media img { transform: scale(1.03); }
.insight-text { display: grid; gap: 12px; align-content: start; justify-items: start; }
.insight-meta { display: flex; flex-wrap: wrap; gap: 6px 16px; align-items: baseline; }
.insight-card h2 { font-size: 26px; line-height: 1.25; letter-spacing: -.01em; max-width: 30ch; transition: color var(--dur-fast) var(--ease-out); }
.insight-summary { font-size: 15px; line-height: 1.55; color: var(--falc-gray-600); max-width: 60ch; }
.insight-card.is-lead { grid-column: 1 / -1; }
@media (min-width: 800px) { .insight-card.is-lead a { grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: 48px; align-items: center; } .insight-card.is-lead h2 { font-size: clamp(30px, 3vw, 40px); } }
.article-head { padding-block: 88px 40px; display: grid; gap: 18px; }
.article-title { max-width: 24ch; font-size: clamp(32px, 3.6vw, 52px); }
.article-standfirst { max-width: 60ch; }
.article-byline { display: flex; flex-wrap: wrap; gap: 6px 0; font-family: var(--font-mono); font-size: 12px; letter-spacing: .06em; text-transform: uppercase; color: var(--falc-gray-600); }
.article-byline span + span::before { content: "·"; margin-inline: 12px; }
.article-hero { display: grid; gap: 12px; margin: 0 auto 64px; }
.article-hero img { width: 100%; height: auto; display: block; border-radius: 4px; }
@media (max-width: 760px) { .article-hero { margin-bottom: 48px; } .article-hero img { aspect-ratio: 4 / 3; height: auto; object-fit: cover; } .insight-media { aspect-ratio: 4 / 3; } }
.article-hero figcaption { font-size: 14px; line-height: 1.5; color: var(--falc-gray-600); max-width: 70ch; }
.article-hero .credit { color: var(--falc-gray-500); }
.article { padding-block: 0 96px; }
@media (min-width: 800px) { .article.split { grid-template-columns: minmax(200px, 1fr) minmax(0, 2.8fr); } }
.article-facts { display: grid; gap: 14px; margin: 0; }
.article-facts div { display: grid; gap: 3px; }
.article-facts dt { font-family: var(--font-mono); font-size: 11px; letter-spacing: .1em; text-transform: uppercase; color: var(--falc-gray-600); }
.article-facts dd { margin: 0; font-size: 15px; }
.article-side { min-width: 0; }
.article-side .text-link { font-size: 14px; width: auto; max-width: 100%; }
.article-prose h2 { font-size: 26px; }
.article-prose blockquote { margin: 24px 0; padding: 4px 0 4px 20px; border-left: 2px solid var(--falc-teal-500); font-family: var(--font-display); font-size: 19px; line-height: 1.5; color: var(--falc-gray-600); }
.article-prose blockquote p:last-child { margin-bottom: 0; }
.article-prose figure { margin: 28px 0; display: grid; gap: 10px; }
.article-prose figure img { width: 100%; height: auto; border-radius: 4px; }
.article-prose figcaption { font-size: 14px; color: var(--falc-gray-600); }
.article-prose a { overflow-wrap: anywhere; }
.article-prose sup.fn { font-size: 11px; line-height: 0; vertical-align: super; margin-left: 1px; }
.article-prose sup.fn a { text-decoration: none; font-family: var(--font-mono); }
.article-prose .footnotes { margin-top: 56px; padding-top: 24px; border-top: 1px solid var(--falc-gray-200); font-size: 14px; line-height: 1.55; color: var(--falc-gray-600); }
.article-prose .footnotes h2 { font-family: var(--font-mono); font-size: 11px; letter-spacing: .12em; text-transform: uppercase; color: var(--falc-gray-600); margin: 0 0 14px; }
.article-prose .footnotes ol { margin: 0 0 0 20px; }
.article-prose .footnotes li { margin-bottom: 8px; }
.article-prose .footnotes li:target { background: var(--falc-sand-100); }
.fn-back { text-decoration: none; margin-left: 4px; }

/* --- Contact --- */
.contact { padding-block: 88px 120px; }
.contact-info { display: grid; gap: 28px; }
.contact-info address { font-size: 17px; line-height: 1.65; display: grid; gap: 20px; }
.contact-info .firm { font-family: var(--font-display); font-size: 20px; }
.contact-info .links { display: grid; gap: 4px; }
.contact-info .links a { color: var(--color-ink); text-decoration: none; width: max-content; }
.contact-info .links a.email { border-bottom: 1px solid var(--falc-teal-500); }
.contact-form { display: grid; gap: 20px; padding: 36px; background: var(--falc-sand-50); border-radius: 4px; }
.contact-form .falc-input { background: #fff; }
.contact-form .falc-btn { width: max-content; border: 0; }
.form-success { display: none; padding: 20px 24px; background: #fff; border-left: 3px solid var(--falc-teal-500); border-radius: 4px; font-size: 15px; line-height: 1.55; }
.form-success.is-shown { display: block; }
.hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
@media (max-width: 480px) { .contact-form { padding: 24px 20px; } }

/* --- Legal pages and 404 (prose) --- */
.legal-head { padding-block: 88px 48px; display: grid; gap: 16px; }
.legal-head h1 { max-width: 18ch; }
.legal-body { padding-block: 0 112px; }
.prose { max-width: 68ch; font-size: 17px; line-height: 1.65; }
.prose h2 { font-size: 28px; line-height: 1.25; margin-top: 44px; margin-bottom: 14px; }
.prose h2:first-child { margin-top: 0; }
.prose h3 { font-size: 22px; margin-top: 28px; margin-bottom: 10px; }
.prose p { margin: 0 0 16px; }
.prose ul, .prose ol { margin: 0 0 16px 22px; padding: 0; }
.prose li { margin-bottom: 6px; }
.prose strong { font-weight: 600; }
.prose a { color: var(--falc-teal-700); }
.prose .statute { margin: 8px 0 20px; border: 1px solid var(--falc-gray-200); border-radius: 4px; overflow-x: auto; }
.prose table { border-collapse: collapse; width: 100%; font-size: 15px; }
.prose td, .prose th { padding: 12px 16px; border-bottom: 1px solid var(--falc-gray-200); vertical-align: top; text-align: left; }
.prose tr:first-child td { font-family: var(--font-mono); font-size: 11px; letter-spacing: .1em; text-transform: uppercase; color: var(--falc-gray-600); background: var(--falc-gray-50); }
.prose tr:last-child td { border-bottom: 0; }
mark.verify { background: var(--falc-oxide-100); color: var(--falc-oxide-700); font-family: var(--font-mono); font-size: .8em; font-weight: 500; letter-spacing: .04em; padding: 2px 8px; border-radius: 2px; white-space: normal; }
.notfound { padding-block: 120px 160px; display: grid; gap: 16px; min-height: 50vh; }
.notfound .lede-2 { max-width: 52ch; }

/* --------------------------------------------------------------------------
   Part 3. Refinement layer
   Overrides and additions on top of Parts 1 and 2, in the same tokens and the
   same restraint: directional buttons, one card language, a sticky header,
   and a closing route to the firm on every page. No new colour, no new face.
   -------------------------------------------------------------------------- */

/* Anchored targets sit below the sticky header */
html { scroll-padding-top: 104px; }
.matter, .sector-row { scroll-margin-top: 104px; }

/* Focus on dark grounds: the teal ring vanishes against teal, so it goes white */
.falc-ground-deep :focus-visible, .falc-arch :focus-visible, .stats-band :focus-visible, .network :focus-visible,
.site-footer :focus-visible, .page-band :focus-visible, .profile-band :focus-visible, .exp-stats :focus-visible { outline-color: #fff; }

/* --- Buttons: a directional arrow that answers hover, a press that settles --- */
.falc-btn { gap: 10px; }
.falc-btn svg { width: 16px; height: 16px; flex: none; transition: transform var(--dur-base) var(--ease-out); }
.falc-btn:hover svg, .falc-btn:focus-visible svg { transform: translateX(3px); }
.falc-btn-primary { box-shadow: inset 0 -1px 0 rgba(6,43,46,.18); }
.falc-btn-primary:hover { box-shadow: inset 0 -1px 0 rgba(6,43,46,.28), var(--shadow-1); }
.falc-btn-outline-inverse { background: transparent; color: #fff; border-color: rgba(255,255,255,.5); }
.falc-btn-outline-inverse:hover { color: #fff; border-color: #fff; background: rgba(255,255,255,.08); }
.falc-btn-white { box-shadow: var(--shadow-1); }
.falc-btn-white:hover { background: #fff; box-shadow: var(--shadow-2); }
@media (prefers-reduced-motion: reduce) { .falc-btn:hover svg, .falc-btn:focus-visible svg { transform: none; } }

/* --- Text links: the arrow is a mask so it takes the link colour --- */
.text-link { display: inline-flex; align-items: center; gap: 8px; border-bottom: 0; padding-bottom: 0;
  text-decoration: underline; text-decoration-color: var(--falc-teal-500); text-decoration-thickness: 1px; text-underline-offset: 5px;
  transition: color var(--dur-fast) var(--ease-out), text-decoration-color var(--dur-fast) var(--ease-out); }
.text-link::after { content: ""; width: 14px; height: 14px; flex: none; background: currentColor;
  -webkit-mask: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3 8h9M8.5 4.5 12 8l-3.5 3.5' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3 8h9M8.5 4.5 12 8l-3.5 3.5' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
  transition: transform var(--dur-base) var(--ease-out); }
.text-link:hover { text-decoration: underline; text-decoration-color: currentColor; }
.text-link:hover::after { transform: translateX(3px); }
.falc-ground-deep .text-link, .cta-band .text-link { text-decoration-color: var(--falc-teal-300); }

/* --- Header: sticky, with a hairline and a soft shadow once the page moves --- */
.site-header { position: sticky; top: 0; z-index: 50; border-bottom: 1px solid transparent;
  transition: border-color var(--dur-base) var(--ease-out), box-shadow var(--dur-base) var(--ease-out); }
.site-header.is-scrolled { border-bottom-color: var(--falc-gray-200); box-shadow: 0 8px 24px -16px rgba(6,43,46,.22); }
.site-nav a { position: relative; padding: 8px 0; transition: color var(--dur-fast) var(--ease-out); }
.site-nav a:not(.nav-cta)::after { content: ""; position: absolute; left: 0; right: 0; bottom: 3px; height: 1.5px; background: var(--falc-teal-500);
  transform: scaleX(0); transform-origin: left; transition: transform var(--dur-base) var(--ease-out); }
.site-nav a:not(.nav-cta):hover::after, .site-nav a:not(.nav-cta):focus-visible::after, .site-nav a[aria-current="page"]:not(.nav-cta)::after { transform: scaleX(1); }
.site-nav a[aria-current="page"] { border-bottom: 0; padding-bottom: 8px; }
.site-nav .nav-cta { min-height: 44px; padding: 0 22px; box-shadow: inset 0 -1px 0 rgba(6,43,46,.18); }
@media (max-width: 760px) {
  .site-nav a:not(.nav-cta)::after { display: none; }
  .site-nav a { padding: 12px 0; }
  .site-nav a[aria-current="page"] { padding-bottom: 12px; border-bottom: 1px solid var(--falc-gray-100); }
  .site-nav .nav-cta { margin-top: 12px; }
}

/* --- Cards: one language ---
   White or sand ground, 1px hairline, 4px radius. Cards that lead somewhere
   answer hover with a teal rule drawn in from the left, a 2px lift and the
   design-system shadow. Cards that only inform keep still. */
.pillar, .person-card, .sector-matter { position: relative; overflow: hidden; }
.pillar::before, .person-card::before, .sector-matter::before { content: ""; position: absolute; left: 0; top: 0; right: 0; height: 2px; background: var(--falc-teal-500);
  transform: scaleX(0); transform-origin: left; transition: transform var(--dur-slow) var(--ease-out); z-index: 1; }
.pillar:hover::before, .person-card:hover::before, .sector-matter:hover::before,
.pillar:focus-visible::before, .person-card:focus-visible::before, .sector-matter:focus-visible::before { transform: scaleX(1); }
.pillar { grid-template-rows: auto 1fr auto; align-content: stretch; }
.pillar .falc-eyebrow { font-family: var(--font-mono); font-size: var(--text-xs); line-height: var(--leading-normal); }
.pillar .text-link { align-self: end; }
.sector-matter { border: 1px solid var(--falc-sand-100); transition: background var(--dur-base) var(--ease-out), border-color var(--dur-base) var(--ease-out), transform var(--dur-base) var(--ease-out), box-shadow var(--dur-base) var(--ease-out); }
.sector-matter:hover { background: #fff; border-color: var(--falc-teal-500); transform: translateY(-2px); box-shadow: var(--shadow-2); }
.step, .comp { border: 1px solid var(--falc-sand-100); }
.stat-panel, .bio .highlight { border: 1px solid var(--falc-sand-100); }
.value .letter { transition: color var(--dur-base) var(--ease-out); }
.value:hover .letter { color: var(--falc-teal-600); }

/* Monogram: the lattice tile sits behind the initials, and deepens on hover */
.monogram, .profile-monogram { position: relative; isolation: isolate; overflow: hidden; transition: background var(--dur-base) var(--ease-out); }
.monogram::before, .profile-monogram::before { content: ""; position: absolute; inset: 0; z-index: -1; opacity: .12; background-size: 48px 48px;
  background-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 48 48' fill='none' stroke='white' stroke-width='1'%3E%3Cpath d='M24 0L48 24 24 48 0 24Z'/%3E%3Cpath d='M24 12L36 24 24 36 12 24Z'/%3E%3C/svg%3E"); }
.person-card:hover .monogram { background: var(--falc-deep-700); }

/* Page and profile bands: the same lattice, faded in from the right */
.page-band, .profile-band { position: relative; overflow: hidden; isolation: isolate; }
.page-band::after, .profile-band::after { content: ""; position: absolute; inset: 0; z-index: -1; opacity: .08; pointer-events: none; background-size: 48px 48px;
  background-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 48 48' fill='none' stroke='white' stroke-width='1'%3E%3Cpath d='M24 0L48 24 24 48 0 24Z'/%3E%3Cpath d='M24 12L36 24 24 36 12 24Z'/%3E%3C/svg%3E");
  -webkit-mask-image: linear-gradient(100deg, transparent 48%, #000 100%); mask-image: linear-gradient(100deg, transparent 48%, #000 100%); }

/* --- Rows: the arrow answers hover --- */
.practice-row svg { color: var(--falc-teal-500); transition: transform var(--dur-base) var(--ease-out); }
.practice-row:hover svg, .practice-row:focus-visible svg { transform: translateX(4px); }
.sectors-home li { padding: 0; }
.sectors-home li a { display: flex; gap: 16px; align-items: baseline; width: 100%; padding: 18px 0; color: var(--color-ink); text-decoration: none; }
.sectors-home li a .name { transition: color var(--dur-fast) var(--ease-out); }
.sectors-home li a svg { margin-left: auto; align-self: center; flex: none; color: var(--falc-teal-500); opacity: 0; transform: translateX(-4px);
  transition: opacity var(--dur-base) var(--ease-out), transform var(--dur-base) var(--ease-out); }
.sectors-home li a:hover .name, .sectors-home li a:focus-visible .name { color: var(--falc-teal-600); }
.sectors-home li a:hover svg, .sectors-home li a:focus-visible svg { opacity: 1; transform: none; }
.sectors-home li a:hover { text-decoration: none; }

/* --- Closing route to the firm, on pages that had none --- */
.cta-band { position: relative; overflow: hidden; isolation: isolate; background: var(--falc-sand-50); border-top: 1px solid var(--falc-sand-100); }
.cta-band-arch { position: absolute; right: clamp(-40px, 2vw, 64px); bottom: 0; height: 100%; width: min(38vw, 420px); z-index: -1; color: var(--falc-sand-300); opacity: .8; pointer-events: none; }
.cta-band .container { padding-block: 88px; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr)); gap: 40px 64px; align-items: center; }
.cta-band-text { display: grid; gap: 14px; max-width: 52ch; }
.cta-band-text h2 { font-size: clamp(32px, 3.6vw, 44px); line-height: 1.1; letter-spacing: -.015em; }
.cta-band-text p:not(.falc-eyebrow) { font-size: 16px; line-height: 1.6; color: var(--falc-gray-600); max-width: 44ch; }
.cta-band-actions { display: grid; justify-items: start; gap: 14px; justify-self: start; }
@media (min-width: 900px) { .cta-band-actions { justify-self: end; } }
.cta-band-mail { font-family: var(--font-mono); font-size: 14px; color: var(--color-ink); text-decoration: none; border-bottom: 1px solid var(--falc-teal-500); padding-bottom: 2px; transition: color var(--dur-fast) var(--ease-out); }
.cta-band-mail:hover { color: var(--falc-teal-600); text-decoration: none; }
@media (max-width: 760px) { .cta-band-arch { width: 56vw; opacity: .5; } }

/* --- Contact: required marks, what to expect, the form as a card --- */
.falc-label .req { color: var(--falc-oxide-500); margin-left: 4px; font-family: var(--font-sans); letter-spacing: 0; }
.form-foot { display: flex; align-items: center; gap: 20px; flex-wrap: wrap; }
.form-foot .req { color: var(--falc-oxide-500); }
.contact-form { border: 1px solid var(--falc-sand-100); }
.contact-form .falc-btn { border: 1px solid transparent; }
.form-success { border: 1px solid var(--falc-teal-100); }
.expect { list-style: none; display: grid; gap: 14px; border-top: 1px solid var(--falc-gray-200); padding-top: 24px; }
.expect li { display: grid; grid-template-columns: 32px minmax(0, 1fr); gap: 12px; font-size: 15px; line-height: 1.55; color: var(--falc-gray-600); }
.expect strong { color: var(--color-ink); font-weight: 500; }

/* --- Reveals: siblings enter in sequence --- */
.reveal:nth-child(2) { transition-delay: 70ms; }
.reveal:nth-child(3) { transition-delay: 140ms; }
.reveal:nth-child(4) { transition-delay: 210ms; }
.reveal:nth-child(n+5) { transition-delay: 280ms; }
.people-grid li:nth-child(3n+2) .reveal { transition-delay: 70ms; }
.people-grid li:nth-child(3n) .reveal { transition-delay: 140ms; }
@media (prefers-reduced-motion: reduce) { .reveal { transition-delay: 0ms; } }

/* --- 404 --- */
.notfound { padding-block: 88px 160px; display: grid; gap: 16px; min-height: 50vh; }
.notfound h1 { max-width: 18ch; }
.notfound .lede-2 { max-width: 52ch; }

/* --- Hero: arrival and breath ---
   On load the gate settles (a slow scale from 1.03), its keyline draws itself,
   and the copy rises in sequence. Afterwards the bands breathe on a 14s cycle
   and a glow behind the apex pulses with them. All of it stops under
   prefers-reduced-motion; the parallax in site.js is untouched (it moves the
   svg element, these move the group inside it). */
.hero { background-image: linear-gradient(180deg, #06282B 0%, #062B2E 45%, #05262A 100%); }
.hero .falc-arch-svg { animation: falc-fade 1.2s var(--ease-out) both; }
.hero .falc-arch-bands { transform-box: fill-box; transform-origin: 50% 100%; animation: falc-arch-settle 1.8s var(--ease-out) both; }
.hero .falc-arch-band { transform-box: fill-box; transform-origin: 50% 100%; animation: falc-breathe 12s ease-in-out infinite; animation-delay: calc(1.8s + var(--k, 0) * .4s); }
.falc-arch-glint { display: none; }
.hero-glow { position: absolute; z-index: -1; pointer-events: none; left: 50%; top: 18%; width: min(90vw, 1100px); aspect-ratio: 1.6; transform: translate(-50%, -30%);
  background: radial-gradient(closest-side, rgba(0,160,160,.30), rgba(0,160,160,.10) 45%, rgba(0,160,160,0) 72%); filter: blur(12px);
  animation: falc-fade 1.6s var(--ease-out) .2s both, falc-glow 14s ease-in-out 1.8s infinite, falc-glow-drift 26s ease-in-out 1.8s infinite; }
.hero-in { animation: falc-rise-hero .9s var(--ease-out) both; animation-delay: calc(.35s + var(--i, 0) * .11s); }
.hero-scroll { position: absolute; right: var(--gutter); bottom: 28px; display: grid; justify-items: center; gap: 10px; color: rgba(255,255,255,.72); text-decoration: none;
  font-family: var(--font-mono); font-size: 11px; letter-spacing: .14em; text-transform: uppercase; animation: falc-fade 1s var(--ease-out) 1.2s both; }
.hero-scroll:hover { color: #fff; text-decoration: none; }
.hero-scroll-line { position: relative; width: 1px; height: 44px; background: rgba(255,255,255,.25); overflow: hidden; }
.hero-scroll-line::after { content: ""; position: absolute; left: 0; top: 0; width: 1px; height: 14px; background: var(--falc-teal-300); animation: falc-scroll-cue 2.2s var(--ease-in-out) infinite; }
@media (max-width: 760px) { .hero-scroll { display: none; } }
@keyframes falc-arch-settle { from { transform: scale(1.035); } to { transform: scale(1); } }
@keyframes falc-breathe { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.016); } }
@keyframes falc-glow-drift { 0%, 100% { transform: translate(-53%, -30%); } 50% { transform: translate(-47%, -33%); } }
@keyframes falc-glow { 0%, 100% { opacity: .75; } 50% { opacity: 1; } }
@keyframes falc-rise-hero { from { opacity: 0; transform: translateY(16px); } to { opacity: 1; transform: none; } }
@keyframes falc-scroll-cue { 0% { transform: translateY(-14px); opacity: 0; } 30% { opacity: 1; } 100% { transform: translateY(44px); opacity: 0; } }
@media (prefers-reduced-motion: reduce) {
  .hero .falc-arch-svg, .hero .falc-arch-bands, .hero .falc-arch-band, .hero-glow, .hero-in, .hero-scroll, .hero-scroll-line::after { animation: none; }
}

/* --- Logo loader ---
   The loader from the previous FALC site, carried over: a deep radial ground,
   the mark rising in with a teal glow, the four letters of the name arriving
   one by one, and a teal sweep beneath. Shown once per session (the head
   script clears the loading state after that), held 1.25s or until fonts are
   in, never past 1.5s, then a 0.7s fade: under two seconds in all. The hero's
   arrival animations wait for the release. */
.loader { display: none; position: fixed; inset: 0; z-index: 200; align-items: center; justify-content: center;
  background: radial-gradient(120% 100% at 50% 0%, #17353F 0%, var(--falc-deep-900) 55%, #0A1B21 100%);
  transition: opacity .7s var(--ease-in-out), visibility 0s linear .7s; }
html.is-loading:not(.no-js) .loader { display: flex; }
.loader.is-done { opacity: 0; visibility: hidden; }
.loader-stage { display: flex; flex-direction: column; align-items: center; gap: 20px;
  transition: transform .7s cubic-bezier(.16, 1, .3, 1), opacity .55s var(--ease-out); }
.loader.is-done .loader-stage { transform: scale(1.05); opacity: 0; }
.loader-mark { width: 64px; height: auto; filter: drop-shadow(0 0 26px rgba(0, 160, 158, .35)); animation: falc-loader-mark .9s cubic-bezier(.16, 1, .3, 1) both; }
.loader-word { display: flex; gap: .32em; font-family: var(--font-sans); font-weight: 600; font-size: 27px; letter-spacing: .1em; line-height: 1; color: #fff; }
.loader-word span { animation: falc-loader-letter .55s var(--ease-out) both; }
.loader-word span:nth-child(1) { animation-delay: .40s; }
.loader-word span:nth-child(2) { animation-delay: .52s; }
.loader-word span:nth-child(3) { animation-delay: .64s; }
.loader-word span:nth-child(4) { animation-delay: .76s; }
.loader-bar { width: 176px; height: 2px; margin-top: 6px; border-radius: 999px; overflow: hidden; background: rgba(255, 255, 255, .12); }
.loader-bar span { display: block; height: 100%; width: 40%; border-radius: inherit;
  background: linear-gradient(90deg, transparent, var(--falc-teal-500), #7BE0DE, var(--falc-teal-500), transparent);
  animation: falc-loader-bar 1.15s cubic-bezier(.45, .05, .55, .95) infinite; }
@keyframes falc-loader-mark { 0% { opacity: 0; transform: translateY(16px) scale(.86); } 55% { opacity: 1; } 100% { opacity: 1; transform: none; } }
@keyframes falc-loader-letter { from { opacity: 0; transform: translateY(9px); } to { opacity: 1; transform: none; } }
@keyframes falc-loader-bar { from { transform: translateX(-110%); } to { transform: translateX(360%); } }
html.is-loading:not(.no-js) .hero .falc-arch-svg, html.is-loading:not(.no-js) .hero .falc-arch-bands, html.is-loading:not(.no-js) .hero .falc-arch-band,
html.is-loading:not(.no-js) .hero-glow,
html.is-loading:not(.no-js) .hero-in, html.is-loading:not(.no-js) .hero-scroll { animation-play-state: paused; }
@media (prefers-reduced-motion: reduce) { .loader-mark, .loader-line, .loader-line::after { animation: none; } }

/* --- Home: the header arrives with the page ---
   After the loader releases, the wordmark rises in, the links follow one by
   one, and the Home underline draws last. Desktop only for the links (the
   phone menu is closed at load); nothing moves under reduced motion. */
.page-home .site-header .brand, .page-home .nav-toggle { animation: falc-nav-in .7s var(--ease-out) .15s both; }
@media (min-width: 761px) {
  .page-home .site-nav > a { animation: falc-nav-in .6s var(--ease-out) both; animation-delay: calc(.3s + var(--n, 0) * .05s); }
  .page-home .site-nav a[aria-current="page"]:not(.nav-cta)::after { transition-duration: .6s; transition-delay: .95s; }
}
@keyframes falc-nav-in { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }
html.is-loading:not(.no-js) .page-home .site-header .brand, html.is-loading:not(.no-js) .page-home .nav-toggle, html.is-loading:not(.no-js) .page-home .site-nav > a { animation-play-state: paused; }
@media (prefers-reduced-motion: reduce) { .page-home .site-header .brand, .page-home .nav-toggle, .page-home .site-nav > a { animation: none; } .page-home .site-nav a[aria-current="page"]:not(.nav-cta)::after { transition: none; } }

/* --- The Firm: values ---
   Heading holds the left column; the four principles sit in a two-by-two to
   its right so each has room for its text. Every card carries its letter
   twice: set in teal at the top, and as a large watermark behind the copy,
   so the name F.A.L.C. reads across the row. Cards inform; they do not move. */
.values .container { display: grid; grid-template-columns: minmax(0, 1fr); gap: 40px 64px; align-items: start; }
@media (min-width: 960px) { .values .container { grid-template-columns: minmax(240px, 1fr) minmax(0, 2.2fr); } .values .stack-12 { position: sticky; top: 112px; } }
.value-grid { grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr)); gap: 20px; }
.value { position: relative; isolation: isolate; overflow: hidden; grid-template-rows: auto auto 1fr auto; gap: 14px; padding: 32px 30px 26px; background: #fff; min-height: 320px;
  transition: border-color var(--dur-base) var(--ease-out); }
.value::before { content: attr(data-letter); position: absolute; right: -10px; top: -34px; z-index: -1; pointer-events: none;
  font-family: var(--font-display); font-weight: 300; font-size: 240px; line-height: 1; letter-spacing: -.04em; color: var(--falc-teal-500); opacity: .06;
  transition: opacity var(--dur-slow) var(--ease-out), transform var(--dur-slow) var(--ease-out); }
.value:hover { border-color: var(--falc-teal-200); }
.value:hover::before { opacity: .1; transform: translateX(-6px); }
.value .letter { font-size: 56px; }
.value h3 { font-size: 22px; line-height: 1.25; max-width: 14ch; }
.value p { font-size: 15px; line-height: 1.6; }
.value .idx { margin-top: auto; padding-top: 14px; border-top: 1px solid var(--falc-gray-200); font-family: var(--font-mono); font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--falc-gray-500); }
@media (prefers-reduced-motion: reduce) { .value::before, .value { transition: none; } }

/* --- The Firm: values, one row ---
   Heading above, the four principles in a single row beneath so the name
   F.A.L.C. reads left to right. Arrival: each card rises in turn while its
   watermark letter slides in from the right. Hover: a teal wash rises from
   the base, the watermark drifts up and deepens, the letter turns deep. */
.values .container { display: grid; grid-template-columns: minmax(0, 1fr); gap: 48px; }
@media (min-width: 960px) { .values .container { grid-template-columns: minmax(0, 1fr); } .values .stack-12 { position: static; } }
.value-grid { grid-template-columns: repeat(auto-fit, minmax(min(100%, 230px), 1fr)); gap: 20px; }
@media (min-width: 1040px) { .value-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.value { min-height: 360px; padding: 32px 26px 24px; transition: border-color var(--dur-slow) var(--ease-out), box-shadow var(--dur-slow) var(--ease-out), transform var(--dur-slow) var(--ease-out); }
.value::after { content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none; background: linear-gradient(180deg, rgba(230,245,245,0) 0%, var(--falc-teal-50) 100%);
  transform: scaleY(0); transform-origin: 50% 100%; transition: transform .7s var(--ease-out); }
.value::before { right: -14px; top: -30px; font-size: 250px; transition: opacity .7s var(--ease-out), transform .7s var(--ease-out); }
.value .letter { transition: color var(--dur-slow) var(--ease-out), transform var(--dur-slow) var(--ease-out); transform-origin: left bottom; }
.value:hover { border-color: var(--falc-teal-300); box-shadow: var(--shadow-1); transform: translateY(-3px); }
.value:hover::after { transform: scaleY(1); }
.value:hover::before { opacity: .12; transform: translate(-10px, -10px) scale(1.04); }
.value:hover .letter { color: var(--falc-teal-700); }
/* Arrival: the watermark follows its card in, from the right */
.value.reveal::before { opacity: 0; transform: translateX(28px); }
.value.reveal.is-in::before { opacity: .06; transform: none; transition-delay: .15s; }
.value.reveal.is-in:nth-child(2)::before { transition-delay: .22s; }
.value.reveal.is-in:nth-child(3)::before { transition-delay: .29s; }
.value.reveal.is-in:nth-child(4)::before { transition-delay: .36s; }
.value.reveal.is-in:hover::before { transition-delay: 0s; opacity: .12; transform: translate(-10px, -10px) scale(1.04); }
.no-js .value.reveal::before { opacity: .06; transform: none; }
@media (prefers-reduced-motion: reduce) { .value, .value::before, .value::after, .value .letter { transition: none; } .value.reveal::before { opacity: .06; transform: none; } .value:hover { transform: none; } }

/* --- Person: education marks and flags ---
   Each institution's mark sits directly on the page (white-only artwork is
   recoloured to ink in the asset), the degree and school beside it; the countries studied in follow as small
   bordered flags with their names. */
.fact-edu { gap: 14px; }
.edu-list { list-style: none; display: grid; gap: 12px; }
.edu-list li { display: grid; grid-template-columns: 56px minmax(0, 1fr); gap: 14px; align-items: center; }
.edu-logo { width: 56px; height: 48px; display: grid; place-items: center; }
.edu-logo img { width: 56px; height: 46px; object-fit: contain; display: block; }
.edu-text { display: grid; gap: 2px; font-size: 15px; line-height: 1.4; }
.edu-text strong { font-weight: 500; color: var(--color-ink); }
.edu-text span { font-size: 14px; color: var(--falc-gray-600); }
.edu-flags { list-style: none; display: flex; flex-wrap: wrap; gap: 8px 18px; padding-top: 2px; }
.edu-flags li { display: inline-flex; align-items: center; gap: 8px; font-size: 13px; color: var(--falc-gray-600); }
.edu-flags img { width: 28px; height: 18px; object-fit: cover; display: block; border: 1px solid var(--falc-gray-200); border-radius: 2px; }

/* --- People: portraits ---
   Square portraits from the firm, cropped 5:4 on the index cards with the
   face kept high, full square on the profile band. The lattice monogram
   remains the fallback for anyone without a photograph yet. */
.person-card { grid-template-rows: auto 1fr; }
/* Photo and monogram cards share the same 5:4 media area so the grid stays level */
.person-card .monogram { height: auto; aspect-ratio: 5 / 4; }
.person-card .monogram.is-photo { height: auto; aspect-ratio: 5 / 4; padding: 0; background: var(--falc-gray-100); }
.person-card .monogram.is-photo::before { display: none; }
.person-card .monogram.is-photo img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 18%; display: block;
  transition: transform var(--dur-slow) var(--ease-out); }
.person-card:hover .monogram.is-photo img { transform: scale(1.03); }
.profile-monogram.is-photo { padding: 0; background: var(--falc-deep-800); }
.profile-monogram.is-photo::before { display: none; }
.profile-monogram.is-photo img { width: 100%; height: 100%; object-fit: cover; display: block; border-radius: 4px; }
@media (prefers-reduced-motion: reduce) { .person-card:hover .monogram.is-photo img { transform: none; } }

/* --- Closing band: the gate, grown ---
   The arch box stands 135% of the band's height on the base line, so the
   outer arch runs off the top and the inner gate stays whole; the filled
   outer arch gives it body against the sand. Keylines draw in from the
   feet up when the band enters view, innermost last. The band's own reveal
   rise is turned off so only the lines move. */
.cta-band.reveal { opacity: 1; transform: none; }
.cta-band .container { padding-block: 112px; gap: 44px 64px; }
.cta-band-text h2 { font-size: clamp(36px, 4vw, 52px); }
.cta-band-arch { height: 135%; width: min(52vw, 720px); right: clamp(-80px, 0vw, 40px); bottom: 0; opacity: 1; color: var(--falc-sand-300); }
.cta-gate-fill { fill: var(--falc-sand-100); }
.cta-gate-line { stroke-dasharray: 1; stroke-dashoffset: 1; transition: stroke-dashoffset 1.8s var(--ease-in-out); transition-delay: calc(var(--k, 0) * .18s); }
.cta-band.is-in .cta-gate-line, .no-js .cta-gate-line { stroke-dashoffset: 0; }
@media (max-width: 760px) { .cta-band-arch { width: 78vw; right: -18vw; height: 120%; } .cta-band .container { padding-block: 88px; } }
@media (prefers-reduced-motion: reduce) { .cta-gate-line { stroke-dashoffset: 0; transition: none; } }

/* The profile band's lattice tile is turned off so the band stays a plain deep-teal ground. */
.profile-band::after { display: none; }

/* --- Practice: related practices --- */
.related { padding-block: 0 72px; display: grid; gap: 16px; }
.related-list { list-style: none; display: flex; flex-wrap: wrap; gap: 12px 32px; }

/* --- Closing band: the gate forms and glows like the hero ---
   On reveal the whole arch settles from a slight enlargement while its lines
   draw; beneath each line a blurred sand glow breathes, and after the draw a
   short teal glint travels round each line, staggered so they never coincide. */
.cta-band-arch { transform-box: fill-box; transform-origin: 50% 100%; }
.cta-band.is-in .cta-band-arch { animation: falc-arch-settle 2s var(--ease-out) both; }
.cta-gate-glow path { fill: none; stroke: var(--falc-sand-300); stroke-width: 10; opacity: 0; transition: opacity 1.4s var(--ease-out); transition-delay: calc(.6s + var(--k, 0) * .18s); }
.cta-band.is-in .cta-gate-glow path { opacity: .55; animation: falc-cta-glow 9s ease-in-out infinite; animation-delay: calc(2.2s + var(--k, 0) * .6s); }
.cta-gate-glint { color: var(--falc-teal-500); stroke-dasharray: .07 .93; stroke-dashoffset: 1; opacity: 0; }
.cta-band.is-in .cta-gate-glint { animation: falc-cta-glint 12s linear infinite; animation-delay: calc(2.4s + var(--k, 0) * 1.3s); }
@keyframes falc-cta-glow { 0%, 100% { opacity: .38; } 50% { opacity: .7; } }
@keyframes falc-cta-glint { 0% { stroke-dashoffset: 1; opacity: 0; } 4% { opacity: .7; } 96% { opacity: .7; } 100% { stroke-dashoffset: 0; opacity: 0; } }
@media (prefers-reduced-motion: reduce) { .cta-band.is-in .cta-band-arch, .cta-band.is-in .cta-gate-glow path, .cta-band.is-in .cta-gate-glint { animation: none; } .cta-gate-glow path { transition: none; opacity: .5; } }

/* --- Buttons and calls to action: sheen, lift, glow ---
   On hover a narrow band of light crosses the button once (white on solid
   grounds, teal-tinted on white and outline buttons), the button lifts 1px
   and, for the primary and the header CTA, casts a soft teal glow. Press
   settles it back. The arrow nudge from Part 3 stays. Nothing under reduced
   motion beyond the colour change. */
.falc-btn, .site-nav .nav-cta { position: relative; overflow: hidden; isolation: isolate;
  transition: background var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out), transform var(--dur-base) var(--ease-out), box-shadow var(--dur-base) var(--ease-out); }
.falc-btn::after, .site-nav .nav-cta::after { content: ""; position: absolute; top: -20%; bottom: -20%; left: 0; width: 38%; pointer-events: none; z-index: 1;
  background: linear-gradient(105deg, rgba(255,255,255,0) 0%, rgba(255,255,255,.32) 50%, rgba(255,255,255,0) 100%); transform: translateX(-160%) skewX(-16deg); }
.falc-btn-outline::after, .falc-btn-outline-inverse::after, .falc-btn-white::after, .falc-btn-ghost::after { background: linear-gradient(105deg, rgba(0,160,160,0) 0%, rgba(0,160,160,.16) 50%, rgba(0,160,160,0) 100%); }
.falc-btn-outline-inverse::after { background: linear-gradient(105deg, rgba(255,255,255,0) 0%, rgba(255,255,255,.18) 50%, rgba(255,255,255,0) 100%); }
.falc-btn:hover::after, .falc-btn:focus-visible::after, .site-nav .nav-cta:hover::after, .site-nav .nav-cta:focus-visible::after { animation: falc-sheen .9s var(--ease-out) forwards; }
.falc-btn:hover, .site-nav .nav-cta:hover { transform: translateY(-1px); }
.falc-btn-primary:hover, .site-nav .nav-cta:hover { box-shadow: inset 0 -1px 0 rgba(6,43,46,.28), 0 10px 22px -10px rgba(0,160,160,.75); }
.falc-btn-white:hover { box-shadow: 0 10px 22px -10px rgba(6,43,46,.6); }
.falc-btn:active, .site-nav .nav-cta:active { transform: translateY(1px) scale(.985); box-shadow: inset 0 -1px 0 rgba(6,43,46,.18); }
.falc-btn > *, .site-nav .nav-cta > * { position: relative; z-index: 2; }
@keyframes falc-sheen { to { transform: translateX(420%) skewX(-16deg); } }
@media (prefers-reduced-motion: reduce) { .falc-btn:hover::after, .site-nav .nav-cta:hover::after { animation: none; } .falc-btn:hover, .site-nav .nav-cta:hover, .falc-btn:active { transform: none; } }

/* --- Closing band gate, quieter ---
   The blurred glow is gone and the arch no longer scales on arrival: the
   lines simply draw in, then breathe very slightly, and a faint sand glint
   passes round each one now and then. */
.cta-band.is-in .cta-band-arch { animation: none; }
.cta-gate-glow { display: none; }
.cta-band.is-in .cta-gate-line { animation: falc-cta-line-breathe 12s ease-in-out infinite; animation-delay: calc(2.4s + var(--k, 0) * .9s); }
.cta-gate-glint { color: var(--falc-sand-700); stroke-width: 2; stroke-dasharray: .05 .95; }
.cta-band.is-in .cta-gate-glint { animation: falc-cta-glint-soft 18s linear infinite; animation-delay: calc(3s + var(--k, 0) * 2.2s); }
@keyframes falc-cta-line-breathe { 0%, 100% { opacity: 1; } 50% { opacity: .62; } }
@keyframes falc-cta-glint-soft { 0% { stroke-dashoffset: 1; opacity: 0; } 6% { opacity: .38; } 94% { opacity: .38; } 100% { stroke-dashoffset: 0; opacity: 0; } }
@media (prefers-reduced-motion: reduce) { .cta-band.is-in .cta-gate-line, .cta-band.is-in .cta-gate-glint { animation: none; } }

@media (prefers-reduced-motion: reduce) { .loader-mark, .loader-word span, .loader-bar span { animation: none; } }

/* --- Contact: mandate intake -------------------------------------------
   The enquiry page reads as an intake sheet, not a marketing form: an
   editorial left column (identity, office, the three stages), and a
   right column carrying the notice, the form panel and the received
   state. Tokens, type and buttons are the site's own; nothing new is
   introduced here. On narrow screens the columns stack in DOM order, so
   the legal context always precedes the form. */
.intake { padding-block: 88px 120px; }
@media (min-width: 980px) { .intake.split { grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr); gap: 56px 72px; } }

.intake-aside { display: grid; gap: 28px; align-content: start; }
.intake-lede { font-family: var(--font-display); font-size: 19px; line-height: 1.55; color: var(--falc-gray-600); max-width: 42ch; }
.intake-aside address { font-size: 17px; line-height: 1.65; display: grid; gap: 20px; font-style: normal; }
.intake-aside .firm { font-family: var(--font-display); font-size: 20px; }
.intake-aside .links { display: grid; gap: 4px; }
.intake-aside .links a { color: var(--color-ink); text-decoration: none; width: max-content; }
.intake-aside .links a.email { border-bottom: 1px solid var(--falc-teal-500); }
.intake-aside .links a:hover { color: var(--falc-teal-700); }

/* The three stages: number, hairline, heading, one line of text. */
.intake-steps { list-style: none; margin: 0; padding: 0; display: grid; gap: 0; }
.intake-steps li { display: grid; grid-template-columns: 34px minmax(0, 1fr); column-gap: 14px; row-gap: 6px; padding-block: 20px; border-top: 1px solid var(--falc-gray-200); }
.intake-steps li:last-child { border-bottom: 1px solid var(--falc-gray-200); }
.intake-steps .mono-num { grid-row: 1 / span 2; padding-top: 3px; }
.intake-step-h { font-family: var(--font-mono); font-size: var(--text-xs); font-weight: 500; letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--color-ink); margin: 0; }
.intake-steps p { margin: 0; font-size: 15px; line-height: 1.6; color: var(--falc-gray-600); max-width: 46ch; }

.intake-main { display: grid; gap: 24px; align-content: start; }

/* Restrained notice, not a warning banner: sand ground, one teal hairline. */
.intake-notice { background: var(--falc-sand-50); border-left: 2px solid var(--falc-teal-500); padding: 22px 24px; display: grid; gap: 10px; }
.intake-notice p { margin: 0; font-size: 15px; line-height: 1.6; color: var(--falc-gray-700, var(--color-ink-2)); }
.intake-notice .falc-eyebrow { color: var(--falc-teal-700); }
.intake-notice-links { display: flex; flex-wrap: wrap; gap: 20px; padding-top: 2px; }
.intake-notice-links a { font-family: var(--font-mono); font-size: 12px; letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--color-ink); text-decoration: none; border-bottom: 1px solid var(--falc-gray-400); padding-bottom: 2px; }
.intake-notice-links a:hover { color: var(--falc-teal-700); border-color: var(--falc-teal-500); }

/* The panel: white sheet, one deep rule at the head, no shadow, no radius. */
.intake-panel { background: #fff; border: 1px solid var(--falc-gray-200); border-top: 2px solid var(--falc-deep-900); padding: 36px 36px 40px; display: grid; gap: 22px; }
.intake-form { display: grid; gap: 22px; }
.intake-panel .falc-input { min-height: 50px; border-radius: 2px; border-color: var(--falc-gray-300, var(--color-line-strong)); background: #fff; }
.intake-panel .falc-input:focus { border-color: var(--color-brand); box-shadow: 0 0 0 3px var(--falc-teal-50); }
.intake-panel .falc-label { color: var(--color-ink); }
.intake-textarea { min-height: 165px; padding-top: 12px; resize: vertical; line-height: 1.6; }
.falc-select { appearance: none; -webkit-appearance: none; padding-right: 40px; cursor: pointer;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4 6.5 8 10.5 12 6.5' fill='none' stroke='%230B3B3F' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 14px center; background-size: 16px 16px; }
.falc-select:invalid, .falc-select option[value=""] { color: var(--falc-gray-500); }

/* Consent: a real checkbox, comfortable to tap, teal when set. */
.intake-consent { padding-top: 2px; border-top: 1px solid var(--falc-gray-200); margin-top: 2px; }
.intake-check { display: grid; grid-template-columns: 22px minmax(0, 1fr); gap: 12px; align-items: start; padding-top: 18px; font-size: 15px; line-height: 1.55; color: var(--color-ink-2); cursor: pointer; }
.intake-check input[type="checkbox"] { width: 22px; height: 22px; margin: 0; accent-color: var(--falc-teal-500); cursor: pointer; }
.intake-check input[type="checkbox"]:focus-visible { outline: 2px solid var(--color-focus); outline-offset: 2px; }
.intake-check a { color: var(--color-ink); text-decoration: none; border-bottom: 1px solid var(--falc-teal-500); }
.intake-check a:hover { color: var(--falc-teal-700); }
.intake-consent[data-invalid="true"] .intake-check input[type="checkbox"] { outline: 2px solid var(--falc-danger); outline-offset: 2px; }

.intake-panel .form-foot { padding-top: 22px; border-top: 1px solid var(--falc-gray-200); margin-top: 4px; }
.intake-form[aria-busy="true"] { opacity: .7; }
.intake-form[aria-busy="true"] .falc-input { pointer-events: none; }

/* Error summary and server failures. Oxide, never a red alarm. */
.intake-alert { display: grid; gap: 8px; padding: 18px 20px; background: var(--falc-oxide-100); border-left: 2px solid var(--falc-oxide-500); font-size: 15px; line-height: 1.55; color: var(--falc-oxide-700); }
.intake-alert[hidden] { display: none; }
.intake-alert h2 { font-family: var(--font-mono); font-size: var(--text-xs); font-weight: 500; letter-spacing: var(--tracking-label); text-transform: uppercase; margin: 0; color: var(--falc-oxide-700); }
.intake-alert ul { margin: 0; padding-left: 18px; display: grid; gap: 4px; }
.intake-alert a { color: var(--falc-oxide-700); }

/* Received: the same sheet, quieter. One teal rule, the reference large. */
.intake-received { background: #fff; border: 1px solid var(--falc-gray-200); border-top: 2px solid var(--falc-teal-500); padding: 36px; display: grid; gap: 14px; }
.intake-received[hidden] { display: none; }
.intake-received p { margin: 0; font-size: 15px; line-height: 1.6; color: var(--falc-gray-600); max-width: 52ch; }
.intake-ref { display: grid; gap: 6px; padding-bottom: 18px; border-bottom: 1px solid var(--falc-gray-200); margin-bottom: 4px; }
.intake-ref-code { font-family: var(--font-mono); font-size: clamp(24px, 3.4vw, 34px); letter-spacing: .01em; color: var(--falc-deep-900); }
.intake-received-actions { display: flex; flex-wrap: wrap; gap: 14px; align-items: center; padding-top: 12px; }

@media (max-width: 860px) { .intake { padding-block: 64px 88px; } }
@media (max-width: 560px) {
  .intake-panel { padding: 26px 20px 30px; }
  .intake-received { padding: 26px 20px; }
  .intake-notice { padding: 18px 18px; }
  .intake-panel .falc-btn, .intake-received-actions .falc-btn { width: 100%; }
  .intake-panel .form-foot { gap: 12px; }
}

/* Contact page map (shown only when a Google Maps embed address is set in the admin panel). */
.intake-map { margin-top: 28px; display: grid; gap: 10px; }
.intake-map iframe { width: 100%; aspect-ratio: 4 / 3; border: 0; border-radius: 4px; background: var(--falc-gray-50); }
