:root{color-scheme:light;--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans TC", "PingFang TC", "Microsoft JhengHei", sans-serif;--font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.375rem;--text-2xl: 1.625rem;--text-3xl: 2rem;--leading-tight: 1.25;--leading-normal: 1.55;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--radius-sm: .5rem;--radius-md: .75rem;--radius-lg: 1rem;--radius-xl: 1.25rem;--radius-full: 999px;--shadow-sm: 0 1px 2px rgb(16 24 40 / .06), 0 1px 3px rgb(16 24 40 / .08);--shadow-md: 0 8px 24px rgb(16 24 40 / .1);--shadow-sheet: 0 -8px 32px rgb(16 24 40 / .18);--touch-target: 2.75rem;--content-width: 42rem;--color-bg: #f4f6f9;--color-surface: #ffffff;--color-surface-2: #eef2f7;--color-surface-3: #e2e8f0;--color-text: #17202b;--color-muted: #576778;--color-border: #d3dde8;--color-primary: #0b5cad;--color-primary-hover: #094a8c;--color-on-primary: #ffffff;--color-focus: #0b5cad;--color-overlay: rgb(10 18 28 / .55);--color-danger: #b42318;--color-danger-surface: #fef3f2;--color-code-bg: #eef2f7;--status-in_transit-fg: #0b4f8a;--status-in_transit-bg: #e5f1fb;--status-ready_for_pickup-fg: #8a4b00;--status-ready_for_pickup-bg: #fff0d6;--status-delivered-fg: #17663a;--status-delivered-bg: #e3f7ea;--status-exception-fg: #a21d20;--status-exception-bg: #fde8e8;--status-unknown-fg: #4b5563;--status-unknown-bg: #eceff3}@media (prefers-color-scheme: dark){:root{color-scheme:dark;--shadow-sm: 0 1px 2px rgb(0 0 0 / .35);--shadow-md: 0 10px 28px rgb(0 0 0 / .4);--shadow-sheet: 0 -10px 36px rgb(0 0 0 / .55);--color-bg: #0d1117;--color-surface: #161e27;--color-surface-2: #1e2833;--color-surface-3: #2a3643;--color-text: #e8eef5;--color-muted: #a8b5c4;--color-border: #2c3a48;--color-primary: #5aa9f5;--color-primary-hover: #82bdf8;--color-on-primary: #06121f;--color-focus: #82bdf8;--color-overlay: rgb(0 0 0 / .7);--color-danger: #ff9b95;--color-danger-surface: #3d1618;--color-code-bg: #1e2833;--status-in_transit-fg: #9ccbfb;--status-in_transit-bg: #102c46;--status-ready_for_pickup-fg: #ffd08a;--status-ready_for_pickup-bg: #3d2a0a;--status-delivered-fg: #93e2b5;--status-delivered-bg: #0f3325;--status-exception-fg: #ffb0b0;--status-exception-bg: #3d1618;--status-unknown-fg: #c3ccd6;--status-unknown-bg: #27313c}}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}html,body{max-width:100%;overflow-x:hidden}body{margin:0;min-height:100vh;background:var(--color-bg);color:var(--color-text);font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-normal);-webkit-font-smoothing:antialiased}h1,h2,h3,p,ul,ol,figure{margin:0}h1,h2,h3{line-height:var(--leading-tight)}ul,ol{padding:0;list-style:none}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}a{color:var(--color-primary);text-underline-offset:.15em}img,svg{display:block;max-width:100%}::selection{background:var(--color-primary);color:var(--color-on-primary)}:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.app-shell{width:100%;max-width:var(--content-width);margin:0 auto;padding:var(--space-5) var(--space-4) var(--space-10)}.app-header{padding:var(--space-4) 0 var(--space-5)}.app-header h1{font-size:var(--text-3xl);letter-spacing:.01em}.app-header p{margin-top:var(--space-2);color:var(--color-muted);font-size:var(--text-sm)}.section-title{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);margin:var(--space-6) 0 var(--space-3)}.section-title h2{font-size:var(--text-lg)}.muted{color:var(--color-muted)}.small{font-size:var(--text-sm)}.mono{font-family:var(--font-mono)}.card{min-width:0;padding:var(--space-5);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:var(--touch-target);padding:var(--space-2) var(--space-4);border:1px solid transparent;border-radius:var(--radius-md);background:var(--color-surface-2);color:var(--color-text);font-weight:600;line-height:1.2;text-decoration:none;transition:background-color .16s ease,border-color .16s ease,color .16s ease,transform .16s ease}.btn:hover{background:var(--color-surface-3)}.btn:active{transform:translateY(1px)}.btn:disabled{cursor:not-allowed;opacity:.55;transform:none}.btn-primary{background:var(--color-primary);color:var(--color-on-primary)}.btn-primary:hover{background:var(--color-primary-hover)}.btn-secondary{background:var(--color-surface-2);border-color:var(--color-border)}.btn-ghost{background:transparent;color:var(--color-primary)}.btn-ghost:hover{background:var(--color-surface-2)}.btn-danger{background:var(--color-danger-surface);color:var(--color-danger)}.btn-block{width:100%}.icon-btn{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:var(--touch-target);height:var(--touch-target);padding:0;border:1px solid var(--color-border);border-radius:var(--radius-full);background:var(--color-surface);color:var(--color-text)}.icon-btn:hover{background:var(--color-surface-2)}.field{display:grid;gap:var(--space-2)}.field label{font-size:var(--text-sm);font-weight:600}.input{width:100%;min-height:3rem;padding:var(--space-3) var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);font-size:var(--text-lg);letter-spacing:.04em}.input::placeholder{color:var(--color-muted);letter-spacing:normal}.input:focus-visible{border-color:var(--color-primary)}.search-form{display:grid;gap:var(--space-3)}.search-actions{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3)}.badge{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);font-size:var(--text-sm);font-weight:700;white-space:nowrap}.badge:before{content:"";width:.45rem;height:.45rem;border-radius:var(--radius-full);background:currentColor}.status-in_transit{background:var(--status-in_transit-bg);color:var(--status-in_transit-fg)}.status-ready_for_pickup{background:var(--status-ready_for_pickup-bg);color:var(--status-ready_for_pickup-fg)}.status-delivered{background:var(--status-delivered-bg);color:var(--status-delivered-fg)}.status-exception{background:var(--status-exception-bg);color:var(--status-exception-fg)}.status-unknown{background:var(--status-unknown-bg);color:var(--status-unknown-fg)}.result-card{margin-top:var(--space-5)}.result-head{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:var(--space-3)}.result-head h2{font-size:var(--text-xl);overflow-wrap:anywhere}.number-row{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-2)}.number{min-width:0;font-family:var(--font-mono);font-size:var(--text-lg);overflow-wrap:anywhere}.copy-btn{min-height:var(--touch-target);padding:var(--space-1) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-full);background:var(--color-surface-2);color:var(--color-muted);font-size:var(--text-sm)}.copy-btn:hover{color:var(--color-text);background:var(--color-surface-3)}.status-line{display:flex;align-items:center;gap:var(--space-3);margin-top:var(--space-4)}.status-text{margin-top:var(--space-3);font-size:var(--text-xl);font-weight:700;overflow-wrap:anywhere}.official-note{margin-top:var(--space-3);padding:var(--space-3) var(--space-4);border-left:3px solid var(--color-primary);border-radius:var(--radius-sm);background:var(--color-surface-2);color:var(--color-muted);font-size:var(--text-sm);overflow-wrap:anywhere}.pickup-box{margin-top:var(--space-4);padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-2)}.pickup-box h3{margin-bottom:var(--space-2);font-size:var(--text-base)}.pickup-grid{display:grid;gap:var(--space-2)}.pickup-row{display:grid;grid-template-columns:4.5rem minmax(0,1fr);gap:var(--space-2);font-size:var(--text-sm)}.pickup-row dt{color:var(--color-muted)}.pickup-row dd{margin:0;overflow-wrap:anywhere}.result-meta{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-3);margin-top:var(--space-5);padding-top:var(--space-4);border-top:1px solid var(--color-border);color:var(--color-muted);font-size:var(--text-sm)}.result-actions{display:flex;flex-wrap:wrap;gap:var(--space-2)}.timeline{position:relative;display:grid;gap:var(--space-4);margin-top:var(--space-5);padding-left:var(--space-5)}.timeline:before{content:"";position:absolute;top:.5rem;bottom:.5rem;left:.34rem;width:2px;background:var(--color-border)}.timeline-item{position:relative}.timeline-item:before{content:"";position:absolute;top:.4rem;left:calc(var(--space-5) * -1 + .05rem);width:.7rem;height:.7rem;border:2px solid var(--color-border);border-radius:var(--radius-full);background:var(--color-surface)}.timeline-item.is-latest:before{border-color:var(--color-primary);background:var(--color-primary);box-shadow:0 0 0 4px var(--color-surface-2)}.timeline-time{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-2);color:var(--color-muted);font-size:var(--text-sm)}.timeline-item.is-latest .timeline-time{color:var(--color-text);font-weight:600}.timeline-desc{margin-top:var(--space-1);overflow-wrap:anywhere}.timeline-location{margin-top:var(--space-1);color:var(--color-muted);font-size:var(--text-sm);overflow-wrap:anywhere}.history-list{display:grid;gap:var(--space-3)}.history-item{display:flex;align-items:stretch;gap:var(--space-1);min-width:0;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden}.history-main{display:grid;flex:1 1 auto;gap:var(--space-1);min-width:0;min-height:var(--touch-target);padding:var(--space-3) var(--space-4);border:0;background:transparent;color:inherit;text-align:left}.history-main:hover{background:var(--color-surface-2)}.history-top{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}.history-number{font-family:var(--font-mono);font-weight:600;overflow-wrap:anywhere}.history-meta{display:flex;flex-wrap:wrap;gap:var(--space-2);color:var(--color-muted);font-size:var(--text-sm)}.history-status{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.history-delete{align-self:center;margin-right:var(--space-2);border-color:transparent;background:transparent;color:var(--color-muted)}.history-delete:hover{background:var(--color-danger-surface);color:var(--color-danger)}.empty-state{padding:var(--space-6) var(--space-4);border:1px dashed var(--color-border);border-radius:var(--radius-md);color:var(--color-muted);text-align:center}.error-box{display:grid;gap:var(--space-3)}.error-title{display:flex;align-items:center;gap:var(--space-2);color:var(--color-danger);font-size:var(--text-lg);font-weight:700}.error-message{overflow-wrap:anywhere}.error-official{padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);background:var(--color-danger-surface);color:var(--color-danger);font-size:var(--text-sm);overflow-wrap:anywhere}.error-actions,.candidate-actions{display:flex;flex-wrap:wrap;gap:var(--space-2)}.loading-box{display:grid;gap:var(--space-3);margin-top:var(--space-5)}.skeleton{border-radius:var(--radius-sm);background-image:linear-gradient(90deg,var(--color-surface-2),var(--color-surface-3),var(--color-surface-2));background-size:200% 100%;animation:skeleton-shimmer 1.4s ease-in-out infinite}.skeleton-line{height:1rem}.skeleton-line.wide{width:85%}.skeleton-line.short{width:45%}.skeleton-block{height:5rem}.loading-hint{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-3);color:var(--color-muted);font-size:var(--text-sm)}.spinner{display:inline-block;width:1rem;height:1rem;border:2px solid var(--color-border);border-top-color:var(--color-primary);border-radius:var(--radius-full);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@keyframes skeleton-shimmer{0%{background-position:150% 0}to{background-position:-50% 0}}.sheet-backdrop,.scanner-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;display:flex;align-items:flex-end;justify-content:center;padding:var(--space-4);background:var(--color-overlay)}.sheet{width:100%;max-width:var(--content-width);max-height:min(80vh,34rem);overflow-y:auto;padding:var(--space-5);padding-bottom:calc(var(--space-5) + env(safe-area-inset-bottom,0px));border:1px solid var(--color-border);border-radius:var(--radius-xl) var(--radius-xl) 0 0;background:var(--color-surface);box-shadow:var(--shadow-sheet);animation:sheet-in .18s ease-out}.sheet-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-4)}.sheet-head h2{font-size:var(--text-xl)}.sheet-list{display:grid;gap:var(--space-2)}.sheet-list .btn{justify-content:flex-start;width:100%}@keyframes sheet-in{0%{transform:translateY(1.5rem);opacity:0}to{transform:translateY(0);opacity:1}}.scanner-overlay{z-index:50;align-items:center;padding:var(--space-3)}.scanner-panel{width:100%;max-width:30rem;padding:var(--space-4);border-radius:var(--radius-lg);background:var(--color-surface);box-shadow:var(--shadow-md)}.scanner-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-3)}.scanner-head h2{font-size:var(--text-lg)}.qr-reader{width:100%;min-height:15rem;overflow:hidden;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-2)}.qr-reader video{width:100%!important;height:auto!important}.scanner-hint{margin-top:var(--space-3);color:var(--color-muted);font-size:var(--text-sm)}.scanner-error{margin-top:var(--space-3);padding:var(--space-3);border-radius:var(--radius-sm);background:var(--color-danger-surface);color:var(--color-danger);font-size:var(--text-sm)}.admin-header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-4) 0}.admin-login{max-width:24rem;margin:var(--space-8) auto 0}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:var(--space-3);margin-top:var(--space-4)}.stat-card{display:grid;gap:var(--space-1);min-width:0;padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface)}.stat-card .stat-name{font-weight:700;overflow-wrap:anywhere}.stat-numbers{display:flex;flex-wrap:wrap;gap:var(--space-3);font-size:var(--text-sm);color:var(--color-muted)}.stat-ok{color:var(--status-delivered-fg)}.stat-fail{color:var(--status-exception-fg)}.admin-toolbar{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-5)}.table-wrap{width:100%;max-width:100%;margin-top:var(--space-3);overflow-x:auto;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface)}.admin-table{width:100%;min-width:38rem;border-collapse:collapse;font-size:var(--text-sm)}.admin-table th,.admin-table td{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--color-border);text-align:left;vertical-align:middle}.admin-table th{color:var(--color-muted);font-weight:600;white-space:nowrap}.admin-table tr:last-child td{border-bottom:0}.pagination{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);margin-top:var(--space-3)}.notice{padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);background:var(--color-surface-2);color:var(--color-muted);font-size:var(--text-sm)}.app-footer{margin-top:var(--space-8);padding-top:var(--space-4);border-top:1px solid var(--color-border);color:var(--color-muted);font-size:var(--text-xs);text-align:center}@media (min-width: 30rem){.search-actions{grid-template-columns:auto auto;justify-content:end}.search-actions .btn{min-width:8rem}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
