/* TimeSheet visual refresh — shared by the workspace, login and dialogs. */
:root{--ink:#172b49;--muted:#65758c;--blue:#1769e8;--blue-dark:#1054c1;--line:#dce5ef;--canvas:#f2f6fb;--soft:#edf4ff;--radius:14px}
*{box-sizing:border-box}
html{overflow-y:auto;scrollbar-gutter:stable}
body{margin:0;color:var(--ink);background:var(--canvas);font:14px/1.5 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
a{color:#1559b4;text-decoration:none}
a:hover{text-decoration:none;color:var(--blue-dark)}
h1,h2,h3{color:var(--ink);line-height:1.25;letter-spacing:-.025em}
.hidden{display:none!important}
.muted,.page-caption{color:var(--muted)}
div.center,.center{width:min(1360px,calc(100% - 64px));margin-left:auto;margin-right:auto}
.app-header{background:#fff;border-bottom:1px solid var(--line)}
.app-header-inner{width:min(1472px,calc(100% - 48px));min-height:86px;margin:auto;display:flex;align-items:center;gap:24px;flex-wrap:wrap;padding:8px 0}
.brand{position:relative;display:block;flex:0 0 215px;height:56px;overflow:hidden}
.brand img{position:absolute;left:-8px;top:50%;width:240px;height:auto;max-width:none;transform:translateY(-50%)}
.app-nav{display:flex;align-items:center;gap:4px;flex:1;flex-wrap:wrap}
.app-nav a{display:inline-flex;padding:10px 13px;border-radius:8px;color:#43546d;font-size:13px;font-weight:650;white-space:nowrap}
.app-nav a:hover{background:var(--soft);color:var(--blue)}
.app-nav a.m_selected{background:var(--blue);color:#fff;box-shadow:0 3px 8px #1769e820}
.account{display:flex;align-items:center;gap:14px;font-size:13px;margin-left:auto}
.account-name{max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:650}
.account form{margin:0;border-left:1px solid var(--line);padding-left:14px}
button.logout-button{background:transparent;border:0;box-shadow:none;color:var(--muted);padding:8px 0;min-height:36px;font-size:13px}
.workspace{min-height:calc(100vh - 180px);padding:32px 0 12px}
.workspace-heading{display:flex;justify-content:space-between;align-items:center;gap:24px;margin-bottom:26px}
.eyebrow{font-size:10px;letter-spacing:.16em;font-weight:750;color:#6a7f99;margin:0 0 8px}
.workspace-heading h1{float:none;margin:0 0 6px;font-size:30px;font-weight:750}
.page-caption{margin:0;font-size:14px}
.workspace-date{text-align:right;color:var(--muted);font-size:12px}
.workspace-date .jclock{display:block;font-variant-numeric:tabular-nums;font-size:13px;margin-top:5px;color:#405976}
div.content{background:transparent;border:0;padding:0;overflow:visible;margin-top:0;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:24px}
div.content .box{float:none!important;width:auto!important;min-width:0;grid-column:span 12;margin:0;padding:24px;background:#fff;border:1px solid #e4ebf3;border-radius:var(--radius);box-shadow:0 5px 22px #233d6206;overflow-x:auto}
div.content .boxbox{margin:0}
div.content h1,div.content h2{float:none;font-size:20px;margin:0 0 16px;font-weight:700}
div.content h1+br,div.content h2+br{display:none}
.card-heading h2{margin-bottom:3px!important}
.card-heading p{margin:0 0 22px;color:var(--muted);font-size:13px}
.page-projects #project_list{grid-column:span 7}
.page-projects #project_edit,.page-projects #module_edit{grid-column:span 5}
.page-projects #module_list{grid-column:span 7}
.page-users #add_action{grid-column:span 8}
.page-users #free_days{grid-column:span 4}
button,input,select,textarea{font:inherit}
input:not([type=checkbox]):not([type=radio]):not([type=hidden]),select,textarea{border:1px solid #cfdbea;background-color:#fff;color:var(--ink);border-radius:7px;font-size:13px;font-weight:400;padding:9px 11px;min-height:40px;max-width:100%;box-shadow:0 1px 2px #172b4903}
input[type=checkbox],input[type=radio]{accent-color:var(--blue);width:17px;height:17px;vertical-align:middle;cursor:pointer}
textarea{resize:vertical;line-height:1.6}
input::placeholder,textarea::placeholder{color:#8593a6}
select.inputselect,select.inputselect_o{min-width:0;padding:8px 10px}
select[size]{padding:6px!important;min-height:152px}
select[size] option{padding:7px 9px;border-radius:4px}
select[size] option:checked{background:#dcecff;color:#104fba}
button,input[type=submit],input[type=button]{cursor:pointer;min-height:40px;border:1px solid var(--line);border-radius:7px;padding:9px 17px;background:#f5f8fc;color:#324d70;font-weight:650;font-size:13px;transition:background-color .15s,border-color .15s}
input.inputsubmit,button.primary-button{background:var(--blue);border-color:var(--blue);color:#fff;box-shadow:0 2px 5px #1769e81a}
input.inputsubmit:hover,button.primary-button:hover{background:var(--blue-dark);border-color:var(--blue-dark);color:#fff}
input.inputclear,input.inputchange,input.inputback{background:#f5f8fc;color:#365273;border-color:var(--line);padding-left:17px}
button:hover,input.inputclear:hover,input.inputchange:hover,input.inputback:hover{background:#e9f0fa;color:#174d99;border-color:#b9cce5}
button:disabled,input:disabled{cursor:wait;opacity:.6}
:where(input,select,textarea,button,a):focus-visible{outline:3px solid #75aaff;outline-offset:3px}
.time-entry-form{display:grid;grid-template-columns:1.05fr 1.1fr 1.2fr 1.2fr 1.25fr;gap:20px 22px;align-items:start}
.entry-field{min-width:0}
.entry-field>label,.field-label{display:block;font-weight:650;font-size:12px;margin-bottom:8px;color:#354a67}
.entry-field input:not([type=checkbox]),.entry-field select,.entry-field textarea{width:100%!important}
.entry-module{grid-column:5;grid-row:1/span 2}
.entry-description{grid-column:1/span 4}
.entry-description textarea{height:100px;min-height:100px}
.duration-fields{display:flex;align-items:center;gap:7px}
.duration-fields input{min-width:0;padding-left:8px!important;padding-right:3px!important}
.duration-fields span{font-size:12px;color:var(--muted)}
.extra-time{display:flex;gap:9px;align-items:center;grid-column:1/span 3;font-size:13px;align-self:center;cursor:pointer}
.entry-actions{display:flex;justify-content:flex-end;gap:10px;grid-column:4/span 2}
.entry-actions input{min-width:96px}
table.edit_form{float:none;width:100%;border-spacing:0 10px}
table.edit_form td{padding:3px 5px;vertical-align:middle}
table.edit_form td:first-child{font-size:12px;color:#536680;min-width:90px}
table.edit_form .inputtext,table.edit_form .inputselect{width:100%}
table.edit_form .inputtextarea{width:100%;min-width:0}
table.submit_form{margin-top:14px}
table.filter{border:0;border-collapse:separate;border-spacing:0;background:#f5f8fc;border-radius:8px;padding:8px;margin:0 0 18px}
table.filter td{padding:5px 8px;color:#52657e;font-size:12px}
table.filter td[align=center]{padding:0;text-align:left}
table.filter .a_button{display:block;padding:9px 14px;border-radius:6px;white-space:nowrap;color:#536784;font-size:12px;font-weight:600;text-align:center}
table.filter .a_button:hover{background:#e5eefb;color:var(--blue)}
table.filter .a_button.is_selected{background:var(--blue);color:white}
table.ajax_table{border:0;border-collapse:separate;border-spacing:0;font-size:12px;line-height:1.5;width:100%}
table.ajax_table td,table.ajax_table th{padding:11px 10px;border-bottom:1px solid #e9eef5;vertical-align:middle}
table.ajax_table tr.header{background:#f2f6fb;color:#425772;font-size:11px;letter-spacing:.01em}
table.ajax_table tr.header td{font-weight:700;border-top:1px solid #e6edf5}
table.ajax_table tr.header td:first-child{border-radius:6px 0 0 0}
table.ajax_table tr.header td:last-child{border-radius:0 6px 0 0}
table.ajax_table tr:not(.header):not(.fulltime):not(.totaltime){background:#fff!important}
table.ajax_table tr:not(.header):hover,table.ajax_table tr.over{background:#f4f8ff!important}
table.ajax_table tr.selected,table.ajax_table tr.selected2{background:#e2eeff!important}
table.ajax_table tr.totaltime{background:#f2f6fb;color:#405976;font-weight:650}
table.ajax_table tr.totaltime td{border-bottom:1px solid #dce6f3}
table.ajax_table tr.fulltime{background:#e5efff;color:#114ea8;font-weight:750}
table.ajax_table tr.fulltime td.time{border:0;font-size:14px}
table.ajax_table .time{white-space:nowrap;font-variant-numeric:tabular-nums}
table.ajax_table a{color:#1559b4}
table.ajax_table a:hover{text-decoration:underline}
table.ajax_table img{vertical-align:middle}
a.project_details{float:none;display:inline-block;margin-bottom:14px;font-size:13px}
.error{color:#b42336}
#request-error,.login-error{padding:12px 16px;border:1px solid #f0bcc4;border-radius:8px;background:#fff1f3;color:#a32035;font-size:13px}
#request-error{position:sticky;top:8px;z-index:2000;width:min(960px,calc(100% - 32px));margin:8px auto}
#ajax_loader{z-index:1500;position:fixed;top:50%;left:50%;margin:0;transform:translate(-50%,-50%);padding:12px;background:#fff;border-radius:12px;box-shadow:0 3px 24px #172b4926}
.ts-dialog{box-sizing:border-box;width:min(820px,94vw);max-height:90vh;overflow:auto;border:1px solid var(--line);border-radius:16px;padding:28px;color:var(--ink);background:#fff;box-shadow:0 24px 90px #11294b33}
.ts-dialog::backdrop{background:#0b1b35a3}
.ts-dialog h2{margin:0 50px 20px 0;font-size:21px}
.ts-dialog iframe{display:block;width:100%;height:240px;border:0}
.dialog-close{position:absolute;top:17px;right:17px}
.subclient-page{background:white;padding:12px}
#subclient-form{display:grid;gap:12px}
#subclient-form label{font-size:13px;font-weight:600}
#subclient-form button{justify-self:start;background:var(--blue);color:#fff}
.app-footer{display:flex;justify-content:space-between;gap:20px;padding:22px 0 28px;margin-top:14px;border-top:1px solid var(--line);font-size:11px;color:var(--muted)}
.app-footer strong{font-size:12px;color:#344e70}
.skip-link{position:absolute;left:16px;top:-100px;z-index:3000;background:#fff;padding:12px;border:2px solid var(--blue);border-radius:6px}
.skip-link:focus{top:10px}
.login-page{min-height:100vh;display:grid;place-items:center;padding:36px 20px;background:#f0f5fc}
.login-card{width:min(440px,100%);padding:32px 38px 26px;background:#fff;border:1px solid #e0e8f2;border-radius:20px;box-shadow:0 16px 60px #203f7010}
.login-brand{height:76px;display:flex;align-items:center;justify-content:center;overflow:hidden;margin:0 0 25px}
.login-brand img{display:block;width:270px;max-width:100%;height:auto}
.login-card h1{font-size:25px;margin:0 0 8px;font-weight:750}
.login-card .page-caption{font-size:13px;margin-bottom:27px}
.login-card form{display:grid;gap:9px}
.login-card label{font-size:12px;font-weight:650;margin-top:9px}
.login-card input:not([type=hidden]){width:100%;min-height:46px}
.login-card .primary-button{width:100%;min-height:46px;margin-top:20px;display:flex;align-items:center;justify-content:space-between}
.login-footer{text-align:center;color:#8190a3;font-size:11px;margin:26px 0 0}
.login-error{margin-bottom:16px}
@media(min-width:1600px){.workspace{padding-top:40px}}
@media(max-width:1200px){.app-header-inner{gap:10px 18px}.brand{flex-basis:185px}.brand img{width:215px}.account{font-size:12px}.app-nav a{padding:9px 10px}.time-entry-form{gap:18px 14px}.page-projects #project_list,.page-projects #project_edit,.page-projects #module_edit,.page-projects #module_list{grid-column:span 6}}
@media(max-width:1000px){.app-header-inner{flex-wrap:wrap}.app-nav{order:3;flex-basis:100%;padding:0 0 5px}.workspace{padding-top:24px}.time-entry-form{grid-template-columns:repeat(4,minmax(0,1fr))}.entry-module{grid-column:3/span 2;grid-row:2}.entry-description{grid-column:1/span 2;grid-row:2}.extra-time{grid-column:1/span 2}.entry-actions{grid-column:3/span 2}.entry-description textarea{height:152px}.page-projects #project_list,.page-projects #project_edit,.page-projects #module_edit,.page-projects #module_list{grid-column:span 12}.page-users #add_action,.page-users #free_days{grid-column:span 6}}
@media(max-width:680px){div.center,.center{width:calc(100% - 28px)}.app-header-inner{width:calc(100% - 28px);gap:4px 10px;min-height:70px}.brand{flex-basis:155px;height:49px}.brand img{width:185px}.account{gap:8px}.account-name{max-width:105px;font-size:11px}.account form{padding-left:8px}.app-nav{flex-wrap:nowrap;overflow-x:auto;gap:3px}.app-nav a{font-size:12px;padding:9px 11px}.workspace-heading{align-items:flex-start;margin-bottom:20px;gap:10px}.workspace-heading h1{font-size:26px}.eyebrow{font-size:9px}.workspace-date{display:none}.page-caption{font-size:12px}div.content{gap:16px}div.content .box{padding:18px;border-radius:11px}div.content h1,div.content h2{font-size:19px}.time-entry-form{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.entry-client{grid-column:1}.entry-project{grid-column:2}.entry-module{grid-column:1/span 2;grid-row:auto}.entry-description{grid-column:1/span 2;grid-row:auto}.entry-description textarea{height:110px;min-height:110px}.extra-time{grid-column:1/span 2}.entry-actions{grid-column:1/span 2;justify-content:flex-start}.entry-actions input{flex:1}.page-users #add_action,.page-users #free_days{grid-column:span 12}table.ajax_table{min-width:560px}table.ajax_table td{padding:10px 8px}table.filter{min-width:420px}table.filter .a_button{padding:9px 10px}table.edit_form td:first-child{min-width:80px}table.edit_form .inputtextarea{width:100%}.app-footer{padding:18px 0;font-size:10px}.login-card{padding:24px}.login-card h1{font-size:23px}.ts-dialog{padding:20px}.login-page{padding:20px 14px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;scroll-behavior:auto!important}}
@media print{body{background:#fff}.app-header,.workspace-heading,.app-footer,.skip-link,#add_action,#request-error{display:none!important}div.center,.center{width:100%}div.content{display:block}div.content .box{box-shadow:none;border:0;padding:0;overflow:visible}table.ajax_table{min-width:0}}

/* Submit controls must override the shared input appearance. */
input[type=submit].inputsubmit,button.primary-button{background:var(--blue);border-color:var(--blue);color:#fff;font-weight:650}
input[type=submit].inputsubmit:hover,button.primary-button:hover{background:var(--blue-dark);border-color:var(--blue-dark);color:#fff}

/* Readability and module search. */
table.ajax_table{font-size:14px}
table.ajax_table tr.header{font-size:12px}
select.inputselect,select.inputselect_o,select[size] option{font-size:14px}
.duration-fields select{width:70px!important;min-width:64px}
#module-search{margin-bottom:8px}
#module-count{display:block;color:var(--muted);font-size:11px;margin-top:6px}

/* Time entry: details on the left, a larger module picker on the right. */
#editForm.time-entry-form{grid-template-columns:repeat(2,minmax(0,1fr)) repeat(2,minmax(0,1.2fr));grid-template-areas:"date duration modules modules" "client project modules modules" "description description modules modules" "extra actions modules modules";gap:18px 24px}
#editForm .entry-date{grid-area:date}
#editForm .entry-duration{grid-area:duration}
#editForm .entry-client{grid-area:client}
#editForm .entry-project{grid-area:project}
#editForm .entry-description{grid-area:description}
#editForm .entry-description textarea{height:148px;min-height:148px}
#editForm .entry-module{grid-area:modules;display:flex;flex-direction:column;min-height:390px;align-self:stretch}
#editForm .entry-module #module_id{flex:1;min-height:300px;height:auto}
#editForm .extra-time{grid-area:extra}
#editForm .entry-actions{grid-area:actions;align-self:center}
@media(max-width:1000px){#editForm.time-entry-form{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}}
@media(max-width:760px){#editForm.time-entry-form{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-areas:"date duration" "client project" "description description" "modules modules" "extra extra" "actions actions"}#editForm .entry-module{min-height:320px}#editForm .entry-module #module_id{min-height:240px}#editForm .entry-actions{justify-content:flex-start}#editForm .entry-actions input{flex:1}}

/* Inline time-entry action: no dedicated Delete column. */
table.ajax_table td.timesheet-time-cell{position:relative;min-width:110px;width:110px;padding-right:46px;white-space:nowrap}
table.ajax_table button.timesheet-delete{position:absolute;top:50%;right:8px;transform:translateY(-50%);display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;min-height:32px;padding:0;border:1px solid transparent;border-radius:6px;background:transparent;color:#b42318;opacity:0;pointer-events:none;transition:opacity .12s,background-color .12s}
table.ajax_table tr.timesheet-entry:hover .timesheet-delete,table.ajax_table button.timesheet-delete:focus-visible{opacity:1;pointer-events:auto}
table.ajax_table button.timesheet-delete:hover{background:#fff0f0;border-color:#f0c3c3;color:#a11c12}

