.dropzone{position:relative;overflow:hidden}.dropzone input[type="file"]{position:absolute;inset:0;width:100%;height:100%;margin:0;padding:0;opacity:0;cursor:pointer;z-index:2;border:0}.dropzone-content{position:relative;z-index:1;pointer-events:none}.validate-page{max-width:var(--max-width-container);width:100%;margin:2rem auto 3rem}.upload-container{max-width:var(--max-width-container);width:100%;margin:0 auto;padding:2.75rem 3rem 2.5rem;background:var(--vr-bg);border:1px solid var(--vr-line);border-radius:var(--vr-radius);box-shadow:var(--vr-shadow);font-family:var(--font-sans);color:var(--vr-ink-secondary);letter-spacing:0.01em}.upload-container .card-header{margin-bottom:2rem;padding-bottom:1.75rem;border-bottom:1px solid var(--vr-line-strong)}.upload-container .page-brand{display:block;height:1.5rem;width:auto;margin-bottom:1.25rem}.upload-container .page-title{font-weight:400;letter-spacing:0.06em;text-transform:uppercase;color:var(--vr-ink);margin:0 0 0.35rem}.upload-container .page-subtitle{line-height:1.6;color:var(--vr-ink-muted);margin:0 0 1.25rem}.upload-container .intake-requirements{display:grid;grid-template-columns:repeat(2, minmax(0, 1fr));gap:1rem;margin-top:1.25rem;padding:1rem 1.25rem;background:var(--vr-callout-bg);border:1px solid var(--vr-callout-line);border-radius:var(--vr-radius-sm)}.upload-container .intake-requirements-heading{margin:0 0 0.5rem;font-weight:300;letter-spacing:0.07em;text-transform:uppercase;color:var(--vr-ink-muted)}.upload-container .intake-requirements-list{margin:0;padding-left:1.1rem;line-height:1.55;color:var(--vr-ink-secondary)}.upload-container .intake-requirements-list li + li{margin-top:0.35rem}.upload-container .intake-checks-note{margin:0.85rem 0 0;line-height:1.55;color:var(--vr-ink-faint)}.intake-error-card{display:flex;gap:1rem;align-items:flex-start;margin-bottom:1.75rem;padding:1.25rem 1.5rem;background:var(--vr-fail-bg);border:1px solid var(--vr-fail-line);border-radius:var(--vr-radius-sm)}.intake-error-card[hidden]{display:none !important}.intake-error-icon{flex-shrink:0;width:2rem;height:2rem;display:flex;align-items:center;justify-content:center;line-height:1;background:var(--vr-surface);border:1px solid var(--vr-fail-line);border-radius:9999px;color:var(--vr-fail-ink)}.intake-error-body{flex:1;min-width:0}.intake-error-title{margin:0 0 0.5rem;font-weight:300;color:var(--vr-fail-ink)}.intake-error-message{margin:0;line-height:1.55;color:var(--vr-ink-secondary)}.intake-error-detail{margin:0;line-height:1.55;color:var(--vr-ink-secondary)}.upload-container .dropzone{border:1px dashed var(--vr-line-strong);border-radius:var(--vr-radius-sm);padding:2.75rem 1.75rem;text-align:center;background:var(--vr-surface);cursor:pointer;transition:border-color 0.2s ease, background-color 0.2s ease;outline:none;overflow:hidden}.upload-container .dropzone:hover,.upload-container .dropzone:focus{border-color:var(--vr-brand-line);background:var(--vr-brand-muted)}.upload-container .dropzone.dropzone-active,.upload-container .dropzone.drag-over{border-color:var(--vr-brand);background:var(--vr-brand-muted)}.upload-container .dropzone-content{display:flex;flex-direction:column;align-items:center;gap:0.75rem}.upload-container .upload-icon{width:44px;height:44px;color:var(--vr-ink-faint);transition:color 0.2s ease}.upload-container .dropzone:hover .upload-icon,.upload-container .dropzone:focus .upload-icon{color:var(--vr-brand)}.upload-container .dropzone-title{color:var(--vr-ink-secondary);font-weight:300;margin:0}.upload-container .browse-link{color:var(--vr-ink);text-decoration:underline;text-underline-offset:0.15em;cursor:pointer}.upload-container .dropzone-subtitle{color:var(--vr-ink-faint);margin:0}.upload-container .sample-format{margin-top:1.25rem;padding:1rem 1.25rem;background:var(--vr-callout-bg);border:1px solid var(--vr-callout-line);border-radius:var(--vr-radius-sm);text-align:left}.upload-container .sample-format-heading{margin:0 0 0.35rem;font-weight:300;letter-spacing:0.07em;text-transform:uppercase;color:var(--vr-ink-muted)}.upload-container .sample-format-detail{margin:0 0 0.75rem;line-height:1.55;color:var(--vr-ink-faint)}.upload-container .sample-download{display:inline-block;font-weight:300;color:var(--vr-brand);text-decoration:none;border-bottom:1px solid var(--vr-brand-line);padding-bottom:0.05rem}.upload-container .sample-download:hover,.upload-container .sample-download:focus{color:var(--vr-brand-deep);border-bottom-color:var(--vr-brand)}.upload-container .preview-panel{margin-top:1.5rem}.upload-container .preview-card{background:var(--vr-surface);border:1px solid var(--vr-line);border-radius:var(--vr-radius-sm);padding:1.5rem 1.75rem;box-shadow:none}.upload-container .preview-meta{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:0;padding-bottom:0;border-bottom:none}.upload-container .launch-block{margin-top:1.5rem;padding-top:1.5rem;border-top:1px solid var(--vr-line)}.upload-container .launch-copy{margin-bottom:1.5rem}.upload-container .launch-title{font-weight:300;color:var(--vr-ink);margin:0 0 0.5rem;letter-spacing:-0.01em}.upload-container .launch-description{line-height:1.6;color:var(--vr-ink-muted);margin:0;max-width:42rem}.upload-container .launch-actions{display:flex;flex-direction:column;align-items:stretch;gap:0.75rem}.upload-container .btn-launch{display:inline-flex;align-items:center;justify-content:center;width:100%;font-family:var(--font-sans);font-weight:300;letter-spacing:0.04em;text-transform:uppercase;padding:0.9rem 1.5rem;border-radius:var(--vr-radius-sm);cursor:pointer;border:1px solid var(--vr-brand);background:var(--vr-brand);color:#ffffff;box-shadow:none;transition:background-color 0.2s ease, border-color 0.2s ease, opacity 0.2s ease;outline:none}.upload-container .btn-launch:hover{background:var(--vr-brand-deep);border-color:var(--vr-brand-deep);box-shadow:none}.upload-container .btn-launch:focus-visible{box-shadow:0 0 0 2px var(--vr-surface), 0 0 0 4px var(--vr-brand-soft)}.upload-container .btn-launch:disabled{opacity:0.72;cursor:wait}.upload-container .btn-text{display:inline-flex;align-items:center;justify-content:center;font-family:var(--font-sans);font-weight:300;color:var(--vr-ink-muted);background:transparent;border:none;padding:0.35rem 0.5rem;cursor:pointer;transition:color 0.2s ease;outline:none}.upload-container .btn-text:hover{color:var(--vr-ink-secondary)}.upload-container .btn-text:focus-visible{box-shadow:0 0 0 2px var(--vr-line-strong);border-radius:0.25rem}.upload-container .preview-actions{display:none}.upload-container .status-badge{background:var(--vr-pass-bg);color:var(--vr-pass-ink);border:1px solid var(--vr-pass-line);font-weight:300;letter-spacing:0.08em;text-transform:uppercase;padding:0.3rem 0.65rem;border-radius:9999px;display:inline-flex;align-items:center}.upload-container .file-details{display:flex;align-items:center;gap:0.5rem;color:var(--vr-ink-secondary);font-weight:300}.upload-container .file-name{color:var(--vr-ink)}.upload-container .results-wrapper{margin-top:2.5rem;padding-top:1.75rem;border-top:1px solid var(--vr-line-strong)}.upload-container .trust-blurb{margin:1.75rem 0 0;padding-top:1.5rem;border-top:1px solid var(--vr-line);line-height:1.6;color:var(--vr-ink-faint)}.upload-container .trust-blurb p{margin:0 0 0.65rem}.upload-container .trust-blurb p:last-child{margin-bottom:0}.upload-container .results-title{font-weight:400;letter-spacing:0.1em;text-transform:uppercase;color:var(--vr-brand);margin:0 0 1rem}.upload-container .code-window{background:var(--vr-surface);border:1px solid var(--vr-line);border-radius:var(--vr-radius-sm);padding:1rem 1.25rem;overflow-x:auto}.upload-container .code-content{color:var(--vr-ink-secondary);font-family:var(--font-mono);line-height:1.6;margin:0;white-space:pre-wrap;font-variant-numeric:tabular-nums}.validation-run-pending{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:1.5rem;background:rgba(251, 251, 250, 0.88);backdrop-filter:blur(4px)}.validation-run-pending[hidden]{display:none !important}.validation-run-pending .validation-run-card{width:min(100%, var(--max-width-narrow));background:var(--vr-bg);border:1px solid var(--vr-line);border-radius:var(--vr-radius);box-shadow:var(--vr-shadow);padding:2.5rem 2.75rem}.validation-run-pending .run-brand{display:block;width:2rem;height:2rem;margin-bottom:1.25rem;opacity:0.92}.validation-run-pending .validation-run-title{font-weight:300;letter-spacing:0.06em;text-transform:uppercase;color:var(--vr-ink);margin:0 0 0.5rem}.validation-run-pending .validation-run-subtitle{line-height:1.6;color:var(--vr-ink-muted);margin:0 0 1.5rem}.validation-run-pending .step-bar{height:3px;background:var(--vr-line);border-radius:9999px;overflow:hidden}.validation-run-pending .step-bar-fill{display:block;height:100%;width:38%;background:var(--vr-brand);border-radius:inherit;animation:validation-pending-pulse 1.2s ease-in-out infinite alternate}@keyframes validation-pending-pulse {from{width:28%;opacity:0.65}to{width:62%;opacity:1}}@media (max-width: 640px) {.upload-container{padding:2rem 1.5rem}.upload-container .intake-requirements{grid-template-columns:1fr}}:root{--max-width-container:1080px;--max-width-narrow:42rem;--max-width-content:var(--max-width-container);--max-width-report:var(--max-width-container);--spacing-xs:0.5rem;--spacing-sm:0.75rem;--spacing-md:1rem;--spacing-lg:1.5rem;--spacing-xl:2rem;--spacing-2xl:3rem;--radius-sm:5px;--radius-md:8px;--radius-lg:8px;--radius-xl:10px;--radius-full:9999px;--font-sans:system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-sans:"Roboto Slab", Georgia, serif;--font-mono:"Fira Code", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--font-size-ui:1rem;--galm-slate:#26323c;--galm-slate-soft:#3b4753;--galm-slate-deep:#1b252d;--galm-blue:#3d5c7d;--galm-blue-soft:#527294;--galm-blue-deep:#314a66;--galm-blue-muted:#eff2f5;--galm-blue-line:rgba(26, 26, 28, 0.12);--vr-bg:#fbfbfa;--vr-surface:#ffffff;--vr-ink:#0e0e10;--vr-ink-secondary:#2f2f31;--vr-ink-muted:#49494c;--vr-ink-faint:#5f5f64;--vr-accent:var(--galm-slate);--vr-accent-soft:var(--galm-slate-soft);--vr-cta:var(--galm-slate);--vr-cta-deep:var(--galm-slate-deep);--vr-cta-muted:#eef0f2;--vr-brand:var(--galm-blue);--vr-brand-soft:var(--galm-blue-soft);--vr-brand-deep:var(--galm-blue-deep);--vr-brand-muted:var(--galm-blue-muted);--vr-brand-line:var(--vr-line-strong);--vr-line:rgba(26, 26, 28, 0.08);--vr-line-strong:rgba(26, 26, 28, 0.12);--vr-shadow:none;--vr-radius:8px;--vr-radius-sm:5px;--vr-pass-bg:#dceee0;--vr-pass-ink:#1a3d28;--vr-pass-line:rgba(26, 61, 40, 0.22);--vr-fail-bg:#fce4e4;--vr-fail-ink:#5c1a1a;--vr-fail-line:rgba(92, 26, 26, 0.2);--vr-warn-bg:#fde8c8;--vr-warn-ink:#7c2d12;--vr-warn-line:rgba(124, 45, 18, 0.24);--vr-callout-bg:#f4f5f6;--vr-callout-line:var(--vr-line-strong);--nav-cta-green:#2f6b52;--nav-cta-green-deep:#1e4a38;--nav-cta-green-muted:#e9f3ee;--nav-cta-green-line:rgba(47, 107, 82, 0.28)}@font-face{font-family:'Roboto Slab';font-style:normal;font-weight:100;font-display:swap;src:url('https://www.galm.io/static/fonts/roboto-slab-v36-latin-100.woff2?etag=NL3VQWxd') format('woff2')}@font-face{font-family:'Roboto Slab';font-style:normal;font-weight:300;font-display:swap;src:url('https://www.galm.io/static/fonts/roboto-slab-v36-latin-300.woff2?etag=zzjD-SmX') format('woff2')}@font-face{font-family:'Roboto Slab';font-style:normal;font-weight:400;font-display:swap;src:url('https://www.galm.io/static/fonts/roboto-slab-v36-latin-regular.woff2?etag=H_M38XQr') format('woff2')}*,*::before,*::after{box-sizing:border-box}.masthead{background-color:rgb(27, 28, 29)}.topbar{border-bottom:1px solid var(--vr-line)}.topbar__inner{max-width:var(--max-width-container);margin:0 auto;padding:var(--spacing-sm) var(--spacing-md);display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:var(--spacing-md)}.topbar__brand{display:inline-flex;align-items:center;text-decoration:none;line-height:0}.topbar__logo{display:block;height:1.35rem;width:auto}.topbar__nav{list-style:none;margin:0;padding:0;display:flex;align-items:center;gap:var(--spacing-sm);flex-wrap:wrap}.topbar__nav--right{justify-content:flex-end}.topbar__nav a{color:var(--vr-ink-muted);text-decoration:none;padding:0.25rem 0;border-radius:0;border-bottom:2px solid transparent;transition:color 0.2s ease, border-color 0.2s ease}.topbar__nav li.active > a{color:var(--vr-brand-deep);font-weight:500;background:transparent;border-bottom-color:var(--vr-brand)}.topbar__nav a:hover{color:var(--vr-brand);background:transparent}.topbar__nav li.active > a:hover{color:var(--vr-brand-deep);border-bottom-color:var(--vr-brand)}.site-main{flex:1;width:100%}.page-content{max-width:var(--max-width-container);width:100%;margin:0 auto;padding:var(--spacing-xl) var(--spacing-md)}.flash-message{max-width:var(--max-width-container);width:calc(100% - 2 * var(--spacing-md));margin:var(--spacing-md) auto 0;padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-sm);background:var(--vr-brand-muted);border:1px solid var(--vr-brand-line);color:var(--vr-brand-deep);font-size:1rem;line-height:1.5}.site-footer{margin-top:auto;border-top:1px solid var(--vr-line);background:var(--vr-surface)}.site-footer__inner{max-width:var(--max-width-container);margin:0 auto;padding:var(--spacing-lg) var(--spacing-md)}.masthead{margin-top:-21px;color:white;text-align:center;min-height:500px}.masthead .header{max-width:var(--max-width-container);margin:0 auto;font-family:var(--font-sans)}.masthead h1.header{margin-top:1em;margin-bottom:0em;font-size:clamp(2.5rem, 8vw, 4.5rem);line-height:1.2em;font-weight:normal}.masthead h2{font-size:clamp(1.2rem, 4vw, 1.7rem);font-weight:normal}.masthead .btn{margin:1em 0}.bs-callout{padding:var(--spacing-xl);margin:var(--spacing-xl) 0;border:1px solid #eee;border-left-width:5px;border-radius:var(--radius-sm)}.bs-callout p:last-child{margin-bottom:0}.bs-callout-info{border-left-color:#1b809e}.bs-docs-section{margin-bottom:60px}.bs-docs-section:last-child{margin-bottom:0}#message{margin-bottom:0}.hero-card{background:#ffffff;border:1px solid #e5e7eb;border-radius:var(--radius-xl);box-shadow:none;padding:var(--spacing-2xl) var(--spacing-xl);max-width:var(--max-width-container);margin:0 auto}.hero-copy h2{margin-top:0;margin-bottom:var(--spacing-sm);font-size:2rem;color:#111827}.hero-copy p{color:#6b7280;line-height:1.6}.form-group{margin:var(--spacing-lg) 0 var(--spacing-md)}.form-group label{display:inline-block;margin-bottom:var(--spacing-xs);font-weight:600;color:#111827}.upload-zone{border:2px dashed #c7ccd4;border-radius:var(--radius-xl);padding:var(--spacing-xl) var(--spacing-lg);min-height:240px;background:linear-gradient(135deg, #ffffff 0%, #f8fafc 100%);box-shadow:none;display:flex;flex-direction:column;justify-content:center}.upload-zone__header{display:flex;flex-direction:column;gap:0.2rem;margin-bottom:var(--spacing-sm)}.upload-zone__header strong{font-size:1rem;color:#111827}.upload-zone__header span{color:#6b7280}.custom-file{display:flex;align-items:center;gap:var(--spacing-sm);flex-wrap:wrap;padding:var(--spacing-sm) var(--spacing-md);border:1px solid #d1d5db;border-radius:var(--radius-md);background:#ffffff}.custom-file input[type="file"]{flex:1 1 220px;padding:var(--spacing-xs) var(--spacing-sm);border:1px solid #d1d5db;border-radius:var(--radius-sm);background:#fff;color:#111827}.form-actions{margin-top:var(--spacing-md)}.form-actions .btn{min-width:180px;border-radius:var(--radius-full);padding:var(--spacing-sm) var(--spacing-lg);background:#111827;border:1px solid #111827;color:#ffffff}.form-actions .btn:hover{background:#1f2937;border-color:#1f2937}.preview-box{margin-top:var(--spacing-lg);padding:var(--spacing-md);border:1px solid #e5e7eb;border-radius:var(--radius-lg);background:linear-gradient(180deg, #ffffff 0%, #f9fafb 100%)}.preview-box pre{margin:0;white-space:pre-wrap;word-break:break-word;color:#374151;font-family:var(--font-mono);font-size:1rem;line-height:1.5}.preview-box p{margin:0;color:#6b7280}#uploadSubmit[disabled]{opacity:0.65;cursor:not-allowed}.preview-actions{display:flex;justify-content:flex-end;gap:var(--spacing-sm)}.btn-primary,.btn-secondary{display:inline-flex;align-items:center;justify-content:center;font-family:var(--font-sans);font-size:1rem;font-weight:500;padding:var(--spacing-xs) var(--spacing-md);border-radius:var(--radius-sm);cursor:pointer;transition:all 0.15s ease-in-out;outline:none}.btn-primary{background-color:var(--vr-cta);color:#ffffff;border:1px solid var(--vr-cta);box-shadow:none}.btn-primary:hover{background-color:var(--vr-cta-deep);border-color:var(--vr-cta-deep)}.btn-primary:focus-visible{box-shadow:0 0 0 2px #ffffff, 0 0 0 4px var(--vr-brand-soft)}.btn-secondary{background-color:#ffffff;color:#4b5563;border:1px solid #e5e7eb}.btn-secondary:hover{background-color:#f9fafb;color:#1f2937;border-color:#d1d5db}.btn-secondary:focus-visible{box-shadow:0 0 0 2px #ffffff, 0 0 0 4px #d1d5db}.preview-actions{display:flex;gap:var(--spacing-xs);justify-content:flex-end;margin-top:var(--spacing-md)}.results-wrapper{margin-top:var(--spacing-xl);border-top:1px solid #e2e8f0;padding-top:var(--spacing-lg)}.results-title{font-size:1.1rem;color:#1e293b;margin-bottom:var(--spacing-sm)}.code-window{background:#f8fafc;border:1px solid #e2e8f0;border-radius:var(--radius-sm);padding:var(--spacing-md);overflow-x:auto}.code-content{color:#334155;font-family:var(--font-mono);font-size:1rem;line-height:1.6;margin:0;white-space:pre-wrap}body{font-size:1rem;line-height:1.5;font-weight:300;background:#faf9f5;color:#111;display:flex;flex-direction:column;min-height:100vh;margin:0}.article{max-width:40rem;margin:0 auto;padding:2rem 3rem}html{font-size:100%;-webkit-font-smoothing:antialiased}.article p,.article li{line-height:1.5rem}.article h1{font-weight:300;font-size:3rem;line-height:1.3;text-align:center;padding-bottom:1.5rem;border-bottom:1px solid #555}.lang-switcher select{background-color:transparent;padding:0.25rem 0.35rem;font-size:1rem;font-family:var(--font-sans);color:var(--vr-ink-muted);cursor:pointer;text-transform:uppercase;border:1px solid transparent}.lang-switcher select:hover{color:var(--vr-brand)}.lang-switcher select:focus{outline:none;color:var(--vr-brand-deep);border-bottom-color:var(--vr-brand)}.topbar__sandwitch{display:none}.sandwitch{display:inline-flex;align-items:center;justify-content:center;margin:0;padding:0.35rem 0.5rem;border:1px solid var(--vr-line);border-radius:var(--radius-sm, 0.25rem);background:transparent;color:var(--vr-ink);font-size:1.25rem;line-height:1;cursor:pointer}.sandwitch:hover{color:var(--vr-brand);border-color:var(--vr-brand-line)}@media print {.topbar,.site-footer,.flash-message{display:none !important}body{background:#ffffff !important}.site-main,.page-content{max-width:none;padding:0}}@media (max-width: 550px) {.topbar__sandwitch{display:flex;justify-content:space-between;align-items:center;width:100%;max-width:var(--max-width-container);margin:0 auto;padding:var(--spacing-sm) var(--spacing-md)}.topbar__nav--toggle{display:none}.topbar__nav--toggle.topbar__narrow__menu{display:grid;grid-template-columns:1fr;grid-template-rows:auto;gap:0;width:100%;max-width:var(--max-width-container);margin:0 auto;padding:0 var(--spacing-md) var(--spacing-sm);border-top:1px solid var(--vr-line)}.topbar__nav--toggle.topbar__narrow__menu > .topbar__brand{display:none}.topbar__narrow__menu ul{display:flex;flex-direction:column;align-items:stretch;flex-wrap:nowrap;gap:0;justify-content:flex-start;text-align:right}.topbar__narrow__menu ul a{display:block;padding:0.65rem 0;border-bottom:none;box-shadow:none;text-align:right;color:var(--vr-ink-muted)}.topbar__narrow__menu ul a:hover{color:var(--vr-ink-secondary);border-bottom:none}.topbar__narrow__menu li.active > a,.topbar__narrow__menu li.active > a:hover{color:var(--vr-ink);font-weight:500;background:var(--vr-callout-bg);border-bottom:none;box-shadow:none;padding-left:0.65rem;padding-right:0.65rem;margin:0 -0.65rem}.topbar__narrow__menu .lang-switcher{padding:0.65rem 0 0.25rem;text-align:right}.table-scroll{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-scroll table{width:max-content;min-width:100%;table-layout:auto}.table-scroll th,.table-scroll td{white-space:nowrap}}