:root{font-family:system-ui,-apple-system,"Segoe UI","Noto Sans JP",sans-serif;color:#1b313b;background:#f3f5f7;font-size:14px}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer;border:1px solid #d1dce2;background:#fff;border-radius:7px;padding:9px 14px;color:#234450}button:hover{background:#edf4f6}button:disabled{opacity:.45;cursor:wait}.primary{background:#14675d;color:#fff;border-color:#14675d}.primary:hover{background:#10584f}aside{position:fixed;width:225px;inset:0 auto 0 0;background:#122e39;color:#d7e5e8;padding:30px 17px;display:flex;flex-direction:column}.brand{font-size:29px;font-weight:800;letter-spacing:3px}.brand span{display:block;font-size:10px;letter-spacing:4px;margin-top:3px;color:#89bab6}.workspace{font-size:12px;margin:24px 0 14px}.workspace small{background:#2c574e;padding:3px 6px;border-radius:4px;margin-left:8px}nav{display:grid;gap:3px}nav button{border:0;background:transparent;color:#c0d0d5;text-align:left;padding:11px}nav button span{display:inline-block;width:28px;font-size:18px}nav button.active,nav button:hover{background:#284852;color:#fff}.identity{margin-top:auto;display:grid;gap:7px;padding-top:20px;font-size:12px}.identity span{color:#9cb4bc}.identity button{background:transparent;color:#adc4ca;border-color:#41616c}main{margin-left:225px;padding:30px 36px;max-width:1800px}header{display:flex;align-items:center;justify-content:space-between;margin-bottom:23px}.eyebrow{font-size:10px;letter-spacing:2px;color:#6e858e}h1{font-size:27px;margin:8px 0}h2{font-size:16px;margin:0 0 18px}h3{font-size:14px;margin-top:24px}.test-label{border:1px solid #c2d7d2;border-radius:30px;padding:7px 14px;color:#31685f;font-size:12px}.banner{border-left:3px solid #8baea7;background:#e9f1ee;padding:12px 16px;font-size:12px;color:#4c695f}.toolbar{display:flex;align-items:center;gap:14px;margin:20px 0}.toolbar input{width:360px}.toolbar span{margin-left:auto;color:#80929a;font-size:12px}input,select,textarea{border:1px solid #c9d5dc;border-radius:6px;background:#fff;padding:10px;min-width:0;width:100%;color:#233f4b}input:focus,select:focus{outline:2px solid #69a89d;outline-offset:1px}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:22px}.metric{background:#fff;padding:22px;border:1px solid #e0e7eb;border-radius:10px}.metric>span{font-size:12px;color:#67808b}.metric strong{display:block;font-size:35px;margin-top:12px;font-weight:600}.metric small{font-size:12px;margin-left:10px;color:#8a9ba3}.card{background:#fff;border:1px solid #e0e7eb;border-radius:10px;padding:22px;margin:18px 0}.grid-two{display:grid;grid-template-columns:1fr 1fr;gap:20px}.grid-two .card{margin-top:0}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;text-align:left;font-size:12px}th{background:#f4f7f8;font-weight:500;color:#627c86;white-space:nowrap;padding:12px}td{border-bottom:1px solid #edf0f2;padding:13px 12px;max-width:360px;overflow-wrap:anywhere}td button{font-size:11px;padding:6px 8px;margin:2px;white-space:nowrap}tr:hover td{background:#fafcfb}.badge{display:inline-block;background:#eaf1ef;color:#3c7066;padding:4px 9px;border-radius:20px;font-size:11px;white-space:nowrap}.empty{text-align:center;padding:35px;color:#7c9099}.muted,footer{color:#728690;font-size:12px;line-height:1.8}footer{margin-top:26px}.quick{display:flex;gap:10px;flex-wrap:wrap}article{border-bottom:1px solid #e6ecee;padding:10px 0}article small{color:#7d949d}dialog{border:0;border-radius:14px;box-shadow:0 24px 90px #0e2c4050;width:min(1000px,95vw);max-height:90vh;padding:26px;color:#23414c}dialog::backdrop{background:#102e3f70}.modal-head{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:15px}.modal-head h2{margin:0}.modal-head button{border:0;font-size:22px}.fields{display:grid;grid-template-columns:1fr 1fr;gap:17px}label{display:grid;gap:6px;margin:10px 0;font-size:12px;color:#526c76}.actions{display:flex;gap:10px;margin:20px 0 5px;flex-wrap:wrap}.form-error{color:#b33d32;white-space:pre-wrap}.lot-row,.order-row{display:grid;grid-template-columns:2fr 1fr 1fr auto;gap:12px;align-items:center;padding:10px 0;border-bottom:1px solid #e6ecef}.order-row{grid-template-columns:3fr 1fr 1fr auto}.read p{margin:5px 0}.read small{display:block;color:#7c919a;font-size:11px;margin-bottom:6px}.check{display:flex;align-items:center;gap:9px}.check input{width:auto}.phase-track{display:flex;gap:4px;flex-wrap:wrap;margin:15px 0 25px}.phase-track span{background:#edf1f4;color:#8b9ca5;padding:8px;font-size:11px;border-radius:4px}.phase-track .reached{background:#d5e9e2;color:#26664f}.auth{max-width:460px;margin:6vh auto;background:white;padding:35px;border:1px solid #d8e4e8;border-radius:12px}.auth .brand{color:#163d47}.auth h1{font-size:22px}.auth p{font-size:12px;color:#69838d}.auth [data-action="close"]{display:none}.auth .actions button{width:100%}#toast{position:fixed;right:25px;bottom:25px;max-width:600px;padding:16px 24px;background:#163f43;color:#fff;border-radius:8px;box-shadow:0 4px 20px #0002;opacity:0;pointer-events:none;z-index:10000}#toast.show{opacity:1}textarea{height:100px}fieldset{border:1px solid #dbe5e9;border-radius:7px}.loading{padding:40px}@media(max-width:900px){aside{width:180px}main{margin-left:180px;padding:20px}.metrics{grid-template-columns:1fr 1fr}.grid-two{grid-template-columns:1fr}}@media print{body:has(dialog[open]) #app,body:has(dialog[open]) #toast,.no-print{display:none!important}dialog[open]{position:static;max-height:none;width:100%;box-shadow:none;margin:0;padding:0}dialog::backdrop{background:#fff}table{font-size:11px}button{display:none}}

.status-planned{background:#e9f1ff!important;color:#194e91!important;border-color:#91b5e3!important}.status-active{background:#fff1db!important;color:#875100!important;border-color:#e3b76b!important}.status-done{background:#e1f3e7!important;color:#246440!important;border-color:#87be9b!important}.status-alert{background:#ffebea!important;color:#a42f2f!important;border-color:#de9a95!important}.calendar-legend{display:flex;gap:8px;flex-wrap:wrap}.month-calendar{table-layout:fixed;min-width:950px;background:white}.month-calendar th{text-align:center}.month-calendar td{vertical-align:top;height:125px;padding:7px;border:1px solid #dce4e8;width:14.285%}.month-calendar td.calendar-empty{background:#edf1f4}.month-calendar .calendar-today{outline:2px solid #367b72;outline-offset:-2px}.calendar-day{font-weight:600;margin:3px 0 8px}.calendar-event{display:block;width:100%;text-align:left;white-space:normal;font-size:11px;line-height:1.5;padding:6px;margin:5px 0;border-left-width:4px;overflow-wrap:anywhere}.calendar-event b,.calendar-event span,.calendar-event small{display:block}.calendar-event:focus{outline:2px solid #1b4958}.calendar-event:hover{filter:brightness(.97)}

.shipment-timeline{table-layout:fixed;min-width:1100px}.shipment-timeline thead th{text-align:center;padding:7px 0;font-size:10px}.shipment-timeline th:first-child{width:220px;text-align:left}.shipment-timeline tbody th{background:#f7f9fa;padding:9px}.shipment-timeline tbody th small{display:block;font-size:10px;white-space:normal}.shipment-timeline td.ship-range{padding:0;height:36px;border-top:8px solid white;border-bottom:8px solid white;overflow:hidden}.ship-range button,.ship-range>span{display:block;width:100%;background:transparent;color:inherit;border:0;border-radius:0;padding:8px 3px;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:10px;text-align:left}.ship-range button:focus{outline:2px solid #183c58;outline-offset:-2px}.ship-blank{background:#f2f4f6!important}.ship-phase-0{background:#dceafa!important;color:#1c4d80!important}.ship-phase-1{background:#bdd9f7!important;color:#163f6d!important}.ship-phase-2{background:#ded0f4!important;color:#563180!important}.ship-phase-3{background:#c4e8ec!important;color:#205c66!important}.ship-phase-4{background:#ffe1a7!important;color:#71470c!important}.ship-phase-5{background:#ffbb99!important;color:#7c3416!important}.ship-phase-6{background:#cfe6a4!important;color:#3c5618!important}.ship-phase-7{background:#9ed8b7!important;color:#1c5635!important}.ship-legend{display:flex;gap:4px;flex-wrap:wrap;margin-bottom:15px}.ship-legend span{padding:5px 8px;font-size:11px;border-radius:3px}

@media print{dialog:has(.print-sheet) .modal-head,dialog .print-sheet~*{display:none!important}dialog .print-sheet .table-wrap{overflow:visible}dialog .print-sheet th,dialog .print-sheet td{white-space:normal;overflow-wrap:anywhere}dialog .print-sheet table{min-width:0;width:100%}}

aside{overflow-y:auto}aside nav{flex-shrink:0}

/* Authenticator enrollment QR: integer modules with four-module quiet zone. */
.mfa180-qr{display:block;max-width:100%;height:auto;margin:16px auto;background:#fff;border:1px solid #dbe4ec;border-radius:4px}.auth #mfa180Manual{margin:14px 0}.auth #mfa180Manual summary{cursor:pointer}.auth #mfa180Manual input{font-family:monospace;letter-spacing:.06em}
