:root{--green:#2373b8;--mint:#e9f1f5;--ink:#30343a;--muted:#7d8790;--line:#e2e7ec;--paper:#f2f2f2;--amber:#dd590e}*{box-sizing:border-box}body{margin:0;color:var(--ink);background:var(--paper);font:14px 'Noto Sans JP',sans-serif}button,input,select,textarea{font:inherit}button,a,select{cursor:pointer}button{}button:hover{}a{color:inherit;text-decoration:none}#sidebar{width:242px;background:#fff;position:fixed;inset:0 auto 0 0;padding:30px 20px;border-right:1px solid var(--line);z-index:20}.brand{display:flex;align-items:center;gap:11px;font-size:11px;font-weight:700;letter-spacing:1px}.brand small{display:block;font-size:10px;letter-spacing:.6px;color:var(--muted);font-weight:400;margin-top:6px}.brandmark{background:var(--green);border-radius:12px;color:#fff;font-size:27px;letter-spacing:-5px;padding:0 11px 6px 6px;line-height:40px}.brandmark span{color:#bcdcf6}.nav-label{font-size:10px;letter-spacing:2px;color:#9aa59e;margin:52px 14px 16px}nav button{width:100%;display:flex;align-items:center;text-align:left;gap:13px;background:none;border:0;color:#77817b;padding:14px 16px;border-radius:9px;margin:5px 0;font-weight:500}nav button.active{background:var(--mint);color:var(--green)}nav button i{font-size:19px;font-style:normal;width:22px}nav button .count{margin-left:auto;font-size:10px;border-radius:5px;padding:1px 6px;background:#d6e7fa}.side-bottom{position:absolute;bottom:28px;font-size:10px;color:#79887e;line-height:2}.side-bottom small{display:block;font-size:10px;padding-left:12px}.online{display:inline-block;width:6px;height:6px;border-radius:50%;background:#68a37a;margin-right:6px}.shell{margin-left:242px}header{height:78px;background:#fff;border-bottom:1px solid var(--line);padding:0 36px;display:flex;align-items:center;justify-content:space-between;gap:12px}.crumb{font-size:11px;color:var(--muted)}.crumb span{margin:0 16px;color:#bac2bd}.crumb b{font-weight:500;color:var(--ink)}.header-right{display:flex;gap:17px;align-items:center}.trial{border:1px solid #e7d8af;background:#fffaf0;color:#947133;padding:4px 9px;border-radius:5px;font-size:10px}.header-right select{border:0;background:#fff;font-size:11px;color:#53697f;max-width:180px}.avatar{width:31px;height:31px;background:#e7edf4;color:var(--green);border-radius:50%;display:grid;place-items:center;font-size:11px}.demo-note{padding:9px 36px;font-size:10px;color:#7e8b81;background:#edf2f7;border-bottom:1px solid var(--line)}main{padding:34px 36px;max-width:1650px;min-height:calc(100vh - 182px)}.eyebrow{font-size:10px;letter-spacing:2px;color:#8d9c91;margin:0 0 7px}.page-heading{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:26px}.page-heading h1{font-size:27px;font-weight:600;letter-spacing:1px;margin:0 0 8px}.page-heading p{font-size:11px;color:var(--muted);margin:0}.primary,.secondary,.danger{border:0;border-radius:7px;padding:11px 17px;font-size:12px;font-weight:500;white-space:nowrap}.primary{background:var(--green);color:#fff;box-shadow:0 3px 5px #195f7a0b}.secondary{background:#fff;border:1px solid #dce4dd;color:#4c6680}.danger{background:#fff2ef;color:#a34734}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:26px}.metric{background:#fff;border:1px solid var(--line);padding:21px 22px;border-radius:11px;position:relative}.metric label{font-size:11px;color:#738176}.metric strong{display:block;font-size:32px;font-weight:500;margin-top:11px;font-family:Arial,sans-serif;letter-spacing:1px}.metric strong small{font-size:11px;margin-left:6px;color:#8a958c;font-family:inherit}.metric p{font-size:10px;color:#98a399;margin:9px 0 0}.metric .metric-icon{position:absolute;right:20px;top:20px;background:#edf3f9;border-radius:7px;padding:5px 9px;font-size:15px;color:#6e91b0}.metric.attention{border-top:3px solid #d8ae66}.metric.attention strong{color:#b08134}.panel{background:#fff;border:1px solid var(--line);border-radius:11px;overflow:hidden;margin-bottom:22px}.panel-head{padding:22px 23px;display:flex;align-items:center;justify-content:space-between;gap:12px}.panel-head h2{font-size:14px;font-weight:600;margin:0}.panel-head p{font-size:10px;color:var(--muted);margin:6px 0 0}.panel-head .date{font-size:11px;color:#6e8073}.tools{display:flex;justify-content:space-between;gap:15px;padding:0 23px 20px;align-items:center}.tabs{display:flex;gap:6px;flex-wrap:wrap}.tab{border:0;background:transparent;color:#879188;padding:8px 12px;border-radius:6px;font-size:11px}.tab.active{background:#e7f0fb;color:var(--green);font-weight:600}.search{background:#fafbfd;border:1px solid var(--line);padding:9px 12px;border-radius:6px;font-size:11px;width:230px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;white-space:nowrap;text-align:left}th{background:#f7f9fc;color:#8c978e;font-size:10px;font-weight:500;padding:13px 22px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}td{padding:20px 22px;border-bottom:1px solid #edf0f4;font-size:12px}tbody tr:last-child td{border-bottom:0}tbody tr:hover{background:#fbfcfe}.job-id{font-size:10px;color:#a1aaa2;display:block;margin-top:6px}.route{display:flex;gap:8px;align-items:center;font-size:12px}.route span{color:#b7c1b9}.route-sub{font-size:10px;color:#95a096;display:block;margin-top:5px}.badge{display:inline-flex;gap:5px;align-items:center;border-radius:5px;padding:5px 8px;background:#f0f2ef;color:#7c897f;font-size:10px;font-weight:500}.badge:before{content:'';width:4px;height:4px;background:currentColor;border-radius:50%}.badge.quote{background:#fff5df;color:#ae8131}.badge.ready{background:#eaf0fc;color:#5d7dad}.badge.assigned{background:#eaf3eb;color:#66836a}.badge.done{background:#e2f1e8;color:#34825c}.badge.invoice{background:#f0eafa;color:#8a6aaa}.row-button{background:white;border:1px solid #e4e9e2;border-radius:6px;padding:7px 12px;font-size:10px;color:#6e8071}.driver-name{display:flex;gap:8px;align-items:center}.driver-dot{border-radius:50%;background:#edf2eb;padding:6px;font-size:10px;color:#719577}.bottom-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:22px}.activity{padding:0 23px 18px}.activity-item{display:flex;align-items:flex-start;gap:12px;padding:13px 0;border-top:1px solid #f0f2ed}.activity-item .dot{background:#eff5ed;color:#79a57a;border-radius:50%;width:28px;height:28px;display:grid;place-items:center;font-size:11px;flex-shrink:0}.activity-item p{margin:0;font-size:11px;line-height:1.8}.activity-item small{display:block;font-size:10px;color:#9aa69c}.empty{text-align:center;padding:45px;color:#8b998f;line-height:2}.empty strong{display:block;color:#5c7162}.job-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:17px}.job-card{background:#fff;padding:22px;border:1px solid var(--line);border-radius:11px}.job-card h3{font-size:16px;line-height:1.8;margin:16px 0 9px}.job-card p{font-size:12px;color:#7e8c80;line-height:1.9}.job-card .primary,.job-card .secondary{width:100%;margin-top:12px}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:18px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:17px}.field{display:flex;flex-direction:column;gap:7px;font-size:11px;color:#758278}.field input,.field select,.field textarea{width:100%;border:1px solid #dce4db;border-radius:6px;background:#fff;padding:11px;color:#304459;min-width:0}.field textarea{min-height:90px;resize:vertical}.field.wide{grid-column:1/-1}.required{color:#be8151;font-size:9px}.form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:24px}.content-pad{padding:23px}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;padding:20px 0;border-bottom:1px solid var(--line)}.detail-grid dt{font-size:10px;color:#89978c;margin-bottom:7px}.detail-grid dd{margin:0;line-height:1.8;font-size:13px}.section-title{font-size:12px;color:var(--green);border-left:3px solid #8bb0d6;padding-left:9px;margin-top:25px}.action-box{background:#f3f6fb;padding:18px;border-radius:8px;margin-top:18px}.action-box h3{font-size:13px;margin:0 0 15px}.action-row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.action-row input,.action-row select{padding:10px;border:1px solid #dbe3d8;border-radius:6px;max-width:100%;min-width:0}.muted{font-size:11px;color:#8a968b;line-height:1.9}.money{font-family:Arial,sans-serif;font-size:18px;font-weight:600}.warning{background:#fff7e7;border:1px solid #efe0bd;padding:12px;border-radius:6px;color:#96733e;font-size:11px;line-height:1.8}.success{color:#438567}.signature-wrap{background:#fff;border:1px dashed #a6bcd0;border-radius:8px;overflow:hidden}canvas{display:block;width:100%;height:190px;touch-action:none;background:#fff}dialog{width:min(760px,calc(100vw - 30px));border:0;border-radius:14px;padding:0;color:var(--ink);box-shadow:0 20px 100px #142c3140}dialog::backdrop{background:#182a4266;backdrop-filter:blur(3px)}.dialog-head{display:flex;justify-content:space-between;align-items:center;padding:23px;border-bottom:1px solid var(--line)}.dialog-head h2{font-size:17px;margin:0}.close{border:0;background:#f2f5ef;border-radius:50%;width:30px;height:30px;font-size:18px;color:#869585}.dialog-body{padding:0 24px 25px;max-height:75vh;overflow:auto}.timeline{display:grid;grid-template-columns:150px repeat(12,minmax(60px,1fr));min-width:930px}.timeline>div{min-height:65px;border-right:1px solid #edf1e9;border-bottom:1px solid #edf1e9;padding:15px 8px;font-size:11px}.timeline .hour{min-height:40px;text-align:center;color:#98a195;background:#fafbf8;font-size:10px}.timeline .name{display:flex;align-items:center;padding-left:20px;font-weight:500;gap:7px}.timeline .block{margin:8px 3px;padding:7px 9px;border-radius:5px;background:#e9f1e3;color:#627e55;border-left:3px solid #99b686;min-height:0;font-size:10px;cursor:pointer}.timeline .block b{display:block;font-size:10px;margin-bottom:4px}.attendance-actions{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:22px 0}.attendance-actions button{padding:20px 10px;border-radius:9px;border:1px solid #dce5d7;background:white;color:var(--green);font-size:13px}.attendance-actions button:first-child{background:var(--green);color:#fff}footer{display:flex;justify-content:space-between;align-items:center;padding:10px 36px 25px;font-size:9px;color:#9ea89d}.text-button{border:0;background:none;color:#8c9a8b;font-size:10px;padding:4px}.menu{display:none}#toast{position:fixed;bottom:26px;left:calc(50% + 100px);transform:translateX(-50%);background:var(--green);padding:13px 22px;color:#fff;border-radius:9px;font-size:12px;box-shadow:0 6px 25px #18395930;opacity:0;pointer-events:none;transition:.2s;z-index:100;max-width:90vw}#toast.show{opacity:1}#toast.error{background:#9a513c}.receipt{padding:35px;background:#fff}.receipt h1{font-size:25px;border-bottom:2px solid #195f7a;padding-bottom:20px}.receipt img{max-width:300px;border:1px solid #ddd}.receipt table{margin-top:25px}.mobile-only{display:none}@media(min-width:1500px){td{padding-top:24px;padding-bottom:24px}}@media(max-width:1150px){#sidebar{width:205px;padding:30px 14px}.shell{margin-left:205px}header,main{padding-left:24px;padding-right:24px}.metrics{gap:10px}.metric{padding:17px}.job-cards{grid-template-columns:1fr 1fr}.crumb{display:none}.bottom-grid{grid-template-columns:1fr}}@media(max-width:760px){#sidebar{transform:translateX(-100%);width:230px;transition:.2s;box-shadow:10px 0 60px #18322322}#sidebar.open{transform:translateX(0)}.shell{margin-left:0}header{height:64px;padding:0 16px}.menu{display:inline-block;border:0;background:none;font-size:21px;color:var(--green)}.header-right{gap:10px}.header-right select{max-width:150px}.avatar{display:none}.demo-note{padding:9px 16px;line-height:1.8;font-size:9px}main{padding:24px 16px}.page-heading{align-items:flex-start}.page-heading h1{font-size:23px}.page-heading p{line-height:1.8;max-width:230px}.page-heading>.primary{font-size:11px;padding:10px}.metrics{grid-template-columns:1fr 1fr;gap:10px}.metric{padding:16px}.metric strong{font-size:28px}.metric .metric-icon{right:12px;top:12px;font-size:12px}.metric p{font-size:9px}.panel-head{padding:19px 17px}.tools{padding:0 16px 16px;display:block}.tools .search{margin-top:12px;width:100%}.tabs{gap:2px}.tab{padding:7px 9px;font-size:10px}th,td{padding:16px;font-size:11px}.bottom-grid,.two-col,.job-cards{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}.field.wide{grid-column:auto}.content-pad{padding:18px}.attendance-actions{grid-template-columns:1fr 1fr}.dialog-body{padding:0 18px 20px}.detail-grid{gap:12px}.trial{font-size:9px}footer{padding:10px 16px 25px;gap:10px}#toast{left:50%}.mobile-only{display:block}}



/* ユーザー添付の現行管理画面を配色の基準とする。色以外は変更しない。 */
#sidebar{background:#2b2e34;border-right-color:#2b2e34}.brand{color:#f1f2f4}.brand small{color:#a9adb2}.brandmark{background:#3b4248}.brandmark span{color:#c6d5e2}.nav-label{color:#93999e}nav button{color:#e2e4e7}nav button.active{background:#3c4249;color:#fff}nav button .count{background:#4d5864;color:#e4edf5}.side-bottom{color:#a7adb4}.online{background:#3288c8}header{background:#3c4349;border-bottom-color:#3c4349}.crumb,.crumb b{color:#f1f3f5}.crumb span{color:#9aa1a9}.header-right select{background:#3c4349;color:#fff}.avatar{background:#2b2e34;color:#fff}.menu{color:#fff}.trial{background:#4c535b;border-color:#707982;color:#f1f3f5}.demo-note{background:#e9ecef;color:#777f86}.primary,.page-heading>.primary,.attendance-actions button:first-child{background:#287bc1;color:#fff}.metric.attention{border-top-color:#287bc1}.metric.attention strong{color:#287bc1}.metric .metric-icon{background:#edf1f5;color:#6f8fa8}.section-title{border-left-color:#287bc1}.tabs .tab.active{background:#e7eff8;color:#287bc1}th{background:#43474c;color:#f3f3f3;border-color:#666a70}.timeline .block{background:#e5eff9;border-left-color:#80acd4;color:#3c6e98}.timeline .hour{background:#eef0f2;color:#707880}.driver-dot{background:#edf1f5;color:#6688a7}
.login-shell{min-height:100vh;display:grid;place-items:center;padding:24px;background:#f2f2f2}.login-card{background:#fff;border:1px solid #dfe3e7;border-radius:12px;padding:38px;max-width:430px;width:100%;box-shadow:0 12px 40px #2028300c}.login-card h1{font-size:23px;margin:26px 0 10px}.login-card .field{margin:20px 0}.login-card .primary{width:100%;margin-top:8px}.login-card .brand{color:#3b4248}.login-error{color:#a23b31;font-size:12px;line-height:1.8}.login-note{font-size:11px;color:#879098;line-height:1.9;margin-top:22px}.user-label{font-size:11px;color:#fff}.disabled-nav{opacity:.5;cursor:not-allowed}.company-select{width:100%}.notice{padding:14px 18px;border:1px solid #dce4ed;border-radius:7px;background:#eef3f9;font-size:11px;color:#697e90;line-height:1.9;margin-bottom:22px}@media(max-width:760px){.login-card{padding:28px}.user-label{max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.header-right{gap:9px}.header-right .secondary{padding:8px;font-size:10px}}

.inline-form{display:grid;gap:12px;margin:12px 0 18px;padding:14px;border:1px solid #e2e7ec;border-radius:8px;background:#fafbfc}.inline-form .primary,.inline-form .secondary{justify-self:start}
.sign-pad{width:100%;max-width:640px;aspect-ratio:8/3;border:1px solid #c9d0d6;border-radius:8px;background:#fff;touch-action:none;cursor:crosshair}

.sec-bad td{background:#fdeaea}.sec-warn td{background:#fff5df}.table-wrap td.muted{max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

.print-only{display:none}


.clock-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:18px 0}.clock-btn{display:grid;gap:4px;place-items:center;padding:18px 8px;border:1px solid #c9d0d6;border-radius:10px;background:#fff;font:inherit;font-size:15px;font-weight:700;color:#30343a;cursor:pointer}.clock-btn b{font-size:22px;font-weight:400}.clock-btn:not(:disabled):hover{background:#e9f1f5;border-color:#287bc1}
tr.voided td{color:#99a0a7;text-decoration:line-through}tr.voided td:nth-child(5){text-decoration:none}
@media(max-width:640px){.clock-grid{grid-template-columns:1fr 1fr}.clock-btn{padding:26px 8px;font-size:17px}}

.pw-row{display:flex;gap:8px}.pw-row input{flex:1;font-family:ui-monospace,Menlo,monospace}.secret{padding:14px;border:1px dashed #287bc1;border-radius:8px;background:#f4f9fd;font:600 18px ui-monospace,Menlo,monospace;word-break:break-all;user-select:all}
.head-actions{display:flex;gap:10px;flex-wrap:wrap}.row-actions{white-space:nowrap}.row-actions .row-button{margin-right:6px}

.notice-card{margin:10px 0;padding:14px 16px;border:1px solid #e2e7ec;border-radius:10px;background:#fff}.notice-card p{margin:8px 0 0;line-height:1.8}.notice-meta{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.notice-meta span:not(.badge){color:#7d8790;font-size:12px}.notice-actions{margin-top:10px;display:flex;gap:8px}
.zip-row{display:flex;gap:8px;margin-top:8px;flex-wrap:wrap}.zip-row input{flex:1;min-width:150px}.zip-row select{width:100%}

.check{display:flex;gap:10px;align-items:center;font-size:14px}

/* logo: a fixed-size square image, identical on every device (no font dependency) */
.brand-logo{flex:none;display:block;width:44px;height:44px;border-radius:12px}
/* passkey: lighter blue than the main actions, plus a fingerprint mark, so it is recognisable at a glance */
:root{--pk:#2f8ee5;--pk-line:#5aa9ee;--pk-soft:#e8f3fd;--pk-ink:#0f4c81}
.passkey-btn{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;padding:12px 16px;border:2px solid var(--pk-line);border-radius:8px;background:var(--pk-soft);color:var(--pk-ink);font:inherit;font-weight:700;cursor:pointer}.passkey-btn .pk-icon{color:var(--pk);width:24px;height:24px}.passkey-btn:hover{background:#d6eafc;border-color:var(--pk)}.passkey-btn:focus-visible{outline:3px solid #a9d3f7;outline-offset:2px}.passkey-btn.small{width:auto;padding:8px 14px;white-space:nowrap}.passkey-btn.small .pk-icon{width:18px;height:18px}
.pk-icon{flex:none}.or{display:flex;align-items:center;gap:12px;margin:16px 0 12px;color:#7d8790;font-size:12px}.or:before,.or:after{content:'';flex:1;height:1px;background:#e2e7ec}.pk-hint{margin:10px 0 0;text-align:center;font-size:12px}
.pk-banner{position:fixed;right:18px;bottom:18px;z-index:50;display:flex;align-items:center;gap:14px;max-width:min(560px,calc(100vw - 36px));padding:14px 16px;border:1px solid #cfe5fa;border-left:5px solid var(--pk);border-radius:10px;background:#fff;box-shadow:0 8px 28px rgba(0,0,0,.18);color:var(--pk)}.pk-banner>div{flex:1;display:grid;gap:3px;color:#30343a}.pk-banner span{font-size:12px;color:#5b646c}
.pk-item{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid #e2e7ec;color:var(--pk)}.pk-item>div{flex:1;display:grid;gap:2px;color:#30343a}
.badge .pk-icon{vertical-align:-3px;color:var(--pk)}
@media(max-width:640px){.pk-banner{flex-wrap:wrap}.pk-banner .passkey-btn.small{flex:1}}

/* ---- phone layout (<=760px): one column, big tap targets, tables become cards, dialogs become bottom sheets ---- */
@media(max-width:760px){
 header{padding:0 12px;gap:8px}.header-right{gap:8px}.user-label{display:none}.header-right .secondary{padding:10px 12px;font-size:12px;min-height:40px}
 main{padding:20px 14px 40px}
 .page-heading{flex-direction:column;align-items:stretch;gap:12px;margin-bottom:18px}.page-heading p{max-width:none}.page-heading>.primary,.page-heading>.head-actions,.page-heading .head-actions .primary,.page-heading .head-actions .secondary{width:100%}.head-actions{display:flex;flex-direction:column;gap:8px}
 .primary,.secondary,.row-button,.clock-btn,.passkey-btn{min-height:44px}.row-button{padding:10px 14px}
 input,select,textarea{font-size:16px!important}
 .form-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.form-actions>button:only-child{grid-column:1/-1}
 .table-wrap{overflow:visible;border:0;background:none}.table-wrap table,.table-wrap tbody,.table-wrap tr,.table-wrap td{display:block;width:100%;box-sizing:border-box}.table-wrap table{min-width:0!important}.table-wrap thead{position:absolute;left:-9999px;top:0}
 .table-wrap tr{margin:0 0 12px;padding:6px 14px;border:1px solid var(--line);border-radius:12px;background:#fff}.table-wrap td{padding:9px 0;border:0;border-bottom:1px dashed #edf0f3;text-align:left;word-break:break-word}.table-wrap td:last-child{border-bottom:0}
 .table-wrap td{display:grid;grid-template-columns:92px 1fr;gap:2px 10px;align-items:start}.table-wrap td>*{grid-column:2}.table-wrap td[data-label]:not([data-label=""])::before{content:attr(data-label);grid-column:1;grid-row:1;color:var(--muted);font-size:11px;font-weight:600;padding-top:2px}.table-wrap td[data-label=""]{display:block}.table-wrap td:empty{display:none}
 .table-wrap td .row-button{width:100%}.row-actions{white-space:normal}.row-actions .row-button{margin:0 6px 6px 0;width:auto}
 dialog{width:100vw;max-width:100vw;max-height:92vh;margin:auto 0 0;border-radius:18px 18px 0 0;overflow:auto}dialog::backdrop{background:rgba(20,30,35,.5)}.dialog-body{padding-bottom:calc(20px + env(safe-area-inset-bottom))}
 .pk-banner{left:10px;right:10px;bottom:calc(10px + env(safe-area-inset-bottom));max-width:none;display:grid;grid-template-columns:auto 1fr;gap:10px 12px;align-items:start}.pk-banner>div{grid-column:2}.pk-banner .pk-icon{grid-row:1;width:28px;height:28px}.pk-banner .passkey-btn.small{grid-column:1/-1;width:100%;justify-content:center}.pk-banner .text-button{grid-column:1/-1;justify-self:center;min-height:40px}
 .login-shell{padding:16px;align-items:start;padding-top:8vh}.login-card{width:100%}
 .notice-actions{flex-wrap:wrap}.zip-row input{min-width:0}.clock-grid{grid-template-columns:1fr 1fr}
 .detail-grid{grid-template-columns:1fr}.inline-form{padding:12px}
}

@media(max-width:760px){.table-wrap td>.badge{justify-self:start}}

/* ---- printable documents (A4) ---- */
details.more{margin:14px 0;border:1px solid var(--line);border-radius:10px;padding:10px 14px;background:#fafbfc}details.more summary{cursor:pointer;font-weight:600;color:#30343a}details.more[open] summary{margin-bottom:12px}.doc-buttons{display:flex;gap:8px;flex-wrap:wrap}
#doc-view{position:fixed;inset:0;z-index:100;display:flex;flex-direction:column;background:#e6e9ec}.doc-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;background:#2b2e34;color:#fff;font-size:13px}.doc-bar span{flex:1;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.doc-stage{flex:1;overflow:auto;padding:14px 8px 40px;display:flex;justify-content:center;align-items:flex-start}
.doc-sheet{width:210mm;min-height:297mm;box-sizing:border-box;padding:15mm 16mm;background:#fff;color:#1d2024;font-size:10pt;line-height:1.6;box-shadow:0 6px 30px rgba(0,0,0,.18);font-family:"Noto Sans JP","Hiragino Sans","Yu Gothic",sans-serif;display:flex;flex-direction:column;gap:5mm}
.doc-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10mm;border-bottom:2px solid #2b2e34;padding-bottom:4mm}.doc-head h1{margin:0;font-size:22pt;letter-spacing:.35em;font-weight:700}.doc-no{margin:2mm 0 0;color:#555;font-size:9.5pt}.doc-issuer{text-align:right;font-size:9pt;line-height:1.5;color:#333}.doc-issuer b{display:block;font-size:11pt;color:#111}
.doc-meta{display:grid;grid-template-columns:1fr 1fr;gap:2mm 6mm}.doc-meta>div{display:flex;align-items:baseline;gap:4mm;border-bottom:1px solid #cfd5da;padding:1.2mm 0}.doc-meta .wide{grid-column:1/-1}.doc-meta span{min-width:20mm;color:#5b646c;font-size:9pt}.doc-check{margin-right:5mm}.doc-check.on{font-weight:700}
.doc-parties{display:grid;grid-template-columns:1fr 1fr;gap:5mm}.doc-party{border:1px solid #b9c0c6;border-radius:2mm;overflow:hidden}.doc-party h4{margin:0;padding:1.6mm 3mm;background:#eef1f4;font-size:9.5pt;letter-spacing:.3em}.doc-party dl{display:grid;grid-template-columns:20mm 1fr;margin:0}.doc-party dt,.doc-party dd{margin:0;padding:1.8mm 3mm;border-top:1px solid #dfe3e7}.doc-party dt{color:#5b646c;font-size:9pt}.doc-party dd{word-break:break-all}
.doc-table{width:100%;border-collapse:collapse}.doc-table th{background:#eef1f4;font-size:9pt;font-weight:600;text-align:left;padding:1.8mm 3mm;border:1px solid #b9c0c6}.doc-table td{padding:2.2mm 3mm;border:1px solid #b9c0c6;vertical-align:top}.doc-table .r{text-align:right;white-space:nowrap}.doc-table tfoot td{background:#f7f9fa;font-weight:600}.doc-table tfoot .sub td{font-weight:400;color:#444}
.doc-kv{display:grid;grid-template-columns:24mm 1fr;margin:0;border:1px solid #b9c0c6;border-radius:2mm;overflow:hidden}.doc-kv dt,.doc-kv dd{margin:0;padding:2mm 3mm;border-top:1px solid #dfe3e7}.doc-kv dt:first-of-type,.doc-kv dd:nth-of-type(1){border-top:0}.doc-kv dt{background:#f3f5f7;color:#5b646c;font-size:9pt}.doc-kv dd{word-break:break-all}
.doc-sign{display:grid;grid-template-columns:1.25fr 1fr;gap:5mm;margin-top:auto}.doc-sign-box{min-height:42mm;border:1px solid #b9c0c6;border-radius:2mm;display:flex;align-items:center;justify-content:center;position:relative;padding:2mm}.doc-sign-box img{max-width:100%;max-height:38mm}.doc-hint{position:absolute;top:2mm;left:3mm;color:#8a949c;font-size:9pt}.doc-sign-info{border:1px solid #b9c0c6;border-radius:2mm;padding:3mm 4mm}.doc-sign-info b{display:block;letter-spacing:.4em;margin-bottom:1mm}.doc-sign-info p{margin:1mm 0;font-size:9.5pt}.doc-sign-line{margin-top:6mm;border-bottom:1px solid #8a949c;padding-bottom:1mm;font-size:9.5pt;color:#444}
.doc-foot{margin-top:2mm;text-align:center;color:#7d8790;font-size:8.5pt;border-top:1px solid #e2e7ec;padding-top:2mm}
.doc-to{font-size:14pt;margin-top:2mm;padding-bottom:1mm;border-bottom:1px solid #2b2e34;display:inline-block;min-width:90mm}.doc-lead{margin:0;color:#444}.doc-total{display:flex;justify-content:space-between;align-items:baseline;gap:8mm;padding:4mm 6mm;border:2px solid #2b2e34;border-radius:2mm;background:#f7f9fa}.doc-total span{font-size:10.5pt}.doc-total strong{font-size:20pt;letter-spacing:.03em}.doc-bank{border:1px solid #b9c0c6;border-radius:2mm;padding:3mm 4mm}.doc-bank h4{margin:0 0 1.5mm;font-size:9.5pt;color:#5b646c}.doc-invoice .doc-foot{margin-top:auto}
@page{size:A4;margin:0}
@media print{html,body{background:#fff!important}body.doc-open>*:not(#doc-view){display:none!important}body.doc-open #doc-view{position:static;background:#fff;display:block}.doc-bar{display:none!important}.doc-stage{padding:0;overflow:visible;display:block}.doc-sheet{zoom:1!important;box-shadow:none;width:210mm;min-height:276mm;break-inside:avoid}}
@media(max-width:760px){.doc-bar{padding:8px 10px}.doc-bar span{display:none}.doc-stage{padding:8px 4px 40px}}

/* documents must not inherit the app shell's header/table styling */
.doc-sheet *{box-sizing:border-box}.doc-sheet .doc-head{height:auto;background:none;border-top:0;border-left:0;border-right:0;padding-left:0;padding-right:0}.doc-sheet .doc-foot{background:none}
.doc-sheet .doc-table thead{background:none}.doc-sheet .doc-table th{color:#2b3036;background:#eef1f4;text-transform:none;letter-spacing:0}.doc-sheet .doc-table td{color:#1d2024}

/* ---- buttons: readable in every state. No opacity or filter fades; each state has its own colours (text contrast >= 4.5:1, or >= 3:1 for disabled) ---- */
button{transition:background-color .14s ease,border-color .14s ease,box-shadow .14s ease}
button:focus-visible{outline:3px solid #9cc9ee;outline-offset:2px}
button:disabled{cursor:not-allowed;opacity:1}
.primary,.secondary,.passkey-btn,.clock-btn{font-weight:600}
.primary{background:#2373b8;color:#fff;box-shadow:0 1px 2px rgba(20,40,70,.16)}.primary:hover:not(:disabled){background:#1d639f}.primary:active:not(:disabled){background:#17558c}
.secondary{color:#3f5b78;border-color:#c3d1de}.secondary:hover:not(:disabled){background:#eef3f8;border-color:#a3b9cd;color:#2c4763}.secondary:active:not(:disabled){background:#e2eaf2}
.row-button{color:#3f566d;border-color:#c3d1de;font-size:12px;font-weight:500}.row-button:hover:not(:disabled){background:#eef3f8;border-color:#a3b9cd;color:#2c4763}.row-button:active:not(:disabled){background:#e2eaf2}
.tab{color:#566470;font-size:12px}.tab:hover:not(.active){background:#f0f4f8;color:#30343a}.tab.active,.tabs .tab.active{color:#1d639f}
.text-button{color:#566470;font-size:12px;text-decoration:underline;text-underline-offset:3px}.text-button:hover{color:#1d2024}
.close{color:#44505a;background:#eef1f4}.close:hover{background:#dfe5ea;color:#1d2024}
nav button:hover:not(.active){background:#343a41;color:#fff}
.passkey-btn:active:not(:disabled){background:#c6e1fa}
.clock-btn:not(:disabled):active{background:#d9e8f3}
/* disabled or busy: flat grey that stays readable */
.primary:disabled{background:#e4e9ee;color:#55606a;box-shadow:none}
.secondary:disabled,.row-button:disabled,.close:disabled{background:#f1f4f7;color:#55606a;border-color:#dde3e8}
.clock-btn:disabled{opacity:1;background:#f1f4f7;color:#55606a;border-color:#dde3e8}
.passkey-btn:disabled{opacity:1;background:#eef2f5;border-color:#cfd8df;color:#55606a}.passkey-btn:disabled .pk-icon{color:#7d8a95}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important}}

.primary,.secondary{font-size:13px}

.quick-dates{display:flex;gap:8px;flex-wrap:wrap}.quick-dates .secondary{padding:8px 12px}
@media(max-width:760px){.quick-dates .secondary{flex:1 1 40%}}

/* ---- icons: one SVG set, fixed boxes so every row lines up; no symbol characters (iOS turns those into emoji) ---- */
body{font-variant-emoji:text}
nav button i,.ico{display:inline-grid;place-items:center;width:24px;height:24px;flex:none;font-style:normal}
nav button i .ico-svg{width:20px;height:20px}
nav button{align-items:center;line-height:1.2}nav button .count{flex:none}
.menu{display:inline-grid;place-items:center;width:44px;height:44px;padding:0;font-size:0;line-height:0}.menu .ico-svg{width:24px;height:24px}
.clock-btn b{display:grid;place-items:center;width:32px;height:32px;margin-bottom:2px}.clock-btn .ico-svg{width:28px;height:28px}
.row-button{display:inline-flex;align-items:center;gap:4px;line-height:1}.row-button .ico-svg{width:14px;height:14px;margin-right:-2px}
.ico-svg{display:block;flex:none}
.doc-table tr{break-inside:avoid}.doc-table thead{display:table-header-group}
@media(max-width:760px){.table-wrap td .row-button{justify-content:center}}

/* dropdowns: same treatment as the JLT LMS - own arrow, 14px from the right edge, room on the right so text never runs under it */
select:not([multiple]){appearance:none;-webkit-appearance:none;padding-right:38px;background-color:#fff;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%2365718a' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;background-size:12px 8px;text-overflow:ellipsis}
select:not([multiple]):hover:not(:disabled){border-color:#a3b9cd}
select:not([multiple]):disabled{background-color:#f1f4f7;color:#55606a;cursor:not-allowed}
select:focus-visible{outline:3px solid #9cc9ee;outline-offset:1px}

/* controls in one row share one height (inputs, dropdowns, date pickers) */
.field input:not([type=checkbox]):not([type=radio]),.field select{min-height:42px;box-sizing:border-box}
select:not([multiple]){padding-top:0;padding-bottom:0;font-size:14px;line-height:1.4}
.field input:not([type=checkbox]):not([type=radio]){font-size:14px;line-height:1.4}

/* sidebar: its own scroll area sized to the visible viewport (dvh follows iOS Safari's toolbar), status line sits after the items */
#sidebar{top:0;bottom:auto;height:100vh;height:100dvh;display:flex;flex-direction:column;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
#nav{flex:none}
.side-bottom{position:static;flex:none;margin-top:auto;padding:24px 4px calc(10px + env(safe-area-inset-bottom))}
@media(max-width:760px){#sidebar{padding-bottom:calc(16px + env(safe-area-inset-bottom))}.nav-label{margin-top:26px;margin-bottom:10px}nav button{padding-top:12px;padding-bottom:12px;margin:3px 0}}
@media(max-height:700px){.nav-label{margin-top:22px}}
/* one height for every form control */
.field input:not([type=checkbox]):not([type=radio]),.field select,select:not([multiple]){height:44px;min-height:44px}

/* progress, photos, custom fields */
.progress-steps{margin:10px 0}.progress-steps form{margin:8px 0}.progress-steps button{width:100%;min-height:48px;font-size:16px}
.timeline{list-style:none;margin:6px 0 14px;padding:0}.timeline li{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid var(--line)}.timeline li b{color:var(--ink)}
.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:10px;margin:8px 0 14px}.photo{display:block;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:#fff;color:var(--ink);text-decoration:none}.photo img{display:block;width:100%;aspect-ratio:1;object-fit:cover;background:#e9eef2}.photo span{display:block;padding:4px 8px;font-size:13px;color:#4f5963}
.photo-add{display:grid;grid-template-columns:140px 1fr;gap:12px;align-items:end;margin:8px 0}@media(max-width:760px){.photo-add{grid-template-columns:1fr}}
.req{display:inline-block;margin-left:6px;padding:0 6px;border-radius:4px;background:#fdebe0;color:#9a3a05;font-size:12px;font-weight:700}
.cf-multi{border:1px solid var(--line);border-radius:8px;padding:10px 12px;margin:0}.cf-multi legend{padding:0 6px;font-weight:600}.check{display:flex;align-items:center;gap:8px;margin:8px 0}.check input{width:18px;height:18px}

/* dispatch map and location sharing */
.share-chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;background:#e3f1e8;color:#16603a;font-size:13px;font-weight:700;margin-right:10px}.share-chip::before{content:"";width:8px;height:8px;border-radius:50%;background:#1e9e5a}.share-chip.warn{background:#fdebe0;color:#8a3a05}.share-chip.warn::before{background:#c4560f}
.fleet-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin:14px 0}
.fleet{display:grid;grid-template-columns:340px 1fr;gap:16px;align-items:start}@media(max-width:900px){.fleet{grid-template-columns:1fr}}
.fleet-tools{display:grid;grid-template-columns:1fr 150px;gap:8px;margin-bottom:10px}.fl-rows{display:grid;gap:8px;max-height:560px;overflow:auto}
.fl-row{display:grid;grid-template-columns:1fr auto;gap:2px 10px;text-align:left;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);cursor:pointer;min-height:56px}.fl-row.active{border-color:#2373b8;box-shadow:0 0 0 2px #cfe2f3}.fl-row.old .fl-name{color:#5d6670}.fl-name{font-weight:700}.fl-state{grid-column:1;font-size:13px;color:#4f5963}.fl-row .muted{grid-column:1/3;font-size:13px}
.fl-fresh{grid-row:1;grid-column:2;justify-self:end;padding:1px 8px;border-radius:999px;font-size:12px;font-weight:700}.fl-fresh.fresh{background:#dcebf8;color:#164f84}.fl-fresh.stale{background:#fdebe0;color:#8a3a05}.fl-fresh.lost,.fl-fresh.off{background:#e8ebee;color:#4b545d}
.fl-map{min-height:420px;height:52vh;border:1px solid var(--line);border-radius:10px;background:#eef1f4;display:flex;align-items:center;justify-content:center;text-align:center;padding:14px}
.fleet-detail{margin-top:12px}.fleet-detail h3{margin:0 0 6px}.fl-legend{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:10px;font-size:13px;color:#4f5963}.fl-legend span{display:inline-flex;align-items:center;gap:6px}
.dot{width:12px;height:12px;border-radius:50%;display:inline-block}.dot.fresh{background:#2373b8}.dot.stale{background:#c4560f;opacity:.7}.dot.lost{background:#7d8790;opacity:.6}.dash{width:26px;border-top:2px dashed #2373b8;display:inline-block}
.link-button{display:inline-flex;align-items:center;text-decoration:none;padding:0 14px;min-height:44px;border-radius:8px;border:1px solid var(--line);background:#fff;color:var(--ink);font-weight:600}
.fleet-detail[hidden],.share-chip[hidden]{display:none}

/* dispatch */
.badge.dispatch{background:#e6eefb;color:#1d4f91}.badge.dispatch.alert{background:#fdebe0;color:#8a3a05}
.dispatch-panel{margin:14px 0;padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:#f8fafc}.dispatch-panel .section-title{margin-top:0}
.mini{width:100%;border-collapse:collapse;font-size:14px;margin-top:10px}.mini th,.mini td{padding:6px 8px;border-bottom:1px solid var(--line);text-align:left}
.offer-sheet{position:fixed;inset:0;z-index:60;display:flex;align-items:flex-end;justify-content:center;background:rgba(20,30,45,.45);padding:12px}
.offer-card{width:100%;max-width:520px;max-height:92dvh;overflow:auto;background:#fff;border-radius:14px;padding:16px 18px calc(16px + env(safe-area-inset-bottom));box-shadow:0 10px 40px rgba(0,0,0,.3)}
.offer-head{display:flex;justify-content:space-between;align-items:center;font-size:18px}.offer-timer{background:#fdebe0;color:#8a3a05;border-radius:999px;padding:2px 12px;font-weight:800;font-variant-numeric:tabular-nums}
.offer-route{font-size:20px;font-weight:700;line-height:1.5;margin:10px 0}.offer-actions{display:grid;grid-template-columns:1fr 1.6fr;gap:10px;margin-top:14px}.offer-actions button{min-height:52px;font-size:17px}
