:root{--brand: #9b0202;--brand-dark: #7a0101;--brand-bright: #e3000e;--accent: #f7be27;--accent-dark: #d99e00;--bg: #faf6f1;--card: #ffffff;--ink: #2a211c;--muted: #8a7f73;--line: #ece2d8;--ok: #16a34a;--warn: #d97706;--err: #c01616;--radius: 12px;--shadow: 0 1px 3px rgba(42, 33, 28, .08), 0 1px 2px rgba(42, 33, 28, .05)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased}.app-shell{display:flex;flex-direction:column;min-height:100%}.app-header{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;padding:10px 16px;background:var(--brand);color:#fff;border-bottom:3px solid var(--accent)}.brand{display:flex;align-items:center;gap:10px;font-weight:800;font-size:1.05rem;letter-spacing:.2px}.brand-logo{width:34px;height:34px;border-radius:50%;background:#fff;padding:2px;object-fit:contain;box-shadow:0 0 0 1px #0000000f;flex:none}.brand-sub{font-weight:600;color:var(--accent)}.header-user{display:flex;align-items:center;gap:8px;font-size:.85rem}.user-name{max-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.role-chip{text-transform:capitalize;background:#fff3;padding:2px 8px;border-radius:999px;font-size:.72rem}.app-main{flex:1;padding:16px 16px 84px;max-width:760px;margin:0 auto;width:100%}.app-nav{position:fixed;bottom:0;left:0;right:0;display:flex;justify-content:space-around;background:var(--card);border-top:1px solid var(--line);padding:6px 4px env(safe-area-inset-bottom)}.nav-item{display:flex;flex-direction:column;align-items:center;gap:2px;text-decoration:none;color:var(--muted);font-size:.68rem;padding:4px 8px;border-radius:8px}.nav-item.active{color:var(--brand);background:#fbeaea}.nav-icon{font-size:1.2rem}.page-title{font-size:1.25rem;margin:4px 0 16px}.page{display:flex;flex-direction:column;gap:14px}.hint{color:var(--muted);font-size:.82rem;margin:4px 0}.muted{color:var(--muted)}.unit{color:var(--muted);font-weight:400;font-size:.85em}.field{display:flex;flex-direction:column;gap:6px}.field-label{font-weight:600;font-size:.85rem}.field-hint{color:var(--muted);font-size:.78rem}.input{width:100%;padding:12px;font-size:1rem;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink)}.input:focus{outline:2px solid var(--brand);border-color:var(--brand)}.input-lg{font-size:1.4rem;font-weight:600;text-align:center}.input-sm{padding:6px 8px;font-size:.85rem;width:auto}.row{display:flex;gap:12px}.row>*{flex:1}.row-actions{display:flex;gap:8px;align-items:center}.combo{position:relative}.combo-field{position:relative;display:flex;align-items:center}.combo-field .input{padding-right:38px}.combo-clear{position:absolute;right:8px;top:50%;transform:translateY(-50%);width:26px;height:26px;border:none;background:#f1ece6;color:var(--muted);border-radius:50%;font-size:1.1rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center}.combo-clear:hover{background:#e7ddd2;color:var(--ink)}.combo-list{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:30;margin:0;padding:4px;list-style:none;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 10px 28px #2a211c29;max-height:300px;overflow-y:auto}.combo-option{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border-radius:8px;cursor:pointer}.combo-option.active{background:#fbeaea}.combo-name{font-weight:500}.combo-name mark{background:#fdebb0;color:inherit;border-radius:3px;padding:0 1px}.combo-meta{color:var(--muted);font-size:.78rem;white-space:nowrap;text-transform:capitalize}.combo-empty{padding:12px;color:var(--muted);font-size:.88rem}.pack-total{font-size:1.05rem;padding:4px 0 2px}.pack-total strong{color:var(--brand);font-size:1.15rem}.segmented{display:flex;gap:8px}.seg{flex:1;padding:12px;border:1px solid var(--line);background:#fff;border-radius:10px;font-size:.95rem;cursor:pointer}.seg.on{background:var(--brand);color:#fff;border-color:var(--brand)}.btn{padding:12px 16px;border-radius:10px;border:1px solid transparent;font-size:.95rem;font-weight:600;cursor:pointer}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--brand);color:#fff}.btn-primary:hover:not(:disabled){background:var(--brand-dark)}.btn-secondary{background:#fdf3d6;color:#8a5a00;border-color:#f0d384}.btn-danger{background:#fef2f2;color:var(--err);border-color:#fecaca}.btn-ghost{background:transparent;color:var(--brand-dark)}.btn-block{width:100%}.btn-sm{padding:6px 10px;font-size:.8rem}.notice{padding:10px 12px;border-radius:10px;font-size:.88rem;border:1px solid}.notice-info{background:#eff6ff;border-color:#bfdbfe;color:#1e40af}.notice-success{background:#f0fdf4;border-color:#bbf7d0;color:#166534}.notice-warn{background:#fffbeb;border-color:#fde68a;color:#92400e}.notice-error{background:#fef2f2;border-color:#fecaca;color:#991b1b}.photo-preview{display:flex;flex-direction:column;gap:10px;align-items:flex-start}.photo-preview img{max-width:100%;max-height:280px;border-radius:10px;border:1px solid var(--line)}.photo-meta{font-size:.78rem;color:var(--muted)}.conf{font-weight:600;text-transform:capitalize}.conf-high{color:var(--ok)}.conf-medium{color:var(--warn)}.conf-low{color:var(--err)}.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius)}.table{width:100%;border-collapse:collapse;font-size:.9rem;background:#fff}.table th,.table td{padding:10px;text-align:left;border-bottom:1px solid var(--line)}.table th.num,.table td.num{text-align:right;font-variant-numeric:tabular-nums}.table tr.row-warn{background:#fffbeb}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:12px}.card h3{margin:0;font-size:1rem}.list,.entry-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.list-row{display:flex;align-items:center;justify-content:space-between;gap:8px;background:#fff;border:1px solid var(--line);border-radius:10px;padding:10px 12px}.list-row.inactive{opacity:.6}.entry-card{background:#fff;border:1px solid var(--line);border-radius:10px;padding:12px;display:flex;flex-direction:column;gap:6px}.entry-card.voided{opacity:.55}.entry-main{display:flex;justify-content:space-between;font-weight:600}.entry-meta{display:flex;gap:8px;flex-wrap:wrap;font-size:.78rem;align-items:center}.entry-actions{display:flex;gap:8px}.entry-photo{display:flex;flex-direction:column;gap:6px}.entry-photo img{max-width:100%;border-radius:8px;border:1px solid var(--line)}.tag{background:#f1f5f9;color:var(--muted);padding:1px 8px;border-radius:999px;font-size:.72rem}.tag-in{background:#ecfdf5;color:#166534}.tag-out{background:#eff6ff;color:#1e40af}.tag-void{background:#fef2f2;color:var(--err)}.tag-review{background:#fffbeb;color:#92400e;border:1px solid #fde68a}.checkline{display:flex;align-items:center;gap:8px;font-size:.9rem;color:var(--ink)}.checkline input{width:18px;height:18px}.login-screen{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(125% 125% at 50% 0%,#b00710,#9b0202 45%,#5e0101)}.login-card{background:#fff;border-radius:16px;padding:32px 24px;max-width:360px;width:100%;text-align:center;box-shadow:0 10px 40px #0003;display:flex;flex-direction:column;gap:14px;align-items:center}.login-logo-img{width:120px;height:120px;border-radius:50%;object-fit:contain;box-shadow:0 6px 20px #0000002e}.login-card h1{font-size:1.3rem;margin:0}.login-sub{color:var(--muted);font-size:.9rem;margin:0}.login-actions{display:flex;justify-content:center;min-height:44px}.login-foot{color:var(--muted);font-size:.75rem;margin:0}.spinner{display:flex;align-items:center;gap:10px;color:var(--muted);padding:12px 0;justify-content:center}.spinner-dot{width:18px;height:18px;border:3px solid var(--line);border-top-color:var(--brand);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media (min-width: 720px){.app-nav{position:static;border-top:none;border-bottom:1px solid var(--line);justify-content:flex-start;gap:8px}.nav-item{flex-direction:row;gap:6px;font-size:.85rem}.app-main{padding-bottom:16px}}
