:root{color:#183b4e;font-synthesis:none;text-rendering:optimizelegibility;--page:#faf8f4;--ink:#183b4e;--muted:#6f7c82;--subtle:#879398;--border:#e6e5e1;--panel:#fff;--brand:#167d8d;--brand-dark:#126777;--brand-soft:#e6f4f5;--green:#3a8f6d;--green-soft:#edf7f1;--orange:#f29f67;--orange-soft:#fff1e8;--gray:#7c8c91;--gray-soft:#eef2f1;--shadow:0 10px 28px #183b4e14;background:#faf8f4;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans TC,sans-serif}*{box-sizing:border-box}body{background:var(--page);min-width:320px;min-height:100vh;margin:0}button,input,select,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}a{color:inherit}.app-shell{min-height:100vh}.site-header,main{width:min(1000px,100% - 48px);margin:0 auto}.site-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;min-height:68px;display:flex}.brand{align-items:center;gap:11px;text-decoration:none;display:inline-flex}.brand-mark{width:38px;height:38px;color:var(--brand);background:var(--brand-soft);border-radius:11px;place-items:center;display:grid}.brand strong{letter-spacing:.01em;font-size:16px}.button{border:0;border-radius:9px;min-height:40px;padding:0 16px;font-weight:700;transition:all .18s}.button--outline{color:var(--brand-dark);background:0 0;border:1px solid #b8d5d5}.button--outline:hover{background:var(--brand-soft)}.button--primary{color:#fff;background:var(--brand)}.button--primary:hover{background:var(--brand-dark)}.button--full{width:100%}.button--text{color:var(--brand-dark);background:0 0}.button--text:hover{background:var(--brand-soft)}.icon-button{border:1px solid var(--border);width:36px;height:36px;color:var(--muted);background:#fff;border-radius:9px;place-items:center;display:grid}.icon-button:hover{color:var(--brand-dark);border-color:#a8cece}.icon-button--subtle{background:0 0;border:0;width:28px;height:28px}.intro-section{padding:31px 0 22px}.eyebrow{color:var(--brand);letter-spacing:.12em;text-transform:uppercase;margin:0 0 7px;font-size:11px;font-weight:800}h1,h2,h3,p{margin-top:0}h1{letter-spacing:-.02em;margin-bottom:0;font-size:clamp(27px,3.2vw,34px);line-height:1.25}.intro-description{color:var(--muted);margin:0;font-size:17px;line-height:1.5}.search-toolbar{border-bottom:1px solid var(--border);padding-bottom:23px}.search-row{align-items:center;gap:12px;display:flex}.search-field{min-width:0;height:48px;color:var(--subtle);border:1px solid var(--border);background:#fff;border-radius:8px;flex:1;align-items:center;gap:10px;padding:0 12px;display:flex}.search-field:focus-within{border-color:#7bb5b5;box-shadow:0 0 0 3px #0f7f831a}.search-field input{width:100%;min-width:0;color:var(--ink);background:0 0;border:0;outline:0}.search-field input::placeholder{color:#9aa6a8}.search-field input::-webkit-search-cancel-button{display:none}.filter-row{justify-content:space-between;align-items:center;gap:16px;margin-top:15px;display:flex}.region-filter{flex-wrap:wrap;gap:7px;display:flex}.filter-chip{color:var(--muted);background:0 0;border:1px solid #0000;border-radius:8px;padding:7px 13px;font-size:13px}.filter-chip:hover{color:var(--brand-dark);border-color:#a8cece}.filter-chip.is-active{color:var(--brand-dark);background:var(--brand-soft);border-color:#85bcbc;font-weight:700}.filter-hint{color:var(--subtle);white-space:nowrap;font-size:12px}.results-summary{margin:13px 2px 0}.data-notice{color:var(--subtle);align-items:center;gap:5px;font-size:12px;display:inline-flex}.data-notice--home{margin:8px 2px 0;line-height:1.5}.data-notice svg{color:var(--brand);flex:none}.location-list{padding:27px 0 48px}.list-heading{justify-content:space-between;align-items:end;display:flex}.location-card-list{grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;display:grid}.location-card{width:100%;min-width:0;color:var(--ink);border:1px solid var(--border);background:var(--panel);box-shadow:var(--shadow);text-align:left;border-radius:16px;flex-direction:column;padding:0;transition:transform .2s,box-shadow .2s;display:flex;overflow:hidden}.location-card:hover{transform:translateY(-2px);box-shadow:0 15px 34px #183b4e21}.location-card:focus-visible{outline-offset:3px;outline:3px solid #167d8d59}.location-card-content{flex-direction:column;flex:1;min-width:0;padding:16px 17px 17px;display:flex}.card-heading{margin-bottom:12px;display:block}.card-heading h3{margin:0;font-size:17px;line-height:1.4}.location-place{color:var(--muted);margin:5px 0 0;font-size:13px}.status-badge{color:var(--muted);align-items:center;gap:7px;padding:0;font-size:13px;font-weight:700;display:inline-flex}.status-dot{background:var(--gray);border-radius:50%;flex:none;width:7px;height:7px}.status-badge--not-required{color:var(--green)}.status-badge--not-required .status-dot{background:var(--green)}.status-badge--conditional{color:var(--orange)}.status-badge--conditional .status-dot{background:var(--orange)}.status-badge--unknown{color:var(--gray)}.card-meta{color:var(--subtle);align-items:center;gap:8px;margin-top:auto;padding-top:16px;font-size:11px;display:flex}.card-meta>span:first-child{align-items:center;gap:5px;display:inline-flex}.card-meta svg{color:#8ca0a2}.is-stale{color:var(--orange)!important}.source-link{color:var(--brand-dark);margin-left:7px;font-size:11px;font-weight:700;text-decoration:none;display:inline-block}.source-link:hover{text-decoration:underline}.tag-list{flex-wrap:wrap;gap:5px;display:flex}.restriction-tag{color:#59686b;background:#fafcfc;border:1px solid #e0e7e8;border-radius:5px;padding:4px 7px;font-size:11px;display:inline-flex}.empty-state{min-height:220px;color:var(--subtle);text-align:center;border:1px dashed #cfdadb;border-radius:10px;flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:30px;display:flex}.empty-state svg{color:#9db0b1}.empty-state strong{color:var(--muted);font-size:14px}.empty-state p{margin:0;font-size:12px}.status-state{min-height:220px;color:var(--subtle);border:1px solid var(--border);background:var(--panel);text-align:center;border-radius:10px;flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:30px;display:flex}.status-state strong{color:var(--muted);font-size:14px}.status-state p{margin:0;font-size:12px}.status-state--error{color:#9a6331;background:#fffaf3;border-color:#efd8be}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.detail-backdrop{z-index:20;background:#15252752;justify-content:flex-end;display:flex;position:fixed;inset:0}.location-detail--drawer,.report-modal{background:#fff;flex-direction:column;width:min(450px,100%);height:100%;animation:.2s ease-out slide-in;display:flex;box-shadow:-8px 0 28px #182c2d24}.location-detail--drawer{position:relative}@keyframes slide-in{0%{opacity:.5;transform:translate(20px)}to{opacity:1;transform:translate(0)}}.detail-header{border-bottom:1px solid var(--border);justify-content:space-between;gap:18px;padding:25px 25px 18px;display:flex}.detail-header h2{margin:0 0 8px;font-size:23px;line-height:1.35}.detail-close-button{z-index:1;background:#fffffff0;position:absolute;top:16px;right:18px}.detail-scroll-content{flex:1;padding:23px 25px;overflow-y:auto}.detail-heading h2{margin:0 0 5px;font-size:23px;line-height:1.35}.detail-place{color:var(--muted);margin:0 0 12px;font-size:14px}.detail-heading .status-badge{margin-bottom:1px}.detail-info-section{margin-top:20px}.info-list{border-top:1px solid var(--border)}.info-row{border-bottom:1px solid var(--border);align-items:flex-start;gap:10px;min-height:44px;padding:8px 0;display:flex}.info-row-icon{color:var(--brand);flex:0 0 20px;margin-top:4px}.info-row-content{min-width:0;min-height:27px;color:var(--ink);overflow-wrap:anywhere;flex:1;align-items:center;font-size:14px;font-weight:700;line-height:1.55;display:flex}.info-link{color:var(--brand-dark);align-items:center;gap:5px;text-decoration:none;display:inline-flex}.info-link:hover{text-decoration:underline}.copy-control{flex:none;align-items:center;display:inline-flex;position:relative}.copy-button{width:40px;height:40px;color:var(--subtle);background:0 0;border:0;border-radius:8px;place-items:center;padding:0;display:grid}.copy-button:hover,.copy-button:focus-visible{color:var(--brand-dark);background:var(--brand-soft)}.copy-button.is-copied{color:var(--green)}.copy-feedback{color:var(--green);background:var(--green-soft);white-space:nowrap;border-radius:5px;padding:4px 7px;font-size:11px;font-weight:700;line-height:1.2;position:absolute;top:50%;right:calc(100% + 6px);transform:translateY(-50%)}.copy-feedback--error{color:#a34e38;background:#fff6f2}.detail-section{border-top:1px solid var(--border);padding:18px 0}.detail-section h3{margin:0 0 11px;font-size:14px}.muted-text{color:var(--subtle);margin:0;font-size:13px}.detail-verified{color:var(--ink);margin:0;font-size:14px;font-weight:700}.source-card{color:var(--muted);background:#f6f8f6;border-radius:11px;margin-top:20px;padding:14px}.source-card-heading{color:var(--subtle);align-items:center;gap:7px;margin-bottom:9px;display:flex}.source-card-heading h3{margin:0;font-size:12px}.source-card-link,.source-card-name{color:var(--brand-dark);align-items:center;gap:5px;font-size:13px;font-weight:700;text-decoration:none;display:inline-flex}.source-card-link:hover,.source-card-secondary:hover{text-decoration:underline}.source-card-secondary{color:var(--muted);align-items:center;gap:4px;margin-top:7px;font-size:11px;text-decoration:none;display:inline-flex}.detail-note{color:var(--muted);border-top:1px solid var(--border);align-items:flex-start;gap:8px;margin-top:20px;padding:14px 0 0;font-size:12px;line-height:1.55;display:flex}.detail-note svg{color:#c88b37;flex:none;margin-top:1px}.detail-note p{margin:0}.external-map-link{color:var(--brand-dark);align-items:center;gap:6px;margin-top:22px;font-size:13px;font-weight:700;text-decoration:none;display:inline-flex}.external-map-link:hover{text-decoration:underline}.detail-footer{border-top:1px solid var(--border);justify-content:space-between;align-items:center;gap:10px;padding:16px 25px;display:flex}.report-modal{border-radius:12px;align-self:center;width:min(580px,100% - 32px);height:auto;max-height:calc(100% - 32px);margin:auto;animation:.2s ease-out modal-in}@keyframes modal-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.report-modal .detail-header{padding:21px 24px 16px}.report-modal .detail-header h2{font-size:21px}.report-mode-tabs{background:#f4f7f7;border-radius:9px;gap:5px;margin:18px 24px 0;padding:4px;display:flex}.report-mode-tabs button{min-height:37px;color:var(--muted);background:0 0;border:0;border-radius:6px;flex:1;padding:0 10px;font-size:12px;font-weight:700}.report-mode-tabs button.is-active{color:var(--brand-dark);background:#fff;box-shadow:0 2px 6px #253f421a}.report-form{padding:20px 24px 24px;overflow-y:auto}.report-context,.report-location-summary{background:#f3f8f8;border-radius:8px;flex-direction:column;gap:4px;margin:18px 24px 0;padding:11px 12px;font-size:12px;display:flex}.report-context strong,.report-location-summary strong{color:var(--ink)}.report-context span,.report-location-summary span{color:var(--muted)}.report-form fieldset{border:0;padding:0}.report-form legend,.form-field>span{color:var(--ink);margin-bottom:8px;font-size:12px;font-weight:800;display:block}.report-type-grid{grid-template-columns:repeat(4,1fr);gap:7px;margin-bottom:20px;display:grid}.radio-card{min-height:43px;color:var(--muted);border:1px solid var(--border);cursor:pointer;border-radius:7px;justify-content:center;align-items:center;padding:0 7px;font-size:12px;display:flex}.radio-card input{opacity:0;position:absolute}.radio-card.is-selected{color:var(--brand-dark);background:var(--brand-soft);border-color:#8bbebe;font-weight:700}.form-grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}.form-field{margin-bottom:15px;display:block}.form-field input,.form-field select,.form-field textarea{width:100%;color:var(--ink);border:1px solid var(--border);background:#fbfcfc;border-radius:7px;outline:0;padding:10px 11px;font-size:13px}.form-field textarea{resize:vertical;line-height:1.5}.form-field input:focus,.form-field select:focus,.form-field textarea:focus{border-color:#7bb5b5;box-shadow:0 0 0 3px #0f7f831a}.form-field input:disabled,.form-field select:disabled,.form-field textarea:disabled{cursor:not-allowed;opacity:.65}.form-actions{justify-content:flex-end;gap:8px;margin-top:7px;display:flex}.import-guide{color:var(--muted);background:#f5faf9;border:1px solid #dbe9e8;border-radius:8px;margin-bottom:18px;padding:13px;font-size:12px;line-height:1.6}.import-guide h3{color:var(--ink);margin:0 0 6px;font-size:13px}.import-guide p{margin:0 0 6px}.import-guide p:last-child{margin-bottom:0}.import-guide-limit{color:var(--brand-dark);font-weight:700}.import-guide details{margin-top:9px}.import-guide summary{color:var(--brand-dark);cursor:pointer;font-weight:700}.import-guide-details{margin-top:8px}.import-guide code{color:var(--brand-dark);background:#e6f5f4;border-radius:4px;padding:1px 4px;font-size:11px}.import-code-example{white-space:pre;margin-top:8px;padding:9px;display:block;overflow-x:auto}.file-picker{min-height:76px;color:var(--brand-dark);cursor:pointer;background:#fbfefe;border:1px dashed #9bc7c7;border-radius:8px;justify-content:center;align-items:center;padding:12px;font-size:13px;font-weight:800;display:flex}.file-picker:hover{background:var(--brand-soft)}.file-picker input{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.selected-file{color:var(--ink);word-break:break-all;margin:0 0 8px;font-size:12px;font-weight:700}.import-preview{color:var(--green);background:var(--green-soft);border:1px solid #bce1cc;border-radius:8px;margin:0 0 17px;padding:11px 12px;font-size:12px;line-height:1.5}.import-preview p{color:var(--muted);margin:4px 0 0}.import-preview--error{color:#a34e38;background:#fff6f2;border-color:#f0d1c4}.import-error-list{color:#a34e38;margin:7px 0 0;padding-left:17px}.import-error-list li+li{margin-top:3px}.restriction-fieldset{border:0;margin:0 0 15px;padding:0}.restriction-fieldset legend{color:var(--ink);margin-bottom:8px;font-size:12px;font-weight:800;display:block}.restriction-checkbox-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.checkbox-label{color:var(--muted);align-items:center;gap:7px;font-size:12px;display:flex}.checkbox-label input{accent-color:var(--brand)}.restriction-other-input{width:100%;color:var(--ink);border:1px solid var(--border);background:#fbfcfc;border-radius:7px;outline:0;margin-top:9px;padding:9px 10px;font-size:13px}.restriction-other-input:focus{border-color:#7bb5b5;box-shadow:0 0 0 3px #0f7f831a}.turnstile-field{min-height:65px;margin:2px 0 14px}.form-hint{color:var(--subtle);margin:0 0 14px;font-size:11px}.form-error{color:#b4583b;margin:0 0 13px;font-size:12px;line-height:1.5}.report-success{text-align:center;flex-direction:column;align-items:center;gap:10px;padding:52px 25px;display:flex}.success-icon{width:58px;height:58px;color:var(--green);background:var(--green-soft);border-radius:50%;place-items:center;display:grid}.report-success h2{margin:5px 0 0;font-size:21px}.report-success p{color:var(--muted);margin:0 0 13px;font-size:13px}.admin-page{width:min(1180px,100% - 48px);min-height:100vh;margin:0 auto;padding:34px 0 54px}.admin-page--login{align-content:center;place-items:center;gap:18px;display:grid}.admin-back-link{color:var(--brand-dark);justify-self:center;font-size:13px;font-weight:700;text-decoration:none}.admin-back-link:hover{text-decoration:underline}.admin-login-card{border:1px solid var(--border);background:var(--panel);width:min(400px,100%);box-shadow:var(--shadow);border-radius:12px;padding:28px}.admin-login-card h1{margin:0 0 8px;font-size:25px}.admin-login-card>p:not(.eyebrow){color:var(--muted);margin:0 0 23px;font-size:13px;line-height:1.6}.admin-header{justify-content:space-between;align-items:end;gap:18px;margin-bottom:27px;display:flex}.admin-header h1{margin:0;font-size:28px}.admin-header-actions{align-items:center;gap:6px;display:flex}.admin-page .button{justify-content:center;align-items:center;gap:6px;display:inline-flex}.admin-error{color:#a34e38;background:#fff6f2;border:1px solid #f0d1c4;border-radius:8px;margin-bottom:16px;padding:11px 13px;font-size:13px}.admin-tabs{border:1px solid var(--border);background:#f4f7f7;border-radius:9px;gap:6px;margin-bottom:14px;padding:4px;display:flex}.admin-tabs button{min-height:38px;color:var(--muted);background:0 0;border:0;border-radius:6px;padding:0 14px;font-size:13px;font-weight:700}.admin-tabs button.is-active{color:var(--brand-dark);background:#fff;box-shadow:0 2px 6px #253f421a}.admin-tabs button span{background:var(--gray-soft);border-radius:999px;min-width:20px;margin-left:4px;padding:2px 5px;font-size:11px;display:inline-grid}.admin-content{grid-template-columns:minmax(0,1fr) minmax(390px,.92fr);align-items:start;gap:14px;display:grid}.admin-list-panel,.admin-detail-panel{border:1px solid var(--border);background:var(--panel);min-width:0;box-shadow:var(--shadow);border-radius:11px}.admin-list-panel{min-height:380px;overflow:hidden}.admin-submission-list{flex-direction:column;display:flex}.admin-submission-row{width:100%;color:var(--ink);border:0;border-bottom:1px solid var(--border);text-align:left;background:#fff;justify-content:space-between;align-items:center;gap:16px;padding:16px 18px;display:flex}.admin-submission-row:last-child{border-bottom:0}.admin-submission-row:hover,.admin-submission-row.is-selected{background:#f2f8f8}.admin-submission-row.is-selected{box-shadow:inset 3px 0 var(--brand)}.admin-submission-row-main{flex-direction:column;gap:5px;min-width:0;display:flex}.admin-submission-row-main strong{text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.admin-submission-row-main small,.admin-submission-row-meta{color:var(--muted);font-size:11px}.admin-submission-row-meta{flex:none}.admin-empty{min-height:380px;color:var(--subtle);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:25px;font-size:13px;display:flex}.admin-empty strong{color:var(--muted)}.spin{animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.admin-detail-panel{padding:23px}.admin-detail-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:start;gap:12px;padding-bottom:17px;display:flex}.admin-detail-header h2{margin:0;font-size:20px;line-height:1.4}.admin-status{border-radius:6px;flex:none;padding:5px 8px;font-size:11px;font-weight:800}.admin-status--pending{color:var(--orange);background:var(--orange-soft)}.admin-status--approved{color:var(--green);background:var(--green-soft)}.admin-status--rejected{color:var(--gray);background:var(--gray-soft)}.admin-detail-grid{grid-template-columns:1fr 1fr;gap:10px;margin:18px 0 0;display:grid}.admin-detail-grid div{border:1px solid var(--border);background:#fbfcfc;border-radius:7px;min-width:0;padding:11px}.admin-detail-grid dt{color:var(--subtle);font-size:10px}.admin-detail-grid dd{color:var(--ink);word-break:break-word;margin:5px 0 0;font-size:12px;line-height:1.5}.admin-source-link{color:var(--brand-dark);align-items:center;gap:5px;margin-top:14px;font-size:12px;font-weight:700;text-decoration:none;display:inline-flex}.admin-source-link:hover{text-decoration:underline}.admin-detail-section{padding:16px 0 0}.admin-detail-section h3{color:var(--ink);margin:0 0 9px;font-size:13px}.admin-notes{color:var(--muted);white-space:pre-wrap;margin:0;font-size:12px;line-height:1.6}.admin-contributor{color:var(--subtle);margin:18px 0 0;font-size:11px}.admin-action-row{border-top:1px solid var(--border);justify-content:flex-end;gap:8px;margin-top:20px;padding-top:17px;display:flex}.admin-action-row .button--text{color:#a34e38;align-items:center;gap:5px;display:inline-flex}.admin-empty--detail{border:1px solid var(--border);background:var(--panel);border-radius:11px;min-height:380px}@media (width<=880px){.location-card-list{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=680px){.site-header,main{width:calc(100% - 28px)}.site-header{min-height:66px}.brand-mark{border-radius:9px;width:34px;height:34px}.brand strong{font-size:14px}.button--outline{min-height:36px;padding:0 12px;font-size:12px}.intro-section{padding:27px 0 18px}.intro-description{font-size:14px}.search-toolbar{padding-bottom:18px}.search-row{display:block}.search-field{height:44px}.filter-row{margin-top:11px;display:block}.region-filter{scrollbar-width:none;flex-wrap:nowrap;margin:0 -2px;padding:2px;overflow-x:auto}.region-filter::-webkit-scrollbar{display:none}.filter-chip{flex:none;padding:7px 12px}.results-summary{margin-top:11px}.data-notice--home{align-items:flex-start;font-size:11px}.location-card-list{grid-template-columns:1fr;gap:14px}.location-card-content{padding:14px 15px 15px}.card-heading h3{font-size:15px}.location-place,.status-badge{font-size:12px}.card-meta{margin-top:13px;font-size:10px}.location-detail--drawer{border-radius:15px 15px 0 0;align-self:flex-end;width:100%;height:min(86vh,700px);animation:.2s ease-out sheet-in}@keyframes sheet-in{0%{opacity:.5;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.detail-header{padding:20px 18px 15px}.detail-close-button{top:13px;right:14px}.detail-scroll-content{padding:20px 18px}.detail-footer{padding:13px 18px}.report-modal{border-radius:12px;width:calc(100% - 20px);max-height:calc(100% - 20px)}.report-modal .detail-header{padding:18px 18px 14px}.report-mode-tabs{margin-left:18px;margin-right:18px}.report-form{padding:17px 18px 20px}.report-context,.report-location-summary{margin-left:18px;margin-right:18px}.report-type-grid{grid-template-columns:repeat(2,1fr)}.admin-page{width:calc(100% - 28px);padding:22px 0 35px}.admin-header{flex-direction:column;align-items:flex-start;margin-bottom:18px}.admin-header h1{font-size:24px}.admin-header-actions{justify-content:space-between;width:100%}.admin-tabs{overflow-x:auto}.admin-tabs button{flex:none}.admin-content{grid-template-columns:1fr}.admin-list-panel,.admin-empty--detail{min-height:0}.admin-empty{min-height:170px}.admin-detail-panel{padding:18px}.admin-detail-grid{grid-template-columns:1fr}.admin-action-row{background:#fffffff5;margin:20px -18px -18px;padding:12px 18px;position:sticky;bottom:0}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}
