@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/8a480f0b521d4e75-s.8e0177b5.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/7178b3e590c64307-s.b97b3418.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/caa3a2e1cccd8315-s.p.853070df.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Fallback;src:local(Arial);ascent-override:95.94%;descent-override:28.16%;line-gap-override:0.0%;size-adjust:104.76%}.geist_a71539c9-module__T19VSG__className{font-family:Geist,Geist Fallback;font-style:normal}.geist_a71539c9-module__T19VSG__variable{--font-geist-sans:"Geist","Geist Fallback"}
@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/4fa387ec64143e14-s.c1fdd6c2.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/bbc41e54d2fcbd21-s.799d8ef8.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/797e433ab948586e-s.p.dbea232f.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Fallback;src:local(Arial);ascent-override:74.67%;descent-override:21.92%;line-gap-override:0.0%;size-adjust:134.59%}.geist_mono_8d43a2aa-module__8Li5zG__className{font-family:Geist Mono,Geist Mono Fallback;font-style:normal}.geist_mono_8d43a2aa-module__8Li5zG__variable{--font-geist-mono:"Geist Mono","Geist Mono Fallback"}
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--spacing:.25rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.fixed{position:fixed}.static{position:static}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.border-collapse{border-collapse:collapse}.resize{resize:both}.border{border-style:var(--tw-border-style);border-width:1px}.uppercase{text-transform:uppercase}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}}:root{--background:#f4f6ef;--foreground:#1f2822;--panel:#fefcf7;--panel-border:#d6ddc6;--muted:#677566;--accent:#2b7a53;--accent-soft:#d9efe1}*{box-sizing:border-box}body{color:var(--foreground);font-family:var(--font-geist-sans),"Segoe UI",sans-serif;background:radial-gradient(at 12% 0,#eef6dc 0%,#0000 45%),radial-gradient(at 90% 8%,#d7efde 0%,#0000 32%),radial-gradient(at 50% 100%,#e8eed8 0%,#0000 40%),#f4f6ef;margin:0}h1,h2,h3,h4,p{margin:0}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr));gap:.9rem;margin-bottom:1.5rem;display:grid}.card{cursor:default;background:#fefcf7;border:1px solid #d6ddc673;border-radius:16px;padding:1.2rem;transition:all .22s;overflow:hidden;box-shadow:0 1px 2px #16291f08,0 4px 8px -2px #16291f0f,0 12px 24px -8px #16291f0f}.card:hover{transform:translateY(-2px);box-shadow:0 1px 2px #16291f08,0 6px 16px -4px #16291f14,0 16px 32px -8px #16291f14}.card h2{color:#8a9884;text-transform:uppercase;letter-spacing:.06em;font-size:.73rem;font-weight:500}.card p{letter-spacing:-.03em;color:#1f2822;margin-top:.3rem;font-size:1.5rem;font-weight:800;line-height:1.1}.stat-card{cursor:default;background:#fefcf7;border:1px solid #d6ddc673;border-radius:16px;align-items:center;gap:1rem;padding:1.2rem;transition:all .22s;display:flex;position:relative;overflow:hidden;box-shadow:0 1px 2px #16291f08,0 4px 8px -2px #16291f0f,0 12px 24px -8px #16291f0f}.stat-card:after{content:"";opacity:0;height:3px;transition:opacity .22s;position:absolute;top:0;left:0;right:0}.stat-card:hover{border-color:#d6ddc6b3;transform:translateY(-2px);box-shadow:0 2px 4px #16291f0a,0 8px 16px -4px #16291f14,0 20px 36px -12px #16291f1a}.stat-card:hover:after{opacity:1}.stat-green:after{background:linear-gradient(90deg,#2b7a53,#3ca66e)}.stat-amber:after{background:linear-gradient(90deg,#c2850c,#e5a528)}.stat-blue:after{background:linear-gradient(90deg,#3874a6,#5a9fd4)}.stat-muted:after{background:linear-gradient(90deg,#677566,#8a9e88)}.stat-icon{border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;width:44px;height:44px;display:flex}.stat-icon svg{width:22px;height:22px}.stat-icon-green{color:#1f6040;background:#d9efe1}.stat-icon-amber{color:#8b5e0a;background:#fef0d4}.stat-icon-blue{color:#2c5f88;background:#dfedf8}.stat-icon-muted{color:#556253;background:#e8eee2}.stat-value{letter-spacing:-.03em;color:#1f2822;margin:0 0 .1rem;font-size:1.5rem;font-weight:800;line-height:1.1}.stat-label{color:#8a9884;text-transform:uppercase;letter-spacing:.06em;margin:0;font-size:.73rem;font-weight:500}.stat-text{min-width:0}.content-grid{grid-template-columns:1fr 1fr;gap:1.15rem;display:grid}.dash-card{background:#fefcf7;border:1px solid #d6ddc673;border-radius:16px;overflow:hidden;box-shadow:0 1px 2px #16291f08,0 4px 8px -2px #16291f0f,0 12px 24px -8px #16291f0f}.dash-card-header{border-bottom:1px solid #eef1e6;justify-content:space-between;align-items:center;padding:1rem 1.25rem;display:flex}.dash-card-title{color:#1f2822;margin:0;font-size:.9rem;font-weight:700}.dash-card-action{color:#2b7a53;border-radius:8px;padding:.25rem .6rem;font-size:.78rem;font-weight:600;text-decoration:none;transition:all .16s}.dash-card-action:hover{color:#1f6040;background:#d9efe1}.dash-card-body{padding:0}.info-card{background:#fefcf7;border:1px solid #d6ddc673;border-radius:16px;margin-bottom:1.5rem;overflow:hidden;box-shadow:0 1px 2px #16291f08,0 4px 8px -2px #16291f0f,0 12px 24px -8px #16291f0f}.info-grid{grid-template-columns:1fr 1fr;gap:.6rem 2rem;padding:1.25rem;display:grid}.info-item{flex-direction:column;gap:.15rem;display:flex}.info-label{color:#8a9884;text-transform:uppercase;letter-spacing:.06em;font-size:.68rem;font-weight:600}.info-value{color:#1f2822;font-size:.88rem;font-weight:500}.info-value-link{color:#2b7a53;font-size:.88rem;font-weight:500;text-decoration:none}.info-value-link:hover{text-decoration:underline}.notes-block{color:#3a4a3e;white-space:pre-wrap;background:#eef1e666;border-radius:10px;padding:.85rem 1rem;font-size:.84rem;line-height:1.55}.section-title{color:#1f2822;margin:1.75rem 0 .75rem;font-size:1rem;font-weight:700}.empty-state{text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:2.5rem 1.5rem;display:flex}.empty-icon{background:#d9efe1;border-radius:14px;justify-content:center;align-items:center;width:48px;height:48px;margin-bottom:.85rem;font-size:1.3rem;display:flex}.empty-title{color:#3a4a3e;margin:0 0 .3rem;font-size:.88rem;font-weight:600}.empty-text{color:#8a9884;max-width:250px;margin:0 0 1.15rem;font-size:.82rem;line-height:1.5}.totals-block{border-top:1px solid #eef1e6;flex-direction:column;gap:.35rem;padding:1rem 1.25rem;display:flex}.totals-row{color:#3a4a3e;justify-content:space-between;padding:.2rem 0;font-size:.84rem;display:flex}.totals-row-bold{color:#1f2822;border-top:1px solid #eef1e6;justify-content:space-between;margin-top:.15rem;padding:.35rem 0;font-size:.88rem;font-weight:800;display:flex}.totals-label{color:#677566}.totals-value{font-variant-numeric:tabular-nums;font-weight:600}.dashboard-activity{flex-direction:column;gap:2rem;margin-top:1.5rem;display:flex}.dashboard-section-heading{color:#1f2822;margin:1.75rem 0 .75rem;font-size:1rem;font-weight:700}.table{border-collapse:collapse;width:100%;margin-top:1rem}.table th{color:#8a9884;letter-spacing:.08em;text-align:left;text-transform:uppercase;background:#eef1e680;padding:.6rem 1.25rem;font-size:.68rem;font-weight:600}.table th:last-child{text-align:right}.table td{color:#3a4a3e;text-align:left;vertical-align:middle;padding:.7rem 1.25rem;font-size:.84rem}.table td:last-child{text-align:right}.table tbody tr{transition:background .14s}.table tbody tr:nth-child(2n){background:#f4f6ef80}.table tbody tr:hover{background:#d9efe159}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;display:grid}.form-stack{gap:.75rem;display:grid}.form-sheet{max-width:760px}.form-hint{color:var(--muted);margin:0;font-size:.82rem;font-style:italic}.form-row{grid-template-columns:180px minmax(0,1fr);align-items:center;gap:.75rem;display:grid}.form-row label{color:#294237;font-size:.9rem;font-weight:600}.form-row .input{width:100%}.form-row .input.input-error{border-color:#c0392b}.field-error{color:#a13d3d;grid-column:2;margin:-.25rem 0 0;font-size:.8rem}.form-footer{margin-top:.25rem}.billing-type-toggle{background:#fefcf780;border:1px solid #d6ddc699;border-radius:10px;justify-self:start;gap:0;display:inline-flex;overflow:hidden}.billing-type-option{color:#4a5c4e;cursor:pointer;background:0 0;border:none;padding:.5rem 1.25rem;font-family:inherit;font-size:.85rem;font-weight:600;transition:background .15s,color .15s}.billing-type-option:not(:last-child){border-right:1px solid #d6ddc699}.billing-type-option:hover:not(.billing-type-active){background:#d9efe140}.billing-type-active{color:#fff;background:#2b7a53}.field-stack{gap:.35rem;display:grid}.field-stack label{color:#294237;font-size:.9rem;font-weight:600}.input{color:var(--foreground);font:inherit;background:#fffefb;border:1px solid #d6ddc6b3;border-radius:10px;min-height:42px;padding:.55rem .65rem;transition:border-color .16s,box-shadow .16s}.input:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #2b7a531a}.input::placeholder{color:#8a9484}.btn{color:#4a5c4e;cursor:pointer;white-space:nowrap;background:#fefcf7cc;border:1px solid #d6ddc699;border-radius:10px;justify-content:center;align-items:center;gap:.4rem;padding:.5rem 1rem;font-family:inherit;font-size:.82rem;font-weight:600;text-decoration:none;transition:all .16s;display:inline-flex}.btn:hover{color:#2b7a53;background:#fefcf7;border-color:#d6ddc6e6;transform:translateY(-1px);box-shadow:0 2px 4px #16291f0a,0 4px 12px -4px #16291f14}.btn:disabled{cursor:not-allowed;opacity:.7;box-shadow:none;transform:none}.btn-primary{color:#fff;background:linear-gradient(135deg,#2b7a53,#3ca66e);border:none;box-shadow:0 1px 3px #2b7a5333,0 4px 12px -4px #2b7a534d}.btn-primary:hover{color:#fff;background:linear-gradient(135deg,#247049,#339d60);box-shadow:0 2px 4px #2b7a5340,0 8px 20px -6px #2b7a5359}.btn-outline{color:#4a5c4e;background:0 0;border:1px solid #d6ddc699}.btn-outline:hover{background:#00000008;border-color:#d6ddc6e6}.btn-danger-outline{color:#b33b3b;background:0 0;border:1px solid #dc64644d}.btn-danger-outline:hover{background:#dc64640f;border-color:#dc646480}.btn.btn-danger{color:#fff;background:#c0392b;border:none}.btn.btn-danger:hover{color:#fff;background:#a93226;border-color:#0000}.client-actions{border-top:1px solid #d6ddc666;gap:.75rem;margin-top:2rem;padding-top:1.5rem;display:flex}.confirm-overlay{z-index:100;background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.confirm-dialog{background:#fff;border-radius:14px;width:90%;max-width:420px;padding:1.5rem;box-shadow:0 8px 32px #0000002e}.confirm-title{color:var(--foreground);margin:0 0 .5rem;font-size:1.05rem;font-weight:700}.confirm-text{color:var(--muted);margin:0 0 1.25rem;font-size:.88rem;line-height:1.5}.confirm-actions{justify-content:flex-end;gap:.5rem;display:flex}.badge{color:#1f5f40;letter-spacing:.02em;background:#d9efe1;border-radius:999px;padding:.2rem .6rem;font-size:.72rem;font-weight:650;display:inline-block}.badge-muted{color:#556253;background:#e8eee2}.badge-warning{color:#8b5e0a;background:#fef0d4}.badge-partial{color:#2c5f88;background:#dfedf8}.actions{align-items:center;gap:.5rem;display:flex}.list-block{gap:.75rem;margin-top:1rem;display:grid}.row{background:#fefcf7;border:1px solid #d6ddc673;border-radius:16px;justify-content:space-between;align-items:center;padding:1rem 1.25rem;transition:all .18s;display:flex;box-shadow:0 1px 2px #16291f08,0 4px 8px -2px #16291f0f}.row:hover{border-color:#d6ddc6b3;box-shadow:0 1px 2px #16291f08,0 6px 16px -4px #16291f14,0 12px 24px -8px #16291f0f}.row small{color:var(--muted)}.row-stack{flex-wrap:wrap;align-items:flex-start;gap:.75rem}.filter-bar{flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:1rem;display:flex}.filter-input{color:#3a4a3e;background:#fefcf7d9;border:1px solid #d6ddc699;border-radius:8px;outline:none;min-width:0;max-width:180px;min-height:36px;padding:.45rem .7rem;font-size:.8rem;transition:all .16s}.filter-input:focus{border-color:#2b7a53;box-shadow:0 0 0 3px #2b7a531a}.new-entry-cell{text-align:left;padding:.6rem 1.25rem}.new-entry-pill{color:#2b7a53;background:#d9efe173;border-radius:999px;align-items:center;gap:.3rem;padding:.35rem .85rem;font-size:.78rem;font-weight:600;transition:all .18s;display:inline-flex}.new-entry-row:hover .new-entry-pill{color:#1f6040;background:#d9efe1}.inline-form-row{background:#d9efe133}.inline-form-row td{vertical-align:top;padding:.45rem .5rem}.inline-form-input{border-radius:8px;width:100%;min-height:36px;padding:.35rem .5rem;font-size:.82rem}.inline-form-billable{cursor:pointer;color:var(--accent);align-items:center;gap:.25rem;font-weight:600;display:inline-flex}.inline-form-billable input[type=checkbox]{accent-color:var(--accent);width:16px;height:16px}.inline-form-save,.inline-form-cancel{min-height:36px;padding:.35rem .55rem;font-size:.82rem}.inline-form-error{color:#a13d3d;margin-top:.3rem;font-size:.8rem}.client-info{flex-direction:column;gap:.15rem;display:flex}.client-name-row{align-items:center;gap:.5rem;display:flex}.client-name{color:var(--foreground);font-size:1.1rem;font-weight:700}.client-detail{color:var(--muted);font-size:.85rem}.archive-section-heading{color:#1f2822;margin:1.75rem 0 .75rem;font-size:1rem;font-weight:700}.muted-copy{color:var(--muted);margin-top:.8rem}.loading-text{color:var(--muted);align-items:center;gap:.5rem;margin-top:.8rem;display:flex}.spinner{border:2.5px solid var(--panel-border);border-top-color:var(--accent);border-radius:50%;flex-shrink:0;width:18px;height:18px;animation:.8s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.error-msg{color:#a13d3d;margin-top:.8rem}.table-link{color:#2b7a53;font-variant-numeric:tabular-nums;font-weight:700;text-decoration:none}.table-link:hover{text-decoration:underline}.fab-button{z-index:20;position:fixed;bottom:1.5rem;right:1.5rem;box-shadow:0 12px 26px -18px #16291fcc}.modal-backdrop{z-index:30;background:#131e1933;border:0;padding:0;position:fixed;inset:0}.modal-sheet{background:var(--panel);border:1px solid var(--panel-border);z-index:31;border-radius:16px;width:min(420px,100vw - 2rem);padding:.9rem;position:fixed;box-shadow:0 28px 50px -35px #16291fbf}.modal-sheet-bottom-right{bottom:1.5rem;right:1.5rem}.modal-header{justify-content:space-between;align-items:flex-start;gap:.75rem;margin-bottom:.75rem;display:flex}.modal-header h2{font-size:1.1rem}.timer-tray-panel{-webkit-backdrop-filter:blur(18px)saturate(1.6);z-index:31;background:#fefcf7eb;border:1px solid #d6ddc680;border-radius:16px;flex-direction:column;width:min(340px,100vw - 2rem);padding:0;animation:.18s ease-out timerTraySlideUp;display:flex;position:fixed;bottom:1.5rem;right:1.5rem;box-shadow:0 1px 3px #16291f0a,0 12px 32px -8px #16291f2e}.timer-tray-header{border-bottom:1px solid #d6ddc680;justify-content:space-between;align-items:center;gap:.5rem;padding:.55rem .75rem;display:flex}.timer-tray-header-title{text-align:center;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:.9rem;font-weight:600;overflow:hidden}.timer-tray-body{flex-direction:column;padding:.75rem;display:flex}.timer-tray-clock-row{justify-content:center;align-items:center;gap:.75rem;display:flex}.timer-tray-clock{color:#1f5f40;letter-spacing:.04em;font-size:2rem;font-weight:700;line-height:1}.timer-tray-clock.timer-paused{opacity:.5}.timer-tray-clock small{font-size:1rem;font-weight:600}.timer-tray-clock-label{color:var(--muted);letter-spacing:.12em;text-align:center;margin-top:.25rem;font-size:.75rem}.timer-tray-minimize-btn{background:var(--accent-soft);color:var(--accent);cursor:pointer;border:1px solid #d6ddc680;border-radius:8px;justify-content:center;align-items:center;width:28px;height:28px;transition:all .16s;display:inline-flex}.timer-tray-minimize-btn:hover{background:#c9e8d4}.timer-tray-minimize-btn:disabled{cursor:not-allowed;opacity:.6}.timer-tray-pause-btn{color:#fff;cursor:pointer;background:linear-gradient(135deg,#2b7a53,#339e60);border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:42px;height:42px;transition:all .16s;display:inline-flex}.timer-tray-pause-btn:hover{transform:scale(1.05)}.timer-tray-pause-btn:disabled{cursor:not-allowed;opacity:.6;transform:none}.timer-tray-fields{border-top:1px solid #d6ddc680;flex-direction:column;margin-top:.75rem;padding-top:.5rem;display:flex}.timer-tray-field{border-bottom:1px solid #d6ddc659;align-items:center;gap:.5rem;padding:.5rem 0;display:flex}.timer-tray-field:last-child{border-bottom:none}.timer-tray-field-icon{color:var(--muted);flex-shrink:0;width:20px}.timer-tray-field select,.timer-tray-field input,.timer-tray-field textarea{color:var(--foreground);font:inherit;background:0 0;border:none;outline:none;flex:1;min-width:0;padding:.15rem 0;font-size:.9rem}.timer-tray-field textarea{resize:vertical;min-height:48px}.timer-tray-field select:disabled,.timer-tray-field input:disabled,.timer-tray-field textarea:disabled{opacity:.6}.timer-tray-field select::placeholder,.timer-tray-field input::placeholder,.timer-tray-field textarea::placeholder{color:#8a9484}.searchable-select{flex:1;min-width:0;position:relative}.searchable-select-bordered{width:100%}.searchable-select-input{color:var(--foreground);font:inherit;background:0 0;border:none;outline:none;width:100%;padding:.15rem 1.25rem .15rem 0;font-size:.9rem}.searchable-select-input-bordered{background:#fffefb;border:1px solid #d6ddc6b3;border-radius:10px;min-height:42px;padding:.55rem 1.5rem .55rem .65rem;transition:border-color .16s,box-shadow .16s}.searchable-select-input-bordered:focus{border-color:var(--accent);box-shadow:0 0 0 3px #2b7a531a}.searchable-select-input-bordered::placeholder{color:#8a9484}.searchable-select-input:disabled{opacity:.6}.searchable-select-input::placeholder{color:#8a9484}.searchable-select-clear{color:var(--muted);cursor:pointer;background:0 0;border:none;padding:0 .25rem;font-size:1rem;line-height:1;position:absolute;top:50%;right:0;transform:translateY(-50%)}.searchable-select-clear:hover{color:var(--foreground)}.searchable-select-dropdown{background:var(--panel);z-index:40;border:1px solid #d6ddc680;border-radius:10px;max-height:160px;margin:.25rem 0 0;padding:.25rem 0;list-style:none;position:absolute;top:100%;left:0;right:0;overflow-y:auto;box-shadow:0 4px 12px -2px #16291f1a,0 12px 24px -8px #16291f1f}.searchable-select-option{cursor:pointer;border-radius:6px;flex-direction:column;margin:0 .2rem;padding:.35rem .5rem;font-size:.85rem;display:flex}.searchable-select-option:hover{background:var(--accent-soft)}.searchable-select-option-selected{color:var(--accent);font-weight:600}.searchable-select-empty{color:var(--muted);padding:.35rem .5rem;font-size:.85rem}.client-list-primary{color:var(--foreground);font-size:.92rem;font-weight:600;display:block}.client-list-secondary{color:var(--muted);margin-top:.1rem;font-size:.8rem;font-weight:400;display:block}.cp-typeahead-row{line-height:1.3;display:block}.cp-typeahead-client{font-weight:600}.cp-typeahead-contact{color:var(--muted);margin-top:1px;font-size:.75rem;font-weight:400;line-height:1.2;display:block}.cp-typeahead-sep{color:var(--muted);margin:0 .1rem}.cp-typeahead-project{color:var(--muted)}.cp-typeahead-new{color:#2b7a53;font-style:italic}.timer-tray-actions{flex-direction:column;gap:.35rem;margin-top:.5rem;display:flex}.timer-tray-log-btn{color:#fff;cursor:pointer;font:inherit;background:linear-gradient(135deg,#2b7a53,#339e60);border:none;border-radius:10px;width:100%;padding:.65rem;font-size:.95rem;font-weight:600;transition:all .16s}.timer-tray-log-btn:hover{transform:translateY(-1px);box-shadow:0 4px 12px -4px #2b7a5359}.timer-tray-log-btn:disabled{cursor:not-allowed;opacity:.6;box-shadow:none;transform:none}.timer-tray-discard-btn{color:var(--muted);cursor:pointer;font:inherit;background:0 0;border:none;padding:.4rem;font-size:.85rem;transition:color .16s}.timer-tray-discard-btn:hover{color:#a13d3d}.timer-tray-discard-btn:disabled{cursor:not-allowed;opacity:.6}.timer-tray-chip{color:var(--foreground);cursor:pointer;z-index:30;background:#fff;border:1px solid #d6ddc699;border-radius:12px;align-items:center;gap:.45rem;padding:.4rem .5rem;transition:box-shadow .16s;display:inline-flex;position:fixed;bottom:1.5rem;right:1.5rem;box-shadow:0 2px 8px #16291f0f,0 8px 24px -6px #16291f24}.timer-tray-chip:hover{box-shadow:0 4px 12px #16291f14,0 12px 32px -6px #16291f2e}.timer-tray-chip-expand{color:var(--muted);justify-content:center;align-items:center;padding:.1rem;display:flex}.timer-tray-chip-dot{background:#2b7a53;border-radius:50%;width:7px;min-width:7px;height:7px;animation:2s ease-in-out infinite chipPulse}.timer-tray-chip-dot.timer-paused{background:var(--muted);animation:none}@keyframes chipPulse{0%,to{opacity:1}50%{opacity:.4}}.timer-tray-chip-label{color:var(--foreground);text-overflow:ellipsis;white-space:nowrap;max-width:200px;font-size:.82rem;font-weight:600;overflow:hidden}.timer-tray-chip-sep,.timer-tray-chip-project{color:var(--muted);font-weight:400}.timer-tray-chip-time{font-variant-numeric:tabular-nums;color:#2b7a53;letter-spacing:.02em;padding-left:.15rem;font-size:.85rem;font-weight:700}.timer-tray-chip-time.timer-paused{color:var(--muted)}.timer-tray-chip-pause{color:#2b7a53;cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;padding:.25rem;transition:color .12s,background .12s;display:flex}.timer-tray-chip-pause:hover{background:#2b7a531a}.timer-tray-chip-pause:disabled{opacity:.4;cursor:default}@keyframes timerTraySlideUp{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}.timer{gap:1rem;margin-top:1rem;display:grid}.timer-box{text-align:center;border:1px dashed #9eb8a3;border-radius:14px;padding:1rem}.timer-clock{color:#1f5f40;letter-spacing:.06em;font-size:2rem;font-weight:700}.invoice-section-heading{color:#1f2822;margin:1.75rem 0 .75rem;font-size:1rem;font-weight:700}.unbilled-project-list{gap:.5rem;margin-top:.75rem;display:grid}.unbilled-project-item{border:1px solid var(--panel-border);border-radius:10px;align-items:center;gap:.75rem;padding:.65rem .75rem;display:flex}.unbilled-project-item input[type=checkbox]{width:18px;height:18px;accent-color:var(--accent);flex-shrink:0}.unbilled-project-detail{flex:1;min-width:0}.unbilled-project-detail strong{font-size:.95rem;display:block}.unbilled-project-detail small{color:var(--muted);font-size:.85rem}.unbilled-project-amount{white-space:nowrap;font-weight:700}.line-items-table{border-collapse:collapse;width:100%;margin-top:.75rem}.line-items-table th,.line-items-table td{text-align:left;border-bottom:1px solid #d6ddc680;padding:.5rem}.line-items-table th{color:#8a9884;text-transform:uppercase;letter-spacing:.04em;font-size:.72rem;font-weight:600}.line-items-table .col-rate,.line-items-table .col-qty,.line-items-table .col-total{width:120px}.line-items-table .col-remove{text-align:center;width:40px}.line-items-table .input{width:100%;min-height:36px;padding:.35rem .5rem;font-size:.9rem}.btn-remove{color:var(--muted);cursor:pointer;background:0 0;border:none;padding:.25rem;font-size:1.1rem;transition:color .16s}.btn-remove:hover{color:#a13d3d}.invoice-totals{background:#eef1e64d;border-radius:12px;flex-direction:column;align-items:flex-end;gap:.35rem;margin-top:1.25rem;padding:1.25rem;display:flex}.invoice-totals-row{align-items:center;gap:1.5rem;font-size:.95rem;display:flex}.invoice-totals-row label{color:var(--muted);text-align:right;min-width:120px;font-weight:600}.invoice-totals-row span,.invoice-totals-row strong{text-align:right;min-width:100px}.invoice-totals-row.total-row{border-top:2px solid var(--foreground);padding-top:.35rem;font-size:1.1rem;font-weight:700}.invoice-totals-row .input{text-align:right;width:100px;min-height:32px;padding:.25rem .4rem;font-size:.9rem}.invoice-meta{color:#677566;margin-top:.5rem;font-size:.88rem;line-height:1.7}.invoice-meta strong{color:#1f2822;text-transform:uppercase;letter-spacing:.06em;font-size:.68rem;font-weight:600}.payment-form{background:#d9efe140;border:1px solid #d6ddc673;border-radius:16px;margin-bottom:1.5rem;padding:1.25rem}.auth-page{background:radial-gradient(at 12% 0,#eef6dc 0%,#0000 45%),radial-gradient(at 90% 8%,#d7efde 0%,#0000 32%),radial-gradient(at 50% 100%,#e8eed8 0%,#0000 40%),#f4f6ef;justify-content:center;align-items:center;min-height:100vh;padding:2rem;display:flex}.auth-card{-webkit-backdrop-filter:blur(18px)saturate(1.6);background:#fefcf7d9;border:1px solid #d6ddc680;border-radius:20px;width:100%;max-width:400px;padding:2.5rem 2.25rem;box-shadow:0 1px 3px #16291f0a,0 8px 24px -12px #16291f1f,0 20px 48px -20px #16291f1a}.auth-logo{width:auto;height:120px;margin:0 auto .25rem;display:block}.auth-heading{letter-spacing:-.02em;color:#1f2822;text-align:center;margin:0 0 1.5rem;font-size:1.25rem;font-weight:700}.auth-label{color:#4a5c4e;letter-spacing:.02em;margin-bottom:1rem;font-size:.8rem;font-weight:600;display:block}.auth-input{color:#1f2822;background:#fefcf799;border:1px solid #d6ddc699;border-radius:12px;width:100%;margin-top:.35rem;padding:.65rem .85rem;font-family:inherit;font-size:.92rem;transition:all .18s;display:block}.auth-input:focus{background:#fff;border-color:#2b7a53;outline:none;box-shadow:0 0 0 3px #2b7a531f}.auth-submit{color:#fff;cursor:pointer;background:linear-gradient(135deg,#2b7a53,#339e60);border:none;border-radius:12px;width:100%;margin-top:.75rem;padding:.7rem;font-size:.92rem;font-weight:600;transition:all .18s;box-shadow:0 2px 8px -2px #2b7a534d}.auth-submit:hover{transform:translateY(-1px);box-shadow:0 4px 12px -2px #2b7a5366}.auth-submit:disabled{opacity:.6;cursor:not-allowed;transform:none}.auth-error{color:#b91c1c;text-align:center;background:#b91c1c0f;border:1px solid #b91c1c1f;border-radius:10px;margin-bottom:1rem;padding:.55rem .75rem;font-size:.82rem}.auth-divider{color:#8a9884;align-items:center;gap:.75rem;margin:1.25rem 0;font-size:.78rem;font-weight:500;display:flex}.auth-divider:before,.auth-divider:after{content:"";border-top:1px solid #d6ddc680;flex:1}.auth-google-btn{color:#1f2822;cursor:pointer;background:#fefcf799;border:1px solid #d6ddc699;border-radius:12px;justify-content:center;align-items:center;gap:.6rem;width:100%;padding:.65rem;font-family:inherit;font-size:.92rem;font-weight:500;transition:all .18s;display:flex}.auth-google-btn:hover{background:#fff;border-color:#d6ddc6cc;transform:translateY(-1px);box-shadow:0 2px 8px -2px #16291f14}.auth-footer{color:#8a9884;text-align:center;margin-top:1.5rem;font-size:.82rem}.auth-footer a{color:#2b7a53;font-weight:600;text-decoration:none;transition:color .16s}.auth-footer a:hover{color:#1f6040;text-decoration:underline}.auth-forgot{text-align:right;margin-top:-.5rem;margin-bottom:.75rem;font-size:.78rem}.auth-forgot a{color:#2b7a53;font-weight:500;text-decoration:none;transition:color .16s}.auth-forgot a:hover{color:#1f6040;text-decoration:underline}.auth-success{color:#1f6040;text-align:center;background:#2b7a5314;border:1px solid #2b7a5326;border-radius:10px;margin-bottom:1rem;padding:.55rem .75rem;font-size:.82rem}.onboarding-progress{justify-content:center;gap:.5rem;margin-bottom:1.5rem;display:flex}.onboarding-dot{background:#d6ddc699;border-radius:50%;width:8px;height:8px;transition:background .2s}.onboarding-dot-active{background:#2b7a53}.onboarding-subtitle{color:#677566;text-align:center;margin-bottom:1.5rem;font-size:.88rem;line-height:1.55}.onboarding-checkbox-label{color:#3d4a3c;cursor:pointer;align-items:center;gap:.5rem;margin-top:-.25rem;margin-bottom:1.5rem;font-size:.88rem;display:flex}.onboarding-checkbox-label input[type=checkbox]{accent-color:#2b7a53;cursor:pointer;width:16px;height:16px}.onboarding-skip{text-align:center;color:#8a9884;cursor:pointer;background:0 0;border:none;margin-top:.75rem;font-family:inherit;font-size:.82rem;transition:color .16s;display:block}.onboarding-skip:hover{color:#2b7a53;text-decoration:underline}.onboarding-check{color:#2b7a53;background:#2b7a531a;border-radius:50%;justify-content:center;align-items:center;width:56px;height:56px;margin:0 auto 1rem;font-size:1.5rem;display:flex}.settings-section-heading{color:#1f2822;border-bottom:1px solid #d6ddc680;margin:1.75rem 0 .75rem;padding-bottom:.5rem;font-size:1rem;font-weight:700}.settings-section-heading:first-child{margin-top:0}.settings-value{color:var(--foreground);font-size:.95rem}.success-msg{color:var(--accent);margin-bottom:.75rem;font-size:.875rem}@media (max-width:768px){.grid-4{grid-template-columns:1fr 1fr}.form-grid{grid-template-columns:1fr}.form-row{grid-template-columns:1fr;align-items:stretch;gap:.35rem}.fab-button,.modal-sheet-bottom-right{bottom:calc(4.5rem + env(safe-area-inset-bottom,0px));right:1rem}.timer-tray-panel{bottom:calc(4.5rem + env(safe-area-inset-bottom,0px));border-bottom-right-radius:0;border-bottom-left-radius:0;width:auto;left:0;right:0}.timer-tray-chip{bottom:calc(4.5rem + env(safe-area-inset-bottom,0px));right:1rem}.time-entries-table{table-layout:auto;width:100%!important;min-width:0!important}.time-entries-table .actions button{min-height:0;padding:.2rem .35rem;font-size:.72rem}.time-entries-table td{padding-left:.35rem!important;padding-right:.35rem!important}.inline-form-row{box-sizing:border-box;background:#d9efe126;border-bottom:1px solid #d6ddc666;flex-wrap:wrap;gap:.4rem;width:100%;padding:.75rem .65rem;display:flex}.inline-form-row td{visibility:visible!important;width:calc(50% - .2rem)!important;max-height:none!important;padding:0!important;display:block!important;overflow:visible!important}.inline-form-row td:nth-child(5),.inline-form-row td:nth-child(6){width:100%}.inline-form-row td:nth-child(4) .inline-form-input{width:100%!important}.inline-form-row td .actions{flex-wrap:wrap;gap:.5rem}.new-entry-row td{padding:.6rem .65rem!important}.line-items-table{-webkit-overflow-scrolling:touch;display:block;overflow-x:auto}.line-items-table .col-rate,.line-items-table .col-qty,.line-items-table .col-total{width:90px;min-width:90px}.line-items-table .input{min-height:34px;padding:.3rem .4rem;font-size:.82rem}.payment-form .form-grid{grid-template-columns:1fr}}.pagination{justify-content:center;align-items:center;gap:1rem;padding:1rem 0;display:flex}.pagination-btn{cursor:pointer;background:#fff;border:1px solid #0000001f;border-radius:6px;padding:.4rem .75rem;font-size:.82rem;transition:background .15s,border-color .15s}.pagination-btn:hover:not(:disabled){background:#f3f4f6;border-color:#0003}.pagination-btn:disabled{opacity:.4;cursor:default}.pagination-info{color:#6b7280;font-size:.82rem}.pagination-size{color:#6b7280;align-items:center;gap:.25rem;margin-left:.5rem;font-size:.82rem;display:flex}.pagination-size-btn{cursor:pointer;background:#fff;border:1px solid #0000001f;border-radius:4px;padding:.2rem .5rem;font-size:.78rem;transition:background .15s,border-color .15s}.pagination-size-btn:hover{background:#f3f4f6;border-color:#0003}.pagination-size-active{color:#fff;background:#111827;border-color:#111827}.pagination-size-active:hover{background:#1f2937;border-color:#1f2937}.toast-container{z-index:9999;pointer-events:none;flex-direction:column-reverse;gap:.5rem;display:flex;position:fixed;bottom:1.5rem;right:1.5rem}.toast{pointer-events:auto;border-radius:10px;align-items:center;gap:.5rem;max-width:360px;padding:.7rem 1rem;font-size:.84rem;font-weight:500;animation:.28s forwards toast-in;display:flex;box-shadow:0 4px 12px #0000001a,0 1px 3px #0000000f}.toast-icon{border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:20px;height:20px;font-size:.7rem;font-weight:700;display:flex}.toast-success{color:#1a5c35;background:#f0faf3;border:1px solid #b6e2c8}.toast-success .toast-icon{color:#fff;background:#2b7a53}.toast-error{color:#991b1b;background:#fef2f2;border:1px solid #f5c6c6}.toast-error .toast-icon{color:#fff;background:#dc2626}@keyframes toast-in{0%{opacity:0;transform:translateY(12px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}
