@import "https://fonts.googleapis.com/css2?family=Noto+Sans+TC:wght@400;500;600;700;800&display=swap";
:root{--ink:#233e33;--green:#216548;--paper:#f7f8f2;--muted:#6c7b72;--line:#dee5dc;--lime:#e5edc5;--white:#fff}*{box-sizing:border-box}body{background:var(--paper);color:var(--ink);margin:0;font-family:Noto Sans TC,system-ui,sans-serif;font-size:15px;line-height:1.7}a{color:inherit;text-decoration:none}a:hover{text-decoration:underline}button,input,select,textarea{font:inherit}button,.button{border:1px solid var(--line);min-height:44px;color:var(--ink);cursor:pointer;background:#fff;border-radius:10px;justify-content:center;align-items:center;gap:8px;padding:10px 18px;display:inline-flex}button:hover,.button:hover{border-color:var(--green);background:#f0f5e9;text-decoration:none}button:disabled{cursor:not-allowed;opacity:.5}.button,.primary{background:var(--green);color:#fff;border-color:var(--green)}.primary:hover{color:#fff;background:#174b35}input,select,textarea{border:1px solid var(--line);color:var(--ink);background:#fff;border-radius:9px;max-width:100%;min-height:46px;padding:12px 14px}textarea{min-height:100px}input:focus,select:focus,textarea:focus,button:focus-visible,a:focus-visible{outline-offset:2px;outline:3px solid #afcf94}header{border-bottom:1px solid var(--line);background:#fff;justify-content:space-between;align-items:center;height:86px;padding:0 5%;display:flex}.brand{letter-spacing:-1px;font-size:27px;font-weight:800}.brand small{letter-spacing:1px;margin-left:12px;font-size:12px;font-weight:500;display:inline-block}nav{align-items:center;gap:25px;display:flex}main{max-width:1440px;margin:auto;padding:34px 5% 55px}.hero{justify-content:space-between;align-items:center;padding:25px 0 32px;display:flex}.eyebrow{color:var(--green);letter-spacing:3px;font-size:12px;font-weight:700}h1{letter-spacing:-1.5px;margin:10px 0 14px;font-size:clamp(28px,3.5vw,46px);line-height:1.4}h1 span{color:var(--green)}h2{margin:0 0 8px;font-size:21px}h3{margin:6px 0;font-size:18px}p{margin:8px 0 16px}.hero p{color:var(--muted)}.hero-stamp{text-align:center;background:#eef2df;border:1px solid #aabd96;border-radius:50%;flex-direction:column;justify-content:center;width:140px;height:140px;font-size:10px;line-height:1.4;display:flex;transform:rotate(9deg)}.hero-stamp strong{font-size:22px}.searchbar{border:1px solid var(--line);background:#fff;border-radius:14px;gap:10px;padding:10px;display:flex;box-shadow:0 5px 18px #233e3305}.search{flex:1;align-items:center;padding-left:10px;font-size:25px;display:flex}.search input{border:0;outline:none;flex:1;width:100%}.district{width:130px}.chips{flex-wrap:wrap;gap:8px;margin:20px 0;display:flex}.chips button{border-radius:30px;min-height:40px;padding:8px 18px;font-size:13px}.chips button.active{background:var(--green);color:#fff;border-color:var(--green)}.chips a{border:1px solid var(--line);border-radius:8px;padding:10px 15px}.section-title{justify-content:space-between;align-items:center;gap:15px;margin:28px 0 18px;display:flex}.section-title small,small,.muted{color:var(--muted)}.count{background:var(--lime);vertical-align:middle;border-radius:20px;padding:3px 8px;font-size:12px}.explore{border:1px solid var(--line);background:#fff;border-radius:16px;grid-template-columns:370px 1fr;height:570px;display:grid;overflow:hidden}.results{padding:14px;overflow:auto}.map-wrap{background:#e8eddf;min-height:330px;position:relative}.map{z-index:1;background:#e8eddf;height:100%;min-height:330px}.map-notice{z-index:500;border:1px solid var(--line);pointer-events:none;background:#ffffffed;border-radius:12px;padding:16px;position:absolute;top:20px;left:20px;right:20px}.pin{color:var(--green);text-shadow:0 0 2px #fff;filter:drop-shadow(0 2px 2px #0004);font-size:28px}.empty{text-align:center;padding:90px 20px}.empty>div{color:#a6ba8c;font-size:48px}.empty p{color:var(--muted);font-size:13px}.empty .button{font-size:12px}.notice{overflow-wrap:anywhere;background:#fff5dc;border:1px solid #e7d8ad;border-radius:10px;padding:16px}.notice button{margin-top:10px;display:block}.stall-card{border:1px solid var(--line);border-radius:12px;margin-bottom:12px;overflow:hidden}.stall-card>img{object-fit:cover;width:100%;height:140px}.stall-card>div{padding:15px}.stall-card small{font-size:11px;display:block}.stall-card p{margin-bottom:8px;font-size:13px}.badge{color:#296946;background:#e9f5e7;border-radius:20px;margin-bottom:6px;padding:3px 9px;font-size:12px;display:inline-block}.badge.off{color:#72796d;background:#eaece8}.text-link{color:var(--green);margin-top:10px;font-weight:600;display:block}.list-only{height:auto;min-height:350px;display:block}.list-only .results{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px;display:grid}.join{background:var(--lime);border-radius:16px;justify-content:space-between;align-items:center;gap:15px;margin-top:32px;padding:30px;display:flex}.join p{color:var(--muted);margin:0}footer{border-top:1px solid var(--line);color:var(--muted);text-align:center;padding:26px 5%;font-size:12px}.narrow{max-width:700px;min-height:75vh;padding-top:60px}.panel{border:1px solid var(--line);background:#fff;border-radius:14px;margin:16px 0;padding:26px}.panel label{flex-direction:column;gap:7px;margin:14px 0;display:flex}.panel>button{margin:8px 8px 8px 0}.panel .check{flex-flow:wrap;align-items:center;font-size:13px}.check input{width:20px;height:20px;min-height:20px}.narrow .panel>button{width:100%}.session{text-align:right;color:var(--muted);margin:15px 5% 0;font-size:12px}.session button{margin-left:15px}.dashboard-grid{grid-template-columns:1fr 1.5fr;gap:22px;display:grid}.dashboard-grid .map-wrap{border-radius:10px;height:330px;overflow:hidden}.privacy-switch{background:#f5f8ed;border-radius:12px;justify-content:space-between;align-items:center;margin:25px 0;padding:15px;display:flex}.privacy-switch p{margin:5px 0;font-size:12px}.form-grid{grid-template-columns:1fr 1fr;gap:0 25px;display:grid}.product-edit{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:12px;padding:15px 0;display:flex}.product-edit label{flex:1;min-width:160px}.thumb{object-fit:cover;border-radius:10px;width:160px;height:130px}.detail{max-width:1100px}.cover{object-fit:cover;border-radius:18px;width:100%;max-height:380px}.products{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:18px;display:grid}.products .panel{margin:0}.products .thumb{width:100%;height:180px}.qr{justify-content:space-between;align-items:center;gap:20px;display:flex}.qr img{width:190px;height:190px}.qr p{color:var(--muted);font-size:13px}.qr button,.qr .button{margin:5px}.stats{grid-template-columns:repeat(4,1fr);gap:20px;margin:25px 0;display:grid}.stats>div{border:1px solid var(--line);background:#fff;border-radius:12px;padding:20px}.stats strong{font-size:35px;display:block}.admin-row{border-bottom:1px solid var(--line);align-items:center;gap:12px;padding:15px 0;display:flex}.admin-row span{overflow-wrap:anywhere;flex:1}details summary{cursor:pointer}@media (max-width:850px){header{height:74px;padding:0 4%}.brand{font-size:23px}.brand small{display:none}nav{gap:12px;font-size:12px}nav>a:first-child{display:none}nav .button{padding:8px 12px}main{padding:22px 4% 35px}.hero{padding:20px 0}.hero-stamp{display:none}.searchbar{flex-wrap:wrap}.search{flex-basis:100%}.searchbar select{flex:1;min-width:100px}.district{width:110px}.explore{flex-direction:column-reverse;height:auto;display:flex}.explore>.map-wrap{height:380px}.results{max-height:520px}.empty{padding:40px 20px}.dashboard-grid,.form-grid{grid-template-columns:1fr}.join{flex-direction:column;align-items:flex-start;padding:22px}.qr{flex-direction:column}.stats{grid-template-columns:1fr 1fr;gap:10px}.section-title h1{font-size:28px}.admin-row{flex-wrap:wrap}.admin-row span{flex-basis:100%}.session{overflow-wrap:anywhere}.hero p{font-size:13px}.chips{gap:6px}.chips button{padding:8px 12px}.list-only .results{max-height:none;display:block}}.logo{object-fit:cover;border-radius:50%;width:72px;height:72px;margin:10px 0}.admin-feedback{z-index:1000;border-radius:12px;justify-content:space-between;align-items:center;gap:12px;margin:18px 0;padding:18px 22px;display:flex;position:sticky;top:12px;box-shadow:0 5px 18px #233e3315}.admin-feedback.success{color:#18552a;background:#e7f6e8;border:2px solid #387a49}.admin-feedback.failure{color:#8c2e20;background:#fff0ed;border:2px solid #bc4f3a}.admin-feedback.pending{background:#fff5dc;border:1px solid #e7d8ad}.admin-feedback button{background:0 0;flex-shrink:0;min-width:44px;font-size:22px}.moderation-approved{color:#205f32;background:#e3f3df;font-weight:700}.moderation-pending{color:#805915;background:#fff0c7}.moderation-rejected{color:#913727;background:#ffe5df}.dashboard-feedback{z-index:1100;color:#174c35;background:#edf9f1;border:2px solid #287653;border-radius:14px;align-items:flex-start;gap:16px;width:min(680px,100% - 32px);padding:18px 22px;display:flex;position:fixed;bottom:24px;left:50%;transform:translate(-50%);box-shadow:0 8px 32px #0003}.dashboard-feedback p{margin:6px 0 0}.dashboard-feedback>div{flex:1}.dashboard-feedback button{flex-shrink:0;min-height:44px;padding:4px 12px;font-size:24px}.dashboard-feedback.failure{color:#8a2018;background:#fff1f0;border-color:#b42318}.stall-map-pin{filter:drop-shadow(0 3px 3px #0005);background:0 0;border:0}.stall-map-pin:hover{filter:drop-shadow(0 4px 5px #0008)}.optional-stall-info{border:1px solid #d8e3db;border-radius:12px;margin:24px 0;padding:18px}details>summary{cursor:pointer;padding:12px 0;font-weight:600}details[open]>.form-grid{margin-top:16px}.weekly-day{border-top:1px solid #d8e3db;padding:16px 0}.weekly-day small{color:#64756b;margin:10px 0;display:block}.weekly-planner{margin-bottom:24px}
