@font-face{font-family:'jf-openhuninn';src:url('assets/fonts/jf-openhuninn-2.1.ttf') format('truetype');font-display:swap}
*{box-sizing:border-box}html{font-size:16px;scroll-behavior:smooth}body{margin:0;font-family:Inter,Arial,system-ui,sans-serif;color:#25434e;line-height:1.75;background:linear-gradient(180deg,#D4EEF3 0%,#DAF0EA 20%,#E8EDDF 42%,#F0ECE2 64%,#F5F0E8 84%,#EDE6DA 100%)}a{color:#2B6A7C}body[lang="zh-Hant"]{font-family:'jf-openhuninn','Noto Sans TC',system-ui,sans-serif}p,li{font-size:16px;text-align:left;word-spacing:normal;letter-spacing:normal}body[lang="zh-Hant"] p{text-align:justify}button,select,input{font:inherit}button,a:focus-visible,summary:focus-visible{outline-offset:3px}button{cursor:pointer;border:1px solid #2B6A7C;border-radius:6px;padding:.5rem .8rem;background:#fff;color:#2B6A7C;font-size:14px}button[aria-pressed="true"]{background:#2B6A7C;color:white}button:focus-visible,input:focus-visible{outline:3px solid #A8E0D0}.topbar{position:sticky;top:0;z-index:1400;background:rgba(43,106,124,.95);backdrop-filter:blur(10px);display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-items:center;padding:8px clamp(1rem,4vw,2.5rem);min-height:50px;box-shadow:0 2px 16px rgba(43,106,124,.12);color:white}.back-link{justify-self:start;color:rgba(255,255,255,.5);text-decoration:none;font-size:.78rem;white-space:nowrap;line-height:1.5}.back-link:hover{color:white}.logo{text-align:center;font-size:.82rem;font-weight:700;line-height:1.5}.actions{justify-self:end;display:flex;align-items:center;gap:8px}.language-switch{display:flex;gap:4px}.language-switch a{color:white;border:1px solid #ffffff60;border-radius:6px;padding:4px 6px;font-size:12px;text-decoration:none;white-space:nowrap}.language-switch a[aria-current]{background:#E8F5F0;color:#2B6A7C}.nav-menu{position:relative}.nav-menu summary{list-style:none;cursor:pointer;font-size:.78rem;white-space:nowrap;border:1px solid #ffffff40;border-radius:6px;padding:.35rem .8rem;color:#ffffffd9}.nav-menu summary::-webkit-details-marker{display:none}.nav-menu-panel{position:absolute;right:0;top:calc(100% + 10px);display:grid;min-width:190px;background:#2B6A7C;padding:8px;border-radius:10px;box-shadow:0 8px 30px #0f172a47;max-height:60vh;overflow:auto}.nav-menu:not([open]) .nav-menu-panel{display:none}.nav-menu-panel a{color:white;font-size:14px;text-decoration:none;padding:6px 10px}.hero{position:relative;background:#2B6A7C url('assets/public-map-after-en.svg') center/cover;color:white;padding:3.2rem 2rem 2.6rem;text-align:center;isolation:isolate}.hero:before{content:"";position:absolute;inset:0;background:linear-gradient(160deg,#2b6a7cb3,#3d7a8a9e 45%,#4a8a968f);z-index:-1}.tag{font-size:.75rem;font-weight:600;letter-spacing:2px;color:#A8E0D0;text-transform:uppercase}.hero h1{font-size:clamp(1.6rem,4vw,2.4rem);line-height:1.3;margin:.5rem 0 .6rem;text-shadow:0 2px 18px #0004}.hero p{max-width:640px;margin:0 auto;color:#fffffff0;font-size:clamp(.86rem,1.6vw,1rem);line-height:1.7}.chips{display:flex;gap:.5rem;justify-content:center;flex-wrap:wrap;margin-top:1.2rem}.chips span{font-size:.75rem;background:#ffffff24;border:1px solid #ffffff4d;padding:.3rem .8rem;border-radius:20px}.context,section{max-width:1120px;margin:0 auto;padding:2rem 1.5rem}.context{padding-bottom:.5rem}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.context .grid{grid-template-columns:repeat(4,minmax(0,1fr))}.card{background:white;border-radius:14px;padding:1.2rem 1.3rem;box-shadow:0 2px 20px #2b6a7c0f;border:1px solid #0000000a}.card h3{font-size:17px;color:#2B6A7C;margin:.1rem 0 .35rem}.context .card h3{font-size:15px}.context .card p{font-size:13.5px;line-height:1.6;color:#61747a}.card p:last-child{margin-bottom:0}h2{font-size:clamp(22.4px,3vw,28.8px);line-height:1.3;color:#2B6A7C;margin:0 0 20px}figure{margin:0}figure img{width:100%;display:block;max-height:640px;object-fit:contain;background:#f6faf9;border-radius:8px}figcaption,.note{font-size:13px;line-height:1.6;color:#61747a;margin-top:10px}figure a{display:block}ul{padding-left:22px}.controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 16px}.controls label{font-size:14px}.controls input{accent-color:#2B6A7C}.preview-grid{display:grid;grid-template-columns:1fr;gap:14px}.preview-grid.batch{grid-template-columns:repeat(3,minmax(0,1fr))}.preview-sheet{background:#f5faf8;border:1px solid #b8d3cb;border-radius:8px;padding:14px}.preview-sheet h3{font-size:16px;margin:0 0 8px;color:#2B6A7C}.preview-sheet img{display:block;width:100%;height:auto}.preview-sheet .legend{display:flex;gap:12px;flex-wrap:wrap;font-size:12px;padding-top:8px}.legend span:before{content:"";display:inline-block;width:12px;height:12px;margin-right:5px;background:var(--swatch);vertical-align:-1px;border-radius:2px}.preview-grid.no-frame .preview-sheet{border-color:transparent}.preview-grid.no-legend .legend{display:none}.status{font-size:14px;color:#2B6A7C;margin:10px 0 0}.source-note{border-left:4px solid #A8E0D0}footer{text-align:center;background:#2B6A7C;color:#ffffffcc;padding:2.4rem 1.5rem;font-size:13px}footer p{text-align:center!important;font-size:13px;margin:0 0 8px}footer a{color:white;font-size:13px;text-decoration:none}[id]{scroll-margin-top:100px}@media(max-width:760px){.context .grid,.grid{grid-template-columns:1fr 1fr}.preview-grid.batch{grid-template-columns:1fr}.topbar{grid-template-columns:1fr auto;row-gap:8px;padding:10px 12px}.logo{grid-column:1/-1;grid-row:1}.back-link{grid-column:1;grid-row:2}.actions{grid-column:2;grid-row:2}.hero{padding:2.4rem 1.25rem}section,.context{padding:1.8rem 1.25rem}.card{padding:1.2rem}}@media(max-width:480px){.context .grid,.grid{grid-template-columns:1fr}.nav-menu summary{padding:4px 6px}.actions{gap:6px}.back-link{font-size:12px}}
/* Section rhythm follows the original farm report: context / demo / how. */
.context{padding:2.2rem 1.5rem .5rem}#method,#outputs,#validation{padding:2.6rem 1.5rem;margin-top:.5rem}#showcase{padding:1.8rem 1.5rem 2rem}h2{font-size:clamp(1.3rem,3vw,1.6rem)}footer{padding:2.4rem 2rem}

/* Preserve figure label size on small screens without widening the page. */
.public-map-window{max-width:100%;overflow-x:auto;border-radius:8px}.public-map-window>a{display:block;min-width:900px}.public-map-window img{display:block;width:100%;height:auto;max-height:none;object-fit:contain}
