:root{font-family:"Microsoft YaHei","PingFang SC",system-ui,sans-serif;color:#172033;background:#f5f7fb;font-size:15px}*{box-sizing:border-box}body{margin:0}.topbar{height:88px;background:#fff;border-bottom:1px solid #e8ebf1;display:flex;align-items:center;justify-content:space-between;padding:0 32px}.topbar h1{margin:0;font-size:27px}.topbar p{margin:7px 0 0;color:#748096}main{padding:18px 24px 36px;max-width:1560px;margin:auto}.card{background:#fff;border:1px solid #e5e9f1;border-radius:12px;box-shadow:0 2px 8px #1f29370a}.primary,.secondary,.text-button{border:0;border-radius:8px;padding:11px 18px;font:inherit;cursor:pointer}.primary{background:linear-gradient(135deg,#ff7a21,#ff5617);color:#fff;font-weight:700}.primary:hover{filter:brightness(.97)}.secondary{background:#f1f4f8;color:#344054}.text-button{background:transparent;color:#1677ff}.compact{padding:10px 24px}.filters{padding:16px;display:grid;grid-template-columns:210px 210px minmax(260px,1fr) 210px auto auto;gap:12px;align-items:end}.filters label,.form-grid label,.product-form-grid label,.block{display:flex;gap:7px;flex-direction:column;color:#4b5565}.filters input,.filters select,input,select,textarea{width:100%;border:1px solid #d8dee9;border-radius:7px;padding:10px 11px;background:#fff;color:#172033;font:inherit;outline:none}.filters input:focus,.filters select:focus,input:focus,select:focus,textarea:focus{border-color:#ff6b21;box-shadow:0 0 0 3px #ff6b2114}.search-label{justify-content:flex-end}.summary{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:14px 0}.stat{padding:17px 20px;position:relative;overflow:hidden}.stat:before{content:"";position:absolute;width:6px;inset:0 auto 0 0;background:#ff6b21}.stat span{color:#657086}.stat strong{display:block;font-size:28px;margin-top:7px}.records{min-height:350px;padding:8px 16px}.date-group{padding:12px 0 18px}.date-title{display:flex;align-items:baseline;gap:10px;margin:4px 6px 12px}.date-title h2{font-size:21px;margin:0}.date-title span{color:#657086}.shop{border:1px solid #e3e8f0;border-radius:9px;margin-bottom:10px;overflow:hidden}.shop-row{display:grid;grid-template-columns:minmax(240px,1.25fr) 150px 180px 130px minmax(160px,1fr) minmax(150px,1fr) 150px;gap:12px;align-items:center;padding:14px;background:#fff}.shop-row:hover{background:#fffaf7}.shop-name{font-weight:700;font-size:16px}.tag{display:inline-block;background:#fff0e6;color:#c24f0a;border-radius:5px;padding:3px 7px;font-size:12px;margin-top:5px}.muted{color:#7d8798}.actions{display:flex;gap:12px}.link-button{border:0;background:none;color:#1677ff;padding:0;cursor:pointer;font:inherit}.products{background:#fafbfc;border-top:1px solid #e8ecf2;padding:14px 20px}.product-card{display:grid;grid-template-columns:76px minmax(200px,1.5fr) 190px 120px 120px 110px;gap:14px;align-items:center;background:#fff;border:1px solid #e3e8f0;border-radius:8px;padding:12px;margin-bottom:8px}.product-image{width:66px;height:66px;border-radius:8px;object-fit:cover;background:#f0f2f5}.product-title{font-weight:700}.status{display:inline-block;padding:4px 8px;border-radius:999px;font-size:12px;background:#e8f8ef;color:#16864a}.status.partial{background:#fff5e5;color:#b85e00}.empty{text-align:center;color:#8791a2;padding:80px 10px}dialog{border:0;border-radius:13px;width:min(760px,calc(100vw - 28px));padding:0;box-shadow:0 24px 80px #11182740}dialog::backdrop{background:#11182766}dialog form{padding:20px}.dialog-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.dialog-head h2{margin:0}.icon-button{border:0;background:none;font-size:28px;cursor:pointer;color:#667085}.form-grid,.product-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.wide{grid-column:1/-1}.block{margin-bottom:14px}.url-row{display:flex;gap:8px}.url-row input{flex:1}.url-row button{white-space:nowrap}b{color:#e2342d}footer{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.errors{color:#d92d20;line-height:1.7;margin-top:10px}.extract-status{padding:10px 12px;background:#f7f8fa;border-radius:7px;color:#657086;margin-bottom:14px}.extract-status.success{background:#eaf8ef;color:#18794e}.extract-status.partial{background:#fff6e8;color:#a65300}#toast{position:fixed;right:24px;bottom:24px;background:#172033;color:#fff;padding:12px 17px;border-radius:8px;opacity:0;transform:translateY(10px);transition:.2s;pointer-events:none}#toast.show{opacity:1;transform:none}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}@media(max-width:1050px){.filters{grid-template-columns:1fr 1fr}.search-label{grid-column:1/-1}.summary{grid-template-columns:1fr 1fr}.shop-row{grid-template-columns:1fr 1fr 1fr}.product-card{grid-template-columns:66px 1fr 1fr}.actions{justify-content:flex-start}}@media(max-width:650px){.topbar{padding:16px;height:auto;align-items:flex-start}.topbar h1{font-size:21px}.topbar p{font-size:13px}.topbar .primary{padding:10px}.filters,.summary,.form-grid,.product-form-grid{grid-template-columns:1fr}.search-label,.wide{grid-column:auto}.shop-row,.product-card{grid-template-columns:1fr}.product-image{width:86px;height:86px}.records{padding:8px}main{padding:12px}.url-row{flex-direction:column}}

.reuse-preview{white-space:pre-wrap;overflow-wrap:anywhere;margin-top:8px}button:disabled{opacity:.55;cursor:wait}

.calendar{padding:20px;margin-bottom:16px}.calendar-toolbar,.detail-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.calendar-toolbar h2,.detail-toolbar h2{margin:0;font-size:22px}.calendar-toolbar p{margin:8px 0 0;font-size:13px}.calendar-week,.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}.calendar-week{margin-bottom:8px;text-align:center;color:#748096;font-size:13px}.calendar-week span{padding:8px}.calendar-day{font:inherit;text-align:left;border:1px solid #e8ebf1;background:#fff;border-radius:8px;min-height:133px;padding:10px;cursor:pointer;color:#172033;display:flex;flex-direction:column;gap:7px;min-width:0}.calendar-day:hover{border-color:#ff8f50;background:#fffaf7}.calendar-day.has-records{background:#fffaf6;border-color:#f5ddcc}.calendar-day.is-today .day-heading strong{background:#ff6b21;color:#fff;border-radius:50%;width:25px;height:25px;display:grid;place-items:center}.calendar-day.is-selected{border:2px solid #ff6b21;padding:9px;background:#fff3e9;box-shadow:0 0 0 2px #ff6b2114}.day-heading{display:flex;justify-content:space-between;align-items:center;min-height:25px}.day-heading small{color:#e56617}.day-count{font-size:13px;font-weight:700}.day-alerts{display:flex;gap:5px;flex-wrap:wrap;font-size:11px}.missing-count{color:#a96609}.issue-count{color:#c73535}.day-shops{font-size:12px;line-height:1.6;color:#657086;overflow:hidden;overflow-wrap:anywhere}.day-empty{font-size:12px;color:#a6aebb}.calendar-legend{font-size:12px;line-height:1.8;color:#8791a2;margin:14px 0 0}.detail-toolbar{padding:16px 4px;border-bottom:1px solid #edf0f4}.detail-toolbar h2{margin-bottom:5px;scroll-margin-top:16px}.calendar-day:focus-visible{outline:3px solid #1677ff;outline-offset:1px}@media(max-width:800px){.calendar{padding:12px}.calendar-scroll{overflow-x:auto}.calendar-week,.calendar-grid{min-width:660px}.calendar-toolbar,.detail-toolbar{align-items:flex-start;flex-wrap:wrap}.calendar-toolbar h2{font-size:20px}.calendar-toolbar .actions{gap:6px}}

#calendar-body[hidden]{display:none}.calendar-toolbar .actions{flex-wrap:wrap}

.day-shops{overflow:visible;flex-shrink:0}.calendar-day{height:auto}

/* Keep each shop name on one line; scroll the wider month horizontally. */
.calendar-scroll{overflow-x:auto}.calendar-week,.calendar-grid{grid-template-columns:repeat(7,minmax(280px,1fr));min-width:2000px}.day-shops{white-space:nowrap;overflow-wrap:normal;word-break:normal}.calendar-day{min-width:max-content}

.calendar-week,.calendar-grid{grid-template-columns:repeat(7,minmax(var(--calendar-cell-width,280px),1fr));min-width:calc(var(--calendar-cell-width,280px) * 7 + 36px)}

#start-date,#end-date{cursor:pointer;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' fill='none' stroke='%23657086' stroke-width='1.5'%3E%3Crect x='2' y='4' width='14' height='12' rx='2'/%3E%3Cpath d='M5 2v4m8-4v4M2 8h14'/%3E%3C/svg%3E") no-repeat right 10px center;padding-right:34px}#date-picker{width:min(380px,calc(100vw - 28px))}.date-picker-content{padding:20px}.date-picker-nav,.date-picker-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:12px 0}.picker-week,#picker-days{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.picker-week{text-align:center;color:#8791a2;font-size:13px;padding:8px 0}.picker-day{border:0;border-radius:7px;background:#f7f8fa;color:#172033;font:inherit;min-height:38px;cursor:pointer}.picker-day:hover,.picker-day:focus-visible{background:#fff0e6;outline:2px solid #ff6b21}.picker-day.chosen{background:#ff6b21;color:white}

/* Fit all seven days inside the available browser width. */
.calendar-scroll{overflow:visible;min-width:0;max-width:100%}
.calendar-week,.calendar-grid{grid-template-columns:repeat(7,minmax(0,1fr));min-width:0;width:100%;max-width:100%;box-sizing:border-box}
.calendar-day{min-width:0;max-width:100%;height:auto;box-sizing:border-box}
.day-shops{white-space:normal;overflow-wrap:anywhere;word-break:normal;overflow:visible;max-width:100%;line-height:1.7}
.day-count,.day-alerts{overflow-wrap:anywhere;max-width:100%}
@media(max-width:650px){.calendar-week,.calendar-grid{gap:3px}.calendar-day{padding:5px;font-size:12px}.calendar-day.is-selected{padding:4px}.day-count,.day-shops,.day-alerts{font-size:10px}.day-heading{flex-wrap:wrap}.calendar-week span{padding:6px 0}}

.login-page{min-height:100vh;display:grid;place-items:center;padding:20px}.login-card{width:min(360px,100%);padding:28px;box-sizing:border-box;margin:auto}.login-card h1{font-size:24px;margin:0 0 8px}.login-card form,.login-card label{display:flex;flex-direction:column;gap:8px}.login-card form{gap:18px;margin-top:24px}.login-card .primary{width:100%}.login-card .errors{margin:0}

.shop-row{grid-template-columns:minmax(180px,1.2fr) 140px 175px 90px minmax(140px,1fr) 145px}.inline-progress-label{display:block;color:#657086;font-size:12px}.inline-progress{padding:6px 4px;font-size:13px;margin:5px 0 9px}.legacy-progress{white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;line-height:1.6;margin:0 0 12px}.shop-row>div{min-width:0;overflow-wrap:anywhere}@media(max-width:1050px){.shop-row{grid-template-columns:1fr 1fr 1fr}}@media(max-width:650px){.shop-row{grid-template-columns:1fr}}

.attention-details{font-size:13px;line-height:1.7;white-space:pre-wrap;overflow-wrap:anywhere}.record-issue{color:#b42318;background:#fff2f0;border-radius:5px;padding:5px 7px;margin-top:5px}.record-missing{color:#925c06;background:#fff8e6;border-radius:5px;padding:5px 7px;margin-top:5px}.product-attention{grid-column:1/-1;border-top:1px solid #edf0f4;padding-top:9px}.product-attention .attention-details{display:flex;flex-wrap:wrap;gap:8px}.product-attention .record-issue,.product-attention .record-missing{flex:1 1 260px}

/* Larger product photos with flexible detail columns. */
.product-card{grid-template-columns:120px minmax(0,2fr) minmax(75px,1fr) minmax(65px,.7fr) minmax(90px,.8fr) 44px}
.product-card>div{min-width:0;overflow-wrap:anywhere}
.product-image{width:120px;height:120px;object-fit:contain}
@media(max-width:1050px){.product-card{grid-template-columns:120px minmax(0,1fr) minmax(0,1fr)}}
@media(max-width:650px){.product-card{grid-template-columns:1fr}.product-image{width:120px;height:120px}}

.day-shop-entry{display:block;padding:7px 0;border-bottom:1px solid #e8eaf0}.day-shop-entry:last-child{border-bottom:0;padding-bottom:0}.day-shop-name{display:block;line-height:1.65}.day-progress-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px;min-width:0}.progress-tag{display:inline-block;max-width:100%;border-radius:5px;padding:2px 5px;font-size:11px;line-height:1.5;white-space:normal;overflow-wrap:anywhere;background:#eef0f3;color:#596477}.progress-preparing{background:#ede9fe;color:#6741a5}.progress-ready{background:#fff1d6;color:#925600}.progress-active{background:#dcf4e6;color:#17603a}.progress-paused{background:#ffe6df;color:#a63b21}.progress-ended{background:#e4ecf6;color:#385b84}.progress-custom{background:#e3f2f3;color:#246b70}
@media(max-width:650px){.progress-tag{font-size:10px;padding:2px 3px}.day-shop-entry{padding:5px 0}.day-progress-tags{gap:3px}}

.day-select{border:0;background:transparent;color:inherit;font:inherit;padding:0;width:100%;text-align:left;cursor:pointer}.calendar-shop-link{color:#2864a5;text-decoration:underline;text-decoration-color:#abc5e2;text-underline-offset:3px}.calendar-shop-link:hover{color:#c05213;text-decoration-color:currentColor}.calendar-shop-link:focus-visible,.day-select:focus-visible{outline:2px solid #1677ff;outline-offset:2px;border-radius:3px}.shop{scroll-margin-top:16px}.shop:focus{outline:2px solid #ff8b4a;outline-offset:2px}

.calendar-shop-link{display:flex;flex-wrap:wrap;gap:5px;align-items:center}.calendar-shop-text{flex:1 1 65px;min-width:0;overflow-wrap:anywhere}.calendar-thumbnails{display:flex;flex-wrap:wrap;gap:3px;max-width:100%;flex:0 1 auto}.calendar-thumb{position:relative;display:block;width:42px;height:42px;max-width:100%;flex:0 0 42px;border:1px solid #e0e6ee;background:#fff9ef;border-radius:6px;overflow:hidden}.calendar-thumb svg{display:block;width:100%;height:100%}.calendar-thumb-image{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:#fff}.calendar-thumb-image[hidden]{display:none}@media(max-width:650px){.calendar-thumb{width:28px;height:28px;flex-basis:28px}.calendar-shop-text{flex-basis:100%}.calendar-shop-link{gap:3px}}

.calendar-image-preview{position:fixed;z-index:1000;padding:8px;border:1px solid #dbe3ee;border-radius:12px;background:#fff;box-shadow:0 12px 40px #17203330;pointer-events:none}.calendar-image-preview[hidden]{display:none}.calendar-image-preview img{display:block;width:100%;height:100%;object-fit:contain;border-radius:6px}

.delete-product{display:block;color:#c73535;margin-top:12px}
