.header-account-controls{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-shrink:0;margin-left:auto}.header-account-controls .xp-pill{display:inline-flex;align-items:center;justify-content:center;height:44px;box-sizing:border-box;margin:0;padding:0 14px;font-size:18px;line-height:1}.header-account-controls .header-signout{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;min-height:44px;padding:10px;flex-shrink:0}.header-signout svg{width:24px;height:24px}.auth-locked .header-account-controls{display:none}.board-page #accountError:empty{display:none}.board-heading{flex-wrap:wrap}.board-page .board-heading,.admin-page header .board-heading{gap:10px}
.board-page.auth-locked > header,.board-page.auth-locked > main,.auth-locked > dialog,.auth-locked #dashboard{display:none!important}
.auth-pending #boardLogin,.auth-pending #login{visibility:hidden}
.auth-panel{max-width:420px;margin:10vh auto;padding:28px}
.auth-remember{display:flex;align-items:center;gap:10px;margin:18px 0}
.auth-remember input{width:auto;margin:0}
.account-actions{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.account-settings{margin-top:24px}
.account-settings summary{cursor:pointer;font-weight:600;padding:10px 0}
.account-settings form{max-width:420px}
#projectDueLabel{min-width:0;max-width:100%}#jobDueDate{display:block;box-sizing:border-box;width:100%;min-width:0;max-width:100%;min-inline-size:0;-webkit-appearance:none;appearance:none;min-height:45px}#jobDueDate::-webkit-date-and-time-value{min-width:0;text-align:left}
.card.overdue{border-color:#8b2424;box-shadow:0 0 0 1px #8b2424,0 4px 16px #8b242430}.job-due{font-weight:750;color:#8b2424;margin-top:-4px}
.priority-switch{display:flex;align-items:center;gap:10px;min-height:44px;cursor:pointer}.priority-switch input{width:44px;height:26px;position:absolute;opacity:0}.switch-track{display:inline-block;width:44px;height:26px;border-radius:20px;background:#8192a3;position:relative;flex-shrink:0}.switch-track::after{content:'';position:absolute;width:20px;height:20px;top:3px;left:3px;background:white;border-radius:50%;transition:transform .15s}.priority-switch input:checked+.switch-track{background:#2067b2}.priority-switch input:checked+.switch-track::after{transform:translateX(18px)}.priority-switch input:focus-visible+.switch-track{outline:3px solid #f5b942;outline-offset:3px}.switch-answer::after{content:'No'}.priority-switch input:checked~.switch-answer::after{content:'Yes'}.pill.priority-pill{background:#ffe0dc;color:#9b3027;text-transform:none}#detail.job-detail-dialog,#adminDetail.job-detail-dialog{padding:0;overflow:hidden;max-height:90vh;max-height:90dvh}dialog.job-detail-dialog[open]{display:flex;flex-direction:column}.job-detail-content{padding:25px;overflow-y:auto;min-height:0;overscroll-behavior:contain;overflow-wrap:anywhere}.job-detail-content h2{margin-top:0}.job-detail-dialog .detail-footer{flex-shrink:0;margin:0;padding:16px 25px;background:white;border-top:1px solid #dce6ef}.job-detail-dialog .detail-footer button{flex-shrink:0}
.work-history{margin-top:24px}.work-history table{min-width:620px}.history-time{white-space:nowrap}.pill.history-approved{background:#dcf3ef;color:#176959}.pill.history-pending{background:#fff0d9;color:#93600b}
.recorded-time-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.recorded-time-fields input{padding:10px}#runTimeDialog,#runResetDialog{max-height:90dvh;overflow-y:auto}
.track{position:relative}.achievement-shimmer{position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,transparent 0%,#ffe79599 38%,#fff 50%,#ffe79599 62%,transparent 100%);box-shadow:0 0 14px 5px #ffe795;animation:achievement-trace 2.544s linear forwards;transform:translateX(-100%)}@keyframes achievement-trace{0%{transform:translateX(-100%);opacity:0}10%{opacity:1}90%{opacity:1}100%{transform:translateX(100%);opacity:0}}.achievement-prompt{margin-top:16px;background:#875800}@media(prefers-reduced-motion:reduce){.achievement-shimmer{animation-name:achievement-fade;transform:none}}@keyframes achievement-fade{0%,100%{opacity:0}50%{opacity:.65}}
.job-pills{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.pill.extra-xp{background:#fff0c2;color:#875800;text-transform:none}
.pill.interval{text-transform:none}
#intervalFields{border:1px solid #b9c9d8;border-radius:9px;margin:12px 0;padding:12px}#intervalFields legend{font-weight:700}.interval-row{display:flex;align-items:flex-end;gap:10px;margin-bottom:12px}.interval-row label{flex:1;min-width:0;margin:0}.interval-row button{flex-shrink:0}.pill.interval{background:#dcf3ef;color:#176959}
.schedule-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:20px;margin-bottom:14px}.schedule-heading h2{margin:0}.starts-tomorrow{display:inline-flex;align-items:center;min-height:45px;font-weight:700}
.goal-section{margin-top:20px}.goal-emoji{font-size:26px;vertical-align:middle}.goal-met{border-color:#39a77c;background:#f2fcf8}.goal-tracker .row{flex-wrap:wrap}.goal-tracker .actions{margin-top:0}#goalDialog{max-height:90dvh;overflow-y:auto}#goalIcon{font-size:24px}
.admin-heading-actions{display:flex;align-items:center;gap:8px}@media(max-width:600px){.admin-page #mobileBack{display:inline-flex;align-items:center;justify-content:center;padding:8px 10px;line-height:1.2;min-height:44px;margin:0}.admin-page .admin-heading-actions #logout{padding:8px 10px;min-height:44px;font-size:13px}}
.mobile-only{display:none}.mobile-screen-heading{display:flex;align-items:center;gap:10px}@media(max-width:600px){.admin-page #dashboard{padding-bottom:110px}.admin-page .mobile-only{display:flex}.admin-page .mobile-screen-hidden{display:none!important}.admin-page #jobEditorContent #jobEditorPanel{display:block!important;box-shadow:none;padding:0}.admin-page #dashboard>.layout:not([data-mobile-screen]){display:contents}.admin-page #mobileNav{position:fixed;bottom:0;left:0;right:0;z-index:20;background:white;border-top:1px solid #dce6ef;box-shadow:0 -4px 18px #173b5912;padding:12px 4px calc(10px + env(safe-area-inset-bottom));display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:2px}.admin-page #mobileNav button{background:transparent;color:#61778b;display:flex;flex-direction:column;align-items:center;gap:4px;padding:6px 1px;font-size:10px;min-height:52px}.admin-page #mobileNav button svg{height:23px;width:23px}.admin-page #mobileNav button[aria-current=page]{background:#e8eefc;color:#2067b2}.admin-page #mobileNav #mobileAdd{position:absolute;left:50%;transform:translateX(-50%);bottom:calc(78px + env(safe-area-inset-bottom));border-radius:50%;width:58px;height:58px;background:#2067b2;color:white;box-shadow:0 4px 14px #173b5933;padding:3px;gap:0}.admin-page #mobileAdd>span{font-size:29px;line-height:32px}.admin-page #mobileAdd small{font-size:10px}.admin-page #jobEditorDialog{max-height:90dvh;overflow-y:auto}.admin-page #mobileBack{padding:8px;font-size:13px}.admin-page .mobile-screen-heading h2{font-size:19px}}
.board-heading{display:flex;align-items:center;justify-content:space-between;gap:16px}.board-heading h1{min-width:0;overflow-wrap:anywhere}.xp-pill{background:#f5d879;color:#173b59;white-space:nowrap;margin-left:auto;flex-shrink:0;font-size:14px;padding:8px 13px}
.detail-footer{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:20px}.detail-footer .job-actions{margin-left:auto}
.job-actions .icon-button{width:44px;padding:10px}
#jobsTable{table-layout:fixed;min-width:620px}#jobsTable th:first-child{width:34%}#jobsTable th:last-child{width:144px}#jobsTable td{overflow-wrap:anywhere}.job-name{background:transparent;color:#1d72bf;text-align:left;padding:0;font-weight:750;width:100%;border-radius:4px;overflow-wrap:anywhere}.job-name:hover{text-decoration:underline}.sort-button{background:transparent;color:#183047;padding:0;border-radius:4px;display:flex;align-items:center;gap:5px;font-size:inherit}.job-actions{display:flex;gap:4px}.icon-button{display:inline-flex;align-items:center;justify-content:center;padding:10px;width:40px;min-height:44px;border-radius:9px}.icon-button svg{width:20px;height:20px;flex-shrink:0}.job-pagination{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:16px;flex-wrap:wrap}.detail-description{white-space:pre-wrap;overflow-wrap:anywhere}#adminDetail{max-height:90vh;overflow-y:auto}@media(max-width:600px){#jobsTable .job-description{display:none}#jobsTable{min-width:540px}#jobsTable th,#jobsTable td{padding:7px}#jobsTable th:first-child{width:24%}}
#weekdayLabel{border:1px solid #b9c9d8;border-radius:9px;margin:12px 0;padding:12px}#weekdayLabel legend{font-weight:700}.weekday-options{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:6px}.weekday-options label{display:flex;align-items:center;gap:10px;margin:0;min-height:44px;font-weight:500;cursor:pointer}.weekday-options input{width:20px;height:20px;margin:0;flex-shrink:0}
#jobs td .muted{white-space:pre-wrap;overflow-wrap:anywhere}
[hidden]{display:none!important}
:root{font-family:system-ui,-apple-system,Segoe UI,sans-serif;color:#183047;background:#f3f7fb}*{box-sizing:border-box}body{margin:0}header{background:#173b59;color:white;padding:20px 26px}h1{margin:0;font-size:clamp(25px,4vw,38px)}header p{margin:7px 0 0;color:#d4e5f4}main{max-width:1200px;margin:auto;padding:20px}h2{font-size:21px;margin:22px 0 12px}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(175px,1fr));gap:12px}.stat,.card,.debt,.panel{background:white;border-radius:17px;padding:19px;box-shadow:0 3px 14px #173b5912}.stat small{color:#59718a;display:block}.stat strong{display:block;font-size:29px;margin-top:6px}.debt{margin-top:15px;border:2px solid #c9d8e6}.debt[hidden]{display:none}.debt-line{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}.track{height:15px;background:#e4edf4;border-radius:20px;overflow:hidden;margin:13px 0}.fill{height:100%;background:#39a77c;transition:width .3s}.jobs{display:grid;grid-template-columns:repeat(auto-fill,minmax(285px,1fr));gap:15px}.card{display:flex;flex-direction:column;gap:12px;border:2px solid transparent}.card.done{border-color:#69b79d;background:#f2fcf8}.card h3{margin:0;font-size:22px}.pill{display:inline-block;padding:5px 10px;border-radius:30px;background:#e8eefc;color:#2b5290;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.04em}.pill.weekly{background:#fff0d9;color:#93600b}.pill.project{background:#e9e2ff;color:#6b43a8}.row{display:flex;align-items:center;justify-content:space-between;gap:10px}.value{font-size:21px;font-weight:800}.muted{color:#61778b}.status{font-weight:700}.actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:auto}button{border:0;background:#2067b2;color:white;border-radius:11px;padding:12px 17px;min-height:45px;font:inherit;font-weight:750;cursor:pointer}button.secondary{background:#e6eef5;color:#1b466a}button.good{background:#208565}button.danger{background:#a43b3b}button:disabled{opacity:.45;cursor:not-allowed}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #f5b942;outline-offset:2px}.empty{padding:28px;text-align:center;background:white;border-radius:16px}dialog{border:0;border-radius:17px;max-width:520px;width:calc(100% - 30px);padding:25px;box-shadow:0 15px 70px #142b4566}dialog::backdrop{background:#173b5988}dialog h2{margin-top:0}input,select,textarea{font:inherit;padding:12px;border:1px solid #b9c9d8;border-radius:9px;width:100%;background:white}label{display:block;font-weight:700;margin:12px 0 5px}textarea{min-height:90px}table{border-collapse:collapse;width:100%;font-size:14px}th,td{padding:11px;border-bottom:1px solid #dce6ef;text-align:left;vertical-align:middle}th{background:#edf3f8} .scroll{overflow-x:auto}.layout{display:grid;grid-template-columns:1fr;gap:20px}.panel h2{margin-top:0}.notice{color:#a43b3b;min-height:20px}.toplinks{display:flex;justify-content:space-between;align-items:center;gap:15px}a{color:#1d72bf}header a{color:white}.small{font-size:13px}.stack{display:grid;gap:10px}@media(min-width:850px){.layout{grid-template-columns:1fr 1fr}}@media(max-width:600px){main{padding:12px}.card{padding:15px}header{padding:16px}button{padding:11px}}
