:root{--black:#0a0a0b;--dark:#101012;--dark-2:#18181b;--dark-3:#1e1e22;--blue:#1b6feb;--blue-hover:#1458c4;--blue-light:#4b93ff;--blue-dim:#1b6feb14;--blue-dim-2:#1b6feb24;--blue-border:#1b6feb47;--chalk:#f5f5f3;--muted:#6b7280;--steel:#9ca3af;--border:#ffffff0f;--border-2:#ffffff1c;--success:#3ecf8e;--error:#e05555;--r:6px;--r-lg:10px;--font-sans:"Plus Jakarta Sans", system-ui, sans-serif;--font-mono:"Space Mono", monospace;--font-serif:"DM Serif Display", Georgia, serif}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;font-family:var(--font-sans);background:var(--black);color:var(--chalk);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;max-width:100%;overflow:hidden}#app{flex-direction:column;max-width:100%;height:100dvh;display:flex;overflow-x:hidden}#hdr{background:var(--dark);border-bottom:1px solid var(--blue-border);z-index:10;flex-shrink:0;padding:12px 24px}.hdr-inner{justify-content:space-between;align-items:center;max-width:1400px;margin:0 auto;display:flex}.logo-link{align-items:center;text-decoration:none;display:flex}.logo-img{filter:brightness(0)invert();width:auto;height:34px;transition:opacity .2s}.logo-img:hover{opacity:.8}.hdr-right{align-items:center;gap:16px;display:flex}.live-badge{background:var(--blue-dim);border:1px solid var(--blue-border);font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--blue);border-radius:20px;align-items:center;gap:7px;padding:5px 14px;font-size:.65rem;font-weight:400;display:flex}.live-dot{background:var(--blue);border-radius:50%;flex-shrink:0;width:6px;height:6px;animation:2s cubic-bezier(.4,0,.6,1) infinite pulse-dot}@keyframes pulse-dot{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(1.4)}}.hdr-back{font-family:var(--font-mono);letter-spacing:.15em;text-transform:uppercase;color:var(--muted);font-size:.65rem;text-decoration:none;transition:color .15s}.hdr-back:hover{color:var(--chalk)}.main{flex:1;display:flex;overflow:hidden}#ctrl{background:var(--dark);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;width:clamp(430px,30vw,560px);min-width:340px;transition:max-width .2s;display:flex;overflow:hidden}.main.no-map #ctrl{border-right:none;width:100%;max-width:560px;margin:0 auto}#map-panel{background:var(--black);flex-direction:column;flex:1;display:none;position:relative}#map{touch-action:none;flex:1;width:100%;min-height:0}#ft-badge{border:1px solid var(--blue-border);border-radius:var(--r);font-family:var(--font-mono);letter-spacing:.1em;color:var(--blue);pointer-events:none;background:#0a0a0bf0;padding:6px 14px;font-size:.7rem;font-weight:400;display:none;position:absolute;top:12px;right:12px}#draw-banner{backdrop-filter:blur(6px);border-top:1px solid var(--blue-border);font-family:var(--font-mono);letter-spacing:.1em;color:var(--steel);text-align:center;pointer-events:none;background:#0a0a0be6;padding:10px 16px;font-size:.65rem;display:none;position:absolute;bottom:0;left:0;right:0}#prog-area{border-bottom:1px solid var(--border);background:var(--dark);flex-shrink:0;padding:16px 22px 12px}.pdots{align-items:flex-start;display:flex}.pdot-col{flex-direction:column;flex-shrink:0;align-items:center;gap:5px;display:flex}.pdot{border:1.5px solid var(--border-2);width:28px;height:28px;font-family:var(--font-mono);color:var(--muted);background:0 0;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:.6rem;transition:all .25s cubic-bezier(.16,1,.3,1);display:flex}.pdot.done{background:var(--blue);border-color:var(--blue);color:#fff;font-size:.65rem}.pdot.active{background:var(--black);border-color:var(--blue);color:var(--blue);box-shadow:0 0 0 3px var(--blue-dim-2)}.pdot-name{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);text-align:center;white-space:nowrap;font-size:.48rem;line-height:1;transition:color .25s}.pdot-col.active .pdot-name{color:var(--blue)}.pdot-col.done .pdot-name{color:var(--steel)}.pline{background:var(--border);flex:1;height:1px;margin-top:14px;transition:background .25s}.pline.done{background:var(--blue)}.prog-lbl{display:none}.sp{flex-direction:column;flex:1;gap:16px;padding:20px 22px;display:none;overflow-y:auto}.sp.on{display:flex}@keyframes stepIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.sp.on{animation:.22s forwards stepIn;display:flex}#step-nav{border-top:1px solid var(--border);background:var(--dark);flex-shrink:0;gap:10px;padding:14px 22px;display:flex}.lbl{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.2em;color:var(--muted);margin-bottom:8px;font-size:.62rem;font-weight:400}.hint{color:var(--steel);font-size:.875rem;line-height:1.6}.callout{background:var(--blue-dim);border:1px solid var(--blue-border);border-radius:var(--r);color:var(--steel);gap:11px;padding:12px 15px;font-size:.825rem;line-height:1.6;display:flex}.callout-ico{flex-shrink:0;margin-top:1px;font-size:15px}.field{flex-direction:column;gap:5px;display:flex}.field label{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--muted);font-size:.6rem}.field .err{color:var(--error);font-size:.7rem;font-family:var(--font-mono);letter-spacing:.05em;display:none}input[type=text],input[type=email],input[type=tel],textarea,select{border:1px solid var(--border-2);border-radius:var(--r);width:100%;font-size:.9rem;font-family:var(--font-sans);color:var(--chalk);background:#ffffff0a;outline:none;padding:10px 14px;transition:border-color .2s,box-shadow .2s}input:focus,textarea:focus,select:focus{border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-dim-2)}input::placeholder,textarea::placeholder{color:var(--muted)}textarea{resize:vertical;min-height:64px}select option{background:var(--dark-2)}.two-col{grid-template-columns:1fr 1fr;gap:12px;display:grid}.btn{border-radius:var(--r);font-size:.8rem;font-weight:700;font-family:var(--font-sans);letter-spacing:.04em;text-transform:uppercase;cursor:pointer;white-space:nowrap;border:none;justify-content:center;align-items:center;gap:7px;padding:10px 18px;transition:transform .2s cubic-bezier(.16,1,.3,1),box-shadow .2s,background .15s;display:inline-flex}.btn:hover{transform:translateY(-1px)}.btn:active{transform:translateY(0)}.btn-primary{background:var(--blue);color:#fff;flex:1;box-shadow:0 2px 16px #1b6feb40}.btn-primary:hover{background:var(--blue-hover);box-shadow:0 6px 24px #1b6feb66}.btn-primary:disabled{opacity:.38;cursor:not-allowed;box-shadow:none;transform:none}.btn-sec{color:var(--chalk);border:1px solid var(--border-2);background:#ffffff0d}.btn-sec:hover{background:#ffffff17;border-color:#ffffff2e}.btn-sec:disabled{opacity:.38;cursor:not-allowed;transform:none}.btn-ghost{color:var(--muted);text-transform:none;letter-spacing:0;background:0 0;padding:7px 10px;font-size:.75rem;font-weight:600}.btn-ghost:hover{color:var(--chalk);transform:none}.btn-del{color:var(--error);text-transform:none;letter-spacing:0;background:0 0;border:1px solid #e0555540;padding:5px 10px;font-size:.75rem}.btn-del:hover{background:#e0555514;transform:none}.btn-sm{padding:7px 13px;font-size:.75rem}.card{background:var(--dark-2);border:1px solid var(--border);border-radius:var(--r-lg);padding:14px 16px}.run-row{background:var(--dark-2);border:1px solid var(--border);border-radius:var(--r);align-items:center;gap:10px;margin-bottom:5px;padding:10px 14px;display:flex}.run-dot{border-radius:50%;flex-shrink:0;width:9px;height:9px}.run-name{flex:1;font-size:.875rem;font-weight:500}.run-ft{font-family:var(--font-mono);color:var(--muted);letter-spacing:.05em;font-size:.7rem}.run-style-block{margin-bottom:20px}.run-hdr{border:1px solid var(--border);border-radius:var(--r-lg) var(--r-lg) 0 0;color:var(--chalk);background:#ffffff0a;align-items:center;gap:8px;padding:10px 14px;font-size:.85rem;font-weight:600;display:flex}.fence-grid{border:1px solid var(--border);border-radius:0 0 var(--r-lg) var(--r-lg);background:#ffffff05;border-top:none;grid-template-columns:1fr 1fr;gap:8px;padding:10px;display:grid}.fence-card{border-radius:var(--r);cursor:pointer;aspect-ratio:4/3;width:100%;font-family:var(--font-sans);background:0 0;border:2px solid #0000;padding:0;transition:border-color .2s,transform .15s;display:block;position:relative;overflow:hidden}.fence-card:active{transform:scale(.96)}@media (hover:hover){.fence-card:hover{border-color:var(--steel);transform:scale(1.02)}}.fence-card.sel{border-color:var(--blue)}.fc-bg{position:absolute;inset:0}.fc-img{object-fit:cover;width:100%;height:100%;transition:transform .3s;position:absolute;inset:0}@media (hover:hover){.fence-card:hover .fc-img{transform:scale(1.06)}}.fc-overlay{background:linear-gradient(#0000 25%,#000000d1);transition:background .2s;position:absolute;inset:0}.fence-card.sel .fc-overlay{background:linear-gradient(#0000 15%,#0a286eb8)}.fc-info{padding:10px 11px;position:absolute;bottom:0;left:0;right:0}.fc-name{color:#fff;font-size:.85rem;font-weight:700;line-height:1.2}.fc-price{font-family:var(--font-mono);color:#ffffffa6;letter-spacing:.05em;margin-top:3px;font-size:.65rem}.fc-check{background:var(--blue);color:#fff;opacity:0;border-radius:50%;justify-content:center;align-items:center;width:24px;height:24px;font-size:11px;transition:opacity .18s,transform .18s;display:flex;position:absolute;top:8px;right:8px;transform:scale(.7);box-shadow:0 2px 8px #00000080}.fence-card.sel .fc-check{opacity:1;transform:scale(1)}.gate-row{background:var(--dark-2);border:1px solid var(--border);border-radius:var(--r);align-items:center;gap:9px;margin-bottom:5px;padding:10px 13px;display:flex}.gate-lbl{flex:1;font-size:.875rem;font-weight:500}.gate-cost{font-family:var(--font-mono);color:var(--muted);font-size:.7rem}.type-card{border:1.5px solid var(--border);border-radius:var(--r);cursor:pointer;font-family:var(--font-sans);text-align:center;background:#ffffff0a;flex-direction:column;align-items:center;padding:0;transition:border-color .15s,background .15s;display:flex;overflow:hidden}.type-card:hover{border-color:var(--blue);background:var(--blue-dim)}.type-card:active{transform:scale(.97)}.tc-img{aspect-ratio:4/3;object-fit:cover;background:var(--dark-3);width:100%;display:block}.tc-info{width:100%;padding:8px 8px 10px}.tc-name{color:var(--chalk);font-size:.8rem;font-weight:600;line-height:1.2;display:block}.tc-price{font-family:var(--font-mono);color:var(--steel);letter-spacing:.05em;margin-top:3px;font-size:.65rem;display:block}.sub-sel{margin-top:10px}.sub-sel-lbl{text-transform:uppercase;letter-spacing:.1em;color:var(--muted);margin-bottom:6px;font-size:.7rem;font-weight:700}.sub-sel-opts{flex-wrap:wrap;gap:6px;display:flex}.sub-btn{border:1.5px solid var(--border-2);border-radius:var(--r);min-width:80px;color:var(--muted);font-family:var(--font-sans);cursor:pointer;text-align:center;background:0 0;flex:1;padding:8px 10px;font-size:.78rem;font-weight:600;line-height:1.35;transition:all .15s}.sub-btn:hover{border-color:var(--steel);color:var(--chalk)}.sub-btn.sel{border-color:var(--blue);color:var(--blue);background:var(--blue-dim)}.sub-price{font-family:var(--font-mono);opacity:.8;font-size:.62rem;font-weight:400}.terrain-grp{gap:6px;display:flex}.tbtn{border:1.5px solid var(--border-2);border-radius:var(--r);color:var(--muted);font-family:var(--font-sans);cursor:pointer;text-align:center;background:0 0;flex:1;padding:10px 8px;font-size:.8rem;font-weight:600;line-height:1.35;transition:all .15s}.tbtn:hover{border-color:var(--steel);color:var(--chalk)}.tbtn.sel{border-color:var(--blue);color:var(--blue);background:var(--blue-dim)}.tog-row{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:12px 0;display:flex}.tog-lbl{font-size:.875rem;font-weight:600}.tog-sub{color:var(--muted);margin-top:3px;font-size:.75rem}.toggle{background:var(--border-2);cursor:pointer;border:none;border-radius:12px;flex-shrink:0;width:42px;height:24px;transition:background .2s;position:relative}.toggle.on{background:var(--blue)}.toggle:after{content:"";background:#fff;border-radius:50%;width:18px;height:18px;transition:left .18s cubic-bezier(.16,1,.3,1);position:absolute;top:3px;left:3px;box-shadow:0 1px 4px #0000004d}.toggle.on:after{left:21px}.est-line{border-bottom:1px solid var(--border);justify-content:space-between;align-items:flex-start;padding:10px 0;font-size:.875rem;display:flex}.est-line:last-child{border-bottom:none}.est-line .el{color:var(--steel)}.est-line .ev{font-weight:700;font-family:var(--font-mono);color:var(--chalk);font-size:.85rem}.est-line .esub{font-family:var(--font-mono);color:var(--muted);letter-spacing:.05em;margin-top:3px;font-size:.6rem}.range-box{background:var(--blue-dim);border:1px solid var(--blue-border);border-radius:var(--r-lg);text-align:center;margin-top:4px;padding:22px 20px}.range-label{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.22em;color:var(--muted);margin-bottom:8px;font-size:.62rem;font-weight:400}.range-val{font-family:var(--font-serif);color:var(--blue);letter-spacing:-.02em;font-size:2.2rem;line-height:1}.range-sub{font-family:var(--font-mono);color:var(--muted);letter-spacing:.05em;margin-top:8px;font-size:.62rem;line-height:1.6}.confirm-wrap{text-align:center;padding:28px 16px}.confirm-ico{border:1.5px solid var(--success);background:#3ecf8e1a;border-radius:50%;justify-content:center;align-items:center;width:56px;height:56px;margin:0 auto 18px;font-size:22px;display:flex}.confirm-title{font-family:var(--font-serif);letter-spacing:-.02em;color:var(--chalk);margin-bottom:12px;font-size:1.6rem}.confirm-sub{color:var(--steel);font-size:.875rem;line-height:1.7}.confirm-em{color:var(--blue);font-weight:600}.spin{border:2px solid var(--border-2);border-top-color:var(--blue);border-radius:50%;width:22px;height:22px;animation:.7s linear infinite rot;display:inline-block}@keyframes rot{to{transform:rotate(360deg)}}.seg-label{color:#111;font-size:11px;font-weight:700;font-family:var(--font-mono);white-space:nowrap;pointer-events:none;letter-spacing:.05em;background:#fff;border-radius:20px;padding:3px 9px;position:absolute;transform:translate(-50%,-50%);box-shadow:0 1px 5px #00000047}#map-footer{background:var(--dark);border-top:1px solid var(--border);flex-shrink:0;align-items:center;gap:28px;padding:10px 18px;display:none}#map-footer span{font-family:var(--font-mono);color:var(--steel);letter-spacing:.08em;font-size:.7rem}#map-footer strong{color:var(--chalk);font-weight:700}@keyframes fadeUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.fu{opacity:0;animation:.28s forwards fadeUp}.fu:first-child{animation-delay:30ms}.fu:nth-child(2){animation-delay:80ms}.fu:nth-child(3){animation-delay:.13s}.fu:nth-child(4){animation-delay:.18s}.fu:nth-child(5){animation-delay:.23s}.fu:nth-child(6){animation-delay:.28s}.fu:nth-child(7){animation-delay:.33s}.fu:nth-child(8){animation-delay:.38s}#sv-pano{z-index:5;background:var(--black);display:none;position:absolute;inset:0}#sv-overlay{z-index:6;pointer-events:none;background:linear-gradient(#0000,#0a0a0beb);justify-content:space-between;align-items:flex-end;padding:18px 22px;display:none;position:absolute;bottom:0;left:0;right:0}#sv-confirm-box{pointer-events:all;align-items:center;gap:14px;display:flex}#sv-confirm-addr{font-family:var(--font-mono);color:#fff9;white-space:nowrap;text-overflow:ellipsis;letter-spacing:.05em;max-width:240px;font-size:.65rem;overflow:hidden}#sv-confirm-btn{background:var(--blue);color:#fff;border-radius:var(--r);font-family:var(--font-sans);letter-spacing:.04em;text-transform:uppercase;cursor:pointer;white-space:nowrap;border:none;flex-shrink:0;padding:11px 20px;font-size:.8rem;font-weight:700;transition:background .15s,transform .15s;box-shadow:0 2px 12px #1b6feb4d}#sv-confirm-btn:hover{background:var(--blue-hover);transform:translateY(-1px)}#sv-wrong{font-family:var(--font-mono);color:#fff6;cursor:pointer;pointer-events:all;letter-spacing:.1em;text-transform:uppercase;font-size:.62rem;text-decoration:underline}#sv-wrong:hover{color:#ffffffb3}#sv-toggle-btn{z-index:4;border:1px solid var(--blue-border);color:var(--blue);font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;cursor:pointer;backdrop-filter:blur(6px);white-space:nowrap;background:#0a0a0be6;border-radius:20px;padding:6px 14px;font-size:.62rem;transition:all .15s;display:none;position:absolute;top:12px;left:12px}#sv-toggle-btn:hover{background:var(--blue);color:#fff}#ba-toggle{border:1px solid var(--blue-border);background:var(--blue-dim);color:var(--blue);font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;cursor:pointer;white-space:nowrap;border-radius:20px;flex-shrink:0;margin-left:auto;padding:5px 13px;font-size:.62rem;transition:all .15s}#ba-toggle:hover,#ba-toggle.after-on{background:var(--blue);color:#fff}::-webkit-scrollbar{width:3px}::-webkit-scrollbar-thumb{background:var(--border-2);border-radius:2px}::-webkit-scrollbar-thumb:hover{background:var(--blue)}#map-fab{z-index:5;flex-direction:column;gap:8px;display:none;position:absolute;bottom:56px;right:12px}.fab{border:1px solid var(--border-2);width:48px;height:48px;color:var(--chalk);cursor:pointer;backdrop-filter:blur(6px);background:#0a0a0bf0;border-radius:50%;justify-content:center;align-items:center;font-size:18px;transition:all .15s;display:flex;box-shadow:0 2px 12px #0009}.fab:active{transform:scale(.93)}.fab.draw-on{background:var(--blue);border-color:var(--blue);color:#fff;box-shadow:0 2px 16px #1b6feb66}.fab.fab-done{border-color:var(--success);color:var(--success);background:#3ecf8e26}.fab.fab-undo{font-size:15px}@keyframes ptFlash{0%{transform:scale(1)}40%{transform:scale(1.3)}to{transform:scale(1)}}.fab.flash{animation:.22s ptFlash}@media (width<=767px){html,body{overflow:hidden auto}#app{width:100%;max-width:100vw;height:auto;min-height:100dvh;overflow-x:hidden}.main{flex-direction:column;width:100%;max-width:100vw;overflow-x:hidden}#ctrl{width:100%;max-width:100vw;min-width:unset;border-right:none;overflow-x:hidden}.main.no-map #ctrl{max-width:100vw}.sp{max-width:100%;padding-bottom:80px;overflow:hidden visible}#prog-area{max-width:100%;overflow:hidden}#map-panel{order:-1;width:100%;max-width:100vw;height:52vh;position:relative;overflow:hidden;display:flex!important}.main.no-map #map-panel{display:none!important}.live-badge{display:none}.two-col,.type-grid{grid-template-columns:1fr 1fr}#draw-banner{display:none!important}input[type=text],input[type=email],input[type=tel],textarea,select{font-size:16px!important}.btn{min-height:48px}.btn-sm{min-height:44px;padding:10px 14px;font-size:.8rem}.toggle{width:48px;height:26px}.toggle:after{width:20px;height:20px}.toggle.on:after{left:24px}.tbtn{min-height:52px;font-size:.875rem}#step-nav{z-index:10;position:sticky;bottom:0;box-shadow:0 -2px 16px #00000080}#sv-overlay{box-sizing:border-box;flex-direction:column;align-items:stretch;gap:10px;padding:14px;left:0;right:0}#sv-confirm-box{flex-direction:column;align-items:stretch;gap:8px;width:100%}#sv-confirm-addr{white-space:normal;max-width:100%}#sv-confirm-btn{text-align:center;white-space:normal;box-sizing:border-box;width:100%;padding:14px 18px;font-size:.9rem}#sv-wrong{text-align:center;padding:4px 0}#sv-toggle-btn{padding:9px 16px;top:10px;left:10px}#ft-badge{top:10px;right:10px}.fab{width:56px;height:56px;font-size:20px}#map-fab{gap:10px;bottom:70px}#map-footer{display:none!important}.callout{word-break:break-word;max-width:100%}#hdr{padding:10px 16px}.hdr-back{display:none}.logo-img{height:28px}.range-val{font-size:1.8rem}.prog-lbl{font-size:.58rem}}@media (width>=768px) and (width<=1023px){html,body{overflow:hidden auto}#app{height:auto;min-height:100dvh}.main{flex-direction:column}#ctrl{width:100%;min-width:unset;border-right:none}.main.no-map #ctrl{max-width:100%}#map-panel{order:-1;width:100%;height:45vh;position:relative;overflow:hidden;display:flex!important}.main.no-map #map-panel{display:none!important}#step-nav{z-index:10;position:sticky;bottom:0;box-shadow:0 -2px 16px #00000080}.sp{padding-bottom:80px}}@media (width<=767px) and (orientation:landscape){#map-panel{height:72vh}#sv-overlay{flex-direction:row;align-items:flex-end}#sv-confirm-box{flex-direction:row;align-items:center}}@media (width<=380px){.two-col,.type-grid{grid-template-columns:1fr}#map-panel{height:48vh}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
