.monthly-shell{display:grid;grid-template-columns:220px minmax(0,1fr);min-height:100vh}.monthly-shell aside{position:sticky;top:0;height:100vh;padding:24px 14px;background:#fff;border-right:1px solid #e2e8f0}.monthly-shell main{min-width:0;padding:24px}.monthly-shell header{display:flex;justify-content:space-between;color:#64748b;padding-bottom:24px}.monthly-heading{display:flex;justify-content:space-between;gap:24px;align-items:center}.monthly-heading h1{margin:0;font-size:30px}.monthly-heading p,.monthly-note{color:#64748b}.monthly-controls{display:flex;gap:12px;align-items:end;flex-wrap:wrap;margin:20px 0}.monthly-shell label{display:flex;flex-direction:column;gap:6px;font-size:13px}.monthly-shell input,.monthly-shell select,.monthly-shell button,.monthly-shell .secondary{padding:10px 12px;min-height:40px;border:1px solid #dbe3ef;border-radius:8px;background:white;color:#14213d}.monthly-shell button{cursor:pointer}.monthly-shell :focus-visible{outline:3px solid #3b82f6;outline-offset:2px}.monthly-summary{margin:20px 0;font-size:15px}.monthly-scroll{overflow:auto;max-height:70vh;border:1px solid #dbe3ef;border-radius:10px;background:#fff}.monthly-scroll table{border-collapse:separate;border-spacing:0;font-size:13px;white-space:nowrap;width:max-content;min-width:100%}.monthly-scroll th,.monthly-scroll td{padding:10px;border-right:1px solid #edf1f7;border-bottom:1px solid #edf1f7;text-align:right;min-width:42px;font-variant-numeric:tabular-nums}.monthly-scroll th{background:#f1f5f9;position:sticky;top:0;z-index:2;text-align:center}.monthly-scroll .project{position:sticky;left:0;min-width:220px;max-width:280px;text-align:left;background:white;z-index:1;white-space:normal}.monthly-scroll th.project{z-index:3;background:#f1f5f9}.monthly-scroll .project a{display:block;font-weight:600}.monthly-scroll small{display:block;color:#64748b;margin-top:4px}.monthly-scroll .day a{display:block;color:inherit;text-decoration:none;min-width:24px}.monthly-scroll .zero{background:#fff1f0;color:#9f2929}.monthly-scroll .some{background:#fff7dc;color:#775210}.monthly-scroll .many{background:#e7f5ed;color:#12613a}.monthly-scroll .today{box-shadow:inset 2px 0 #3b82f6,inset -2px 0 #3b82f6}.monthly-scroll .unavailable{color:#94a3b8;background:#fafbfc}.monthly-scroll tfoot td{position:sticky;bottom:0;background:#eef3fb;font-weight:700;z-index:2}.monthly-scroll tfoot .project{z-index:3}.monthly-note{font-size:13px;line-height:1.6}.monthly-shell dialog{width:min(440px,90vw);border:1px solid #dbe3ef;border-radius:14px;padding:24px}.monthly-shell dialog::backdrop{background:#10203966}.monthly-shell form label{margin:16px 0}#message,#plan-error{color:#a03224}@media(max-width:800px){.monthly-shell{grid-template-columns:1fr}.monthly-shell aside{position:static;height:auto;display:flex;overflow:auto;gap:12px;padding:12px}.monthly-shell aside .brand{display:none}.monthly-shell main{padding:16px}.monthly-heading{align-items:start}.monthly-heading h1{font-size:23px}.monthly-scroll .project{min-width:160px}.monthly-shell header span{display:none}}
.monthly-shell main{margin-left:0;width:auto;max-width:none}.monthly-shell aside{width:auto}.monthly-shell .nav{color:#526581;text-decoration:none}.monthly-shell .nav.active{color:#f58200;background:#fff4e8}.monthly-shell a{color:#2463db}.monthly-shell .monthly-scroll a{color:inherit}.monthly-scroll .project a{color:#234d83}
.monthly-scroll .project{width:240px;min-width:240px;max-width:240px;box-sizing:border-box}.monthly-scroll tr>:nth-child(2){position:sticky;left:240px;background:#fff;z-index:1;min-width:120px;text-align:left}.monthly-scroll thead tr>:nth-child(2){z-index:3;background:#f1f5f9}.monthly-scroll tfoot tr>:nth-child(2){z-index:3;background:#eef3fb}@media(max-width:800px){.monthly-scroll .project{width:160px;min-width:160px;max-width:160px}.monthly-scroll tr>:nth-child(2){left:160px;min-width:100px}}
/* Dense working grid: keep filters touch-friendly, compact only matrix rows. */
.monthly-scroll td{padding:5px 9px;line-height:1.25}.monthly-scroll th{padding:8px 9px;line-height:1.2}.monthly-scroll small{margin-top:2px;line-height:1.2}.monthly-scroll .project button{min-height:0;padding:2px 7px;font-size:11px;line-height:1.2;border-radius:5px}.monthly-scroll .project small{display:flex;align-items:center;gap:5px}.monthly-scroll .day a{padding:3px 0}.monthly-scroll tfoot td{padding-top:8px;padding-bottom:8px}
.monthly-scroll td.day{text-align:center;vertical-align:middle;font-weight:600}.monthly-scroll td.day a{display:flex;align-items:center;justify-content:center;min-height:26px;padding:0}.monthly-scroll td.day.zero{background:#ffc7c2;color:#7b1711}.monthly-scroll td.day.some{background:#ffe083;color:#674700}.monthly-scroll td.day.many{background:#a8dfb9;color:#104e29}.monthly-scroll td.day.unavailable{background:#f4f6f9;color:#8a97aa}.monthly-scroll tfoot td:nth-child(n+10){text-align:center}
.monthly-scroll td.project{padding-right:38px}.monthly-scroll td.project .monthly-gear{position:absolute;right:7px;top:50%;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;min-width:27px;min-height:27px;padding:4px;border-color:transparent;background:transparent;color:#60738f}.monthly-scroll td.project .monthly-gear:hover{background:#eaf1fb;color:#245fba}.monthly-shell textarea{font:inherit;resize:vertical;padding:10px;border:1px solid #dbe3ef;border-radius:8px;color:#14213d}
.monthly-scroll td.balance-warning{background:#ffe083;color:#674700;font-weight:650}.monthly-scroll td.balance-low{background:#ffc7c2;color:#7b1711;font-weight:650}.monthly-scroll td.balance-warning small{color:#674700}.monthly-scroll td.balance-low small{color:#7b1711}
