:root{--surface:#fff;--page:#f9f9f7;--ink:#0b0b0b;--ink-secondary:#52514e;--ink-muted:#898781;--border:#0b0b0b1a;--accent:#2a78d6;--accent-fill:#2a78d61f;--error:#d03b3b;--error-fill:#fbeaea;--layer-bldl:#3987e5;--layer-rdcompt:#3d5f85;--layer-rdedg:#6e6a5f}*{box-sizing:border-box}body{background:var(--page);color:var(--ink);margin:0;font-family:system-ui,-apple-system,Segoe UI,Hiragino Kaku Gothic ProN,Yu Gothic,sans-serif}#app{max-width:1240px;margin:0 auto;padding:24px 24px 40px}.app-header{margin-bottom:20px}.app-header h1{margin:0 0 4px;font-size:20px;font-weight:700}.app-subtitle{color:var(--ink-secondary);margin:0;font-size:13px}.drop-zone{background:var(--surface);border:1.5px dashed var(--border);text-align:center;border-radius:10px;padding:28px;transition:border-color .15s,background .15s}.drop-zone.is-dragover{border-color:var(--accent);background:var(--accent-fill)}.drop-zone-title{margin:0 0 4px;font-size:14px;font-weight:600}.drop-zone-sub{color:var(--ink-muted);margin:0 0 14px;font-size:12px}.secondary-button{background:var(--surface);border:1px solid var(--border);color:var(--ink);cursor:pointer;border-radius:6px;padding:8px 16px;font-size:13px}.secondary-button:hover{border-color:var(--ink-muted)}.messages{margin-top:12px}.message{border-radius:8px;margin-bottom:8px;padding:10px 14px;font-size:13px}.message.error{background:var(--error-fill);color:var(--error);border:1px solid #d03b3b40}.message.info{background:var(--page);color:var(--ink-secondary);border:1px solid var(--border)}.progress-list{flex-direction:column;gap:8px;margin-top:12px;display:flex}.progress-item{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:10px 14px}.progress-item.is-loading{border-color:var(--accent)}.progress-item-label{color:var(--ink-secondary);align-items:center;gap:8px;margin-bottom:6px;font-size:12px;display:flex}.progress-item-name{text-overflow:ellipsis;white-space:nowrap;flex:auto;overflow:hidden}.progress-item-status{color:var(--ink);white-space:nowrap;font-weight:600}.progress-item.is-loading .progress-item-status{color:var(--accent);font-size:13px}.progress-spinner{border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;flex:none;width:14px;height:14px;animation:.7s linear infinite spin}.progress-item.is-done .progress-spinner,.progress-item.is-skipped .progress-spinner{display:none}@keyframes spin{to{transform:rotate(360deg)}}.progress-bar-track{background:var(--page);border-radius:3px;height:6px;overflow:hidden}.progress-bar-fill{background:var(--accent);border-radius:3px;height:100%;transition:width .15s}.progress-item.is-done .progress-bar-fill{background:#0ca30c}.progress-item.is-skipped .progress-bar-fill{background:var(--ink-muted)}.progress-item.is-skipped .progress-item-status{color:var(--ink-muted)}.workspace{align-items:flex-start;gap:20px;margin-top:20px;display:flex}.preview-panel{background:var(--surface);border:1px solid var(--border);border-radius:10px;flex:auto;min-width:0;overflow:hidden}.preview-toolbar{border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:10px 14px;display:flex}.mode-toggle{border:1px solid var(--border);border-radius:6px;display:inline-flex;overflow:hidden}.mode-button{background:var(--surface);color:var(--ink-secondary);cursor:pointer;border:none;padding:6px 12px;font-size:12px}.mode-button+.mode-button{border-left:1px solid var(--border)}.mode-button.is-active{background:var(--ink);color:#fff}.text-button{color:var(--accent);cursor:pointer;background:0 0;border:none;padding:4px 2px;font-size:12px}.selection-status{color:var(--ink-muted);margin-left:auto;font-size:12px}.map-canvas{cursor:crosshair;background:#fff;width:100%;height:560px;display:block}.settings-panel{flex-direction:column;flex:0 0 280px;gap:16px;display:flex}.settings-group{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:14px 16px}.settings-group h2{color:var(--ink-secondary);letter-spacing:.02em;margin:0 0 10px;font-size:12px;font-weight:700}.scale-options{flex-direction:column;gap:8px;font-size:13px;display:flex}.scale-custom input[type=number]{border:1px solid var(--border);border-radius:4px;width:70px;padding:2px 6px;font-size:13px}#zoneSelect{border:1px solid var(--border);background:var(--surface);width:100%;color:var(--ink);border-radius:6px;padding:6px 8px;font-size:13px}.field-note{color:var(--ink-muted);margin:8px 0 0;font-size:11px}.layer-checkbox{align-items:center;gap:8px;padding:4px 0;font-size:13px;display:flex}.layer-swatch{border-radius:2px;width:14px;height:3px;display:inline-block}.layer-swatch[data-layer=BldL]{background:var(--layer-bldl)}.layer-swatch[data-layer=RdCompt]{background:var(--layer-rdcompt)}.layer-swatch[data-layer=RdEdg]{background:var(--layer-rdedg)}.primary-button{background:var(--ink);color:#fff;cursor:pointer;border:none;border-radius:8px;padding:12px 16px;font-size:14px;font-weight:600}.primary-button:disabled{background:var(--border);color:var(--ink-muted);cursor:not-allowed}.primary-button:not(:disabled):hover{background:#26323d}.field-error{color:var(--error);min-height:1em;margin:8px 0 0;font-size:12px}.app-footer{border-top:1px solid var(--border);color:var(--ink-muted);justify-content:space-between;margin-top:32px;padding-top:16px;font-size:12px;display:flex}.footer-links{gap:16px;display:flex}.terms-note{color:var(--ink-muted);-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.terms-note:hover{color:var(--ink-secondary)}@media (width<=860px){.workspace{flex-direction:column}.settings-panel{flex:auto;width:100%}}.legal-page{max-width:720px;margin:0 auto;padding:24px 24px 60px}.legal-page .back-link{color:var(--accent);margin-bottom:24px;font-size:13px;text-decoration:none;display:inline-block}.legal-page .back-link:hover{text-decoration:underline}.legal-page h1{margin:0 0 6px;font-size:22px;font-weight:700}.legal-page .updated-at{color:var(--ink-muted);margin:0 0 24px;font-size:12px}.legal-page .lead{color:var(--ink-secondary);margin:0 0 8px;font-size:14px;line-height:1.8}.legal-page h2{border-bottom:1px solid var(--border);margin:30px 0 10px;padding-bottom:6px;font-size:15px;font-weight:700}.legal-page p{color:var(--ink-secondary);margin:0 0 8px;font-size:14px;line-height:1.8}.legal-page ol,.legal-page ul{margin:0 0 8px;padding-left:1.4em}.legal-page li{color:var(--ink-secondary);margin:0 0 4px;font-size:14px;line-height:1.8}.legal-page .contact-block{color:var(--ink-secondary);margin-top:4px;font-size:14px;line-height:1.8}
