:root{--tac-gold-a:#ffb549;--tac-gold-a-20:#fff0db;--tac-gold-a-40:#ffe1b6;--tac-gold-a-10:#fff8ed;--tac-gold-b:#c67d30;--tac-gold-b-60:#ddb183;--tac-gold-c-10:#fdfbf3;--tac-cream:#fcf1d5;--tac-brown:#421500;--tac-maroon:#691615;--gradient-gold:linear-gradient(90deg, #f0a42e 0%, #ffb549 18%, #eed484 50%, #ffb549 80%, #e99b2b 100%);--neutral-200:#e7dfd5;--neutral-300:#d2c7ba;--neutral-500:#7e7064;--neutral-600:#5c4f45;--status-danger:#b43630;--status-danger-bg:#f8e6e3;--text-primary:var(--tac-brown);--text-secondary:var(--neutral-600);--text-muted:var(--neutral-500);--border-default:var(--neutral-200);--border-strong:var(--neutral-300);--action-primary:var(--tac-gold-a);--action-primary-hover:#f2a53a;--action-primary-active:#e3962e;--focus-ring:0 0 0 3px #c67d3059;--font-sans:"Noto Sans TC", "PingFang TC", "Microsoft JhengHei", system-ui, sans-serif;--radius-xs:2px;--radius-sm:4px;--radius-md:6px;--control-lg:48px;--duration-fast:.12s;--ease-standard:cubic-bezier(.2, 0, 0, 1)}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%}body{color:var(--text-primary);font-family:var(--font-sans);-webkit-text-size-adjust:100%;background:#fff;margin:0}button,input{font-family:inherit}.page{flex-direction:column;min-height:100%;display:flex}.btn{height:var(--control-lg);border-radius:var(--radius-sm);letter-spacing:.02em;color:var(--tac-brown);cursor:pointer;white-space:nowrap;transition:background var(--duration-fast) var(--ease-standard);border:1px solid #0000;justify-content:center;align-items:center;gap:8px;padding:0 26px;font-size:18px;font-weight:500;display:inline-flex}.btn:focus-visible{box-shadow:var(--focus-ring);outline:0}.btn:disabled{cursor:not-allowed;opacity:.45}.btn-primary{background:var(--action-primary)}.btn-primary:not(:disabled):hover{background:var(--action-primary-hover)}.btn-primary:not(:disabled):active{background:var(--action-primary-active)}.btn-outline{border-color:var(--tac-gold-b);background:0 0}.btn-outline:not(:disabled):hover{background:var(--tac-gold-a-10)}.btn-block{width:100%;display:flex}.status{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:16px;padding:32px;display:flex}.status-icon{border-radius:50%;justify-content:center;align-items:center;width:64px;height:64px;display:flex}.status-icon.is-warning{background:var(--tac-cream);color:var(--tac-gold-b)}.status-icon.is-danger{background:var(--status-danger-bg);color:var(--tac-maroon)}.status-icon.is-success{background:var(--tac-gold-a);color:var(--tac-brown)}.status-title{letter-spacing:.06em;text-wrap:balance;margin:0;font-size:20px;font-weight:700}.status-text{color:var(--text-secondary);text-wrap:pretty;margin:0;font-size:14px;line-height:1.75}.auth-logo{height:40px}.auth-message{flex-direction:column;align-items:center;gap:12px;display:flex}.auth-message strong{font-size:15px;font-weight:500}.auth-message span{color:var(--text-muted);font-size:13px}.spinner{border:3px solid var(--tac-gold-a-40);border-top-color:var(--tac-gold-b);border-radius:50%;width:32px;height:32px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.success{flex-direction:column;flex:1;gap:24px;padding:48px 24px 24px;display:flex}.success-head{text-align:center;flex-direction:column;align-items:center;gap:12px;display:flex}.success-head .status-title{font-size:22px}.summary{border:1px solid var(--border-default);border-radius:var(--radius-md);margin:0}.summary>div{justify-content:space-between;gap:12px;padding:12px 16px;font-size:14px;display:flex}.summary>div+div{border-top:1px solid var(--border-default)}.summary dt{color:var(--text-muted)}.summary dd{font-variant-numeric:tabular-nums;margin:0;font-weight:500}.spacer{flex:1}.form{flex-direction:column;flex:1;display:flex}.brand-bar{background:var(--gradient-gold);flex:none;height:3px}.form-head{flex-direction:column;gap:6px;padding:20px 20px 4px;display:flex}.form-head img{align-self:flex-start;height:26px}.form-head h1{letter-spacing:.06em;margin:10px 0 0;font-size:20px;font-weight:700}.form-head p{color:var(--text-secondary);margin:0;font-size:13px;line-height:1.6}.fields{flex-direction:column;gap:20px;padding:20px 20px 0;display:flex}.field{border:0;flex-direction:column;gap:6px;min-width:0;margin:0;padding:0;display:flex}.field-label{padding:0;font-size:14px;font-weight:500}.required{color:var(--tac-maroon)}.field-help{color:var(--text-muted);font-size:12px}.field-error{color:var(--status-danger);font-size:12px}.input{width:100%;min-width:0;height:var(--control-lg);border:1px solid var(--border-strong);border-radius:var(--radius-sm);color:var(--text-primary);transition:all var(--duration-fast) var(--ease-standard);background:#fff;outline:0;padding:0 12px;font-size:16px}.input:focus{border-color:var(--tac-gold-b);box-shadow:var(--focus-ring)}.input[aria-invalid=true]{border-color:var(--status-danger)}.input::placeholder{color:var(--neutral-300)}.plate{align-items:center;gap:8px;display:flex}.plate .input{text-align:center;letter-spacing:.12em;flex:1;font-size:20px;font-weight:500}.plate-dash{color:var(--text-muted);font-size:20px}.receipts{flex-direction:column;gap:10px;padding:24px 20px 0;display:flex}.receipts-head{justify-content:space-between;align-items:baseline;display:flex}.receipts-count{color:var(--text-muted);font-variant-numeric:tabular-nums;font-size:12px}.chips{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.chips li{border-radius:var(--radius-xs);background:var(--tac-gold-a-20);padding:2px 8px;font-size:12px}.grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.thumb{aspect-ratio:1;border:1px solid var(--border-default);border-radius:var(--radius-md);background:var(--tac-cream);position:relative;overflow:hidden}.thumb img{object-fit:cover;width:100%;height:100%;display:block}.thumb-no{border-radius:var(--radius-xs);background:var(--tac-brown);color:#fff;justify-content:center;align-items:center;min-width:18px;height:18px;padding:0 4px;font-size:11px;display:flex;position:absolute;bottom:6px;left:6px}.thumb-remove{color:#fff;cursor:pointer;background:#421500b3;border:0;border-radius:50%;justify-content:center;align-items:center;width:28px;height:28px;padding:0;display:flex;position:absolute;top:4px;right:4px}.add-tile{aspect-ratio:1;border:1.5px dashed var(--tac-gold-b-60);border-radius:var(--radius-md);background:var(--tac-gold-c-10);color:var(--text-primary);cursor:pointer;flex-direction:column;justify-content:center;align-items:center;gap:4px;font-size:12px;display:flex}.add-tile svg{color:var(--tac-gold-b)}.add-tile:disabled{cursor:progress;opacity:.6}.alert{border-radius:var(--radius-sm);background:var(--status-danger-bg);color:var(--status-danger);align-items:center;gap:8px;padding:10px 12px;font-size:13px;display:flex}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.form-footer{border-top:1px solid var(--border-default);background:#fff;flex:none;margin-top:24px;padding:12px 20px 24px;position:sticky;bottom:0}
