:root{--page-bg:#f5f7fb;--card-bg:#ffffff;--border-color:#dfe5ef;--text-muted:#5f6c80;--accent:#2563eb;--accent-dark:#1e4fcc;--secondary-bg:#eef2ff}body{background:var(--page-bg);color:#0f172a;margin:0}body[data-map-scope=japan] .prefecture-selector-panel{display:none!important}body[data-map-scope=japan] #map-selected-label{display:none}.page{width:100%;max-width:none;padding:1rem clamp(.75rem,2vw,1.5rem) 2rem;display:flex;flex-direction:column;gap:1rem;margin-top:108px}.card{background:var(--card-bg);border-radius:16px;padding:1.5rem 1.6rem;box-shadow:0 12px 30px rgba(15,23,42,.08)}.hero-card{padding:1.1rem 1.4rem;text-align:left;margin:0}.hero-card h1{margin-bottom:.15rem;font-size:1.45rem;font-weight:700}.hero-card p{margin:0;font-size:.85rem;color:var(--text-muted)}.layout{display:flex;gap:1rem;align-items:stretch;flex-wrap:nowrap}.data-panel{flex:0 0 340px;max-width:340px}.map-card{flex:1 1 auto;min-width:0}.footer-links{padding:1.5rem 1rem 2rem;text-align:center;font-size:.9rem}.footer-links .links-container{display:inline-flex;gap:.5rem;align-items:center;color:var(--text-muted)}.footer-links a{color:var(--accent);text-decoration:none}.footer-links a:hover{text-decoration:underline}.footer-links .divider{color:var(--text-muted)}@media screen and (max-width:1024px){.page{padding:.75rem 1rem 2rem}.layout{flex-direction:column;gap:.75rem}.data-panel{flex:1 1 100%;max-width:100%}}.panel-header h2{margin-bottom:.2rem;font-size:1.15rem;font-weight:700}.map-card-header h2{font-size:1.25rem;margin:0;font-weight:700}.map-select{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}.map-select>.field-group{display:flex;align-items:center;gap:.5rem;margin:0}.map-select select{min-width:150px;padding:.4rem .8rem;border-radius:999px;border:1px solid var(--border-color);background:#fff;font-size:.85rem;color:#0f172a}.map-controls{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}.map-controls select{min-width:120px}.map-controls>label{font-weight:600;font-size:.8rem;color:var(--text-muted);white-space:nowrap}.label-toggle{display:inline-flex;align-items:center;gap:.35rem;font-size:.85rem;color:#0f172a;white-space:nowrap}.map-select .unit-field{display:flex;align-items:center;gap:.35rem;font-size:.75rem;color:var(--text-muted);white-space:nowrap}.map-select .unit-field label{font-weight:600;font-size:.8rem}.map-select .unit-field input{min-width:90px;padding:.3rem .6rem;border-radius:999px;border:1px solid var(--border-color);background:#fff;font-size:.85rem;color:#0f172a}.map-select .unit-field input:disabled{background:#f2f4f7;color:#9ea0a5;border-color:#dcdfe7;cursor:not-allowed}.share-title{margin:0 0 1rem;font-size:clamp(1.4rem, 2vw, 1.8rem);font-weight:700}.share-title.is-hidden{display:none}.geo-share-modal{position:fixed;inset:0;display:none;align-items:center;justify-content:center;padding:1rem;background:rgba(15,23,42,.54);z-index:2000}.geo-share-modal.is-open{display:flex}.geo-share-modal-card{width:min(520px,100%);background:#fff;border-radius:18px;padding:1.5rem;box-shadow:0 28px 60px rgba(15,23,42,.24)}.geo-share-modal-card h2{margin:0 0 .6rem;font-size:1.2rem;font-weight:700}.geo-share-modal-desc{margin:0 0 1rem;color:var(--text-muted);font-size:.92rem}.geo-share-url{width:100%;border:1px solid var(--border-color);border-radius:12px;padding:.85rem 1rem;margin-bottom:1rem;font-size:.95rem;color:#0f172a}body[data-page-kind=share]{background:#f7f8fb}body[data-page-kind=share] .page{margin-top:0}body[data-page-kind=share] .layout{display:block}body[data-page-kind=share] .data-panel,body[data-page-kind=share] .download-row,body[data-page-kind=share] .footer-links,body[data-page-kind=share] .geo-share-modal,body[data-page-kind=share] .map-card-header{display:none!important}body[data-page-kind=share] .share-title{display:block}body[data-page-kind=share] .map-card{width:100%}body[data-page-kind=share] .map-card,body[data-page-kind=share] .map-card .card{box-shadow:none}body[data-page-kind=share] .map-frame{min-height:72vh}.hub-body{background:linear-gradient(180deg,#f4f7fb 0,#eef3ff 100%)}.hub-page{max-width:1080px;margin:0 auto;padding:3rem 1.25rem 4rem}.hub-hero{margin-bottom:1.5rem}.hub-hero h1{margin:0 0 .5rem;font-size:clamp(2rem, 4vw, 3rem);font-weight:800}.hub-hero p{margin:0;max-width:56rem;color:var(--text-muted);font-size:1rem;line-height:1.7}.hub-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1rem}.hub-link{display:block;background:#fff;border:1px solid rgba(37,99,235,.12);border-radius:20px;padding:1.4rem;color:inherit;text-decoration:none;box-shadow:0 16px 40px rgba(15,23,42,.08);transition:transform 140ms ease,box-shadow 140ms ease,border-color 140ms ease}.hub-link:hover{transform:translateY(-2px);box-shadow:0 20px 48px rgba(15,23,42,.12);border-color:rgba(37,99,235,.3)}.hub-link h2{margin:0 0 .45rem;font-size:1.25rem;font-weight:700}.hub-link p{margin:0;color:var(--text-muted);line-height:1.6}#legend .legend-title{font-size:12px;font-weight:600;fill:#0f172a}#legend text{font-size:11px;fill:var(--text-muted)}#state-labels .state-label-stroke{font-size:8px;pointer-events:none;text-anchor:middle;fill:none;stroke:#ffffff;stroke-width:2px;stroke-linejoin:round}#state-labels .state-label-fill{font-size:8px;pointer-events:none;text-anchor:middle;fill:#0f172a;stroke:none}.map-selected-label{font-size:30px;font-weight:400;fill:#0f172a;pointer-events:none}.info-note{font-size:.9rem;color:var(--text-muted);background:var(--secondary-bg);padding:.75rem .9rem;border-radius:10px}.field-group{margin-bottom:1.5rem}.field-group h3{margin-bottom:.35rem;font-size:.95rem;font-weight:700}.data-tabs{margin:1.5rem 0 1rem}.data-tabs .nav-link{color:var(--text-muted);font-weight:600}.data-tabs .nav-link.active{color:var(--accent);border-bottom:2px solid var(--accent)}.button-row{display:flex;gap:.6rem;flex-wrap:wrap}.button-row.wrap{margin-bottom:.5rem}.button-row.stretch{width:100%}.button-row.stretch .btn{flex:1 1 0;justify-content:center}.download-row{margin-top:.8rem}.btn{border:none;border-radius:999px;padding:.45rem .95rem;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:.35rem;transition:all .2s ease;font-size:.85rem}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){background:var(--accent-dark)}.btn-secondary{background:#fff;color:#0f172a;border:1px solid var(--border-color)}.btn-secondary:focus-visible,.btn-secondary:hover:not(:disabled){border-color:var(--accent);color:var(--accent);background:rgba(37,99,235,.08)}.btn-tertiary{background:0 0;color:var(--text-muted);border:1px dashed var(--border-color)}.btn-tertiary:hover{border-color:var(--accent);color:var(--accent)}.full-width{width:100%}.upload-area{border:2px dashed var(--border-color);border-radius:14px;padding:1.5rem;text-align:center;background:rgba(255,255,255,.8);cursor:pointer;transition:border-color .2s ease,background .2s ease}.upload-area.dragover{border-color:var(--accent);background:rgba(37,99,235,.06)}.upload-area .title{margin-bottom:.2rem;font-weight:600}.file-input-label input{display:none}.help-text{font-size:.85rem;color:var(--text-muted);min-height:1.4em}.help-text.tone-info{color:var(--accent)}.help-text.tone-success{color:#15803d}.help-text.tone-danger{color:#dc2626}.text-muted{color:var(--text-muted);font-size:.9rem}.text-success{color:#15803d;font-size:.9rem}.small-text{font-size:.8rem}.current-status{display:flex;width:100%;border-radius:0;background:var(--secondary-bg);overflow:hidden;margin-bottom:.5rem}.status-label{background:#1d2a5b;color:#fff;padding:.2rem .75rem;font-size:.85rem}.status-value{padding:.2rem .75rem;font-weight:600;font-size:.9rem}.status-value.is-custom{color:var(--accent)}.status-value.is-sample{color:#0f172a}.data-preview{max-height:300px;overflow:auto;margin-top:.75rem}.is-hidden{display:none!important}.map-card-header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;flex-wrap:wrap;margin-bottom:30px}.map-status{margin-bottom:.75rem}.map-status.empty{visibility:hidden}.map-heading{display:flex;align-items:center;gap:.75rem}.map-heading .map-select{margin-left:auto;display:flex;align-items:center}.status-pill{font-size:.85rem;color:var(--text-muted);background:var(--secondary-bg);padding:.2rem .8rem;border-radius:999px}.status-pill.empty{background:0 0;padding:0}.map-select select{min-width:140px;margin:0;padding:.35rem .65rem;font-size:.9rem;height:2.1rem}.map-select select:disabled{opacity:.5;background-color:#f9f9f9;cursor:not-allowed}.custom-breaks-editor{display:flex;flex-direction:column;gap:.3rem;width:100%;padding:.6rem 0}.custom-breaks-editor.is-hidden{display:none!important}.custom-breaks-header{margin-bottom:.2rem}.custom-breaks-title{font-weight:700;font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted)}.custom-breaks-rows{display:flex;flex-direction:column;gap:.25rem}.custom-breaks-row{display:flex;align-items:center;gap:.4rem}.custom-breaks-row .break-swatch{width:18px;height:18px;border-radius:3px;border:1px solid #ccc;flex-shrink:0}.custom-breaks-row .break-input{width:80px;padding:.25rem .5rem;border-radius:6px;border:1px solid var(--border-color);background:var(--secondary-bg,#f2f4f7);font-size:.8rem;color:#0f172a;text-align:center;height:1.8rem}.custom-breaks-row .break-input:focus{border-color:var(--accent);outline:0;box-shadow:0 0 0 2px rgba(37,99,235,.15)}.custom-breaks-row .break-label{width:80px;text-align:center;font-size:.8rem;color:var(--text-muted)}.custom-breaks-row .break-dash{font-size:.8rem;color:var(--text-muted)}.custom-breaks-footer{display:flex;gap:.4rem;align-items:center;margin-top:.35rem}.custom-breaks-footer .break-btn{width:26px;height:26px;border-radius:50%;border:1px solid var(--border-color);background:#fff;font-size:.85rem;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;color:var(--text-muted);padding:0;line-height:1}.custom-breaks-footer .break-btn:hover{border-color:var(--accent);color:var(--accent)}.break-btn-text{padding:.3rem .8rem;border-radius:6px;border:1px solid var(--border-color);background:#fff;font-size:.8rem;cursor:pointer;color:var(--text-muted)}.break-btn-text:hover{border-color:var(--accent);color:var(--accent)}.break-btn-confirm{background:var(--accent,#3b82f6);color:#fff;border-color:var(--accent,#3b82f6);font-weight:600}.break-btn-confirm:hover{opacity:.9;color:#fff}.map-frame{position:relative;width:100%;aspect-ratio:1/1;min-height:320px;background:#fff;border-radius:14px;border:1px solid var(--border-color);overflow:hidden}#map{width:100%;height:100%}path.state{stroke:#666;stroke-width:.5}path.state:hover{stroke:#000}.btn.is-loading{position:relative;pointer-events:none}.btn.is-loading::after{content:"";width:14px;height:14px;border:2px solid rgba(255,255,255,.5);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite}.btn.btn-secondary.is-loading::after,.btn.btn-tertiary.is-loading::after{border-color:rgba(37,99,235,.3);border-top-color:var(--accent)}@keyframes spin{to{transform:rotate(360deg)}}.data-table{width:100%;border-collapse:collapse;font-size:.85rem}.data-table td,.data-table th{padding:.35rem .6rem;text-align:left;white-space:nowrap;border-bottom:1px solid var(--border-color)}.data-table tbody tr:hover{background:#f8fafc}.preview-stats p{font-size:.9rem}.toast-container{position:fixed;top:100px;right:20px;z-index:2147483647;display:flex;flex-direction:column;gap:10px;pointer-events:none}.custom-toast{background:#fff;border-left:4px solid var(--accent);border-radius:4px;padding:12px 16px;box-shadow:0 4px 12px rgba(0,0,0,.15);display:flex!important;align-items:center;gap:12px;min-width:250px;max-width:400px;opacity:0;transform:translateX(20px);animation:toast-in .3s forwards ease-out;pointer-events:auto;font-size:.9rem;color:#0f172a}.custom-toast.toast-success{border-left-color:#10b981}.custom-toast.toast-error{border-left-color:#ef4444}.custom-toast.toast-info{border-left-color:#3b82f6}.custom-toast.toast-hiding{animation:toast-out .3s forwards ease-in}.toast-icon{display:flex;align-items:center;justify-content:center;width:20px;height:20px;flex-shrink:0}.custom-toast.toast-success .toast-icon{color:#10b981}.custom-toast.toast-error .toast-icon{color:#ef4444}.custom-toast.toast-info .toast-icon{color:#3b82f6}.toast-message{flex-grow:1}@keyframes toast-in{from{opacity:0;transform:translateX(20px)}to{opacity:1;transform:translateX(0)}}@keyframes toast-out{from{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(20px)}}