@import url('https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&display=swap');
:root{--ink:#17342d;--muted:#75837c;--green:#174e3f;--lime:#d4f36c;--paper:#f4f6f1;--line:#e5e9e2;--white:#fff;--mono:'DM Mono',monospace;--sans:'DM Sans',sans-serif;--display:'Manrope',sans-serif}*{box-sizing:border-box}[hidden]{display:none!important}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased}.topbar{height:72px;padding:0 max(24px,calc((100% - 1180px)/2));display:flex;align-items:center;justify-content:space-between;background:#fff;border-bottom:1px solid #edf0eb}.brand{display:flex;align-items:center;gap:11px;color:var(--ink);text-decoration:none;font:800 15px var(--display);letter-spacing:-.4px}.brand-mark{width:34px;height:34px;border-radius:11px;background:var(--green);color:var(--lime);display:grid;place-items:center;font:800 17px var(--display)}.brand small{display:block;margin-top:2px;font:500 8px var(--mono);letter-spacing:1.25px;color:#89948d}.offline-pill{font:500 11px var(--mono);color:#527263;display:flex;align-items:center;gap:8px}.offline-pill i{width:7px;height:7px;border-radius:100%;background:#78b65c;box-shadow:0 0 0 3px #eaf4e4}main{max-width:1180px;margin:auto;padding:45px 28px 28px}.intro{display:flex;align-items:center;justify-content:space-between;margin-bottom:32px}.eyebrow{font:500 10px var(--mono);letter-spacing:1.6px;color:#718179;margin:0 0 12px}.eyebrow span{margin-left:10px;color:#a2aaa3}h1{font:700 clamp(34px,4.5vw,52px)/1.03 var(--display);letter-spacing:-2.2px;margin:0;color:#17372e}h1 em{font-style:normal;color:#799342}.lede{font-size:14px;color:#7b8881;margin:12px 0 0}.hero-badge{width:80px;height:80px;border-radius:26px;background:#e6eedc;display:flex;flex-direction:column;justify-content:center;align-items:center;transform:rotate(6deg);color:#57783d}.hero-badge span{font:500 11px var(--mono);letter-spacing:1px}.hero-badge b{font:700 25px var(--sans)}.layout{display:grid;grid-template-columns:1.05fr .95fr;gap:20px;align-items:start}.card,.results{border-radius:18px}.input-card,.history{background:#fff;border:1px solid #e8ece6;padding:24px}.section-heading,.result-head,.history-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:23px}.section-heading>div,.result-head>div,.history-heading>div{display:flex;align-items:center;gap:10px}.step{font:500 10px var(--mono);color:#819168;background:#eff4e7;border-radius:7px;padding:6px 7px}h2{font:700 16px var(--display);margin:0;letter-spacing:-.3px}.required-note{font:10px var(--mono);color:#9aa39c}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px 14px}label{position:relative;display:flex;flex-direction:column;gap:8px;font-size:12px;font-weight:600;color:#465a51}.unit{position:absolute;right:12px;top:0;font:10px var(--mono);letter-spacing:.5px;color:#9ba59e}input{width:100%;height:46px;border:1px solid #e2e8e1;border-radius:9px;background:#fbfcfa;padding:0 13px;color:var(--ink);font:500 14px var(--mono);outline:none;transition:.15s}input::placeholder{color:#bdc5bf}input:focus{border-color:#73916e;box-shadow:0 0 0 3px #e9f0e4;background:#fff}.wide{grid-column:1/-1}.divider{display:flex;align-items:center;gap:12px;margin:23px 0 17px;color:#8b978f;font:500 9px var(--mono);letter-spacing:1.3px}.divider:before,.divider:after{content:'';height:1px;background:#edf0eb;flex:1}.actions{display:flex;align-items:center;gap:13px;margin-top:23px}.primary{border:0;border-radius:9px;background:var(--green);color:#fff;height:46px;padding:0 15px;display:flex;align-items:center;justify-content:space-between;gap:24px;font:600 13px var(--sans);cursor:pointer;flex:1;box-shadow:0 4px 9px #174e3f1c}.primary span:last-child{font-size:19px;color:var(--lime)}.primary:hover{background:#103d31}.reset,.text-button{border:0;background:transparent;color:#7b8981;font:500 11px var(--sans);cursor:pointer;padding:10px}.results{background:#e9eee5;padding:22px}.result-head{margin-bottom:15px}.result-state{font:10px var(--mono);color:#8b968e}.output-card{border-radius:14px;background:var(--green);color:#fff;padding:20px 19px 16px;position:relative;overflow:hidden}.output-card:after{content:'';position:absolute;right:-35px;top:-58px;width:145px;height:145px;border:1px solid #ffffff17;border-radius:50%;box-shadow:0 0 0 18px #ffffff08,0 0 0 36px #ffffff05}.output-label{display:flex;justify-content:space-between;align-items:center;color:#d5e8d4;font:500 9px var(--mono);letter-spacing:1.3px}.output-label span{font-size:8px;letter-spacing:.8px;color:#a9c7aa}.output-value{margin:13px 0 2px;display:flex;align-items:baseline;gap:9px}.output-value strong{font:700 clamp(35px,5vw,47px)/1 var(--display);letter-spacing:-2px;color:#fff}.output-value span{font:500 12px var(--mono);color:#bcd4b7}.output-card p{font-size:10px;color:#bed2c2;margin:8px 0 15px}.equation{border-top:1px solid #ffffff25;padding-top:11px;font:9px/1.7 var(--mono);color:#d0dfd0}.metric-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}.metric{border-radius:11px;background:#fff;padding:14px 14px 12px;min-height:91px}.metric>span{display:block;color:#728078;font-size:10px}.metric strong{display:block;margin:6px 0 2px;font:700 21px var(--display);letter-spacing:-.6px;color:#29483b}.metric strong small{font:500 10px var(--mono);color:#819087;letter-spacing:0}.metric>small{font-size:9px;color:#9ba69f}.metric-wide{grid-column:1/-1;min-height:82px}.metric-wide strong{font-size:24px}.save-button{width:100%;height:43px;margin-top:11px;border:1px solid #cbd5c7;background:transparent;border-radius:9px;color:#315543;font:600 12px var(--sans);cursor:pointer}.save-button span{font-size:17px;vertical-align:-1px;margin-right:4px}.save-button:disabled{opacity:.52;cursor:not-allowed}.save-button:not(:disabled):hover{background:#fff}.history{margin-top:20px;padding:21px 24px}.history-heading{margin:0 0 12px}.text-button{color:#9a6559}.history-empty{min-height:58px;border-top:1px solid #edf0eb;display:flex;align-items:center;gap:11px;color:#98a39c}.empty-icon{width:29px;height:29px;display:grid;place-items:center;border-radius:9px;background:#f3f5f1;color:#76867c;font-size:18px}.history-empty p{font-size:11px}.history-list{border-top:1px solid #edf0eb}.history-row{display:grid;grid-template-columns:1fr auto auto;gap:22px;align-items:center;padding:13px 2px;border-bottom:1px solid #f0f2ef}.history-row:last-child{border-bottom:0}.history-date{font:10px var(--mono);color:#89968e}.history-spec{font-size:11px;color:#55665e;margin-top:4px}.history-output{text-align:right;font:600 12px var(--mono);color:#29483b}.history-diff{text-align:right;font:10px var(--mono);color:#748078}.history-diff small{display:block;color:#a0aaa3;margin-top:3px}footer{display:flex;justify-content:space-between;padding:19px 3px 0;color:#9aa49d;font:9px var(--mono)}footer span:first-child{color:#607168}@media(max-width:760px){.topbar{height:62px;padding:0 19px}main{padding:28px 16px 23px}.intro{margin-bottom:23px}.hero-badge{width:61px;height:61px;border-radius:20px}.hero-badge b{font-size:20px}.lede{max-width:300px;font-size:12px}.layout{grid-template-columns:1fr;gap:14px}.input-card{padding:20px 17px}.results{padding:18px}.section-heading{margin-bottom:19px}.form-grid{gap:15px 11px}input{height:45px;font-size:13px}.history{margin-top:14px;padding:18px 17px}.history-row{gap:10px}.history-date{font-size:9px}.history-spec{font-size:10px}.history-output{font-size:11px}footer{padding:15px 3px 0;font-size:8px}}@media(max-width:370px){.offline-pill{font-size:0}.offline-pill i{width:8px;height:8px}.required-note{font-size:9px}.input-card{padding:17px 14px}.output-label{font-size:8px}.metric{padding:12px 10px}.metric strong{font-size:19px}}
 .size-hint{font-size:11px;color:#839087;margin:-8px 0 12px}.size-rows{display:grid;gap:10px}.size-row{border:1px solid #e6ebe4;border-radius:11px;padding:12px;background:#fcfdfa}.size-row-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.size-number{font:500 9px var(--mono);letter-spacing:1px;color:#819168}.remove-size{border:0;background:transparent;color:#aa7770;font:500 10px var(--sans);cursor:pointer}.size-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}.size-fields .size-qty{grid-column:1/-1}.add-size{margin-top:10px;width:100%;height:38px;border:1px dashed #bbc8b8;background:#f8faf6;border-radius:9px;color:#4d7059;font:600 11px var(--sans);cursor:pointer}.add-size:hover{background:#eff4e9}
 .quality-groups{display:grid;gap:13px}.quality-group{background:#fff;border:1px solid #e4eae2;border-radius:13px;padding:15px}.quality-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}.quality-number{font:500 10px var(--mono);letter-spacing:1.2px;color:#577b52}.remove-quality{border:0;background:transparent;color:#aa7770;font:500 10px var(--sans);cursor:pointer}.quality-fields{margin-bottom:16px}.reel-weights{border-radius:10px;background:#f6f8f3;padding:12px}.subheading{display:block;margin-bottom:11px;color:#819087;font:500 9px var(--mono);letter-spacing:1px}.subheading small{float:right;font-size:9px}.quality-group .divider{margin:17px 0 12px}.quality-group .size-row{background:#fff}.quality-group>.add-size{margin-top:9px}
 .paper-reels,.production-lines{display:grid;gap:10px}.paper-reel-row,.production-line{background:#fff;border:1px solid #e4eae2;border-radius:11px;padding:13px}.dynamic-row-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:11px}.row-number{font:500 9px var(--mono);letter-spacing:1px;color:#66855d}.remove-row{border:0;background:transparent;color:#aa7770;font:500 10px var(--sans);cursor:pointer}.production-line .form-grid,.paper-reel-row .form-grid{gap:13px 11px}.batch-fields{margin-bottom:2px}
 .gsm-breakdown{margin-top:14px;padding:14px;background:#fff;border-radius:11px}.gsm-title{display:flex;justify-content:space-between;gap:8px;color:#52675c;font:500 9px var(--mono);letter-spacing:.8px}.gsm-title small{font-size:8px;color:#98a39b;text-align:right}.gsm-differences{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}.gsm-differences>p{grid-column:1/-1;margin:0;color:#98a39b;font-size:10px}.gsm-metric{padding:10px;border:1px solid #edf0eb;border-radius:9px}.gsm-metric>span{font:500 10px var(--mono);color:#728078}.gsm-metric strong{display:block;margin:5px 0 3px;font:700 17px var(--display);color:#315543}.gsm-metric strong.negative{color:#a35c4f}.gsm-metric strong small{font:500 9px var(--mono)}.gsm-metric>small{font-size:8px;color:#929e95}
 .reel-weight-field{grid-column:1/-1}.percentage-board{margin-top:12px;padding:13px;background:#fff;border-radius:11px}.percentage-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(82px,1fr));gap:7px;margin-top:10px}.percentage-cards article{padding:10px 7px;background:#f6f8f3;border-radius:8px;text-align:center}.percentage-cards article span{display:block;font:500 8px var(--mono);letter-spacing:.6px;color:#7f8e84}.percentage-cards article strong{display:block;margin-top:6px;font:700 16px var(--display);color:#315543}.mill-differences{display:grid;gap:8px;margin-top:10px}.mill-differences>p{margin:0;color:#98a39b;font-size:10px}.mill-metric{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px;border:1px solid #edf0eb;border-radius:9px}.mill-metric>div{min-width:0}.mill-metric>div strong{display:block;color:#29483b;font-size:12px;overflow-wrap:anywhere}.mill-metric>div small{display:block;margin-top:4px;color:#929e95;font-size:9px}.mill-metric>b{flex:none;color:#315543;font:700 16px var(--display)}.mill-metric>b.negative{color:#a35c4f}
 .saved-mill-analysis{margin-top:18px;padding-top:15px;border-top:1px solid #edf0eb}.saved-mill-analysis .gsm-title{margin-bottom:9px}
 .top-actions{display:flex;align-items:center;gap:14px}.top-actions button{border:0;background:transparent;color:#7b8981;font:500 11px var(--sans);cursor:pointer}.auth-gate{min-height:calc(100vh - 72px);display:grid;place-items:center;padding:24px}.auth-card{width:min(100%,390px);background:#fff;border:1px solid #e6ebe4;border-radius:18px;padding:26px;box-shadow:0 16px 50px #17342d12}.auth-card .brand-mark{margin-bottom:23px}.auth-card .eyebrow{margin-bottom:8px}.auth-card h1{font-size:34px;letter-spacing:-1px}.auth-card>p:not(.eyebrow){font-size:12px;color:#748078;line-height:1.6;margin:8px 0 19px}.auth-card label{margin-top:13px}.auth-card .primary{width:100%;margin-top:18px}.auth-card>small{display:block;margin-top:14px;color:#87938b;font-size:10px}.app-message{position:fixed;left:50%;bottom:22px;transform:translateX(-50%);max-width:calc(100% - 32px);padding:11px 16px;background:#17342d;color:#fff;border-radius:9px;font-size:12px;box-shadow:0 5px 18px #17342d2c;z-index:20}.app-message.error{background:#913e34}
 .history-actions{display:flex;align-items:center;gap:4px}.history-actions button{white-space:nowrap}.history-actions #download-excel{color:#315543}
