:root{--green:#087c57;--green-strong:#056747;--ink:#173c30;--ink-soft:#50685c;--subtle:#72857a;--border:#dfeae3;--paper:#fff;--background:#f4f8f5;--mint:#e6f4ec;--mint-deep:#d3edde;--amber:#a6620d;--amber-bg:#fff4dd;--danger:#b44034;--danger-bg:#fff0eb;--shadow:0 8px 24px rgba(18,60,41,.035);--radius:18px}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--background);color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:15px;line-height:1.45}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.54}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #60c6a1;outline-offset:2px}svg{display:block;width:24px;height:24px}a{color:var(--green)}h1,h2,h3,p{margin-top:0}h1{font-size:clamp(27px,4vw,36px);letter-spacing:-1.35px;line-height:1.15;margin-bottom:12px}h2{font-size:20px;line-height:1.25;letter-spacing:-.4px}h3{font-size:16px;line-height:1.3}p{line-height:1.6}.subtle{color:var(--ink-soft)}.overline{color:var(--green);font-size:11px;letter-spacing:.14em;font-weight:850;margin:0 0 10px}.topbar{height:76px;background:rgba(255,255,255,.96);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:30;backdrop-filter:blur(10px)}.topbar__inner{max-width:1280px;margin:auto;display:flex;align-items:center;justify-content:space-between;gap:12px;height:100%;padding:0 29px}.brand{display:flex;align-items:center;gap:11px;white-space:nowrap}.brand__icon{display:grid;place-items:center;background:var(--green);color:#fff;width:43px;height:43px;border-radius:13px;box-shadow:0 6px 13px #087c5725}.brand__icon svg{width:30px;height:30px}.brand strong{display:block;font-size:17px;letter-spacing:-.5px;line-height:1.25}.brand small{display:block;color:var(--subtle);font-size:10px;font-weight:750;letter-spacing:.15em}.topbar__right{display:flex;align-items:center;gap:9px;font-size:11px;font-weight:800;letter-spacing:.08em;color:var(--green-strong);white-space:nowrap}.live-dot{height:8px;width:8px;border-radius:50%;background:#56bd8a;box-shadow:0 0 0 4px #e1f6e8}.version{border:1px solid var(--border);padding:6px 8px;border-radius:10px;color:var(--subtle);margin-left:6px}.shell{max-width:1280px;margin:auto;display:grid;grid-template-columns:232px minmax(0,1fr);min-height:calc(100vh - 76px)}.sidebar{border-right:1px solid var(--border);padding:36px 19px 25px}.sidebar__title{font-size:11px;color:#92a499;letter-spacing:.16em;font-weight:800;margin:0 0 15px 13px}.sidebar nav{display:flex;flex-direction:column;gap:5px}.nav-btn{display:flex;align-items:center;gap:14px;background:transparent;border:0;width:100%;padding:12px 13px;border-radius:12px;text-align:left;font-weight:730;color:#5a7164;min-height:46px}.nav-btn svg{width:19px;height:19px;flex-shrink:0}.nav-btn:hover,.nav-btn.is-active{color:var(--green);background:var(--mint)}.nav-btn.is-active{box-shadow:inset 3px 0 var(--green)}.sidebar__tip{margin-top:48px;background:#e9f5ed;border:1px solid #cfe7d8;border-radius:16px;padding:18px;color:#2c6a4a;position:relative}.sidebar__tip strong{font-size:13px}.sidebar__tip p{font-size:12px;margin:8px 0 0;line-height:1.65}.tip__icon{font-size:13px;position:absolute;right:14px;top:13px;border:1px solid #91c3a7;width:18px;height:18px;line-height:17px;border-radius:50%;text-align:center}.main{padding:38px clamp(20px,4.5vw,54px) 90px;min-width:0}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:27px}.page-head .subtle{margin:0;max-width:660px}.button{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:46px;padding:12px 16px;border:1px solid transparent;border-radius:12px;font-weight:790;font-size:13px;transition:transform .15s ease,background .15s ease}.button svg{width:18px;height:18px}.button:hover{transform:translateY(-1px)}.button--primary{background:var(--green);color:#fff}.button--primary:hover{background:var(--green-strong)}.button--quiet{background:#eff6f1;color:var(--green-strong);border-color:#e0ede4}.button--outline{background:#fff;color:var(--ink);border-color:var(--border)}.button--danger{background:#fff3ee;color:var(--danger);border-color:#f4d7cf}.button--small{min-height:36px;padding:7px 12px;font-size:12px;border-radius:10px}.dashboard-hero{display:grid;grid-template-columns:1fr 310px;gap:16px;background:linear-gradient(110deg,#087b57,#0c976b);border-radius:25px;color:#fff;padding:29px 34px;margin-bottom:23px;overflow:hidden;position:relative;box-shadow:0 14px 28px #076f4d1c}.dashboard-hero:after{content:"";position:absolute;width:330px;height:330px;border:64px solid #ffffff10;border-radius:50%;right:-160px;top:-145px}.hero-copy{position:relative;z-index:2}.hero-copy .overline{color:#ceefe0}.dashboard-hero h1{margin:0 0 12px}.dashboard-hero p{color:#d8f0e5;margin:0 0 20px;max-width:450px}.hero-button{background:#fff;color:#087b57;border:0}.hero-aside{display:flex;align-items:center;justify-content:center;position:relative;z-index:1}.hero-illustration{width:165px;height:144px;color:#d7fae6;opacity:.93}.hero-illustration svg{height:100%;width:100%;stroke-width:1.4}.stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:27px}.card{background:var(--paper);border:1px solid var(--border);border-radius:var(--radius);padding:22px;box-shadow:var(--shadow)}.stat-card{padding:18px 20px;min-width:0}.stat-card__top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}.stat-card__top span{font-size:12px;color:var(--ink-soft);font-weight:700}.stat-card__ico{background:var(--mint);border-radius:11px;color:var(--green);width:32px;height:32px;display:grid;place-items:center;flex-shrink:0}.stat-card__ico svg{width:18px;height:18px}.stat-card strong{font-size:29px;letter-spacing:-1px}.muted-metric{color:#7c9184;font-size:11px;margin-top:2px}.section-title{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:25px 0 16px}.section-title h2{margin:0}.section-title a,.section-title button{font-size:12px}.action-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.action-card{background:#fff;display:flex;gap:15px;align-items:flex-start;text-align:left;border:1px solid var(--border);border-radius:17px;padding:22px;width:100%;box-shadow:var(--shadow);min-height:116px}.action-card:hover{border-color:#abd5bd;transform:translateY(-2px)}.action-card__icon{display:grid;place-items:center;height:43px;width:43px;flex-shrink:0;border-radius:13px;background:#e5f4eb;color:var(--green)}.action-card strong{display:block;font-size:15px;margin:1px 0 5px}.action-card small{font-size:12px;color:var(--ink-soft);line-height:1.5;display:block}.stack{display:grid;gap:16px}.stack--wide{max-width:760px}.field{margin-bottom:18px}.field label{display:block;color:#244d37;font-weight:750;font-size:13px;margin-bottom:8px}.field input,.field select,.field textarea{display:block;width:100%;background:#fff;border:1px solid #d7e5da;border-radius:12px;min-height:48px;padding:12px 14px;color:var(--ink);outline:0}.field input:focus,.field select:focus,.field textarea:focus{border-color:#48ae82;box-shadow:0 0 0 3px #b7e8cc80}.field textarea{min-height:90px;resize:vertical}.field__hint{font-size:12px;color:var(--subtle);margin:7px 0 0}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}.form-card{max-width:760px;padding:26px}.form-footer{display:flex;align-items:center;gap:12px;flex-wrap:wrap;border-top:1px solid var(--border);padding-top:21px;margin-top:24px}.form-footer .subtle{font-size:12px;margin:0}.notice{display:flex;align-items:flex-start;gap:11px;border:1px solid #d0e6d9;background:#effaf3;border-radius:13px;color:#296d4a;padding:13px 15px;font-size:12px;line-height:1.5;margin-bottom:20px}.notice svg{flex-shrink:0;height:20px;width:20px}.notice.warning{background:#fff8e9;border-color:#f2dfb5;color:#8b611f}.notice.danger{background:#fff4ee;border-color:#f2d7cf;color:#984a3c}.chip{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;background:#eef4ef;border-radius:20px;color:#547165;font-size:11px;font-weight:820;white-space:nowrap}.chip--amber{background:var(--amber-bg);color:#975e0c}.chip--green{background:#e3f4ea;color:#187346}.chip--red{background:var(--danger-bg);color:var(--danger)}.chip--blue{background:#edf5ff;color:#3d6792}.list{display:grid;gap:11px}.record{background:#fff;border:1px solid var(--border);border-radius:16px;padding:17px 19px}.record__row{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}.record__name{font-weight:820;font-size:14px}.record__meta{font-size:12px;color:var(--ink-soft);margin-top:6px;line-height:1.55}.record__numbers{display:flex;gap:15px;flex-wrap:wrap;background:#f6f9f6;border:1px solid #edf1ed;border-radius:11px;padding:13px 15px;margin:14px 0}.record__numbers div{min-width:86px;flex:1}.record__numbers span{display:block;font-size:11px;color:var(--ink-soft);margin-bottom:4px}.record__numbers strong{font-size:21px;letter-spacing:-.5px}.record__buttons{display:flex;flex-wrap:wrap;gap:9px;margin-top:14px}.meta-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px}.record__notes{font-size:12px;color:var(--ink-soft);border-left:3px solid #d0eadd;padding-left:11px;margin:12px 0 0;line-height:1.55}.mini-table{width:100%;border-collapse:collapse}.mini-table td,.mini-table th{text-align:left;padding:12px 6px;border-bottom:1px solid #edf1ec}.mini-table th{color:#84968b;font-size:11px;letter-spacing:.08em;font-weight:790}.mini-table td{font-size:12px}.mini-table tr:last-child td{border:0}.strong{font-weight:800}.right{text-align:right!important}.unit{font-size:11px;font-weight:550;color:var(--subtle)}.activity-meta{font-size:11px;color:var(--subtle)}.activity-item{display:flex;justify-content:space-between;gap:14px;padding:14px 0;border-bottom:1px solid #e9f0e9}.activity-item:last-child{border-bottom:0}.activity-item strong{display:block;font-size:13px}.activity-item small{color:var(--ink-soft);font-size:11px;display:block;margin-top:5px}.filterbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 20px}.filterbar input,.filterbar select{border:1px solid var(--border);background:#fff;border-radius:12px;padding:12px 15px;min-height:45px;max-width:100%;min-width:170px;flex:1}.filterbar select{flex:0 1 190px}.stock-list{display:grid;gap:12px}.stock-card{border:1px solid var(--border);background:#fff;border-radius:16px;padding:18px}.stock-card__header{display:flex;align-items:center;justify-content:space-between;gap:14px}.stock-card__header strong{font-size:15px}.stock-card__locations{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:15px}.stock-location{background:#f6f9f7;border-radius:11px;padding:12px}.stock-location small{display:block;font-size:11px;color:var(--ink-soft);margin-bottom:5px}.stock-location strong{font-size:19px}.stock-location em{font-size:11px;color:#9c6722;font-style:normal;display:block}.empty{border:1px dashed #c8dcd0;background:#fcfefd;border-radius:15px;text-align:center;padding:30px;color:var(--subtle)}.empty h3{margin:10px 0 7px;color:var(--ink)}.empty p{margin-bottom:14px;font-size:13px}.empty svg{color:var(--green);margin:0 auto}.loading{color:var(--subtle);display:flex;align-items:center;gap:11px}.spinner{height:19px;width:19px;border:2px solid #d0e7d9;border-top-color:var(--green);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.toast{position:fixed;z-index:60;right:22px;bottom:27px;background:#193d30;color:#fff;padding:14px 19px;border-radius:13px;box-shadow:0 12px 30px #173e3030;max-width:440px;display:none;font-size:13px}.toast.show{display:block}.toast.error{background:#903f31}.dialog{border:1px solid #dce6de;border-radius:21px;padding:25px;width:min(92vw,480px);box-shadow:0 28px 90px #15332555;max-height:90vh;overflow-y:auto}.dialog::backdrop{background:#11291dcc;backdrop-filter:blur(4px)}.dialog__heading{display:flex;justify-content:space-between;gap:12px}.dialog__heading h2{margin:0 0 10px}.dialog__actions{display:flex;gap:8px;justify-content:flex-end;margin-top:15px}.icon-close{border:0;background:#f1f6f2;color:var(--ink-soft);width:34px;height:34px;font-size:24px;border-radius:10px;line-height:20px}.dialog .field{margin-bottom:15px}.mobile-nav{display:none}.notice--flat{margin:14px 0}.split{display:grid;grid-template-columns:1.4fr 1fr;gap:18px}.footer-info{margin-top:27px;color:#8c9f91;font-size:11px}.btn-row{display:flex;gap:8px;flex-wrap:wrap}.view-tabs{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px;margin-bottom:20px}.tab{border:1px solid var(--border);border-radius:22px;background:#fff;color:#557164;white-space:nowrap;font-weight:750;padding:10px 16px;font-size:12px}.tab.is-active{background:var(--green);color:#fff;border-color:var(--green)}
@media(max-width:1070px){.stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-hero{grid-template-columns:1fr 160px}.hero-illustration{width:140px}.split{grid-template-columns:1fr}}
@media(max-width:760px){.topbar{height:69px}.topbar__inner{padding:0 16px}.brand__icon{width:39px;height:39px}.brand strong{font-size:15px}.brand small{font-size:9px}.topbar__right{font-size:9px}.local-label{display:none}.version{margin-left:0}.shell{display:block;min-height:calc(100vh - 69px)}.sidebar{display:none}.main{padding:25px 16px calc(100px + env(safe-area-inset-bottom))}.page-head{margin-bottom:23px}.page-head .button{min-height:40px}.page-head h1{font-size:28px}.dashboard-hero{padding:24px 23px;border-radius:21px;grid-template-columns:1fr}.hero-aside{display:none}.dashboard-hero h1{font-size:28px}.dashboard-hero p{font-size:13px}.stat-grid{gap:10px;margin-bottom:22px}.stat-card{padding:13px 14px;border-radius:14px}.stat-card__top{margin-bottom:7px}.stat-card__top span{font-size:10px}.stat-card strong{font-size:25px}.stat-card__ico{height:27px;width:27px}.stat-card__ico svg{height:15px;width:15px}.action-grid{gap:10px}.action-card{padding:15px 13px;display:block;min-height:133px}.action-card__icon{height:37px;width:37px;margin-bottom:11px}.action-card strong{font-size:13px}.action-card small{font-size:11px}.card{padding:18px}.form-card{padding:20px}.field-row{grid-template-columns:1fr;gap:0}.stock-card__locations{grid-template-columns:1fr 1fr}.record__numbers{padding:10px}.record__numbers div{min-width:76px}.record__numbers strong{font-size:20px}.record{padding:14px}.record__row{align-items:flex-start}.mobile-nav{position:fixed;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));bottom:0;left:0;right:0;z-index:40;background:#fff;border-top:1px solid var(--border);box-shadow:0 -8px 30px #122f2310;padding:9px 4px max(10px,env(safe-area-inset-bottom))}.mobile-nav button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;border:0;background:transparent;color:#698075;font-size:10px;font-weight:760;min-height:43px;padding:3px}.mobile-nav button svg{width:22px;height:22px}.mobile-nav button.is-active{color:var(--green)}.toast{bottom:calc(76px + env(safe-area-inset-bottom));left:15px;right:15px;max-width:none}.dialog{padding:19px;border-radius:17px}.footer-info{font-size:10px}}
@media(max-width:375px){.brand strong{font-size:13px}.stat-card__top{gap:4px}.stat-card__top span{font-size:10px}.action-card{min-height:145px}.stock-location{padding:10px}.record__numbers strong{font-size:18px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;scroll-behavior:auto!important;transition:none!important}}

/* v0.5: identity, sign-in and permission-aware mobile experience */
.session-controls{display:flex;align-items:center;gap:10px;margin-left:12px}
.profile-chip{display:flex;align-items:center;gap:7px;background:#eaf6ed;border:1px solid #d0e6d8;border-radius:14px;padding:6px 10px;color:#195338}
.profile-chip svg{width:18px;height:18px;flex:none}.profile-chip strong,.profile-chip small{display:block;line-height:1.3}
.profile-chip strong{font-size:11px}.profile-chip small{text-transform:capitalize;color:#518466;font-size:10px}
.signout-btn{background:#fff;border:1px solid #d7e6dc;border-radius:10px;padding:8px 12px;color:#325e47;font-weight:740;font-size:11px}
.signout-btn:focus-visible{outline:3px solid #92dcb4;outline-offset:2px}
.signature-note{display:flex;align-items:center;gap:7px;flex-wrap:wrap;background:#eff8f1;border:1px solid #d3e8d9;border-radius:12px;padding:12px 14px;color:#356d4e;font-size:12px;margin:10px 0}
.signature-note strong{color:#164e36}.signature-note svg{width:17px;height:17px}
.signin-page{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(320px,.95fr);min-height:calc(100vh - 110px);border-radius:26px;overflow:hidden;border:1px solid var(--border);background:white;box-shadow:var(--shadow)}
.signin-art{background:linear-gradient(155deg,#0c684c 0%,#0e8356 58%,#71b784 130%);padding:clamp(35px,6vw,80px);color:#fff;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;position:relative;overflow:hidden}
.signin-art::after{content:'';position:absolute;bottom:-110px;right:-180px;width:370px;height:370px;border:70px solid #b4e9bb33;border-radius:50%}
.signin-art h1{font-size:clamp(30px,4vw,53px);line-height:1.12;margin:13px 0 20px;letter-spacing:-1.7px;max-width:560px}
.signin-art p:not(.overline){line-height:1.6;color:#deffdfb8;max-width:440px}
.signin-art .overline{color:#ceefdc}
.signin-mark{display:grid;place-items:center;width:70px;height:70px;border-radius:21px;background:#ffffff1d;margin-bottom:34px}
.signin-mark svg{width:41px;height:41px}
.signin-trust{margin-top:50px;padding:13px 16px;border:1px solid #ffffff49;border-radius:14px;background:#ffffff13;display:flex;align-items:center;gap:10px;font-size:12px}
.signin-trust svg{width:19px;height:19px}
.signin-panel{display:flex;flex-direction:column;justify-content:center;align-items:stretch;padding:clamp(25px,5vw,78px);max-width:620px;width:100%;margin:auto}
.signin-head{margin-bottom:28px}.signin-head h2{font-size:clamp(28px,3vw,38px);letter-spacing:-1px;margin:8px 0 5px;color:#16412d}
.signin-head .overline{font-size:11px;margin:15px 0 0}.signin-head .subtle{font-size:13px;line-height:1.6}
.signin-icon{width:58px;height:58px;border-radius:18px;display:grid;place-items:center;background:#e5f4e9;color:#0e8250}
.signin-icon svg{width:31px;height:31px}
.signin-panel .button{width:100%;justify-content:center;padding:14px 20px;margin-top:7px}
.login-feedback{min-height:20px;color:#a83b31;font-size:12px;margin:2px 0}
.signin-help{color:var(--ink-soft);font-size:11px;line-height:1.6;margin:23px 0 0}
@media(max-width:950px){.signin-page{grid-template-columns:1fr}.signin-art{padding:35px 32px}.signin-art h1{font-size:27px;margin-bottom:0}.signin-art p:not(.overline),.signin-trust{display:none}.signin-mark{display:none}.signin-panel{padding:35px 32px;max-width:550px}}
@media(max-width:760px){.profile-chip{padding:5px 8px;border-radius:10px}.profile-chip svg,.profile-chip small{display:none}.profile-chip strong{font-size:10px}.session-controls{margin-left:0;gap:5px}.signout-btn{font-size:10px;padding:7px 8px}.version{display:none}.signin-page{border-radius:17px;min-height:calc(100vh - 220px)}.signin-art{padding:25px 22px}.signin-art h1{font-size:24px;letter-spacing:-.7px}.signin-panel{padding:28px 22px}.signin-head{margin-bottom:22px}}
@media(max-width:390px){.profile-chip{display:none}.signout-btn{padding:7px 9px}}

.mobile-nav:empty{display:none}
.variance-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:2px 0 23px}
.variance-summary>div{border:1px solid #dcebe0;background:#fff;border-radius:14px;padding:17px 15px;box-shadow:var(--shadow)}
.variance-summary strong{display:block;color:#176746;font-size:27px;letter-spacing:-.8px}
.variance-summary span{display:block;color:#72857b;font-size:11px;line-height:1.4}
@media(max-width:760px){.variance-summary{grid-template-columns:repeat(2,1fr);gap:8px}.variance-summary>div{padding:12px}.variance-summary strong{font-size:24px}}
/* Read-only real catalog import preview (v0.6) */
.catalog-summary{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin:18px 0 20px}
.catalog-metric{border:1px solid #d8e6df;border-radius:15px;background:#fff;min-height:102px;padding:16px 14px;text-align:left;cursor:pointer;display:flex;flex-direction:column;justify-content:space-between;gap:14px;transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease;color:#18382c}
.catalog-metric span{font-size:12px;font-weight:650;color:#506c62}
.catalog-metric strong{font-size:30px;letter-spacing:-.055em;line-height:1}
.catalog-metric.is-active,.catalog-metric:hover{border-color:#087c57;box-shadow:0 5px 20px #0c77531a;transform:translateY(-1px)}
.catalog-source{display:flex;justify-content:space-between;align-items:center;gap:15px;padding:19px 24px;margin-bottom:14px}
.catalog-source strong,.catalog-source small,.catalog-source a{display:block;margin-top:4px}
.catalog-source small{font-size:12px;color:#587266}
.catalog-source a{font-size:12px;font-weight:650;color:#087c57;text-decoration:underline;text-underline-offset:3px}
.catalog-upload{margin-bottom:20px;padding:18px 22px}
.catalog-upload summary{cursor:pointer;color:#0b7054;font-weight:720;list-style-position:inside}
.catalog-upload>p{margin:13px 0 17px}
.catalog-upload form{padding:0 2px}
.catalog-upload input[type=file]{width:100%;padding:10px;border:1px dashed #b9d2c7;border-radius:9px;font-size:12px}
.catalog-controls{display:flex;align-items:end;justify-content:space-between;gap:18px;margin:22px 0 14px}
.catalog-controls>.field{flex:1;max-width:460px}
.catalog-controls .field{margin-bottom:0}
.catalog-controls small{padding-bottom:15px}
.catalog-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.catalog-item{padding:19px 21px;overflow:hidden}
.catalog-card-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:9px}
.catalog-card-head .chip{display:inline-flex;align-items:center;gap:5px;font-size:11px;white-space:nowrap}
.catalog-card-head .chip svg{width:13px;height:13px}
.catalog-id{color:#086e52;font-weight:740;font-size:12px;background:#e8f5ee;border-radius:7px;padding:5px 8px;overflow-wrap:anywhere}
.catalog-item h3{font-size:18px;line-height:1.28;margin:0 0 4px;color:#162f25}
.catalog-group{font-size:12px;color:#65776d;margin:0 0 15px}
.catalog-units{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 10px}
.catalog-units span{display:flex;flex-direction:column;gap:3px;font-weight:700;font-size:12px;color:#183e2f;min-width:72px}
.catalog-units span b{font-weight:550;font-size:10px;text-transform:uppercase;letter-spacing:.07em;color:#6e8078}
.catalog-factors{display:flex;flex-wrap:wrap;gap:5px;padding:8px 0 4px}
.catalog-factors span{font-size:10px;padding:5px 8px;background:#f2f7f4;color:#48695b;border-radius:50px}
.catalog-issues{margin-top:13px;border-top:1px solid #e0e9e3;padding-top:9px}
.catalog-issues p{font-size:11px;line-height:1.5;display:flex;gap:7px;align-items:flex-start;color:#876617;margin:5px 0}
.catalog-issues p.catalog-issue-error{color:#ad3f35}
.catalog-issues svg{height:13px;width:13px;flex-shrink:0;margin-top:2px}
.catalog-loading{padding:46px;text-align:center;display:flex;align-items:center;flex-direction:column;gap:15px}
.catalog-footer-note{font-size:12px;color:#64796a;margin:20px 0 0}
@media(max-width:1050px){.catalog-summary{grid-template-columns:repeat(3,minmax(0,1fr))}.catalog-cards{grid-template-columns:1fr}}
@media(max-width:620px){.catalog-summary{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.catalog-metric{min-height:90px;padding:13px}.catalog-metric strong{font-size:25px}.catalog-source{padding:16px;align-items:start;flex-direction:column}.catalog-cards{grid-template-columns:1fr;gap:11px}.catalog-item{padding:15px}.catalog-controls{align-items:start;flex-direction:column;gap:7px}.catalog-controls>.field{width:100%;max-width:none}.catalog-controls small{padding:0 0 4px}.catalog-card-head{align-items:flex-start}.catalog-upload{padding:15px}.catalog-upload .field-row{display:block}}
/* Read-only real catalog import preview (v0.6) */
.catalog-summary{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin:18px 0 20px}
.catalog-metric{border:1px solid #d8e6df;border-radius:15px;background:#fff;min-height:102px;padding:16px 14px;text-align:left;cursor:pointer;display:flex;flex-direction:column;justify-content:space-between;gap:14px;transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease;color:#18382c}
.catalog-metric span{font-size:12px;font-weight:650;color:#506c62}
.catalog-metric strong{font-size:30px;letter-spacing:-.055em;line-height:1}
.catalog-metric.is-active,.catalog-metric:hover{border-color:#087c57;box-shadow:0 5px 20px #0c77531a;transform:translateY(-1px)}
.catalog-source{display:flex;justify-content:space-between;align-items:center;gap:15px;padding:19px 24px;margin-bottom:14px}
.catalog-source strong,.catalog-source small,.catalog-source a{display:block;margin-top:4px}
.catalog-source small{font-size:12px;color:#587266}
.catalog-source a{font-size:12px;font-weight:650;color:#087c57;text-decoration:underline;text-underline-offset:3px}
.catalog-upload{margin-bottom:20px;padding:18px 22px}
.catalog-upload summary{cursor:pointer;color:#0b7054;font-weight:720;list-style-position:inside}
.catalog-upload>p{margin:13px 0 17px}
.catalog-upload form{padding:0 2px}
.catalog-upload input[type=file]{width:100%;padding:10px;border:1px dashed #b9d2c7;border-radius:9px;font-size:12px}
.catalog-controls{display:flex;align-items:end;justify-content:space-between;gap:18px;margin:22px 0 14px}
.catalog-controls>.field{flex:1;max-width:460px}
.catalog-controls .field{margin-bottom:0}
.catalog-controls small{padding-bottom:15px}
.catalog-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.catalog-item{padding:19px 21px;overflow:hidden}
.catalog-card-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:9px}
.catalog-card-head .chip{display:inline-flex;align-items:center;gap:5px;font-size:11px;white-space:nowrap}
.catalog-card-head .chip svg{width:13px;height:13px}
.catalog-id{color:#086e52;font-weight:740;font-size:12px;background:#e8f5ee;border-radius:7px;padding:5px 8px;overflow-wrap:anywhere}
.catalog-item h3{font-size:18px;line-height:1.28;margin:0 0 4px;color:#162f25}
.catalog-group{font-size:12px;color:#65776d;margin:0 0 15px}
.catalog-units{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 10px}
.catalog-units span{display:flex;flex-direction:column;gap:3px;font-weight:700;font-size:12px;color:#183e2f;min-width:72px}
.catalog-units span b{font-weight:550;font-size:10px;text-transform:uppercase;letter-spacing:.07em;color:#6e8078}
.catalog-factors{display:flex;flex-wrap:wrap;gap:5px;padding:8px 0 4px}
.catalog-factors span{font-size:10px;padding:5px 8px;background:#f2f7f4;color:#48695b;border-radius:50px}
.catalog-issues{margin-top:13px;border-top:1px solid #e0e9e3;padding-top:9px}
.catalog-issues p{font-size:11px;line-height:1.5;display:flex;gap:7px;align-items:flex-start;color:#876617;margin:5px 0}
.catalog-issues p.catalog-issue-error{color:#ad3f35}
.catalog-issues svg{height:13px;width:13px;flex-shrink:0;margin-top:2px}
.catalog-loading{padding:46px;text-align:center;display:flex;align-items:center;flex-direction:column;gap:15px}
.catalog-footer-note{font-size:12px;color:#64796a;margin:20px 0 0}
@media(max-width:1050px){.catalog-summary{grid-template-columns:repeat(3,minmax(0,1fr))}.catalog-cards{grid-template-columns:1fr}}
@media(max-width:620px){.catalog-summary{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.catalog-metric{min-height:90px;padding:13px}.catalog-metric strong{font-size:25px}.catalog-source{padding:16px;align-items:start;flex-direction:column}.catalog-cards{grid-template-columns:1fr;gap:11px}.catalog-item{padding:15px}.catalog-controls{align-items:start;flex-direction:column;gap:7px}.catalog-controls>.field{width:100%;max-width:none}.catalog-controls small{padding:0 0 4px}.catalog-card-head{align-items:flex-start}.catalog-upload{padding:15px}.catalog-upload .field-row{display:block}}

/* v0.7: phone-first catalog staging/review without quantity migration */
.stage-panel{padding:22px;margin:16px 0 22px;border:1px solid #b9dfcd;background:linear-gradient(128deg,#f1faf5,#fff)}
.stage-panel h3{font-size:21px;letter-spacing:-.03em;margin:6px 0 8px;color:#173d2c}
.stage-panel p{margin:4px 0;color:#537064;font-size:13px;line-height:1.52}
.stage-panel>.button{margin-top:14px}
.stage-panel-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
.stage-progress{height:12px;background:#dcece2;border-radius:50px;overflow:hidden;margin:17px 0 10px}
.stage-progress span{display:block;height:100%;background:#0a8155;border-radius:50px;transition:width .25s ease}
.stage-stats{display:flex;flex-wrap:wrap;gap:9px}
.stage-stats span{background:#fff;padding:8px 11px;border:1px solid #dbece0;border-radius:10px;font-size:12px;color:#46705b}
.stage-stats b{font-size:15px;color:#174932}
.stage-safety{font-size:12px;display:flex;align-items:center;gap:7px;margin-top:14px!important;color:#3a6451!important}
.stage-safety svg{width:17px;height:17px;flex-shrink:0}
.stage-card-review{border-top:1px solid #dbe9e0;margin-top:12px;padding-top:11px}
.stage-card-review>div{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}
.stage-card-review small{font-weight:680;color:#668075}
.stage-card-review p{color:#466b58;font-size:12px;line-height:1.45;margin:8px 0;overflow-wrap:anywhere}
.stage-card-review .button{margin-top:10px;min-height:38px}
.stage-ack{display:flex;align-items:flex-start;gap:12px;background:#eef7f1;padding:13px;border-radius:12px;color:#1d6244;font-size:13px;font-weight:650;line-height:1.4}
.stage-ack input{width:20px;height:20px;flex-shrink:0;margin:0}
@media(max-width:620px){.stage-panel{padding:16px;margin:12px 0 18px}.stage-panel-head{flex-direction:column}.stage-panel-head>.button,.stage-panel>.button{width:100%}.stage-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.stage-stats span{font-size:11px}.stage-card-review .button{width:100%}}

/* v0.8: phone-first blind count cutoff session flow */
.count-steps{background:#f3faf5;border:1px solid #d7eadb;border-radius:15px;padding:16px 18px;margin:6px 0 20px;display:grid;gap:14px}
.count-step{display:flex;gap:12px;align-items:flex-start}
.count-step>span{display:grid;place-items:center;border-radius:50%;background:#0b7654;color:white;width:27px;height:27px;flex-shrink:0;font-size:13px;font-weight:800}
.count-step b{display:block;font-size:13px;color:#1d4731}
.count-step small{display:block;margin-top:3px;color:#5e7a69;font-size:12px;line-height:1.45}
.count-active{background:linear-gradient(135deg,#e8f8ed 0%,#f9fefa 100%);border:1px solid #bde3ce;border-radius:18px;padding:19px;margin:9px 0 23px}
.count-active__header{display:flex;align-items:center;gap:12px}
.count-active__icon{display:grid;place-items:center;min-width:45px;height:45px;background:#0d7e56;color:white;border-radius:13px}
.count-active__icon svg{width:24px;height:24px}
.count-active__header>div{flex:1;min-width:0}
.count-active__header h3{font-size:18px;line-height:1.2;color:#153f2b;margin:3px 0}
.count-active__header p:not(.overline){font-size:12px;color:#426951;margin:0}
.count-active__details{display:flex;flex-wrap:wrap;gap:12px;border-top:1px solid #cbe7d5;margin-top:16px;padding-top:11px}
.count-active__details span{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:#286142}
.count-active__details svg{width:15px;height:15px}
.count-warning{display:flex;align-items:flex-start;gap:9px;background:#fff1eb;border:1px solid #f2c3a8;border-radius:12px;padding:12px;margin:14px 0;color:#904522;font-size:12px;line-height:1.5;font-weight:650}
.count-warning svg{flex-shrink:0;width:17px;height:17px}
@media(max-width:600px){.count-active{padding:14px}.count-active__header{flex-wrap:wrap}.count-active__header .chip{margin-left:56px}.count-active__details{gap:9px}.count-steps{padding:13px}.form-footer [data-count-cancel]{width:100%;margin-top:5px}}

/* v0.9: warehouse lot receiving and quality disposition, readable at 390px. */
.lot-entry{margin:16px 0 22px;padding:20px;border-radius:20px;border:1px solid #cfe4d6;background:linear-gradient(160deg,#f2fbf5,#fff);}
.lot-entry__heading{display:flex;align-items:flex-start;gap:12px;margin-bottom:17px;}
.lot-entry__icon{display:inline-grid;place-items:center;width:44px;height:44px;flex:none;border-radius:14px;color:#187548;background:#dff3e6;}
.lot-entry__icon svg{width:23px;height:23px;}
.lot-entry__heading h3{margin:2px 0 4px;font-size:1.1rem;color:#173c2c;}
.lot-entry__heading p:not(.overline){margin:0;color:#527663;line-height:1.45;font-size:.86rem;}
.lot-summary{border:1px solid #d7e8db;border-radius:15px;background:#f3faf5;padding:13px 15px;margin:12px 0;}
.lot-summary__head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;flex-wrap:wrap;font-size:.85rem;color:#244d35;}
.lot-summary__head span:first-child{display:inline-flex;gap:6px;align-items:center;}
.lot-summary__head svg{width:17px;height:17px;}
.lot-summary__metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:13px 0 7px;}
.lot-summary__metrics span{background:#fff;border:1px solid #d9e9db;border-radius:10px;padding:10px 9px;font-size:.74rem;color:#54715b;}
.lot-summary__metrics strong{display:block;font-size:1.18rem;color:#173c2c;margin-bottom:2px;}
.lot-summary small{display:block;color:#55715d;overflow-wrap:anywhere;}
.lot-summary p{font-size:.8rem;margin:8px 0 0;color:#6a5220;line-height:1.35;}
@media(max-width:560px){.lot-entry{padding:14px;border-radius:16px}.lot-summary{padding:11px}.lot-summary__metrics{gap:5px}.lot-summary__metrics span{padding:9px 7px;font-size:.69rem}.lot-summary__metrics strong{font-size:1.02rem}.lot-summary__head{font-size:.79rem}.lot-entry .field-row{display:block}}

/* v0.10: phone-first, collapsible, immutable-in-effect case evidence cards. */
.variance-downloads{display:flex;align-items:center;justify-content:flex-end;gap:7px;flex-wrap:wrap}
.variance-downloads .button{font-size:.78rem;padding:10px 12px;white-space:nowrap}
.case-evidence{margin:15px 0 3px;border:1px solid #d8e7dc;border-radius:16px;overflow:hidden;background:#f7fbf8}
.case-evidence>summary{display:flex;align-items:center;gap:11px;cursor:pointer;padding:14px 15px;list-style:none;user-select:none;color:#254937}
.case-evidence>summary::-webkit-details-marker{display:none}
.case-evidence>summary:focus-visible{outline:3px solid #278454;outline-offset:-3px}
.case-evidence__summary-icon{display:grid;place-items:center;flex:none;width:36px;height:36px;border-radius:11px;background:#e3f3e8;color:#286f49}
.case-evidence__summary-icon svg{width:20px;height:20px}
.case-evidence summary strong{display:block;font-size:.9rem}
.case-evidence summary small{display:block;margin-top:3px;color:#64806e;font-size:.77rem}
.case-evidence__chevron{height:18px;width:18px;margin-left:auto;transition:transform .15s ease;flex:none}
.case-evidence[open] .case-evidence__chevron{transform:rotate(90deg)}
.case-evidence__body{padding:0 14px 14px}
.case-evidence__body h4{font-size:.84rem;color:#2b5d40;margin:16px 0 8px}
.case-evidence__notice{display:flex;gap:8px;align-items:flex-start;padding:12px;border-radius:12px;background:#fff4e3;color:#744817;font-size:.82rem;line-height:1.45}
.case-evidence__notice svg{height:17px;width:17px;flex:none}
.case-evidence__list{list-style:none;margin:0;padding:0;display:grid;gap:7px}
.case-evidence__item{display:grid;gap:4px;padding:11px 12px;border-radius:11px;background:#fff;border:1px solid #e0e9e3;overflow-wrap:anywhere}
.case-evidence__item strong{font-size:.85rem;color:#203f2e;text-transform:capitalize}
.case-evidence__item span:not(.case-evidence__stamp){font-size:.82rem;color:#476450}
.case-evidence__stamp,.case-evidence__item small,.case-evidence__more,.case-evidence__empty{color:#66786c;font-size:.76rem;line-height:1.5;overflow-wrap:anywhere}
.case-evidence__empty{padding:10px;background:#fff;border-radius:9px}
.case-evidence__more{margin:8px 2px 12px}
@media(max-width:690px){.variance-downloads{justify-content:flex-start;width:100%;margin-top:8px}.variance-downloads .button{flex:1 1 auto;min-height:44px;justify-content:center}.case-evidence{margin:13px -2px 0}.case-evidence>summary{padding:12px}.case-evidence__body{padding:0 11px 11px}.case-evidence__item{padding:10px}}

@media(max-width:760px){.page-head--variance{flex-direction:column;align-items:stretch;gap:0}.page-head--variance>.variance-downloads{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));margin-top:16px;gap:8px;width:100%}.page-head--variance>.variance-downloads .button:first-child{grid-column:1/-1}.page-head--variance .button{min-width:0;white-space:normal;text-align:center;line-height:1.25}.page-head--variance .subtle{max-width:none}}

/* v0.11 — phone-first lot allocation on warehouse transfers. */
.lot-allocate{margin:17px 0 19px;background:linear-gradient(155deg,#eff9f3,#fff);border:1px solid #cfe9da;border-radius:17px;padding:18px 18px 12px;min-width:0}
.lot-allocate .lot-entry__heading{margin-bottom:12px}
.lot-allocate .field{margin-bottom:9px}
.lot-allocate select{width:100%;max-width:100%;background:#fff;min-height:49px;text-overflow:ellipsis}
.transfer-lot-status{background:#e8f5ec;border-radius:11px;padding:10px 12px;font-size:12px;line-height:1.5;color:#276b4e;margin-bottom:5px}
.transfer-lot-tag{display:flex;gap:7px;align-items:center;color:#256a4d;background:#edf7f1;border-radius:10px;padding:9px 11px;margin:10px 0 3px;font-size:12px;overflow-wrap:anywhere}
.transfer-lot-tag svg{width:17px;height:17px;flex-shrink:0}
@media(max-width:520px){.lot-allocate{padding:15px 12px 11px;margin:14px 0}.lot-allocate select{font-size:15px}}

/* v0.12: legible lot identity throughout blind counts, without stock disclosure. */
.count-lot-picker{margin-top:18px}
.count-lot-pill{display:inline-flex;align-items:center;gap:7px;background:#e3f6ea;color:#205d42;border:1px solid #bddfc9;border-radius:12px;padding:7px 10px;font-size:13px;font-weight:750;overflow-wrap:anywhere;margin-top:7px}
.count-lot-pill svg{width:16px;height:16px;flex:none}
.count-scope-note{margin:12px 0 16px;display:flex;align-items:flex-start;gap:9px;border:1px solid #b9ddc9;background:#f0faf4;color:#21553e;padding:13px;border-radius:14px;font-size:13px;line-height:1.5}
.count-scope-note svg{width:19px;height:19px;flex-shrink:0}
@media(max-width:540px){.count-lot-picker select{min-height:52px;font-size:16px}.count-lot-pill{max-width:100%}}

/* v0.13: accessible, responsive separation of QC pending and rejected observations. */
.quality-bucket-panel{margin:17px 0 24px;padding:18px;border:1px solid #d3e8d9;border-radius:19px;background:linear-gradient(155deg,#f3fbf5 0%,#fff 82%)}
.quality-bucket-panel .section-title{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:14px}
.quality-bucket-panel .section-title h2{color:#194631;font-size:1.21rem;margin:3px 0 5px}
.quality-bucket-panel .subtle{line-height:1.5;font-size:.83rem}
.quality-bucket-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,305px),1fr));gap:12px;margin:13px 0}
.quality-bucket-card{min-width:0;background:white;border:1px solid #d7e9dd;border-radius:15px;padding:15px;box-shadow:0 3px 11px rgba(30,75,45,.035)}
.quality-bucket-head{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;flex-wrap:wrap}
.quality-bucket-head strong{display:block;overflow-wrap:anywhere;color:#1d4932;font-size:.99rem}
.quality-bucket-head small{display:block;color:#607d6b;margin-top:5px;font-size:.76rem}
.quality-bucket-numbers{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin:13px 0}
.quality-bucket-numbers>div{min-width:0;border-radius:11px;background:#f3f8f4;padding:11px 7px;border:1px solid #e1ebe4}
.quality-bucket-numbers span,.quality-bucket-observations small{display:block;color:#577560;font-size:.71rem;line-height:1.3}
.quality-bucket-numbers strong{display:block;margin-top:5px;font-size:1.2rem;line-height:1.1;color:#184c33;overflow-wrap:anywhere}
.quality-bucket-observations{display:grid;gap:7px}
.quality-bucket-observations>div{padding:9px 11px;border:1px dashed #dbe7dd;border-radius:10px}
.quality-bucket-observations strong{font-size:.78rem;line-height:1.45;color:#274e38;overflow-wrap:anywhere}
@media(max-width:540px){.quality-bucket-panel{padding:12px;border-radius:15px}.quality-bucket-card{padding:11px}.quality-bucket-numbers strong{font-size:1.06rem}.quality-bucket-numbers span{font-size:.65rem}.quality-bucket-panel .section-title .chip{max-width:100%}}
