:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#18251f;background:#f4f6f3;font-synthesis:none;--green:#17473c;--green-2:#246454;--mint:#dcece4;--ink:#18251f;--muted:#68756f;--line:#dfe5e1;--paper:#fff}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{min-width:320px}button,input,select,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}a{color:inherit;text-decoration:none}h1,h2,h3,p{margin-top:0}h1,h2,h3,.brand{font-family:Inter,ui-sans-serif,system-ui,sans-serif}h1{font-size:clamp(1.7rem,3vw,2.35rem);line-height:1.1;letter-spacing:-.045em;margin-bottom:.45rem}h2{font-size:1.15rem;letter-spacing:-.025em}.eyebrow{color:#508073;font-size:.7rem;font-weight:700;letter-spacing:.13em;text-transform:uppercase}.muted{color:var(--muted)}.app-shell{min-height:100vh}.sidebar{width:244px;position:fixed;inset:0 auto 0 0;z-index:30;background:#123a31;color:#fff;padding:28px 18px 20px;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:11px;font-weight:700;font-size:1.22rem;padding:0 10px 30px;letter-spacing:-.03em}.brand-mark{width:38px;height:38px;display:inline-grid;place-items:center;background:#d5ecdf;color:#123a31;border-radius:12px}.sidebar nav{display:grid;gap:4px}.sidebar nav a,.nav-button{display:flex;align-items:center;gap:12px;border:0;color:#c5d7d1;background:transparent;padding:11px 12px;border-radius:9px;font-weight:500;font-size:.9rem;text-align:left}.sidebar nav a:hover,.nav-button:hover{color:#fff;background:#ffffff12}.sidebar nav a.active{color:#123a31;background:#d9ebe3;font-weight:700}.sidebar-bottom{margin-top:auto;border-top:1px solid rgba(255,255,255,.12);padding-top:18px}.profile{display:flex;align-items:center;gap:10px;padding:0 8px 14px}.profile>span:last-child{display:grid;min-width:0}.profile strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.85rem}.profile small{color:#9db7af;font-size:.67rem}.avatar{width:34px;height:34px;flex:none;border-radius:50%;display:grid;place-items:center;background:#2a6253;font-size:.72rem;font-weight:700}.main{margin-left:244px;min-height:100vh}.topbar{height:70px;border-bottom:1px solid var(--line);background:#ffffffc7;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);display:flex;align-items:center;justify-content:flex-end;padding:0 40px;position:sticky;top:0;z-index:15}.language-select,.login-language select{border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);padding:7px 10px;font-weight:700;font-size:.78rem}.language-select{flex:0 0 68px;width:68px;min-width:68px;max-width:68px;min-height:34px;padding:6px 8px}.page{max-width:1240px;margin:auto;padding:38px 40px 70px}.page-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:26px}.page-heading p{color:var(--muted);margin-bottom:0}.mobile-menu{display:none}.primary,.secondary,.week-toolbar button,.text-button{border:0;display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:9px;font-weight:700;font-size:.86rem}.primary{background:var(--green);color:#fff;padding:10px 16px;box-shadow:0 3px 10px #17473c24}.primary:hover{background:var(--green-2)}.primary:disabled{opacity:.5;cursor:not-allowed}.secondary{background:#edf1ee;color:var(--ink);padding:10px 16px}.wide{width:100%;padding:13px}.text-button{background:transparent;color:var(--green-2);padding:5px 0}.panel,.week-card,.review-card{background:var(--paper);border:1px solid var(--line);border-radius:14px;box-shadow:0 5px 22px #1630270b}.panel{padding:22px;margin-bottom:22px}.status{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:5px 10px;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.status.open,.status.approved{background:#dcefe5;color:#176047}.status.locked{background:#e9ecea;color:#59635e}.status.pending{background:#fff0cf;color:#8d6512}.summary-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:24px}.summary-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:20px;display:grid;grid-template-columns:43px 1fr;gap:4px 12px;align-items:center}.summary-card>span:nth-child(2){font-size:.78rem;color:var(--muted);align-self:end}.summary-card strong{font-size:1.6rem;font-weight:700;grid-column:2;line-height:1}.summary-icon{grid-row:1/3;width:43px;height:43px;border-radius:11px;display:grid;place-items:center;font-weight:700}.tone-0{background:#deeee7;color:#1c604c}.tone-1{background:#e6e8f3;color:#4d5580}.tone-2{background:#f7ead3;color:#976e29}.tone-3{background:#efe2ec;color:#865074}.action-panel{display:flex;align-items:center;justify-content:space-between;padding:28px;background:linear-gradient(120deg,#fff 55%,#edf5f1)}.action-panel h2{font-size:1.45rem;margin:.35rem 0}.week-toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.week-toolbar button{background:transparent;color:var(--green);padding:8px}.week-card{overflow:hidden}.day{display:grid;grid-template-columns:150px 1fr;min-height:94px;border-bottom:1px solid var(--line)}.day-label{background:#f7f9f7;padding:18px 20px;display:grid;grid-template-columns:1fr auto;align-content:center}.day-label strong{grid-column:1/3;font-size:.86rem}.day-label span{color:var(--muted);font-size:.76rem}.day-label b{font-size:.76rem;color:var(--green)}.day-entries{padding:14px 18px;display:flex;flex-direction:column;justify-content:center;gap:8px;min-width:0}.entry-row{display:grid;grid-template-columns:minmax(170px,1fr) 90px minmax(150px,1.4fr) 34px 34px;gap:7px;position:relative}input,select,textarea{border:1px solid #d7ded9;background:#fff;border-radius:8px;min-height:39px;padding:8px 10px;color:var(--ink);width:100%;outline:none}input:focus,select:focus,textarea:focus{border-color:#4b8a79;box-shadow:0 0 0 3px #4b8a791f}textarea{resize:vertical;min-height:80px}.icon-button{width:34px;height:39px;border:0;border-radius:8px;display:grid;place-items:center}.icon-button.save{background:var(--green);color:#fff}.icon-button.danger{background:#f7e7e4;color:#a84336}.row-error{color:#a84336;grid-column:1/-1}.add-entry{align-self:flex-start;border:0;background:transparent;color:#32705f;padding:6px 3px;display:flex;align-items:center;gap:6px;font-weight:700;font-size:.78rem}.entry-readonly{display:grid;grid-template-columns:1fr 80px 1.2fr;gap:10px;align-items:center;font-size:.85rem}.entry-readonly>span:last-child{color:var(--muted)}.week-total{padding:19px 25px;display:flex;justify-content:flex-end;align-items:center;gap:25px;background:#173f35;color:#fff}.week-total strong{font-size:1.35rem;font-weight:700}.form-grid,.settings-form{display:grid;grid-template-columns:1fr 1fr;gap:18px}label{display:grid;gap:7px;color:#405049;font-size:.78rem;font-weight:700}.span-2,.form-error.full{grid-column:1/-1}.form-actions{display:flex;justify-content:flex-end;align-items:end;gap:8px;grid-column:1/-1}.form-error{color:#9c3328;background:#fbeae7;border:1px solid #efc8c1;border-radius:8px;padding:10px 12px;font-size:.82rem}.table-wrap{overflow-x:auto;padding:0}.table-wrap>h2{padding:20px 22px 0}table{border-collapse:collapse;width:100%}th{color:#66746e;background:#f7f9f7;text-transform:uppercase;letter-spacing:.055em;font-size:.66rem;text-align:left;padding:12px 18px;border-bottom:1px solid var(--line)}td{padding:15px 18px;border-bottom:1px solid #edf0ee;font-size:.84rem}tbody tr:last-child td{border-bottom:0}.table-actions{display:flex;gap:14px;flex-wrap:wrap}.empty-state{text-align:center;color:var(--muted);padding:40px 20px}.project-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.project-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:20px;display:grid;grid-template-columns:1fr auto;gap:14px}.project-card h3{margin:14px 0 5px;font-size:1rem}.project-card p{font-size:.76rem;color:var(--muted);margin:0}.project-card>.text-button{grid-column:1/-1;justify-self:start}.project-hours{text-align:right}.project-hours strong{display:block;font-size:1.3rem;font-weight:700}.project-hours span{font-size:.7rem;color:var(--muted)}.inline-fields{display:flex;gap:7px}.inline-fields input{width:85px}.review-card{overflow:hidden;max-width:800px;margin:auto}.review-head{padding:21px 25px;background:#173f35;color:#fff;display:flex;justify-content:space-between}.review-day{display:grid;grid-template-columns:150px 1fr;border-bottom:1px solid var(--line);padding:18px 24px;gap:18px}.review-day time{font-weight:700;text-transform:capitalize}.review-day p{display:grid;grid-template-columns:1fr auto;margin:0 0 10px;gap:2px 15px}.review-day p small{grid-column:1/-1;color:var(--muted)}.review-card footer{padding:18px 24px;display:flex;justify-content:flex-end}.admin-entry-row{display:grid;grid-template-columns:minmax(130px,1fr) 75px minmax(110px,1fr) 34px 34px;gap:6px;margin-bottom:8px}.admin-add-entry{display:grid;grid-template-columns:130px 145px minmax(150px,1fr) 80px minmax(120px,1fr) auto;gap:8px;align-items:center;padding:18px 24px;background:#f2f6f4;border-bottom:1px solid var(--line)}.admin-add-entry strong{font-size:.8rem;color:var(--green)}.filters{display:grid;grid-template-columns:repeat(4,1fr) auto;gap:12px;align-items:end}.filter-button{min-height:39px}.pdf-panel{display:flex;align-items:end;justify-content:space-between;gap:20px}.pdf-panel h2{margin:.3rem 0 0}.pdf-panel label{min-width:170px;margin-left:auto}.stats-total{background:var(--green);color:#fff;padding:24px 28px;border-radius:14px;margin-bottom:18px;display:flex;justify-content:space-between;align-items:center}.stats-total strong{font-size:1.8rem;font-weight:700}.two-columns{display:grid;grid-template-columns:1fr 1fr;gap:18px}.stat-row{display:flex;justify-content:space-between;border-top:1px solid var(--line);padding:11px 0;font-size:.85rem}.stat-row:first-of-type{border-top:0}.month-filter{display:flex;justify-content:flex-end;margin-bottom:18px}.month-filter label{width:190px}.worker-stats-grid{display:grid;grid-template-columns:minmax(240px,.75fr) minmax(0,1.75fr);gap:18px}.loading-card{background:#fff;border:1px solid var(--line);padding:40px;border-radius:14px;color:var(--muted);text-align:center}.login-page{min-height:100vh;display:grid;grid-template-columns:1.08fr .92fr;background:#fff}.login-intro{color:#fff;background:#123a31;position:relative;overflow:hidden;padding:48px 8vw;display:flex;flex-direction:column;justify-content:space-between}.login-intro:after{content:"";position:absolute;width:520px;height:520px;border:100px solid rgba(213,236,223,.055);border-radius:50%;right:-250px;bottom:-180px}.login-logo{font-size:1.2rem;font-weight:700;display:flex;align-items:center;gap:10px}.login-intro h1{font-size:clamp(3rem,6vw,5.8rem);line-height:.9;margin:14px 0 28px;letter-spacing:-.07em}.login-intro h1 em{color:#a9d3c2;font-style:normal}.login-intro p{color:#bdd0ca;max-width:430px;font-size:1.05rem}.login-intro small{color:#87a89e}.login-intro .eyebrow{color:#8fc5b3}.login-panel{display:grid;place-items:center;padding:40px;position:relative}.login-language{position:absolute;right:35px;top:30px}.login-form{width:min(390px,100%)}.login-form h2{font-size:2rem;margin:.55rem 0}.login-form>p{color:var(--muted);margin-bottom:32px}.login-form label{margin-bottom:17px}.login-form .primary{margin-top:8px}.mobile-brand{display:none}.splash{height:100vh;display:grid;place-items:center;background:#123a31}.splash .brand-mark{animation:pulse 1.2s infinite alternate}@keyframes pulse{to{transform:scale(1.08);opacity:.8}}.scrim{display:none}@media(max-width:980px){.summary-grid,.project-grid,.filters{grid-template-columns:1fr 1fr}.filter-button{grid-column:1/-1}.login-intro{padding:45px}.entry-row{grid-template-columns:1fr 78px 34px 34px}.entry-row>input:nth-of-type(2){grid-column:1/3}.entry-row>.row-error{grid-column:1/-1}}@media(max-width:760px){.sidebar{transform:translate(-105%);transition:transform .2s;width:270px}.sidebar.open{transform:translate(0)}.main{margin-left:0}.topbar{height:58px;padding:0 18px}.mobile-menu{display:grid;place-items:center;position:fixed;z-index:45;left:14px;top:12px;width:35px;height:35px;background:transparent;border:0;color:var(--green)}.scrim{display:block;position:fixed;z-index:25;inset:0;border:0;background:#05151061}.page{padding:27px 15px 60px}.page-heading{align-items:flex-start}.page-heading>.primary{font-size:0;width:40px;height:40px;padding:0}.page-heading>.primary svg{margin:0}.day{grid-template-columns:1fr}.day-label{grid-template-columns:1fr auto;padding:12px 15px}.day-label strong{grid-column:1}.day-entries{padding:12px 14px}.week-toolbar strong{font-size:.8rem}.week-toolbar button{font-size:0}.week-toolbar button svg{margin:0}.entry-row{grid-template-columns:1fr 72px 34px 34px}.entry-row select{grid-column:1}.entry-row .hours-input{grid-column:2}.entry-row>input:nth-of-type(2){grid-column:1/5}.entry-readonly{grid-template-columns:1fr auto}.entry-readonly>span:last-child{grid-column:1/-1}.summary-grid,.project-grid,.two-columns,.worker-stats-grid{grid-template-columns:1fr}.month-filter label{width:100%}.action-panel,.pdf-panel{align-items:flex-start;flex-direction:column}.pdf-panel label{margin:0;width:100%}.form-grid,.settings-form{grid-template-columns:1fr}.form-grid>*,.settings-form>*{grid-column:1}.review-day{grid-template-columns:1fr}.review-day time{color:var(--green)}.admin-add-entry{grid-template-columns:1fr 1fr;padding:15px}.admin-add-entry strong,.admin-add-entry .row-error{grid-column:1/-1}.filters{grid-template-columns:1fr 1fr}.login-page{display:block;background:#123a31;padding:14px;min-height:100vh}.login-intro{display:none}.login-panel{background:#fff;border-radius:18px;min-height:calc(100vh - 28px);padding:50px 24px 30px}.login-language{right:18px;top:18px}.mobile-brand{display:flex;align-items:center;gap:8px;color:var(--green);font-size:1.2rem;font-weight:700;margin-bottom:50px}.login-form h2{font-size:1.7rem}}@media(max-width:480px){.summary-grid{grid-template-columns:1fr}.summary-card{padding:16px}.filters{grid-template-columns:1fr}.week-total{justify-content:space-between}.project-card{grid-template-columns:1fr auto}.review-head{padding:17px}.page-heading h1{font-size:1.65rem}.entry-row{grid-template-columns:minmax(0,1fr) 68px 34px}.entry-row select{grid-column:1}.entry-row .hours-input{grid-column:2}.entry-row .save,.entry-row .danger{grid-column:3}.entry-row:has(.danger) .save{grid-column:2}.entry-row>input:nth-of-type(2){grid-column:1/4}}
