@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}.onboarding-banner{background:#eaf2d9;border:2px solid #246548;border-radius:18px;margin:20px 0 24px;padding:28px}.onboarding-banner h2{margin:10px 0;font-size:clamp(24px,4vw,34px)}.onboarding-banner .primary{min-height:58px;margin:12px 0;padding:16px 28px;font-size:20px;font-weight:700}.onboarding-banner p{line-height:1.7}#stall-details{scroll-margin-top:24px}@media (max-width:600px){.onboarding-banner{padding:20px}.onboarding-banner .primary{width:100%}}.today-workflow{max-width:900px;margin:0 auto}.today-workflow h3{margin-top:28px}.publish-controls{background:#f4f7ed;border:1px solid #d7e2cc;border-radius:14px;margin-top:20px;padding:20px}.publish-controls h3{margin-top:0}.publish-controls>.primary{width:100%;min-height:54px;font-size:18px}.today-workflow .privacy-switch{margin:12px 0}.stall-state-buttons{gap:12px;margin:20px 0;display:flex}.stall-state-buttons button{flex:1;min-height:60px;font-size:22px;font-weight:700}.stall-state-buttons .active{background:#e7eae5;border:2px solid #627366}#today-position{scroll-margin-top:24px}.today-workflow{max-width:1200px}.today-workspace{grid-template-columns:minmax(280px,1fr) minmax(320px,1fr);align-items:start;gap:20px;display:grid}.today-tools h3{margin:10px 0;font-size:18px}.today-tools p{margin:8px 0;font-size:14px;line-height:1.5}.today-tools button{min-height:42px;padding:9px 14px;font-size:15px}.today-tools label{margin-bottom:8px}.today-tools input:not([type=checkbox]){min-height:42px;padding:10px}.today-tools .publish-controls{margin-top:12px;padding:14px}.today-tools .stall-state-buttons{gap:10px;margin:12px 0}.today-tools .stall-state-buttons button{min-height:44px;font-size:17px}.today-map-preview .map{height:420px;min-height:0}.today-map-preview p{font-size:12px}.today-workflow>.panel>.privacy-switch{margin:8px 0}@media (max-width:760px){.today-workspace{grid-template-columns:1fr;gap:14px}.today-map-preview .map{height:280px}.today-workflow .panel{padding:16px}}.stall-name-label{color:#174d39;border:1px solid #8db799;border-radius:7px;padding:5px 9px;font-size:13px;font-weight:700;box-shadow:0 2px 5px #0002}.stall-marker-active{filter:drop-shadow(0 0 7px #e7ac23)!important}.stall-name-active{color:#183c2c;background:#fff4c7;border-color:#d59b16}.stall-card-active{background:#f1f8ec;outline:2px solid #28734f}.stall-card .compact-stall-link{color:inherit;padding:12px 14px;text-decoration:none;display:block}.compact-stall-link h3{margin:0 0 5px;font-size:17px;line-height:1.35}.stall-card .compact-stall-link p{color:#63776b;-webkit-line-clamp:1;-webkit-box-orient:vertical;margin:0;font-size:13px;line-height:1.5;display:-webkit-box;overflow:hidden}.compact-stall-link:focus-visible{outline-offset:-3px;outline:2px solid #28734f}.inbox-message{border-bottom:1px solid #dbe3d8;padding:16px 0}.inbox-message h3{margin:0 0 8px}.merchant-table-wrap{overflow-x:auto}.merchant-table{border-collapse:collapse;width:100%}.merchant-table th,.merchant-table td{text-align:left;vertical-align:top;border-bottom:1px solid #dbe3d8;padding:14px 10px}.merchant-table th{white-space:nowrap}.merchant-actions{flex-wrap:wrap;gap:6px;display:flex}.merchant-actions button{min-height:38px;padding:8px 10px;font-size:13px}#admin-compose{margin:20px 0;scroll-margin-top:20px}.unread-count{color:#b42318;font-weight:700}.chips button.active .unread-count{color:#b42318;background:#fff1ef;border-radius:4px;padding:2px 4px}.account-status{align-items:center;gap:8px;font-size:13px;display:flex}.account-email{overflow-wrap:anywhere;max-width:260px}.account-status button{min-height:36px;padding:7px 10px;font-size:13px}@media (max-width:600px){header nav{flex-wrap:wrap}.account-status{flex-basis:100%;justify-content:flex-end}.account-email{max-width:100%}}.compact-stall-heading{justify-content:space-between;align-items:center;gap:8px;display:flex}.compact-stall-heading h3{min-width:0}.stall-status-light{white-space:nowrap;flex-shrink:0;font-size:11px}.stall-status-light.is-open{color:#21694d}.stall-status-light.is-closed{color:#69726d}.stall-status-light>span{font-size:13px}.password-field{position:relative}.password-field input{width:100%;padding-right:52px}.password-field .password-toggle{color:#246548;background:0 0;border:0;justify-content:center;align-items:center;width:44px;height:44px;min-height:44px;padding:0;display:flex;position:absolute;top:50%;right:4px;transform:translateY(-50%)}.password-toggle:focus-visible{outline-offset:-3px;outline:2px solid #246548}.brand-group{align-items:center;gap:12px;display:flex}.brand-group>small{letter-spacing:1px;white-space:nowrap;font-size:12px}header .header-entry{letter-spacing:0;white-space:nowrap;flex-shrink:0;justify-content:center;align-items:center;width:132px;min-height:48px;font-size:23px;font-weight:800;display:inline-flex}header{height:auto;min-height:86px;padding-top:10px;padding-bottom:10px}@media (max-width:850px){.brand-group>small{display:none}header .header-entry{width:112px;min-height:48px;font-size:20px}header{min-height:74px}.brand-group{align-self:flex-start}}
