@import"https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600&family=DM+Mono:wght@400;500&display=swap";*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--font: "DM Sans", sans-serif;--font-mono: "DM Mono", monospace;--bg: #f8f8f6;--surface: #ffffff;--border: rgba(0,0,0,.1);--border-md: rgba(0,0,0,.18);--text-1: #111110;--text-2: #555552;--text-3: #999996;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px;--blue: #185FA5;--blue-light: #E6F1FB;--green: #3B6D11;--green-light: #EAF3DE;--red: #A32D2D;--red-light: #FCEBEB;--amber: #854F0B;--amber-light: #FAEEDA}body{font-family:var(--font);background:var(--bg);color:var(--text-1);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}.app-shell{min-height:100vh;display:flex;flex-direction:column}.app-header{display:flex;align-items:center;justify-content:space-between;padding:0 24px;height:56px;background:var(--surface);border-bottom:.5px solid var(--border);position:sticky;top:0;z-index:50}.header-left{display:flex;align-items:center;gap:12px}.logo-mark{width:32px;height:32px;border-radius:var(--radius-sm);background:var(--blue);color:#fff;font-size:11px;font-weight:600;display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);letter-spacing:.02em}.app-title{font-size:14px;font-weight:600;color:var(--text-1)}.app-subtitle{font-size:11px;color:var(--text-3);margin-top:1px}.app-nav{display:flex;gap:2px}.nav-item{display:flex;align-items:center;gap:6px;padding:6px 12px;border-radius:var(--radius-md);border:none;background:transparent;color:var(--text-2);font-size:13px;font-family:var(--font);cursor:pointer;transition:background .12s,color .12s}.nav-item:hover{background:var(--bg);color:var(--text-1)}.nav-item.active{background:var(--bg);color:var(--text-1);font-weight:500}.app-main{flex:1;padding:24px;max-width:1200px;margin:0 auto;width:100%}.cal-toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.cal-toolbar-left{display:flex;align-items:center;gap:8px}.today-btn{padding:5px 12px;border-radius:var(--radius-md);border:.5px solid var(--blue);background:transparent;color:var(--blue);font-size:12px;font-family:var(--font);cursor:pointer}.today-btn:hover{background:var(--blue-light)}.nav-btn{padding:5px 10px;border-radius:var(--radius-md);border:.5px solid var(--border-md);background:transparent;color:var(--text-2);font-size:14px;font-family:var(--font);cursor:pointer}.nav-btn:hover{background:var(--bg)}.wk-label{font-size:13px;font-weight:500;color:var(--text-1);min-width:120px;text-align:center}.range-label{font-size:12px;color:var(--text-3)}.empty-hint{font-size:12px;color:var(--text-3);font-style:italic}.equip-legend{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px;padding:7px 12px;background:var(--surface);border:.5px solid var(--border);border-radius:var(--radius-md)}.legend-heading{font-size:11px;font-weight:500;color:var(--text-3);margin-right:4px}.legend-item{display:flex;align-items:center;gap:5px;font-size:11px;color:var(--text-2)}.legend-chip{padding:1px 6px;border-radius:3px;font-size:9px;font-weight:600;font-family:var(--font-mono)}.cal-grid{display:flex;flex-direction:column;gap:6px}.week-row{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}.day-col{background:var(--surface);border:.5px solid var(--border);border-radius:var(--radius-md);overflow:hidden;min-height:100px}.day-col.today{border-color:var(--blue);border-width:1.5px}.day-col.today .day-hd{background:var(--blue)}.day-col.today .day-name{color:#fff}.day-col.today .day-date{color:#b5d4f4}.day-hd{padding:5px 8px;background:var(--bg);border-bottom:.5px solid var(--border)}.day-name{font-size:11px;font-weight:500;color:var(--text-1)}.day-date{font-size:10px;color:var(--text-3)}.day-body{padding:3px;display:flex;flex-direction:column;gap:3px}.empty-day{padding:10px 6px;font-size:11px;color:var(--text-3);text-align:center}.mob-card{padding:6px 7px;border-radius:4px;border-left:2px solid transparent;transition:filter .1s}.mob-card:hover{filter:brightness(.93)}.mob-proj-num{font-size:9px;font-weight:600;font-family:var(--font-mono);letter-spacing:.04em}.mob-proj-name{font-size:11px;font-weight:500;line-height:1.2;margin-top:1px}.mob-phase{font-size:9px;margin-top:1px;opacity:.65}.mob-eq-row{display:flex;gap:2px;flex-wrap:wrap;margin-top:4px}.mob-eq-chip{padding:1px 4px;border-radius:3px;font-size:9px;font-weight:600;font-family:var(--font-mono)}.mob-dots{display:flex;gap:2px;margin-top:4px}.dot{width:6px;height:6px;border-radius:50%}.form-page{max-width:820px}.form-header{margin-bottom:20px}.form-title{font-size:18px;font-weight:600;color:var(--text-1)}.form-sub{font-size:12px;color:var(--text-3);margin-top:3px}.form-section{background:var(--surface);border:.5px solid var(--border);border-radius:var(--radius-lg);padding:18px 20px;margin-bottom:10px}.section-heading{font-size:13px;font-weight:500;color:var(--text-1);margin-bottom:14px;padding-bottom:10px;border-bottom:.5px solid var(--border)}.section-sub{font-size:12px;color:var(--text-3);margin-bottom:10px}.field-grid{display:grid;gap:10px}.g2{grid-template-columns:1fr 1fr}.g3{grid-template-columns:1fr 1fr 1fr}.span2{grid-column:span 2}.span3{grid-column:span 3}.field{display:flex;flex-direction:column;gap:4px}.field label{font-size:11px;color:var(--text-2);font-weight:500}input,select,textarea{font-family:var(--font);font-size:13px;color:var(--text-1);background:var(--surface);border:.5px solid var(--border-md);border-radius:var(--radius-sm);padding:7px 10px;width:100%;outline:none;transition:border-color .12s}input:focus,select:focus,textarea:focus{border-color:var(--blue)}textarea{resize:vertical;line-height:1.5}.contact-header{display:grid;grid-template-columns:130px 1fr 1fr 1fr 28px;gap:6px;margin-bottom:4px}.contact-header div{font-size:10px;font-weight:500;color:var(--text-3);padding-bottom:2px}.contact-row{display:grid;grid-template-columns:130px 1fr 1fr 1fr 28px;gap:6px;margin-bottom:6px;align-items:center}.remove-btn{font-size:16px;color:var(--text-3);background:none;border:none;cursor:pointer;padding:0 4px;line-height:1}.remove-btn:hover{color:var(--red)}.mob-block{border:.5px solid var(--border);border-radius:var(--radius-md);padding:14px;margin-bottom:10px}.mob-block-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.mob-block-label{font-size:12px;font-weight:600;color:var(--text-1);font-family:var(--font-mono)}.field-sub-label{font-size:11px;color:var(--text-2);margin-bottom:6px;font-weight:500}.task-chips{display:flex;flex-wrap:wrap;gap:5px}.task-chip{padding:4px 11px;border-radius:20px;font-size:11px;cursor:pointer;border:.5px solid var(--border-md);color:var(--text-2);background:transparent;font-family:var(--font);transition:all .1s}.task-chip.on{background:var(--blue-light);border-color:var(--blue);color:var(--blue);font-weight:500}.task-chip.dashed{border-style:dashed}.task-chip:hover{border-color:var(--blue)}.eq-day-list{display:flex;flex-direction:column;gap:2px}.eq-day-row{display:flex;align-items:center;gap:10px;padding:5px 0;border-bottom:.5px solid var(--border)}.eq-day-row:last-child{border-bottom:none}.eq-day-label{font-size:11px;color:var(--text-2);min-width:90px}.eq-toggles{display:flex;gap:4px;flex-wrap:wrap}.eq-toggle{padding:3px 8px;border-radius:3px;font-size:10px;font-weight:600;font-family:var(--font-mono);cursor:pointer;border:.5px solid transparent;opacity:.35;transition:opacity .1s}.eq-toggle.on{opacity:1;border-color:currentColor}.eq-toggle:hover{opacity:.8}.prep-chips{display:flex;gap:6px;flex-wrap:wrap}.prep-chip{padding:6px 13px;border-radius:20px;font-size:12px;cursor:pointer;border:.5px solid var(--border-md);color:var(--text-2);background:transparent;font-family:var(--font);transition:all .12s}.prep-chip.on{font-weight:500}.prep-chip.p1.on{background:var(--blue-light);border-color:var(--blue);color:#0c447c}.prep-chip.p2.on{background:#eeedfe;border-color:#534ab7;color:#3c3489}.prep-chip.p3.on{background:#e1f5ee;border-color:#0f6e56;color:#085041}.prep-chip.p4.on{background:var(--amber-light);border-color:#ba7517;color:#633806}.prep-chip.p5.on{background:var(--green-light);border-color:var(--green);color:#27500a}.add-link{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:var(--text-3);cursor:pointer;background:none;border:none;font-family:var(--font);margin-top:4px;padding:4px 0}.add-link:hover{color:var(--text-1)}.btn{padding:9px 20px;font-size:13px;font-weight:500;border-radius:var(--radius-md);cursor:pointer;border:.5px solid var(--border-md);font-family:var(--font);transition:all .12s}.btn-primary{background:var(--blue);color:#fff;border-color:var(--blue)}.btn-primary:hover{background:#0c447c}.btn-ghost{background:transparent;color:var(--text-1)}.btn-ghost:hover{background:var(--bg)}.btn-danger{background:transparent;color:var(--red);border-color:var(--red)}.btn-danger:hover{background:var(--red-light)}.form-actions{display:flex;gap:8px;margin-top:8px;padding-bottom:32px}.detail-page{max-width:900px}.back-btn{font-size:12px;color:var(--text-3);background:none;border:none;cursor:pointer;margin-bottom:16px;font-family:var(--font)}.back-btn:hover{color:var(--text-1)}.detail-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:20px}.detail-header-actions{display:flex;gap:8px}.detail-proj-num{font-size:11px;font-weight:600;font-family:var(--font-mono);letter-spacing:.06em;margin-bottom:3px}.detail-proj-name{font-size:22px;font-weight:600;color:var(--text-1)}.detail-sub{font-size:12px;color:var(--text-2);margin-top:4px}.detail-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:16px}.metric-card{background:var(--bg);border-radius:var(--radius-md);padding:12px 14px}.metric-val{font-size:20px;font-weight:600;color:var(--text-1)}.metric-val.green{color:var(--green)}.metric-val.red{color:var(--red)}.metric-lbl{font-size:11px;color:var(--text-3);margin-top:2px}.detail-two-col{display:grid;grid-template-columns:1fr 1fr;gap:12px}.detail-card{background:var(--surface);border:.5px solid var(--border);border-radius:var(--radius-lg);padding:16px 18px}.detail-card-title{font-size:12px;font-weight:500;color:var(--text-1);margin-bottom:12px}.mob-detail-block{margin-bottom:12px;padding-bottom:12px;border-bottom:.5px solid var(--border)}.mob-detail-block:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.mob-detail-header{display:flex;align-items:center;gap:8px;margin-bottom:6px}.mob-detail-label{font-size:11px;font-weight:600;font-family:var(--font-mono);color:var(--text-2)}.mob-detail-phase{font-size:12px;font-weight:500;color:var(--text-1)}.mob-detail-dates{font-size:11px;color:var(--text-3);margin-left:auto}.mob-task-list{list-style:none;margin:4px 0}.mob-task-item{font-size:12px;color:var(--text-2);padding:2px 0;display:flex;align-items:center;gap:6px}.task-dot{color:var(--text-3)}.mob-equip-summary{margin-top:8px}.mob-equip-day{display:flex;align-items:center;gap:8px;padding:3px 0}.mob-equip-day-label{font-size:11px;color:var(--text-3);min-width:100px}.mob-equip-chips{display:flex;gap:3px}.eq-chip-sm{padding:1px 6px;border-radius:3px;font-size:9px;font-weight:600;font-family:var(--font-mono)}.prep-stage-list{display:flex;flex-direction:column;gap:0}.prep-stage-row{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:.5px solid var(--border);cursor:pointer;transition:background .1s}.prep-stage-row:last-child{border-bottom:none}.prep-stage-row:hover{background:var(--bg);border-radius:var(--radius-sm);padding-left:6px}.prep-stage-num{width:20px;height:20px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:600;flex-shrink:0;background:var(--bg);color:var(--text-3);border:.5px solid var(--border-md)}.prep-stage-num.done{background:var(--green);color:#fff;border-color:var(--green)}.prep-stage-num.active{background:var(--blue);color:#fff;border-color:var(--blue)}.prep-stage-label{font-size:12px;color:var(--text-1);flex:1}.prep-stage-label.done{color:var(--text-3);text-decoration:line-through}.prep-stage-status{font-size:10px;color:var(--text-3)}.prep-stage-row.done .prep-stage-status{color:var(--green)}.prep-stage-row.active .prep-stage-status{color:var(--blue)}.contact-detail-row{display:flex;align-items:center;gap:10px;padding:7px 0;border-bottom:.5px solid var(--border)}.contact-detail-row:last-child{border-bottom:none}.contact-avatar{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;flex-shrink:0}.contact-detail-name{font-size:12px;font-weight:500;color:var(--text-1)}.contact-detail-role{font-size:11px;color:var(--text-3)}.contact-detail-actions{margin-left:auto;display:flex;gap:4px}.contact-action-btn{font-size:14px;text-decoration:none;padding:2px}.notes-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.note-label{font-size:11px;font-weight:500;color:var(--text-3);margin-bottom:4px}.note-body{font-size:13px;color:var(--text-1);line-height:1.5}.report-header{margin-bottom:20px}.report-title{font-size:18px;font-weight:600;color:var(--text-1)}.report-sub{font-size:12px;color:var(--text-3);margin-top:3px}.report-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:20px}.report-section{margin-bottom:16px}.report-section-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;margin-bottom:8px;padding:4px 0}.report-section-label.flagged{color:var(--red)}.report-section-label.clear{color:var(--green)}.prep-row-card{display:flex;align-items:center;gap:16px;padding:12px 14px;border-radius:var(--radius-md);border:.5px solid var(--border);margin-bottom:6px;background:var(--surface)}.prep-row-card.flagged{border-color:#e24b4a;background:var(--red-light)}.prep-row-card.clear{background:var(--green-light);border-color:#97c459}.prep-row-left{flex:1}.prep-row-num{font-size:10px;font-weight:600;font-family:var(--font-mono)}.prep-row-name{font-size:13px;font-weight:500;color:var(--text-1)}.prep-row-mob{font-size:11px;color:var(--text-2);margin-top:1px}.prep-row-loc{font-size:11px;color:var(--text-3);margin-top:1px}.prep-row-dots{display:flex;gap:3px}.dot-lg{width:10px;height:10px;border-radius:50%}.prep-row-missing{font-size:11px;color:var(--red);max-width:200px;text-align:right;line-height:1.4}.prep-row-ok{font-size:11px;color:var(--green);font-weight:500}.empty-state{text-align:center;color:var(--text-3);font-size:13px;padding:40px 0;border:.5px dashed var(--border-md);border-radius:var(--radius-lg)}
