:root{--color-primary: #1e3a5f;--color-primary-dk: #152a45;--color-bg: #f4f6f9;--color-surface: #ffffff;--color-border: #d1d5db;--color-text: #111827;--color-muted: #6b7280;--color-danger: #dc2626;--color-success: #16a34a;--color-warn: #d97706;--radius: 8px;--shadow: 0 1px 3px rgba(0,0,0,.1)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:system-ui,-apple-system,sans-serif;background:var(--color-bg);color:var(--color-text);min-height:100dvh;font-size:16px}button{cursor:pointer;font:inherit}input,select,textarea{font:inherit}.app-header{background:var(--color-primary)}.app-main{max-width:520px;margin:0 auto;padding:1rem 1rem 4rem;width:100%}.app-main--wide{max-width:1100px}.header-btn{background:transparent;border:1px solid rgba(255,255,255,.55);color:#fff;border-radius:var(--radius);padding:.35rem .65rem;font-size:.82rem}.header-btn:hover{background:#ffffff1f}.header-actions{display:flex;gap:.4rem;flex-wrap:wrap;justify-content:flex-end}.welcome-line{font-size:.88rem;color:var(--color-muted);margin-bottom:1rem}.section-heading{font-size:1.15rem;font-weight:700;margin-bottom:.75rem}.subheading{color:var(--color-muted);margin-bottom:1rem;font-size:.9rem}.back-btn{margin-bottom:.75rem}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;border:none;border-radius:var(--radius);padding:.55rem 1rem;font-size:.92rem;font-weight:600}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-sm{padding:.35rem .7rem;font-size:.82rem}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--color-primary-dk)}.btn-secondary{background:var(--color-border);color:var(--color-text)}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1rem;box-shadow:var(--shadow)}.form-card{margin-top:.5rem}.form-field{margin-bottom:.85rem}.form-field label{display:block;font-size:.82rem;font-weight:600;color:var(--color-muted);margin-bottom:.3rem;text-transform:uppercase;letter-spacing:.02em}.optional{font-weight:400;text-transform:none}.pt-input,.pt-select{width:100%;padding:.6rem .75rem;border:1.5px solid var(--color-border);border-radius:var(--radius);font-size:1rem;background:#fff}.pt-input:focus,.pt-select:focus{outline:2px solid var(--color-primary);outline-offset:1px}.notice{padding:.65rem .85rem;border-radius:var(--radius);margin-bottom:1rem;font-size:.9rem}.notice-info{background:#eff6ff;border:1px solid #bfdbfe;color:#1e40af}.notice-error{background:#fef2f2;border:1px solid #fecaca;color:#991b1b}.notice-success{background:#f0fdf4;border:1px solid #bbf7d0;color:#166534}.empty-state{text-align:center;padding:2.5rem 1rem;color:var(--color-muted)}.empty-hint{font-size:.88rem;margin-top:.5rem}.job-card-list{display:flex;flex-direction:column;gap:.5rem}.job-card{display:flex;align-items:center;gap:.75rem;width:100%;text-align:left;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:.85rem 1rem;box-shadow:var(--shadow)}.job-card:hover{border-color:var(--color-primary)}.job-card-number{font-weight:700;font-size:.95rem;min-width:4.5rem}.job-card-name{flex:1;font-size:.9rem;color:var(--color-muted)}.job-card-chevron{font-size:1.25rem;color:var(--color-muted)}.status-table-wrap{overflow-x:auto;margin:1rem 0;-webkit-overflow-scrolling:touch}.status-table{width:100%;border-collapse:collapse;font-size:.85rem;min-width:640px}.status-table th,.status-table td{padding:.5rem .6rem;border-bottom:1px solid var(--color-border);text-align:left}.status-table th{background:#f8fafc;font-weight:600;color:var(--color-muted);font-size:.75rem;text-transform:uppercase}.status-table th.num,.status-table td.num{text-align:right}.empty-row{text-align:center;color:var(--color-muted);padding:1.5rem!important}.action-bar{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1rem}.admin-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.admin-tabs{display:flex;flex-wrap:wrap;gap:.35rem;margin-bottom:1rem}.admin-tab{background:var(--color-surface);border:1px solid var(--color-border);border-radius:999px;padding:.35rem .85rem;font-size:.82rem;font-weight:600}.admin-tab:hover{border-color:var(--color-primary);color:var(--color-primary)}.admin-tab--active{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.admin-section{margin-top:.5rem}.admin-section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.admin-section-title{font-size:1rem;font-weight:700;margin-bottom:.75rem}.admin-form{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1rem;margin-bottom:1rem}.admin-table{width:100%;border-collapse:collapse;font-size:.88rem;margin-top:.5rem}.admin-table th,.admin-table td{padding:.45rem .6rem;border-bottom:1px solid var(--color-border);text-align:left}.admin-table th{background:#f8fafc;font-weight:600;color:var(--color-muted);font-size:.75rem;text-transform:uppercase}.form-row{display:flex;flex-direction:column;gap:.3rem;margin-bottom:.75rem}.form-row label{font-size:.8rem;font-weight:600;color:var(--color-muted);text-transform:uppercase;letter-spacing:.02em}.form-actions{display:flex;gap:.5rem;margin-top:.75rem}.input{width:100%;padding:.55rem .75rem;border:1.5px solid var(--color-border);border-radius:var(--radius);font-size:.95rem;background:#fff}.input:focus{outline:2px solid var(--color-primary);outline-offset:1px}.input--inline{width:6rem}.btn-link{background:none;border:none;color:var(--color-primary);font-size:.85rem;text-decoration:underline;cursor:pointer;padding:0}.badge{display:inline-block;padding:.15rem .5rem;border-radius:999px;font-size:.75rem;font-weight:600}.badge-open{background:#dcfce7;color:#166534}.badge-closed{background:#f1f5f9;color:var(--color-muted)}.row-inactive{opacity:.45}.row-over-budget{background:#fff7f7}.text-danger{color:var(--color-danger);font-weight:600}.loading-text{text-align:center;color:var(--color-muted);padding:2rem}.dashboard-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem}.dashboard-actions{display:flex;gap:.5rem}.forecast-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:.5rem 0}.forecast-table-wrap--sm{max-height:300px;overflow-y:auto}.forecast-table{width:100%;border-collapse:collapse;font-size:.85rem;min-width:520px}.forecast-table th,.forecast-table td{padding:.45rem .6rem;border-bottom:1px solid var(--color-border);text-align:left}.forecast-table th{background:#f8fafc;font-weight:600;color:var(--color-muted);font-size:.75rem;text-transform:uppercase;position:sticky;top:0}.forecast-table tfoot td{font-weight:700;background:#f8fafc;border-top:2px solid var(--color-border)}.category-row td{background:#f0f4f8;font-weight:700;font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;color:var(--color-muted);padding:.3rem .6rem}.col-code{width:8.5rem;white-space:nowrap}.col-hrs{width:6rem}.col-num{text-align:right}.import-row{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;margin-bottom:1rem}.import-label{font-size:.88rem;color:var(--color-muted)}.preview-box{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1rem;margin-bottom:1rem}.preview-title{font-weight:600;margin-bottom:.75rem;font-size:.9rem}.field-hint{font-size:.78rem;color:var(--color-muted);margin-top:.2rem}.text-muted{color:var(--color-muted)}.entry-date-row{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;margin-bottom:1rem}.entry-date-label{font-size:.82rem;font-weight:600;color:var(--color-muted);text-transform:uppercase;white-space:nowrap}.entry-date-input{width:auto}.entry-grid-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin-bottom:1rem}.entry-grid{width:100%;border-collapse:collapse;font-size:.88rem;min-width:480px}.entry-grid th,.entry-grid td{padding:.4rem .5rem;border-bottom:1px solid var(--color-border);vertical-align:middle}.entry-grid th{background:#f8fafc;font-weight:600;color:var(--color-muted);font-size:.75rem;text-transform:uppercase}.entry-grid tbody tr:hover{background:#f8fafc}.entry-row--filled td{background:#f0f7ff}.entry-col-code{width:9rem;white-space:nowrap;font-weight:600}.entry-col-hrs{width:6rem}.entry-col-hrs .pt-input{text-align:right;padding:.35rem .4rem}.entry-col-notes{width:12rem}.entry-col-notes .pt-input{padding:.35rem .4rem}.entry-grid-hours{width:100%}.entry-submit-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}.entry-submit-hint{font-size:.85rem;color:var(--color-muted)}.history-summary{display:flex;justify-content:space-between;align-items:center;padding:.5rem 0;margin-bottom:.5rem;font-size:.88rem;color:var(--color-muted)}.history-total{font-weight:700;color:var(--color-text)}.history-list{display:flex;flex-direction:column;gap:.6rem}.history-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:.85rem 1rem;box-shadow:var(--shadow)}.history-card-main{display:flex;flex-direction:column;gap:.25rem}.history-card-meta{display:flex;justify-content:space-between;align-items:center}.history-date{font-size:.82rem;color:var(--color-muted)}.history-hours{font-weight:700;font-size:1rem;color:var(--color-primary)}.history-code{font-size:.82rem;font-weight:600;color:var(--color-muted)}.history-desc{font-size:.9rem}.history-user{font-size:.78rem;color:var(--color-muted)}.history-card-actions{display:flex;gap:1rem;margin-top:.5rem;padding-top:.5rem;border-top:1px solid var(--color-border)}.history-edit-form{display:flex;flex-direction:column;gap:.5rem}.history-edit-row{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.btn-link--danger{color:var(--color-danger)}.forecast-edit-row td{background:#f0f7ff;padding-top:.3rem;padding-bottom:.3rem}.forecast-edit-row .input{padding:.3rem .4rem;font-size:.85rem}.login-screen{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:1rem}.login-card{background:var(--color-surface);border-radius:var(--radius);padding:2rem 1.5rem;box-shadow:var(--shadow);text-align:center;max-width:360px;width:100%}.login-title{font-size:1.35rem;font-weight:700;color:var(--color-primary);margin-bottom:.5rem}.login-subtitle{font-size:.9rem;color:var(--color-muted);margin-bottom:1.25rem}.login-btn{width:100%;background:var(--color-primary);color:#fff;border:none;border-radius:var(--radius);padding:.75rem;font-weight:600;font-size:1rem}.login-btn:hover{background:var(--color-primary-dk)}@media (min-width: 640px){.app-main{padding:1.25rem 1.5rem 4rem}.action-bar .btn{min-width:8rem}}@media (max-width: 639px){.status-table-wrap{margin-left:-.25rem;margin-right:-.25rem}.action-bar .btn{flex:1;min-width:calc(50% - .25rem)}}
