:root{--paper:#f7f5ef;--ink:#303e37;--muted:#697269;--line:#dedfd4;--green:#435b48;--rust:#9c6545}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"PingFang TC","Noto Sans TC",sans-serif;line-height:1.7}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer}a{color:inherit}header,main,footer{max-width:1160px;margin:auto}header{display:flex;align-items:center;justify-content:space-between;padding:25px 32px;border-bottom:1px solid var(--line)}.brand{text-decoration:none;font-weight:650;letter-spacing:1px;font-size:18px}.mark{display:inline-flex;align-items:center;justify-content:center;background:var(--green);color:var(--paper);width:32px;height:32px;margin-right:7px}.edition{font-size:11px;font-weight:400;color:var(--muted);margin-left:20px}.header-note{color:var(--muted);font-size:12px}main{padding:0 32px}.intro{display:grid;grid-template-columns:1.2fr 1fr;align-items:center;padding:55px 0 45px;gap:40px}.eyebrow{font-size:10px;letter-spacing:2px;color:var(--rust);margin:0 0 20px}h1{font-family:"Songti TC","Noto Serif TC",serif;font-size:46px;font-weight:500;line-height:1.4;letter-spacing:3px;margin:0 0 20px}.lead{font-size:14px;color:var(--muted);margin:0}.drawing{color:#7b856a;padding:8px 28px 0}.drawing svg{width:100%;display:block}.drawing span{display:block;text-align:right;font-size:11px;letter-spacing:2px;margin-top:12px}.tabs{display:flex;border-bottom:1px solid var(--line);gap:32px}.tabs button{background:none;border:0;border-bottom:3px solid transparent;padding:16px 2px;color:var(--muted);font-size:17px}.tabs button[aria-selected=true]{color:var(--green);border-bottom-color:var(--green);font-weight:600}.tabs span{display:inline-block;margin-left:8px;font-size:11px;border-radius:20px;background:#e9eadd;padding:0 7px}form{padding:26px 0 24px;border-bottom:1px solid var(--line)}label{display:flex;flex-direction:column;font-size:12px;color:var(--muted);gap:7px}input,select{width:100%;color:var(--ink);border:1px solid #d7d9ce;background:#fdfcf8;border-radius:5px;min-height:46px;padding:10px 13px;font-size:14px}input:focus,select:focus,button:focus-visible,a:focus-visible{outline:2px solid var(--rust);outline-offset:3px}input::placeholder{color:#878c81}.filter-row{display:grid;grid-template-columns:repeat(4,1fr) auto;gap:16px;align-items:end;margin-top:17px}.reset{height:46px;border:0;background:none;color:var(--green);padding:10px;font-size:13px}.result-heading{display:flex;justify-content:space-between;align-items:center;margin-top:30px}h2{font-size:19px;margin:0;font-weight:550;letter-spacing:1px}#count{font-size:12px;color:var(--muted)}.note{font-size:11px;color:var(--muted);margin:8px 0 20px}.cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.card{background:#fffefa;border:1px solid var(--line);border-radius:7px;padding:25px;display:flex;flex-direction:column;min-width:0;transition:border-color .2s}.card:hover{border-color:#99a38e}.card-top{display:flex;justify-content:space-between;align-items:center;gap:8px}.category-tag{font-size:11px;color:var(--muted);letter-spacing:1px}.badge{font-size:11px;color:#8b5939;background:#f4e9dc;padding:3px 10px;border-radius:3px;white-space:nowrap}.badge.active{color:#3c624b;background:#e8eee3}.badge.past{color:#6e736a;background:#eeeee8}.architect{font-size:11px;color:var(--rust);letter-spacing:1px;margin:24px 0 6px}h3{font-family:"Songti TC","Noto Serif TC",serif;font-size:22px;line-height:1.55;font-weight:600;margin:0 0 16px;letter-spacing:.5px}.date{font-size:12px;font-variant-numeric:tabular-nums;margin:0 0 4px}.location{font-size:12px;color:var(--muted);margin:0}.summary{font-size:13px;line-height:1.9;margin:18px 0;color:#576156}.visit{background:#f5f5ee;padding:12px 14px;margin:auto 0 18px;font-size:11px}.visit strong{font-weight:600;color:var(--green)}.visit p{margin:3px 0 0;color:var(--muted);line-height:1.8}.source{font-size:12px;color:var(--green);text-decoration:none;display:block;padding-top:13px;border-top:1px solid var(--line)}.source>span{float:right}.source:hover{text-decoration:underline}.source small{display:block;font-size:10px;color:var(--muted);overflow-wrap:anywhere;margin-top:4px}.empty{grid-column:1/-1;text-align:center;padding:55px 15px;border:1px dashed var(--line);border-radius:6px}.empty>span{font-size:38px;color:var(--muted)}.empty h3{margin:8px}.empty p{font-size:13px;color:var(--muted)}.empty button{border:1px solid var(--green);background:transparent;color:var(--green);border-radius:4px;padding:8px 18px}.data-note{margin:45px 0 40px;border-left:2px solid #a5ac93;padding:0 18px;color:var(--muted);font-size:11px;max-width:760px}.data-note>span{font-size:12px;color:var(--green)}.data-note p{margin:7px 0}footer{border-top:1px solid var(--line);padding:23px 32px;display:flex;justify-content:space-between;font-size:11px;color:var(--muted)}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}@media(max-width:700px){header{padding:18px 20px}.edition,.header-note{display:none}main{padding:0 20px}.intro{padding:36px 0 30px;gap:0;grid-template-columns:1fr}.eyebrow{font-size:9px;letter-spacing:1px}h1{font-size:35px;letter-spacing:2px}.lead{font-size:13px}.drawing{display:none}.tabs{gap:28px}.filter-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.reset{grid-column:1/-1;justify-self:end;height:34px;padding:3px 0}form{padding-bottom:17px}.cards{grid-template-columns:1fr}.card{padding:21px}h3{font-size:21px}.note{font-size:10px}.data-note{margin-top:30px}footer{padding:20px;gap:15px}footer span:last-child{font-size:10px}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}

.notice{font-size:12px;line-height:1.9;background:#faf0df;border-left:3px solid #a66b38;padding:12px;color:#79512d}.notice a{display:inline-block;text-underline-offset:3px}
[hidden]{display:none!important}.result-tools{display:flex;gap:18px;align-items:center}.view-switch{display:flex;border:1px solid #c7cdbf;border-radius:5px;overflow:hidden}.view-switch button{border:0;background:transparent;padding:7px 13px;font-size:12px;color:var(--green)}.view-switch button[aria-pressed=true]{background:var(--green);color:white}.verification{font-size:11px;border-top:1px solid var(--line);margin-top:12px;padding-top:10px;color:var(--muted)}.verification summary{cursor:pointer}.verification p{margin:7px 0}.designer-notes{font-size:11px;color:var(--muted);border-left:2px solid var(--line);padding-left:10px}.map-toolbar{display:flex;justify-content:space-between;align-items:center;font-size:12px}.map-toolbar button{border:1px solid #c7cdbf;background:#fffefa;padding:8px 13px;border-radius:4px;color:var(--green)}#map{height:480px;border:1px solid var(--line);border-radius:7px;z-index:0;background:#e9ecdf}.map-skip{display:inline-block;font-size:11px;margin:0 0 10px;color:var(--green)}.architecture-pin{background:none;border:0}.architecture-pin span{display:flex;justify-content:center;align-items:center;width:34px;height:34px;color:#fff;background:var(--green);border:2px solid white;border-radius:50% 50% 50% 0;transform:rotate(-10deg);box-shadow:0 2px 7px #0004;font-size:12px;font-weight:bold}.map-popup{font-family:-apple-system,BlinkMacSystemFont,"PingFang TC",sans-serif;line-height:1.7}.map-popup strong{font-size:15px}.map-popup p{font-size:12px;margin:7px 0!important}.map-popup a{color:var(--green)}.map-source{font-size:10px!important}.map-locations{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;padding:0;list-style:none;margin:20px 0}.map-locations li{padding:15px;border:1px solid var(--line);border-radius:5px;font-size:11px;background:#fffefa}.map-place{display:flex;align-items:center;gap:8px;text-align:left;border:0;background:none;font-weight:600;color:var(--ink);padding:0;font-size:13px}.map-number{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:23px;height:23px;background:#e8eee3;color:var(--green);border-radius:50%;font-size:11px}#unplaced{font-size:12px;color:var(--muted);padding:16px;border:1px dashed var(--line);border-radius:5px}#unplaced summary{cursor:pointer}#source-resources{margin-bottom:20px}#source-resources a{color:var(--green);text-underline-offset:3px}@media(max-width:700px){#map{height:380px}.map-locations{grid-template-columns:1fr}.result-tools{gap:9px}.view-switch button{padding:7px 10px}.result-heading h2{font-size:17px}.map-toolbar{font-size:11px;gap:10px}.map-popup{max-width:250px}}

body{padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);padding-bottom:env(safe-area-inset-bottom)}.shortcut-guide{margin:0 0 25px;border:1px solid var(--line);border-radius:6px;background:#f0f1e8;font-size:12px;color:var(--green)}.shortcut-guide>summary{cursor:pointer;padding:13px 16px;list-style-position:inside}.shortcut-guide>summary span{float:right;color:var(--muted);font-size:11px}.shortcut-content{padding:0 18px 12px}.shortcut-content p{margin:10px 0;line-height:1.9}.shortcut-content a{text-underline-offset:3px}.shortcut-content button{border:0;border-radius:4px;background:var(--green);color:white;padding:9px 17px;font-size:13px}@media(max-width:420px){.shortcut-guide>summary span{display:none}}

.pending-note{border-left:2px solid #a68148;padding-left:10px}.verification p strong{color:#435b48}

.historical-sources{margin:16px 0;padding:12px;background:#f1ede3;border-radius:8px;font-size:.85rem}.historical-sources a{display:block;margin-top:6px;overflow-wrap:anywhere}

/* 本次介面微調 */
header{position:sticky;top:0;z-index:1000;background:var(--paper);padding-top:calc(25px + env(safe-area-inset-top))}
.source{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid #c7cdbf;border-radius:5px;padding:10px 14px;background:#edf0e5}.source:hover{background:#e3e9d9;text-decoration:none}.source>span{float:none}
footer{justify-content:flex-end}.updated{text-align:right;margin:18px 0 24px}.data-note details>summary{cursor:pointer;color:var(--green);font-size:12px}.data-note #source-resources{margin:12px 0 0}.shortcut-guide{margin:24px 0 0}
.ongoing-ticker{display:flex;align-items:center;gap:12px;margin-top:24px;padding:12px 14px;border:1px solid var(--line);border-radius:6px;background:#edf0e5;overflow:hidden;min-width:0;color:var(--green)}.pixel-runner{width:20px;flex-shrink:0;animation:runner-bob .3s steps(2,end) infinite}.pixel-runner svg{display:block;width:20px;height:25px}.runner-legs-a{animation:runner-step .5s steps(1,end) infinite}.runner-legs-b{animation:runner-step .5s steps(1,end) infinite reverse}.ticker-label{font-size:11px;white-space:nowrap}.ticker-window{flex:1;overflow:hidden;min-width:0}.ticker-track{display:flex;width:max-content;animation:ticker-scroll var(--ticker-duration,30s) linear infinite}.ticker-group{display:flex;align-items:center;flex-shrink:0}.ticker-group a{white-space:nowrap;padding:0 25px;font-size:12px;text-decoration:none}.ticker-group a:hover{text-decoration:underline}.ticker-group span{font-size:10px;color:var(--muted);margin-left:10px}.ongoing-ticker button{border:0;background:transparent;font-size:10px;padding:4px;color:var(--green);flex-shrink:0}.ongoing-ticker.paused *,.ongoing-ticker:has(a:focus-visible) *{animation-play-state:paused}
@keyframes ticker-scroll{to{transform:translateX(-50%)}}@keyframes runner-bob{to{transform:translateY(-2px)}}@keyframes runner-step{0%,49%{opacity:1}50%,100%{opacity:0}}
@media(max-width:700px){header{padding-top:calc(18px + env(safe-area-inset-top))}.ongoing-ticker{gap:8px;padding:10px}.ticker-label{font-size:10px}.ticker-group a{padding:0 18px}.visit strong{font-size:10px}}
@media(prefers-reduced-motion:reduce){.ticker-track,.pixel-runner,.runner-legs-a,.runner-legs-b{animation:none}.runner-legs-b{display:none}.ticker-window{overflow-x:auto}}

.intro{grid-template-columns:1fr}.ticker-track{min-width:200%}.ticker-group{min-width:50%}

/* 卡片連結與頁尾工具列 */
.link-button,.map-popup a.link-button{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid #c7cdbf;border-radius:5px;padding:8px 12px;background:#edf0e5;color:var(--green);font-size:12px;line-height:1.6;text-decoration:none;max-width:100%;overflow-wrap:anywhere;white-space:normal;text-align:left;margin:5px 5px 0 0}.link-button:hover,.map-popup a.link-button:hover{background:#e3e9d9;text-decoration:none}.notice .link-button{margin-top:8px}.historical-sources .link-button{display:flex;justify-content:flex-start}.map-place{border:1px solid #c7cdbf;border-radius:5px;padding:8px 10px;background:#edf0e5;width:100%}.map-place:hover{background:#e3e9d9}.map-toolbar{justify-content:flex-end}.unplaced-title{display:flex;align-items:center;gap:8px}.unplaced-title strong{flex:1;font-size:13px}.unplaced-title .badge{flex-shrink:0}#unplaced{padding:0;border:0;font-size:11px;color:var(--ink)}#unplaced:empty{display:none}
.bottom-tools{display:grid;grid-template-columns:1fr 1fr auto;gap:18px;align-items:start;margin:40px 0 24px}.bottom-tools .shortcut-guide{margin:0;min-width:0}.bottom-tools .updated{margin:0;padding:13px 0;text-align:left;white-space:nowrap}.bottom-tools #source-resources{margin:0;padding:0 18px 12px}.bottom-tools summary{font-size:12px}.bottom-tools .shortcut-guide>summary span{display:none}.shortcut-content a{display:inline-block;border:1px solid #c7cdbf;background:#edf0e5;padding:6px 10px;border-radius:4px;text-decoration:none;margin-top:5px}
@media(max-width:700px){.bottom-tools{display:flex;flex-direction:column;align-items:flex-start;gap:12px;margin-top:30px}.bottom-tools .shortcut-guide{width:100%}.bottom-tools .updated{text-align:left;padding:0;margin:0}.map-locations .link-button{font-size:11px}}

/* 廣播跑者與行動裝置跑馬燈 */
.pixel-runner{width:32px}.pixel-runner svg{width:32px;height:25px}


/* 地圖與展覽清單共用卡片樣式 */
.map-locations{gap:20px}.map-locations>li.card{padding:25px;font-size:inherit;background:#fffefa;border-radius:7px}.map-card-title{display:flex;align-items:flex-start;gap:10px}.map-card-title>span:last-child{min-width:0}.map-card-title .map-number{flex:0 0 28px;width:28px;height:28px;margin-top:3px;font-family:-apple-system,BlinkMacSystemFont,"PingFang TC",sans-serif}.map-card-title .map-place{padding:0;border-radius:50%;justify-content:center;text-align:center;font-weight:600}.card-map-link{align-self:flex-start}.map-locations .card .source{font-size:12px}.map-locations .card .link-button{font-size:12px}
@media(max-width:700px){.map-locations>li.card{padding:21px}}

.map-compact h3{font-size:18px;margin-bottom:12px}.map-compact .map-brief{font-size:12px;color:var(--muted);margin:5px 0}.map-compact>.badge{align-self:flex-start;margin-bottom:8px}.map-card-actions{margin-top:auto;padding-top:14px}.map-compact .historical-sources{font-size:12px}

.bottom-tools .shortcut-guide{background:transparent;border:0;border-radius:0}.bottom-tools .shortcut-guide>summary{padding-left:0;padding-right:0}.bottom-tools #source-resources,.bottom-tools .shortcut-content{padding-left:0;padding-right:0}.map-compact .historical-sources{border-radius:0;background:#f5f5ee;padding:12px 14px;font-size:11px}.map-compact .historical-sources>strong{font-weight:600;color:var(--green)}

#results .card .source{align-self:flex-start;display:inline-flex;justify-content:center;padding:8px 12px;font-size:12px;line-height:1.6;gap:6px;margin:5px 5px 0 0}

/* 卡片日期與地圖狀態的精簡呈現 */
.ticker-label{color:#008a45;font-weight:600}.map-compact .card-top{margin-bottom:14px;align-items:flex-start}.map-compact .category-tag{line-height:1.8}.map-compact .badge{flex-shrink:0}

.ticker-label{display:inline-flex;align-items:center;justify-content:center}.ticker-light{display:block;width:10px;height:10px;border-radius:50%;background:#008a45}#results .card[id]{scroll-margin-top:100px}

/* 年代探索：左右各自依年份定位，共用依資料密度展開的年代刻度。 */
#timeline-panel{padding:48px 0 20px;max-width:940px;margin:auto}
.timeline-head{display:grid;grid-template-columns:minmax(0,1fr) 76px minmax(0,1fr);text-align:center;margin-bottom:24px}
.timeline-head h2{font-family:"Songti TC","Noto Serif TC",serif;font-size:27px;letter-spacing:3px;margin:0}
.timeline-head p{font-size:12px;color:var(--muted);margin:6px 0 0}
#timeline-stage{position:relative;min-height:120px}
.timeline-axis{position:absolute;left:50%;top:18px;bottom:18px;width:1px;background:var(--rust)}
.timeline-decade{position:absolute;left:50%;transform:translate(-50%,-50%);background:#e9ddcd;border-radius:30px;padding:0 10px;font-family:Georgia,serif;font-size:18px;line-height:1.6;z-index:2}
.timeline-node{position:absolute;width:calc(50% - 38px);transform:translateY(-50%);text-align:center;display:flex;flex-direction:column;align-items:center}
.timeline-node.architect{left:0}.timeline-node.work{right:0}
.timeline-node:after{content:"";position:absolute;top:50%;width:var(--timeline-connector,31px);height:1px;background:#a7aaa0}
.timeline-node.architect:after{right:-31px}.timeline-node.work:after{left:-31px}
.timeline-node:before{content:"";position:absolute;top:calc(50% - 4px);width:8px;height:8px;background:var(--rust);border:2px solid var(--paper);border-radius:50%;box-sizing:content-box}
.timeline-node.architect:before{right:-44px}.timeline-node.work:before{left:-44px}
.timeline-name{max-width:100%;width:100%;border:0;background:none;color:var(--ink);font-family:"Songti TC","Noto Serif TC",serif;font-size:19px;line-height:1.55;padding:8px 6px;overflow-wrap:anywhere;text-align:center;border-radius:3px}
.timeline-name:hover,.timeline-name[aria-expanded=true]{color:var(--rust);text-decoration:underline;text-underline-offset:6px}
.timeline-name:focus-visible{outline:2px solid var(--rust);outline-offset:2px}
.timeline-note{text-align:center;color:var(--muted);font-size:12px;margin-top:24px}
.timeline-popover{position:fixed;z-index:1500;background:#fffdf8;border:1px solid var(--line);border-radius:8px;box-shadow:0 5px 22px #303e3720;padding:22px;overflow:auto;font-size:13px}
.timeline-popover h3{font-family:"Songti TC","Noto Serif TC",serif;margin:0 24px 10px 0;font-size:20px}
.timeline-popover p{margin:8px 0}.timeline-year{color:var(--rust)}
.timeline-close{position:absolute;right:7px;top:5px;background:none;border:0;font-size:25px;color:var(--muted);min-width:36px;min-height:36px}
.timeline-links{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0 8px}.timeline-links button,.timeline-links a{border:1px solid var(--line);border-radius:4px;background:none;color:var(--green);font:inherit;padding:6px 9px;text-decoration:none}
@media(max-width:700px){#timeline-panel{padding-top:28px}.timeline-head{grid-template-columns:minmax(0,1fr) 50px minmax(0,1fr)}.timeline-head h2{font-size:21px;letter-spacing:1px}.timeline-head p{font-size:10px;line-height:1.6}.timeline-node{width:calc(50% - 25px)}.timeline-name{font-size:15px;padding:9px 2px}.timeline-node:after{width:var(--timeline-connector,18px)}.timeline-node.architect:after{right:-18px}.timeline-node.work:after{left:-18px}.timeline-node.architect:before{right:-31px}.timeline-node.work:before{left:-31px}.timeline-decade{font-size:15px;padding:0 5px}.tabs{gap:18px}.tabs button{font-size:15px}.tabs span{font-size:10px}.timeline-note{text-align:left}}

/* 資訊卡只使用名稱上下的可用空間，內容可獨立捲動。 */
.timeline-popover{overscroll-behavior:contain;scrollbar-gutter:stable;overflow-wrap:anywhere}
.timeline-close{position:sticky;float:right;top:0;right:auto;margin:-15px -15px 0 6px;background:#fffdf8;z-index:1}

/* 手機名稱依詞組自然換行；桌面及平板仍使用原本的文字流。 */
.timeline-name-title,.timeline-name-aside,.timeline-name-word{display:contents}
@media(max-width:600px){
 .timeline-name{font-size:14px;line-height:1.65;word-break:normal;overflow-wrap:normal;line-break:strict;text-wrap:pretty}
 .timeline-name-title,.timeline-name-aside{display:inline-block;max-width:100%;vertical-align:top;text-wrap:balance}
 .timeline-name-word{display:inline-block;max-width:100%;vertical-align:top;white-space:normal;overflow-wrap:anywhere}
 .architect .timeline-name-title{white-space:nowrap}
}

/* 窄手機導覽：縮減局部空隙，保留選取底線與計數，不縮放頁面。 */
@media(max-width:360px){
 .tabs{gap:12px}
 .tabs button{white-space:nowrap;padding-inline:0;flex-shrink:0}
 .tabs span{margin-left:4px;padding-inline:5px}
}

/* Shared credit remains one quiet, centered line across all three views. */
footer{flex-wrap:wrap;row-gap:0}
.footer-signature{flex:0 0 100%;margin:12px 0 0;text-align:center;font-size:11px;font-weight:400;letter-spacing:0;color:#7b7b73;white-space:nowrap}

/* 核定人物年代：色點代表證據類型，未知年份保留獨立入口。 */
:root{--era-start:#68432f;--era-record:#d0a469;--era-period:#477d79}
.timeline-head h2{letter-spacing:1px}
.timeline-legend{display:inline-flex;flex-direction:column;align-items:flex-start;gap:6px;margin:14px auto 0;color:var(--muted);font-size:11px;text-align:left}
.timeline-legend>span{display:inline-flex;align-items:center;gap:7px}
.era-dot{display:inline-block;width:8px;height:8px;border-radius:50%;flex:none}
.era-dot.confirmed-start{background:var(--era-start)}.era-dot.earliest-record{background:var(--era-record)}.era-dot.period{background:var(--era-period)}
.timeline-axis{z-index:1}.timeline-decade{z-index:4}.timeline-node{z-index:3}
.timeline-node:before,.timeline-node:after{content:none}
.timeline-name{position:relative}
.timeline-period-shade{opacity:.5;position:absolute;left:0;right:0;pointer-events:none;z-index:0}.timeline-period-shade.pre1895{background:#eee4d5}.timeline-period-shade.japanese{background:#e1e9e3}.timeline-period-shade.postwar{background:#f1e3dc}
.timeline-history-boundary{position:absolute;left:0;right:0;height:1px;background:#a8a99b;z-index:2;text-align:center;font-size:11px;color:var(--muted)}
.boundary-year{position:absolute;left:50%;top:0;transform:translate(-50%,-50%);border:1px solid #b9b5a6;border-radius:999px;background:transparent;padding:0 10px;font:14px/1.7 Georgia,serif;color:var(--ink)}
.era-before,.era-after{position:absolute;left:0;right:0;text-align:center;line-height:1.5;letter-spacing:2px}.era-before{bottom:20px}.era-after{top:20px}
.timeline-pending{margin-top:18px}.timeline-pending-people{width:calc(50% - 38px);text-align:center}.timeline-pending-people>p{font-size:11px;color:var(--muted);margin:0 0 3px}
.design-history{font-size:12px;margin:0 0 18px;color:var(--muted)}.design-history summary{cursor:pointer;color:var(--green);padding:9px 0}.design-history dl{margin:8px 0 12px}.design-history dt{font-weight:600;color:var(--ink);margin-top:12px}.design-history dd{margin:4px 0 0;overflow-wrap:anywhere}.history-links{display:flex;flex-wrap:wrap;gap:7px}
.filter-row.events-filters{grid-template-columns:repeat(2,minmax(0,1fr)) auto}
@media(max-width:700px){
 .timeline-legend{gap:6px;font-size:10px}
 .timeline-pending-people{width:calc(50% - 25px)}
 .filter-row.events-filters{grid-template-columns:repeat(2,minmax(0,1fr))}
}
/* 同年多人共用真實年位，分支線從姓名連回同一節點。 */
.timeline-node .timeline-name:before,.timeline-node .timeline-name:after{content:none}
.timeline-node:before{content:"";z-index:3}
.timeline-node[data-kind=confirmed-start]:before{background:var(--era-start)}
.timeline-node[data-kind=earliest-record]:before{background:var(--era-record)}
.timeline-node[data-kind=period]:before{background:var(--era-period)}
.timeline-connectors{position:absolute;inset:0;overflow:visible;width:100%;height:100%;pointer-events:none;z-index:1}
.timeline-connectors path{stroke:#a7aaa0;stroke-width:1;fill:none}
@media(max-width:700px){.timeline-head h2{font-size:clamp(15px,4.2vw,21px)}}
/* 卡片的 .architect 段落外距不套用到年代節點；圓點中心對準共用年位。 */
.timeline-node.architect{margin:0}
.timeline-node:before{top:calc(50% - 6px)}
/* 每人有自己的證據色點，同年多人或年代刻度不會遮住判定類型。 */
.timeline-person-dot{stroke:var(--paper);stroke-width:1}
.timeline-person-dot[data-kind=confirmed-start]{fill:var(--era-start)}
.timeline-person-dot[data-kind=earliest-record]{fill:var(--era-record)}
.timeline-person-dot[data-kind=period]{fill:var(--era-period)}

/* 作者只保留姓名旁色點；中央作品圓點不變，歷史標示周圍保留實際斷線。 */
.timeline-node.architect:before{content:none}
.timeline-axis{top:0;bottom:0;background:none}
.timeline-axis-segment{position:absolute;left:0;width:1px;background:var(--rust)}

/* 主分頁固定於頁首下方；時間軸只保留中央年代刻度。 */
.tabs{position:sticky;top:var(--site-header-height,82px);z-index:1000;background:var(--paper)}
#timeline-panel{max-width:none}
.timeline-shell{display:block}
.timeline-content{min-width:0;width:100%;max-width:940px;margin:auto}
#results .card[id],#map-panel,.timeline-name{scroll-margin-top:calc(var(--site-sticky-height,145px) + 12px)}

/* 標題與關閉鍵位於卡片固定頂部，長內容只在內文區捲動。 */
.timeline-popover{display:flex;flex-direction:column;padding:0;overflow:hidden;scrollbar-gutter:auto}
.timeline-popover-heading{display:flex;align-items:flex-start;gap:10px;padding:16px 18px 8px;flex:0 0 auto;min-width:0;background:#fffdf8}
.timeline-popover-heading h3{flex:1;min-width:0;margin:0;font-size:20px;overflow-wrap:anywhere}
.timeline-popover-heading .timeline-close{position:static;float:none;flex:0 0 32px;min-width:32px;min-height:32px;margin:-2px -6px 0 0;padding:0;line-height:1.2;background:none}
.timeline-popover-body{overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable;min-height:0;flex:1 1 auto;padding:0 18px 18px}
.timeline-position-note{font-size:11px;color:var(--muted);line-height:1.6}

/* 共享主視覺、作品收合搜尋與分頁專屬篩選。 */
.works-search{display:flex;align-items:center;gap:12px}
.search-toggle{display:inline-flex;align-items:center;justify-content:center;flex:0 0 40px;width:40px;height:40px;padding:8px;border:0;background:transparent;color:var(--green)}
.search-toggle.has-query{color:var(--rust)}
.works-search .search-label{flex:1;min-width:0}
.filter-row:not(.events-filters){grid-template-columns:repeat(3,minmax(0,1fr)) auto}
.timeline-history-boundary{background:none}
.timeline-history-boundary:before,.timeline-history-boundary:after{content:'';position:absolute;top:0;height:1px;width:calc(50% - 36px);background:#a8a99b}
.timeline-history-boundary:before{left:0}.timeline-history-boundary:after{right:0}
@media(max-width:700px){.filter-row:not(.events-filters){grid-template-columns:repeat(2,minmax(0,1fr))}h1{font-size:clamp(28px,8vw,35px)}}

/* 每4.5秒逐則向上輪播，列高依可用寬度與完整名稱計算。 */
.ticker-track{display:block;width:100%;min-width:0;animation:none}
.ticker-window{overflow:hidden}
.ticker-item{display:flex;align-items:center;min-height:var(--ticker-row-height,24px);height:var(--ticker-row-height,auto)}
.ticker-item a{display:block;width:100%;padding:0 8px;white-space:normal;overflow-wrap:break-word;font-size:12px;line-height:1.7;text-decoration:none}
.ticker-item a:hover{text-decoration:underline}
.ticker-item span{font-size:10px;color:var(--muted);margin-left:10px;white-space:nowrap}
@media(prefers-reduced-motion:reduce){.ticker-window{overflow:hidden}}

/* 本地驗收版：主標縮為原尺寸的一半，保持原有留白與字體。 */
h1{font-size:23px}
.ticker-item{justify-content:flex-start;text-align:left}
.ticker-item a{text-align:left;margin:0}
.filter-row:not(.events-filters){grid-template-columns:46px repeat(3,minmax(0,1fr)) auto}
.filter-row:not(.events-filters).search-expanded{grid-template-columns:minmax(220px,1.4fr) repeat(3,minmax(0,1fr)) auto}
.works-search{min-width:0;align-self:end;align-items:flex-end;gap:8px}
.search-toggle{flex:0 0 46px;width:46px;height:46px}
.card-details{font-size:12px;margin:0 0 12px;color:var(--muted);background:none;border:0;border-radius:0;padding:0}
.card-details>summary{cursor:pointer;color:var(--green);padding:9px 0}
.card-details .history-links{margin:8px 0 12px}
.card .visit{margin:6px 0 12px}
.card-actions{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-top:auto;padding-top:12px}
.card-actions .link-button,.notice .house-link,#results .card .card-actions .source{margin:0;min-height:40px}
.house-link{flex:none;width:40px;min-width:40px;height:40px;padding:8px!important;line-height:1}
.house-link svg{display:block;flex:none;width:20px;height:20px}
.map-source{display:inline-flex;align-items:center}
.map-compact .map-designer{font-size:12px;color:var(--muted);margin:4px 0}
.map-popup .map-card-title{font-size:16px;line-height:1.6;margin:10px 0}
.map-popup .card-top{gap:8px;align-items:flex-start;font-size:11px}
.map-popup .card-actions{padding-top:8px}
.map-popup .map-designer{font-size:12px}
@media(max-width:700px){
 h1{font-size:clamp(14px,4vw,17.5px)}
 .filter-row:not(.events-filters),.filter-row:not(.events-filters).search-expanded{grid-template-columns:repeat(2,minmax(0,1fr))}
 .works-search{width:46px}
 .search-expanded .works-search{grid-column:1/-1;width:100%}
 .search-expanded .works-search .search-label{flex:1}
 .filter-row:not(.events-filters) .reset{grid-column:1/-1}
}

/* 地圖與彈窗留在固定頁首下方，橫向手機也保留可操作範圍。 */
#map{height:min(480px,calc(100dvh - var(--site-sticky-height,145px) - 32px));min-height:160px;scroll-margin-top:calc(var(--site-sticky-height,145px) + 12px)}
@media(max-width:700px){#map{height:min(380px,calc(100dvh - var(--site-sticky-height,145px) - 32px))}}

/* Shared round official / place controls; visual height matches status badges. */
.house-link,.notice .house-link,.card-actions .google-maps-link,.map-popup a.house-link,.map-popup a.google-maps-link,#results .card .card-actions .source{display:inline-flex;align-items:center;justify-content:center;flex:none;width:25px;min-width:25px;height:25px;min-height:25px;padding:5px!important;border:0;border-radius:50%;background:var(--green);color:#fff;line-height:1;margin:0}
.house-link svg,.card-actions .google-maps-link svg{display:block;width:15px;height:15px;flex:none;fill:currentColor;stroke:none}
.house-link:hover,.card-actions .google-maps-link:hover,.map-popup a.house-link:hover,.map-popup a.google-maps-link:hover{background:var(--ink);color:#fff}
.visit .card-actions{justify-content:flex-start;margin-top:10px;padding-top:0;gap:10px}

.card-actions,.map-popup .card-actions{justify-content:flex-start;gap:10px}

/* Search toggle stays immediately left of reset, including narrow screens. */
.filter-row:not(.events-filters){grid-template-columns:repeat(3,minmax(0,1fr)) auto}
.filter-row:not(.search-expanded) .works-search{display:none}
.filter-actions{display:flex;align-items:center;justify-content:flex-end;gap:6px;align-self:end}
.filter-actions .search-toggle,.filter-actions .search-toggle.has-query{color:var(--green);flex:none}
.filter-actions .reset{white-space:nowrap}
@media(max-width:700px){
 .filter-row:not(.events-filters),.filter-row:not(.events-filters).search-expanded{grid-template-columns:repeat(2,minmax(0,1fr))}
 .filter-actions{grid-column:1/-1;justify-self:end}
 .filter-actions .reset{height:46px}
}

/* Button fills at 50% opacity; labels, icons and focus outlines stay legible. */
button,.link-button,.map-popup a.link-button{background-color:color-mix(in srgb,var(--button-fill,transparent) 50%,transparent)}
.link-button,.map-popup a.link-button{--button-fill:#edf0e5}
.link-button:hover,.map-popup a.link-button:hover{--button-fill:#e3e9d9}
.house-link,.notice .house-link,.card-actions .google-maps-link,.map-popup a.house-link,.map-popup a.google-maps-link,#results .card .card-actions .source{background:color-mix(in srgb,var(--green) 50%,transparent)}
.house-link:hover,.card-actions .google-maps-link:hover,.map-popup a.house-link:hover,.map-popup a.google-maps-link:hover{background:color-mix(in srgb,var(--ink) 50%,transparent)}
.view-switch button[aria-pressed=true]{background:color-mix(in srgb,var(--green) 50%,transparent)}
.map-place{background:color-mix(in srgb,#edf0e5 50%,transparent)}
.map-place:hover{background:color-mix(in srgb,#e3e9d9 50%,transparent)}
.map-toolbar button{background:color-mix(in srgb,#fffefa 50%,transparent)}

.filter-row>label{min-width:0}
.filter-row select{min-width:0;max-width:100%}

/* Ticker title and end date share one left edge. */
.ticker-item a{padding-left:0;padding-right:0;text-align:left}
.ticker-item span{display:block;margin-left:0;text-align:left}

/* Self-hosted Traditional Chinese fonts: the same faces on every device. */
@font-face{font-family:"Architecture Sans";src:url("assets/fonts/noto-sans-tc-regular.woff") format("woff");font-style:normal;font-weight:400;font-display:swap}
@font-face{font-family:"Architecture Sans";src:url("assets/fonts/noto-sans-tc-bold.woff") format("woff");font-style:normal;font-weight:500 900;font-display:swap}
@font-face{font-family:"Architecture Serif";src:url("assets/fonts/noto-serif-tc-regular.woff") format("woff");font-style:normal;font-weight:400;font-display:swap}
@font-face{font-family:"Architecture Serif";src:url("assets/fonts/noto-serif-tc-bold.woff") format("woff");font-style:normal;font-weight:500 900;font-display:swap}
body,button,input,select,.map-popup,.leaflet-container,.map-card-title .map-number{font-family:"Architecture Sans",sans-serif}
h1,h3,.timeline-head h2,.timeline-name,.timeline-popover h3{font-family:"Architecture Serif",serif}
.timeline-decade{font-family:"Architecture Serif",serif}
/* All icon controls share a solid, low-saturation fill like the status labels. */
:root{--icon-fill:#e8eee3}
.icon-button,.house-link,.notice .house-link,.card-actions .google-maps-link,.map-popup a.house-link,.map-popup a.google-maps-link,#results .card .card-actions .source,.timeline-links button.icon-button{display:inline-flex;align-items:center;justify-content:center;flex:0 0 25px;box-sizing:border-box;width:25px!important;min-width:25px!important;max-width:25px!important;height:25px!important;min-height:25px!important;max-height:25px!important;border:0;border-radius:50%;padding:5px!important;margin:0;line-height:1;background:var(--icon-fill);color:var(--green);text-decoration:none}
.icon-button:hover,.house-link:hover,.notice .house-link:hover,.card-actions .google-maps-link:hover,.map-popup a.icon-button:hover,.timeline-links button.icon-button:hover{background:#d7e0cf;color:var(--ink)}
.icon-button .action-icon,.house-link svg,.card-actions .google-maps-link svg{display:block;flex:none;width:15px;height:15px;fill:none;stroke:none}
.map-summary{font-size:12px;line-height:1.9;color:var(--muted);margin:8px 0 4px}
.event-card .card-actions{justify-content:flex-end}
.filter-actions .reset{display:inline-flex;align-items:center;justify-content:center;width:46px;height:46px;padding:8px;flex:none;color:var(--green)}
.filter-actions .reset svg{width:22px;height:22px}
.filter-row:not(.events-filters).search-expanded{grid-template-columns:repeat(3,minmax(0,1fr)) minmax(240px,1.2fr) auto}
.on-air{display:inline-flex;align-items:center;justify-content:center;flex:none;border-radius:4px;padding:3px 7px;background:var(--icon-fill);color:var(--green);font-family:"Architecture Sans",sans-serif;font-size:10px;font-weight:700;line-height:1.5;white-space:nowrap;letter-spacing:.4px}
@media(min-width:701px){
 .timeline-legend{display:flex;flex-direction:row;justify-content:center;align-items:center;gap:10px;width:max-content;max-width:100%;font-size:10px;white-space:nowrap}
 .timeline-legend>span{gap:4px}
 .ticker-item a{display:flex;align-items:center;gap:16px}
 .ticker-item span{display:inline-block;flex:none}
}
@media(max-width:700px){
 .filter-row:not(.events-filters).search-expanded{grid-template-columns:repeat(2,minmax(0,1fr))}
 .search-expanded .works-search{grid-column:1/-1}
}

/* Shared filter/card borders and participation controls. */
:root{--control-border:#d7d9ce}
input,select,.card,.map-locations>li.card,.timeline-popover,.view-switch,.leaflet-popup-content-wrapper{border:1px solid var(--control-border);border-radius:5px}
.card:hover{border-color:var(--control-border)}
.card:focus,.card:focus-within,.timeline-popover:focus-within{outline:2px solid var(--rust);outline-offset:3px}
.on-air{border:1px solid var(--control-border)}
.event-card .visit .card-actions{justify-content:flex-start}
#keyword{min-width:0;width:100%;padding-right:26px}

/* Timeline information follows the work name; map visits use the same block. */
.timeline-popover-heading .info-link{display:inline-flex;vertical-align:middle;margin-left:8px}
.timeline-popover .timeline-designers{color:var(--rust);font-size:11px}
.map-popup .visit{font-size:11px;margin:10px 0 0}
.map-popup .visit strong{font-size:11px}
.map-popup .visit p{font-size:11px;line-height:1.8;margin:3px 0 0!important}
.map-popup .visit .card-actions{padding-top:0;margin-top:10px}
.on-air{background:var(--green);color:#fff;border-radius:5px}
.visit strong,.map-popup .visit strong{font-size:11px}
.on-air,.view-switch button[aria-pressed=true]{background:var(--green);color:#fff}

.timeline-title-tail{white-space:nowrap}

/* Phone filters form one left-aligned column; action icons stay on one row. */
@media(max-width:700px){
 .filter-row,.filter-row:not(.events-filters),.filter-row:not(.events-filters).search-expanded,.filter-row.events-filters{grid-template-columns:minmax(0,1fr)}
 .filter-row>label{grid-column:1/-1;width:100%;text-align:left}
 .filter-row .works-search{grid-column:1/-1;width:100%}
 .filter-row .filter-actions{grid-column:1/-1;justify-self:start;justify-content:flex-start}
}
