:root{--color-bg: #f4f6f8;--color-surface: #ffffff;--color-border: #e0e4e8;--color-text: #1f2933;--color-text-muted: #667080;--color-primary: #002d7d;--color-primary-dark: #001f5c;--color-accent: #d82126;--color-primary-light: #e8edf7;--color-success: #1b7a43;--color-success-bg: #e5f6ec;--color-warning: #a06400;--color-warning-bg: #fff3d9;--color-danger: #b3261e;--color-danger-bg: #fdecea;--radius: 8px;--shadow: 0 1px 3px rgba(0, 0, 0, .08)}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--color-bg);color:var(--color-text);font-family:Segoe UI,system-ui,-apple-system,sans-serif;font-size:14px}#app{min-height:100vh;display:flex;flex-direction:column}a{color:var(--color-primary)}h1,h2,h3,h4{margin:0 0 .5em;font-weight:600}.topbar{background:var(--color-primary);border-bottom:3px solid var(--color-accent);color:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 1.5rem;height:56px;flex-shrink:0}.topbar .brand{font-weight:700;font-size:1.05rem;letter-spacing:.02em}.topbar nav{display:flex;gap:.25rem}.topbar nav a{color:#ffffffd9;text-decoration:none;padding:.5rem .85rem;border-radius:var(--radius);font-size:.92rem}.topbar nav a:hover,.topbar nav a.router-link-exact-active{background:#ffffff26;color:#fff}.topbar .user-info{display:flex;align-items:center;gap:.75rem;font-size:.9rem}.topbar{position:relative;z-index:30;gap:1rem}.topbar nav{flex:1;flex-wrap:wrap;align-items:center;min-width:0}.topbar .menu{position:relative}.topbar .menu-toggle,.topbar .user-toggle{background:transparent;border:0;color:#ffffffd9;padding:.5rem .85rem;border-radius:var(--radius);font-size:.92rem;cursor:pointer;font-family:inherit}.topbar .menu-toggle:hover,.topbar .menu-toggle.active,.topbar .menu.open .menu-toggle,.topbar .user-toggle:hover{background:#ffffff26;color:#fff}.topbar .user-toggle{display:flex;align-items:center;gap:.5rem;color:#fff}.topbar .avatar{width:30px;height:30px;border-radius:50%;background:var(--color-accent);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:.8rem}.topbar .menu-list{position:absolute;top:calc(100% + 6px);left:0;min-width:200px;background:#fff;border-radius:var(--radius);box-shadow:0 8px 24px #0000002e;padding:.35rem;display:flex;flex-direction:column;z-index:40}.topbar .menu-list.right{left:auto;right:0}.topbar .menu-list a,.topbar .menu-list .menu-item{color:var(--color-text, #1f2937);text-decoration:none;padding:.5rem .75rem;border-radius:6px;font-size:.92rem;background:none;border:0;text-align:left;cursor:pointer;font-family:inherit}.topbar .menu-list a:hover,.topbar .menu-list .menu-item:hover,.topbar .menu-list a.router-link-active{background:var(--color-primary-light, #e8edf7);color:var(--color-primary)}.topbar .menu-head{padding:.5rem .75rem .6rem;border-bottom:1px solid #e5e7eb;margin-bottom:.3rem;color:#1f2937;font-weight:600}.topbar .menu-head .role-badge{background:var(--color-primary-light, #e8edf7)!important;color:var(--color-primary);font-weight:500;display:inline-block;margin-top:.25rem}.menu-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20}@media(max-width:900px){.topbar .user-name{display:none}.topbar nav a,.topbar .menu-toggle{padding:.45rem .55rem}}.topbar .user-info .role-badge{background:#ffffff2e;padding:.15rem .55rem;border-radius:999px;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em}.topbar button.logout{background:transparent;border:1px solid rgba(255,255,255,.4);color:#fff;border-radius:var(--radius);padding:.35rem .7rem;cursor:pointer;font-size:.85rem}.topbar button.logout:hover{background:#ffffff26}main.content{flex:1;padding:1.5rem;max-width:1920px;width:100%;margin:0 auto}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.25rem;margin-bottom:1.25rem}.card h2,.card h3{margin-top:0}.toolbar{display:flex;flex-wrap:wrap;gap:.75rem;align-items:flex-end;margin-bottom:1rem}.field{display:flex;flex-direction:column;gap:.25rem}.field label{font-size:.8rem;color:var(--color-text-muted);font-weight:600}input,select,textarea{font-family:inherit;font-size:.92rem;padding:.45rem .6rem;border:1px solid var(--color-border);border-radius:var(--radius);background:#fff;color:var(--color-text)}input:focus,select:focus,textarea:focus{outline:2px solid var(--color-primary);outline-offset:-1px}textarea{resize:vertical;min-height:3.5rem}button{font-family:inherit;cursor:pointer}.btn{display:inline-flex;align-items:center;justify-content:center;text-align:center;gap:.4rem;border:1px solid var(--color-border);background:#fff;color:var(--color-text);padding:.45rem .9rem;border-radius:var(--radius);font-size:.88rem;font-weight:500}.btn:hover{border-color:var(--color-primary)}.btn-primary{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.btn-primary:hover{background:var(--color-primary-dark)}.btn-danger{background:#fff;border-color:var(--color-danger);color:var(--color-danger)}.btn-danger:hover{background:var(--color-danger-bg)}.btn-sm{padding:.3rem .6rem;font-size:.8rem}.btn:disabled{opacity:.5;cursor:not-allowed}table{width:100%;border-collapse:collapse;font-size:.9rem}th,td{text-align:left;padding:.55rem .6rem;border-bottom:1px solid var(--color-border);vertical-align:top}th{color:var(--color-text-muted);font-weight:600;font-size:.78rem;text-transform:uppercase;letter-spacing:.03em}tbody tr:hover{background:#fafbfc}.table-wrap{overflow-x:auto}.badge{display:inline-flex;align-items:center;padding:.15rem .55rem;border-radius:999px;font-size:.75rem;font-weight:600;white-space:nowrap}.badge-success{background:var(--color-success-bg);color:var(--color-success)}.badge-warning{background:var(--color-warning-bg);color:var(--color-warning)}.badge-danger{background:var(--color-danger-bg);color:var(--color-danger)}.badge-neutral{background:#eef1f4;color:var(--color-text-muted)}.alert{padding:.75rem 1rem;border-radius:var(--radius);font-size:.88rem;margin-bottom:1rem}.alert-danger{background:var(--color-danger-bg);color:var(--color-danger);border:1px solid #f3c6c2}.alert-warning{background:var(--color-warning-bg);color:var(--color-warning);border:1px solid #f0dca6}.alert-success{background:var(--color-success-bg);color:var(--color-success);border:1px solid #bfe4cd}.muted{color:var(--color-text-muted)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172173;display:flex;align-items:flex-start;justify-content:center;padding:1rem;overflow-y:auto;z-index:50}.modal{background:#fff;border-radius:var(--radius);padding:1.5rem;width:100%;max-width:560px;box-shadow:0 8px 30px #0003;max-height:calc(100vh - 2rem);max-height:calc(100dvh - 2rem);overflow-y:auto;position:relative}.modal-x{position:sticky;top:-.75rem;float:right;margin:-.75rem -.75rem 0 .5rem;z-index:5;width:44px;height:44px;border-radius:999px;border:1px solid var(--color-border);background:#fff;font-size:1.1rem;line-height:1;cursor:pointer;color:#334155;box-shadow:0 2px 6px #00000014}.modal-x:hover{background:#f1f5f9}.modal .modal-actions{position:sticky;bottom:-1.5rem;background:#fff;margin-bottom:-1.5rem;padding:.75rem 0 1.25rem;border-top:1px solid var(--color-border);z-index:4}.modal-actions{display:flex;justify-content:flex-end;gap:.6rem;margin-top:1.25rem}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(160deg,var(--color-primary-dark),var(--color-primary));border-top:5px solid var(--color-accent)}.login-card{background:#fff;border-radius:12px;padding:2rem;width:100%;max-width:380px;box-shadow:0 12px 40px #00000040}.login-logo{display:block;width:190px;margin:0 auto 1rem}.login-card h1{font-size:1.3rem;color:var(--color-primary-dark)}.login-card p.subtitle{color:var(--color-text-muted);margin-top:-.3rem;margin-bottom:1.5rem;font-size:.9rem}.stack{display:flex;flex-direction:column;gap:.9rem}.dev-otp-hint{background:var(--color-primary-light);border:1px dashed var(--color-primary);color:var(--color-primary-dark);padding:.6rem .8rem;border-radius:var(--radius);font-size:.85rem}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.9rem}.stat-tile{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1rem}.stat-tile .value{font-size:1.5rem;font-weight:700;color:var(--color-primary-dark)}.stat-tile .label{color:var(--color-text-muted);font-size:.8rem}.week-nav{display:flex;align-items:center;gap:.75rem}.tag-list{display:flex;flex-wrap:wrap;gap:.3rem}.job-card{border:1px solid var(--color-border);border-radius:var(--radius);margin-bottom:.75rem;overflow:hidden}.job-card{container-type:inline-size}.job-card-header{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"main actions" "people actions";align-items:center;column-gap:.75rem;row-gap:.35rem;padding:.7rem .9rem;background:#fafbfc;cursor:pointer}.job-card-header:hover{background:#f2f5f7}.job-card-main{grid-area:main;display:flex;flex-wrap:wrap;align-items:baseline;column-gap:.75rem;row-gap:.15rem;min-width:0}.job-card-title{display:flex;align-items:center;flex-wrap:wrap;gap:.4rem;min-width:0;overflow-wrap:anywhere}.job-card-subtitle{font-size:.85rem;min-width:0}.job-card-people{grid-area:people;display:flex;flex-wrap:wrap;gap:.3rem}.job-card-header>.job-card-actions{grid-area:actions;align-self:start}.job-card-header>.job-card-people:empty{display:none}@container (min-width: 760px){.job-card-header{grid-template-columns:minmax(0,1fr) auto auto;grid-template-areas:"main people actions"}.job-card-header>.job-card-actions{align-self:center}.job-card-header>.job-card-people{justify-content:flex-end;max-width:55cqw}}.job-card-body{padding:.9rem 1rem 1.1rem;border-top:1px solid var(--color-border)}.job-card-body h4{margin:1rem 0 .4rem;font-size:.9rem}.job-card-body h4:first-of-type{margin-top:.6rem}.person-list{list-style:none;margin:0;padding:0}.person-list li{display:flex;justify-content:space-between;align-items:center;gap:.5rem;padding:.35rem 0;border-bottom:1px solid var(--color-border);font-size:.9rem}.person-list li:last-child{border-bottom:none}.advice-panel{margin-top:.6rem;background:#f8fafb;border:1px solid var(--color-border);border-radius:var(--radius);padding:.75rem}.advice-list{list-style:none;margin:0;padding:0;max-height:260px;overflow-y:auto}.advice-list li{padding:.4rem 0;border-bottom:1px solid #eee;font-size:.88rem}.advice-list li:last-child{border-bottom:none}.issue-list{margin:.2rem 0 .3rem 1.2rem;padding:0;font-size:.78rem}.issue-blocking{color:var(--color-danger)}.issue-warning{color:var(--color-warning)}.leg-box{background:#f8fafb;border:1px solid var(--color-border);border-radius:var(--radius);padding:.6rem .75rem;margin-bottom:.5rem;font-size:.9rem}tr.row-editing td{background:var(--color-warning-bg)}.customer-block{border:1px solid var(--color-border);border-radius:10px;margin:.75rem 0;background:var(--color-surface);overflow:hidden}.customer-block-header{display:flex;align-items:center;gap:.6rem;padding:.6rem .9rem;background:var(--color-bg);cursor:pointer;flex-wrap:wrap}.customer-block .job-card{margin:.4rem .6rem}.location-header{font-size:.75rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--color-primary);padding:.5rem .9rem 0}.day-control{margin:.4rem 0 .6rem;border:1px dashed var(--color-border);border-radius:8px}.day-control-summary{width:100%;text-align:left;background:none;border:none;padding:.5rem .75rem;font-size:.85rem;cursor:pointer;color:var(--color-text)}.day-control-body{padding:0 .75rem .75rem;display:grid;gap:.6rem;font-size:.85rem}.dc-ok{color:var(--color-success);font-weight:600}.dc-warn{color:var(--color-danger);font-weight:600}.alert-info{background:var(--color-primary-light);color:var(--color-primary-dark);border:1px solid #c5d0e8}.topbar .brand-logo{height:30px;display:block}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.login-card p.subtitle{text-align:center}.btn.btn-icon{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;padding:0;color:var(--color-primary)}.btn.btn-icon:hover{background:var(--color-primary-light, #e8edf7)}@media(max-width:700px){.topbar{height:auto;min-height:56px;flex-wrap:wrap;padding:.4rem .75rem;row-gap:.25rem}.topbar nav{order:3;flex-basis:100%;flex-wrap:nowrap;overflow-x:auto;gap:.1rem;padding-bottom:.2rem;scrollbar-width:none}.topbar nav::-webkit-scrollbar{display:none}.topbar nav a,.topbar .menu-toggle{white-space:nowrap;font-size:.88rem}.topbar nav .menu{position:static}}@media(pointer:coarse),(max-width:1100px){html,body{font-size:15px}main.content{padding:1rem}.btn{min-height:42px;padding:.5rem .9rem;font-size:.95rem;border-radius:10px}.btn-sm{min-height:38px;padding:.35rem .7rem;font-size:.9rem}.btn-icon{min-width:42px;min-height:42px}.btn-icon svg{width:22px;height:22px}input:not([type=checkbox]):not([type=radio]),select,textarea{min-height:42px;font-size:16px}input[type=checkbox],input[type=radio]{width:24px!important;height:24px}label{font-size:.95rem}.topbar{height:auto;min-height:60px;padding:.35rem 1rem}.topbar nav{flex-wrap:wrap;overflow:visible;gap:.15rem}.topbar nav a,.topbar .menu-toggle{padding:.65rem .7rem;font-size:1rem;white-space:nowrap}.topbar nav .menu{position:relative}.topbar .menu-list{max-height:calc(100vh - 90px);overflow-y:auto}.menu-list a,.menu-list .menu-item{padding:.8rem 1rem;font-size:1rem}.job-card-header{min-height:50px;padding:.5rem .75rem}.badge{font-size:.85rem;padding:.3rem .6rem}.seg button{min-height:44px;padding:.5rem 1rem;font-size:1rem}.person-list li{padding:.6rem 0;font-size:1rem}.plus-btn,.plus-spacer{width:2.6rem!important;height:2.6rem!important}.person-row{padding:.4rem 0!important}.muted.small,.small{font-size:.85rem}}@media(max-width:640px){html,body{overflow-x:hidden}main.content{padding:.65rem .6rem 5.5rem}.card{padding:.85rem}h1{font-size:1.35rem}h2{font-size:1.15rem}.topbar{padding:.35rem .6rem;min-height:52px}.topbar .brand-logo{height:26px}.topbar nav{gap:.1rem;row-gap:0}.topbar nav a,.topbar .menu-toggle{padding:.45rem .55rem;font-size:.92rem}.topbar nav .menu{position:static}.topbar .menu-list{position:fixed;left:.5rem;right:.5rem;top:auto;min-width:0;margin-top:.3rem}.btn{max-width:100%;white-space:normal;line-height:1.2}.toolbar{flex-wrap:wrap;gap:.5rem}.toolbar>*{max-width:100%}.modal-actions{flex-wrap:wrap;gap:.5rem}.modal-actions .btn{flex:1 1 calc(50% - .5rem);min-width:0}.modal-backdrop{padding:.4rem}.modal{width:100%!important;max-width:100%!important;max-height:calc(100dvh - .8rem);border-radius:12px;padding:1rem .9rem 1.5rem}.modal .modal-actions{bottom:-1.5rem}.grid-2,.grid-3{grid-template-columns:1fr!important}.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}table{max-width:none}.customer-block-header{flex-wrap:nowrap;gap:.4rem;padding:.5rem .6rem}.customer-block-header>strong{flex:1 1 auto;min-width:0;overflow-wrap:anywhere;line-height:1.25}.customer-block-header>.muted{white-space:nowrap}.customer-block .job-card{margin:.4rem .35rem}.grid-2>*,.grid-3>*,.field{min-width:0}input,select,textarea{max-width:100%}.list-head{flex-wrap:wrap;gap:.5rem!important}.list-head input:not([type=checkbox]):not([type=radio]),.list-head select{flex:1 1 100%;max-width:none!important}.card>table,.card>form>table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}.actions,.form-actions,.btn-row{display:flex;flex-wrap:wrap;gap:.5rem}.actions>.btn,.form-actions>.btn,.btn-row>.btn{flex:1 1 auto}.toolbar>h1,.toolbar>h2,.toolbar>h3{flex-basis:100%}.toolbar>.btn,.toolbar>select,.toolbar>input,.tabs>.btn,.rep>.btn,.rep>select{flex:1 1 auto;width:auto}.toolbar>.tabs,.tabs{display:flex;flex:1 1 100%;gap:.4rem}.rep>strong,.rep>.muted.small{flex-basis:100%}.toolbar>div:empty,.rep>div:empty{display:none}}
