@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;650;700;750;800&display=swap');
:root{--font-scale:1;--ink:#1c2332;--muted:#89919f;--line:#e9ecf1;--bg:#f7f8fb;--orange:#f5663f;--green:#148968;--shadow:0 3px 18px #1c233205}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:calc(14px * var(--font-scale)) Inter,system-ui,sans-serif;-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit}button{cursor:pointer;color:var(--ink);background:#fff;border:1px solid var(--line);padding:10px 14px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:background .18s,box-shadow .18s,transform .18s}button:hover{background:#f3f5f9;box-shadow:0 2px 6px #1c233207}button:active{transform:translateY(1px)}button:disabled{opacity:.5;cursor:wait}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #ffad94;outline-offset:3px}.icon{width:18px;height:18px;flex-shrink:0}.primary{color:#fff;background:var(--orange);border-color:var(--orange);font-weight:600;box-shadow:0 4px 10px #f5663f24;padding:13px 18px}.primary:hover{background:#e55732;border-color:#e55732}.sidebar{position:fixed;inset:0 auto 0 0;width:222px;padding:31px 17px 22px;background:#171d2a;color:#fff;display:flex;flex-direction:column;z-index:5}.brand{display:flex;align-items:center;gap:11px;color:#fff;text-decoration:none;font-weight:750;font-size:calc(21px * var(--font-scale));letter-spacing:1px;padding-left:6px}.brand-icon{width:38px;height:40px;border-radius:12px;background:var(--orange);display:grid;place-items:center;box-shadow:0 3px 15px #f5663f22}.brand-icon .icon{width:23px;height:23px}.brand-small{display:block;margin-top:4px;color:#8d96a8;font-size:calc(10px * var(--font-scale));font-weight:400;letter-spacing:0}.workspace{color:#687389;font-size:calc(9px * var(--font-scale));font-weight:650;letter-spacing:1.4px;margin:46px 13px 15px}.nav{width:100%;justify-content:flex-start;gap:13px;background:none;border:0;color:#939db1;margin:5px 0;padding:14px 13px;font-size:calc(12px * var(--font-scale));font-weight:500}.nav .icon{width:18px;height:18px}.nav:hover{background:#252d3d;color:white;box-shadow:none}.nav.active{background:#f5663f;color:white;box-shadow:0 5px 20px #00000014}.side-note{margin-top:auto;padding:20px 12px;font-size:calc(11px * var(--font-scale));color:#d5dbe6;line-height:1.6}.side-note p{color:#69778e;font-size:calc(11px * var(--font-scale));line-height:1.7;margin-top:8px}.dot{width:6px;height:6px;background:#f89b78;border-radius:50%;display:inline-block;margin-right:6px}.profile{display:flex;align-items:center;gap:10px;padding:18px 8px 0;border-top:1px solid #2c3343;font-size:calc(11px * var(--font-scale));overflow:hidden}.avatar{width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;border-radius:11px;background:#edeaff;color:#7260b2;font-size:calc(10px * var(--font-scale));font-weight:650;flex-shrink:0}.profile .avatar{background:#30394c;color:#fff}.profile div{min-width:0;overflow-wrap:anywhere}.profile .muted{display:block;margin-top:4px;font-size:calc(10px * var(--font-scale));color:#79869d}.muted{color:var(--muted)}main{margin-left:222px}.topbar{height:70px;padding:0 36px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;font-size:calc(11px * var(--font-scale));color:var(--muted)}.topbar strong{color:#566073;font-weight:500}.slash{margin:0 12px;color:#cdd2dc}.topactions{display:flex;gap:13px;align-items:center}.preview{font-size:calc(9px * var(--font-scale));font-weight:600;color:#657082;letter-spacing:.7px;background:#f3f5f9;border-radius:20px;padding:7px 11px}#staffsignin{color:var(--orange);font-size:calc(11px * var(--font-scale));font-weight:600;text-decoration:none}.content{max-width:1600px;margin:auto;padding:32px 36px}.heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:26px}.eyebrow{font-size:calc(9px * var(--font-scale));font-weight:600;letter-spacing:1.6px;color:#9ba3b1}h1{font-size:calc(34px * var(--font-scale));font-weight:650;letter-spacing:-1.3px;margin:10px 0 8px}.heading p{margin:0;font-size:calc(12px * var(--font-scale));color:var(--muted)}.datebar{display:flex;align-items:center;gap:12px;margin-bottom:20px}.datecontrols{display:flex;gap:4px;align-items:center}.datecontrols>button{padding:9px}.datecontrols #today{font-size:calc(11px * var(--font-scale));padding:10px 12px;margin-left:3px}.datefield input{width:145px;font-size:calc(11px * var(--font-scale));margin:0;padding:9px;border-radius:8px;min-height:37px}.datebar>span{font-size:calc(11px * var(--font-scale));color:var(--muted)}#share{margin-left:auto;font-size:calc(11px * var(--font-scale));font-weight:600;color:#526074}#print{font-size:calc(11px * var(--font-scale));color:#6e7788}.daystrip{display:grid;grid-template-columns:repeat(7,1fr);gap:8px;margin-bottom:23px}.daybutton{position:relative;padding:14px 10px;display:flex;flex-direction:column;gap:6px;background:transparent;border-color:transparent;box-shadow:none}.daybutton>span{font-size:calc(10px * var(--font-scale));color:#959dab}.daybutton strong{font-size:calc(21px * var(--font-scale));font-weight:600}.daybutton small{font-size:calc(9px * var(--font-scale));color:#b1b7c2}.daybutton.chosen{background:#fff;border-color:#ffd5c7;box-shadow:0 4px 12px #f5663f08}.daybutton.chosen>span,.daybutton.chosen strong{color:var(--orange)}.daybutton.chosen small{color:#d69480}.daybutton.istoday:after{position:absolute;content:'';width:4px;height:4px;border-radius:50%;background:var(--orange);right:11px;top:12px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:28px}.stat{border:1px solid var(--line);border-radius:14px;background:#fff;padding:20px;position:relative;box-shadow:var(--shadow)}.stat-label{font-size:calc(10px * var(--font-scale));font-weight:500;color:#7a8597}.stat strong{display:block;font-size:calc(29px * var(--font-scale));font-weight:650;letter-spacing:-1px;margin:10px 0 6px}.stat small{font-size:calc(9px * var(--font-scale));color:#a0a8b5}.stat-symbol{position:absolute;right:17px;top:17px;width:29px;height:29px;background:#f3f4f9;color:#818d9f;border-radius:9px;display:grid;place-items:center}.stat-symbol .icon{width:15px;height:15px}.stat:last-child{background:#fff5ee;border-color:#ffe6d6}.stat:last-child .stat-symbol{background:#ffe7d8;color:#d88243}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:25px}.tabs{display:inline-flex;background:#edf0f5;padding:4px;border-radius:11px;gap:2px}.tabs button{background:transparent;border:0;padding:9px 12px;font-size:calc(10px * var(--font-scale));color:#8b95a5;font-weight:500;box-shadow:none;white-space:nowrap}.tabs .selected{background:#fff;color:#3f495b;box-shadow:0 2px 5px #19283b0a}.tabs span{background:#eff2f7;border-radius:5px;padding:2px 5px;margin-left:5px;font-size:calc(9px * var(--font-scale))}.toolbar input{width:280px;min-height:37px;font-size:calc(10px * var(--font-scale));background:#fff;padding:11px 13px}.layout{display:grid;grid-template-columns:minmax(0,1fr) 270px;gap:22px;align-items:start}.sectionhead{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:16px}.sectionhead h2{font-size:calc(12px * var(--font-scale));font-weight:600;letter-spacing:-.1px;margin:0}.sectionhead>span{font-size:calc(9px * var(--font-scale));color:#a3abb9}.sectionhead button{font-size:calc(9px * var(--font-scale));padding:6px 9px;border-radius:6px;background:#f6f7fa;color:#6f7d93}.rightpanel{background:#fff;border:1px solid var(--line);border-radius:15px;padding:20px;box-shadow:var(--shadow)}.rightpanel .sectionhead{margin-bottom:7px}.panel-intro{font-size:calc(9px * var(--font-scale));color:#a6aebb;margin:0 0 17px}#jobs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.job{min-width:0;position:relative;background:#fff;border:1px solid var(--line);border-radius:15px;padding:20px;cursor:pointer;box-shadow:var(--shadow);transition:transform .18s,box-shadow .18s,border-color .18s}.job:hover{transform:translateY(-2px);border-color:#cfd7e5;box-shadow:0 8px 25px #18213b0a}.job:focus-visible{outline:3px solid #ffaf91}.job.attention{border-color:#f4dec9}.jobtop{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:24px}.joblabels{display:flex;align-items:center;gap:8px;min-width:0}.code{font-size:calc(10px * var(--font-scale));font-weight:600;color:#566175;background:#f2f4f8;border-radius:5px;padding:5px 7px;overflow-wrap:anywhere}.daytag{font-size:calc(9px * var(--font-scale));color:#a3abb8;white-space:nowrap}.badge{font-size:calc(8px * var(--font-scale));font-weight:600;color:#198969;background:#eaf7f1;border-radius:20px;padding:5px 8px;white-space:nowrap;display:inline-flex;align-items:center;gap:4px}.badge:before{content:'';width:4px;height:4px;border-radius:50%;background:currentColor}.badge.progress{background:#edf1ff;color:#6e78c4}.badge.warning{background:#fff2e3;color:#c38843}.badge.done{background:#edf6f1;color:#719a85}.projecttitle{display:flex;align-items:flex-start;gap:11px}.projecticon{background:#f7f8fb;color:#8c98b0;padding:10px;border-radius:12px;flex-shrink:0}.projecticon .icon{width:19px;height:19px;display:block}.job h3{font-size:calc(17px * var(--font-scale));font-weight:650;line-height:1.3;letter-spacing:-.45px;margin:1px 0 7px;overflow-wrap:anywhere}.scope{font-size:calc(10px * var(--font-scale));color:#949dad;line-height:1.65}.jobmeta{display:flex;justify-content:space-between;align-items:center;gap:7px;flex-wrap:wrap;margin:20px 0 18px;color:#68758a}.time{display:flex;align-items:center;gap:6px;font-size:calc(11px * var(--font-scale));font-weight:600}.time .icon{width:13px;height:13px;color:#a5adba}.dash{font-weight:400;color:#b7bfcb}.metanote{font-size:calc(8px * var(--font-scale));color:#a5adba}.jobbottom{border-top:1px solid #f0f2f6;padding-top:15px}.assignmentlabel{display:block;font-size:calc(8px * var(--font-scale));color:#a8b1bf;letter-spacing:.9px;font-weight:600;margin-bottom:10px}.assignees{display:flex;gap:6px;flex-wrap:wrap}.installerchip{display:flex;align-items:center;gap:5px;background:#f8f9fc;border:1px solid #eef0f5;border-radius:7px;font-size:calc(10px * var(--font-scale));color:#68738a;padding:4px 7px 4px 4px}.installerchip .avatar{width:21px;height:21px;font-size:calc(7px * var(--font-scale));border-radius:6px}.tone-0{background:#e9edff;color:#7686c5}.tone-1{background:#ffecdd;color:#c69169}.tone-2{background:#e0f3ef;color:#78a995}.tone-3{background:#f0e8f7;color:#a588b5}.unassigned{font-size:calc(10px * var(--font-scale));color:#c68655;padding:6px 0}.ready{display:flex;gap:9px;flex-wrap:wrap;align-items:center;margin-top:16px;padding-top:13px;border-top:1px solid #f0f2f6;color:#73a18c;font-size:calc(8px * var(--font-scale))}.ready>span{display:flex;align-items:center;gap:3px}.ready .icon{width:11px;height:11px}.ready .notready{color:#c29c6c}.ready .designer{margin-left:auto;color:#a6aebb}.notes{margin-top:13px;background:#fff6ec;border-radius:7px;padding:9px;color:#ba8c55;font-size:calc(9px * var(--font-scale));line-height:1.65;display:flex;align-items:flex-start;gap:7px}.notes .icon{width:12px;height:12px;margin-top:2px}.completedjob .projecticon{background:#f0f7f3;color:#81a790}.person{display:flex;align-items:center;gap:10px;padding:13px 0;border-bottom:1px solid #f0f2f6}.person:last-child{border:0}.personinfo{flex:1;min-width:0}.person strong{font-weight:600;font-size:calc(10px * var(--font-scale));overflow-wrap:anywhere}.person p{margin:5px 0 0;color:#a2acba;font-size:calc(9px * var(--font-scale))}.state{font-size:calc(8px * var(--font-scale));padding:4px 6px;border-radius:5px;color:#66a189;background:#eff8f3;white-space:nowrap}.state.busy{color:#8792ae;background:#f0f3f9}.state.leave{background:#fff3e7;color:#c39053}.smallnote{font-size:calc(10px * var(--font-scale));line-height:1.8;color:#909cac;background:#f7f8fb;padding:13px;border-radius:9px;margin-top:17px}.rightpanel .smallnote{font-size:calc(9px * var(--font-scale))}.empty{grid-column:1/-1;text-align:center;padding:65px 20px;background:#fff;border:1px dashed #d9e0eb;border-radius:15px;color:#a2adbe;line-height:1.9;font-size:calc(12px * var(--font-scale))}footer{display:flex;justify-content:space-between;gap:15px;color:#a7afbe;font-size:calc(9px * var(--font-scale));margin-top:35px;padding-top:20px;border-top:1px solid var(--line)}input,select,textarea{width:100%;border:1px solid #e2e7f0;border-radius:9px;background:#fff;color:#526079;padding:11px;min-height:42px}dialog{border:1px solid #e8edf5;width:min(640px,calc(100% - 24px));max-height:90vh;padding:28px;border-radius:20px;box-shadow:0 25px 100px #17203230;color:var(--ink)}dialog::backdrop{background:#17203260;backdrop-filter:blur(5px)}.modalhead{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.modalhead h2{font-size:calc(23px * var(--font-scale));font-weight:600;letter-spacing:-.7px;margin:7px 0}.modalhead button{font-size:calc(24px * var(--font-scale));border:0;padding:2px 9px;background:#f5f6f9;color:#8390a5}.formgrid{display:grid;grid-template-columns:1fr 1fr;gap:17px}label{display:block;font-size:calc(11px * var(--font-scale));font-weight:500;color:#7a879a}label input,label select,label textarea{margin-top:8px}.full{grid-column:1/-1}fieldset{border:1px solid var(--line);border-radius:10px;padding:15px}legend{font-size:calc(10px * var(--font-scale));color:#8290a5}.check{display:flex;gap:8px;align-items:center;font-size:calc(11px * var(--font-scale))}.check input{margin:0;width:16px;height:16px;min-height:16px;accent-color:var(--orange)}#installerchoices{display:flex;gap:15px;flex-wrap:wrap}.modalactions{display:flex;justify-content:flex-end;gap:8px;margin-top:24px}.danger{color:#c65d46;margin-right:auto;border-color:#f3ded8;background:#fff9f7}#error{color:#c7654c;font-size:calc(12px * var(--font-scale));line-height:1.7}#toast{display:none;position:fixed;bottom:25px;left:50%;transform:translateX(-50%);max-width:90vw;background:#202a3d;color:#fff;padding:13px 21px;border-radius:12px;box-shadow:0 4px 30px #202a3d22;font-size:calc(12px * var(--font-scale));z-index:10}.weekscroll{overflow:auto;background:#fff;border:1px solid var(--line);border-radius:14px}table{border-collapse:collapse;min-width:900px;width:100%}th,td{border-right:1px solid #f0f2f7;border-bottom:1px solid #f0f2f7;padding:16px;font-size:calc(11px * var(--font-scale));text-align:left;vertical-align:top}th{background:#f9fafc;font-weight:500;color:#8c98ad}td:first-child{width:120px;font-weight:500}.weekjob{width:100%;justify-content:flex-start;text-align:left;background:#f2f4fc;border:0;border-left:3px solid #b7c0e5;border-radius:7px;margin-bottom:8px;font-size:calc(9px * var(--font-scale));line-height:1.8;padding:9px 10px;color:#7b87a4}.teamgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:17px}.teamcard{padding:20px;background:#fff;border:1px solid var(--line);border-radius:14px}.teamcard .person{border:0}.teamrow{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:14px 0;border-bottom:1px solid #f0f2f7}.teamrow strong{font-size:calc(12px * var(--font-scale));font-weight:500;overflow-wrap:anywhere}.installeractions{display:flex;gap:8px;align-items:center}.installeractions select{width:140px;font-size:calc(11px * var(--font-scale))}.deleteinstaller{font-size:calc(10px * var(--font-scale));color:#ba6658;background:#fff5f1;border-color:#ffe7df}.shareactions{display:grid;gap:11px;margin-top:24px}.shareactions button{justify-content:flex-start;padding:15px;color:#697891}#sharefeedback{font-size:calc(12px * var(--font-scale));color:var(--green)}.member{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:15px 0;border-bottom:1px solid var(--line);font-size:calc(11px * var(--font-scale));line-height:1.8}.member strong{font-size:calc(10px * var(--font-scale));color:#8a98ad;font-weight:500}.member button{font-size:calc(10px * var(--font-scale))}#memberform label{margin-top:15px}.publicview .job{cursor:default}.publicview .job:hover{transform:none}.publicview .sectionhead>span{display:none}body [hidden]{display:none!important}
@media(min-width:1600px){.layout{grid-template-columns:minmax(0,1fr) 310px}.job{padding:24px}.job h3{font-size:calc(20px * var(--font-scale))}.content{padding:38px 45px}}@media(max-width:1250px){.sidebar{width:200px;padding-left:14px;padding-right:14px}main{margin-left:200px}.content{padding:28px}.topbar{padding:0 28px}.layout{grid-template-columns:minmax(0,1fr) 245px}.job{padding:17px}.projecttitle{gap:8px}.projecticon{display:none}.job h3{font-size:calc(16px * var(--font-scale))}.joblabels{gap:4px}.code{font-size:calc(9px * var(--font-scale))}.badge{font-size:calc(7px * var(--font-scale))}.daytag{font-size:calc(8px * var(--font-scale))}.rightpanel{padding:17px}}@media(max-width:1080px){.layout{grid-template-columns:1fr}.rightpanel{display:grid;grid-template-columns:1fr 1fr;gap:0 20px}.rightpanel .sectionhead,.rightpanel .panel-intro,.rightpanel .smallnote{grid-column:1/-1}.projecticon{display:block}.job h3{font-size:calc(19px * var(--font-scale))}.datebar>span{display:none}.stat{padding:18px 14px}.stat-symbol{right:12px}.stat-label{font-size:calc(9px * var(--font-scale))}.stat small{font-size:calc(8px * var(--font-scale))}}@media(max-width:750px){.sidebar{position:static;width:auto;display:block;padding:18px 18px 12px}.brand{font-size:calc(18px * var(--font-scale));padding:0}.brand-icon{width:32px;height:33px;border-radius:9px}.brand-icon .icon{width:20px;height:20px}.brand-small{font-size:calc(9px * var(--font-scale))}.workspace,.side-note,.profile{display:none}.sidebar nav{display:flex;gap:5px;flex-wrap:wrap;margin-top:16px}.nav{flex:1;width:auto;font-size:calc(10px * var(--font-scale));justify-content:center;padding:10px 7px;margin:0;gap:7px;border-radius:8px}.nav .icon{width:15px;height:15px}main{margin:0}.topbar{height:50px;padding:0 18px;font-size:calc(9px * var(--font-scale))}.topactions{gap:8px}.preview{font-size:calc(7px * var(--font-scale));padding:6px 9px}#staffsignin{font-size:calc(10px * var(--font-scale))}.content{padding:25px 18px}.heading{align-items:flex-start;margin-bottom:23px;gap:12px}.eyebrow{font-size:calc(8px * var(--font-scale));letter-spacing:1.2px}h1{font-size:calc(27px * var(--font-scale));letter-spacing:-1px}.heading p{font-size:calc(10px * var(--font-scale));line-height:1.7;max-width:240px}.heading .primary{font-size:calc(10px * var(--font-scale));padding:11px 12px;white-space:nowrap;margin-top:19px}.heading .primary .icon{width:14px;height:14px}.datebar{flex-wrap:wrap;gap:8px;margin-bottom:18px}.datecontrols{gap:3px}.datefield input{width:135px}.datecontrols button{padding:9px 7px}#share{font-size:calc(10px * var(--font-scale));padding:10px;margin-left:auto}#share .icon{width:14px;height:14px}#print{display:none}.daystrip{gap:3px;margin-bottom:18px}.daybutton{padding:11px 3px;border-radius:10px;gap:5px}.daybutton>span{font-size:calc(8px * var(--font-scale))}.daybutton strong{font-size:calc(17px * var(--font-scale))}.daybutton small{font-size:calc(7px * var(--font-scale))}.daybutton.istoday:after{right:6px;top:7px;width:3px;height:3px}.stats{grid-template-columns:1fr 1fr;gap:9px;margin-bottom:20px}.stat{padding:15px;border-radius:12px}.stat-label{font-size:calc(9px * var(--font-scale))}.stat strong{font-size:calc(26px * var(--font-scale));margin:11px 0 4px}.stat small{font-size:calc(8px * var(--font-scale))}.stat-symbol{width:24px;height:24px;right:13px;top:12px;border-radius:7px}.stat-symbol .icon{width:13px;height:13px}.toolbar{flex-direction:column;align-items:stretch;gap:12px;margin-bottom:23px}.tabs{align-self:flex-start}.tabs button{font-size:calc(10px * var(--font-scale));padding:9px 10px}.toolbar input{width:100%;font-size:calc(11px * var(--font-scale))}.layout{gap:22px}#jobs{grid-template-columns:1fr;gap:13px}.job{padding:20px;border-radius:14px}.job h3{font-size:calc(21px * var(--font-scale))}.jobtop{margin-bottom:20px}.code{font-size:calc(10px * var(--font-scale))}.badge{font-size:calc(8px * var(--font-scale))}.daytag{font-size:calc(9px * var(--font-scale))}.scope{font-size:calc(11px * var(--font-scale))}.projecticon{padding:12px}.jobmeta{margin:18px 0}.time{font-size:calc(12px * var(--font-scale))}.metanote{font-size:calc(9px * var(--font-scale))}.assignmentlabel{font-size:calc(8px * var(--font-scale))}.installerchip{font-size:calc(11px * var(--font-scale));padding:5px 8px 5px 5px}.installerchip .avatar{width:24px;height:24px;font-size:calc(8px * var(--font-scale))}.ready{font-size:calc(9px * var(--font-scale))}.notes{font-size:calc(10px * var(--font-scale))}.sectionhead h2{font-size:calc(13px * var(--font-scale))}.sectionhead>span{font-size:calc(9px * var(--font-scale))}.rightpanel{display:block;padding:22px}.person{padding:14px 0}.person strong{font-size:calc(12px * var(--font-scale))}.person p{font-size:calc(10px * var(--font-scale))}.state{font-size:calc(9px * var(--font-scale))}.teamgrid{grid-template-columns:1fr}footer{font-size:calc(8px * var(--font-scale));line-height:1.8;margin-top:27px}.formgrid{gap:13px}.modalhead h2{font-size:calc(20px * var(--font-scale))}dialog{padding:23px}.modalactions button{font-size:calc(11px * var(--font-scale));padding:10px}.installeractions select{width:120px}.deleteinstaller{padding:10px;font-size:calc(10px * var(--font-scale))}}@media(max-width:400px){.heading{flex-direction:column;gap:13px}.heading .primary{margin:0;width:100%}.heading p{max-width:none}.datecontrols #today{padding:9px 7px}.datefield input{width:125px}#share{padding:9px 8px;font-size:calc(9px * var(--font-scale));gap:5px}.formgrid{grid-template-columns:1fr}.full{grid-column:auto}}@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}@media print{.sidebar,.topbar,.heading>button,.toolbar,.datecontrols button,#share,#print,.daystrip,footer{display:none}main{margin:0}.content{padding:10px}.layout{grid-template-columns:1fr}#jobs{grid-template-columns:1fr 1fr}.job,.rightpanel{break-inside:avoid;box-shadow:none}.stats{grid-template-columns:repeat(4,1fr)}body{background:#fff}.heading p{color:#777}}

.installername{min-width:0;flex:1;display:flex;align-items:center;gap:10px}.editinstaller{padding:4px 7px;font-size:calc(9px * var(--font-scale));background:#f7f8fb;color:#7a87a0;border:0}.renameinput{font-size:calc(11px * var(--font-scale));max-width:200px}.installername:has(.renameinput){flex-wrap:wrap}.renameactions{display:flex;gap:5px}.renameactions button{font-size:calc(9px * var(--font-scale));padding:7px 9px}.saverename{background:#fff1e9;color:#d57952}.teamrow:has(.renameinput){align-items:flex-start}.installername strong{overflow-wrap:anywhere}@media(max-width:500px){.teamrow{flex-wrap:wrap}.installername{min-width:130px}.installeractions select{width:105px}}

.job{background:var(--job-bg,#fff)}.slotbadge{background:#fff;color:#66738c;border:1px solid #dce3ef;border-radius:5px;padding:3px 5px;font-size:calc(9px * var(--font-scale));margin-left:4px;font-weight:650}.slothelp{font-size:calc(10px * var(--font-scale));color:#8b97a9;line-height:1.7;margin:0 0 14px}#installerchoices{display:grid;grid-template-columns:1fr 1fr;gap:9px}.installerchoice{display:flex;justify-content:space-between;align-items:center;gap:8px;border:1px solid #e8edf5;border-radius:9px;padding:10px;background:#fafbfd;min-height:55px}.installerchoice .check{min-width:0}.installerchoice .check span{overflow-wrap:anywhere}.slotselect{width:90px;min-height:32px;padding:6px;font-size:calc(10px * var(--font-scale));flex-shrink:0}@media(max-width:500px){#installerchoices{grid-template-columns:1fr}.slotselect{width:110px}}

.dateactions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:12px}.dateactions button{padding:7px 10px;font-size:calc(12px * var(--font-scale))}.dateactions span{margin-left:auto;font-size:calc(12px * var(--font-scale));color:#718096}.datechoices{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;max-height:270px;overflow:auto;padding:2px}.datechoice{display:flex;align-items:center;gap:8px;border:1px solid #e0e6ef;border-radius:10px;padding:10px;cursor:pointer;background:#fff}.datechoice input,.colourchoice input{width:16px;height:16px;accent-color:#eb713b;margin:0;flex-shrink:0}.datechoice b{font-size:calc(13px * var(--font-scale));color:#334155}.datechoice small{display:block;font-size:calc(11px * var(--font-scale));color:#718096;margin-top:3px}.datechoice:has(input:checked){border-color:#eb713b;background:#fff3ec}.colourchoices{display:flex;flex-wrap:wrap;gap:8px}.colourchoice{display:flex;align-items:center;gap:7px;border:1px solid #dce3ef;border-radius:10px;padding:10px 12px;cursor:pointer;background:var(--swatch);color:#334155;font-size:calc(13px * var(--font-scale))}.colourchoice:has(input:checked){border-color:#d96028;box-shadow:0 0 0 2px #eb713b35;font-weight:700}.colourswatch{width:20px;height:20px;border-radius:50%;background:var(--swatch);border:1px solid #0002}.datechoice:focus-within,.colourchoice:focus-within{outline:2px solid #eb713b;outline-offset:2px}@media(max-width:600px){.datechoices{grid-template-columns:repeat(2,minmax(0,1fr))}.colourchoice{flex:1 0 27%;padding:10px}}

.dailyassignments{display:grid;gap:9px;max-height:400px;overflow:auto;padding:2px}.dailyassignment{border:1px solid #e0e6ef;border-radius:12px;background:#fff;overflow:hidden}.dailyassignment summary{display:list-item;cursor:pointer;padding:13px 15px;font-size:calc(13px * var(--font-scale));color:#334155;font-weight:650}.dailyassignment summary small{float:right;font-weight:500;color:#718096}.dailyassignment[open] summary{background:#fff3ec;border-bottom:1px solid #f5e0d4}.dayinstallerchoices{padding:6px 12px}.dayinstallerchoices select{width:105px;margin-left:auto;padding:8px;font-size:calc(12px * var(--font-scale))}.dayinstallerchoices .installerchoice{margin:5px 0}

.unavailableinstaller{background:#f4f5f7;border-color:#e8eaef}.unavailableinstaller .check{color:#a3aab6}.availabilitynote{display:block;font-size:calc(10px * var(--font-scale));font-weight:400;line-height:1.5;margin-top:4px;color:#7b8798}.unavailableinstaller .availabilitynote{color:#929baa}.unavailableinstaller input:disabled{cursor:not-allowed;opacity:.55}.unavailableinstaller select{color:#7c8798}.dayinstallerchoices .check{flex:1}.dayinstallerchoices select{flex-shrink:0;width:145px}.dayinstallerchoices option:disabled{color:#a3aab6}@media(max-width:500px){.dayinstallerchoices select{width:125px;font-size:calc(11px * var(--font-scale))}}

.codefeedback{font-size:calc(11px * var(--font-scale));line-height:1.6}.codeduplicate{color:#b43f29}

#pendingcount{font-size:calc(10px * var(--font-scale));background:#f5663f;color:#fff;border-radius:8px;padding:2px 5px;margin-left:auto}#pendingcount:empty{display:none}.requestgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.requestcard{padding:24px;border:1px solid #e4e8ef;border-radius:16px;background:var(--job-bg,#fff)}.requestcard h3{font-size:calc(22px * var(--font-scale));margin:0 0 12px}.requestmeta{font-size:calc(11px * var(--font-scale));color:#7d8798;line-height:1.7;overflow-wrap:anywhere}.requestdates{display:grid;gap:8px;margin:18px 0}.requestdates>div{display:flex;gap:15px;font-size:calc(12px * var(--font-scale));line-height:1.7}.requestdates b{white-space:nowrap}.requestdates span{overflow-wrap:anywhere}.requestactions{display:flex;gap:9px;margin-top:18px}.finalarrangement{background:#ffffffa6;padding:14px;border-radius:9px;font-size:calc(12px * var(--font-scale));line-height:1.9;margin-bottom:15px}.finalarrangement strong{display:block;color:#148968}@media(max-width:900px){.requestgrid{grid-template-columns:1fr}}

.teamtools{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}#markabsence{margin-bottom:16px;color:#c6532d;border-color:#f0d4c8}#absenceerror{color:#b43f29;font-size:calc(12px * var(--font-scale))}@media(max-width:600px){#team .sectionhead{align-items:flex-start;gap:12px;flex-wrap:wrap}.teamtools{justify-content:flex-start}}

/* Absences are scoped to the date being displayed. Keep the status readable. */
.person.person-away{background:#f3f4f6;border-radius:10px;padding-left:10px;padding-right:10px}
.person-away .personinfo strong,.installer-away{color:#858b96}
.person-away .personinfo p{color:#7a818d}
.person-away .avatar,.installer-away .avatar{background:#e1e4e9;color:#89919d}
.absence-status{display:inline-flex;align-items:center;white-space:nowrap;background:#e2e5e9;color:#596170;border:1px solid #d5d9df;border-radius:6px;padding:3px 7px;font-size:calc(11px * var(--font-scale));font-weight:650;line-height:1.4}
.installerchip.installer-away{background:#f0f1f3;border-color:#dfe2e7}
.installer-away .slotbadge{background:#e5e7eb;color:#818895}
.absence-cell{background:#f3f4f6}
.absence-cell .weekjob{background:#e8eaee!important;color:#858b96;border-color:#d9dde4}
.unavailableinstaller .availabilitynote{color:#616b7a;font-weight:600}

.textsizecontrol{display:flex;align-items:center;gap:8px;color:#697384;font-size:calc(12px * var(--font-scale));white-space:nowrap}
.textsizebuttons{display:flex;align-items:center;border:1px solid var(--line);border-radius:10px;background:#fff;overflow:hidden}
.textsizebuttons button{width:40px;min-height:40px;padding:8px;border:0;border-radius:0;flex-shrink:0}
.textsizebuttons .icon{width:18px;height:18px}
.textsizebuttons output{min-width:54px;text-align:center;color:var(--ink);font-variant-numeric:tabular-nums;font-weight:600;padding:0 4px}
.textsizebuttons button:disabled{opacity:.35;cursor:not-allowed}

.topbar{height:auto;min-height:76px;gap:12px;flex-wrap:wrap;padding-top:12px;padding-bottom:12px}
.topactions{flex-wrap:wrap}
@media(max-width:600px){.textsizecontrol{gap:5px}.textsizecontrol>span{display:none}.topbar>span{flex-basis:100%}.topactions{width:100%;justify-content:space-between}}
@media print{.textsizecontrol{display:none}}

/* Text scales throughout; structural widths and spacing remain fixed. */
.job,.rightpanel,.teamcard,.requestcard{min-width:0}
.jobtop,.joblabels{flex-wrap:wrap}
.projecttitle>div{min-width:0;flex:1}
.job .scope,.job .metanote,.job .notes span,.person p,.requestdates,.finalarrangement{overflow-wrap:anywhere}
.installerchip{max-width:100%;flex-wrap:wrap;overflow-wrap:anywhere}
.person{flex-wrap:wrap}
.person .personinfo{flex-basis:100px}
.time{flex-wrap:wrap}
.weekscroll table{table-layout:fixed}
.weekjob{overflow-wrap:anywhere;white-space:normal}
.requestdates>div{flex-wrap:wrap}

.sidebar{overflow-y:auto}
.nav>span:last-child,.brand>span:last-child,.profile>div,.heading>div,.stat,.daybutton,.formgrid>label{min-width:0;overflow-wrap:anywhere}
.nav{white-space:normal;text-align:left}
.heading h1,.heading p,.stat-label,.stat small,.daybutton small,.sectionhead h2,footer{overflow-wrap:anywhere}
.daybutton{min-width:0;padding-left:4px;padding-right:4px}
.datebar,.datecontrols,.sectionhead,.tabs,footer{flex-wrap:wrap}
.datecontrols input{max-width:100%}
.formgrid>*{min-width:0}
input,select,textarea{min-width:0;max-width:100%}
.modalactions,.installeractions,.renameactions,.shareactions{flex-wrap:wrap}

/* Desktop sidebar becomes the mobile top navigation; freeze both headers. */
.sidebar,.topbar,.heading{--font-scale:1}
.sidebar,.heading{font-size:calc(14px * var(--font-scale))}
.sidebar .nav>span:last-child{overflow-wrap:normal;word-break:normal}

#language{font-size:calc(12px * var(--font-scale));padding:8px 10px;min-height:40px;white-space:nowrap}
:root:lang(zh-Hans){font-family:Inter,"Noto Sans SC","Microsoft YaHei",system-ui,sans-serif}

.addressfields{display:grid;grid-template-columns:1fr;gap:12px;padding:14px;background:#f7f8fb;border:1px solid var(--line);border-radius:10px}
.addressfields small{display:block;margin-top:6px;line-height:1.6;color:var(--muted)}
.projectaddress{margin-top:14px;font-size:calc(11px * var(--font-scale));line-height:1.7;color:#68758a;overflow-wrap:anywhere}
.projectaddress p{margin:0 0 7px;white-space:pre-line}
.projectaddress a{display:inline-flex;align-items:center;gap:5px;color:#d75633;font-weight:600;text-decoration:none;padding:4px 0}
.projectaddress a:hover{text-decoration:underline}

/* Keep words horizontal and give schedule cards room at larger text sizes. */
.stats{grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr))}
#jobs{grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr))}
.stat-label{display:block;padding-right:32px;line-height:1.5}
.stat,.stat-label,.stat small,.job h3,.job .scope,.job .metanote,.job .notes span,.person p,.personinfo strong,.installername strong,.installerchoice .check span,.installerchip,.weekjob,.sectionhead h2{writing-mode:horizontal-tb;word-break:normal;overflow-wrap:normal}
.installertext{display:inline-block;white-space:normal;word-break:normal;overflow-wrap:normal}
.installerchip{gap:6px}.installerchip .slotbadge{white-space:nowrap;margin-left:0}
.person .personinfo{flex-basis:150px}
.weekscroll table{min-width:1400px}.weekjob{text-align:left;line-height:1.6}
.daystrip{overflow-x:auto;grid-template-columns:repeat(7,minmax(65px,1fr))}.daybutton small{white-space:nowrap}
.monthscroll{overflow-x:auto;border:1px solid var(--line);border-radius:14px;background:#fff}
.monthgrid{display:grid;grid-template-columns:repeat(7,minmax(180px,1fr));min-width:1260px}
.monthweekday{padding:14px;font-size:calc(12px * var(--font-scale));font-weight:650;background:#f0f3f8;border-bottom:1px solid var(--line)}
.monthday{min-height:170px;padding:10px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}
.outside-month{background:#f7f8fb}.outside-month .monthdate{color:#a1aab8}.monthtoday{background:#fff8f3}
.monthdate{padding:7px 10px;font-size:calc(12px * var(--font-scale));margin-bottom:8px;border:0;background:transparent;font-weight:650}
.monthdate.selected{background:var(--orange);color:white}
.monthjob{display:flex;align-items:stretch;flex-direction:column;gap:5px;width:100%;padding:10px;margin-bottom:8px;border:1px solid #dce2ec;border-radius:9px;text-align:left;line-height:1.5;font-size:calc(11px * var(--font-scale));writing-mode:horizontal-tb;word-break:normal;overflow-wrap:normal}
.monthjob strong{overflow-wrap:anywhere}.monthassignments{border-top:1px solid #0001;margin-top:3px;padding-top:6px}.monthassignments b{white-space:nowrap;font-size:calc(10px * var(--font-scale));font-weight:600}.monthassignments em{font-style:normal}
@media(max-width:900px){.sidebar nav{display:flex;flex-wrap:wrap;gap:5px}.sidebar .nav{width:auto;flex:0 0 auto;max-width:100%;white-space:nowrap}.sidebar .nav>span:last-child{white-space:nowrap}}
@media print{.monthgrid{min-width:0;grid-template-columns:repeat(7,minmax(0,1fr))}.monthscroll{overflow:visible}.monthday{padding:4px}.monthjob{font-size:calc(8px * var(--font-scale));padding:4px}.monthweekday{padding:5px}.monthdate{padding:3px}.stats{grid-template-columns:repeat(2,1fr)}}

.holidaycontrols{display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin:0 0 18px;font-size:calc(11px * var(--font-scale));color:#536176}
.holidaycontrols label{display:flex;align-items:center;gap:7px;cursor:pointer}.holidaycontrols input{width:17px;height:17px;margin:0;accent-color:var(--orange)}
.holidaycontrols>small{flex-basis:100%;color:#758196;font-size:calc(10px * var(--font-scale))}#daynotice{display:flex;flex-wrap:wrap;gap:6px}
.calendarlegend{display:inline-flex;align-items:center;gap:5px}.calendarlegend:before{content:'';width:12px;height:12px;border-radius:3px;border:1px solid #0001}.sundaylegend:before{background:#e5efff}.holidaylegend:before{background:#ffedbe}
.monthday.calendar-sunday,.daybutton.calendar-sunday,.weekscroll .calendar-sunday,.datechoice.calendar-sunday{background:#e5efff}
.monthday.calendar-holiday,.daybutton.calendar-holiday,.weekscroll .calendar-holiday,.datechoice.calendar-holiday{background:#ffedbe}
.calendar-holiday.calendar-sunday{box-shadow:inset 4px 0 #7098dd}
.daybutton.chosen{border:2px solid var(--orange)}.monthtoday{outline:2px solid var(--orange);outline-offset:-2px}
.calendarlabel{display:block;white-space:normal;word-break:normal;overflow-wrap:normal;line-height:1.5;font-size:calc(10px * var(--font-scale));font-weight:500;margin:4px 0 8px;color:#76561d}
.daybutton .calendarlabel{font-size:calc(9px * var(--font-scale));white-space:normal;margin:0;color:#76561d}.calendar-sunday:not(.calendar-holiday) .calendarlabel{color:#315d99}
.holidaynotice{background:#fff5d9;border:1px solid #ead19a;border-radius:10px;padding:14px;line-height:1.6;font-size:calc(12px * var(--font-scale));color:#76561d}.holidaynotice p{margin:6px 0}.holidaynotice ul{margin:6px 0;padding-left:20px}
@media print{.holidaycontrols label{display:none}.monthday.calendar-sunday,.monthday.calendar-holiday{-webkit-print-color-adjust:exact;print-color-adjust:exact}}

/* Weekly cards use normal text flow so line breaks create horizontal rows. */
.weekscroll table{min-width:1640px}
.weekjob{display:block;white-space:normal;writing-mode:horizontal-tb;word-break:normal;overflow-wrap:normal;line-height:1.65;padding:12px;text-align:left}
.weekjob>span:first-child,.weekjob>span:nth-of-type(2){white-space:nowrap}
.weekscroll th,.weekscroll td{padding:12px}

.teamtype{display:block;margin-top:4px;color:#728096;font-size:calc(10px * var(--font-scale))}.capacitynotice{white-space:pre-line;background:#fff0e9;color:#a54127;padding:14px;border:1px solid #f3c6b5;border-radius:10px;line-height:1.7}.installeractions{flex-wrap:wrap}.teamrow .installeractions select{width:120px}

.teamrole{white-space:nowrap;padding:3px 6px;border-radius:5px;background:#edf0f5;color:#68758a;font-size:calc(10px * var(--font-scale))}.installerchoice{flex-wrap:wrap}.installerchoice .check{flex:1 1 120px}

/* Monthly list keeps assignments readable without a wide calendar grid. */
.monthviewhead{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin:20px 0}.monthviewhead h2{margin:0;font-size:calc(20px * var(--font-scale))}.monthviewhead p{margin:7px 0 0;color:#718096;font-size:calc(12px * var(--font-scale))}
.monthviewtoggle{display:flex;padding:4px;border:1px solid var(--line);border-radius:12px;background:white;gap:4px}.monthviewtoggle button{border:0;background:transparent;font-size:calc(12px * var(--font-scale));padding:9px 14px}.monthviewtoggle button[aria-pressed="true"]{background:#fff0e7;color:#b94317;font-weight:650}
.monthlist{display:grid;gap:14px;min-width:0}.monthlistday{display:grid;grid-template-columns:145px minmax(0,1fr);gap:18px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:18px;min-width:0}.monthlistday.calendar-sunday{background:#e5efff}.monthlistday.calendar-holiday{background:#ffedbe}
.monthlistdate{min-width:0}.monthlistdate .monthdate{display:flex;align-items:center;gap:12px;text-align:left;width:100%;padding:8px;margin:0;white-space:normal}.monthlistdate strong{font-size:calc(26px * var(--font-scale));line-height:1.1}.monthlistdate .monthdate span{font-size:calc(12px * var(--font-scale));line-height:1.5}.monthlistdate .calendarlabel{margin:8px}
.monthlistprojects{display:grid;gap:10px;min-width:0}.monthlistjob{display:grid;grid-template-columns:minmax(0,1.2fr) auto minmax(0,.6fr) minmax(0,1fr);align-items:start;gap:18px;padding:18px;border:1px solid #0001;border-radius:11px;min-width:0;writing-mode:horizontal-tb;word-break:normal;overflow-wrap:break-word}.monthlistjob[role="button"]{cursor:pointer}.monthlistjob[role="button"]:hover{border-color:#ed8357}.monthlistjob:focus-visible,.monthviewtoggle button:focus-visible{outline:2px solid var(--orange);outline-offset:3px}
.monthlistproject,.monthlistteam{min-width:0}.monthlistlabels{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.monthlistproject h3{font-size:calc(15px * var(--font-scale));margin:10px 0 5px;line-height:1.5}.monthlistproject p{font-size:calc(12px * var(--font-scale));margin:0;color:#637187;line-height:1.6}.monthlisttime{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:calc(12px * var(--font-scale));line-height:1.6}.monthlisttime span{white-space:nowrap}.monthliststatus .badge{white-space:normal}.monthlistteam .assignees{margin-top:10px;display:flex;flex-wrap:wrap;gap:7px}.monthlistteam .installerchip{max-width:100%;flex-wrap:wrap}.monthlistempty{margin:12px 8px;color:#718096;font-size:calc(12px * var(--font-scale));line-height:1.6}
@media(max-width:1200px){.monthlistjob{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.monthlistproject{grid-row:span 2}.monthlistteam{grid-column:1/-1}}
@media(max-width:600px){.monthlistday{grid-template-columns:minmax(0,1fr);gap:10px;padding:12px}.monthlistdate{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.monthlistdate .monthdate{width:auto;gap:10px}.monthlistdate .calendarlabel{margin:4px}.monthlistjob{padding:14px;gap:12px}.monthlistproject{grid-column:1/-1;grid-row:auto}.monthliststatus{text-align:right}}
@media print{.monthviewtoggle{display:none}.monthlistday{break-inside:avoid;-webkit-print-color-adjust:exact;print-color-adjust:exact}.monthlistjob{break-inside:avoid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr)}.monthlistteam{grid-column:1/-1}}

.absence-date-list{display:grid;gap:8px;margin-top:14px;max-height:48vh;overflow:auto;padding:2px}.absence-date-row{display:grid;grid-template-columns:minmax(0,1fr) 110px 125px;align-items:center;gap:12px;padding:12px;border:1px solid #e3e6ed;border-radius:12px;background:#fff}.absence-date-row.marked{background:#f0f2f6;border-color:#cbd1dc}.absence-date-row .check{margin:0}.absence-date-row small{display:block;color:#687183;font-size:calc(12px * var(--font-scale))}.absence-date-row select{margin:0;min-width:0}.absence-row-state{font-size:calc(13px * var(--font-scale));color:#687183;overflow-wrap:normal;word-break:normal}.absence-summary{padding:0 20px 20px}.absence-summary>strong{font-size:calc(13px * var(--font-scale));color:#687183}.absence-date-tags{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0;max-height:180px;overflow:auto}.absence-date-tags span{padding:6px 9px;border-radius:8px;background:#f0f2f6;font-size:calc(13px * var(--font-scale))}.absence-summary p{color:#687183;font-size:calc(13px * var(--font-scale))}.absence-summary button{margin-top:10px}@media(max-width:560px){.absence-date-row{grid-template-columns:minmax(0,1fr) 100px;gap:8px}.absence-row-state{grid-column:1/-1;padding-left:26px}.absence-date-row .check{min-width:0}.absence-date-row .check b{white-space:normal;word-break:normal}}

.day-absence-notice{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0;min-width:0}.day-absence-notice span{display:block;padding:6px 8px;border-radius:8px;background:#e7eaf0;color:#566174;font-size:calc(12px * var(--font-scale));white-space:normal;word-break:normal;overflow-wrap:normal;text-align:left}.monthlistdate .day-absence-notice,.monthday .day-absence-notice{display:grid}.day-away-count{color:#687183!important}.absence-date-row{grid-template-columns:minmax(0,1fr) minmax(140px,1fr) minmax(0,1fr)}@media(max-width:560px){.absence-date-row{grid-template-columns:minmax(0,1fr) minmax(125px,1fr)}}

.daily-work-capacity{padding:10px 14px;border:1px solid #f0c9a7;border-radius:8px;background:#fff4e9;color:#75451f;font-size:14px;font-weight:600;margin-bottom:12px}.work-capacity{color:#865225!important;font-weight:600}

.leave-summary-head,.leave-summary-person{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.leave-summary-head{margin-bottom:20px}.leave-summary-filters{display:flex;align-items:end;flex-wrap:wrap;gap:16px;background:#fff;border:1px solid #e3e6ed;border-radius:16px;padding:20px}.leave-summary-filters label{margin:0;flex:1 1 150px}.leave-summary-filters .check{align-self:center}.leave-summary-list{display:grid;gap:16px}.leave-summary-card{background:#fff;border:1px solid #e3e6ed;border-radius:16px;overflow:hidden}.leave-summary-person{padding:20px;background:#fafbfc;justify-content:flex-start}.leave-summary-person h3{margin:0;font-size:calc(17px * var(--font-scale));word-break:normal}.leave-summary-person small{color:#687183}.leave-summary-person button{margin-left:auto}.leave-summary-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:14px 20px;border-top:1px solid #eceef2}.leave-summary-row time{flex:1 1 170px;word-break:normal}.leave-summary-row button{font-size:calc(13px * var(--font-scale))}.clearleaveoptions{display:grid;gap:14px;border:1px solid #e3e6ed;border-radius:12px;padding:16px}.clearleaveoptions .check{margin:0}@media(max-width:560px){.leave-summary-head .teamtools{width:100%;flex-wrap:wrap}.leave-summary-person button{margin-left:0}.leave-summary-row{gap:10px}.leave-summary-row .badge{white-space:normal;word-break:normal}.leave-summary-filters{padding:16px}}

.leave-summary-tabs{display:flex;gap:8px;margin:18px 0;flex-wrap:wrap}.leave-summary-tabs button{padding:10px 18px;border:1px solid #d6ddd9;border-radius:8px;background:#fff;color:#42564a;font-weight:600}.leave-summary-tabs button.active{background:#fff0e3;border-color:#e8b88f;color:#824719}.leave-summary-tabs button:focus-visible{outline:2px solid #ad5920;outline-offset:3px}

.leave-summary-view{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}.leave-summary-view button{padding:9px 15px;border:1px solid #d6ddd9;border-radius:8px;background:#fff;color:#42564a;font-weight:600}.leave-summary-view button.active{background:#fff0e3;border-color:#e8b88f;color:#824719}.leave-summary-card-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,360px),1fr))}.leave-summary-table-wrap{background:#fff;border:1px solid #e3e6ed;border-radius:14px;overflow:hidden}.leave-summary-table{border-collapse:collapse;width:100%;font-size:calc(14px * var(--font-scale));table-layout:fixed}.leave-summary-table th{text-align:left;padding:14px 16px;background:#fafbfc;color:#657064;font-size:calc(13px * var(--font-scale))}.leave-summary-table td{padding:14px 16px;border-top:1px solid #eceef2;vertical-align:middle;overflow-wrap:anywhere}.leave-summary-table td strong,.leave-summary-table td small{display:block}.leave-summary-table td small{color:#687183;margin-top:4px}.leave-list-actions{display:flex;gap:8px;flex-wrap:wrap}.leave-list-actions button{font-size:calc(12px * var(--font-scale));padding:7px 10px}.leave-summary-view button:focus-visible{outline:2px solid #ad5920;outline-offset:3px}@media(max-width:700px){.leave-summary-table,.leave-summary-table tbody{display:block;width:100%}.leave-summary-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.leave-summary-table tr{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);padding:12px;border-top:1px solid #eceef2;gap:12px}.leave-summary-table tr:first-child{border-top:0}.leave-summary-table td{display:block;padding:0;border:0}.leave-summary-table td:before{content:attr(data-label);display:block;font-size:11px;color:#687183;margin-bottom:5px}.leave-summary-table td[data-label=Actions]{grid-column:1/-1}}

.staff-create-form{padding:20px;background:#f7f8fb;border:1px solid #e3e6ed;border-radius:16px;margin:20px 0}.staff-create-form h3{margin-top:0}.staff-password-actions{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin:10px 0 18px}.staff-password-actions .check{margin:0}.staff-create-form .check{margin:12px 0}.existing-staff-access{margin-top:20px}.existing-staff-access summary{cursor:pointer;font-weight:600}.member small{color:#687183}#staffcreateerror,#staffloginerror,#staffpassworderror{color:#ba3549}#staffloginform>.primary{width:100%}
.created-staff-credentials{background:#eef7f1;border:1px solid #b8d8c4;border-radius:12px;padding:16px;margin:16px 0}.created-staff-credentials p{overflow-wrap:anywhere}.created-staff-credentials button{margin:4px}

.member-actions{display:flex;gap:6px;flex-wrap:wrap;align-items:center;justify-content:flex-end}.member-actions select{width:auto;max-width:150px}.member{flex-wrap:wrap}

.request-payment{margin:16px 0;padding:16px;border:1px solid #ffffff;border-radius:12px;background:#ffffffb8}.request-payment-title{display:flex;justify-content:space-between;gap:12px;align-items:center}.request-payment-title b{color:#168167;font-size:calc(20px * var(--font-scale))}.request-payment dl{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:14px 0}.request-payment dt{font-size:calc(11px * var(--font-scale));color:#65758d}.request-payment dd{margin:4px 0;font-size:calc(14px * var(--font-scale));font-weight:600;overflow-wrap:normal;white-space:nowrap}.request-payment p{font-size:calc(10px * var(--font-scale));color:#65758d;margin-bottom:0}@media(max-width:600px){.request-payment dl{grid-template-columns:1fr}.request-payment dl>div{display:flex;justify-content:space-between;align-items:center;gap:12px}}

.request-approval-notice,.important-request-note{background:#fff7e6;border:1px solid #efd6a3;border-radius:12px;padding:16px;color:#765319}.request-approval-notice{margin:0 0 20px}.request-approval-notice p,.request-approval-notice li{font-size:calc(12px * var(--font-scale));line-height:1.7}.important-request-note strong{display:inline-block;margin-bottom:5px}

#supervisorchoices .installerchoice{flex-wrap:wrap;padding:12px 0;border-bottom:1px solid var(--line)}#supervisorchoices small{width:100%;color:#75849a}#supervisorchoices select{width:120px}#supervisorerror{color:#ba3549}

#supervisorleaveerror{color:#ba3549}#supervisortodayleave{margin-bottom:16px}

.job [data-today-assign]{margin-top:14px;width:100%;font-size:calc(12px * var(--font-scale))}

.dailychanges{border:1px solid #fed5bd;border-radius:16px;background:#fff7f1;padding:18px;margin:0 0 22px;font-size:calc(14px * var(--font-scale))}.dailychanges h2{font-size:inherit}.dailychanges summary{cursor:pointer}.dailychange{padding:12px 14px;margin:10px 0;background:white;border-radius:10px;border-left:3px solid #d7dce3;overflow-wrap:anywhere}.dailychange.unread{border-left-color:#fa683b}.dailychange ul{padding-left:20px}.dailychange li{margin:5px 0}.dailychanges .sectionhead{flex-wrap:wrap;gap:10px}@media print{.dailychanges{display:none}}
.pushreminder{display:flex;align-items:center;justify-content:space-between;gap:16px;background:#fff0e7;border:1px solid #ffd0b7;border-radius:14px;padding:16px 18px;margin:0 0 20px;font-size:calc(14px * var(--font-scale))}.pushreminder p{margin:5px 0 0;color:#65758d;font-size:calc(12px * var(--font-scale))}.pushreminder[hidden]{display:none}.pushreminder button{flex-shrink:0}.appsettings{padding:20px 0;border-top:1px solid #e7eaf0}.appsettings h3{margin-top:0;font-size:calc(18px * var(--font-scale))}.appsettings p{font-size:calc(13px * var(--font-scale));line-height:1.6}.pushactions{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:14px 0}.pushactions button{font-size:calc(13px * var(--font-scale))}#usersettingsdialog{width:min(600px,calc(100vw - 32px))}#pushmessage{color:#168167}#pushstatus{font-weight:600}@media(max-width:600px){.pushreminder{align-items:flex-start}.pushreminder button{padding:10px 14px}}@media print{.pushreminder{display:none}}

.pastassignment{background:#f0f1f4!important;color:#87909d;border-color:#dce0e6!important}.pastassignment .dayinstallerchoices{opacity:.6}.pastassignment input,.pastassignment select{cursor:not-allowed}.pastassignment .installerchoice{background:#f0f1f4}.pastassignment .availabilitynote{color:#87909d}

.removedassignmentnotice{font-size:calc(11px * var(--font-scale));color:#a76518;line-height:1.5;margin:8px 0 0;overflow-wrap:anywhere}.removedassignmentnotice span{font-weight:600}

.editorprojectnav{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0 16px;margin-bottom:12px;border-bottom:1px solid #e7eaf0}.editorprojectnav[hidden]{display:none}.editorprojectnav button{display:grid;place-items:center;padding:10px;min-width:42px;min-height:42px}.editorprojectnav span{font-size:calc(12px * var(--font-scale));color:#65758d}.editorprojectnav button:disabled{opacity:.35;cursor:not-allowed}

.assignmentboardtools{display:flex;justify-content:space-between;align-items:center;gap:14px;position:sticky;top:0;z-index:3;background:var(--bg);padding:12px 0 14px}.assignmentboardtools strong{font-size:calc(13px * var(--font-scale))}.assignmentboardtools p{font-size:calc(11px * var(--font-scale));color:var(--muted);margin:5px 0 0}.boardactions{display:flex;gap:8px;flex-shrink:0}.boardactions button{font-size:calc(12px * var(--font-scale))}.assignmentboardscroll{max-width:100%;overflow-x:auto;overscroll-behavior-x:contain;padding-bottom:16px;scrollbar-width:thin}.assignmentboardgrid{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(216px,1fr);gap:12px;min-width:100%;align-items:start}.assignmentboardproject{border:1px solid var(--line);border-radius:14px;overflow:hidden;background:#fff;min-width:216px}.assignmentboardproject header{padding:14px;background:var(--board-colour);min-height:132px;border-bottom:1px solid var(--line)}.boardprojecttop{display:flex;justify-content:space-between;align-items:center;gap:6px}.boardprojecttop strong{font-size:calc(13px * var(--font-scale))}.boardprojecttop .badge{font-size:calc(9px * var(--font-scale));padding:4px 6px}.assignmentboardproject h3{margin:9px 0 5px;font-size:calc(13px * var(--font-scale));line-height:1.4;overflow-wrap:anywhere}.assignmentboardproject header p,.assignmentboardproject header>span{font-size:calc(10px * var(--font-scale));margin:4px 0;color:#65758d}.boardpeople{padding:4px 10px}.boardperson{display:flex;align-items:center;gap:6px;min-height:54px;border-bottom:1px solid var(--line);padding:8px 0}.boardperson:last-child{border-bottom:0}.boardperson label{display:flex;align-items:center;gap:7px;flex:1;min-width:0;cursor:pointer}.boardperson input{accent-color:var(--orange);width:17px;height:17px;flex-shrink:0}.boardperson strong{display:block;font-size:calc(11px * var(--font-scale));line-height:1.35;overflow-wrap:anywhere}.boardperson small{display:block;font-size:calc(9px * var(--font-scale));color:#89919f;margin-top:3px}.boardperson select{width:76px;min-height:34px;padding:5px 3px;border:1px solid var(--line);border-radius:7px;background:#fff;font-size:calc(10px * var(--font-scale));flex-shrink:0}.boardunavailable label{opacity:.45}.boardmessage{padding:12px 14px;background:#fff4e5;color:#885b1c;border-radius:10px;font-size:calc(12px * var(--font-scale))}@media(max-width:1000px){.assignmentboardgrid{grid-auto-columns:minmax(208px,1fr)}.assignmentboardproject{min-width:208px}.assignmentboardtools{top:0}}@media(max-width:600px){.assignmentboardtools{flex-wrap:wrap;padding:10px 0;gap:8px}.boardactions{width:100%;justify-content:flex-end}.assignmentboardgrid{grid-auto-columns:minmax(216px,72vw);gap:10px}.assignmentboardproject header{min-height:112px;padding:12px}.boardperson{min-height:50px}.boardpeople{padding:3px 9px}}@media print{.assignmentboardtools,.boardmessage{display:none}.assignmentboardscroll{overflow:visible}.assignmentboardgrid{grid-auto-flow:row;grid-template-columns:repeat(3,minmax(0,1fr))}}

#jobform fieldset[hidden],#jobform #assignlaterhint[hidden]{display:none}.awaitingassignment{display:block;color:#a76518;font-size:calc(10px * var(--font-scale));margin-top:7px;font-weight:600}#assignlaterhint{padding:12px 14px;background:#fff0e7;border-radius:10px;margin:0;font-size:calc(12px * var(--font-scale))}

/* Calendar quick creation: touch devices retain a visible, generous target. */
.monthday{position:relative}.monthday-creatable{cursor:pointer}.monthday-creatable .monthdate{margin-right:46px}.monthadd{position:absolute;top:8px;right:8px;width:44px;height:44px;padding:10px;display:flex;align-items:center;justify-content:center;border:1px solid #ffd0bd;border-radius:10px;background:#fff4ee;color:#c94d28;opacity:0;transition:opacity .15s,background .15s}.monthadd .icon{width:20px;height:20px}.monthday:hover .monthadd,.monthday:focus-within .monthadd,.monthadd:focus-visible{opacity:1}.monthadd:hover{background:#ffe2d2}.monthadd:focus-visible{outline:2px solid var(--orange);outline-offset:2px}
@media(max-width:1366px),(any-pointer:coarse),(hover:none){.monthadd{opacity:1}}
@media print{.monthadd{display:none}.monthday-creatable{cursor:default}}

.monthday-actions .monthdate{min-height:44px;margin-right:46px}.monthday-actions.monthday-hasboard.monthday-creatable .monthdate{margin-right:96px}.monthboard-with-add{right:58px}.monthboard{color:#53627c;background:#f3f5fa;border-color:#dce2ec}.monthboard:hover{background:#e4eaf4}
@media print{.monthday-actions .monthdate,.monthday-actions.monthday-hasboard.monthday-creatable .monthdate{min-height:0;margin-right:0}}

.monthlistactions{display:flex;gap:6px;margin:10px 8px}.monthlistactions .monthadd{position:static;flex-shrink:0}.monthlistday:hover .monthadd,.monthlistday:focus-within .monthadd{opacity:1}
@media(max-width:600px){.monthlistactions{margin:0 0 0 auto}.monthlistdate .day-absence-notice{flex-basis:100%}}
@media print{.monthlistactions{display:none}}

.sitereadinessreminders{border:1px solid #f1d19e;border-radius:14px;background:#fff8ec;padding:16px;margin:0 0 20px}.sitereadinessreminders[hidden]{display:none}.sitereadinessreminders .sectionhead{gap:12px;flex-wrap:wrap;margin-bottom:12px}.sitereadinessreminders h2{font-size:calc(15px * var(--font-scale))}.sitereadinessreminders .sectionhead>span{font-size:calc(11px * var(--font-scale));color:#926725}.sitereadinesslist{display:grid;gap:8px}.sitereadinessitem{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:12px;border:1px solid #f0dfc7;border-radius:10px;background:#fff;color:#976523}.sitereadinessitem>span{flex:1;min-width:0}.sitereadinessitem strong,.sitereadinessitem small,.sitereadinessitem time{display:block;overflow-wrap:anywhere;line-height:1.5}.sitereadinessitem strong{font-size:calc(13px * var(--font-scale));color:var(--ink)}.sitereadinessitem small,.sitereadinessitem time{font-size:calc(11px * var(--font-scale));margin-top:3px}.sitereadinessitem>.icon{flex-shrink:0}.sitereadinessitem:hover{background:#fff4df}.sitereadinessitem:focus-visible{outline:2px solid var(--orange);outline-offset:2px}@media print{.sitereadinessreminders{display:none}}

.boardprojecttop{align-items:flex-start}.boardprojectlinks{display:flex;flex-direction:column;align-items:flex-end;gap:8px;flex-shrink:0}.boardopeninstallation{display:flex;align-items:center;justify-content:center;gap:5px;min-height:36px;padding:6px 8px;font-size:calc(10px * var(--font-scale));border:1px solid #dce2ec;border-radius:8px;background:#ffffffc9;white-space:nowrap}.boardopeninstallation .icon{width:14px;height:14px}.boardopeninstallation:hover{background:#fff}.boardopeninstallation:disabled{opacity:.5}.assignmentboardproject header>.removedassignmentnotice{display:block;margin-top:5px}@media(any-pointer:coarse){.boardopeninstallation{min-height:44px}}@media print{.boardopeninstallation{display:none}}

#editorprojectposition{white-space:pre-line;text-align:center;line-height:1.5;min-width:0;flex:1}.editorprojectnav button{flex-shrink:0}.boardprojectlinks{align-items:flex-start;margin-top:10px}.boardprojecttop>strong{min-width:0;overflow-wrap:anywhere}.boardprojecttop>.badge{flex-shrink:0}.boardopeninstallation{max-width:100%;white-space:normal;text-align:left}

.boardopeninstallation{font-size:calc(9px * var(--font-scale));padding:5px 7px;min-height:30px;gap:4px;border-radius:7px}.boardopeninstallation .icon{width:12px;height:12px}.boardprojectlinks{margin-top:7px}@media(any-pointer:coarse){.boardopeninstallation{min-height:36px}}

.datecontrols{flex-wrap:wrap;max-width:100%}#nextweek{white-space:nowrap}

/* Compact top navigation keeps the brand visible and labels accessible. */
@media(max-width:1100px),(max-width:1366px) and (pointer:coarse){
 .sidebar{position:static;width:auto;display:block;padding:18px 18px 12px}.sidebar .workspace,.sidebar .side-note,.sidebar .profile{display:none}main{margin-left:0}.sidebar .brand{padding:0}.sidebar nav{display:flex;flex-wrap:nowrap;align-items:center;gap:6px;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:thin;margin-top:18px;padding:2px 0 7px}.sidebar .nav{position:relative;display:flex;flex:0 0 52px;width:52px;height:52px;min-height:52px;align-items:center;justify-content:center;padding:12px;margin:0;border-radius:12px;gap:0;font-size:0}.sidebar .nav[hidden]{display:none}.sidebar .nav .icon{width:28px;height:28px;flex-shrink:0}.sidebar .nav>span:not([data-icon]){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sidebar #pendingcount{position:absolute;right:1px;top:0;min-width:17px;padding:2px 4px;font-size:10px;line-height:1.2;border-radius:20px}.sidebar .nav:focus-visible{outline:2px solid #fff;outline-offset:-3px}
}

.cutofflocked{filter:grayscale(1);opacity:.6;cursor:default}.todayclosed #board:before{content:"Today’s installations are read-only after 6 p.m. Malaysia time.";display:block;margin-bottom:12px;color:var(--muted);font-size:calc(12px * var(--font-scale))}html[lang="zh-Hans"] .todayclosed #board:before{content:"今天的安装安排在下午 6 点后只可查看，不能修改。"}

.historyfilters{display:flex;gap:12px;flex-wrap:wrap}.historyfilters label{display:grid;gap:7px;font-size:calc(12px * var(--font-scale))}.historyfilters input,.historyfilters select{min-height:44px;padding:8px;border:1px solid var(--line);border-radius:8px;background:#fff;max-width:100%}.historyhelp{font-size:calc(12px * var(--font-scale));line-height:1.6;color:var(--muted)}.historycards{display:grid;gap:12px}.historycard{border:1px solid var(--line);border-radius:12px;background:#fff;padding:16px}.historycard summary{display:flex;justify-content:space-between;gap:12px;cursor:pointer;font-size:calc(13px * var(--font-scale));font-weight:600}.historycard summary>span:last-child{color:var(--muted);font-size:calc(11px * var(--font-scale))}.historyproject{padding:14px 0;border-top:1px solid var(--line);margin-top:12px;font-size:calc(12px * var(--font-scale))}.historyproject>div:first-child{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}.historydates{display:flex;flex-wrap:wrap;gap:7px;margin-top:12px}.historydates button{font-size:calc(11px * var(--font-scale));padding:8px;min-height:40px}@media(max-width:600px){.historyfilters label{flex:1;min-width:130px}.historycard summary{flex-wrap:wrap}}

#historyscheduledialog{width:min(900px,calc(100vw - 28px));max-height:calc(100dvh - 36px);overflow-y:auto}.historyschedulejobs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.historyschedulejobs .job{cursor:default;min-width:0}.historyschedulejobs .job:hover{transform:none}.historyschedulejobs .job h3{overflow-wrap:anywhere}#historyscheduletitle{font-size:calc(18px * var(--font-scale));line-height:1.5;overflow-wrap:anywhere}@media(max-width:750px){.historyschedulejobs{grid-template-columns:minmax(0,1fr)}#historyscheduledialog{padding:18px}.historyschedulejobs .job{padding:16px}}

#usergreeting{font-size:13px;line-height:1.4;color:var(--ink);max-width:220px;overflow-wrap:anywhere}#usergreeting[hidden]{display:none}#usergreetingname{font-weight:600}@media(max-width:750px){#usergreeting{font-size:12px;max-width:160px}}

/* Keep secondary card text legible on the pastel project colours. */
.job .scope,.job .metanote,.job .assignmentlabel,.job .daytag,.job .designer{color:#475569}.job .time,.job .installerchip,.job .slotbadge,.job .code{color:#334155}.job .scope,.job .metanote,.job .assignmentlabel{font-weight:500}.job .ready{color:#245b49}.job .ready .notready{color:#855000}.job .projecticon,.job .time>.icon{color:#526174}.job .jobbottom,.job .jobmeta,.job .ready{border-color:#33415520}.job .badge.done,.job .badge.progress{color:#146047}.job .badge.warning{color:#845000}.job .notes{color:#714514}.assignmentboardproject header p,.assignmentboardproject header>span,.monthlistjob .assignmentlabel,.monthlistjob .monthlisttime{color:#475569}

/* Installation sequence stays visible on every schedule surface. */
.boardprojectlabels{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.boardprojectlabels .daytag,.monthjob .daytag,.weekjob .daytag{display:inline-flex;white-space:nowrap;width:max-content;max-width:100%;color:#334155;background:#ffffffb3;font-weight:700;margin:3px 0;padding:3px 7px;border-radius:6px}.weekjob .daytag{margin-left:6px}.installationcreator{margin:0 0 18px;color:#475569}.installationcreator strong{color:#1f2937}

.readinessdetails>summary{display:flex;align-items:center;gap:12px;min-height:44px;cursor:pointer;list-style:none}.readinessdetails>summary::-webkit-details-marker{display:none}.readinesstitle{display:flex;align-items:center;gap:8px;flex:1;font-size:calc(15px * var(--font-scale));font-weight:700;color:var(--ink)}.readinesscount{display:inline-flex;align-items:center;justify-content:center;min-width:25px;height:25px;padding:0 6px;border-radius:20px;background:#f7dfb7;color:#714514;font-size:13px}.readinessperiod{color:#855000;font-size:calc(11px * var(--font-scale))}.readinesschevron{display:flex;flex-shrink:0;color:#855000}.readinessdetails[open] .readinesschevron{transform:rotate(90deg)}.readinessdetails[open] .sitereadinesslist{margin-top:12px}.readinessdetails>summary:focus-visible{outline:2px solid var(--orange);outline-offset:4px;border-radius:5px}@media(max-width:600px){.readinessdetails>summary{flex-wrap:wrap}.readinesstitle{flex-basis:calc(100% - 36px)}.readinessperiod{order:3;width:100%}}

.boardprojectdate{flex-basis:100%;font-size:calc(11px * var(--font-scale));font-weight:600;color:#334155;line-height:1.5;white-space:nowrap}

button.stat{text-align:left;font:inherit;cursor:pointer;width:100%;color:inherit}button.stat:hover{border-color:#fb7049;box-shadow:0 4px 18px #202b4010}button.stat:focus-visible{outline:3px solid var(--orange);outline-offset:3px}#statdetaildialog{width:min(850px,calc(100vw - 32px));max-height:90dvh;overflow:auto}#statdetailcontent{display:grid;gap:12px}.statinstaller{display:flex;align-items:flex-start;gap:12px;background:#f7f8fc;border:1px solid #e4e8ef;border-radius:12px;padding:16px}.statinstaller>div{min-width:0}.statinstaller h3{margin:0;color:#1f2937}.statinstaller p{margin:6px 0;color:#475569;overflow-wrap:anywhere}.statinstaller .avatar{flex-shrink:0}

.historypopupnav{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 16px}.historypopupnav button{min-width:48px;min-height:48px}.historypopupnav .icon{width:24px;height:24px}#historyremovaldialog{width:min(560px,calc(100vw - 32px));max-height:90dvh;overflow:auto}#historyremovaldialog .check{align-items:flex-start;margin:20px 0;line-height:1.5}

.statstatuscontrols{display:flex;align-items:flex-end;gap:10px;margin-top:14px;flex-wrap:wrap}.statstatuscontrols label{display:grid;gap:6px;color:#475569;flex:1;min-width:180px}.statstatuscontrols select{width:100%;min-height:44px;font:inherit;border:1px solid #dce2eb;background:#fff;color:#1f2937;border-radius:10px;padding:8px 12px}.statstatuscontrols button{min-height:44px}.statinstaller>div{flex:1}

/* Secondary installation options use identical, non-shrinking checkboxes. */
#jobform .installation-option{font-size:calc(10px * var(--font-scale));line-height:1.5;gap:10px;min-height:36px;align-items:center;cursor:pointer}
#jobform .installation-option input[type=checkbox]{flex:0 0 18px;width:18px;height:18px;min-width:18px;max-width:18px;min-height:18px;max-height:18px;padding:0;margin:0}
#jobform .installation-option>span{flex:1;min-width:0}
#jobform #demoinstallationnote[hidden]{display:none}

#jobform #unitaccessnotes[hidden]{display:none}
.unitaccess{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:12px 0;padding:10px 12px;border:1px solid #ffffff8c;border-radius:8px;background:#ffffff60;color:#475569;font-size:calc(11px * var(--font-scale));line-height:1.5}
.unitaccess strong{font-weight:600}
.unitaccess small{display:block;flex-basis:100%;font-size:calc(10px * var(--font-scale));white-space:pre-wrap;overflow-wrap:anywhere}

#accountsettingsshortcut{display:inline-flex;align-items:center;gap:6px;min-height:44px}#accountsettingsshortcut[hidden]{display:none}#accountsettingsidentity{overflow-wrap:anywhere}

/* Header controls occupy their own rows instead of competing for width. */
.topbar{display:grid;grid-template-columns:minmax(0,1fr);height:auto;gap:12px;padding-top:16px;padding-bottom:16px}
.topbar>span{min-width:0;overflow-wrap:anywhere}
.topactions{min-width:0;width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-start;gap:10px 12px}
.topactions>*,.textsizecontrol,.textsizebuttons{flex-shrink:0;max-width:100%}
.topactions>button{min-height:44px;white-space:normal;line-height:1.4}
#usergreeting{flex:0 1 220px;min-width:0;margin:0;line-height:1.5}
#accountsettingsshortcut{font-size:12px;padding:10px 12px}
@media(min-width:1500px){.topbar{grid-template-columns:minmax(150px,1fr) minmax(0,auto)}.topactions{justify-content:flex-end}}
@media(max-width:600px){.topbar{padding:14px 18px;gap:10px}.topactions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;align-items:center}.topactions>*{min-width:0;width:100%;margin:0}.textsizecontrol{justify-content:flex-end}.textsizebuttons{max-width:100%}#usergreeting{max-width:none;width:100%;grid-column:1/-1}#accountsettingsshortcut{grid-column:1/-1;justify-content:flex-start}.topactions>.preview{width:auto;justify-self:start;white-space:normal;overflow-wrap:anywhere}.textsizebuttons button{width:34px;min-width:34px}.textsizebuttons output{min-width:44px}}

@media screen and (min-width:1101px){.topbar{position:sticky;top:0;z-index:4;background:#fff;box-shadow:0 3px 12px #1c233208}}
@media screen and (min-width:1101px){.topbar{transition:transform .18s ease}.topbar.topbar-hidden{transform:translateY(-100%);pointer-events:none}.topbar:focus-within{transform:translateY(0);pointer-events:auto}}
@media(prefers-reduced-motion:reduce){.topbar{transition:none}}

.monthlistsite{display:none}
@media(max-width:600px){.monthlistjob{display:flex;flex-direction:column;gap:12px;cursor:pointer}.monthlistproject{display:flex;align-items:baseline;gap:8px;width:100%;min-width:0}.monthlistlabels{flex-wrap:nowrap;flex-shrink:0;gap:6px}.monthlistproject h3{margin:0;font-size:13px;min-width:0;overflow-wrap:anywhere}.monthlistproject>p,.monthlistproject>.jobaddress,.monthlisttime,.monthliststatus,.monthlistteam>.removedassignmentnotice{display:none}.monthlistteam{width:100%}.monthlistsite{display:flex;align-items:center;gap:6px;font-size:12px;color:#245b49}.monthlistteam .assignees{margin-top:6px}.monthlistlabels .code,.monthlistlabels .daytag{font-size:11px}.monthlistproject>div:not(.monthlistlabels){display:none}}
@media(max-width:600px){.monthlistproject{order:1}.monthlistteam{order:2}.monthlistsite{order:3}}

.mobilecalendarcell{display:none}.calendaravailability>div{display:flex;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}.calendaravailability span{display:flex;gap:6px;flex-wrap:wrap}.calendaravailability b{padding:5px 8px;border-radius:6px;background:#e1f5e9;color:#17613d;font-size:12px}.mobiledayactions{display:flex;gap:8px;flex-wrap:wrap;margin:18px 0}.mobiledayjobs{display:grid;gap:10px}.mobiledayjobs button{display:flex;flex-wrap:wrap;justify-content:flex-start;text-align:left;min-height:60px}.mobiledayjobs button>span:last-child{width:100%}#mobiledaydialog{width:min(600px,calc(100vw - 24px));max-height:85dvh;overflow:auto}
@media(max-width:600px){.monthscroll{overflow:visible;width:100%;min-width:0}.monthgrid{min-width:0;width:100%;grid-template-columns:repeat(7,minmax(0,1fr))}.monthweekday{padding:8px 0;font-size:10px;overflow:hidden}.monthday{min-width:0;min-height:98px;padding:3px;overflow:hidden}.monthday .monthdate,.monthday-actions .monthdate,.monthday-actions.monthday-hasboard.monthday-creatable .monthdate{margin:0;width:100%;padding:5px 0;min-height:32px;font-size:13px}.monthday>.monthadd,.monthday>.monthjob,.monthday>.calendarlabel,.monthday>.day-absence-notice{display:none}.mobilecalendarcell{display:flex;width:100%;min-height:56px;padding:3px 0;flex-direction:column;border:0;background:transparent;gap:5px}.calendarmarkers{display:flex;gap:2px;flex-wrap:wrap;justify-content:center}.calendarmarkers i{width:8px;height:14px;border-radius:3px;border:1px solid #0003}.calendarmarkers small{font-size:9px}.calendarfree{font-size:9px;line-height:1.3;color:#17613d;font-weight:600;white-space:normal}.calendarfull{color:#996039}.outside-month{opacity:.45}.monthtoday{box-shadow:inset 0 0 0 2px #f5663f}.monthdate.selected{background:#f5663f;color:#fff}}

.compactproject{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.compactinstallation .assignees{margin:14px 0}.compactinstallation .ready{margin-top:10px;padding-top:10px;justify-content:flex-start;gap:6px}.monthlistjob{display:flex;flex-direction:column;gap:12px;cursor:pointer}.monthlistproject{display:flex;align-items:baseline;gap:8px;width:100%;min-width:0}.monthlistproject h3{margin:0}.monthlistproject>p,.monthlistproject>.projectaddress,.monthlisttime,.monthliststatus,.monthlistteam>.removedassignmentnotice{display:none}.monthlistproject{order:1}.monthlistteam{order:2;width:100%}.monthlistsite{order:3;display:flex;align-items:center;gap:6px;font-size:12px;color:#245b49}.monthlistproject{grid-row:auto}.monthlistteam .assignees{margin-top:6px}

@media(max-width:750px){#stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}#stats .stat{display:block;min-width:0;width:100%;padding:16px 12px;text-align:left}#stats .stat-label{display:block;font-size:12px;line-height:1.5;padding-right:27px;min-height:36px}#stats .stat strong{display:block;font-size:30px;margin:10px 0 8px;line-height:1.1}#stats .stat small{display:block;font-size:11px;line-height:1.5}#stats .stat-symbol{right:10px;top:12px;width:24px;height:24px}}

.historyreporttoggle{display:flex;gap:8px;margin-bottom:16px}.historyreporttoggle button[aria-pressed="true"]{background:var(--orange);color:white;border-color:var(--orange)}.projectreportlocation{display:block;margin-top:5px;font-size:12px;font-weight:400;color:#657082}.historyfilters>input{min-height:44px;min-width:0;max-width:100%;padding:10px;border:1px solid var(--line);border-radius:8px}

.monthlistactions .monthadd{position:static;opacity:1;min-width:40px;width:40px;height:40px;padding:8px;margin:0}.monthlistactions{display:flex;align-items:center;gap:6px;flex-wrap:wrap}#dailydateactions{display:inline-flex;align-items:center}#week th .monthlistactions{justify-content:center;margin-top:8px}#week th .monthlistactions .monthadd{width:36px;height:36px;min-width:36px}#week th .monthlistactions .icon{width:18px;height:18px}

/* Keep native Safari form controls as comfortable as other browsers. */
#jobform input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]):not([type="color"]),#jobform select{height:48px;min-height:48px;box-sizing:border-box;padding:11px 12px;line-height:24px;border:1px solid #dce3ed;border-radius:9px;background-color:#fff;color:var(--ink);vertical-align:middle;min-width:0;max-width:100%}
#jobform select{-webkit-appearance:none;appearance:none;padding-right:36px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23657384' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;background-size:16px}
#jobform textarea{min-height:112px;box-sizing:border-box;padding:12px;line-height:1.5;border:1px solid #dce3ed;border-radius:9px;background:#fff}
#jobform input[type="date"]::-webkit-date-and-time-value,#jobform input[type="time"]::-webkit-date-and-time-value{text-align:left;min-height:24px}
@media(pointer:coarse),(max-width:1100px){#jobform input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),#jobform select,#jobform textarea{font-size:16px}}

.dayshare{width:40px;min-width:40px;height:40px;padding:8px}.dayshare .icon{width:18px;height:18px}.monthday>.dayshare{display:flex;margin:5px 0}.monthday .mobilecalendarcell{min-height:32px}@media(max-width:600px){.monthday>.dayshare{width:100%;min-width:0;height:28px;padding:4px;margin:0;position:relative;z-index:1;border:0;background:transparent}.monthday>.dayshare .icon{width:16px;height:16px}.monthgrid{touch-action:pan-y}.monthday{min-height:102px}}

.displaypreferences{display:flex;align-items:center;gap:12px;flex-wrap:nowrap}.displaypreferences>button{min-height:44px}
@media(max-width:1100px),(max-width:1366px) and (pointer:coarse){.sidebar{display:contents}.sidebar .brand{display:flex;padding:18px;background:#171d2a}.sidebar nav{position:sticky;top:0;z-index:6;margin:0;padding:8px 18px;background:#171d2a;box-shadow:0 3px 12px #0002}.displaypreferences{position:fixed;right:max(12px,env(safe-area-inset-right));bottom:calc(12px + env(safe-area-inset-bottom));z-index:7;width:auto;max-width:calc(100vw - 24px);display:flex;align-items:center;gap:8px;padding:8px;background:#fff;border:1px solid #dce3ed;border-radius:14px;box-shadow:0 4px 22px #17203325}.displaypreferences #language{width:auto;min-width:68px;min-height:44px;padding:8px 10px;font-size:13px}.displaypreferences .textsizecontrol{width:auto;min-width:0;gap:0}.displaypreferences .textsizecontrol>span{display:none}.displaypreferences .textsizebuttons button{width:36px;min-width:36px;min-height:44px}.displaypreferences .textsizebuttons output{min-width:46px;font-size:13px}.content{padding-bottom:100px}.topactions>.displaypreferences{width:auto;margin:0}.sidebar .profile{display:none}}
@media print{.displaypreferences{display:none}}

#accountsettingsshortcut{display:none!important}

/* Tablet and phone navigation stays accessible while the page scrolls. */
@media(max-width:1100px),(max-width:1366px) and (pointer:coarse){.sidebar{display:contents}.sidebar nav{position:sticky;top:0;z-index:6;display:flex;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;max-width:100vw;background:#171d2a}.sidebar .nav{flex:0 0 52px}}
@media(max-width:750px){.displaypreferences{flex-direction:column;align-items:stretch;gap:8px}.displaypreferences #language{width:100%;min-height:44px}.displaypreferences .textsizecontrol{justify-content:center}.displaypreferences .textsizebuttons{width:100%;justify-content:center}.content{padding-bottom:150px}}

@media(max-width:1366px) and (pointer:coarse){.topbar{position:static;transform:none!important}.sidebar nav{top:0}}

#displaypreferencestoggle{display:none}
@media(max-width:1100px),(max-width:1366px) and (pointer:coarse){.displaypreferences{display:flex;flex-direction:column;align-items:stretch;background:transparent;border:0;padding:0;box-shadow:none;gap:8px}.displaypreferences #displaypreferencestoggle{display:flex;align-self:flex-end;order:3;width:52px;height:52px;min-width:52px;min-height:52px;border-radius:50%;padding:14px;background:#171d2a;color:#fff;border:1px solid #30394c;box-shadow:0 4px 18px #17203330}.displaypreferences #displaypreferencestoggle .icon{width:24px;height:24px}.displaypreferences:not(.preferences-open) #language,.displaypreferences:not(.preferences-open) .textsizecontrol{display:none}.displaypreferences.preferences-open #language{order:1;background:#fff;box-shadow:0 3px 12px #17203320}.displaypreferences.preferences-open .textsizecontrol{order:2;background:#fff;border-radius:10px;box-shadow:0 3px 12px #17203320}.displaypreferences.preferences-open #displaypreferencestoggle{background:#f5663f;border-color:#f5663f}}

/* Installer assignments are controlled by slot dropdowns. */
.installerchoice>span:first-child{flex:1 1 120px;min-width:0;overflow-wrap:anywhere}.boardperson select{width:90px}

.boardperson option:disabled{color:#9ca3af;background:#f3f4f6}

.accountarea{position:relative;margin-top:0}.profile{width:100%;text-align:left;cursor:pointer;background:#242e40;border:1px solid #3c4961;border-radius:12px;padding:12px 10px;gap:9px;color:#fff;box-shadow:none}.profile:hover{background:#303d54;border-color:#7e8daa}.profileidentity{flex:1;min-width:0;display:block}.profileidentity strong{display:block;font-size:12px;overflow-wrap:anywhere}.profileidentity .muted{display:block}.profileidentity small{display:block;color:#c3cedf;font-size:10px;margin-top:5px}.profilechevron{font-size:18px;color:#c3cedf}.profilemenutitle{border-bottom:1px solid #e9ecf1;margin:0 3px 6px;padding:7px 5px 12px;overflow-wrap:anywhere}.profilemenutitle strong,.profilemenutitle small{display:block}.profilemenutitle small{color:#788396;font-size:11px;margin-top:5px}.profilemenu{position:absolute;bottom:calc(100% + 10px);left:0;width:260px;max-width:calc(100vw - 24px);padding:8px;background:#fff;color:var(--ink);border:1px solid #dfe5ee;border-radius:13px;box-shadow:0 10px 36px #0003;z-index:20}.profilemenu button{width:100%;justify-content:flex-start;border:0;background:transparent;border-radius:7px;padding:10px;font-size:12px}.profilemenu button:hover{background:#f1f4f8}.profilemenu [hidden]{display:none}.profilemenu button:focus-visible{outline:2px solid var(--orange)}
@media(max-width:1100px),(max-width:1366px) and (pointer:coarse){.accountarea{position:absolute;right:12px;top:8px;z-index:10;width:155px}.accountarea .profile{display:flex;margin:0;padding:6px 8px;min-height:50px}.profileidentity strong{font-size:10px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.accountarea .profile .avatar{width:26px;height:26px;font-size:9px}.profileidentity .muted{display:none}.profileidentity small{font-size:9px;margin-top:3px}.profilemenu{top:calc(100% + 8px);bottom:auto;left:auto;right:0}}

/* Desktop header: one aligned toolbar; account actions live in the profile menu. */
@media screen and (min-width:1101px) and (pointer:fine),screen and (min-width:1367px){
 .topbar{display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center;justify-content:space-between;gap:20px;height:76px;min-height:76px;padding:0 24px}
 .topbar>span{flex:1 1 140px;min-width:100px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.4}
 .topbar .slash{margin:0 8px}
 .topactions{display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center;justify-content:flex-end;width:auto;min-width:0;gap:14px;flex:0 1 auto}
 .topactions>.displaypreferences{position:static;display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center;gap:12px;width:auto;max-width:none;flex:0 0 auto;padding:0 16px 0 0;margin:0;border:0;border-right:1px solid var(--line);border-radius:0;box-shadow:none;background:transparent}
 .displaypreferences #language{display:inline-flex;align-items:center;justify-content:center;height:36px;min-height:36px;min-width:64px;padding:6px 10px;font-size:12px;white-space:nowrap}
 .displaypreferences .textsizecontrol{display:flex;flex-direction:row;align-items:center;gap:8px;white-space:nowrap;font-size:11px}
 .displaypreferences .textsizecontrol>span{display:inline}
 .displaypreferences .textsizebuttons{display:flex;align-items:center;gap:0;height:36px;max-width:none}
 .displaypreferences .textsizebuttons button{height:34px;min-height:34px;width:30px;min-width:30px;padding:6px}
 .displaypreferences .textsizebuttons output{display:flex;align-items:center;justify-content:center;min-width:42px;line-height:1;font-size:11px}
 .topactions #usergreeting{display:block;flex:0 1 180px;width:auto;min-width:0;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:normal;line-height:36px;font-size:12px;margin:0}
 .topactions #usergreeting[hidden]{display:none}
 .topactions #usergreetingname{white-space:nowrap}
 .topactions #rolebadge{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;height:30px;padding:0 10px;line-height:1;white-space:nowrap;letter-spacing:.5px;font-size:9px}
 .topactions #staffsignin{height:36px;min-height:36px;padding:6px 12px;white-space:nowrap;font-size:12px}
 .topactions #staffsignin[hidden]{display:none}
 .topactions #staffpassword,.topactions #staffsignout{display:none}
}

#accessdialog{width:min(1100px,calc(100vw - 32px));max-width:1100px}.staff-save-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:22px 0 10px}.staff-save-toolbar>span{flex:1;font-size:12px;color:var(--muted)}#saveallstaff[hidden]{display:none}.staff-account-scroll{overflow-x:auto;max-width:100%;margin-bottom:24px}.staff-account-table{border-collapse:collapse;width:100%;min-width:750px;text-align:left}.staff-account-table th{background:#f3f5f9;font-size:11px;font-weight:600;color:#657084;padding:12px}.staff-account-table td{border-bottom:1px solid var(--line);padding:12px;vertical-align:top;font-size:12px}.staff-account-table td:first-child{min-width:210px}.staff-account-table input,.staff-account-table select{width:100%;min-height:38px;font-size:12px;padding:8px;margin:0}.staff-account-table small{display:block;font-size:10px;color:#7b8798;margin-top:6px;overflow-wrap:anywhere}.staff-account-table .account-row-dirty{background:#fff8f3}.account-row-actions{display:flex;flex-direction:column;gap:6px;min-width:115px}.account-row-actions button{font-size:11px;min-height:36px;padding:8px}.staff-account-table select:disabled{background:#f3f5f8;color:#758092}#staffmanagementmessage{font-size:12px;color:#805a38}#staffresetdialog{width:min(480px,calc(100vw - 32px))}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* The account popup is mounted on the page, outside sidebar scrolling. */
.sidebar{overflow-x:hidden}
#profilemenu{position:fixed;inset:auto;right:auto;bottom:auto;z-index:1000;margin:0;max-width:calc(100vw - 24px);max-height:calc(100dvh - 24px);overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;box-sizing:border-box}
#profilemenu[hidden]{display:none}
#profilemenu>button{width:100%;min-width:0;white-space:normal;overflow-wrap:anywhere;text-align:left}
#profilemenu .profilemenutitle{min-width:0;max-width:100%;overflow-wrap:anywhere}

.loginpasswordcontrol{display:flex;align-items:stretch;gap:8px;margin:6px 0 14px}.loginpasswordcontrol input{flex:1;min-width:0;width:100%;margin:0}.loginpasswordcontrol button{flex:0 0 auto;min-width:100px;white-space:nowrap;font-size:12px;padding:8px 12px}
