:root{color-scheme:light;--ground: #ece9e2;--surface: #fbfaf7;--surface-sunken: #f3f1ea;--ink: #232019;--ink-soft: #6b6459;--ink-faint: #9a9282;--line: #ddd8cc;--line-strong: #cabfae;--accent: #1f5c63;--accent-deep: #164449;--accent-bright: #2a7982;--accent-wash: #e2edee;--accent-ink: #ffffff;--ok: #2e6b43;--ok-wash: #e7efe6;--warn: #a5620f;--warn-wash: #f6ecda;--error: #b23a2e;--error-wash: #f7e6e2;--shadow-sm: 0 1px 2px rgba(35, 32, 25, .06), 0 1px 3px rgba(35, 32, 25, .05);--shadow-md: 0 2px 4px rgba(35, 32, 25, .05), 0 8px 20px rgba(35, 32, 25, .08);--shadow-lg: 0 16px 44px rgba(35, 32, 25, .2);--r-sm: 7px;--r-md: 10px;--r-lg: 14px;--sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, system-ui, sans-serif;--mono: ui-monospace, "SF Mono", "Cascadia Code", "JetBrains Mono", Consolas, "Liberation Mono", Menlo, monospace;font-family:var(--sans)}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;color:var(--ink);background:var(--ground);font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}.shell{max-width:720px;margin:0 auto;padding:28px 18px calc(96px + env(safe-area-inset-bottom))}header.top{display:flex;align-items:flex-start;gap:14px;padding-bottom:18px;margin-bottom:22px;border-bottom:1px solid var(--line);position:relative}header.top:after{content:"";position:absolute;left:0;bottom:-1px;height:8px;width:min(180px,45%);background-image:repeating-linear-gradient(90deg,var(--accent) 0 1.5px,transparent 1.5px 11px);opacity:.5;-webkit-mask-image:linear-gradient(90deg,#000 60%,transparent);mask-image:linear-gradient(90deg,#000 60%,transparent)}.brand{display:flex;align-items:center;gap:12px;min-width:0}.brand-mark{width:38px;height:38px;flex:none;display:block}.brand-text{min-width:0}.brand-text h1{margin:0;font-size:23px;font-weight:750;letter-spacing:-.02em;line-height:1.1;color:var(--ink)}.brand-text h1 span{color:var(--accent)}.brand-text .tag{display:block;margin-top:3px;color:var(--ink-soft);font-size:13px;line-height:1.35}.linklike{margin-left:auto;flex:none;background:none;border:none;padding:4px 2px;color:var(--accent);font:inherit;font-size:13.5px;font-weight:550;cursor:pointer;white-space:nowrap;border-bottom:1px solid transparent}.linklike:hover{border-bottom-color:var(--accent)}.steps{display:flex;margin-bottom:26px}.step{flex:1;display:flex;flex-direction:column;align-items:center;gap:7px;position:relative;text-align:center}.step:not(:last-child):after{content:"";position:absolute;top:13px;left:50%;width:100%;height:2px;background:var(--line);z-index:0}.step.done:after{background:var(--accent)}.step-node{width:27px;height:27px;border-radius:50%;display:grid;place-items:center;position:relative;z-index:1;background:var(--surface);border:2px solid var(--line);font-size:12px;font-weight:650;color:var(--ink-faint);font-variant-numeric:tabular-nums}.step.active .step-node,.step.done .step-node{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);box-shadow:0 0 0 4px var(--accent-wash)}.step-label{font-size:12px;color:var(--ink-faint);line-height:1.2}.step.active .step-label{color:var(--ink);font-weight:600}.step.done .step-label{color:var(--ink-soft)}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);padding:22px 24px;margin-bottom:16px}.card h2{position:relative;margin:0 0 16px;padding-bottom:12px;font-size:19px;font-weight:700;letter-spacing:-.01em;color:var(--ink);border-bottom:1px solid var(--line);text-wrap:balance}.card h2:after{content:"";position:absolute;left:0;bottom:-1px;width:34px;height:2px;background:var(--accent)}.card p.hint{color:var(--ink-soft);font-size:14px;margin:4px 0 14px}button{font:inherit;font-weight:550;cursor:pointer;border-radius:var(--r-sm);border:1px solid var(--line);background:var(--surface);color:var(--ink);padding:10px 17px;min-height:42px;transition:background-color .15s,border-color .15s,color .15s,box-shadow .15s,transform .05s}button:hover:not(:disabled):not(.primary){border-color:var(--accent);color:var(--accent);background:var(--accent-wash)}button.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);box-shadow:var(--shadow-sm)}button.primary:hover:not(:disabled){background:var(--accent-deep);border-color:var(--accent-deep);box-shadow:var(--shadow-md)}button:active:not(:disabled){transform:translateY(1px)}button:disabled{opacity:.5;cursor:default}button:focus-visible,.linklike:focus-visible,.template:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px;align-items:center}.dropzone{border:1.5px dashed var(--line-strong);border-radius:var(--r-md);padding:30px 20px;text-align:center;color:var(--ink-soft);background:var(--surface-sunken);cursor:pointer;transition:border-color .15s,background-color .15s,color .15s}.dropzone:hover{border-color:var(--accent);color:var(--accent)}.dropzone.drag{border-color:var(--accent);color:var(--accent);background:var(--accent-wash)}.previews{display:flex;gap:10px;margin-top:14px;flex-wrap:wrap}.previews img{width:108px;height:108px;object-fit:cover;border-radius:var(--r-sm);border:1px solid var(--line);box-shadow:var(--shadow-sm)}.templates{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px}.template{border:1px solid var(--line);border-radius:var(--r-md);padding:16px;cursor:pointer;background:var(--surface);text-align:left;box-shadow:var(--shadow-sm);transition:border-color .15s,box-shadow .15s,transform .12s}.template:hover:not(.disabled){border-color:var(--accent);box-shadow:var(--shadow-md);transform:translateY(-2px)}.template.disabled{opacity:.55;cursor:default}.template h3{margin:0 0 6px;font-size:16px;font-weight:650}.template p{margin:0;font-size:13px;color:var(--ink-soft);line-height:1.4}.template .soon{display:inline-block;margin-top:8px;font-size:12px;color:var(--warn)}.observe{display:grid;grid-template-columns:max-content 1fr;gap:8px 20px;font-size:14px;margin:4px 0}.observe dt{color:var(--ink-soft)}.observe dd{margin:0;font-weight:600;font-family:var(--mono);font-variant-numeric:tabular-nums}.observe-row{display:contents}.observe dd{display:flex;align-items:baseline;gap:12px}.observe dd .reasked{text-decoration:line-through;color:var(--ink-soft);font-weight:500}ul.plain{padding-left:20px;margin:8px 0}ul.plain li{margin:5px 0;font-size:14px}.compare{display:flex;align-items:center;justify-content:center;gap:16px;flex-wrap:wrap;margin:14px 0 6px}.compare figure{margin:0;text-align:center}.compare img,.compare .sketch svg{max-height:340px;max-width:250px;border-radius:var(--r-sm)}.compare img{border:1px solid var(--line);object-fit:contain;background:#fff;box-shadow:var(--shadow-sm);padding:4px}.compare figcaption{font-size:11px;color:var(--ink-faint);margin-top:7px;text-transform:uppercase;letter-spacing:.06em;font-weight:600}.compare-arrow{font-size:22px;color:var(--accent)}.q-progress{height:5px;background:var(--surface-sunken);border-radius:3px;margin:2px 0 16px;overflow:hidden;box-shadow:inset 0 0 0 1px var(--line)}.q-progress-bar{height:100%;background:var(--accent);border-radius:3px;transition:width .3s ease}.q-text{font-size:18px;font-weight:600;margin:4px 0 8px;line-height:1.4;text-wrap:pretty}.q-error,.q-note{padding:11px 13px;border-radius:var(--r-sm);font-size:14px;margin-bottom:12px;border:1px solid}.q-error{background:var(--error-wash);border-color:#e6c3bc;color:var(--error)}.q-note{background:var(--warn-wash);border-color:#e8d3ab;color:var(--warn)}input.number,.fb-panel textarea,.fb-panel input{font:inherit;padding:11px 13px;width:min(200px,100%);border:1px solid var(--line-strong);border-radius:var(--r-sm);background:var(--surface);color:var(--ink);transition:border-color .15s,box-shadow .15s}input.number{font-family:var(--mono);font-variant-numeric:tabular-nums}input.number:focus,.fb-panel textarea:focus,.fb-panel input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-wash)}.health{padding-left:2px;margin:6px 0}.health li{list-style:none;margin:8px 0;font-size:14px;padding-left:26px;position:relative}.health li:before{position:absolute;left:0;top:-1px;width:18px;height:18px;border-radius:50%;display:grid;place-items:center;font-size:11px;font-weight:700;line-height:1}.health .ok:before{content:"✓";background:var(--ok-wash);color:var(--ok)}.health .warn:before{content:"!";background:var(--warn-wash);color:var(--warn)}.health .error:before{content:"✕";background:var(--error-wash);color:var(--error)}.assumed{background:var(--accent-wash);border:1px solid #cfe0e1;border-radius:var(--r-sm);padding:11px 14px;font-size:14px;margin-top:12px;color:var(--ink)}.material-note{background:var(--warn-wash);border:1px solid #e4c79a;border-left:3px solid var(--warn);border-radius:var(--r-sm);padding:11px 14px;font-size:14px;margin-top:14px;color:var(--ink)}.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--line);border-radius:var(--r-sm);margin-top:6px}table.parts{width:100%;min-width:340px;border-collapse:collapse;font-size:13px}table.parts th,table.parts td{border-bottom:1px solid var(--line);padding:8px 11px;text-align:left;white-space:nowrap}table.parts tr:last-child td{border-bottom:none}table.parts thead th{color:var(--ink-soft);font-weight:650;background:var(--surface-sunken);position:sticky;top:0;font-size:11px;text-transform:uppercase;letter-spacing:.04em}td.num,th.num{text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums}details{margin-top:10px}details summary{cursor:pointer;font-weight:600;margin:8px 0;color:var(--ink);list-style-position:inside}details summary:hover{color:var(--accent)}.cost-total{font-size:30px;font-weight:700;font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--ink);letter-spacing:-.01em}.cost-range{color:var(--ink-soft);font-size:13px;font-family:var(--mono);font-variant-numeric:tabular-nums;margin-top:4px}.disclaimer{color:var(--ink-faint);font-size:12px;margin-top:10px;line-height:1.45}.sketch svg{max-height:320px;max-width:100%;width:auto;display:block;margin:8px auto}.views{display:flex;gap:18px;align-items:flex-start;justify-content:center}.views figure{margin:0;flex:1 1 0;min-width:0;text-align:center}.views figcaption{font-size:13px;color:var(--ink-soft);margin-top:4px}@media (max-width: 560px){.views{flex-direction:column;align-items:stretch}}.paywall{margin-top:4px}.free-badge{display:inline-block;background:var(--ok-wash);color:var(--ok);border:1px solid #cfe0cd;border-radius:999px;padding:6px 14px;font-size:15px;font-weight:650;margin-bottom:4px}.paywall .price{font-size:34px;font-weight:700;font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--accent);letter-spacing:-.01em}.beta-free{background:var(--ok-wash);border:1px solid #cfe0cd;border-radius:var(--r-sm);padding:11px 14px;font-size:14px;margin:12px 0;color:var(--ink)}.spinner{color:var(--ink-soft);font-size:14px}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#1c191273;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:flex-start;justify-content:center;padding:24px 16px;overflow-y:auto;z-index:20}.about{max-width:640px;position:relative;box-shadow:var(--shadow-lg)}.about-steps{list-style:none;padding:0;margin:4px 0 8px}.about-steps li{display:grid;grid-template-columns:1fr auto;gap:14px;align-items:center;padding:14px 0;border-top:1px solid var(--line)}.about-steps li:first-child{border-top:none;padding-top:4px}.about-step-text{font-size:14.5px;line-height:1.5}.about-step-num{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--accent);color:var(--accent-ink);font-size:12px;font-weight:700;margin-right:8px;font-variant-numeric:tabular-nums;vertical-align:2px}.about-thumb{width:116px;height:90px;object-fit:contain;padding:6px;background:#fff;border:1px solid var(--line);border-radius:var(--r-sm);box-shadow:var(--shadow-sm);flex:none}.about-faq dd{margin-bottom:10px;font-size:15px}.about-faq dt{font-weight:650;margin-top:12px}.about-faq dd{margin-left:0;color:var(--ink-soft)}.close{position:absolute;top:12px;right:14px;background:none;border:none;font-size:24px;cursor:pointer;color:var(--ink-faint);line-height:1;min-height:auto;padding:0}.close:hover{color:var(--ink);background:none}.fab{position:fixed;right:18px;bottom:max(18px,env(safe-area-inset-bottom));z-index:15;background:var(--accent);color:var(--accent-ink);border:none;border-radius:999px;padding:12px 20px;font-size:14px;font-weight:600;cursor:pointer;box-shadow:var(--shadow-md)}.fab:hover{background:var(--accent-deep)}.fb-panel{position:fixed;right:18px;bottom:max(18px,env(safe-area-inset-bottom));z-index:15;width:340px;max-width:calc(100vw - 36px);background:var(--surface);border-radius:var(--r-md);border:1px solid var(--line);box-shadow:var(--shadow-lg);padding:18px}.fb-panel h3{margin:0 26px 12px 0;font-size:15px;font-weight:650}.fb-panel textarea,.fb-panel input{width:100%;margin-bottom:9px}.fb-thanks{margin:8px 22px 4px 0}@media (prefers-reduced-motion: reduce){*{transition:none!important}}@media (max-width: 600px){.shell{padding:18px 13px calc(100px + env(safe-area-inset-bottom))}.brand-mark{width:34px;height:34px}.brand-text h1{font-size:20px}header.top{flex-wrap:wrap}.linklike{margin-left:auto}.card{padding:18px 16px}.card h2{font-size:17px}.step-label{font-size:10.5px}.step-node{width:25px;height:25px}.cost-total{font-size:26px}.paywall .price{font-size:30px}}@media (max-width: 460px){.compare{flex-direction:column;gap:10px}.compare-arrow{transform:rotate(90deg)}.compare img,.compare .sketch svg{max-width:220px;max-height:260px}.observe{grid-template-columns:1fr;gap:4px 0}.observe dt{margin-top:6px}.fb-panel{right:14px;left:14px;width:auto}.about-steps li{grid-template-columns:1fr;gap:10px}.about-thumb{width:100%;height:120px;justify-self:start}}
