:root{--ink:#262729;--muted:#717476;--bg:#f7f7f4;--white:#fff;--line:#e6e7e4;--cream:#fff4d9;--green:#197048;--red:#aa342b}*{box-sizing:border-box}html{font-family:Inter,-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--ink);line-height:1.65}a{color:inherit;text-decoration:none}a:hover{text-decoration:underline}.site-header{background:var(--white);border-bottom:1px solid var(--line)}.header-inner{max-width:1080px;margin:auto;padding:17px 24px;display:flex;justify-content:space-between;align-items:center;gap:20px}.wordmark{font-size:12px;font-weight:800;letter-spacing:.1em;line-height:1.25;white-space:nowrap}.wordmark span{display:block;font-size:16px;letter-spacing:.12em}nav{display:flex;align-items:center;gap:18px;flex-wrap:wrap;font-size:13px;color:var(--muted)}.nav-admin{gap:16px}.text-button{background:none;border:0;padding:0;cursor:pointer;color:inherit;font:inherit}.wrap{width:min(100% - 36px,1020px);margin:42px auto 80px;min-height:55vh}.footer{display:flex;justify-content:space-between;gap:20px;max-width:1080px;padding:22px 24px 30px;margin:auto;color:#95979a;font-size:11px;border-top:1px solid var(--line);letter-spacing:.08em}.eyebrow{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:#858787;font-weight:700;margin-bottom:12px}h1{font-size:clamp(28px,4vw,45px);letter-spacing:-.03em;line-height:1.23;margin:0 0 14px;font-weight:750}h2{font-size:21px;margin:0 0 18px;letter-spacing:-.015em}h3{margin:0 0 10px;font-size:16px}p{margin:0 0 12px}p:last-child{margin-bottom:0}.muted{color:var(--muted)}.small{font-size:13px}.hero{padding:64px 0 38px;max-width:750px}.hero p{font-size:16px;color:var(--muted)}.search{display:flex;gap:10px;max-width:640px;margin-top:27px}.search input{flex:1}.btn,button,input,select,textarea{font:inherit}.btn,button.primary{display:inline-flex;align-items:center;justify-content:center;padding:12px 19px;background:var(--ink);color:#fff;border:1px solid var(--ink);border-radius:8px;font-weight:650;cursor:pointer;min-height:44px}.btn:hover,button.primary:hover{background:#444}.btn.soft{background:#fff;color:var(--ink);border-color:#ddd}.btn.small{font-size:12px;padding:8px 12px;min-height:34px}.btn.danger{background:#fff;color:var(--red);border-color:#e2b7b3}input,select,textarea{min-width:0;width:100%;padding:11px 13px;border:1px solid #d7d9d6;border-radius:7px;background:#fff;color:var(--ink);font-size:14px}textarea{resize:vertical}input:focus,select:focus,textarea:focus{outline:2px solid #b4bcc5;outline-offset:1px}.card,.notice,.trace-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:25px;box-shadow:0 8px 20px #1d1d1d05}.notice{max-width:690px;margin:60px auto}.info-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 27px}.info-label{color:#888;font-size:11px;letter-spacing:.08em;margin-bottom:4px}.info-value{font-size:15px;overflow-wrap:anywhere}.trace-header{padding:35px 0 30px;border-bottom:1px solid var(--line);margin-bottom:27px}.trace-kicker{display:flex;gap:10px;align-items:center;flex-wrap:wrap;font-size:13px;color:#777;margin-bottom:12px}.status{padding:3px 9px;border-radius:99px;font-size:11px;font-weight:700;display:inline-block;background:#eee;color:#555}.status-published{background:#e5f3e9;color:var(--green)}.status-recalled{background:#fbe3df;color:var(--red)}.status-draft{background:#eee;color:#666}.section-heading{display:flex;justify-content:space-between;align-items:baseline;gap:15px;margin:31px 0 13px}.section-heading h2{margin:0}.section-heading span{font-size:12px;color:var(--muted)}.trace-card{margin-bottom:20px}.trace-card .cover{max-height:280px;width:100%;object-fit:cover;border-radius:8px;margin:0 0 22px}.event-list{position:relative;padding-left:19px;border-left:1px solid #ccc;margin-left:7px}.event{position:relative;padding:0 0 26px 17px}.event:last-child{padding-bottom:0}.event:before{content:"";position:absolute;left:-24px;top:7px;width:9px;height:9px;border-radius:50%;background:var(--ink)}.event-date{font-size:12px;color:#999}.event h3{font-size:15px;margin:4px 0}.callout{border-left:3px solid #999;background:#f3f3f1;padding:14px 17px;margin-top:20px;font-size:13px}.callout.red{border-color:var(--red);background:#fff1ee;color:#893126}.page-title{display:flex;justify-content:space-between;align-items:end;gap:18px;margin:0 0 30px}.page-title h1{font-size:32px;margin-bottom:7px}.page-title p{font-size:14px;color:var(--muted)}.stack{display:grid;gap:20px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.field{display:flex;flex-direction:column;gap:6px;font-size:13px;color:#666}.field i{color:var(--red);font-style:normal}.field.full{grid-column:1/-1}.actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:22px}.table-scroll{overflow-x:auto;border:1px solid var(--line);background:#fff;border-radius:10px}table{width:100%;border-collapse:collapse;text-align:left;font-size:13px}th{font-weight:650;color:#777;font-size:11px;letter-spacing:.05em;background:#fafaf9}td,th{padding:14px 18px;border-bottom:1px solid #efefee;vertical-align:middle}tr:last-child td{border-bottom:0}td .small{color:#999}.flash{padding:12px 15px;background:#eaf7ee;border-radius:8px;color:#176a42;margin-bottom:25px}.flash.error{background:#fff0ed;color:#992c23}.dashboard-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.metric{padding:24px;background:#fff;border:1px solid var(--line);border-radius:10px}.metric strong{font-size:34px;display:block;line-height:1.2}.metric span{font-size:12px;color:var(--muted)}.cover{width:100%;max-height:250px;object-fit:cover;border-radius:8px}.qr-preview{display:flex;flex-wrap:wrap;align-items:center;gap:25px}.qr-preview img{width:210px;height:210px;background:#fff;padding:12px;border:1px solid #eee}.mono{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;overflow-wrap:anywhere}.login{max-width:450px;margin:65px auto}.login .field{margin:0 0 17px}.label-sheet{display:none}.note{font-size:12px;color:#888}.empty{padding:30px;text-align:center;color:#888}.long-text{white-space:pre-wrap;overflow-wrap:anywhere}.two-cols{display:grid;grid-template-columns:1.3fr .7fr;gap:20px}.center{text-align:center}.label-sheet .qr-code{max-width:38mm;width:38mm}.label-sheet h2{font-size:18px}.label-sheet .brand{font-size:12px;letter-spacing:.12em;font-weight:700}.label-sheet .code{font-size:11px;letter-spacing:.03em}.label-sheet .subtitle{font-size:11px;color:#444}@media(max-width:760px){.wrap{margin-top:25px}.header-inner{padding:14px 18px;align-items:flex-start;flex-direction:column}.nav-admin{gap:11px}.footer{display:block}.hero{padding:30px 0 10px}.search{flex-direction:column}.page-title{display:block}.page-title .btn{margin-top:16px}.form-grid,.two-cols,.dashboard-grid{grid-template-columns:1fr}.info-grid{grid-template-columns:1fr}.card,.trace-card{padding:19px}}@media print{@page{size:60mm 85mm;margin:0}body.label-mode{background:white}.label-mode .site-header,.label-mode main,.label-mode .footer{display:none}.label-mode .label-sheet{display:flex;flex-direction:column;width:60mm;height:85mm;padding:5mm;align-items:center;justify-content:center;gap:2mm;text-align:center;break-after:page}.label-mode .label-sheet .qr-code{width:38mm;height:38mm}}
