:root{--bg:#f6f7f9;--panel:#fff;--sunken:#f1f3f6;--text:#101828;--muted:#5d6676;--line:#e3e6eb;--line-strong:#cfd4dc;--accent:#2f55d4;--accent-soft:#eef2ff;--accent-fg:#fff;--good:#0f7b52;--good-soft:#e7f5ee;--warn:#9a5800;--warn-soft:#fff4e0;--danger:#b42318;--danger-soft:#fdecea;--highlight:#fff7d1;--var-step:#7a4fd0;--var-engine:#0e7490;--map-sea:#8fd3f4;--map-sea-deep:#5bb8e8;--map-wave:#ffffff59;--map-shallow:#c4ecf8;--map-foam:#fff;--map-land:#bfe69a;--map-land-has:#86d35f;--map-on:#ffd36b;--map-sand:#edd09a;--map-sand-deep:#caa46a;--map-line:#ffffffe6;--map-badge:#2f7a2a;--glass:#ffffffd1;--radius:8px;--side-w:minmax(max-content, var(--side-w-user,0px));--fs-sm:.875rem;--fs-xs:max(12px, .78rem);--mono:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;color:var(--text);background:var(--bg);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-family:system-ui,-apple-system,PingFang TC,Noto Sans TC,Microsoft JhengHei,sans-serif;font-size:100%;line-height:1.55}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0f1115;--panel:#171a20;--sunken:#1d2128;--text:#e8eaee;--muted:#9aa2b1;--line:#2a2f38;--line-strong:#3a404b;--accent:#8ba4ff;--accent-soft:#1e2a4d;--accent-fg:#0f1115;--good:#5fd3a0;--good-soft:#143326;--warn:#f0b350;--warn-soft:#3a2a10;--danger:#ff8a80;--danger-soft:#3d1916;--highlight:#3a3312;--var-step:#c3a6ff;--var-engine:#5ccfe6;--map-sea:#173a5c;--map-sea-deep:#0d2440;--map-wave:#a0d2ff1f;--map-shallow:#22557a;--map-foam:#dcf0ff8c;--map-land:#4f7a45;--map-land-has:#6aa84f;--map-on:#e0b44c;--map-sand:#8a7350;--map-sand-deep:#5e4c33;--map-line:#e6f5e173;--map-badge:#a6e3a1;--glass:#181c24cc;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-text-size=small]{font-size:87.5%}:root[data-text-size=large]{font-size:112.5%}:root[data-theme=dark]{--bg:#0f1115;--panel:#171a20;--sunken:#1d2128;--text:#e8eaee;--muted:#9aa2b1;--line:#2a2f38;--line-strong:#3a404b;--accent:#8ba4ff;--accent-soft:#1e2a4d;--accent-fg:#0f1115;--good:#5fd3a0;--good-soft:#143326;--warn:#f0b350;--warn-soft:#3a2a10;--danger:#ff8a80;--danger-soft:#3d1916;--highlight:#3a3312;--var-step:#c3a6ff;--var-engine:#5ccfe6;--map-sea:#173a5c;--map-sea-deep:#0d2440;--map-wave:#a0d2ff1f;--map-shallow:#22557a;--map-foam:#dcf0ff8c;--map-land:#4f7a45;--map-land-has:#6aa84f;--map-on:#e0b44c;--map-sand:#8a7350;--map-sand-deep:#5e4c33;--map-line:#e6f5e173;--map-badge:#a6e3a1;--glass:#181c24cc;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}body{background:var(--bg);margin:0}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}h1{text-wrap:balance;margin:0;font-size:1.45rem;line-height:1.3}h2{margin:0;font-size:1.05rem}h3{margin:0;font-size:.95rem}.muted,small{color:var(--muted)}small{font-size:var(--fs-xs)}p{margin:0}.shell{grid-template-columns:var(--side-w) minmax(0, 1fr);min-height:100vh;display:grid}.side{z-index:20;background:var(--panel);border-right:1px solid var(--line);flex-direction:column;gap:2px;height:100vh;padding:16px 12px;display:flex;position:sticky;top:0}.brand{color:var(--text);align-items:center;gap:10px;padding:4px 8px 16px;font-size:1rem;font-weight:700;display:flex}.brand:hover{text-decoration:none}.logo{background:var(--accent);width:26px;height:26px;color:var(--accent-fg);font-size:var(--fs-sm);border-radius:7px;flex:none;place-items:center;display:grid}.side nav{flex-direction:column;gap:2px;display:flex}.nav-link{color:var(--text);white-space:nowrap;border-radius:6px;align-items:center;gap:10px;padding:7px 10px;display:flex}.nav-icon{flex:none}.nav-link .nav-icon{color:var(--muted)}.nav-link[aria-current=page] .nav-icon{color:inherit}.nav-link:hover{background:var(--sunken);text-decoration:none}.nav-link[aria-current=page]{background:var(--accent-soft);color:var(--accent);font-weight:700}.side-foot{contain:inline-size;flex-direction:column;align-items:stretch;gap:10px;margin-top:auto;padding:0 2px;display:flex}.side-actions{justify-content:space-between;align-items:center;gap:4px;display:flex}.side-actions :is(.logout,.side-toggle){width:34px;height:34px;color:var(--muted);background:0 0;border:none;border-radius:8px;place-items:center;padding:0;display:grid;position:relative}.side-actions :is(.logout,.side-toggle):hover:not(:disabled){background:var(--sunken);color:var(--text);filter:none;text-decoration:none}.side-actions .nav-icon{color:inherit}.side-actions .side-label{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.side-actions :is(.logout,.side-toggle):is(:hover,:focus-visible) .side-label{clip-path:none;z-index:30;background:var(--text);width:auto;height:auto;color:var(--panel);font-size:var(--fs-sm);pointer-events:none;border-radius:6px;padding:4px 9px;font-weight:400;line-height:1.4;top:50%;left:calc(100% + 8px);overflow:visible;transform:translateY(-50%);box-shadow:0 4px 12px #0000002e}.theme-switch{--sw:28px;border:1px solid var(--line);background:var(--sunken);border-radius:999px;gap:0;padding:2px;display:inline-flex}.theme-switch button{width:var(--sw);height:var(--sw);color:var(--muted);background:0 0;border:none;border-radius:50%;flex:none;place-items:center;padding:0;display:grid;overflow:hidden}.theme-switch button:hover:not(:disabled){color:var(--text);filter:none}.prefs{flex-wrap:nowrap;gap:6px;display:flex}.prefs .theme-switch{z-index:2;flex:none;position:relative}.text-size-switch button{font-family:Georgia,Times New Roman,serif;font-weight:600;line-height:1}.text-size-switch .small{font-size:12px}.text-size-switch .medium{font-size:14px}.text-size-switch .large{font-size:17px}.theme-switch button:not([aria-checked=true]){opacity:0;pointer-events:none;width:0;transform:scale(.6)}.theme-switch:is(:hover,:focus-within) button{width:var(--sw);opacity:1;pointer-events:auto;transform:none}.theme-switch:is(:hover,:focus-within) button+button{margin-left:2px}@media (prefers-reduced-motion:no-preference){.theme-switch button{transition:width .22s cubic-bezier(.2,.8,.2,1),height .22s cubic-bezier(.2,.8,.2,1),margin .22s cubic-bezier(.2,.8,.2,1),opacity .18s,transform .22s cubic-bezier(.3,1.4,.6,1),background-color .15s}}.theme-switch button[aria-checked=true]{background:var(--panel);color:var(--text);box-shadow:0 0 0 1px var(--line), 0 1px 2px #00000014}main{width:100%;min-width:0;padding:20px 28px 64px}@media (width>=900px){@media (prefers-reduced-motion:no-preference){:root:not([data-resizing]) .shell{transition:grid-template-columns .18s ease-out}}.side-resizer{cursor:col-resize;z-index:21;touch-action:none;width:8px;height:100%;position:absolute;top:0;right:-4px}.side-resizer:after{content:"";background:0 0;transition:background .15s;position:absolute;inset:0 3px}.side-resizer:hover:after,.side-resizer:focus-visible:after,[data-resizing] .side-resizer:after{background:var(--accent)}[data-resizing]{cursor:col-resize;-webkit-user-select:none;user-select:none}[data-side=collapsed] .side-resizer{display:none}.side-foot{gap:6px;padding:0}.prefs{flex-direction:column;align-items:flex-start;gap:6px;padding-left:2px}.side-actions{flex-direction:column;align-items:stretch;gap:2px}.side-actions :is(.logout,.side-toggle){white-space:nowrap;border-radius:6px;justify-content:flex-start;gap:10px;width:auto;height:auto;padding:7px 10px;display:flex}.brand{white-space:nowrap}:root:not([data-side=collapsed]) .side-actions :is(.logout,.side-toggle) .side-label,:root:not([data-side=collapsed]) .side-actions :is(.logout,.side-toggle):is(:hover,:focus-visible) .side-label{clip-path:none;width:auto;height:auto;color:inherit;box-shadow:none;font-size:inherit;line-height:inherit;background:0 0;padding:0;position:static;overflow:visible;transform:none}[data-side=collapsed]{--side-w:3.75rem}[data-side=collapsed] .side{z-index:20;padding-inline:11px}[data-side-anim] .side{overflow:hidden}[data-side=collapsed] .theme-switch{flex-direction:column}[data-side=collapsed] .theme-switch button:not([aria-checked=true]){width:var(--sw);height:0}[data-side=collapsed] .theme-switch:is(:hover,:focus-within) button{height:var(--sw)}[data-side=collapsed] .theme-switch:is(:hover,:focus-within) button+button{margin-top:2px;margin-left:0}[data-side=collapsed] .side-label{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}[data-side=collapsed] .nav-link{position:relative}[data-side=collapsed] .nav-link:is(:hover,:focus-visible) .side-label{clip-path:none;background:var(--text);width:auto;height:auto;color:var(--panel);font-size:var(--fs-sm);pointer-events:none;border-radius:6px;padding:4px 9px;font-weight:400;line-height:1.4;top:50%;left:calc(100% + 10px);overflow:visible;transform:translateY(-50%);box-shadow:0 4px 12px #0000002e}}@media (width<=899px){.shell{grid-template-rows:auto 1fr;grid-template-columns:minmax(0,1fr)}.side{z-index:5;border-right:none;border-bottom:1px solid var(--line);flex-direction:row;align-items:center;gap:8px;height:auto;padding:8px 12px;position:sticky}.brand{padding:0 4px 0 0}.brand span:last-child{display:none}.side nav{scrollbar-width:none;flex-direction:row;flex:1;overflow-x:auto}.side-foot{contain:none;flex-direction:row;flex:none;align-items:center;gap:4px;margin:0}.side nav .nav-icon,.side-actions .side-toggle,.side-resizer{display:none}.theme-switch{--sw:26px}main{padding:16px 16px 96px}}button{font:inherit;border-radius:var(--radius);border:1px solid var(--accent);background:var(--accent);color:var(--accent-fg);cursor:pointer;white-space:nowrap;padding:7px 14px;font-weight:500}button:hover:not(:disabled){filter:brightness(1.06)}button:disabled{opacity:.45;cursor:default}button.secondary{background:var(--panel);color:var(--text);border-color:var(--line-strong)}button.secondary:hover:not(:disabled){background:var(--sunken);filter:none}button.link{color:var(--accent);background:0 0;border:none;padding:2px 6px;font-weight:400}button.link:hover:not(:disabled){filter:none;text-decoration:underline}button.danger{color:var(--danger)}button.icon-btn{border-radius:6px;place-items:center;padding:6px;display:inline-grid}button.icon-btn:hover:not(:disabled){background:var(--sunken);text-decoration:none}button.icon-btn .nav-icon{color:inherit}.tip-float{z-index:1000;pointer-events:none;background:var(--text);color:var(--panel);font-size:var(--fs-sm);white-space:nowrap;border-radius:6px;padding:4px 9px;font-weight:400;line-height:1.4;position:fixed;top:0;left:0;box-shadow:0 4px 12px #0000002e}input,select{font:inherit;border:1px solid var(--line-strong);border-radius:calc(var(--radius) - 2px);background:var(--panel);color:var(--text);width:100%;min-width:0;padding:7px 10px}input:focus,select:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 20%, transparent);outline:none}input[type=number]{font-variant-numeric:tabular-nums}@media (width<=600px){input,select{font-size:max(16px,1rem)}}.row-between{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.actions{white-space:nowrap;flex-wrap:wrap;align-items:center;gap:6px;display:flex}td.actions{white-space:nowrap;display:table-cell}.grid{grid-template-columns:repeat(auto-fill,minmax(min(12.5rem,100%),1fr));gap:14px 16px;display:grid}.field{font-size:var(--fs-sm);color:var(--muted);flex-direction:column;gap:4px;min-width:0;display:flex}.field>span{font-weight:500}.field input,.field select{color:var(--text)}.field small{font-size:var(--fs-xs);line-height:1.4}.chip{font-size:var(--fs-xs);white-space:nowrap;background:var(--sunken);color:var(--muted);border-radius:999px;align-items:center;gap:4px;padding:1px 9px;font-weight:500;display:inline-flex}.chip.good{background:var(--good-soft);color:var(--good)}.chip.warn{background:var(--warn-soft);color:var(--warn)}.chip.bad{background:var(--danger-soft);color:var(--danger)}.panel{background:var(--panel);border:1px solid var(--line);border-radius:calc(var(--radius) + 2px);gap:14px;min-width:0;padding:18px 20px;display:grid}.panel-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px;display:flex}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:18px;display:flex}.page-head p{margin-top:4px}table{border-collapse:collapse;background:var(--panel);width:100%}th,td{text-align:left;border-bottom:1px solid var(--line);vertical-align:middle;padding:8px 10px}th{font-size:var(--fs-xs);color:var(--muted);background:var(--sunken);font-weight:500}td.num{font-variant-numeric:tabular-nums;white-space:nowrap;font-family:var(--mono);font-size:var(--fs-sm)}tbody tr:last-child td{border-bottom:none}.table-wrap{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);overflow-x:auto}.table-wrap>table{margin:0}table.edit td{padding:4px 5px}table.edit td:first-child{text-align:center;width:2rem}.rows-table{justify-items:start;gap:8px;display:grid}.rows-table>.table-wrap{width:100%}table.edit input,table.edit select{min-width:6.5rem}table.edit select[aria-label^=來源],table.edit input[aria-label^=待確認說明]{min-width:9.5rem}tr.highlight td{background:var(--highlight);font-weight:600}.empty-row{color:var(--muted);font-size:var(--fs-sm);padding:10px}.error{color:var(--danger);margin:0}.error-box{border:1px solid color-mix(in srgb, var(--danger) 40%, transparent);background:var(--danger-soft);border-radius:var(--radius);color:var(--danger);padding:12px 16px}.error-box ul{margin:6px 0 0;padding-left:1.2rem}.error-box.row-between{margin:0 0 16px}p.warn,div.warn{background:var(--warn-soft);color:var(--warn);border-radius:var(--radius);font-size:var(--fs-sm);padding:8px 12px}.notice{color:var(--muted);font-size:var(--fs-sm)}.login-page{place-items:center;min-height:100vh;padding:16px;display:grid}.login{background:var(--panel);border:1px solid var(--line);border-radius:14px;flex-direction:column;gap:14px;width:min(22.5rem,100%);padding:28px;display:flex}.login .brand{padding:0 0 4px}.login label{font-size:var(--fs-sm);color:var(--muted);flex-direction:column;gap:4px;display:flex}.login button{padding:9px}.cards{grid-template-columns:repeat(auto-fill,minmax(min(16.25rem,100%),1fr));gap:12px;display:grid}.card{background:var(--panel);border:1px solid var(--line);border-radius:calc(var(--radius) + 2px);color:var(--text);flex-direction:column;gap:6px;padding:16px 18px;display:flex}a.card:hover{border-color:var(--accent);text-decoration:none}.card>span{color:var(--muted);font-size:var(--fs-sm)}.home{gap:28px;display:grid}.home section{gap:10px;display:grid}.toolbar{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;display:flex}.toolbar input{max-width:360px}.inline-form{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);flex-wrap:wrap;align-items:flex-end;gap:8px;margin:0 0 14px;padding:14px 16px;display:flex}.inline-form .field{flex:240px}.case-name{overflow-wrap:anywhere;font-weight:600}.case-page{container-type:inline-size}.case-panel{align-content:start;gap:10px;min-width:0;display:grid}.case-panel .page-head,.case-panel .toolbar,.case-panel .inline-form{margin:0}.area-select{width:auto;max-width:100%}.chip-btn{cursor:pointer;font:inherit;font-size:var(--fs-xs);border:none}.chip-btn:hover:not(:disabled){filter:brightness(.95)}.case-rows{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);margin:0;padding:0;list-style:none}.case-row{border-bottom:1px solid var(--line);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:2px 10px;padding:10px 8px 10px 14px;display:grid}.case-row:last-child{border-bottom:none}.case-row{transition:background-color .12s;position:relative}.case-row:hover,.case-row:focus-within{background:var(--accent-soft)}.case-row:first-child{border-radius:var(--radius) var(--radius) 0 0}.case-row:last-child{border-radius:0 0 var(--radius) var(--radius)}.case-row:only-child{border-radius:var(--radius)}.case-row .case-name:after{content:"";position:absolute;inset:0}.case-row:hover .case-name{text-decoration:underline}.case-row .case-name:focus-visible{outline:none}.case-row:has(.case-name:focus-visible){box-shadow:inset 0 0 0 2px var(--accent)}.case-row :is(button,.chip){z-index:1;position:relative}.case-row .case-title{flex-wrap:wrap;align-items:center;gap:4px 8px;min-width:0;display:flex}.case-row .case-time{font-size:var(--fs-xs);color:var(--muted);font-variant-numeric:tabular-nums;grid-column:1}.case-row .actions{grid-area:1/2/span 2;gap:2px}@media (height>=36rem){@container (width>=50rem){.ocean{background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='60'%3E%3Cpath d='M0 30q15-10 30 0t30 0 30 0 30 0' fill='none' stroke='white' stroke-opacity='0.45' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E") 0 0 / 120px 60px, linear-gradient(180deg, var(--map-sea), var(--map-sea-deep));background-blend-mode:soft-light, normal;height:100dvh;margin:-20px -28px -64px;position:relative;overflow:hidden}.case-panel{z-index:2;background:var(--glass);-webkit-backdrop-filter:blur(12px);border:1px solid color-mix(in srgb, var(--line) 60%, transparent);border-radius:18px;flex-direction:column;width:clamp(18rem,30%,24rem);padding:16px;display:flex;position:absolute;top:20px;bottom:20px;left:24px;overflow:hidden;box-shadow:0 10px 30px #0a32502e}.case-panel h1{font-size:1.25rem}.case-panel{transition:opacity .2s,transform .25s,visibility .25s}.case-panel.away{opacity:0;visibility:hidden;pointer-events:none;transform:translate(-24px)}.case-panel>.case-rows{overscroll-behavior:contain;flex:0 auto;min-height:0;overflow-y:auto}.ocean-map{display:flex;position:absolute;inset:0 0 0 calc(clamp(18rem,30%,24rem) + 24px)}}}.case-rows,.region-callout{scrollbar-width:thin;scrollbar-color:color-mix(in srgb, var(--accent) 45%, transparent) transparent}.region-callout{z-index:4;overscroll-behavior:contain;background:var(--glass);-webkit-backdrop-filter:blur(12px);border:2px solid var(--map-on);border-radius:16px;align-content:start;gap:8px;width:clamp(18rem,30%,24rem);max-height:calc(100% - 40px);padding:12px;display:grid;position:absolute;overflow-y:auto;box-shadow:0 10px 30px #0a325038}@media (prefers-reduced-motion:no-preference){.region-callout{animation:.2s ease-out callout-pop}}@keyframes callout-pop{0%{opacity:0;transform:scale(.94)}}.callout-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.callout-head h2{margin:0;font-size:1rem}.callout-head .icon-btn{font-size:1.3rem;line-height:1}.callout-empty{margin:4px 2px 8px}.callout-line{z-index:3;pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.callout-line path{fill:none;stroke-linecap:round}.callout-line .halo{stroke:#fff;stroke-width:6px;opacity:.8}.callout-line .dash{stroke:#e8590c;stroke-width:2.5px;stroke-dasharray:6 6}.callout-line circle{fill:none;stroke:#e8590c;stroke-width:2.5px}.mobile-map{border-radius:var(--radius);border:1px solid var(--line);background:linear-gradient(180deg, var(--map-sea), var(--map-sea-deep));overflow:hidden}.mobile-map summary{cursor:pointer;color:var(--text);background:var(--panel);align-items:center;gap:8px;padding:8px 12px;font-weight:700;list-style:none;display:flex}.mobile-map summary::-webkit-details-marker{display:none}.mobile-map summary:before{content:"";border-bottom:2px solid;border-right:2px solid;width:.5em;height:.5em;transition:transform .15s;transform:rotate(-45deg)}.mobile-map[open] summary:before{transform:rotate(45deg)}.mobile-map[open] summary{border-bottom:1px solid var(--line)}.tw-map.compact{justify-content:center}.tw-map.compact .tw-map-stage{aspect-ratio:356/440;flex:none;width:max(min(100%,352px),min(100%,26rem,56.6364svh));padding:4px}.tw-map.compact .tw-badge text,.tw-map.compact .tw-inset-label{font-size:14px}.tw-map{flex:1;min-width:0;display:flex;position:relative}.tw-map-status{z-index:1;background:var(--glass);font-size:var(--fs-sm);color:var(--muted);pointer-events:none;white-space:nowrap;border-radius:999px;padding:4px 14px;position:absolute;top:16px;left:50%;transform:translate(-50%)}.tw-map-status b{color:var(--text)}.tw-map-stage{perspective:70rem;flex:1;min-width:0;padding:12px 8px;display:flex}.tw-map svg{transform-origin:50% 45%;width:100%;height:100%;display:block;overflow:visible;transform:rotateX(16deg)scale(.9)}.tw-shallow{fill:var(--map-shallow);stroke:var(--map-shallow);stroke-width:18px;stroke-linejoin:round}.tw-foam{fill:var(--map-foam);stroke:var(--map-foam);stroke-width:7px;stroke-linejoin:round;opacity:.85}.tw-side use{fill:var(--map-sand);stroke:var(--map-sand);stroke-width:1.2px;stroke-linejoin:round}.tw-side use.deep{fill:var(--map-sand-deep);stroke:var(--map-sand-deep)}.tw-inset{fill:color-mix(in srgb, var(--map-foam) 22%, transparent);stroke:var(--map-foam);stroke-width:1.2px;stroke-dasharray:4 4}.tw-inset-label{fill:#fff;paint-order:stroke;stroke:#14507880;stroke-width:2px;font-size:8px;font-weight:700}.tw-county{cursor:pointer;outline:none;transition:transform .18s cubic-bezier(.3,1.6,.6,1),filter .15s ease-out}.tw-land{fill:var(--map-land);stroke:var(--map-line);stroke-width:.9px;stroke-linejoin:round;transition:fill .15s}.tw-county.has .tw-land{fill:var(--map-land-has)}.tw-county:hover .tw-land,.tw-county:focus-visible .tw-land{fill:color-mix(in srgb, var(--map-land-has) 70%, #fff)}.tw-county:hover,.tw-county:focus-visible{filter:drop-shadow(0 2px 0 var(--map-sand-deep));transform:translateY(-2px)}.tw-county:focus-visible .tw-land{stroke:var(--accent);stroke-width:1.6px}.tw-county.inset{filter:drop-shadow(0 3px 0 var(--map-sand))}.tw-county.lift{transform:translateY(-8px)}.tw-county.on{filter:drop-shadow(0 8px 0 var(--map-sand-deep)) drop-shadow(0 12px 8px #00000038);transform:translateY(-8px)}.tw-county.on .tw-land{fill:var(--map-on);stroke:#fff;stroke-width:1.4px}.tw-decor,.tw-anchor{pointer-events:none}.tw-anchor{fill:none}.tw-badge{pointer-events:none}.tw-badge circle{fill:#fff;stroke:var(--map-badge);stroke-width:1.4px}.tw-badge text{fill:#2f7a2a;text-anchor:middle;font-size:10px;font-weight:700;font-family:var(--mono)}.tw-pin,.tw-deco{pointer-events:none;transition:transform .18s cubic-bezier(.3,1.6,.6,1)}.tw-pin:is(.on,.lift),.tw-deco:is(.on,.lift){transform:translateY(-8px)}.tw-pin.on .tw-badge circle{fill:#e8590c;stroke:#fff}.tw-pin.on .tw-badge text{fill:#fff}.tw-sea{pointer-events:none}.sc-eye{fill:#2b2a33}.sc-glint{fill:#fff}.sc-blush{fill:#ff8fa3;opacity:.55}.sc-ripple{fill:none;stroke:#fff;stroke-width:1px}.sc-foam,.sc-wake{fill:none;stroke:#fff;stroke-width:1.1px;stroke-linecap:round;opacity:.85}.sc-dolphin{fill:#5b9be0}.sc-dolphin-belly{fill:#eef6ff}.sc-whale{fill:#3569c9}.sc-whale-belly{fill:#e2f1ff}.sc-whale-groove{fill:none;stroke:#9cc6f2;stroke-width:.8px;stroke-linecap:round}.sc-whale-shine{fill:none;stroke:#fff;stroke-width:1.2px;stroke-linecap:round;opacity:.55}.sc-spout-jet{fill:#fff}.sc-spout-arc{fill:none;stroke:#fff;stroke-width:1.3px;stroke-linecap:round}.sc-spout circle{fill:#fff}.sc-shell{fill:#4fae5f}.sc-shell-mark{fill:#8fd27f}.sc-shell-line{fill:none;stroke:#8fd27f;stroke-width:1px;stroke-linecap:round}.sc-flipper,.sc-turtle-head{fill:#a6dc84}.sc-clown{fill:#ff8a3d}.sc-clown-stripe{fill:none;stroke:#fff;stroke-width:1.4px}.sc-flyfish{fill:#3f8fd6}.sc-flyfish-belly{fill:#cfe9ff}.sc-wing{fill:#9fd4ff}.sc-jelly{fill:#ffa9cc}.sc-jelly-shine{fill:none;stroke:#fff;stroke-width:1.4px;stroke-linecap:round;opacity:.9}.sc-jelly-spot{fill:#fff;opacity:.8}.sc-jelly-leg{fill:none;stroke:#f47bb0;stroke-width:1.1px;stroke-linecap:round}.sc-smile{fill:none;stroke:#2b2a33;stroke-width:.6px;stroke-linecap:round;stroke-linejoin:round}.sc-mast{stroke:#7a5a3a;stroke-width:1.1px}.sc-sail{fill:#fff}.sc-jib{fill:#ffe7a0}.sc-flag,.sc-hull{fill:#e8590c}.sc-hull-line{stroke:#fff;stroke-width:.8px;opacity:.8}.sc-cloud{fill:#fff;opacity:.92}@media (prefers-reduced-motion:reduce){.tw-county,.tw-pin,.tw-deco{transition:none}}.editor-head{z-index:4;background:var(--bg);border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin:-20px -28px 18px;padding:14px 28px;display:flex;position:sticky;top:0}.editor-head .title{flex-wrap:wrap;align-items:center;gap:8px;min-width:0;display:flex}.editor-head h1{overflow-wrap:anywhere;font-size:1.25rem}.crumb{font-size:var(--fs-xs);color:var(--muted)}.editor-grid{grid-template-columns:11.25rem minmax(0,1fr) 17.5rem;align-items:start;gap:20px;display:grid}.steps{gap:2px;display:grid;position:sticky;top:5.75rem}.step{color:var(--muted);text-align:left;white-space:normal;background:0 0;border:none;border-radius:6px;grid-template-columns:22px 1fr;align-items:start;gap:10px;padding:6px;font-weight:400;display:grid}.step:hover:not(:disabled){background:var(--sunken);filter:none}.step b{color:var(--text);font-weight:500;display:block}.step small{font-size:var(--fs-xs);line-height:1.35;display:block}.step i{border:1.5px solid var(--line-strong);width:22px;height:22px;font-style:normal;font-size:var(--fs-xs);background:var(--panel);color:var(--muted);border-radius:50%;place-items:center;display:grid}.step.done i{background:var(--good);border-color:var(--good);color:var(--panel)}.step.warn i{background:var(--warn-soft);border-color:var(--warn);color:var(--warn)}.editor-main{gap:16px;min-width:0;display:grid}.editor-main>.panel{scroll-margin-top:5.75rem}.summary{gap:10px;display:grid;position:sticky;top:5.75rem}.summary h2{font-size:var(--fs-sm);color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:6px;font-weight:500;display:flex}.summary h2 small{font-size:var(--fs-xs)}.summary .empty{border:1px dashed var(--line-strong);border-radius:var(--radius);color:var(--muted);font-size:var(--fs-sm);padding:14px}.summary .downloads{gap:6px;display:grid}.summary .downloads button{width:100%}.verdict{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);grid-template-columns:1fr auto;gap:2px 8px;padding:12px 14px;display:grid}.verdict strong{font-size:var(--fs-sm);color:var(--muted);font-weight:500}.verdict .value{font-family:var(--mono);font-variant-numeric:tabular-nums;grid-column:1;font-size:1.3rem;font-weight:600}.verdict .value small{font-family:inherit;font-size:var(--fs-xs);margin-left:3px}.verdict .mark{grid-area:1/2/span 2;align-self:center}.verdict .meter{background:var(--sunken);border-radius:2px;grid-column:1/-1;height:4px;margin:4px 0 2px;overflow:hidden}.verdict .meter span{background:var(--good);border-radius:2px;height:100%;display:block}.verdict.fail{border-color:var(--danger)}.verdict.fail .meter span{background:var(--danger)}.verdict .limit{font-size:var(--fs-xs);color:var(--muted);grid-column:1/-1}.verdict button.help{grid-column:1/-1;justify-self:start}.stale .verdict{opacity:.6}@media (width<=1439px){.editor-grid{grid-template-columns:minmax(0,1fr) 16.25rem}.steps{scrollbar-width:none;grid-column:1/-1;gap:6px;display:flex;position:static;overflow-x:auto}.step{border:1px solid var(--line);background:var(--panel);border-radius:999px;flex:none;grid-template-columns:20px auto;align-items:center;gap:6px;padding:5px 12px 5px 6px}.step small{display:none}.step b{white-space:nowrap}.step i{width:20px;height:20px}.summary{top:5.25rem}}@media (width<=899px){.editor-head{margin:-16px -16px 14px;padding:10px 16px;position:static}.editor-head .actions{z-index:6;padding:10px 16px calc(10px + env(safe-area-inset-bottom,0px));background:var(--panel);border-top:1px solid var(--line);grid-template-columns:1fr 1fr 1.3fr;display:grid;position:fixed;bottom:0;left:0;right:0}.editor-grid{grid-template-columns:minmax(0,1fr)}.steps{order:-2}.summary{order:-1;grid-template-columns:repeat(auto-fit,minmax(min(13.75rem,100%),1fr));align-items:start;position:static}.summary h2,.summary .warn,.summary .empty{grid-column:1/-1}.summary .downloads{flex-wrap:wrap;grid-column:1/-1;display:flex}.summary .downloads button{flex:auto;width:auto}.editor-main>.panel{scroll-margin-top:7rem}.panel{padding:14px}}@media (height<=500px){.side,.editor-head{position:static}}.tabs{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.tabbar{border-bottom:1px solid var(--line);scrollbar-width:none;flex-wrap:nowrap;gap:0;overflow-x:auto}.tabbar button{color:var(--muted);background:0 0;border:none;border-bottom:2px solid #0000;border-radius:0;padding:8px 12px;font-weight:500}.tabbar button[aria-selected=true]{color:var(--text);border-bottom-color:var(--accent)}.tabbar button:hover:not(:disabled){color:var(--text);filter:none}.file-tabs button{font-size:var(--fs-sm);padding:5px 10px}.code{background:var(--sunken);border:1px solid var(--line);border-radius:var(--radius);font-size:var(--fs-xs);line-height:1.5;font-family:var(--mono);margin:0;padding:12px;overflow-x:auto}.calc-table td:nth-child(2),.calc-table td:nth-child(3){font-family:var(--mono);font-size:var(--fs-sm)}.calc-table td:first-child{min-width:9rem}.calc-table td:last-child{min-width:8rem;font-size:var(--fs-sm)}.calc-table td:nth-child(2){min-width:9rem}button.link.help{font-size:var(--fs-xs);white-space:nowrap;border:1px solid var(--line-strong);color:var(--muted);vertical-align:1px;border-radius:999px;margin-left:4px;padding:0 7px;line-height:1.6}button.link.help:hover{color:var(--accent);border-color:var(--accent);text-decoration:none}button.link.help[aria-expanded=true]{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}.tag{font-size:var(--fs-xs);color:var(--warn);background:var(--warn-soft);white-space:nowrap;vertical-align:1px;border-radius:999px;margin-left:6px;padding:0 7px;font-weight:500;display:inline-block}.formula-help{font-size:var(--fs-sm)}.formula-help .muted{margin-left:4px}.formula-doc{font-size:var(--fs-sm);max-width:75ch;line-height:1.65}.formula-doc h4{font-size:var(--fs-xs);color:var(--muted);letter-spacing:.04em;margin:12px 0 2px;font-weight:600}.formula-doc p,.formula-doc ul{margin:4px 0}.formula-doc ul{padding-left:1.25rem}.formula-doc .formula{font-family:var(--mono);background:var(--sunken);border:1px solid var(--line);overflow-wrap:anywhere;border-radius:6px;padding:6px 10px}.formula-doc .pending{border-left:3px solid var(--warn);padding-left:8px}.formula-doc .pending b{color:var(--warn);margin-right:6px}.formula-doc{container-type:inline-size}.formula-doc .plain{margin:0 0 8px;font-size:1.0625em;line-height:1.6}.formula-doc .try{background:var(--accent-soft);font-family:var(--mono);font-size:var(--fs-sm);font-variant-numeric:tabular-nums;overflow-wrap:anywhere;border-radius:6px;margin-top:8px;padding:6px 10px;display:grid}.formula-doc .try .label{font-family:system-ui,-apple-system,PingFang TC,Noto Sans TC,sans-serif;font-size:var(--fs-xs);color:var(--muted)}.formula-doc .check{border:1px solid var(--good);background:var(--good-soft);border-radius:6px;align-items:baseline;gap:8px;margin-top:10px;padding:6px 10px;display:flex}.formula-doc .check b{color:var(--good);white-space:nowrap}.formula-doc .work{grid-template-columns:max-content minmax(0,1fr);gap:6px 14px;margin:12px 0 0;display:grid}.formula-doc .work dt{font-size:var(--fs-xs);color:var(--muted);padding-top:2px;font-weight:600}.formula-doc .work dd{min-width:0;margin:0}.formula-doc .work dd ul{margin:0;padding-left:1.1rem}.formula-doc .work .from{color:var(--muted)}@container (width<=26rem){.formula-doc .work{grid-template-columns:minmax(0,1fr);gap:2px}.formula-doc .work dt{padding-top:6px}}.formula-doc>.adopted{border-top:1px dashed var(--line);margin-top:12px;padding-top:10px}.formula-doc .deep{border:1px solid var(--line);border-radius:8px;margin:12px 0 8px}.formula-doc .deep summary{cursor:pointer;padding:6px 12px;font-weight:600}.formula-doc .deep[open] summary{border-bottom:1px solid var(--line)}.formula-doc .deep-body{padding:0 12px 10px}.help-drawer{z-index:30;background:var(--panel);border-left:1px solid var(--line-strong);grid-template-rows:auto minmax(0,1fr);width:min(34rem,100vw);animation:.2s ease-out drawer-in-right;display:grid;position:fixed;top:0;bottom:0;right:0;box-shadow:-12px 0 40px #00000029}.drawer-head{padding:14px 18px 12px;padding-top:calc(14px + env(safe-area-inset-top,0px));border-bottom:1px solid var(--line);justify-content:space-between;align-items:start;gap:12px;display:flex}.drawer-head>div{gap:2px;min-width:0;display:grid}.drawer-head .eyebrow{font-size:var(--fs-xs);color:var(--muted)}.drawer-head h2{text-wrap:balance;font-size:1.1rem;line-height:1.35}.drawer-head button{font-size:var(--fs-sm);flex:none;padding:3px 12px}.drawer-body{overscroll-behavior:contain;padding:14px 18px calc(24px + env(safe-area-inset-bottom,0px));overflow-y:auto}.drawer-body .formula-doc{max-width:none;font-size:.9375rem}.drawer-step{background:var(--sunken);border:1px solid var(--line);border-radius:var(--radius);font-family:var(--mono);font-size:var(--fs-sm);overflow-wrap:anywhere;margin:0 0 10px;padding:8px 12px;line-height:1.8}.drawer-step .muted{font-family:system-ui,-apple-system,PingFang TC,Noto Sans TC,sans-serif;font-size:var(--fs-xs)}.drawer-scrim{display:none}@keyframes drawer-in-right{0%{transform:translate(100%)}}@keyframes drawer-in-up{0%{transform:translateY(100%)}}@media (width<=599px){.help-drawer{border-left:none;border-top:1px solid var(--line-strong);border-radius:14px 14px 0 0;width:auto;height:86dvh;animation-name:drawer-in-up;top:auto;left:0}.drawer-head{padding-top:18px;position:relative}.drawer-head:before{content:"";background:var(--line-strong);border-radius:2px;width:36px;height:4px;margin-left:-18px;position:absolute;top:7px;left:50%}.drawer-scrim{z-index:29;background:#00000052;display:block;position:fixed;inset:0}}@media (prefers-reduced-motion:reduce){.help-drawer{animation:none}}.var-chip{--c:var(--accent);border:1px solid color-mix(in srgb, var(--c) 45%, transparent);background:color-mix(in srgb, var(--c) 10%, transparent);color:var(--text);font:inherit;white-space:nowrap;cursor:pointer;border-radius:6px;align-items:baseline;gap:4px;margin:1px 0;padding:0 6px;line-height:1.6;display:inline-flex}.var-chip b{color:var(--c);font-family:system-ui,-apple-system,PingFang TC,Noto Sans TC,sans-serif;font-weight:600}.var-chip:hover,.var-chip:focus-visible{outline:2px solid var(--c);outline-offset:0;filter:none}.var-chip.step{--c:var(--var-step)}.var-chip.engine{--c:var(--var-engine)}.field small.feeds{color:var(--accent)}.var-lit{background:var(--highlight);box-shadow:0 0 0 3px var(--highlight), 0 0 0 5px var(--accent);border-radius:4px}tr.var-lit{box-shadow:none}tr.var-lit td{background:var(--highlight)}.var-flash{border-radius:4px;animation:1.6s ease-out var-flash}tr.var-flash td{animation:1.6s ease-out var-flash-row}@keyframes var-flash{0%,45%{background:var(--highlight);box-shadow:0 0 0 3px var(--highlight), 0 0 0 5px var(--accent)}to{box-shadow:0 0 #0000}}@keyframes var-flash-row{0%,45%{background:var(--highlight)}}.jump-back{z-index:7;left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));border-radius:999px;padding:7px 16px;position:fixed;transform:translate(-50%);box-shadow:0 4px 14px #0003}@media (width<=899px){.jump-back{bottom:calc(76px + env(safe-area-inset-bottom,0px))}}.graph-link{font-size:var(--fs-sm);margin-top:8px;display:inline-block}.var-graph{gap:8px;display:grid}.var-graph svg{width:100%;min-width:max(780px,48.75rem);height:auto;display:block}.var-graph .col{fill:var(--muted);letter-spacing:.08em;font-size:12px}.var-graph .edge{fill:none;stroke:var(--line-strong);stroke-width:1.4px;transition:opacity .15s}.var-graph .node{--c:var(--accent);cursor:pointer;outline:none;transition:opacity .15s}.var-graph .node.step{--c:var(--var-step)}.var-graph .node.engine{--c:var(--var-engine)}.var-graph .node rect{fill:var(--panel);stroke:color-mix(in srgb, var(--c) 55%, transparent);stroke-width:1.2px}.var-graph .node text{fill:var(--text);font-size:13px;font-weight:600}.var-graph .node text .unit,.var-graph .node text.sub{fill:var(--muted);font-weight:400}.var-graph .node text.sub{font-size:12px}.var-graph .node:hover rect,.var-graph .node:focus-visible rect{stroke:var(--c);stroke-width:2px}.var-graph svg.focus .node,.var-graph svg.focus .edge{opacity:.18}.var-graph svg.focus .node.on,.var-graph svg.focus .edge.on{opacity:1}.var-graph .edge.on{stroke:var(--accent);stroke-width:2px}.var-graph .node.on rect{stroke:var(--c);stroke-width:1.8px}.var-graph .node.current rect{fill:color-mix(in srgb, var(--c) 14%, var(--panel));stroke-width:2.5px}.swipe-hint{font-size:var(--fs-xs);margin:0;display:none}@media (width<=760px){.swipe-hint{display:block}}.var-graph-note{font-size:var(--fs-sm);max-width:75ch;min-height:2.8em;margin:0}.var-docs{gap:12px;display:grid}.var-doc{border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:var(--radius);background:var(--panel);min-width:0;padding:12px 14px}.var-doc h3{margin:0 0 6px;font-size:1rem}@media (prefers-reduced-motion:reduce){.var-flash,tr.var-flash td{animation:none}}.formula-page{max-width:76rem;margin-inline:auto}.formula-entry .formula-doc,.formula-entry .var-graph-note{max-width:none}.formula-layout{grid-template-columns:15rem minmax(0,1fr);align-items:start;gap:24px;display:grid}.formula-toc{font-size:var(--fs-sm);gap:2px;max-height:calc(100vh - 32px);display:grid;position:sticky;top:16px;overflow-y:auto}.formula-toc a{color:var(--text);border-radius:6px;padding:5px 8px}.formula-toc a:hover{background:var(--sunken);text-decoration:none}.formula-list{gap:14px;min-width:0;display:grid}.formula-entry{background:var(--panel);border:1px solid var(--line);border-radius:calc(var(--radius) + 2px);min-width:0;padding:4px 20px 16px;scroll-margin-top:12px}.formula-entry.focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.formula-entry h2{margin:14px 0 6px}@media (width<=899px){.formula-layout{grid-template-columns:minmax(0,1fr)}.formula-toc{flex-wrap:wrap;gap:4px 6px;max-height:none;display:flex;position:static}.formula-toc a{border:1px solid var(--line);background:var(--panel);border-radius:999px;padding:3px 10px}.formula-entry{padding:4px 14px 14px;scroll-margin-top:60px}}.unit-doc .unit-line{color:var(--muted);display:block}.unit-list{font-size:var(--fs-sm);max-width:75ch;padding-left:1.25rem;line-height:1.65}.unit-list li{margin:8px 0}.stack{gap:16px;min-width:0;display:grid}td.actions{text-align:right}.home .page-head{margin:0}@media (width<=600px){.side nav .nav-link:first-child{display:none}.side{flex-wrap:wrap;row-gap:4px}.side .brand{margin-right:auto}.side .brand span:last-child{display:inline}.side nav{flex-basis:100%;order:3}}table.nowrap th,table.nowrap td{white-space:nowrap}.small{font-size:var(--fs-xs)}a.button{border-radius:var(--radius);border:1px solid var(--line-strong);background:var(--panel);color:var(--text);white-space:nowrap;padding:7px 14px;display:inline-block}a.button:hover{background:var(--sunken);text-decoration:none}.docs-table td{vertical-align:top}.doc-link{margin-left:6px;display:inline-block}.company-refs code{font-family:var(--mono);font-size:var(--fs-sm);background:var(--panel);border:1px solid var(--line);overflow-wrap:anywhere;border-radius:4px;padding:0 5px}.company-refs .doc-link{margin-left:0}.doc-body{overflow-wrap:anywhere;max-width:100ch;line-height:1.7;display:block}.doc-body>:first-child{margin-top:0}.doc-body h1,.doc-body h2,.doc-body h3{margin:1.4em 0 .5em}.doc-body table{width:auto;max-width:100%;margin:8px 0;display:block;overflow-x:auto}.doc-body th,.doc-body td{border:1px solid var(--line);padding:4px 8px}.doc-body pre,.doc-body code{font-family:var(--mono);font-size:var(--fs-sm);background:var(--sunken);border-radius:4px}.doc-body pre{white-space:pre-wrap;padding:10px 12px;overflow-x:auto}.doc-body blockquote{border-left:3px solid var(--line-strong);color:var(--muted);margin:8px 0;padding-left:12px}.company-refs .unit-line{color:var(--muted);display:block}@media (width<=600px){.docs-table th:nth-child(3),.docs-table td:nth-child(3){display:none}.docs-table td.actions button{margin-left:auto;display:block}}.formula-doc .adopted{flex-wrap:wrap;align-items:baseline;gap:4px 8px;display:flex}.formula-doc .adopted .muted{flex-basis:100%}.ty-layer{pointer-events:none}.ty-hit{pointer-events:auto;cursor:default}.ty-storm{fill:#ff7a5929;stroke:#ff7a59;stroke-width:1.2px;stroke-dasharray:3 3}.ty-past{fill:none;stroke:#fff;stroke-width:1.4px;stroke-linecap:round;stroke-dasharray:.1 4;opacity:.9}.ty-dot{fill:#fff;opacity:.9}.ty-ahead{fill:none;stroke:#ff7a59;stroke-width:1.6px;stroke-linecap:round;stroke-dasharray:5 4}.ty-ahead-end{fill:none;stroke:#ff7a59;stroke-width:1.4px}.ty-core{fill:#fff;opacity:.92}.ty-band{fill:none;stroke:#fff;stroke-width:4.5px;stroke-linecap:round;opacity:.85}.ty-band-outer{fill:none;stroke:#fff;stroke-width:2.4px;stroke-linecap:round;opacity:.6}.ty-band-inner{fill:none;stroke:#d6ecfb;stroke-width:1.4px;stroke-linecap:round}.ty-eye{fill:#8fd0f5;stroke:#fff;stroke-width:1px}.ty-face{fill:#2b2a33}.ty-mouth{fill:none;stroke:#2b2a33;stroke-width:.7px;stroke-linecap:round}
