:root{--blue:#286aa6;--green:#2c735f;--blue-soft:#edf5fc;--green-soft:#edf7f2;--ink:#263746;--muted:#526571;--line:#dbe5e8;--font:20px;color-scheme:light}
:root[data-font="22"]{--font:22px}
:root[data-font="24"]{--font:24px}
:root[data-font="28"]{--font:28px}
:root[data-font="32"]{--font:32px}
*{box-sizing:border-box;min-width:0}
[hidden]{display:none!important}
body{margin:0;background:#fff;color:var(--ink);font:var(--font)/1.6 system-ui,-apple-system,"Noto Sans TC",sans-serif;overflow-wrap:anywhere}
a{color:var(--blue);text-underline-offset:.18em}
:focus-visible{outline:3px solid var(--blue);outline-offset:4px}
p{margin:.25em 0 .65em}
h1,h2{line-height:1.25;margin:0 0 .45em}
h1{font-size:1.95em;color:var(--blue);font-weight:780;letter-spacing:-.035em}
h2{font-size:1.18em}
small{display:block;color:var(--muted);font-size:.76em}
button,input,select{font:inherit;color:inherit}
button,input,select{border:1px solid #bacdd7;border-radius:10px;padding:9px 12px;background:white;min-height:44px}
button{cursor:pointer}
button:hover{background:var(--blue-soft)}
button[aria-pressed=true],.search button{background:var(--blue);color:#fff;border-color:var(--blue)}
.shell{width:min(100% - 48px,1120px);margin-inline:auto}
.ribbon{height:7px;background:linear-gradient(90deg,var(--blue) 50%,var(--green) 50%)}
.toolbar,.mast,.clock,.footer-date{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.toolbar{padding-block:12px;border-bottom:1px solid var(--line)}
.font-tools,.actions,nav{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:max(14px,.72em)}
.font-tools button{min-width:44px}
.font-tools strong{margin-right:4px}
nav{gap:16px}
.mast{padding-block:20px}
.identity{display:flex;align-items:center;gap:12px;text-decoration:none;color:var(--ink)}
.identity>span{display:grid;place-items:center;width:48px;height:48px;border-radius:14px;flex:none;background:linear-gradient(135deg,var(--blue),var(--green));color:white;font-size:27px}
.identity b{font-size:1.1em}
.main{display:grid;gap:22px;padding-bottom:30px}
.main>p{margin:0}
.clock{background:var(--blue-soft);border-radius:14px;border-inline-start:4px solid var(--blue);padding:12px 16px;font-size:.85em}
.clock time,.clock span,.footer-date time,.footer-date span{display:block}
[data-clock]{color:var(--blue);font-variant-numeric:tabular-nums}
.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.weather b{color:var(--green)}
.weather{display:block;text-decoration:none;background:var(--green-soft);border:1px solid #d5e8df;border-radius:18px;padding:22px;color:var(--ink)}
.weather-top{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:8px;margin-bottom:8px}
.weather-top b{font-size:1.18em}
.weather-top span{font-size:.78em;white-space:nowrap}
.notice{padding:12px 16px;border-radius:12px;background:#fff6e8;color:#6d4b19;font-size:.84em}
.notice p{margin:3px 0}
.search{display:flex;align-items:end;gap:10px;flex-wrap:wrap}
.search label{display:grid;gap:4px;font-size:.8em}
.search label:first-child{flex:1 1 260px}
.search input{width:100%}
.home-search{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:stretch}
.home-search input{min-width:0;font-size:.8em}
.search button{font-size:.8em;flex:none;min-width:75px}
.panel,.quick>a,.quick>.recycling-card{padding:16px 19px;border:1px solid var(--line);border-radius:18px}
.panel p:last-child{margin-bottom:0}
.quick>a,.quick>.recycling-card{display:flex;align-items:center;gap:13px;text-decoration:none;background:var(--blue-soft)}
.quick>.recycling-card,.quick>a[href="/bulky"]{background:var(--green-soft);color:var(--green)}
.quick>a>span,.quick>.recycling-card>span{font-size:1.4em;flex:none}
.quick>a:hover{text-decoration:underline}
.category{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.category a{border:1px solid var(--line);border-bottom:3px solid #b8d3e9;border-radius:10px;padding:10px;text-decoration:none;font-size:.85em}
.category a:nth-child(even){border-bottom-color:#bbd9cd}
.call{display:inline-block;padding:6px 0;min-height:44px;font-weight:700;white-space:nowrap}
.count{font-weight:700;color:var(--blue)}
table{border-collapse:collapse;width:100%;font-size:.87em}
th,td{border-bottom:1px solid var(--line);padding:8px 10px;text-align:left;vertical-align:top}
th{background:var(--blue-soft)}
td:last-child{font-variant-numeric:tabular-nums}
li+li{margin-top:.45em}
footer{background:linear-gradient(100deg,var(--blue-soft),white,var(--green-soft));border-top:1px solid var(--line)}
.footer{padding-block:20px;font-size:.85em}
.footer-date{align-items:start}
.sun{margin:16px 0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;border-top:1px solid var(--line);padding-top:16px}
.sun b{display:block;color:var(--green)}
dialog{border:1px solid var(--line);border-radius:16px;width:min(440px,calc(100% - 32px));padding:24px;color:var(--ink)}
dialog::backdrop{background:#152b4280}
dialog button{float:right;min-width:44px}
.skip{position:absolute;left:12px;top:-200px;background:white;padding:8px}
.skip:focus{top:12px}
@media(max-width:640px){
 .shell{width:calc(100% - 28px)}
 .grid{grid-template-columns:minmax(0,1fr)}
 .main{gap:17px}
 .sun{grid-template-columns:minmax(0,1fr)}
 .sun>div{display:flex;gap:8px;justify-content:space-between;flex-wrap:wrap}
 .panel,.quick>a,.quick>.recycling-card,.weather{padding:14px}
 .search:has([data-village-select]){display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}
 .search:has([data-village-select]) label:first-child,.search:has([data-village-select]) button{grid-column:1/-1}
 .search:has([data-village-select]) select{width:100%;min-width:0}
 th,td{padding:6px}
}

.village-map-frame{border:1px solid var(--line);border-radius:14px}
.village-map{position:relative}
.village-map img{display:block;width:100%;height:auto}
.village-pin{position:absolute;width:min(44px,4%);height:min(44px,7.8%);transform:translate(-50%,-50%);border-radius:10px}
.village-pin:hover,.village-pin:focus-visible,.village-pin[aria-current=true]{outline:3px solid var(--blue);outline-offset:0;background:#fff2}
#contact-results{scroll-margin-top:16px}
[data-village-select]{min-width:9em}
.village-pin-白雲村{left:71.34703%;top:20.73579%}
.village-pin-玉石村{left:64.95434%;top:17.50279%}
.village-pin-德陽村{left:68.09361%;top:29.87737%}
.village-pin-大忠村{left:55.07991%;top:17.83724%}
.village-pin-大義村{left:63.29909%;top:32.66444%}
.village-pin-六結村{left:67.63699%;top:40.91416%}
.village-pin-二龍村{left:73.40183%;top:40.35674%}
.village-pin-時潮村{left:81.33562%;top:37.12375%}
.village-pin-玉田村{left:74.82877%;top:51.61650%}
.village-pin-三民村{left:63.47032%;top:40.80268%}
.village-pin-林美村{left:52.68265%;top:36.34337%}
.village-pin-白鵝村{left:60.38813%;top:48.60647%}
.village-pin-玉光村{left:67.80822%;top:54.96098%}
.village-pin-光武村{left:67.69406%;top:66.88963%}
.village-pin-吳沙村{left:60.67352%;top:59.42029%}
.village-pin-龍潭村{left:53.36758%;top:57.97101%}
.village-pin-匏崙村{left:40.18265%;top:39.79933%}
.village-pin-二結村{left:37.10046%;top:57.19064%}

[data-find-nearby]{background:var(--blue);color:white;border-color:var(--blue);font-weight:700}
[data-find-nearby]:hover{background:#215789}
[data-nearby-results]{margin-top:1em}
[data-find-nearby]{margin-top:8px}
[data-nearby-notice]{position:fixed;right:12px;bottom:12px;z-index:2;box-shadow:0 3px 12px #26374630}

.transport-bus,.transport-rail{
  margin-block:20px 0;padding-block-start:14px;border-block-start:1px solid var(--line)
}
.transport-bus > h3,.transport-rail > h3{margin:0 0 8px;font-size:1.2em}
.transport-operators{list-style:none;padding:0;margin:0 0 16px}
.transport-operators li{display:flex;flex-wrap:wrap;align-items:center;gap:0 16px;border-bottom:1px solid var(--line);margin:0}
.transport-operators strong a{display:inline-flex;align-items:center;min-height:44px}
.transport-bus .transport-operators{margin-bottom:12px}
.transport-bus .transport-operators li{column-gap:8px}
.transport-operators .call{white-space:nowrap}
.transport-station h4{margin:0 0 .35em}
.transport-station p{margin:.35em 0}
.transport-rail .transport-operators{margin-bottom:0}
.transport-rail .transport-operators li:last-child{border-bottom:0}
.transport-address{flex-basis:100%;margin:0 0 8px}
.map-address-end{white-space:nowrap;overflow-wrap:normal}
.map-pin{display:inline-block;min-width:28px;min-height:28px;text-align:center;text-decoration:none}

#taxi{margin-bottom:1em}
#taxi h3{font-size:1.35em;margin:.35em 0}
.taxi-calls{display:grid;gap:12px;margin:.5em 0}
.taxi-calls a{
  display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;
  padding:14px 16px;min-height:100px;border:1px solid #ab751e;border-radius:18px;
  background:#ffdf72;color:#38250d;text-decoration:none
}
.taxi-calls a:nth-child(2){
  grid-template-columns:auto minmax(0,1fr);background:#fff0ae;border-radius:9px 23px 23px 9px
}
.taxi-calls a:nth-child(2) .taxi-art{grid-column:1;grid-row:1;transform:scaleX(-1) rotate(-6deg)}
.taxi-calls a:nth-child(2) .taxi-copy{grid-column:2;grid-row:1;text-align:right}
.taxi-calls a:nth-child(3){align-items:end;background:#ffd35a;border-radius:23px 9px 23px 9px}
.taxi-calls a:nth-child(3) .taxi-art{transform:rotate(-8deg);margin-bottom:5px}
.taxi-calls a:nth-child(3) .taxi-copy span{
  display:table;margin-top:5px;padding:2px 8px;border-radius:6px;background:#47300f;color:#fff8dd
}
.taxi-copy strong,.taxi-copy span{display:block}
.taxi-copy strong{font-size:1.3em;line-height:1.3}
.taxi-copy span{font-variant-numeric:tabular-nums}
.taxi-calls a:focus-visible{outline:3px solid #38250d;outline-offset:3px}
.taxi-art{
  position:relative;width:clamp(84px,26vw,112px);height:30px;margin:30px 2px 10px;
  border:2px solid #4b3111;border-radius:18px 23px 8px 8px;background:#ffb800
}
.taxi-art::before{
  content:"";position:absolute;bottom:100%;left:17%;width:57%;height:22px;
  border:2px solid #4b3111;border-bottom:0;border-radius:18px 22px 0 0;
  background:linear-gradient(90deg,#fff6d3 46%,#4b3111 46% 54%,#fff6d3 54%)
}
.taxi-art::after{
  content:"";position:absolute;bottom:calc(100% + 20px);left:37%;width:21px;height:8px;
  border:2px solid #4b3111;border-radius:4px 4px 0 0;background:#fff6d3
}
.taxi-art i::before,.taxi-art i::after{
  content:"";position:absolute;bottom:-9px;left:12%;width:17px;height:17px;
  border:4px solid #4b3111;border-radius:50%;background:#fff6d3
}
.taxi-art i::after{left:auto;right:12%}
/* Compact hatchback: short nose and taller, rounded cabin. */
.taxi-calls a:nth-child(2) .taxi-art{
  width:clamp(82px,24vw,102px);height:33px;border-radius:13px 24px 12px 9px;background:#ffc72e
}
.taxi-calls a:nth-child(2) .taxi-art::before{
  left:11%;width:69%;height:25px;border-radius:14px 27px 0 0
}
.taxi-calls a:nth-child(2) .taxi-art::after{bottom:calc(100% + 23px)}
/* Van: square cabin, three windows and a lower front corner. */
.taxi-calls a:nth-child(3) .taxi-art{
  height:32px;border-radius:5px 18px 8px 7px;background:#ffad13
}
.taxi-calls a:nth-child(3) .taxi-art::before{
  left:4%;width:79%;height:24px;border-radius:7px 15px 0 0;
  background:linear-gradient(90deg,#fff6d3 29%,#4b3111 29% 34%,#fff6d3 34% 63%,#4b3111 63% 68%,#fff6d3 68%)
}
.taxi-calls a:nth-child(3) .taxi-art::after{bottom:calc(100% + 22px);left:24%}

.recycling-today{background:var(--blue-soft)}
.recycling-items{font-size:1.2em;font-weight:700;padding-inline-start:1.35em}
.recycling-week summary{cursor:pointer;font-weight:700;padding-block:8px}
.recycling-chart{display:block;width:100%;max-width:660px;height:auto;margin:16px auto 0}

.recycling-preview{margin-top:4px}
.recycling-preview summary{cursor:pointer;font-weight:700;padding-block:8px}
.recycling-preview a{color:inherit}
.recycling-preview .recycling-items{margin:4px 0 8px;font-size:1.05em;line-height:1.45}
.recycling-preview .recycling-items li+li{margin-top:.15em}
.recycling-preview .recycling-rest{display:block;color:#a51f27;font-size:1.25em}

.recycling-week .recycling-rest{color:#a51f27}
.recycling-week-day{padding:8px 12px;border-inline-start:4px solid transparent}
.recycling-week-day[aria-current="date"]{background:#fff0bf;border-inline-start-color:#a96905;border-radius:8px}
.recycling-today-label{display:inline-block;padding:0 .45em;background:#6c4306;color:white;border-radius:6px}

.editor-form { display:grid; gap:1rem; max-width:48rem; }
.editor-form label { display:grid; gap:.35rem; }
.editor-form input, .editor-form textarea { width:100%; min-width:0; padding:.55rem; font:inherit; }
.editor-form + ul, [data-created-link], .results li { overflow-wrap:anywhere; }

.district-list,.district-mobile-help{display:none}
@media(max-width:640px){
 .village-map-frame{aspect-ratio:2.25;overflow:hidden;margin-inline:-8px}
 .village-map{width:111.111%;left:-5.5556%}
 .district-mobile-help{display:revert}
 .district-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-block:12px}
 .district-card{padding:10px;border:1px solid var(--line);border-radius:12px;background:var(--district-color)}
 .district-card-1{--district-color:#e6f3fd}
 .district-card-2{--district-color:#e8f6ec}
 .district-card-3{--district-color:#fff3d7}
 .district-card-4{--district-color:#f0eafb}
 .district-card h3{font-size:1em;margin:0 0 4px}
 .district-card ul{list-style:none;padding:0;margin:0}
 .district-card li+li{margin:0}
 .district-card a{display:flex;align-items:center;min-height:44px;font-weight:700}
 .district-card a[aria-current=true]{color:var(--ink);background:#fff;border-radius:6px}
}

.mobile-tools{display:none}
.clock{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:0 12px}
.clock time{grid-column:1}
.clock>span{grid-column:1}
.clock>b{grid-column:2;grid-row:1/3;align-self:center}
.clock .date-prefix,.clock .clock-prefix,.clock [data-date],.clock [data-clock],.footer-date [data-date],.footer-date [data-clock]{display:inline}
@media(max-width:640px){
 .toolbar{display:none}
 .mast{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px;padding-block:10px}
 .mast nav{grid-column:1/-1;gap:4px 14px}
 .mast nav a{display:flex;align-items:center;min-height:44px}
 .identity{gap:6px}
 .identity>span{width:34px;height:34px;border-radius:10px;font-size:20px}
 .identity b{font-size:.85em}
 .identity small{display:none}
 .mobile-tools{display:flex;align-items:center;gap:5px;font-size:max(14px,.7em)}
 .mobile-tools details{position:relative}
 .mobile-tools summary{display:grid;place-items:center;list-style:none;min-height:44px;min-width:44px;padding:4px 6px;border:1px solid #bacdd7;border-radius:10px;cursor:pointer}
 .mobile-tools summary::-webkit-details-marker{display:none}
 .mobile-tools>button{min-width:44px;padding:4px 6px}
 .mobile-tools .font-tools{position:absolute;z-index:2;inset-inline-end:0;top:calc(100% + 4px);width:max-content;display:grid;grid-template-columns:repeat(5,44px);gap:4px;background:#fff;padding:6px;border:1px solid var(--line);border-radius:10px;transform:translateX(min(18px,4vw))}
 .mobile-tools .font-tools button{padding:4px}
 .clock{display:flex;justify-content:flex-start;gap:0 12px;padding:7px 10px;line-height:1.45}
 .clock time{flex-basis:100%}
 .clock .date-prefix,.clock .clock-prefix{display:none}
 .clock>b{white-space:nowrap}
}

@media(max-width:640px){
 .transport-operators li{column-gap:8px}
}

.medical-group{border-top:1px solid var(--line)}
.medical-group summary{cursor:pointer;padding:10px 0;font-weight:700}
.medical-list{list-style:none;padding:0;margin:0 0 12px}
.medical-list li{padding:8px 0}
.medical-list li + li{border-top:1px solid var(--line)}
