:root{--bg:#082f27;--dark:#05281f;--cream:#f7f1e5;--muted:#a6c0b3;--orange:#ff7a19;--line:rgba(247,241,229,.25)}*{box-sizing:border-box}html{min-width:320px}body{margin:0;background:#f1eee7;color:var(--cream);font-family:Arial,"Noto Sans TC","Microsoft JhengHei",sans-serif}button,input{font:inherit}button{cursor:pointer}a{color:inherit}.gallery-shell{width:min(1440px,calc(100% - 44px));min-height:calc(100svh - 44px);margin:22px auto;padding:28px 48px 20px;border-radius:30px;background:#082f27;box-shadow:0 25px 80px rgba(5,38,31,.13)}.topline{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:14px}.brand{font-family:"Noto Serif TC","Songti TC","PMingLiU",serif;font-weight:900;letter-spacing:.12em;font-size:clamp(21px,2vw,30px);text-decoration:none}.brand span{color:var(--orange)}.back-link,.gallery-footer a{font-size:12px;color:var(--muted);text-underline-offset:5px;text-decoration-color:rgba(166,192,179,.5)}.back-link:hover,.gallery-footer a:hover{color:var(--orange)}.intro{padding:45px 0 22px}.eyebrow{margin:0;color:var(--orange);font-weight:700;font-size:13px;letter-spacing:.15em}h1{font-family:"Noto Serif TC","Songti TC","PMingLiU",serif;font-size:clamp(38px,5vw,68px);line-height:1.14;letter-spacing:.04em;margin:14px 0 12px}.lede{font-size:15px;color:#c7d9cf;line-height:1.7;margin:0}.search-row{display:flex;align-items:center;gap:16px;border-top:1px solid rgba(247,241,229,.12);border-bottom:1px solid var(--line);padding:17px 0}.search-row label{font-size:13px;white-space:nowrap}.search-row input{width:min(440px,100%);background:rgba(0,0,0,.17);border:1px solid #6d9484;border-radius:7px;padding:11px 14px;color:var(--cream);outline:0}.search-row input::placeholder{color:#9bb4a8}.search-row input:focus{border-color:var(--orange);box-shadow:0 0 0 3px rgba(255,122,25,.15)}.search-row button{background:none;color:var(--muted);border:0;text-decoration:underline;text-underline-offset:4px;font-size:12px}.search-row button[hidden]{display:none}.result-count{font-size:12px;letter-spacing:.08em;color:var(--muted);margin:22px 0}.card-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:34px 22px}.card-tile{min-width:0}.card-open{display:block;padding:0;border:0;background:none;color:var(--cream);width:100%;text-align:left}.card-open img{display:block;width:100%;height:auto;max-width:100%;aspect-ratio:2/3;object-fit:cover;border-radius:7px;background:#07442f;box-shadow:0 12px 25px rgba(0,0,0,.22);transition:transform .2s ease,box-shadow .2s ease}.card-open:hover img{transform:translateY(-5px);box-shadow:0 20px 32px rgba(0,0,0,.26)}.card-meta{display:block;color:var(--orange);font-size:12px;letter-spacing:.1em;margin:13px 0 5px}.card-quote{display:block;font-family:"Noto Serif TC","Songti TC","PMingLiU",serif;font-size:clamp(16px,1.4vw,20px);font-weight:700;line-height:1.5}.empty{grid-column:1/-1;color:var(--muted);padding:50px 0}.gallery-footer{display:flex;justify-content:space-between;gap:20px;border-top:1px solid var(--line);padding-top:18px;margin-top:48px;font-size:11px;color:var(--muted)}dialog{width:min(1000px,calc(100vw - 28px));max-height:calc(100dvh - 28px);padding:20px;border:1px solid #83a397;border-radius:12px;background:var(--bg);color:var(--cream)}dialog::backdrop{background:rgba(0,18,13,.83)}.viewer-bar{display:flex;align-items:center;justify-content:space-between;gap:20px;border-bottom:1px solid var(--line);padding-bottom:12px}.viewer-bar h2{font-family:"Noto Serif TC","PMingLiU",serif;font-size:18px;margin:0}.viewer-bar button{background:none;border:1px solid var(--line);border-radius:6px;color:var(--cream);padding:8px 12px}.viewer-body{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.8fr);gap:28px;padding-top:18px;align-items:center}.viewer-body img{display:block;max-width:100%;max-height:calc(100dvh - 130px);aspect-ratio:2/3;object-fit:contain;margin:auto;box-shadow:0 15px 40px rgba(0,0,0,.3)}.viewer-copy{display:flex;flex-direction:column;align-items:flex-start;min-height:300px}.viewer-quote{font-family:"Noto Serif TC","Songti TC","PMingLiU",serif;font-size:clamp(28px,3vw,46px);line-height:1.35;letter-spacing:.02em;margin:24px 0}.viewer-index{color:var(--muted);font-size:13px}.viewer-controls{display:flex;gap:12px;margin-top:auto;padding-top:30px}.viewer-controls button{border:1px solid var(--line);background:none;border-radius:7px;color:var(--cream);padding:10px 15px}.viewer-controls button:last-child{background:var(--orange);border-color:var(--orange);color:var(--dark);font-weight:700}.viewer-controls button:disabled{opacity:.35;cursor:default}.viewer-controls button:not(:disabled):hover,.viewer-bar button:hover{border-color:var(--orange)}:focus-visible{outline:3px solid var(--orange);outline-offset:3px}@media(max-width:1050px){.card-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:700px){.gallery-shell{width:100%;margin:0;min-height:100svh;border-radius:0;padding:18px 18px 20px}.intro{padding:34px 0 20px}.card-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px 14px}.card-quote{font-size:16px}.search-row{flex-wrap:wrap;gap:9px}.search-row input{width:100%;order:2}.search-row button{margin-left:auto}dialog{padding:14px}.viewer-body{display:block}.viewer-body img{max-height:58dvh}.viewer-copy{min-height:0}.viewer-quote{font-size:27px;margin:16px 0 8px}.viewer-controls{padding-top:12px}.viewer-bar{position:sticky;top:-14px;background:var(--bg);z-index:1}.gallery-footer{margin-top:32px}}@media(max-width:420px){.brand{font-size:20px}.back-link{font-size:11px}h1{font-size:36px}.lede{font-size:14px}}@media(prefers-reduced-motion:reduce){.card-open img{transition:none}}
