:root{--paper: #FAF9F6;--surface: #F1EFE9;--surface-hover: #ECE9E1;--hairline: #E2DED4;--disabled: #C5C0B4;--muted: #8B877D;--body: #4A4842;--ink: #25241F;--signal: #D6531E;--signal-fill: #BC4A15;--signal-deep: #A33D0F;--signal-dark: #8E340B;--caution: #E8B33D;--confirm: #4F7A4A;--destruct: #A2372A;--info: #33556B;--brand: var(--info);--brand-tint: var(--surface);--cta: var(--signal-fill);--cta-hover: var(--signal-deep);--bg: var(--paper);--fill: var(--surface);--fill-press: var(--hairline);--green: var(--confirm);--green-bg: var(--surface);--red: var(--destruct);--red-bg: var(--surface);--amber: var(--caution);--amber-bg: var(--surface);--radius: 2px;--radius-sm: 2px;--tabbar-h: 62px}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%;margin:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,PingFang SC,Microsoft YaHei,sans-serif;background:var(--paper);color:var(--body);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased}a{color:var(--info);text-decoration:none;font-weight:500}a:hover{text-decoration:underline}h1{font-size:20px;font-weight:500;color:var(--ink);margin:0 0 16px}h2{font-size:14px;font-weight:500;color:var(--muted);margin:24px 0 8px 4px}h3{font-size:16px;font-weight:500;color:var(--ink);margin:0 0 8px}strong{font-weight:500;color:var(--ink)}.muted{color:var(--muted)}.zh{color:var(--muted);font-size:.92em}.screen-center{display:flex;align-items:center;justify-content:center;min-height:100vh;color:var(--muted);padding:16px}.container{max-width:1100px;margin:0 auto;padding:16px 16px calc(var(--tabbar-h) + env(safe-area-inset-bottom,0px) + 24px)}@media (min-width: 900px){.container{padding:24px 24px 64px}}.nav{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:12px;background:var(--paper);border-bottom:1px solid var(--hairline);padding:8px 16px;padding-top:max(8px,env(safe-area-inset-top));min-height:52px}.nav .logo{font-weight:500;color:var(--ink);cursor:pointer;display:flex;align-items:center;gap:8px}.logo-mark{width:27px;height:27px;border-radius:2px;flex:none;background:var(--ink);color:var(--paper);display:inline-flex;align-items:center;justify-content:center;font-weight:500;font-size:14px}.nav .user{margin-left:auto;display:inline-flex;align-items:center;gap:8px;color:var(--ink);text-decoration:none}.nav .user:hover{text-decoration:none}.nav .avatar{width:32px;height:32px;border-radius:50%;background:var(--surface);border:1px solid var(--hairline);color:var(--body);display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:500}.nav .uname{display:none;font-weight:400;font-size:14px;color:var(--body)}.nav-links{display:none}@media (min-width: 900px){.nav{padding:8px 24px}.nav .uname{display:inline}.nav-links{display:flex;gap:4px;margin-left:12px}.nav-links a{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-weight:400;font-size:14px;padding:7px 12px;border-radius:2px;text-decoration:none;transition:background-color .12s ease-out,color .12s ease-out}.nav-links a:hover{color:var(--ink);background:var(--surface)}.nav-links a.active{color:var(--ink);font-weight:500;background:var(--surface)}.nav-links a svg{display:none}}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:30;display:flex;align-items:stretch;background:var(--paper);border-top:1px solid var(--hairline);padding-bottom:env(safe-area-inset-bottom,0px);height:calc(var(--tabbar-h) + env(safe-area-inset-bottom,0px))}.tabbar a{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--muted);font-size:12px;font-weight:400;text-decoration:none}.tabbar a:hover{text-decoration:none}.tabbar a svg{width:22px;height:22px}.tabbar a.active{color:var(--ink);font-weight:500}@media (min-width: 900px){.tabbar{display:none}}.card,.panel{background:var(--surface);border:1px solid var(--hairline);border-radius:2px;box-shadow:none;padding:16px;margin-bottom:12px}.card.clickable{cursor:pointer;transition:background-color .12s ease-out}.card.clickable:hover{background:var(--surface-hover)}.card.clickable:active{background:var(--hairline)}.row{display:flex;align-items:center;gap:8px}.row.between{justify-content:space-between}.row.wrap{flex-wrap:wrap}.stack{display:flex;flex-direction:column;gap:2px}.grow{flex:1}.list-group{background:var(--surface);border:1px solid var(--hairline);border-radius:2px;overflow:hidden;margin-bottom:12px}.list-row{display:flex;align-items:center;gap:12px;padding:12px 16px;min-height:56px;cursor:pointer;border-bottom:1px solid var(--hairline);transition:background-color .12s ease-out}.list-row:last-child{border-bottom:none}.list-row:hover{background:var(--surface-hover)}.list-row:active{background:var(--hairline)}.list-row .t{font-weight:500;color:var(--ink);font-size:14px}.list-row .s{color:var(--muted);font-size:12px}.chip{display:inline-flex;align-items:center;padding:2px 8px;border-radius:2px;border:1px solid var(--hairline);background:transparent;color:var(--muted);font-size:12px;font-weight:400;white-space:nowrap}.badge{display:inline-flex;align-items:center;flex:none;padding:3px 8px;border-radius:2px;font-size:12px;font-weight:500;white-space:nowrap}.badge.pass,.badge.approved{background:var(--confirm);color:var(--paper)}.badge.fail,.badge.not_approved,.badge.major{background:var(--destruct);color:var(--paper)}.badge.minor{background:var(--caution);color:var(--ink)}.badge.muted{background:transparent;border:1px solid var(--disabled);color:var(--body)}.toggle{display:flex;gap:4px;width:100%;background:var(--surface);border:1px solid var(--hairline);border-radius:2px;padding:4px}.toggle button{flex:1;border:1px solid transparent;background:transparent;color:var(--muted);min-height:40px;padding:7px 14px;font:inherit;font-size:14px;font-weight:400;cursor:pointer;border-radius:2px;display:inline-flex;align-items:center;justify-content:center;transition:background-color .12s ease-out,border-color .12s ease-out,color .12s ease-out}.toggle button.on-green,.toggle button.on-red,.toggle button.on-blue{background:var(--paper);border-color:var(--disabled);font-weight:500}.toggle button.on-green{color:var(--confirm)}.toggle button.on-red{color:var(--destruct)}.toggle button.on-blue{color:var(--info)}.toggle.inline-pills{display:inline-flex;width:auto}.fset{background:var(--surface);border:1px solid var(--hairline);border-radius:2px;padding:16px;margin-bottom:12px}label.field{display:block;margin-bottom:14px}label.field:last-child{margin-bottom:0}label.field>span{display:block;font-size:12px;font-weight:500;color:var(--muted);margin-bottom:4px}input,select,textarea{width:100%;min-height:44px;padding:9px 12px;font:inherit;font-size:16px;color:var(--ink);border:1px solid var(--hairline);border-radius:2px;background:var(--paper);transition:border-color .12s ease-out}input::placeholder,textarea::placeholder{color:var(--muted)}input:focus,select:focus,textarea:focus{outline:1px solid var(--ink);outline-offset:2px;border-color:var(--muted)}input[type=checkbox]{min-height:0}textarea{min-height:88px;resize:vertical}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5 6 6.5 11 1.5' fill='none' stroke='%238B877D' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px}button.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;color:var(--ink);border:1px solid var(--disabled);min-height:44px;padding:9px 18px;border-radius:2px;font:inherit;font-size:14px;font-weight:400;cursor:pointer;transition:background-color .12s ease-out,border-color .12s ease-out}button.btn:hover{background:var(--surface);border-color:var(--muted)}button.btn:active{background:var(--hairline)}button.btn:focus-visible{outline:1px solid var(--ink);outline-offset:2px}button.btn.primary,button.btn.cta{background:var(--signal-fill);color:var(--paper);border:none;font-weight:500}button.btn.primary:hover,button.btn.cta:hover{background:var(--signal-deep)}button.btn.primary:active,button.btn.cta:active{background:var(--signal-dark)}button.btn.danger{background:transparent;color:var(--destruct);border:1px solid var(--destruct)}button.btn.danger:hover{background:var(--surface)}button.btn.danger:active{background:var(--hairline)}button.btn:disabled{background:var(--disabled);border-color:var(--disabled);color:var(--muted);cursor:not-allowed}button.btn.block{width:100%}.btn.small{min-height:40px;padding:5px 12px;font-size:12px;border-radius:2px}.error{color:var(--destruct);border:1px solid var(--destruct);background:transparent;padding:10px 14px;border-radius:2px;margin:8px 0;font-weight:400;font-size:14px}.notice{background:var(--surface);color:var(--body);border:1px solid var(--hairline);border-left:2px solid var(--info);padding:10px 14px;border-radius:2px;margin:8px 0;font-size:14px;font-weight:400}table.data{width:100%;border-collapse:collapse;background:var(--surface);border-radius:2px;overflow:hidden;border:1px solid var(--hairline)}table.data th,table.data td{text-align:left;padding:10px 14px;border-bottom:1px solid var(--hairline);font-size:14px}table.data th{font-size:12px;color:var(--muted);font-weight:500}table.data tr:last-child td{border-bottom:none}table.data td:first-child{font-weight:500;color:var(--ink)}table.data tr.clickable{cursor:pointer}table.data tr.clickable:hover{background:var(--surface-hover)}.hide-mobile{display:none}.show-mobile{display:block}@media (min-width: 900px){.hide-mobile{display:revert}.show-mobile{display:none}}.dash-grid{display:grid;gap:12px;grid-template-columns:1fr}@media (min-width: 900px){.dash-grid{grid-template-columns:1.6fr 1fr;align-items:start;gap:16px}}.panel>.row.between{margin-bottom:8px}.panel h3{display:flex;align-items:center;gap:8px}.list-line{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--hairline)}.list-line:last-child{border-bottom:none;padding-bottom:2px}.checklist-search{padding:6px 0 4px}.defect-group-title{display:flex;align-items:center;gap:8px;margin:16px 0 8px 4px}.defect-group-title h3{font-size:14px;font-weight:500;color:var(--muted)}.defect-row{border:1px solid var(--hairline);border-radius:2px;padding:6px 12px;margin-bottom:8px;background:var(--surface)}.defect-row.ticked{border-color:var(--disabled)}.defect-row .head{display:flex;align-items:center;gap:10px;cursor:pointer;min-height:40px;font-size:14px}.defect-row .head input[type=checkbox]{width:18px;height:18px;accent-color:var(--ink)}.defect-row .detail{margin:6px 0 8px;display:grid;gap:10px;grid-template-columns:110px 1fr;align-items:start}.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px;margin-top:8px}.photo-item{position:relative}.photo-item img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:2px;border:1px solid var(--hairline);background:var(--surface);cursor:pointer;display:block}.photo-item .cap{width:100%;min-height:32px;margin-top:4px;font-size:12px;padding:4px 6px}.photo-item .rm{position:absolute;top:-7px;right:-7px;z-index:1;display:flex;align-items:center;justify-content:center;padding:0;width:26px;height:26px;border-radius:50%;border:1px solid var(--paper);background:var(--ink);color:var(--paper);font-size:16px;line-height:1;cursor:pointer}.add-photo{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;aspect-ratio:1;border:1px dashed var(--disabled);border-radius:2px;color:var(--muted);cursor:pointer;font-size:20px;font-weight:400;background:transparent}.add-photo span{font-size:12px;font-weight:400}.add-photo input{display:none}.photo-item .cap-text{font-size:12px;color:var(--muted);margin-top:4px;word-break:break-word}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;background:#1a1917f0;z-index:100;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:16px;overflow:hidden;touch-action:none}.lightbox img{max-width:100%;max-height:80vh;object-fit:contain;border-radius:2px;touch-action:none;will-change:transform;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.lightbox .cap{color:var(--paper);margin-top:16px;text-align:center}.lightbox .lb-bar{position:absolute;top:0;left:0;right:0;display:flex;justify-content:flex-end;gap:12px;z-index:2;padding:calc(env(safe-area-inset-top,0px) + 10px) calc(env(safe-area-inset-right,0px) + 12px) 10px 12px}.lightbox .lb-btn{display:flex;align-items:center;justify-content:center;width:44px;height:44px;min-width:44px;padding:0;border-radius:50%;background:#1a191799;border:1px solid var(--muted);color:var(--paper);cursor:pointer;text-decoration:none;-webkit-tap-highlight-color:transparent}.lightbox .lb-btn:active{background:var(--muted)}.lightbox .lb-btn svg{width:22px;height:22px;display:block}.summary-strip{display:flex;gap:8px;background:var(--surface);border:1px solid var(--hairline);color:var(--ink);border-radius:2px;padding:12px}.summary-strip .metric{flex:1;text-align:center}.summary-strip .metric+.metric{border-left:1px solid var(--hairline)}.summary-strip .metric .n{font-size:20px;font-weight:500;color:var(--ink)}.summary-strip .metric .l{font-size:12px;color:var(--muted)}.headline-trio{display:flex;gap:24px}.headline-trio .n{font-size:20px;font-weight:500;color:var(--ink)}.headline-trio .l{font-size:12px;color:var(--muted)}.sticky-actions{position:sticky;bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom,0px) + 8px);z-index:20;display:flex;gap:8px;background:var(--paper);border:1px solid var(--hairline);border-radius:2px;padding:8px;margin-top:20px}.sticky-actions .btn.cta{flex:1}@media (min-width: 900px){.sticky-actions{bottom:12px}}.report-top{margin-bottom:12px}.report-field{padding:8px 0;border-bottom:1px solid var(--hairline)}.report-field:last-child{border-bottom:none;padding-bottom:2px}.report-field .k{font-size:12px;color:var(--muted);margin-bottom:2px;font-weight:500}.report-field .v{font-size:16px;color:var(--ink)}.filters{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 14px}.filters>input,.filters>select{flex:1 1 150px;min-width:120px}.filters .clear{flex:0 0 auto}.result-count{margin:0 0 8px 4px;font-size:12px}@media (min-width: 1240px){.container:has(.dash-wide){max-width:1360px}}.kpi-grid{display:grid;gap:12px;grid-template-columns:1fr}@media (min-width: 900px){.kpi-grid{grid-template-columns:1fr 1fr;align-items:start;gap:16px}.kpi-suppliers{grid-column:1 / -1}}@media (min-width: 1240px){.kpi-grid{grid-template-columns:1fr 1fr 1.15fr}.kpi-suppliers{grid-column:auto}}.activity-grid{display:grid;gap:12px;grid-template-columns:1fr}@media (min-width: 900px){.activity-grid{grid-template-columns:1fr 1fr;align-items:start;gap:16px}}.kpi-tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:12px}@media (max-width: 560px){.kpi-tiles{grid-template-columns:repeat(2,1fr)}}.kpi-tile{background:var(--surface);border:1px solid var(--hairline);border-radius:2px;padding:12px}.kpi-tile .n{font-size:20px;font-weight:500;color:var(--ink)}.kpi-tile .l{font-size:12px;color:var(--muted)}.kpi-cols{display:flex;gap:8px;align-items:flex-end;margin:8px 0 4px}.kpi-col{flex:1;min-width:0;text-align:center;cursor:default}.kpi-col .bar-area{display:flex;flex-direction:column;justify-content:flex-end;gap:2px;height:124px}.kpi-col .seg{width:60%;max-width:44px;margin:0 auto;border-radius:2px 2px 0 0}.kpi-col .v{font-size:12px;color:var(--body);margin-bottom:4px}.kpi-col .m{font-size:12px;color:var(--muted);margin-top:4px;border-top:1px solid var(--hairline);padding-top:4px}.kpi-row{padding:6px 0;cursor:default}.kpi-row+.kpi-row{border-top:1px solid var(--hairline)}.kpi-row-head{display:flex;justify-content:space-between;gap:8px;align-items:baseline}.kpi-row-head .t{font-size:14px;color:var(--ink);min-width:0}.kpi-row-head .s{font-size:12px;color:var(--muted);white-space:nowrap}.kpi-hbar{display:flex;align-items:center;gap:8px;margin-top:4px}.kpi-hbar .track{flex:1;min-width:0}.kpi-hbar .fill{height:10px;border-radius:0 2px 2px 0}.kpi-hbar .v{flex:none;min-width:44px;text-align:right;font-size:12px;color:var(--body);white-space:nowrap}.kpi-legend{display:flex;gap:16px;margin-top:8px;font-size:12px;color:var(--muted)}.kpi-legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:5px}.kpi-tip{position:absolute;z-index:10;transform:translate(-50%,-100%);pointer-events:none;background:var(--ink);color:var(--paper);font-size:12px;line-height:1.5;padding:6px 10px;border-radius:2px;white-space:nowrap;max-width:280px}.ico-h{width:16px;height:16px;flex:none;color:var(--muted);position:relative;top:-1px}html,body{overflow-x:clip}body{overflow-wrap:break-word}img{max-width:100%}.card,.panel,.fset,.list-group,.dash-grid>*,.row>*,.stack,.grow,.list-line>*,.list-row>*,.toggle button{min-width:0}
