:root{--bg:#f4f1ea;--panel:#fff;--ink:#1f2328;--muted:#6b6f76;--line:#e2ddd2;--accent:#e4572e;--accent-ink:#fff;--ok:#2e8b57}*{box-sizing:border-box}html,body{height:100%;margin:0}body{color:var(--ink);background:var(--bg);flex-direction:column;font:14px/1.45 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;display:flex}.topbar{background:var(--ink);color:#fff;flex-wrap:wrap;align-items:center;gap:16px;padding:8px 16px;display:flex}.brand{letter-spacing:.2px;color:inherit;font-size:18px;font-weight:800;text-decoration:none}.tabs{gap:4px;display:flex}.tab{color:#cfd3d8;cursor:pointer;font:inherit;background:0 0;border:1px solid #444b53;border-radius:999px;padding:6px 12px}.tab.active{background:var(--accent);border-color:var(--accent);color:#fff}.tab-link{text-decoration:none}.tab-link:hover{color:#fff;border-color:#6b727b}.stats{color:#b9bec5;margin-left:auto;font-size:12px}.account{align-items:center;gap:8px;min-height:32px;display:flex}.account img.avatar{border-radius:50%;width:28px;height:28px}.account .who{white-space:nowrap;text-overflow:ellipsis;max-width:160px;font-size:13px;overflow:hidden}.account button{color:#fff;background:#3a3e44;padding:5px 10px;font-size:12px}.account .google-btn{color:#1f1f1f;background:#fff;border-radius:999px;align-items:center;gap:8px;padding:6px 12px 6px 6px;font-weight:600;display:inline-flex}.account .google-btn .g{color:#fff;background:conic-gradient(#ea4335 0 25%, #fbbc05 0 50%, #34a853 0 75%, #4285f4 0);border-radius:50%;justify-content:center;align-items:center;width:20px;height:20px;font-weight:800;display:inline-flex}.signin-note{color:#8a4b00;background:#fff4e5;border:1px solid #ffd8a8;border-radius:8px;padding:8px 10px;font-size:13px}.my-orders{gap:6px;margin:0;padding:0;list-style:none;display:grid}.my-orders li{border:1px solid var(--line);border-radius:8px;padding:8px;font-size:13px}.my-orders .t{font-weight:700}.my-orders .s{color:var(--muted);font-size:12px}.my-orders .bar{background:#efece5;border-radius:3px;height:5px;margin-top:6px;overflow:hidden}.my-orders .bar span{background:var(--ok);height:100%;display:block}.layout{flex:1;min-height:0;display:flex}.panel{background:var(--panel);border-right:1px solid var(--line);width:360px;max-width:100%;padding:16px;overflow-y:auto}#map{flex:1;min-height:300px}h2{margin:18px 0 8px;font-size:15px}h2:first-child{margin-top:0}h3{align-items:center;gap:8px;margin:20px 0 8px;font-size:14px;display:flex}.hint{color:var(--muted);margin:4px 0 10px;font-size:12px}label{color:var(--muted);margin-bottom:10px;font-size:12px;font-weight:600;display:block}input,textarea{border:1px solid var(--line);width:100%;font:inherit;color:var(--ink);background:#fff;border-radius:8px;margin-top:4px;padding:7px 9px;display:block}textarea{resize:vertical}button{font:inherit;cursor:pointer;background:var(--accent);color:var(--accent-ink);border:0;border-radius:8px;padding:8px 14px;font-weight:600}button.secondary{color:var(--ink);background:#efece5}button:disabled{opacity:.55;cursor:not-allowed}.hidden,[hidden]{display:none!important}.row{gap:8px;margin-top:8px;display:flex}.row>button{flex:1}.search{gap:6px;margin-bottom:8px;display:flex}.search input{margin:0}.swatches{flex-wrap:wrap;gap:6px;margin-top:6px;display:flex}.swatch{border:2px solid var(--line);cursor:pointer;border-radius:6px;width:28px;height:28px;padding:0}.swatch.selected{border-color:var(--ink);box-shadow:inset 0 0 0 2px #fff}.paper{aspect-ratio:5/7;color:#1b1b1b;background:#fff8c4;position:relative;overflow:hidden;container-type:inline-size}.paper .el{transform-origin:50%;white-space:pre-wrap;overflow-wrap:break-word;line-height:1.2;position:absolute}.paper .el-image img{object-fit:cover;pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:auto;display:block}.flyer-card{perspective:1200px;aspect-ratio:5/7;width:100%;max-width:260px;margin:10px auto 8px}.flyer-card.clickable{cursor:pointer}.flyer-inner{width:100%;height:100%;transform-style:preserve-3d;transition:transform .5s;position:relative}.flyer-card.flipped .flyer-inner{transform:rotateY(180deg)}.flyer-face{backface-visibility:hidden;border-radius:3px;position:absolute;inset:0;box-shadow:0 3px 10px #0003,0 0 0 1px #0000000f}.flyer-back{transform:rotateY(180deg)}body.modal-open{overflow:hidden}body.dragging,body.dragging *{-webkit-user-select:none;user-select:none;cursor:grabbing!important}.designer{z-index:3000;color:#e8eaed;background:#2b2e33;flex-direction:column;display:flex;position:fixed;inset:0}.d-top{background:#1f2226;border-bottom:1px solid #3a3e44;flex-wrap:wrap;align-items:center;gap:12px;padding:8px 12px;display:flex}.d-title{font-weight:800}.d-seg{background:#33373d;border-radius:8px;padding:2px;display:flex}.d-seg button{color:#c9ccd1;background:0 0;border-radius:6px;padding:6px 14px}.d-seg button.on{color:#1f2328;background:#fff}.d-tools{flex-wrap:wrap;gap:6px;display:flex}.d-tools .secondary{color:#fff;background:#3a3e44}.d-tools .icon{padding:8px 11px;font-size:16px;line-height:1}.d-status{color:#c9ccd1;margin-left:auto;font-size:12px}.d-status.err{color:#ff8a80}#d-done{margin-left:4px}.d-body{flex:1;min-height:0;display:flex}.d-stage{background:repeating-conic-gradient(#30343a 0 25%, #2b2e33 0 50%) 0 0 / 24px 24px;flex:1;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.d-wrap{position:relative}.d-paper{width:100%;height:100%;position:absolute;inset:0;box-shadow:0 10px 40px #00000080}.d-paper .el{cursor:move}.d-paper .el:hover{outline:1px dashed #1e88e599}.d-paper .el.editing{cursor:text;background:#ffffff59;outline:2px solid #1e88e5}.d-overlay{pointer-events:none;position:absolute;inset:0}.sel{transform-origin:50%;outline:1.5px solid #1e88e5;position:absolute}.handle{pointer-events:auto;background:#fff;border:1.5px solid #1e88e5;border-radius:2px;width:12px;height:12px;position:absolute}.h-nw{cursor:nwse-resize;top:-7px;left:-7px}.h-se{cursor:nwse-resize;bottom:-7px;right:-7px}.h-ne{cursor:nesw-resize;top:-7px;right:-7px}.h-sw{cursor:nesw-resize;bottom:-7px;left:-7px}.h-n{cursor:ns-resize;border-radius:6px;top:-7px;left:calc(50% - 6px)}.h-s{cursor:ns-resize;border-radius:6px;bottom:-7px;left:calc(50% - 6px)}.h-e{cursor:ew-resize;border-radius:6px;top:calc(50% - 6px);right:-7px}.h-w{cursor:ew-resize;border-radius:6px;top:calc(50% - 6px);left:-7px}.h-rot{cursor:grab;border-radius:50%;width:14px;height:14px;top:-32px;left:calc(50% - 7px)}.h-rot:after{content:"";background:#1e88e5;width:1.5px;height:18px;position:absolute;top:13px;left:5px}.guide{background:#ff4081;position:absolute}.guide-v{width:1px;top:-20px;bottom:-20px;left:50%}.guide-h{height:1px;top:50%;left:-20px;right:-20px}.d-drop{pointer-events:none;background:#1e88e526;border:3px dashed #1e88e5;border-radius:12px;justify-content:center;align-items:center;font-size:20px;font-weight:700;display:flex;position:absolute;inset:12px}.d-panel{width:290px;color:var(--ink);background:#fff;border-left:1px solid #3a3e44;padding:12px 14px;overflow-y:auto}.d-panel h4{margin:14px 0 6px;font-size:13px}.d-panel h4:first-child{margin-top:0}.d-panel label.inline{align-items:center;gap:8px;margin-top:8px;display:flex}.d-panel input[type=color]{width:44px;height:30px;margin:0;padding:2px}.d-panel select{border:1px solid var(--line);width:100%;font:inherit;border-radius:8px;margin-top:4px;padding:6px;display:block}.prow{align-items:flex-end;gap:10px;display:flex}.prow .grow{flex:1}.prow input[type=number]{width:70px}.btn-group{align-items:center;gap:4px;margin-bottom:10px;display:flex}.btn-group.wrap{flex-wrap:wrap}.btn-group .sep{width:8px}.tbtn{color:var(--ink);background:#efece5;padding:6px 9px;font-size:13px;font-weight:500}.tbtn.on{background:var(--ink);color:#fff}.btn-group .lbl,.shape-custom .lbl{color:var(--muted);margin-right:4px;font-size:12px;font-weight:600}.shape-btn{align-items:center;gap:6px;display:inline-flex}.shape-btn i{border:1.5px solid;border-radius:1px;display:inline-block}.shape-custom{flex-wrap:wrap;align-items:center;gap:6px;font-size:13px;display:flex}.shape-custom input{width:58px;margin:0;padding:5px 6px}.tbtn.danger{color:#c0392b}.d-layers{gap:4px;margin:0;padding:0;list-style:none;display:grid}.d-layers li{border:1px solid var(--line);cursor:pointer;border-radius:6px;align-items:center;gap:8px;padding:5px 8px;font-size:13px;display:flex}.d-layers li.on{background:#e8f2fd;border-color:#1e88e5}.d-layers li.empty{color:var(--muted);cursor:default;border-style:dashed}.d-layers .lic{object-fit:cover;background:#efece5;border-radius:4px;flex:none;justify-content:center;align-items:center;width:26px;height:26px;font-weight:800;display:flex}.d-layers .lname{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.tips{margin-top:14px;line-height:1.6}.segmented{gap:8px;margin:6px 0 10px;display:flex}.segmented label{border:1px solid var(--line);color:var(--ink);cursor:pointer;border-radius:8px;flex:1;align-items:center;gap:6px;margin:0;padding:8px;display:flex}.segmented input{width:auto;margin:0}.inline-field{align-items:center;gap:8px;display:flex}.inline-field input{width:90px;margin:0}.spots-summary{justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;font-size:13px;font-weight:600;display:flex}button.small{padding:4px 10px;font-size:12px}.spot-pin{color:#fff;background:#e4572e;border:2px solid #fff;border-radius:50% 50% 50% 0;justify-content:center;align-items:center;display:flex;transform:rotate(-45deg);box-shadow:0 2px 5px #0006}.spot-pin span{font-size:11px;font-weight:800;transform:rotate(45deg)}.spot-pop{align-items:center;gap:6px;display:flex}.spot-pop button{padding:3px 9px}.spot-pop .n{text-align:center;min-width:34px;font-size:15px;font-weight:800}.radius-value{margin-bottom:8px;font-size:13px}input[type=range]{border:0;padding:0}.price{border:1px solid var(--line);background:#faf7f0;border-radius:8px;margin:8px 0 12px;padding:10px;font-size:13px}.price .total{margin-top:4px;font-size:16px}.price-info{margin-top:8px;font-size:12px}.price-info summary{cursor:pointer;color:var(--accent);font-weight:600}.price-table{border-collapse:collapse;width:100%;margin-top:6px}.price-table th,.price-table td{text-align:left;border-bottom:1px solid var(--line);padding:3px 4px}.price-table td:last-child,.price-table th:last-child{text-align:right;font-weight:700}.pay{width:100%;padding:12px;font-size:15px}.demo-note{text-align:center}.msg{font-weight:600}.msg.ok{color:var(--ok)}.msg.err{color:#c0392b}.viewer{border:1px solid var(--line);background:#fbfaf7;border-radius:10px;margin:12px 0;padding:10px}.pile-note{color:var(--muted);margin:6px 0 0;font-size:12px}.badge{background:var(--accent);color:#fff;border-radius:999px;padding:1px 8px;font-size:11px}.bag{gap:6px;margin:0;padding:0;list-style:none;display:grid}.bag li{border:1px solid var(--line);cursor:pointer;border-radius:8px;align-items:center;gap:8px;padding:6px;display:flex}.bag li:hover{background:#faf7f0}.bag .thumb{pointer-events:none;border-radius:2px;flex:none;width:36px;box-shadow:0 1px 3px #0000004d}.bag .t{font-weight:700}.bag .s,.bag-empty{color:var(--muted);font-size:12px}.flyer-pin{color:#222;border:1px solid #00000040;border-radius:2px;justify-content:center;align-items:center;width:22px;height:28px;font-size:10px;font-weight:800;display:flex;transform:rotate(-8deg);box-shadow:0 2px 4px #00000073}.cluster{color:#fff;background:#e4572ee0;border:2px solid #fff;border-radius:50%;justify-content:center;align-items:center;font-size:12px;font-weight:800;display:flex;box-shadow:0 2px 6px #00000059}.country-badge{color:#fff;text-align:center;cursor:pointer;white-space:nowrap;background:#1f2328;border:2px solid #fff;border-radius:999px;min-width:30px;padding:4px 9px;font-size:12px;font-weight:800;display:inline-block;transform:translate(-50%,-50%);box-shadow:0 2px 8px #00000059}.country-badge:hover{background:var(--accent)}.country-pop{min-width:180px}.country-pop .cp-name{margin-bottom:4px;font-size:15px;font-weight:800}.country-pop .cp-count{font-size:13px}.country-pop .cp-count strong{color:var(--accent);font-size:18px}.country-pop .cp-sub{color:var(--muted);margin-top:2px;font-size:12px}.country-pop button{width:100%;margin-top:10px;padding:7px 10px;font-size:13px}.zoom-hint{color:#fff;background:#1f2328d9;border-radius:999px;padding:6px 10px;font-size:12px}.toast{background:var(--ink);color:#fff;z-index:2000;border-radius:999px;padding:10px 16px;position:fixed;bottom:20px;left:50%;transform:translate(-50%);box-shadow:0 4px 12px #0000004d}@media (max-width:760px){.d-body{flex-direction:column}.d-panel{border-left:0;width:100%;max-height:42vh}.layout{flex-direction:column-reverse}.panel{border-right:0;border-top:1px solid var(--line);width:100%;max-height:50vh}.stats{display:none}}
