@keyframes astroFadeInOut{0%{opacity:1}to{opacity:0}}@keyframes astroFadeIn{0%{opacity:0;mix-blend-mode:plus-lighter}to{opacity:1;mix-blend-mode:plus-lighter}}@keyframes astroFadeOut{0%{opacity:1;mix-blend-mode:plus-lighter}to{opacity:0;mix-blend-mode:plus-lighter}}@keyframes astroSlideFromRight{0%{transform:translate(100%)}}@keyframes astroSlideFromLeft{0%{transform:translate(-100%)}}@keyframes astroSlideToRight{to{transform:translate(100%)}}@keyframes astroSlideToLeft{to{transform:translate(-100%)}}@media (prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*),[data-astro-transition-scope]{animation:none!important}}.astro-route-announcer{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;top:0;left:0;overflow:hidden}:root{--bg:#f7f8fa;--grid:#e6eaf1;--hdr:#f7f8faeb;--line:#d5dae2;--line2:#eceff4;--card:#fff;--ink:#1b2330;--ink2:#2d3748;--ink3:#4a5568;--mut:#8b94a3;--mut2:#5a6474;--faint:#c3cad5;--acc:#2456c8;--accbg:#e8eefb;--hovbg:#f0f4fc;--accsub:#a9c0f2;--accshadow:#2456c81f;--warn:#c2410c;--warnbg:#fde8dd;--okbg:#e2f5e9;--ok:#15803d;--scrim:#131a2873;--shadow-modal:0 24px 64px #0a142859;--surface:var(--card);--surface-2:var(--bg);--surface-solid:var(--card);--border:var(--line);--border-strong:#b8c1cf;--text:var(--ink);--muted:var(--mut2);--accent:var(--acc);--accent-bright:#3b6fd6;--accent-dim:#2456c847;--accent-ink:#fff;--glow:var(--accshadow);--danger:#c2410c;--blur:none;--radius:8px;--mono:"JetBrains Mono", ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace;--sans:"Space Grotesk", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-spring:cubic-bezier(.34, 1.56, .64, 1);--dur-fast:.15s;--dur-med:.28s;--dur-slow:.48s}:root[data-dark]{--bg:#14171b;--grid:#1e232b;--hdr:#14171beb;--line:#2a303a;--line2:#232830;--card:#1a1e25;--ink:#e7eaf0;--ink2:#c6ccd6;--ink3:#a3abb8;--mut:#77808e;--mut2:#98a1af;--faint:#4a5361;--acc:#5b8bf0;--accbg:#1d2a45;--hovbg:#1e2634;--accsub:#bcd0f7;--accshadow:#00000059;--warn:#f08a4b;--warnbg:#3a2417;--okbg:#16331f;--ok:#4cc584;--scrim:#05080e99;--shadow-modal:0 24px 64px #0009;--surface:var(--card);--surface-2:#20252e;--surface-solid:var(--card);--border:var(--line);--border-strong:#3a4250;--text:var(--ink);--muted:var(--mut2);--accent:var(--acc);--accent-bright:#8db1f5;--accent-dim:#5b8bf059;--accent-ink:#0d1526;--glow:#5b8bf029;--danger:#e05560}*,:before,:after{box-sizing:border-box}html{color-scheme:light}html[data-dark]{color-scheme:dark}body{color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;background-color:var(--bg);background-image:linear-gradient(var(--grid) 1px, transparent 1px), linear-gradient(90deg, var(--grid) 1px, transparent 1px);background-size:28px 28px;margin:0;font-size:.9375rem;line-height:1.5}a{color:var(--acc);text-decoration:none}a:hover{text-underline-offset:3px;text-decoration:underline}h1{letter-spacing:-.01em;margin:.25rem 0 .6rem;font-size:1.75rem;font-weight:700;line-height:1.2}h2{letter-spacing:-.01em;margin:1.5rem 0 .5rem;font-size:1.15rem;font-weight:700}h3{margin:1.25rem 0 .4rem;font-size:1rem;font-weight:600}p{margin:.5rem 0 1rem}.muted{color:var(--mut2)}.num,input[type=number],table td.num,table th.num{font-family:var(--mono);font-variant-numeric:tabular-nums}code{font-family:var(--mono);background:var(--surface-2);border:1px solid var(--line);overflow-wrap:anywhere;border-radius:5px;padding:.05em .3em;font-size:.85em}img,svg,video{max-width:100%;height:auto}::selection{background:var(--accbg);color:var(--acc)}::placeholder{color:var(--mut);opacity:1}.microlabel{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--mut);font-size:.6875rem;font-weight:500}.shell{flex-direction:column;min-height:100vh;display:flex}.hdr{z-index:100;background:var(--hdr);border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(8px);position:sticky;top:0}.hdr-inner{align-items:center;gap:20px;max-width:1180px;height:58px;margin:0 auto;padding:0 28px;display:flex}.wordmark{letter-spacing:.02em;color:var(--ink);white-space:nowrap;font-size:17px;font-weight:700}.wordmark span{color:var(--acc)}.wordmark:hover{text-decoration:none}.search-stub{width:280px;color:var(--mut);background:var(--card);border:1px solid var(--line);cursor:pointer;transition:border-color var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out);border-radius:8px;align-items:center;gap:10px;padding:6px 14px;font-size:13px;display:flex}.search-stub:hover{border-color:var(--acc)}.search-stub .kbd{margin-left:auto}.kbd{font-family:var(--mono);color:var(--mut);background:var(--bg);border:1px solid var(--line);border-radius:4px;padding:1px 6px;font-size:11px;font-weight:500}.hdr-nav{gap:22px;margin-left:auto;font-size:13.5px;font-weight:500;display:flex}.hdr-nav .nav-link{color:var(--ink3);padding:2px 0}.hdr-nav .nav-link:hover{color:var(--acc);text-decoration:none}.hdr-nav .nav-link[aria-current=page]{color:var(--acc)}.theme-pill{border:1px solid var(--line);background:var(--card);font-family:var(--sans);color:var(--ink3);cursor:pointer;white-space:nowrap;transition:border-color var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out);border-radius:999px;align-items:center;gap:6px;padding:4px 11px;font-size:12px;font-weight:500;display:flex}.theme-pill:hover,.theme-icon:hover{border-color:var(--acc);color:var(--acc)}.theme-icon{border:1px solid var(--line);background:var(--card);width:30px;height:30px;color:var(--ink3);cursor:pointer;border-radius:999px;justify-content:center;align-items:center;font-size:13px;display:none}.menu-toggle{width:30px;height:30px;color:var(--ink3);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;font-size:18px;display:none}.mob-panel{border-top:1px solid var(--line);background:var(--hdr);padding:8px 18px 14px;display:none}.hdr.mob-open .mob-panel{display:block}.mob-panel .nav-link{min-height:44px;color:var(--ink2);border-bottom:1px solid var(--line2);align-items:center;font-size:14.5px;font-weight:500;display:flex}.mob-panel .nav-link:last-of-type{border-bottom:none}.mob-panel .nav-link[aria-current=page]{color:var(--acc)}.mob-panel-foot{color:var(--mut);padding-top:8px;font-size:12px}.mob-panel-foot a{color:var(--mut2)}@media (width<=900px){.hdr-inner{gap:12px;height:54px;padding:0 18px}.wordmark{font-size:16px}.search-stub,.hdr-nav,.theme-pill{display:none}.theme-icon{margin-left:auto;display:flex}.menu-toggle{display:flex}}.content{flex-direction:column;flex:auto;min-width:0;display:flex}.content main{flex:1 0 auto;width:100%;max-width:1180px;margin:0 auto;padding:26px 32px 56px}.site-footer{border-top:1px solid var(--line);width:100%;max-width:1180px;font-family:var(--mono);letter-spacing:.04em;color:var(--mut);margin:0 auto;padding:14px 32px 28px;font-size:.72rem}.site-footer a{color:var(--mut2)}.site-footer a:hover{color:var(--acc)}@media (width<=900px){.content main{padding:16px 18px 40px}.site-footer{padding:12px 18px 24px}}.panel,.card{background:var(--card);border:1px solid var(--line);border-radius:12px}.panel{padding:16px 18px}.panel-title{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--mut);margin:0 0 .75rem;font-size:.6875rem;font-weight:500}.info-strip{background:var(--card);border:1px dashed var(--line);color:var(--mut2);border-radius:10px;align-items:center;gap:10px;padding:11px 16px;font-size:12.5px;display:flex}.info-strip .i{color:var(--acc)}.callout{background:var(--accbg);border:1px solid var(--acc);color:var(--ink2);border-radius:10px;align-items:center;gap:14px;margin:1.25rem 0;padding:14px 18px;font-size:13px;line-height:1.5;display:flex}.callout .i{color:var(--acc);font-size:16px}.callout .btn{flex-shrink:0}.calc-form{gap:16px;margin:1rem 0;display:grid}.field{align-content:start;gap:6px;display:grid}.field label{color:var(--ink2);letter-spacing:0;text-transform:none;font-size:13px;font-weight:600;font-family:var(--sans)}.field input,.field select{width:100%;min-height:42px;font-size:15px;font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--ink);background:var(--card);border:1.5px solid var(--line);transition:border-color var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out);border-radius:8px;padding:9px 14px}.field select{appearance:none;cursor:pointer;font-family:var(--sans);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='9' height='6' viewBox='0 0 9 6'%3E%3Cpath d='M1 1l3.5 3.5L8 1' fill='none' stroke='%238b94a3' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E");background-position:right .7rem center;background-repeat:no-repeat;padding-right:2rem;font-size:14px}.field input:hover,.field select:hover{border-color:var(--acc)}.field input:focus,.field select:focus{border-color:var(--acc);box-shadow:0 0 0 3px var(--accbg);outline:none}.field input:disabled{color:var(--mut);background:var(--bg)}.unit-field{border:1.5px solid var(--line);background:var(--card);transition:border-color var(--dur-fast) var(--ease-out);border-radius:8px;align-items:stretch;display:flex;overflow:hidden}.unit-field:hover,.unit-field:focus-within{border-color:var(--acc)}.unit-field input{background:0 0;border-radius:0;flex:1;min-width:0;min-height:42px;box-shadow:none!important;border:none!important}.unit-field .unit{background:var(--bg);border-left:1px solid var(--line2);font-family:var(--mono);color:var(--mut);white-space:nowrap;align-items:center;padding:0 14px;font-size:12px;font-weight:500;display:flex}input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{appearance:textfield}.field input[type=range]{appearance:none;cursor:pointer;background:0 0;border:none;height:22px;padding:0}.field input[type=range]::-webkit-slider-runnable-track{background:var(--line);border-radius:2px;height:4px}.field input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;background:var(--acc);border:2px solid var(--card);width:16px;height:16px;box-shadow:0 1px 6px var(--accshadow);border-radius:999px;margin-top:-6px}.field input[type=range]::-moz-range-track{background:var(--line);border-radius:2px;height:4px}.field input[type=range]::-moz-range-thumb{background:var(--acc);border:2px solid var(--card);border-radius:999px;width:14px;height:14px}.field input[type=range]:focus{box-shadow:none}.field input[type=range]:focus-visible::-webkit-slider-thumb{outline:2px solid var(--acc);outline-offset:2px}label.check{cursor:pointer;min-height:30px;color:var(--ink2);flex-direction:row;align-items:center;gap:.55rem;font-size:13.5px;display:flex}label.check input[type=checkbox]{appearance:none;background:var(--card);border:1.5px solid var(--line);cursor:pointer;width:16px;height:16px;min-height:0;transition:background-color var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out);border-radius:4px;flex:none;margin:0;padding:0}label.check input[type=checkbox]:hover{border-color:var(--acc)}label.check input[type=checkbox]:checked{background-color:var(--acc);border-color:var(--acc);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='8' viewBox='0 0 10 8'%3E%3Cpath d='M1 4l2.5 2.5L9 1' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat}label.check input[type=checkbox]:focus-visible{outline:2px solid var(--acc);outline-offset:2px}.field-row{grid-template-columns:1fr 1fr;gap:13px;display:grid}.field-row-3{grid-template-columns:1fr 1fr 1fr;gap:13px;display:grid}@media (width<=560px){.field-row,.field-row-3{grid-template-columns:1fr}.field input,.field select{min-height:44px;font-size:1rem}}@media screen and (width<=700px){table.crud,table.grid-edit,.content main table:not([class]){display:block;overflow-x:auto}.ws-toolbar .grow{flex:100%}.ws-toolbar .btn{flex:auto;justify-content:center}}.btn{min-height:38px;font-size:13px;font-weight:600;font-family:var(--sans);letter-spacing:0;color:var(--ink2);background:var(--card);border:1px solid var(--line);cursor:pointer;transition:border-color var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out);border-radius:8px;align-items:center;gap:.4rem;padding:8px 16px;display:inline-flex}.btn:hover{border-color:var(--acc);color:var(--acc);transform:translateY(-1px)}.btn:active{transition-duration:60ms;transform:translateY(0)}.btn-primary{background:var(--acc);border-color:var(--acc);color:#fff;box-shadow:0 4px 14px var(--accshadow)}.btn-primary:hover{color:#fff;filter:brightness(1.08)}.btn-danger:hover{border-color:var(--danger);color:var(--danger);box-shadow:none}.btn-sm{min-height:30px;padding:3px 10px;font-size:12px}.result-card{background:var(--acc);color:#fff;box-shadow:0 10px 28px var(--accshadow);border:none;border-radius:12px;margin:1rem 0;padding:22px 26px}.result-main{font-family:var(--mono);font-variant-numeric:tabular-nums;letter-spacing:-.02em;color:#fff;margin:0;font-size:2.15rem;font-weight:500;line-height:1.1}.result-sub{color:var(--accsub);margin:.35rem 0 0;font-size:.85rem}@media (width<=700px){.result-card{z-index:60;position:sticky;bottom:10px;box-shadow:0 12px 32px #0a14284d}}table.breakdown{border-collapse:collapse;width:100%;margin:.75rem 0;font-size:13px}table.breakdown th,table.breakdown td{text-align:left;border-bottom:1px solid var(--line2);padding:.45rem .5rem}table.breakdown th{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--mut);font-size:.625rem;font-weight:500}table.breakdown td:last-child,table.breakdown th:last-child{text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums}table.breakdown tr.total td{color:var(--acc);border-bottom:none;font-weight:700}.ws-toolbar{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:18px;padding:0 0 16px;display:flex}.ws-toolbar input{min-height:38px;font-size:14px;font-family:var(--sans);color:var(--ink);background:var(--card);border:1.5px solid var(--line);transition:border-color var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out);border-radius:8px;padding:6px 12px}.ws-toolbar input:focus{border-color:var(--acc);box-shadow:0 0 0 3px var(--accbg);outline:none}.ws-toolbar .grow{flex:140px}.ws-status{font-family:var(--mono);letter-spacing:.06em;color:var(--ok);min-width:8ch;font-size:.72rem}.ws-grid{grid-template-columns:minmax(0,1fr) 340px;align-items:start;gap:18px;display:grid}@media (width<=1100px){.ws-grid{grid-template-columns:1fr}}.ws-forms{gap:14px;min-width:0;display:grid}.ws-pair{grid-template-columns:1fr 1fr;gap:14px;display:grid}@media (width<=700px){.ws-pair{grid-template-columns:1fr}}.ws-output{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:20px 22px;position:sticky;top:76px}@media (width<=1100px){.ws-output{position:static}}.price-hero{background:var(--line2);border:1px solid var(--line);border-radius:10px;grid-template-columns:1fr 1fr;gap:1px;margin:.5rem 0 .75rem;display:grid;overflow:hidden}.price-hero>div{background:var(--card);padding:13px}.price-hero .label{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--mut);font-size:.625rem;font-weight:500}.price-hero .value{font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--acc);font-size:1.35rem;font-weight:500}.table-scroll{overflow-x:auto}table.grid-edit{border-collapse:collapse;width:100%;font-size:13px}table.grid-edit th{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--mut);text-align:left;border-bottom:1px solid var(--line2);white-space:nowrap;padding:.4rem .35rem;font-size:.625rem;font-weight:500}table.grid-edit td{border-bottom:1px solid var(--line2);vertical-align:middle;padding:.3rem .35rem}table.grid-edit input,table.grid-edit select{width:100%;min-height:32px;font-size:12.5px;font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--ink);background:var(--card);border:1px solid var(--line);transition:border-color var(--dur-fast) var(--ease-out);border-radius:6px;padding:3px 8px}table.grid-edit select{appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='9' height='6' viewBox='0 0 9 6'%3E%3Cpath d='M1 1l3.5 3.5L8 1' fill='none' stroke='%238b94a3' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E");background-position:right .45rem center;background-repeat:no-repeat;padding-right:1.5rem}table.grid-edit input:focus,table.grid-edit select:focus{border-color:var(--acc);box-shadow:0 0 0 2px var(--accbg);outline:none}.threemf-controls select,table.crud select{min-height:32px;font-size:12.5px;font-family:var(--mono);color:var(--ink);background-color:var(--card);border:1px solid var(--line);appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='9' height='6' viewBox='0 0 9 6'%3E%3Cpath d='M1 1l3.5 3.5L8 1' fill='none' stroke='%238b94a3' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E");background-position:right .45rem center;background-repeat:no-repeat;border-radius:6px;padding:3px 1.5rem 3px 8px}.threemf-controls select:focus,table.crud select:focus{border-color:var(--acc);outline:none}table.grid-edit td.cost{font-family:var(--mono);font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap;color:var(--acc)}.col-name{min-width:9rem}.col-filament{min-width:11rem}.col-xs{width:4.2rem}.col-sm{width:5.2rem}.col-cost{width:6.5rem}.col-act{width:2.2rem}.crud-grid{grid-template-columns:minmax(0,1fr) 340px;align-items:start;gap:16px;display:grid}.ws-grid>*,.ws-forms>*,.ws-pair>*,.crud-grid>*{min-width:0}@media (width<=900px){.crud-grid{grid-template-columns:1fr}}table.crud{border-collapse:collapse;width:100%;font-size:13px}table.crud th,table.crud td{text-align:left;border-bottom:1px solid var(--line2);padding:.5rem .55rem}table.crud th{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--mut);white-space:nowrap;font-size:.625rem;font-weight:500}table.crud td.num,table.crud th.num{font-family:var(--mono);font-variant-numeric:tabular-nums;text-align:right}table.crud .row-actions{white-space:nowrap;text-align:right}.status-badge{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;border:1px solid var(--line);color:var(--mut2);background:var(--card);border-radius:5px;padding:2px 9px;font-size:.625rem;font-weight:500;display:inline-block}.status-badge.accepted{color:var(--ok);border-color:var(--ok);background:var(--okbg)}.status-badge.rejected{color:var(--danger);border-color:var(--danger)}.status-badge.pending{color:var(--acc);border-color:var(--acc);background:var(--accbg)}.empty-note{border:1px dashed var(--line);color:var(--mut2);border-radius:10px;padding:1rem;font-size:.88rem}.tools-grid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px;margin:.75rem 0 1.5rem;display:grid}.tool-card{background:var(--card);border:1px solid var(--line);color:var(--ink);transition:border-color var(--dur-med) var(--ease-out), box-shadow var(--dur-med) var(--ease-out), transform var(--dur-med) var(--ease-out);border-radius:12px;align-content:start;gap:.3rem;padding:16px 18px;display:grid}.tool-card:hover{border-color:var(--acc);box-shadow:0 8px 22px var(--accshadow);text-decoration:none;transform:translateY(-2px)}.tool-card .tool-name{letter-spacing:-.01em;color:var(--ink);text-transform:none;font-size:14px;font-weight:700;font-family:var(--sans)}.tool-card:hover .tool-name{color:var(--acc)}.tool-card .tool-blurb{color:var(--mut2);font-size:12.5px;line-height:1.45}.seo-copy{border-top:1px solid var(--line);max-width:60rem;color:var(--mut2);margin-top:2rem;padding-top:1.25rem;font-size:14px;line-height:1.65}.seo-copy h2{color:var(--ink)}.seo-copy ul{margin:.5rem 0 1rem;padding-left:1.2rem}.seo-copy li{margin:.2rem 0}.bp-hero{text-align:center;padding:46px 0 30px}.bp-kicker{font-family:var(--mono);letter-spacing:.14em;color:var(--acc);margin-bottom:14px;font-size:12px;font-weight:500}.bp-hero h1{letter-spacing:-.02em;margin:0 0 24px;font-size:38px;font-weight:700;line-height:1.15}.bp-search{text-align:left;width:min(620px,100%);color:var(--mut);background:var(--card);border:2px solid var(--acc);box-shadow:0 8px 24px var(--accshadow);cursor:pointer;transition:box-shadow var(--dur-med) var(--ease-out);border-radius:12px;align-items:center;gap:12px;margin:0 auto;padding:15px 18px;font-size:15px;display:flex}.bp-search:hover{box-shadow:0 12px 32px var(--accshadow)}.bp-search .mag{color:var(--acc);font-size:17px}.bp-search .hint{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.bp-chips{flex-wrap:wrap;justify-content:center;gap:8px;margin-top:16px;display:flex}.chip{background:var(--card);border:1px solid var(--line);color:var(--ink3);cursor:pointer;transition:border-color var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out);border-radius:999px;padding:5px 13px;font-size:12.5px;font-weight:500}.chip:hover{border-color:var(--acc);color:var(--acc)}.bp-panel{background:var(--card);border:1px solid var(--line);border-bottom:none;border-radius:12px 12px 0 0;grid-template-columns:repeat(3,1fr);gap:0;display:grid;overflow:hidden}.bp-col{border-right:1px solid var(--line2);padding:22px 24px}.bp-col:last-child{border-right:none}.bp-col-head{align-items:baseline;gap:8px;margin-bottom:14px;display:flex}.bp-col-head .idx{font-family:var(--mono);color:var(--acc);font-size:11px;font-weight:500}.bp-col-head .lbl{letter-spacing:.02em;font-size:14px;font-weight:700}.bp-col-head .cnt{font-family:var(--mono);color:var(--mut);margin-left:auto;font-size:11px}.link-rows{flex-direction:column;gap:1px;display:flex}.link-rows a{color:var(--ink2);transition:background var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out);border-radius:6px;justify-content:space-between;align-items:center;padding:7px 8px;font-size:13px;display:flex}.link-rows a:hover{background:var(--hovbg);color:var(--acc);text-decoration:none}.link-rows a .arrow{color:var(--faint)}.mob-accordion{display:none}@media (width<=900px){.bp-hero{text-align:left;padding:22px 0 18px}.bp-hero h1{margin-bottom:16px;font-size:23px}.bp-kicker{margin-bottom:8px;font-size:10px}.bp-search{border-radius:11px;padding:13px 14px;font-size:14px}.bp-chips{justify-content:flex-start}.bp-panel{display:none}.mob-accordion{background:var(--card);border:1px solid var(--line);border-bottom:none;border-radius:12px 12px 0 0;display:block;overflow:hidden}.mob-group{border-bottom:1px solid var(--line2)}.mob-group summary{letter-spacing:.02em;cursor:pointer;align-items:center;gap:10px;min-height:44px;padding:15px 18px;font-size:14px;font-weight:700;list-style:none;display:flex}.mob-group summary::-webkit-details-marker{display:none}.mob-group summary .cnt{font-family:var(--mono);color:var(--mut);font-size:11px;font-weight:400}.mob-group summary:after{content:"▸";color:var(--faint);margin-left:auto;font-size:12px}.mob-group[open] summary:after{content:"▾";color:var(--acc)}.mob-group .link-rows{padding:0 8px 10px}.mob-group .link-rows a{border-radius:8px;min-height:44px;padding:11px 10px;font-size:14px}}.hub-sub{color:var(--mut2);margin:-.25rem 0 1.25rem;font-size:14px}.cat-grid{grid-template-columns:repeat(3,1fr);gap:14px;display:grid}@media (width<=1000px){.cat-grid{grid-template-columns:repeat(2,1fr)}}@media (width<=640px){.cat-grid{grid-template-columns:1fr}}.cat-card{background:var(--card);border:1px solid var(--line);transition:border-color var(--dur-med) var(--ease-out);border-radius:12px;flex-direction:column;padding:16px 18px;display:flex}.cat-card:hover{border-color:var(--acc)}.cat-card-head{align-items:baseline;gap:8px;margin-bottom:10px;display:flex}.cat-card-head .lbl{font-size:15px;font-weight:700}.cat-card-head .cnt{font-family:var(--mono);color:var(--mut);margin-left:auto;font-size:11px}.guide-grid{grid-template-columns:1fr 1fr;gap:14px;margin:.75rem 0 1.5rem;display:grid}@media (width<=760px){.guide-grid{grid-template-columns:1fr}}.guide-card{background:var(--card);border:1px solid var(--line);color:var(--ink);transition:border-color var(--dur-med) var(--ease-out);border-radius:12px;flex-direction:column;padding:18px 22px;display:flex}.guide-card:hover{border-color:var(--acc);text-decoration:none}.guide-card .gc-top{align-items:center;margin-bottom:8px;display:flex}.tag-chip{font-family:var(--mono);letter-spacing:.08em;color:var(--acc);background:var(--accbg);border-radius:5px;padding:3px 8px;font-size:10px;font-weight:500}.guide-card .gc-time{font-family:var(--mono);color:var(--mut);margin-left:auto;font-size:11px}.guide-card .gc-title{letter-spacing:-.01em;margin-bottom:6px;font-size:17px;font-weight:700}.guide-card .gc-desc{color:var(--mut2);margin-bottom:12px;font-size:13px;line-height:1.5}.guide-card .gc-more{color:var(--acc);margin-top:auto;font-size:13px;font-weight:600}.article-grid{grid-template-columns:230px minmax(0,1fr);align-items:start;gap:40px;display:grid}@media (width<=900px){.article-grid{grid-template-columns:1fr}.toc-col{display:none}}.toc-col{padding:6px 0;position:sticky;top:76px}.toc-col .microlabel{margin-bottom:12px;display:block}.toc-nav{flex-direction:column;gap:2px;display:flex}.toc-nav a{color:var(--ink3);transition:background var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out);border-radius:6px;padding:6px 10px;font-size:12.5px}.toc-nav a:hover{background:var(--hovbg);color:var(--acc);text-decoration:none}.toc-nav a.active{background:var(--accbg);color:var(--acc)}.article-col{min-width:0;max-width:720px}.article-col>p:first-of-type{color:var(--mut2);font-size:15px;line-height:1.65}.article-col h2{scroll-margin-top:76px;font-size:18px}.article-col p,.article-col li{color:var(--ink2);font-size:14px;line-height:1.7}.article-col table{font-size:13px}.stat-cards{gap:14px;margin:1rem 0 1.25rem;display:flex}.stat-card{background:var(--card);border:1px solid var(--line);border-radius:10px;flex:1;padding:14px 18px}.stat-card .sc-label{font-family:var(--mono);letter-spacing:.1em;color:var(--mut);margin-bottom:6px;font-size:10px}.stat-card .sc-value{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:22px;font-weight:500}.stat-card .sc-value.warn{color:var(--warn)}.stat-card .sc-sub{color:var(--mut);font-size:12px}@media (width<=640px){.stat-cards{flex-direction:column}}.mat-chip{background:var(--accbg);color:var(--acc);font-family:var(--mono);border-radius:5px;padding:2px 8px;font-size:11px;font-weight:500;display:inline-block}.progress{background:var(--line2);border-radius:99px;flex:1;min-width:48px;height:6px;display:block;overflow:hidden}.progress>span{background:var(--acc);height:100%;transition:width var(--dur-med) var(--ease-out);border-radius:99px;display:block}.low-badge{background:var(--warnbg);color:var(--warn);font-family:var(--mono);border-radius:5px;padding:3px 8px;font-size:10px;font-weight:500}.palette-scrim{z-index:200;background:var(--scrim);-webkit-backdrop-filter:blur(3px);animation:mc-fade var(--dur-fast) var(--ease-out);justify-content:center;align-items:flex-start;padding:120px 18px 18px;display:flex;position:fixed;inset:0}.palette-scrim[hidden]{display:none}.palette{background:var(--card);width:640px;max-width:100%;max-height:min(560px,80vh);box-shadow:var(--shadow-modal);animation:pal-in var(--dur-fast) var(--ease-out);border-radius:14px;flex-direction:column;display:flex;overflow:hidden}@keyframes pal-in{0%{opacity:0;transform:translateY(-6px)scale(.985)}to{opacity:1;transform:none}}.pal-input-row{border-bottom:1px solid var(--line2);align-items:center;gap:12px;padding:16px 22px;display:flex}.pal-input-row .mag{color:var(--acc);font-size:17px}.pal-input{min-width:0;font-family:var(--mono);color:var(--ink);caret-color:var(--acc);background:0 0;border:none;flex:1;font-size:16px}.pal-input:focus{outline:none}.pal-cats{flex-wrap:wrap;gap:6px;padding:10px 22px 0;display:flex}.pal-cats .chip{font-family:var(--mono);letter-spacing:.06em;padding:3px 9px;font-size:10px}.pal-cats .chip.on{border-color:var(--acc);color:var(--acc);background:var(--accbg)}.pal-list{min-height:0;padding:10px;overflow-y:auto}.pal-item{cursor:pointer;border-radius:9px;align-items:center;gap:14px;padding:12px 14px;display:flex}.pal-item.sel{background:var(--hovbg)}.pal-item .tile{background:var(--accbg);width:34px;height:34px;color:var(--acc);font-size:15px;font-family:var(--mono);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.pal-item .nm{color:var(--ink);font-size:14.5px;font-weight:600}.pal-item .hint{font-family:var(--mono);color:var(--mut);margin-top:2px;font-size:11.5px}.pal-item .cat{font-family:var(--mono);color:var(--acc);background:var(--accbg);border-radius:4px;flex-shrink:0;margin-left:auto;padding:3px 7px;font-size:10px;font-weight:500}.pal-empty{text-align:center;color:var(--mut2);padding:22px;font-size:13px}.pal-foot{border-top:1px solid var(--line2);background:var(--bg);font-family:var(--mono);color:var(--mut);gap:18px;padding:12px 22px;font-size:11px;display:flex}@media (width<=700px){.palette-scrim{padding-top:8vh}}@keyframes mc-swap-in{0%{opacity:0;transform:translateY(14px)scale(.995)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes mc-swap-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-8px)}}::view-transition-old(root){animation:mc-swap-out var(--dur-med) var(--ease-out) both}::view-transition-new(root){animation:mc-swap-in var(--dur-slow) var(--ease-out) both}::view-transition-old(topbar),::view-transition-new(topbar){mix-blend-mode:normal;animation:none}@keyframes mc-rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes mc-fade{0%{opacity:0}to{opacity:1}}@keyframes mc-value-tick{0%{opacity:.35;transform:translateY(3px)}to{opacity:1;transform:translateY(0)}}.hdr{animation:mc-fade var(--dur-slow) var(--ease-out) both}.content main>*{animation:mc-rise var(--dur-slow) var(--ease-out) both}.content main>:nth-child(2){animation-delay:60ms}:focus-visible{outline:2px solid var(--acc);outline-offset:2px}.panel,.card,.cat-card,.guide-card,.stat-card{transition:border-color var(--dur-med) var(--ease-out), box-shadow var(--dur-med) var(--ease-out)}.value-tick{animation:mc-value-tick var(--dur-med) var(--ease-out)}.result-main,.price-hero .value{transition:color var(--dur-fast) var(--ease-out)}tbody tr{animation:mc-fade var(--dur-med) var(--ease-out)}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}#print-quote{display:none}@media print{body{color:#111;background:#fff;font-size:11pt}.no-print,.hdr,.site-footer,.toc-col{display:none!important}.shell,.content,.content main{max-width:none;min-height:0;padding:0;display:block}.article-grid{display:block}#print-quote{font-family:var(--sans);color:#111;display:block}#print-quote h1{margin:0 0 2pt;font-size:16pt}#print-quote .pq-meta{color:#444;margin-bottom:12pt;font-size:9pt}#print-quote table{border-collapse:collapse;width:100%;margin:8pt 0;font-size:10pt}#print-quote th,#print-quote td{text-align:left;border-bottom:1px solid #bbb;padding:3pt 6pt}#print-quote th{text-transform:uppercase;letter-spacing:.06em;color:#444;font-size:8pt}#print-quote td:last-child,#print-quote th:last-child{text-align:right;font-variant-numeric:tabular-nums}#print-quote .pq-total td{border-top:2px solid #111;border-bottom:none;font-weight:700}#print-quote .pq-price{margin-top:10pt;font-size:13pt;font-weight:700}#print-quote .pq-note{color:#555;margin-top:12pt;font-size:8.5pt}}.tool-layout{grid-template-columns:440px minmax(0,1fr);align-items:start;gap:20px;margin:1rem 0;display:grid}.tool-layout>*{min-width:0}@media (width<=1000px){.tool-layout{grid-template-columns:1fr}}.inputs-card{background:var(--card);border:1px solid var(--line);border-radius:12px;flex-direction:column;gap:16px;padding:24px;display:flex}.tool-side{flex-direction:column;gap:16px;display:flex}.result-panel{background:var(--acc);color:#fff;box-shadow:0 10px 28px var(--accshadow);border-radius:12px;flex-wrap:wrap;align-items:flex-end;gap:32px;padding:26px 28px;display:flex}.rp-hero .l{font-family:var(--mono);letter-spacing:.12em;color:var(--accsub);margin-bottom:8px;font-size:11px;font-weight:500}.rp-hero .v{font-family:var(--mono);font-variant-numeric:tabular-nums;letter-spacing:-.02em;font-size:46px;font-weight:500;line-height:1}.rp-stats{flex-wrap:wrap;gap:28px;padding-bottom:4px;display:flex}.rp-stat .l{font-family:var(--mono);letter-spacing:.08em;color:var(--accsub);margin-bottom:4px;font-size:10px;font-weight:500}.rp-stat .v{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:17px;font-weight:500}.rp-action{background:var(--card);color:var(--acc);cursor:pointer;white-space:nowrap;border:none;border-radius:8px;align-self:center;margin-left:auto;padding:9px 16px;font-size:13px;font-weight:600}@media (width<=700px){.rp-hero .v{font-size:34px}.result-panel{gap:18px;padding:18px}}.computed-card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:18px 24px}.computed-card .formula{font-family:var(--mono);color:var(--ink2);overflow-wrap:anywhere;font-size:14px;line-height:1.7}.computed-card .formula .sub{color:var(--mut)}.computed-card .formula .final{color:var(--acc);font-weight:500}.pill-links{flex-wrap:wrap;gap:10px;display:flex}.pill-link{border:1px solid var(--line);color:var(--ink2);transition:border-color var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out);border-radius:999px;padding:6px 14px;font-size:13px;font-weight:500;display:inline-block}.pill-link:hover{border-color:var(--acc);color:var(--acc);text-decoration:none}.batch-cells{gap:12px;display:flex}.batch-cell{border:1px solid var(--line2);border-radius:9px;flex:1;padding:12px 14px}.batch-cell .l{font-family:var(--mono);color:var(--mut);margin-bottom:4px;font-size:11px}.batch-cell .v{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:17px;font-weight:500}.batch-cell.on{border:1.5px solid var(--acc);background:var(--accbg)}.batch-cell.on .l,.batch-cell.on .v{color:var(--acc)}@media (width<=640px){.batch-cells{flex-direction:column}}.val-chip{background:var(--accbg);color:var(--acc);font-family:var(--mono);border-radius:6px;padding:3px 9px;font-size:12px;font-weight:500;display:inline-block}.total-panel{background:var(--acc);color:#fff;border-radius:10px;margin-top:auto;padding:16px 18px}.total-panel .l{font-family:var(--mono);letter-spacing:.12em;color:var(--accsub);margin-bottom:6px;font-size:10px;font-weight:500}.total-panel .v{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:32px;font-weight:500;line-height:1}.total-panel .s{color:var(--accsub);margin-top:8px;font-size:12px}.related-tools ul{padding-left:0;list-style:none}.related-tools li{margin:.35rem 0}.cat-card,.guide-card,.stat-card,.bp-col{transition:border-color var(--dur-med) var(--ease-out), box-shadow var(--dur-med) var(--ease-out), transform var(--dur-med) var(--ease-out)}.cat-card:hover,.guide-card:hover{box-shadow:0 10px 26px var(--accshadow);transform:translateY(-2px)}.link-rows a .arrow{transition:transform var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out);display:inline-block}.link-rows a:hover .arrow{color:var(--acc);transform:translate(2px)}.bp-search{transition:box-shadow var(--dur-med) var(--ease-out), transform var(--dur-med) var(--ease-out)}.bp-search:hover{box-shadow:0 14px 36px var(--accshadow);transform:translateY(-1px)}.chip:hover{background:var(--hovbg)}.result-card,.result-panel,.total-panel{box-shadow:inset 0 1px 0 #ffffff38, 0 10px 28px var(--accshadow);transition:box-shadow var(--dur-med) var(--ease-out)}.result-card:hover,.result-panel:hover{box-shadow:inset 0 1px 0 #ffffff40, 0 16px 38px var(--accshadow)}.btn:active{transform:translateY(0)scale(.98)}.btn-primary{transition:filter var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out)}.rp-action{transition:transform var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out)}.rp-action:hover{transform:translateY(-1px);box-shadow:0 4px 12px #0a14282e}body{transition:background-color var(--dur-med) var(--ease-out), color var(--dur-med) var(--ease-out)}.pal-item .tile{transition:transform var(--dur-fast) var(--ease-out)}.pal-item.sel .tile{transform:scale(1.06)}.theme-pill,.search-stub{transition:border-color var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out)}.theme-pill:hover,.search-stub:hover{transform:translateY(-1px)}
