:root{--ink:#18221e;--muted:#66736d;--paper:#f4f6f2;--card:#fff;--line:#dde3dd;--green:#163f32;--green-2:#245c48;--mint:#dcebe3;--red:#a63f3f;--amber:#b7791f;--shadow:0 14px 34px #163f3214}*{box-sizing:border-box}body{color:var(--ink);background:var(--paper);margin:0;font-family:Inter,Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif}button,input,select,textarea{font:inherit}button{cursor:pointer}.shell{grid-template-columns:232px minmax(0,1fr);min-height:100vh;display:grid}.sidebar{background:var(--green);color:#fff;flex-direction:column;height:100vh;padding:28px 18px 18px;display:flex;position:sticky;top:0}.brand{align-items:center;gap:12px;display:flex}.brandLogo{border-radius:12px;flex:none;box-shadow:0 5px 16px #0008183d}.brand small{color:#ffffff9e;margin-top:2px;display:block}nav{gap:7px;margin-top:42px;display:grid}nav button,.logout{text-align:left;color:#ffffffb8;background:0 0;border:0;border-radius:10px;padding:12px 14px}nav button:hover,nav button.active{color:#fff;background:#ffffff1c}.logout{text-align:center;border:1px solid #ffffff2e;margin-top:auto}main{min-width:0;padding:30px 36px 56px}header{justify-content:space-between;align-items:center;margin-bottom:26px;display:flex}h1,h2,p{margin-top:0}h1{margin-bottom:0;font-size:28px}h2{margin-bottom:0;font-size:20px}.eyebrow{color:var(--green-2);letter-spacing:.1em;margin-bottom:7px;font-size:11px;font-weight:700}.systemState{background:var(--mint);color:var(--green);border-radius:99px;padding:8px 12px;font-size:13px}.systemState:before{content:"";background:#2f8d63;border-radius:50%;width:7px;height:7px;margin-right:7px;display:inline-block}.systemState.busy:before{background:var(--amber)}.notice{background:#fff6dc;border:1px solid #ead59a;border-radius:10px;margin:-8px 0 18px;padding:12px 14px}.metricGrid{grid-template-columns:repeat(4,1fr);gap:15px;margin-bottom:18px;display:grid}.metric,.panel{background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:16px}.metric{padding:21px}.metric span,.metric small{color:var(--muted);display:block}.metric strong{margin:10px 0 7px;font-size:28px;display:block}.panel{margin-bottom:18px;padding:22px}.panelTitle,.rowBetween{justify-content:space-between;align-items:center;gap:16px;display:flex}.panelTitle{margin-bottom:18px}.badge{color:#4f5d56;white-space:nowrap;background:#edf1ed;border-radius:99px;align-items:center;width:fit-content;padding:5px 9px;font-size:12px;display:inline-flex}.badge.danger,.status-false,.status-suspended,.status-revoked{color:var(--red);background:#f7dfdf}.status-active,.status-valid,.status-redeemed{background:var(--mint);color:var(--green-2)}.status-pending{color:#9b6518;background:#fff1d6}.tableWrap{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:14px}th{color:var(--muted);text-align:left;border-bottom:1px solid var(--line);padding:11px 12px;font-size:12px;font-weight:600}td{vertical-align:middle;border-bottom:1px solid #edf0ed;padding:14px 12px}tbody tr:last-child td{border-bottom:0}.cellSub{color:var(--muted);margin-top:4px;display:block}.mapLink{color:var(--green);text-underline-offset:2px;font-weight:600;text-decoration:underline}button{border:1px solid var(--line);color:var(--ink);background:#fff;border-radius:9px;padding:9px 12px}button:hover{border-color:#aab8b0}.primary{border-color:var(--green);background:var(--green);color:#fff}.secondary{color:var(--green);background:#f4faf6;border-color:#9eb3a6}.compact{padding:9px 14px}.dangerText{color:var(--red)}.settingsGrid{grid-template-columns:repeat(3,1fr);gap:17px;display:grid}label{color:#445149;gap:7px;font-size:13px;display:grid}input,textarea{width:100%;color:var(--ink);background:#fff;border:1px solid #cfd8d1;border-radius:9px;outline:none;padding:10px 11px}input:focus,select:focus,textarea:focus{border-color:var(--green-2);box-shadow:0 0 0 3px #245c481a}.setting>div{align-items:center;display:flex}.setting input{border-radius:9px 0 0 9px}.setting b{background:#f6f8f5;border:1px solid #cfd8d1;border-left:0;border-radius:0 9px 9px 0;align-self:stretch;place-items:center;min-width:54px;font-weight:500;display:grid}.setting small{color:var(--muted)}.promoPanel{border-left:4px solid var(--green-2);justify-content:space-between;align-items:center;display:flex}.promoPanel p:last-child{color:var(--muted);margin:8px 0 0}.search{max-width:280px}.auditFilters{grid-template-columns:minmax(260px,1fr) 220px 180px;gap:10px;margin-bottom:10px;display:grid}.auditSummary{color:var(--muted);margin:0 0 12px;font-size:13px}.auditDetails{min-width:128px}.auditDetails summary{color:var(--green-2);cursor:pointer;font-weight:600}.auditDetails>div{gap:10px;min-width:360px;margin-top:10px;display:grid}.auditDetails b{margin-bottom:4px;display:block}.auditDetails pre{white-space:pre-wrap;word-break:break-word;background:#f3f6f3;border-radius:8px;max-width:520px;max-height:220px;margin:0;padding:10px;font-size:11px;overflow:auto}.actions{flex-wrap:wrap;gap:6px;display:flex}.actions button{padding:6px 8px;font-size:12px}.productGrid{grid-template-columns:repeat(2,1fr);gap:16px;display:grid}.productCard{border:1px solid var(--line);border-radius:13px;gap:13px;padding:17px;display:grid}.formColumns{grid-template-columns:1fr 1fr;gap:12px;display:grid}.switchLabel{align-items:center;gap:7px;display:flex}.switchLabel input{width:auto}.generated{background:#f1f7f3;border-radius:12px;margin-top:18px;padding:15px}.generated textarea{height:180px;margin-top:12px;font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.loading{min-height:240px;color:var(--muted);place-items:center;display:grid}.loginPage{background:var(--green);grid-template-columns:1.15fr .85fr;min-height:100vh;display:grid}.loginIntro{color:#fff;background:radial-gradient(circle at 20% 20%, #2f6a54 0, transparent 32%), var(--green);padding:12vw 9vw}.loginHeroLogo{border-radius:24px;margin-bottom:28px;box-shadow:0 18px 44px #00071861}.loginIntro .eyebrow{color:#aed4bf}.loginIntro h1{max-width:620px;margin:18px 0 25px;font-size:clamp(36px,5vw,68px);line-height:1.08}.loginIntro>p:last-child{color:#ffffffb3;max-width:520px}.loginCard{background:#fff;border-radius:18px;align-self:center;gap:18px;margin:50px;padding:32px;display:grid;box-shadow:0 28px 80px #00000038}.loginCard .brand{margin-bottom:8px}.formError{color:var(--red);font-size:13px}@media (max-width:1050px){.metricGrid,.settingsGrid{grid-template-columns:repeat(2,1fr)}.auditFilters{grid-template-columns:1fr}}@media (max-width:760px){.shell{display:block}.sidebar{height:auto;padding:16px;position:static}.sidebar .brand,.logout{display:none}nav{margin:0;display:flex;overflow-x:auto}nav button{white-space:nowrap}main{padding:22px 15px 45px}.metricGrid,.settingsGrid,.productGrid{grid-template-columns:1fr}.promoPanel{flex-direction:column;align-items:flex-start;gap:18px}.loginPage{grid-template-columns:1fr}.loginIntro{display:none}.loginCard{margin:20px}}
