:root{font-family:Inter,"Noto Sans TC","Microsoft JhengHei",sans-serif;color:#20322c;background:#f3f5f2;font-synthesis:none;--green:#23664c;--line:#e0e7df;--muted:#6c7b72}*{box-sizing:border-box}body{margin:0}a{color:var(--green);text-decoration:none}a:hover{text-decoration:underline}.topbar{height:76px;padding:0 max(28px,calc((100vw - 1320px)/2));background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}.brand{display:flex;align-items:center;gap:10px;font-weight:800;letter-spacing:.04em;color:#22392e}.brand-mark{background:#245b44;color:white;width:34px;height:34px;border-radius:10px;text-align:center;font-size:27px;line-height:31px}.brand-sub{font-size:14px;font-weight:500;color:var(--muted)}nav{display:flex;align-items:center;gap:24px}nav form{margin:0}main{max-width:1376px;margin:auto;padding:38px 28px 60px}.page-heading{display:flex;align-items:center;justify-content:space-between;margin:12px 0 30px;gap:16px}h1{font-size:30px;letter-spacing:-.03em;margin:9px 0 12px;line-height:1.4}h2{font-size:18px;margin:8px 0 18px}.eyebrow{font-size:10px;letter-spacing:.15em;color:#587260;font-weight:800}.muted{color:var(--muted)}p{font-size:14px;line-height:1.7}.small{font-size:12px}.pill{font-size:12px;padding:6px 12px;background:#e5efdf;color:#4d673d;border-radius:30px;white-space:nowrap}.pill.used{color:#6e736e;background:#edf0ec}.metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-bottom:28px}.metrics article{background:#fff;padding:24px;border:1px solid var(--line);border-radius:14px}.metrics article>span{font-size:13px;color:var(--muted)}.metrics strong{display:block;font-size:36px;font-weight:600;margin-top:10px;font-variant-numeric:tabular-nums}.metrics small{font-size:12px;font-weight:400;margin-left:10px;color:var(--muted)}.accent{color:#af6a26}.panel{padding:26px;background:#fff;border:1px solid var(--line);border-radius:14px;margin-bottom:24px}.section-heading{display:flex;justify-content:space-between;align-items:center;gap:18px}.section-heading h2{margin:0 0 8px}.section-heading .search-label{max-width:210px}.table-scroll{overflow:auto;margin-top:18px}table{width:100%;border-collapse:collapse;white-space:nowrap;text-align:left}th{font-size:11px;color:var(--muted);font-weight:500;background:#f6f8f4;padding:12px 14px}td{padding:18px 14px;font-size:13px;border-bottom:1px solid #edf0eb}tbody tr:last-child td{border-bottom:0}.number{text-align:right;font-variant-numeric:tabular-nums}.balance{font-size:18px;font-weight:600}.account{font-weight:650;letter-spacing:.03em}.payment{display:block;font-size:11px;margin-top:6px;color:#af6a26}.actions{display:flex;align-items:center;flex-wrap:wrap;gap:8px}td.actions{min-width:265px}.two-columns{display:grid;grid-template-columns:1fr 1fr;gap:24px}button,.button{font:inherit;font-size:12px;cursor:pointer;border:1px solid #d2dfd3;background:#fff;color:#31573f;border-radius:7px;padding:9px 12px;white-space:nowrap}button:hover,.button:hover{background:#eff4ec;text-decoration:none}button:disabled{opacity:.5;cursor:wait}.primary{background:var(--green);color:#fff;border-color:var(--green)}.primary:hover{background:#194e38}.quiet{border-color:transparent;background:transparent}.full{width:100%;margin-top:16px}.form-row{display:flex;gap:14px}.form-row>*{flex:1;min-width:0}label{display:block;font-size:12px;color:#526459;margin-bottom:14px}input,select{display:block;width:100%;font:inherit;font-size:14px;color:#243d2c;border:1px solid #d6dfd3;background:#fcfdfb;padding:11px 12px;border-radius:7px;margin-top:6px}input:focus,select:focus{outline:2px solid #94b8a2;outline-offset:1px}.search-label input{margin:0}input[type=checkbox]{display:inline-block;width:auto;margin-right:7px}.login-card{max-width:420px;background:#fff;border:1px solid var(--line);padding:40px;border-radius:16px;margin:70px auto}.error{color:#a44430}.empty{text-align:center;padding:45px;color:var(--muted)}.jobs-list{display:grid;gap:8px}.job{border:1px solid var(--line);padding:14px;border-radius:8px}.job-head{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:13px}.job-meta{font-size:11px;color:var(--muted);margin-top:8px}.job details{margin-top:12px;font-size:12px}.job pre{white-space:pre-wrap;word-break:break-word;background:#f5f7f2;padding:14px;max-height:280px;overflow:auto}.job .error{margin-bottom:0}.notice{position:fixed;right:24px;bottom:24px;max-width:440px;background:#203e2d;color:#fff;box-shadow:0 8px 25px #132c3020;padding:16px 22px;border-radius:10px;font-size:14px;z-index:5}.ticket-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:20px}.ticket{margin:0}.ticket h2{margin-top:20px;line-height:1.5}.ticket dl{font-size:13px}.ticket dt{color:var(--muted);margin-top:18px}.ticket dd{margin:6px 0 20px}.serial{letter-spacing:.06em;word-break:break-all}footer{text-align:center;font-size:11px;color:#82907f;padding:20px}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0)}#quote-panel{margin-top:20px;background:#f5f8ef;padding:20px;border-radius:10px}#quote-panel strong{font-size:20px}.quote-values{display:flex;gap:20px;margin:12px 0}@media(max-width:850px){main{padding:24px 16px}.two-columns{grid-template-columns:1fr;gap:0}.metrics{gap:10px}.metrics article{padding:18px 14px}.metrics strong{font-size:27px}h1{font-size:24px}.topbar{padding:0 20px}.panel{padding:20px}.page-heading{align-items:flex-start}}@media(max-width:520px){.metrics{grid-template-columns:1fr}.metrics article{display:flex;justify-content:space-between;align-items:center}.metrics strong{margin:0}.page-heading>.pill{display:none}.form-row{display:block}.brand-sub{display:none}.ticket-grid{grid-template-columns:1fr}.job-head{flex-wrap:wrap}}

.sort-heading{border:0;background:transparent;padding:4px 0;font:inherit;color:inherit}.sort-heading:hover{background:transparent;color:var(--green)}.sort-heading span{margin-left:5px}.sort-heading:focus-visible{outline:2px solid var(--green);outline-offset:4px}
.manager-tabs{margin-bottom:24px}.inventory-product{display:flex;justify-content:space-between;gap:24px;padding:20px 0;border-top:1px solid var(--line)}.inventory-product h3{font-size:15px;margin:0;line-height:1.7;overflow-wrap:anywhere}.inventory-select{display:flex;align-items:center;gap:12px;flex-shrink:0}.inventory-select input{width:90px}.inventory-select label{margin:0}.manager-used{margin-top:20px}.ticket-preview{display:block;width:100%;padding:0;margin-top:20px;background:#fff;border:0}.ticket-preview img{max-width:100%;height:auto;display:block;margin:auto}.ticket h2{overflow-wrap:anywhere}#ticket-lightbox{border:0;border-radius:12px;padding:16px;max-width:95vw;max-height:95vh}#ticket-lightbox::backdrop{background:#14291cbb}#ticket-lightbox img{display:block;max-width:100%;max-height:80vh;margin:12px auto 0}.clipboard-fallback{position:fixed;left:-9999px}@media(max-width:600px){.inventory-product{flex-direction:column;gap:12px}.inventory-select{align-self:flex-start}.topbar{height:auto;min-height:76px;flex-wrap:wrap;gap:12px;padding:16px}nav{gap:14px;font-size:13px}.ticket-grid{grid-template-columns:minmax(0,1fr)}}
/* Readable, touch-friendly controls shared by desktop and mobile. */
body{font-size:16px}p{font-size:15px}.small{font-size:13px}label{font-size:14px}button,.button{font-size:14px;min-height:42px}input,select{font-size:16px}th{font-size:13px}td{font-size:14px}.pill{font-size:13px}.inventory-product h3{font-size:17px}.inventory-select{display:grid;grid-template-columns:minmax(170px,1fr) auto;gap:12px;width:360px;max-width:100%;align-items:center}.quantity-slider{font-size:15px}.quantity-slider output{font-weight:700;color:var(--green)}.inventory-select input[type=range]{width:100%;padding:0;min-height:40px;accent-color:var(--green);cursor:pointer}.quick-quantities{grid-column:1/-1;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}.quick-quantities button{padding:10px 6px}.quick-quantities button:disabled{cursor:not-allowed}.inventory-product>div:first-child{min-width:0}.ticket-preview{min-height:0}.ticket-preview img{width:auto}.sort-heading{min-height:40px}@media(max-width:850px){.inventory-product{flex-direction:column}.inventory-select{align-self:stretch;width:100%}.topbar nav{gap:12px}}@media(max-width:520px){.actions{gap:10px}.actions button,.actions .button{white-space:normal}.inventory-select{grid-template-columns:minmax(0,1fr) auto}.topbar nav{font-size:14px}.ticket-grid{grid-template-columns:minmax(0,1fr)}}
#purchase-card h3{font-size:15px;margin:24px 0 16px}.update-actions{display:flex;flex-direction:column;align-items:stretch;gap:14px}.update-actions button{white-space:normal;text-align:left;min-height:48px}.two-columns>section{min-width:0}

.jobs-list{max-height:520px;overflow-y:auto;overscroll-behavior:contain;align-content:start}.jobs-list:focus-visible{outline:2px solid var(--green)}#active-jobs-list{max-height:280px}#clear-pending{margin-top:12px}.copy-text{border:0;background:transparent;padding:0;font:inherit;color:inherit;white-space:normal;text-align:left;min-height:0}.copy-text:hover{text-decoration:underline;background:transparent}.copy-text:focus-visible{outline:2px solid var(--green);outline-offset:3px}
body.lightbox-open{overflow:hidden}#ticket-lightbox{background:#101813;color:white;width:min(960px,96vw);max-width:96vw;max-height:96dvh;padding:12px;overflow:hidden}#ticket-lightbox::backdrop{background:#000d}.lightbox-toolbar{display:flex;align-items:center;justify-content:space-between;padding:0 8px}.lightbox-toolbar output{font-variant-numeric:tabular-nums}.lightbox-toolbar button,.lightbox-stage button{background:#ffffff18;color:white;border:0;font-size:30px;min-width:44px;min-height:44px}.lightbox-stage{position:relative;display:flex;align-items:center;justify-content:center;touch-action:pan-y pinch-zoom;min-height:120px}#ticket-lightbox img{max-width:calc(100% - 100px);max-height:calc(96dvh - 90px);object-fit:contain;margin:12px auto 0}.lightbox-stage>button{position:absolute;top:50%;transform:translateY(-50%);z-index:1}.lightbox-stage>[data-lightbox-prev]{left:0}.lightbox-stage>[data-lightbox-next]{right:0}@media(max-width:520px){#ticket-lightbox{padding:8px}#ticket-lightbox img{max-width:100%}.lightbox-stage>button{background:#0009}.metrics article:last-child{flex-wrap:wrap}#clear-pending{flex-basis:100%;text-align:right}}

.notice{pointer-events:none}

#accounts-table tr.expires-today>td{background:#fff0e8;border-bottom-color:#efc5b5}#accounts-table tr.expires-today>td:first-child{box-shadow:inset 4px 0 #bd3c24}#accounts-table tr.expires-today .account,#accounts-table tr.expires-today .expiry-date,#accounts-table tr.expires-today .expiry-points{color:#9c2f1b;font-weight:700}.expiry-today-label{display:inline-block;margin-left:8px;padding:4px 8px;border-radius:5px;background:#b63822;color:#fff;font-size:12px;font-weight:700;line-height:1.4}

button.payment-action,a.payment-action{background:#facc15;color:#422006;border-color:#eab308;font-weight:700}button.payment-action:hover,a.payment-action:hover{background:#eab308;color:#422006}

#accounts-panel .section-heading{display:grid;grid-template-columns:1fr auto 1fr}#accounts-panel .section-heading h2{grid-column:2;font-size:24px;text-align:center;margin:0}#accounts-panel .search-label{grid-column:3;justify-self:end;margin:0}#accounts-table th,#accounts-table td{font-size:16px;text-align:center;vertical-align:middle}#accounts-table .balance{font-size:22px}#accounts-table .account{font-size:17px}#accounts-table button,#accounts-table .button{font-size:16px;min-height:46px}#accounts-table .actions{justify-content:center}#accounts-table .expiry-today-label{font-size:14px}@media(max-width:600px){#accounts-panel .section-heading{display:flex;flex-direction:column}#accounts-panel .section-heading h2{width:100%}#accounts-panel .search-label{align-self:center;width:100%}}
