:root{--ink: #171514;--paper: #f6f1e8;--panel: #fffdf9;--line: #d6d0c4;--line-strong: #8e8575;--accent: #7a1f3d;--accent-2: #2c5f4f;--warn: #a1481c;--shadow: 0 24px 70px rgba(44, 26, 11, .08);--mono: "IBM Plex Mono", "Courier New", monospace;--sans: "IBM Plex Sans", "Segoe UI", sans-serif;color-scheme:light;font-family:var(--sans)}*{box-sizing:border-box}body{margin:0;color:var(--ink);background:linear-gradient(180deg,rgba(122,31,61,.06),transparent 24%),linear-gradient(135deg,#fcfaf6,#f6efe4 48%,#eee6d7)}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(rgba(23,21,20,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(23,21,20,.035) 1px,transparent 1px);background-size:28px 28px;pointer-events:none}.page{width:min(1480px,calc(100vw - 28px));margin:0 auto;padding:22px 0 40px;position:relative}.panel{background:#fffdf9eb;border:1px solid rgba(214,208,196,.95);box-shadow:var(--shadow);border-radius:6px}.compact{padding:14px 16px}.hero{display:grid;grid-template-columns:1.9fr 1fr;gap:20px;padding:22px;margin-bottom:16px}.eyebrow{margin:0 0 10px;color:var(--accent);font-family:var(--mono);text-transform:uppercase;letter-spacing:.12em;font-size:12px}h1{margin:0;font-size:clamp(2rem,3vw,3.8rem);line-height:.96;text-transform:uppercase;font-family:var(--mono)}.intro{max-width:72ch;margin:16px 0 0;color:#5e584e;line-height:1.55}.hero-note{border:1px dashed var(--line-strong);padding:18px;align-self:start;background:linear-gradient(180deg,#7a1f3d08,#2c5f4f0d)}.hero-note strong{display:block;font-family:var(--mono);text-transform:uppercase;font-size:12px;margin-bottom:8px}.upload-panel{padding:16px;margin-bottom:16px}.upload-row,.form-actions{display:flex;gap:12px;flex-wrap:wrap;align-items:center}.checkbox-row{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:#5f594f}.checkbox-row input{width:auto}.upload-grid{display:grid;grid-template-columns:minmax(280px,360px) 1fr;gap:18px;margin-top:16px}.upload-control{position:relative;overflow:hidden;display:inline-flex;align-items:center;padding:11px 14px;border:1px dashed var(--line-strong);background:#fff;cursor:pointer;font-size:14px}.upload-control input{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer}button{border:none;cursor:pointer;border-radius:3px;padding:10px 16px;background:var(--accent);color:#fff;font-family:var(--mono);font-size:12px;text-transform:uppercase;letter-spacing:.04em}button.secondary{background:#fff;color:var(--ink);border:1px solid var(--line-strong)}button.mini{padding:7px 10px;font-size:11px}button:disabled{cursor:not-allowed;opacity:.5}.link-button{padding:0;border:none;background:none;color:var(--accent);text-transform:none;letter-spacing:0;font-family:var(--sans);text-decoration:underline}.preview-shell{min-height:260px;display:grid;place-items:center;border:1px solid var(--line);background:repeating-linear-gradient(45deg,#17151408,#17151408 14px,#ffffff59 14px,#ffffff59 28px)}#preview-image{display:none;max-width:100%;max-height:520px}#preview-image.visible{display:block}.status-box{display:flex;flex-direction:column;gap:12px}.status-line{display:flex;justify-content:space-between;gap:16px;align-items:baseline}.status-line strong{font-family:var(--mono);text-transform:uppercase;font-size:12px}.status-line span{color:var(--accent-2)}.status-line span.error,#status-text.error{color:var(--warn)}.progress{width:100%;height:12px;overflow:hidden;background:#17151414}#progress-bar{width:0;height:100%;background:linear-gradient(90deg,#7a1f3d,#2c5f4f)}.hint{margin:0;color:#6d665c;font-size:13px}.raw-output{margin:0;background:#141312;color:#8ff4d0;padding:12px;font-size:11px;max-height:260px;overflow:auto}.shifts{display:grid;grid-template-columns:repeat(3,minmax(320px,1fr));gap:16px}.shift-card{overflow:hidden}.shift-head{padding:9px 12px;display:flex;justify-content:space-between;align-items:center;background:var(--ink);color:#fff;font-family:var(--mono);text-transform:uppercase;font-size:12px}.shift-head input{width:46px;text-align:center;background:transparent;color:#fff;border:1px solid rgba(255,255,255,.3)}.meta-grid{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line)}.meta-cell{background:#fff;padding:7px 8px}.meta-cell label,.metrics-grid label{display:block;margin-bottom:4px;color:#7a7266;font-size:10px;text-transform:uppercase;letter-spacing:.05em}input,textarea{width:100%;border:none;border-bottom:1px solid var(--line);background:transparent;padding:4px 0;color:var(--ink);font:inherit}input:focus,textarea:focus{outline:2px solid rgba(122,31,61,.22);outline-offset:1px}.rows-table,.ref-table{width:100%;border-collapse:collapse}.rows-table th,.ref-table th{padding:6px 5px;border:1px solid var(--line);background:#f2eee6;font-family:var(--mono);text-transform:uppercase;font-size:10px}.rows-table td,.ref-table td{border:1px solid var(--line);padding:0}.rows-table input,.ref-table input{text-align:center;padding:5px 4px;border-bottom:none;font-family:var(--mono);font-size:12px}.row-number{width:34px;text-align:center;color:#8b8477;font-family:var(--mono);font-size:11px}.row-comment textarea{min-height:34px;resize:vertical;padding:5px;border-bottom:none;font-size:11px}.diff-neg input{color:var(--warn);font-weight:700}.diff-ok input{color:var(--accent-2);font-weight:700}.ref-block{padding:10px}.ref-title{margin-bottom:8px;color:#7a7266;font-size:10px;text-transform:uppercase;font-family:var(--mono)}.metrics-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);margin-top:12px}.metrics-grid>div{background:#faf8f2;padding:7px}.metrics-grid input{text-align:center;border-bottom:none;font-family:var(--mono)}@media (max-width: 1200px){.shifts{grid-template-columns:1fr}}@media (max-width: 920px){.hero,.upload-grid{grid-template-columns:1fr}}
