:root{--max-width:960px;--color-bg:#f5f5f5;--color-surface:#fff;--color-border:#e0e0e0;--color-text:#1a1a1a;--color-text-muted:#666;--color-primary:#2563eb;--color-primary-hover:#1d4ed8;--color-success-bg:#f0fdf4;--color-success-border:#16a34a;--color-success-text:#15803d;--color-warning-bg:#fffbeb;--color-warning-border:#d97706;--color-warning-text:#92400e;--color-error-bg:#fef2f2;--color-error-border:#dc2626;--color-error-text:#991b1b;--radius:6px;--shadow:0 1px 3px #0000001a}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{background:var(--color-bg);color:var(--color-text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Hiragino Sans,Noto Sans JP,sans-serif;font-size:15px;line-height:1.6}.app{flex-direction:column;min-height:100vh;display:flex}.main{max-width:var(--max-width);flex-direction:column;flex:1;gap:1.5rem;width:100%;margin:0 auto;padding:0 1.5rem 2rem;display:flex}.hero{color:#fff;text-align:center;background:linear-gradient(135deg,#1e3a5f 0%,#2563eb 100%);margin-bottom:0;padding:3rem 1.5rem 2.5rem}.hero-title{letter-spacing:-.5px;margin-bottom:.75rem;font-size:2.5rem;font-weight:700}.hero-subtitle{opacity:.85;font-size:1rem;line-height:1.7}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.5rem}.card-title{color:var(--color-text);border-bottom:1px solid var(--color-border);margin-bottom:1rem;padding-bottom:.5rem;font-size:1rem;font-weight:600}.intro-section{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;gap:.9rem;padding:1.75rem 2rem;display:flex}.intro-lead{color:var(--color-primary);font-size:1.1rem;font-weight:600;line-height:1.5}.intro-body{color:var(--color-text);font-size:.95rem;line-height:1.8}.intro-features{border-radius:var(--radius);border:1px solid var(--color-border);background:#f8fafc;flex-direction:column;gap:.5rem;margin-top:.25rem;padding:1rem 1.25rem;list-style:none;display:flex}.intro-features li{color:var(--color-text);align-items:baseline;gap:.6rem;font-size:.9rem;display:flex}.feature-icon{flex-shrink:0;font-size:1rem}.dropzone{background:var(--color-surface);border:2px dashed var(--color-border);border-radius:var(--radius);text-align:center;cursor:pointer;box-shadow:var(--shadow);color:var(--color-text-muted);padding:3rem 1.5rem;transition:border-color .15s,background-color .15s}.dropzone:hover{border-color:var(--color-primary);background:#eff6ff}.dropzone.drag-over{border-color:var(--color-primary);color:var(--color-primary);background:#dbeafe}.dropzone-content{flex-direction:column;align-items:center;gap:.75rem;display:flex}.dropzone-content svg{opacity:.5}.dropzone.drag-over .dropzone-content svg{opacity:1}.dropzone-primary{color:var(--color-text);font-size:1rem;font-weight:500}.dropzone.drag-over .dropzone-primary{color:var(--color-primary)}.dropzone-secondary{color:var(--color-text-muted);font-size:.85rem}.summary-grid{grid-template-columns:auto 1fr;gap:.4rem 1.5rem;display:grid}.summary-grid dt{color:var(--color-text-muted);white-space:nowrap;font-size:.85rem}.summary-grid dd{text-overflow:ellipsis;white-space:nowrap;font-size:.9rem;font-weight:500;overflow:hidden}.options-list{flex-direction:column;gap:.75rem;display:flex}.option-item{cursor:pointer;align-items:flex-start;gap:.6rem;display:flex}.option-item input[type=checkbox]{width:16px;height:16px;accent-color:var(--color-primary);flex-shrink:0;margin-top:3px}.option-text{flex-direction:column;gap:.1rem;display:flex}.option-label{font-size:.9rem;font-weight:500}.option-desc{color:var(--color-text-muted);font-size:.8rem}.report-section{margin-bottom:1.25rem}.report-section:last-child{margin-bottom:0}.report-section-title{text-transform:uppercase;letter-spacing:.5px;margin-bottom:.5rem;font-size:.85rem;font-weight:600}.report-actions-title{color:var(--color-success-text)}.report-warnings-title{color:var(--color-warning-text)}.report-empty{color:var(--color-text-muted);font-size:.875rem}.report-list{flex-direction:column;gap:.35rem;list-style:none;display:flex}.report-list li{border-left-style:solid;border-left-width:3px;border-radius:4px;padding:.4rem .75rem;font-size:.875rem}.report-list-actions li{background:var(--color-success-bg);border-left-color:var(--color-success-border);color:var(--color-success-text)}.report-list-warnings li{background:var(--color-warning-bg);border-left-color:var(--color-warning-border);color:var(--color-warning-text)}.table-wrapper{border:1px solid var(--color-border);border-radius:4px;overflow-x:auto}.preview-table{border-collapse:collapse;width:100%;font-family:Cascadia Code,Consolas,Courier New,monospace;font-size:.82rem}.preview-table th,.preview-table td{border:1px solid var(--color-border);white-space:nowrap;text-overflow:ellipsis;max-width:240px;padding:.35rem .6rem;overflow:hidden}.preview-table th{background:#f8fafc;font-weight:600;position:sticky;top:0}.preview-table tr:nth-child(2n) td{background:#fafafa}.table-footer{color:var(--color-text-muted);margin-top:.5rem;font-size:.8rem}.download-card{background:linear-gradient(135deg,#f0f9ff 0%,#e0f2fe 100%);border-color:#bae6fd}.download-desc{color:var(--color-text-muted);margin-bottom:1rem;font-size:.875rem}.download-buttons{flex-wrap:wrap;gap:.75rem;display:flex}.btn{border-radius:var(--radius);cursor:pointer;border:none;align-items:center;gap:.4rem;padding:.6rem 1.25rem;font-size:.9rem;font-weight:500;transition:background-color .15s,transform .1s;display:inline-flex}.btn:active{transform:scale(.98)}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover{background:var(--color-primary-hover)}.btn-secondary{color:var(--color-text);border:1px solid var(--color-border);background:#fff}.btn-secondary:hover{background:#f8f8f8}.warning-notice{background:var(--color-warning-bg);border:1px solid var(--color-warning-border);border-radius:var(--radius);color:var(--color-warning-text);align-items:flex-start;gap:.6rem;padding:.875rem 1rem;font-size:.9rem;display:flex}.warning-notice svg{flex-shrink:0;margin-top:1px}.error-notice{background:var(--color-error-bg);border:1px solid var(--color-error-border);border-radius:var(--radius);color:var(--color-error-text);align-items:flex-start;gap:.6rem;padding:.875rem 1rem;font-size:.9rem;display:flex}.error-notice svg{flex-shrink:0;margin-top:1px}.footer{text-align:center;color:var(--color-text-muted);border-top:1px solid var(--color-border);margin-top:auto;padding:1.5rem;font-size:.8rem}.geojson-card{background:linear-gradient(135deg,#f0fdf4 0%,#dcfce7 100%);border-color:#86efac}.czml-card{background:linear-gradient(135deg,#faf5ff 0%,#ede9fe 100%);border-color:#c4b5fd}.kml-card{background:linear-gradient(135deg,#fff7ed 0%,#ffedd5 100%);border-color:#fdba74}.export-selectors{flex-direction:column;gap:.75rem;margin-bottom:1.25rem;display:flex}.export-selector-row{grid-template-columns:8rem 1fr;align-items:center;gap:.75rem;display:grid}.export-label{white-space:nowrap;font-size:.875rem;font-weight:500}.export-required{color:var(--color-error-text);margin-left:.25rem;font-size:.75rem;font-weight:400}.export-optional{color:var(--color-text-muted);margin-left:.25rem;font-size:.75rem;font-weight:400}.export-select{border:1px solid var(--color-border);border-radius:var(--radius);width:100%;color:var(--color-text);cursor:pointer;background:#fff;padding:.4rem .6rem;font-size:.875rem}.export-select:focus{outline:2px solid var(--color-primary);outline-offset:1px}.btn:disabled{opacity:.45;cursor:not-allowed;pointer-events:none}.style-section{border-top:1px dashed var(--color-border);flex-direction:column;gap:.75rem;margin-top:.25rem;margin-bottom:1.25rem;padding-top:.75rem;display:flex}.style-section-title{text-transform:uppercase;letter-spacing:.4px;color:var(--color-text-muted);font-size:.8rem;font-weight:600}.style-color-input{border:1px solid var(--color-border);border-radius:var(--radius);cursor:pointer;background:#fff;width:2.5rem;height:2rem;padding:.1rem .15rem}.style-number-input{border:1px solid var(--color-border);border-radius:var(--radius);width:5rem;color:var(--color-text);background:#fff;padding:.4rem .6rem;font-size:.875rem}.style-number-input:focus{outline:2px solid var(--color-primary);outline-offset:1px}@media (width<=640px){.hero{padding:2rem 1rem 1.5rem}.hero-title{font-size:1.75rem}.main{gap:1rem;padding:0 1rem 1.5rem}.dropzone{padding:2rem 1rem}.card{padding:1rem}.download-buttons{flex-direction:column}.btn{justify-content:center;width:100%}.export-selector-row{grid-template-columns:1fr;gap:.3rem}}
