:root{--paper:#f4efe6;--paper-2:#ebe4d6;--card:#fffdf8;--ink:#1d2a22;--ink-2:#4c5a51;--ink-3:#8a938c;--line:#ddd4c3;--forest:#1f3b2d;--forest-2:#2f5a44;--amber:#ffb938;--danger:#b3261e;--radius:18px;--shadow:0 1px 2px #1d2a220f, 0 8px 30px #1d2a2214;--serif:"Fraunces", Georgia, serif;--sans:"Inter", system-ui, -apple-system, Segoe UI, sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--paper);color:var(--ink);font:15px/1.5 var(--sans);-webkit-font-smoothing:antialiased}button,input,textarea{font:inherit;color:inherit}h1,h2,h3{font-family:var(--serif);letter-spacing:-.01em;margin:0;font-weight:600}.app{flex-direction:column;min-height:100%;display:flex}.topbar{justify-content:space-between;align-items:center;gap:16px;padding:18px 28px;display:flex}.brand{font-family:var(--serif);color:var(--forest);cursor:pointer;background:0 0;border:0;align-items:center;gap:10px;padding:0;font-size:22px;font-weight:600;text-decoration:none;display:flex}.brand small{font-family:var(--sans);color:var(--ink-3);letter-spacing:.02em;font-size:12px;font-weight:500}.progress{align-items:center;gap:6px;display:flex}.progress button{background:var(--line);cursor:pointer;border:0;border-radius:3px;width:26px;height:6px;padding:0;transition:background .3s,width .3s}.progress button.done{background:var(--forest-2)}.progress button.current{background:var(--forest);width:42px}.progress button:disabled{cursor:default}.wizard{flex:1;grid-template-columns:minmax(0,560px) minmax(0,1fr);align-items:start;gap:28px;padding:8px 28px 28px;display:grid}@media (width<=960px){.wizard{grid-template-columns:1fr;padding:4px 16px 16px}.topbar{padding:14px 16px}.progress button{width:14px}.progress button.current{width:24px}}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:28px}@media (width<=600px){.card{padding:20px 16px}}.step-kicker{letter-spacing:.08em;text-transform:uppercase;color:var(--forest-2);margin-bottom:6px;font-size:12px;font-weight:600}.step-title{margin-bottom:8px;font-size:30px;line-height:1.15}.step-lede{color:var(--ink-2);margin:0 0 22px}.step-body{flex-direction:column;gap:16px;display:flex}.nav{justify-content:space-between;gap:12px;margin-top:26px;display:flex}.btn{border:1px solid var(--line);background:var(--card);cursor:pointer;border-radius:999px;padding:11px 20px;font-weight:600;transition:transform 80ms,background .2s,box-shadow .2s}.btn:hover:not(:disabled){background:var(--paper)}.btn:active:not(:disabled){transform:translateY(1px)}.btn.primary{background:var(--forest);border-color:var(--forest);color:#fff}.btn.primary:hover:not(:disabled){background:var(--forest-2)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.small{padding:6px 12px;font-size:13px}.btn.ghost{background:0 0;border-color:#0000}.input{border:1px solid var(--line);background:#fff;border-radius:12px;outline:none;width:100%;padding:12px 14px;transition:border-color .2s,box-shadow .2s}.input:focus{border-color:var(--forest-2);box-shadow:0 0 0 3px #2f5a4426}label.field{flex-direction:column;gap:6px;font-weight:500;display:flex}.hint{color:var(--ink-3);font-size:13px}.error{color:var(--danger);font-size:14px}.list{border:1px solid var(--line);border-radius:14px;flex-direction:column;max-height:340px;display:flex;overflow:hidden auto}.list button{text-align:left;border:0;border-bottom:1px solid var(--line);cursor:pointer;background:#fff;justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;display:flex}.list button:last-child{border-bottom:0}.list button:hover{background:var(--paper)}.list button.selected{background:#e8f0ea}.code{font-variant-numeric:tabular-nums;color:var(--ink-3);white-space:nowrap;font-size:12px}.chosen{background:#e8f0ea;border:1px solid #c9dccf;border-radius:14px;align-items:center;gap:14px;padding:14px 16px;display:flex}.chosen .pin{background:var(--forest);color:#fff;border-radius:50%;flex:none;place-items:center;width:34px;height:34px;font-weight:700;display:grid}.stepper{justify-content:center;align-items:center;gap:22px;padding:18px 0 6px;display:flex}.stepper button{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:50%;width:52px;height:52px;font-size:24px}.stepper .value{font-family:var(--serif);text-align:center;font-variant-numeric:tabular-nums;min-width:110px;font-size:64px;line-height:1}.stepper .unit{font-family:var(--sans);color:var(--ink-3);margin-top:6px;font-size:13px;display:block}input[type=range]{width:100%;accent-color:var(--forest)}.timeline{height:64px;margin-top:8px;position:relative}.timeline .bar{border-radius:5px;height:10px;position:absolute;top:26px}.timeline .tick{color:var(--ink-2);white-space:nowrap;font-size:12px;position:absolute;top:0;transform:translate(-50%)}.timeline .tick.below{top:42px}.route-row{border-bottom:1px solid var(--line);grid-template-columns:64px 1fr;align-items:start;gap:12px;padding:12px 0;display:grid}.route-row:last-child{border-bottom:0}.badge{color:#fff;background:var(--forest);border-radius:10px;place-items:center;min-width:56px;height:34px;padding:0 8px;font-weight:700;display:inline-grid}.dirs{flex-wrap:wrap;gap:8px;display:flex}.chip{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:999px;align-items:center;gap:6px;padding:7px 12px;font-size:14px;display:inline-flex}.chip.on{background:var(--forest);border-color:var(--forest);color:#fff}.shapes{grid-template-columns:1fr 1fr;gap:14px;display:grid}.shape-card{border:2px solid var(--line);cursor:pointer;background:#fff;border-radius:16px;flex-direction:column;align-items:center;gap:10px;padding:18px;transition:border-color .2s,transform .2s;display:flex}.shape-card.on{border-color:var(--forest);transform:translateY(-2px)}.shape-card svg{width:100%;max-width:150px}.swatches{grid-template-columns:repeat(auto-fill,minmax(44px,1fr));gap:8px;display:grid}.swatch{aspect-ratio:1;cursor:pointer;border:1px solid #0000001f;border-radius:12px;padding:0;position:relative}.swatch.on{outline:3px solid var(--forest);outline-offset:2px}.swatch-name{color:var(--ink-2);font-size:13px}.light-row{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:12px;padding:10px 0;display:flex}.light-row:last-child{border-bottom:0}.led{width:22px;height:22px;box-shadow:0 0 12px 3px var(--glow,#fff);border:2px solid #fff;border-radius:50%}.led-presets{flex-wrap:wrap;gap:6px;display:flex}.led-presets button{width:24px;height:24px;box-shadow:0 0 0 1px var(--line);cursor:pointer;border:2px solid #fff;border-radius:50%;padding:0}input[type=color]{border:1px solid var(--line);background:#fff;border-radius:8px;width:40px;height:32px;padding:2px}.toggle-row{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:16px;padding:14px 0;display:flex}.switch{flex:none;width:48px;height:28px;position:relative}.switch input{opacity:0;width:0;height:0}.switch span{background:var(--line);cursor:pointer;border-radius:14px;transition:background .2s;position:absolute;inset:0}.switch span:after{content:"";background:#fff;border-radius:50%;width:22px;height:22px;transition:transform .2s;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #0003}.switch input:checked+span{background:var(--forest)}.switch input:checked+span:after{transform:translate(20px)}.side{flex-direction:column;gap:16px;display:flex;position:sticky;top:16px}.summary{grid-template-columns:auto 1fr;gap:8px 16px;font-size:14px;display:grid}.summary dt{color:var(--ink-3)}.summary dd{margin:0}.map-box{border-radius:var(--radius);border:1px solid var(--line);background:var(--paper-2);height:460px;overflow:hidden}@media (width<=960px){.side{position:static}.map-box{height:340px}}.landmarks{flex-direction:column;gap:8px;display:flex}.landmark{border:1px solid var(--line);background:#fff;border-radius:12px;justify-content:space-between;align-items:center;gap:10px;padding:10px 12px;display:flex}.gen{flex:1;grid-template-columns:minmax(0,1fr) 380px;min-height:0;display:grid}@media (width<=960px){.gen{grid-template-columns:1fr}}.stage-wrap{background:radial-gradient(at 50% 35%,#fbf7ef 0%,#efe7d8 55%,#e3d8c4 100%);min-height:520px;position:relative}@media (width<=960px){.stage-wrap{min-height:62vh}}.stage-wrap canvas{display:block}.caption{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--line);color:var(--ink-2);white-space:nowrap;text-overflow:ellipsis;background:#fffdf8db;border-radius:999px;max-width:calc(100% - 32px);padding:10px 18px;font-size:14px;animation:.5s fadeUp;position:absolute;bottom:26px;left:50%;overflow:hidden;transform:translate(-50%)}@keyframes fadeUp{0%{opacity:0;transform:translate(-50%,8px)}}.panel{background:var(--card);border-left:1px solid var(--line);flex-direction:column;gap:18px;padding:24px;display:flex;overflow-y:auto}@media (width<=960px){.panel{border-left:0;border-top:1px solid var(--line);padding:20px 16px}}.stages{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.stages li{color:var(--ink-3);align-items:center;gap:10px;font-size:14px;transition:color .3s;display:flex}.stages li .dot{border:2px solid var(--line);border-radius:50%;flex:none;place-items:center;width:18px;height:18px;font-size:11px;display:grid}.stages li.active{color:var(--ink)}.stages li.active .dot{border-color:var(--amber);border-top-color:#0000;animation:.9s linear infinite spin}.stages li.done{color:var(--ink)}.stages li.done .dot{border-color:var(--forest);background:var(--forest);color:#fff}@keyframes spin{to{transform:rotate(360deg)}}.facts{grid-template-columns:1fr 1fr;gap:10px;display:grid}.fact{background:var(--paper);border-radius:12px;padding:10px 12px}.fact b{font-family:var(--serif);font-size:20px;display:block}.fact span{color:var(--ink-3);font-size:12px}.thanks{text-align:center;padding:20px 0}.thanks h2{margin-bottom:8px;font-size:28px}@media (width<=600px){.brand small{display:none}}
