@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-vietnamese-opsz-normal-Czevyj-6.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-ext-opsz-normal-CJcjJNj7.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-opsz-normal-DihXLNYH.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,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-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff)format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-500-normal-BgVn5rGT.woff)format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff)format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/ibm-plex-sans-latin-700-normal-Bxkt5Cjx.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-700-normal-Bth3BMcD.woff)format("woff")}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(data:font/woff2;base64,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)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--color-paper:oklch(97.5% .006 95);--color-paper-2:oklch(95.2% .008 92);--color-paper-3:oklch(92.4% .01 90);--color-rule:oklch(88% .01 92);--color-rule-strong:oklch(78% .012 92);--color-field-line:oklch(64% .012 85);--color-ink:oklch(21% .012 75);--color-ink-2:oklch(32% .014 78);--color-muted:oklch(44% .014 80);--color-neutral:oklch(58% .012 85);--color-accent:oklch(43% .085 150);--color-accent-hover:oklch(37% .082 150);--color-accent-line:oklch(80% .045 150);--color-accent-soft:oklch(94% .028 150);--color-accent-ink:oklch(98% .008 150);--color-focus:oklch(52% .14 150);--color-danger:oklch(48% .17 27);--color-danger-soft:oklch(94% .035 27);--color-danger-line:oklch(82% .07 27);--color-warn:oklch(52% .115 72);--color-warn-soft:oklch(94% .045 82);--color-warn-line:oklch(84% .07 78);--color-info:oklch(46% .07 235);--color-info-soft:oklch(94% .025 235);--color-info-line:oklch(83% .045 235);--color-scrim:oklch(21% .012 75/.44);--rgb-ink:45 41 36;--rgb-paper:248 246 240;--rgb-accent:61 107 77;--rgb-danger:163 51 39;--font-display:"Fraunces Variable", "Fraunces", ui-serif, Georgia, serif;--font-body:"IBM Plex Sans", ui-sans-serif, system-ui, sans-serif;--font-mono:"JetBrains Mono Variable", "JetBrains Mono", ui-monospace, monospace;--text-2xs:.6875rem;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-md:1.125rem;--text-lg:1.375rem;--text-xl:1.75rem;--text-2xl:2.125rem;--text-display:clamp(1.875rem, 2.4vw + 1rem, 2.625rem);--text-figure:clamp(1.5rem, 1.2vw + 1.1rem, 1.875rem);--leading-display:1.1;--leading-tight:1.3;--leading-body:1.55;--track-display:-.02em;--track-label:.09em;--space-3xs:.25rem;--space-2xs:.5rem;--space-xs:.75rem;--space-sm:1rem;--space-md:1.5rem;--space-lg:2rem;--space-xl:3rem;--space-2xl:4.5rem;--radius-sm:2px;--radius:4px;--radius-lg:6px;--shadow-raised:0 1px 2px oklch(21% .012 75/.06);--shadow-float:0 8px 28px oklch(21% .012 75/.14);--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-in:cubic-bezier(.7, 0, .84, 0);--ease-in-out:cubic-bezier(.65, 0, .35, 1);--dur-micro:.12s;--dur-short:.22s;--dur-long:.32s;--control-height:44px;--control-height-sm:34px;--control-height-lg:52px;--rail-width:272px;--topbar-height:56px;--bottomnav-height:62px;--z-base:0;--z-raised:10;--z-sticky:100;--z-nav:1030;--z-scrim:1055;--z-drawer:1060;--z-toast:1080;--bs-body-font-family:var(--font-body);--bs-font-sans-serif:var(--font-body);--bs-font-monospace:var(--font-mono);--bs-body-font-size:var(--text-base);--bs-body-font-weight:400;--bs-body-line-height:var(--leading-body);--bs-body-color:var(--color-ink);--bs-body-color-rgb:var(--rgb-ink);--bs-body-bg:var(--color-paper);--bs-body-bg-rgb:var(--rgb-paper);--bs-emphasis-color:var(--color-ink);--bs-heading-color:var(--color-ink);--bs-secondary-color:var(--color-muted);--bs-secondary-bg:var(--color-paper-2);--bs-tertiary-color:var(--color-muted);--bs-tertiary-bg:var(--color-paper-2);--bs-border-color:var(--color-rule);--bs-border-color-translucent:var(--color-rule);--bs-border-radius:var(--radius);--bs-border-radius-sm:var(--radius-sm);--bs-border-radius-lg:var(--radius-lg);--bs-border-radius-xl:var(--radius-lg);--bs-border-radius-2xl:var(--radius-lg);--bs-border-radius-pill:var(--radius-lg);--bs-link-color:var(--color-accent);--bs-link-color-rgb:var(--rgb-accent);--bs-link-hover-color:var(--color-accent-hover);--bs-link-decoration:none;--bs-primary:var(--color-accent);--bs-primary-rgb:var(--rgb-accent);--bs-danger:var(--color-danger);--bs-danger-rgb:var(--rgb-danger);--bs-focus-ring-width:2px;--bs-focus-ring-color:var(--color-focus);--bs-focus-ring-opacity:1;--bs-code-color:var(--color-ink-2);--lightningcss-light:initial;--lightningcss-dark: ;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}html,body{overflow-x:clip}body{background-color:var(--color-paper);color:var(--color-ink);font-family:var(--font-body);font-size:var(--text-base);line-height:var(--leading-body);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:var(--font-display);font-optical-sizing:auto;color:var(--color-ink);font-style:normal;font-weight:600;line-height:var(--leading-tight);letter-spacing:var(--track-display)}h1,.h1{font-size:var(--text-display);line-height:var(--leading-display)}h2,.h2{font-size:var(--text-2xl)}h3,.h3{font-size:var(--text-xl)}h4,.h4{font-size:var(--text-lg)}h5,.h5{font-size:var(--text-md)}h6,.h6{font-size:var(--text-base)}h1,h2,h3,.h1,.h2,.h3{overflow-wrap:anywhere;min-width:0}a{color:var(--color-accent);text-underline-offset:.18em;text-decoration:none;text-decoration-thickness:1px}a:hover{color:var(--color-accent-hover);text-decoration:underline}code,kbd,samp,pre{font-family:var(--font-mono);font-size:.92em}code{color:var(--color-ink-2);background:var(--color-paper-2);border:1px solid var(--color-rule);border-radius:var(--radius-sm);padding:.08em .34em}hr{border:0;border-top:1px solid var(--color-rule);opacity:1;margin:var(--space-sm) 0}::selection{background:var(--color-accent-soft);color:var(--color-ink)}.uid,.figure,.tabular,table,.summary-value,input[type=number],input[type=date],input[type=datetime-local]{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}.uid{font-family:var(--font-mono);letter-spacing:-.01em;color:var(--color-ink);font-size:.92em}.figure{font-family:var(--font-mono);font-size:var(--text-figure);letter-spacing:-.03em;color:var(--color-ink);font-weight:500;line-height:1.05}.field-label{font-family:var(--font-body);font-size:var(--text-2xs);letter-spacing:var(--track-label);text-transform:uppercase;color:var(--color-muted);font-weight:600;display:block}:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;border-radius:var(--radius-sm)}.btn:focus-visible,.form-control:focus-visible,.form-select:focus-visible,.nav-link:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;box-shadow:none}.form-control:focus,.form-select:focus,.form-check-input:focus{border-color:var(--color-accent-line);box-shadow:none}.btn{--bs-btn-font-family:var(--font-body);--bs-btn-font-size:var(--text-sm);--bs-btn-font-weight:500;--bs-btn-border-radius:var(--radius);--bs-btn-padding-y:var(--space-2xs);--bs-btn-padding-x:var(--space-sm);justify-content:center;align-items:center;gap:var(--space-3xs);min-height:var(--control-height);letter-spacing:0;white-space:nowrap;transition:background-color var(--dur-micro) var(--ease-out), border-color var(--dur-micro) var(--ease-out), color var(--dur-micro) var(--ease-out), transform var(--dur-micro) var(--ease-out);display:inline-flex}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled,.btn.disabled{opacity:.45;cursor:not-allowed}.btn-lg{--bs-btn-font-size:var(--text-base);--bs-btn-padding-y:var(--space-xs);--bs-btn-padding-x:var(--space-md);min-height:var(--control-height-lg)}.btn-sm{--bs-btn-font-size:var(--text-xs);--bs-btn-padding-y:var(--space-3xs);--bs-btn-padding-x:var(--space-2xs);min-height:var(--control-height-sm)}.btn-primary{--bs-btn-bg:var(--color-accent);--bs-btn-border-color:var(--color-accent);--bs-btn-color:var(--color-accent-ink);--bs-btn-hover-bg:var(--color-accent-hover);--bs-btn-hover-border-color:var(--color-accent-hover);--bs-btn-hover-color:var(--color-accent-ink);--bs-btn-active-bg:var(--color-accent-hover);--bs-btn-active-border-color:var(--color-accent-hover);--bs-btn-active-color:var(--color-accent-ink);--bs-btn-disabled-bg:var(--color-accent);--bs-btn-disabled-border-color:var(--color-accent);--bs-btn-disabled-color:var(--color-accent-ink)}.btn-outline-primary{--bs-btn-color:var(--color-accent);--bs-btn-border-color:var(--color-accent);--bs-btn-bg:transparent;--bs-btn-hover-bg:var(--color-accent-soft);--bs-btn-hover-border-color:var(--color-accent);--bs-btn-hover-color:var(--color-accent-hover);--bs-btn-active-bg:var(--color-accent-soft);--bs-btn-active-border-color:var(--color-accent);--bs-btn-active-color:var(--color-accent-hover);--bs-btn-disabled-color:var(--color-accent);--bs-btn-disabled-border-color:var(--color-accent)}.btn-secondary,.btn-outline-secondary,.btn-light{--bs-btn-color:var(--color-ink);--bs-btn-bg:var(--color-paper);--bs-btn-border-color:var(--color-field-line);--bs-btn-hover-bg:var(--color-paper-2);--bs-btn-hover-border-color:var(--color-field-line);--bs-btn-hover-color:var(--color-ink);--bs-btn-active-bg:var(--color-paper-3);--bs-btn-active-border-color:var(--color-field-line);--bs-btn-active-color:var(--color-ink);--bs-btn-disabled-color:var(--color-muted);--bs-btn-disabled-bg:var(--color-paper);--bs-btn-disabled-border-color:var(--color-rule)}.btn-danger{--bs-btn-bg:var(--color-danger);--bs-btn-border-color:var(--color-danger);--bs-btn-color:var(--color-accent-ink);--bs-btn-hover-bg:var(--color-danger);--bs-btn-hover-border-color:var(--color-danger);--bs-btn-hover-color:var(--color-accent-ink);--bs-btn-active-bg:var(--color-danger);--bs-btn-active-border-color:var(--color-danger)}.btn-outline-danger{--bs-btn-color:var(--color-danger);--bs-btn-border-color:var(--color-danger);--bs-btn-hover-bg:var(--color-danger-soft);--bs-btn-hover-border-color:var(--color-danger);--bs-btn-hover-color:var(--color-danger);--bs-btn-active-bg:var(--color-danger-soft);--bs-btn-active-color:var(--color-danger);--bs-btn-active-border-color:var(--color-danger)}.btn-warning,.btn-outline-warning{--bs-btn-color:var(--color-warn);--bs-btn-bg:transparent;--bs-btn-border-color:var(--color-warn);--bs-btn-hover-bg:var(--color-warn-soft);--bs-btn-hover-border-color:var(--color-warn);--bs-btn-hover-color:var(--color-warn);--bs-btn-active-bg:var(--color-warn-soft);--bs-btn-active-color:var(--color-warn);--bs-btn-active-border-color:var(--color-warn)}.btn-success{--bs-btn-bg:var(--color-accent);--bs-btn-border-color:var(--color-accent);--bs-btn-color:var(--color-accent-ink);--bs-btn-hover-bg:var(--color-accent-hover);--bs-btn-hover-border-color:var(--color-accent-hover);--bs-btn-hover-color:var(--color-accent-ink);--bs-btn-active-bg:var(--color-accent-hover);--bs-btn-active-border-color:var(--color-accent-hover)}.btn-link{--bs-btn-color:var(--color-accent);--bs-btn-hover-color:var(--color-accent-hover);--bs-btn-font-weight:500;text-decoration:none}.btn-link:hover{text-decoration:underline}.card{--bs-card-bg:var(--color-paper);--bs-card-border-color:var(--color-rule);--bs-card-border-radius:var(--radius);--bs-card-inner-border-radius:var(--radius-sm);--bs-card-cap-bg:var(--color-paper);--bs-card-cap-padding-y:var(--space-xs);--bs-card-spacer-y:var(--space-sm);--bs-card-spacer-x:var(--space-sm);box-shadow:none}.card-header{border-bottom:1px solid var(--color-rule);color:var(--color-ink)}.card.shadow,.card.shadow-sm,.card.shadow-lg{box-shadow:none}.card .card{border-left:0;border-right:0;border-radius:0}.table{--bs-table-bg:transparent;--bs-table-color:var(--color-ink);--bs-table-border-color:var(--color-rule);--bs-table-hover-bg:var(--color-paper-2);--bs-table-hover-color:var(--color-ink);--bs-table-striped-bg:transparent;--bs-table-striped-color:var(--color-ink);font-size:var(--text-sm);font-variant-numeric:tabular-nums;margin-bottom:0}.table>thead{border-bottom:1px solid var(--color-rule-strong)}.table>thead th,.table>thead>tr>th,.table-light>:not(caption)>*>*,.table>:not(caption)>thead>tr>th{background-color:var(--color-paper-2);color:var(--color-muted);font-family:var(--font-body);font-size:var(--text-2xs);letter-spacing:var(--track-label);text-transform:uppercase;white-space:nowrap;vertical-align:middle;font-weight:600}.table>tbody>tr>td{border-color:var(--color-rule);vertical-align:middle;padding-top:var(--space-2xs);padding-bottom:var(--space-2xs)}.table>tbody>tr:last-child>td{border-bottom-width:0}.card-body:has(>.table){overflow-x:auto}.card-body>.table{width:100%;min-width:max-content}.table td code,.table td .uid{font-family:var(--font-mono);color:var(--color-ink);background:0 0;border:0;padding:0}.form-control,.form-select{background-color:var(--color-paper);border-color:var(--color-field-line);border-radius:var(--radius);color:var(--color-ink);font-size:var(--text-sm);padding:var(--space-2xs) var(--space-xs);min-height:var(--control-height);transition:border-color var(--dur-micro) var(--ease-out)}textarea.form-control{min-height:calc(var(--control-height) * 2)}.form-control-sm,.form-select-sm{min-height:var(--control-height-sm)}.input-group>.form-control,.input-group>.form-select,.input-group>.btn,.input-group-text{min-height:var(--control-height)}.form-control::placeholder{color:var(--color-muted);opacity:1}.form-control:disabled,.form-select:disabled{background-color:var(--color-paper-2);color:var(--color-muted)}.form-label{color:var(--color-muted);font-size:var(--text-2xs);letter-spacing:var(--track-label);text-transform:uppercase;margin-bottom:var(--space-3xs);font-weight:600}.form-text{color:var(--color-muted);font-size:var(--text-xs)}.input-group-text{background-color:var(--color-paper-2);border-color:var(--color-field-line);color:var(--color-muted);font-size:var(--text-sm)}.form-check-input:checked{background-color:var(--color-accent);border-color:var(--color-accent)}.form-control.is-invalid,.form-select.is-invalid{border-color:var(--color-danger);background-image:none}.invalid-feedback{color:var(--color-danger);font-size:var(--text-xs)}.badge{--bs-badge-font-size:var(--text-2xs);--bs-badge-font-weight:600;--bs-badge-padding-x:.45em;--bs-badge-padding-y:.3em;--bs-badge-border-radius:var(--radius-sm);letter-spacing:.02em;border:1px solid #0000}.badge.bg-primary,.badge.bg-success{border-color:var(--color-accent-line);background-color:var(--color-accent-soft)!important;color:var(--color-accent-hover)!important}.badge.bg-danger{border-color:var(--color-danger-line);background-color:var(--color-danger-soft)!important;color:var(--color-danger)!important}.badge.bg-warning{border-color:var(--color-warn-line);background-color:var(--color-warn-soft)!important;color:var(--color-warn)!important}.badge.bg-info{border-color:var(--color-info-line);background-color:var(--color-info-soft)!important;color:var(--color-info)!important}.badge.bg-secondary,.badge.bg-light,.badge.bg-dark{border-color:var(--color-rule);background-color:var(--color-paper-2)!important;color:var(--color-ink-2)!important}.badge.rounded-pill{font-family:var(--font-mono);font-variant-numeric:tabular-nums;border-radius:999px}.alert{--bs-alert-border-radius:var(--radius);font-size:var(--text-sm);padding:var(--space-xs) var(--space-sm);border-width:1px}.alert-danger{--bs-alert-bg:var(--color-danger-soft);--bs-alert-border-color:var(--color-danger-line);--bs-alert-color:var(--color-danger)}.alert-warning{--bs-alert-bg:var(--color-warn-soft);--bs-alert-border-color:var(--color-warn-line);--bs-alert-color:var(--color-warn)}.alert-success{--bs-alert-bg:var(--color-accent-soft);--bs-alert-border-color:var(--color-accent-line);--bs-alert-color:var(--color-accent-hover)}.alert-info{--bs-alert-bg:var(--color-info-soft);--bs-alert-border-color:var(--color-info-line);--bs-alert-color:var(--color-info)}.modal-content{background-color:var(--color-paper);border:1px solid var(--color-rule-strong);border-radius:var(--radius-lg);box-shadow:var(--shadow-float)}.modal-header,.modal-footer{border-color:var(--color-rule);padding:var(--space-xs) var(--space-sm)}.modal-title{font-family:var(--font-display);font-size:var(--text-md);font-weight:600}.modal-backdrop.show{background-color:var(--color-scrim);opacity:1}.dropdown-menu{--bs-dropdown-bg:var(--color-paper);--bs-dropdown-border-color:var(--color-rule-strong);--bs-dropdown-border-radius:var(--radius);--bs-dropdown-link-color:var(--color-ink);--bs-dropdown-link-hover-bg:var(--color-paper-2);--bs-dropdown-link-active-bg:var(--color-accent-soft);--bs-dropdown-link-active-color:var(--color-accent-hover);--bs-dropdown-font-size:var(--text-sm);box-shadow:var(--shadow-float)}.list-group{--bs-list-group-bg:var(--color-paper);--bs-list-group-border-color:var(--color-rule);--bs-list-group-border-radius:var(--radius);--bs-list-group-action-hover-bg:var(--color-paper-2);--bs-list-group-active-bg:var(--color-accent-soft);--bs-list-group-active-border-color:var(--color-accent-line);--bs-list-group-active-color:var(--color-accent-hover)}.text-muted,.text-body-secondary{color:var(--color-muted)!important}.text-primary,.text-success{color:var(--color-accent)!important}.text-danger{color:var(--color-danger)!important}.text-warning{color:var(--color-warn)!important}.text-info{color:var(--color-info)!important}.text-dark{color:var(--color-ink)!important}.bg-white,.bg-body{background-color:var(--color-paper)!important}.bg-light{background-color:var(--color-paper-2)!important}.border{border-color:var(--color-rule)!important}.border-top{border-top-color:var(--color-rule)!important}.border-bottom{border-bottom-color:var(--color-rule)!important}.small,small{font-size:var(--text-xs)}.spinner-border,.spinner-grow{color:var(--color-accent)}.placeholder{background-color:var(--color-paper-3);opacity:1;border-radius:var(--radius-sm)}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.15s!important;animation-duration:.15s!important;animation-iteration-count:1!important}.btn:active:not(:disabled){transform:none}.spinner-border,.spinner-grow,.placeholder-glow .placeholder{animation-duration:revert!important;animation-iteration-count:infinite!important}}.main-content{padding:calc(var(--topbar-height) + var(--space-sm)) var(--space-sm) var(--space-lg);min-height:100vh}@media (width>=992px){.main-content{margin-left:var(--rail-width);padding:var(--space-lg) var(--space-xl) var(--space-2xl)}}.sheet-head{justify-content:space-between;align-items:baseline;gap:var(--space-2xs) var(--space-sm);padding-bottom:var(--space-xs);margin-bottom:var(--space-md);border-bottom:1px solid var(--color-rule-strong);flex-wrap:wrap;display:flex}.sheet-head h1,.sheet-head h2{font-size:var(--text-xl);margin:0}.sheet-head__meta{color:var(--color-muted);font-size:var(--text-xs)}h2{margin-top:0}.summary-box{padding:var(--space-xs) 0;background:0 0;height:100%}.summary-value{font-family:var(--font-mono);font-size:var(--text-figure);letter-spacing:-.03em;font-variant-numeric:tabular-nums;color:var(--color-ink);font-weight:500;line-height:1.05}.ledger-row{border-top:1px solid var(--color-rule-strong);border-bottom:1px solid var(--color-rule-strong);grid-template-columns:repeat(auto-fit,minmax(0,1fr));display:grid}.ledger-cell{padding:var(--space-xs) var(--space-sm) var(--space-xs) 0;border-right:1px solid var(--color-rule)}.ledger-cell:last-child{border-right:0}.ledger-cell__label{margin-bottom:var(--space-3xs);color:var(--color-muted);font-size:var(--text-2xs);letter-spacing:var(--track-label);text-transform:uppercase;font-weight:600;display:block}.ledger-cell__note{color:var(--color-neutral);font-size:var(--text-2xs)}@media (width<=575.98px){.ledger-row{grid-template-columns:repeat(2,minmax(0,1fr))}.ledger-cell:nth-child(2n){border-right:0}.ledger-cell:nth-child(n+3){border-top:1px solid var(--color-rule)}}.tab-scrollable{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch!important;white-space:nowrap!important;border-bottom:1px solid var(--color-rule)!important;flex-wrap:nowrap!important;padding-bottom:0!important;display:flex!important;overflow-x:auto!important}.tab-scrollable::-webkit-scrollbar{display:none}.tab-scrollable .nav-link,.nav-tabs .nav-link{min-height:52px!important;font-size:var(--text-sm)!important;white-space:nowrap!important;color:var(--color-muted)!important;transition:color var(--dur-micro) var(--ease-out), border-color var(--dur-micro) var(--ease-out)!important;background:0 0!important;border:none!important;border-bottom:2px solid #0000!important;border-radius:0!important;flex-shrink:0!important;justify-content:center!important;align-items:center!important;padding:12px 18px!important;font-weight:500!important;display:flex!important}.tab-scrollable .nav-link:hover:not(.active),.nav-tabs .nav-link:hover:not(.active){color:var(--color-ink)!important;border-bottom-color:var(--color-rule-strong)!important}.tab-scrollable .nav-link.active,.nav-tabs .nav-link.active{border-bottom:2px solid var(--color-accent)!important;color:var(--color-ink)!important;background:0 0!important;font-weight:600!important}.rfid-scan-panel{background:var(--color-paper-2);border-radius:var(--radius);margin-bottom:var(--space-sm);padding:var(--space-2xs) var(--space-xs);font-size:var(--text-sm);box-shadow:none;border:1px solid}.barn-map{min-height:100%;padding:var(--space-sm);background-color:var(--color-paper);background-image:linear-gradient(to right, var(--color-paper-2) 1px, transparent 1px), linear-gradient(to bottom, var(--color-paper-2) 1px, transparent 1px);background-size:24px 24px;position:relative}.barn-map-aisles{align-items:flex-start;gap:var(--space-md);display:flex}.barn-aisle{min-width:0;padding:var(--space-2xs);border:1px solid var(--color-rule);border-radius:var(--radius);background:var(--color-paper);flex:1 1 0;align-items:stretch;display:flex}.barn-col{flex-direction:column;flex:1 1 0;gap:4px;min-width:0;display:flex}.barn-col-label{padding-bottom:var(--space-3xs);color:var(--color-muted);font-size:var(--text-2xs);letter-spacing:var(--track-label);text-align:center;font-weight:600}.barn-walkway{padding:var(--space-2xs) 0;border-left:1px solid var(--color-rule);border-right:1px solid var(--color-rule);background:var(--color-paper-2);color:var(--color-neutral);flex-direction:column;flex:none;justify-content:space-around;align-items:center;margin:26px 6px 0;display:flex}.barn-pen{padding:var(--space-3xs);border-radius:var(--radius-sm);cursor:pointer;transition:background-color var(--dur-micro) var(--ease-out), border-color var(--dur-micro) var(--ease-out);flex-direction:column;justify-content:center;align-items:center;gap:1px;display:flex;position:relative;overflow:hidden}.barn-pen:hover{border-color:var(--color-accent)!important}.barn-pen:focus-visible{outline:2px solid var(--color-focus);outline-offset:1px}.barn-pen-label{color:var(--color-muted);font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:500;position:absolute;top:5px;left:7px}.barn-pen-dot{border-radius:50%;width:7px;height:7px;position:absolute;top:7px;right:7px}.barn-pen-uid{color:var(--color-ink);font-family:var(--font-mono);font-size:var(--text-xs);font-variant-numeric:tabular-nums;letter-spacing:-.02em;font-weight:500}.barn-pen-pig{object-fit:contain}.barn-pen-more{color:var(--color-muted);font-size:var(--text-2xs);position:absolute;bottom:4px}.barn-pen-empty{color:var(--color-neutral);font-size:var(--text-2xs);letter-spacing:.04em}.map-page-container{flex-direction:column;height:calc(100vh - 160px);display:flex}.map-page-container h2{flex-shrink:0}.map-grid-card{flex-direction:column;flex:1;display:flex;overflow:hidden}.map-grid-card .card-body{flex:1;padding:0;overflow:auto}.map-grid-container{margin-top:var(--space-sm);border:1px solid var(--color-rule);border-radius:var(--radius);background:var(--color-paper);overflow-x:auto}.animal-map-table{border-collapse:collapse;table-layout:auto;width:100%}.animal-map-table th,.animal-map-table td{border:1px solid var(--color-rule);padding:var(--space-2xs) var(--space-3xs);text-align:center;vertical-align:middle}.animal-map-table thead th,.animal-map-table .row-label{background-color:var(--color-paper-2);color:var(--color-muted);font-size:var(--text-2xs);letter-spacing:var(--track-label);font-weight:600}.animal-map-table .row-label{width:40px}.map-cell{cursor:pointer;transition:background-color var(--dur-micro) var(--ease-out);min-width:80px;max-width:120px}.map-cell:hover{background-color:var(--color-paper-2)}.cell-location{color:var(--color-ink);font-size:var(--text-xs);font-weight:600}.cell-uid{color:var(--color-muted);font-family:var(--font-mono);font-size:var(--text-2xs);word-break:break-word;white-space:normal;margin-top:2px;line-height:1.2}.pig-icon-img{width:20px;height:20px;margin-bottom:var(--space-3xs)}.record-row{justify-content:space-between;align-items:center;gap:var(--space-sm);padding:var(--space-xs) var(--space-2xs);border-bottom:1px solid var(--color-rule);cursor:pointer;transition:background-color var(--dur-micro) var(--ease-out);background:0 0;display:flex}.record-row:hover,.record-row:focus-visible{background-color:var(--color-paper-2)}.record-row:last-child{border-bottom:0}.topbar{z-index:var(--z-nav);align-items:center;gap:var(--space-2xs);height:var(--topbar-height);padding:0 var(--space-2xs);background:var(--color-paper);border-bottom:1px solid var(--color-rule);display:flex;position:fixed;top:0;left:0;right:0}.topbar__menu{border-radius:var(--radius);width:44px;height:44px;color:var(--color-ink);cursor:pointer;transition:background-color var(--dur-micro) var(--ease-out), border-color var(--dur-micro) var(--ease-out);background:0 0;border:1px solid #0000;justify-content:center;align-items:center;padding:0;display:flex}.topbar__menu:hover{background:var(--color-paper-2)}.topbar__menu:active{background:var(--color-paper-3)}.topbar__wordmark{font-family:var(--font-display);font-size:var(--text-md);letter-spacing:var(--track-display);color:var(--color-ink);white-space:nowrap;font-weight:600}@media (width>=992px){.topbar{display:none}}.sidebar{width:var(--rail-width);height:100%;z-index:var(--z-drawer);padding:var(--space-sm) var(--space-2xs) var(--space-2xs);background:var(--color-paper-2);border-right:1px solid var(--color-rule-strong);overscroll-behavior:contain;scrollbar-width:none;-ms-overflow-style:none;visibility:hidden;transition:transform var(--dur-long) var(--ease-in), visibility 0s linear var(--dur-long);flex-direction:column;display:flex;position:fixed;top:0;left:0;overflow-y:auto;transform:translate(-100%)}.sidebar::-webkit-scrollbar{display:none}.sidebar.open{visibility:visible;box-shadow:var(--shadow-float);transition:transform var(--dur-long) var(--ease-out), visibility 0s;transform:translate(0)}@media (width>=992px){.sidebar{visibility:visible;transition:none;transform:none}.sidebar.open{box-shadow:none}}.sidebar-overlay{z-index:var(--z-scrim);background:var(--color-scrim);visibility:hidden;opacity:0;transition:opacity var(--dur-short) var(--ease-out), visibility 0s linear var(--dur-short);position:fixed;inset:0}.sidebar-overlay.visible{visibility:visible;opacity:1;transition:opacity var(--dur-short) var(--ease-out), visibility 0s}@media (width>=992px){.sidebar-overlay{display:none}}.sidebar-header{justify-content:space-between;align-items:center;gap:var(--space-2xs);padding:0 var(--space-2xs) var(--space-xs);margin-bottom:var(--space-xs);border-bottom:1px solid var(--color-rule-strong);display:flex}.logo-area{align-items:center;gap:var(--space-2xs);min-width:0;display:flex}.farm-name{font-family:var(--font-display);font-size:var(--text-md);letter-spacing:var(--track-display);color:var(--color-ink);white-space:nowrap;font-weight:600}.close-btn{border-radius:var(--radius);width:36px;height:36px;color:var(--color-muted);cursor:pointer;transition:background-color var(--dur-micro) var(--ease-out);background:0 0;border:0;justify-content:center;align-items:center;padding:0;display:flex}.close-btn:hover{background:var(--color-paper-3)}@media (width>=992px){.close-btn{display:none}}.sidebar .nav-link,.sidebar .nav-link:link,.sidebar .nav-link:visited{align-items:center;gap:var(--space-2xs);width:100%!important;min-height:44px!important;padding:10px var(--space-2xs)!important;border-radius:var(--radius)!important;font-family:var(--font-body)!important;font-size:var(--text-sm)!important;color:var(--color-ink-2)!important;transition:background-color var(--dur-micro) var(--ease-out), color var(--dur-micro) var(--ease-out), border-color var(--dur-micro) var(--ease-out)!important;background:0 0!important;border-left:2px solid #0000!important;margin-bottom:1px!important;font-weight:500!important;line-height:1.35!important;display:flex!important}.sidebar .nav-link:hover:not(.active){background:var(--color-paper-3)!important;color:var(--color-ink)!important}.sidebar .nav-link.active{background:var(--color-accent-soft)!important;color:var(--color-accent-hover)!important;border-left-color:var(--color-accent)!important;border-radius:0 var(--radius) var(--radius) 0!important;font-weight:600!important}.sidebar .nav-link svg{color:var(--color-neutral);transition:color var(--dur-micro) var(--ease-out);flex:none}.sidebar .nav-link:hover svg{color:var(--color-ink-2)}.sidebar .nav-link.active svg{color:var(--color-accent)}.sidebar-section{margin-bottom:1px}.sidebar-section-header{align-items:center;gap:var(--space-2xs);width:100%;min-height:44px;padding:10px var(--space-2xs);border-radius:var(--radius);color:var(--color-ink-2);font-family:var(--font-body);font-size:var(--text-sm);text-align:left;cursor:pointer;transition:background-color var(--dur-micro) var(--ease-out), color var(--dur-micro) var(--ease-out);background:0 0;border:0;border-left:2px solid #0000;font-weight:500;display:flex}.sidebar-section-header:hover{background:var(--color-paper-3);color:var(--color-ink)}.sidebar-section-header svg{color:var(--color-neutral)}.sidebar-section-header:hover svg{color:var(--color-ink-2)}.sidebar-submenu{margin:2px 0 var(--space-3xs) 18px;padding-left:var(--space-2xs);border-left:1px solid var(--color-rule-strong)}.sidebar-submenu .nav-link{min-height:38px!important;padding:8px var(--space-2xs)!important;font-size:var(--text-xs)!important;color:var(--color-muted)!important;font-weight:400!important}.sidebar-submenu .nav-link:hover:not(.active){background:var(--color-paper-3)!important;color:var(--color-ink)!important}.sidebar-submenu .nav-link.active{color:var(--color-accent-hover)!important;background:0 0!important;border-left-color:#0000!important;font-weight:600!important}.sidebar-footer{padding:var(--space-2xs) var(--space-2xs) 0;border-top:1px solid var(--color-rule-strong);margin-top:auto}.sidebar-footer hr{display:none}.avatar{border-radius:var(--radius);border:1px solid var(--color-accent-line);width:32px;height:32px;font-family:var(--font-body);font-size:var(--text-xs);letter-spacing:.02em;justify-content:center;align-items:center;font-weight:600;display:flex;background:var(--color-accent-soft)!important;color:var(--color-accent-hover)!important}.bottom-nav{z-index:var(--z-nav);background:var(--color-paper);border-top:1px solid var(--color-rule-strong);padding-bottom:env(safe-area-inset-bottom);justify-content:space-around;align-items:stretch;display:flex;position:fixed;bottom:0;left:0;right:0}.bottom-nav-item{min-height:52px;padding:var(--space-2xs) var(--space-3xs);color:var(--color-muted);font-size:var(--text-2xs);white-space:nowrap;transition:color var(--dur-micro) var(--ease-out), border-color var(--dur-micro) var(--ease-out), background-color var(--dur-micro) var(--ease-out);border-top:2px solid #0000;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:3px;font-weight:500;text-decoration:none;display:flex}.bottom-nav-item svg{color:var(--color-neutral)}.bottom-nav-item.active{color:var(--color-accent-hover);border-top-color:var(--color-accent);background:var(--color-accent-soft)}.bottom-nav-item.active svg{color:var(--color-accent)}.bottom-nav-item:active{background:var(--color-paper-3)}.bottom-nav-item:focus-visible{outline:2px solid var(--color-focus);outline-offset:-2px}@media (width<=767.98px){.main-content{padding-bottom:calc(var(--bottomnav-height) + var(--space-sm))!important}}
