Spaces:
Running
Running
Download hoursprig/index.html from CyberMax-tools/cybermax: direct link, hf CLI and curl.
- Browser
- Download file 27.8 kB
-
https://huggingface.co/spaces/CyberMax-tools/cybermax/resolve/main/hoursprig/index.html
- Command line
-
hf download hf://spaces/CyberMax-tools/cybermax/hoursprig/index.html
-
curl -L -o index.html https://huggingface.co/spaces/CyberMax-tools/cybermax/resolve/main/hoursprig/index.html
27.8 kB
| <html lang="en"> | |
| <head> | |
| <meta charset="utf-8"> | |
| <meta name="viewport" content="width=device-width,initial-scale=1"> | |
| <title>Time Card Calculator with Overtime & Printable Timesheet | Hoursprig</title> | |
| <meta name="description" content="Free time card calculator: enter in and out times, breaks and split or overnight shifts, get hours, overtime and pay, then print or download a signable timesheet."> | |
| <meta name="keywords" content="time card calculator, timesheet calculator, hours calculator, overtime calculator, work hours calculator, biweekly timesheet, timesheet template with overtime, printable timesheet"> | |
| <meta name="theme-color" content="#1F62B5"> | |
| <link rel="canonical" href="https://cybermax-tools-cybermax.static.hf.space/hoursprig/index.html"> | |
| <link rel="manifest" href="manifest.webmanifest"> | |
| <link rel="icon" href="icon.svg" type="image/svg+xml"> | |
| <link rel="apple-touch-icon" href="icon-192.png"> | |
| <meta property="og:type" content="website"> | |
| <meta property="og:site_name" content="CyberMax"> | |
| <meta property="og:title" content="Hoursprig: time card calculator with overtime and a printable timesheet"> | |
| <meta property="og:description" content="Hours, overtime and pay from your in and out times, plus a timesheet ready to sign. Free, no sign-up, nothing uploaded."> | |
| <meta property="og:url" content="https://cybermax-tools-cybermax.static.hf.space/hoursprig/index.html"> | |
| <meta property="og:image" content="https://cybermax-tools-cybermax.static.hf.space/hoursprig/og.png"> | |
| <meta name="twitter:card" content="summary_large_image"> | |
| <script type="application/ld+json"> | |
| {"@context":"https://schema.org","@graph":[ | |
| {"@type":"WebApplication","name":"Hoursprig","alternateName":"Hoursprig time card calculator","url":"https://cybermax-tools-cybermax.static.hf.space/hoursprig/index.html","image":"https://cybermax-tools-cybermax.static.hf.space/hoursprig/og.png","applicationCategory":"BusinessApplication","operatingSystem":"Any (web browser)","browserRequirements":"Requires JavaScript","description":"Time card and timesheet calculator for small employers, freelancers and staff: in and out times, split and overnight shifts, unpaid breaks, rounding, weekly and daily overtime, pay at an hourly rate, and a printable, signable weekly, bi-weekly or semi-monthly timesheet as PDF. Runs in the browser, nothing uploaded.","offers":[{"@type":"Offer","name":"Free","price":"0","priceCurrency":"USD","description":"1 employee, current pay period, weekly overtime, print and PDF with a small Hoursprig line"},{"@type":"Offer","name":"Hoursprig Pro Lifetime","price":"15","priceCurrency":"USD","description":"Multiple employees, saved periods history, CSV export for payroll, daily, double-time and 7th-day overtime rules, company logo, no footer line, JSON backup; pay once"}],"publisher":{"@type":"Organization","name":"CyberMax","email":"cybermax.tools@gmail.com"}}, | |
| {"@type":"FAQPage","mainEntity":[ | |
| {"@type":"Question","name":"Is Hoursprig really free?","acceptedAnswer":{"@type":"Answer","text":"Yes. One employee, the current pay period (weekly, bi-weekly or semi-monthly), split and overnight shifts, breaks, rounding, weekly overtime and pay, plus unlimited printing and PDF downloads with no account. Free timesheets carry a small Calculated with Hoursprig by CyberMax line."}}, | |
| {"@type":"Question","name":"How do I type the times?","acceptedAnswer":{"@type":"Answer","text":"Any way you like: 9, 9a, 9am, 9:30pm, 21:30, 0930 or noon. An out time without am or pm is read as the afternoon when that makes sense, so 9 to 5 is 8 hours. A shift that ends after midnight, such as 10pm to 6:30am, is counted on the day it starts."}}, | |
| {"@type":"Question","name":"Why not Clockify?","acceptedAnswer":{"@type":"Answer","text":"Clockify is a full time-tracking service with apps and team features, priced per seat: Basic $3.99 per seat a month billed annually or $4.99 monthly, Standard $5.49 or $6.99, Pro $7.99 or $9.99 (clockify.me/pricing, checked 2 Oct 2026). If you just need to add up time cards and print a timesheet, Hoursprig is free, and Pro is $15 once for the whole business."}}, | |
| {"@type":"Question","name":"Is my data private?","acceptedAnswer":{"@type":"Answer","text":"Yes. Hoursprig runs entirely in your browser. Names, times and pay rates are saved only on this device and the PDF is made on your device. Nothing is uploaded."}}, | |
| {"@type":"Question","name":"What does Pro add?","acceptedAnswer":{"@type":"Answer","text":"Multiple employees, a history of saved pay periods, CSV export for payroll, all overtime rules (daily overtime, double time and the 7th consecutive day rule), your company logo on timesheets, no footer line and JSON backup. It is $15 once."}}, | |
| {"@type":"Question","name":"Can I cancel?","acceptedAnswer":{"@type":"Answer","text":"There is nothing to cancel. Hoursprig Pro is a single $15 payment with no subscription, and the free plan stays free."}}]} | |
| ]} | |
| </script> | |
| <link rel="stylesheet" href="style.css"> | |
| </head> | |
| <body> | |
| <header class="top"><div class="wrap top-in"> | |
| <a class="brand" href="index.html" aria-label="Hoursprig home"><img src="icon.svg" alt="" width="30" height="30"><span><b>Hoursprig</b> <small>by CyberMax</small></span></a> | |
| <nav class="top-nav"> | |
| <button class="btn ghost sm" id="btn-install" type="button" hidden>Install app</button> | |
| <a href="#cmx-pro" class="top-link">Pricing</a> | |
| <a href="#cmx-pro" class="pill" id="pro-pill">Pro</a> | |
| </nav> | |
| </div></header> | |
| <main> | |
| <div class="wrap"> | |
| <section class="hero"> | |
| <h1>Time card calculator: hours, overtime and pay</h1> | |
| <p class="lede">For small employers, freelancers and staff. Type in and out times, breaks and split or overnight shifts; get total hours, overtime and pay, then print a timesheet ready to sign. <b>Free, no sign-up, nothing uploaded.</b></p> | |
| <div class="hero-row"> | |
| <button class="btn ghost" id="btn-example" type="button">Load example</button> | |
| <label class="sel-inline" for="example-kind"><span class="sr">Example</span> | |
| <select id="example-kind"> | |
| <option value="weekly">Weekly, split shift + weekly overtime</option> | |
| <option value="night">Bi-weekly, overnight shifts</option> | |
| <option value="daily">Daily overtime + 7th day (Pro rules)</option> | |
| </select></label> | |
| <span class="hero-note">Weekly, bi-weekly or semi-monthly · print & PDF free · works offline</span> | |
| </div> | |
| <a class="hero-summary" id="hero-summary" href="#sum" hidden></a> | |
| </section> | |
| </div> | |
| <section id="app" class="app wrap" aria-label="Time card calculator"> | |
| <div class="cols"> | |
| <form id="editor" class="editor" autocomplete="off" novalidate> | |
| <div class="card"> | |
| <div class="card-head"><h2>Employee & pay period</h2><span class="plan-chip" id="plan-chip"></span></div> | |
| <div class="emp-row"> | |
| <div class="emp-sel"><label for="f-emp">Employee</label><select id="f-emp"></select></div> | |
| <button type="button" class="btn ghost sm" id="btn-add-emp">+ Add employee <span class="pro-tag">PRO</span></button> | |
| <button type="button" class="btn ghost sm danger" id="btn-del-emp" hidden>Remove</button> | |
| </div> | |
| <div class="g3"> | |
| <div class="span2"><label for="f-name">Employee name</label><input id="f-name" data-emp="name" autocomplete="name" placeholder="Full name"></div> | |
| <div><label for="f-ref">Employee ID <span class="opt">optional</span></label><input id="f-ref" data-emp="ref" placeholder="E-104"></div> | |
| <div><label for="f-rate">Hourly rate</label><input id="f-rate" data-emp="rate" inputmode="decimal" placeholder="0.00"></div> | |
| <div class="span2"><label for="f-company">Company / employer</label><input id="f-company" data-top="company" autocomplete="organization" placeholder="Business name"></div> | |
| </div> | |
| <div class="period-row"> | |
| <div class="seg" role="radiogroup" aria-label="Pay period"> | |
| <button type="button" role="radio" data-kind="week" aria-checked="true">Weekly</button> | |
| <button type="button" role="radio" data-kind="biweek" aria-checked="false">Bi-weekly</button> | |
| <button type="button" role="radio" data-kind="semimonth" aria-checked="false">Semi-monthly</button> | |
| </div> | |
| <div class="start"><label for="f-start">Period starts</label> | |
| <div class="combo"><button type="button" class="icon-btn" id="btn-prev" aria-label="Previous period">‹</button><input id="f-start" type="date"><button type="button" class="icon-btn" id="btn-next" aria-label="Next period">›</button></div> | |
| </div> | |
| </div> | |
| <p class="hint" id="period-hint"></p> | |
| <div class="logo-row"> | |
| <div class="logo-prev" id="logo-prev" aria-live="polite">No logo</div> | |
| <label class="btn ghost sm file-btn" for="f-logo">Company logo <span class="pro-tag">PRO</span></label> | |
| <input type="file" id="f-logo" accept="image/png,image/jpeg,image/webp,image/svg+xml" hidden> | |
| <button type="button" class="btn ghost sm" id="btn-logo-clear" hidden>Remove logo</button> | |
| </div> | |
| </div> | |
| <div class="card"> | |
| <div class="card-head"><h2>Time card</h2><span class="hint tiny">Type 9, 9a, 9:30pm or 21:30</span></div> | |
| <div class="days-head" aria-hidden="true"><span>Day</span><span>In – Out</span><span>Break</span><span>Hours</span></div> | |
| <div id="days"></div> | |
| <div class="btns"> | |
| <button type="button" class="btn ghost sm" id="btn-copy">Copy first day to weekdays</button> | |
| <button type="button" class="btn ghost sm" id="btn-clear">Clear times</button> | |
| <button type="button" class="btn ghost sm" id="btn-undo" title="Undo (Ctrl+Z)" aria-keyshortcuts="Control+Z Meta+Z" disabled>↶ Undo</button> | |
| <button type="button" class="btn ghost sm" id="btn-redo" title="Redo (Ctrl+Shift+Z)" aria-keyshortcuts="Control+Shift+Z Control+Y" disabled>↷ Redo</button> | |
| </div> | |
| </div> | |
| <details class="card" id="rules" open> | |
| <summary><h2>Overtime & rounding</h2></summary> | |
| <div class="rule"> | |
| <label class="check"><input type="checkbox" id="r-weeklyOn" data-set="weeklyOn"> Weekly overtime after</label> | |
| <div class="combo sm"><input id="r-weeklyAfter" data-set="weeklyAfter" inputmode="decimal" aria-label="Weekly overtime after hours"><span>hours a week</span></div> | |
| <p class="hint">40 hours is the US federal (FLSA) weekly default. Check your state or country.</p> | |
| </div> | |
| <div class="g2"> | |
| <div><label for="r-otMult">Overtime rate</label><div class="combo sm"><input id="r-otMult" data-set="otMult" inputmode="decimal"><span>× hourly rate</span></div></div> | |
| <div><label for="r-rounding">Round clock times</label><select id="r-rounding" data-set="rounding"><option value="0">No rounding (exact minutes)</option><option value="5">Nearest 5 minutes</option><option value="6">Nearest 6 minutes (tenth of an hour)</option><option value="15">Nearest 15 minutes (quarter hour)</option></select></div> | |
| </div> | |
| <p class="hint" id="round-hint"></p> | |
| <div class="pro-rules"> | |
| <div class="rule"><label class="check"><input type="checkbox" id="r-dailyOn" data-set="dailyOn" data-pro="1"> Daily overtime after <span class="pro-tag">PRO</span></label> | |
| <div class="combo sm"><input id="r-dailyAfter" data-set="dailyAfter" inputmode="decimal" aria-label="Daily overtime after hours"><span>hours a day</span></div></div> | |
| <div class="rule"><label class="check"><input type="checkbox" id="r-dtOn" data-set="dtOn" data-pro="1"> Double time after <span class="pro-tag">PRO</span></label> | |
| <div class="combo sm"><input id="r-dtAfter" data-set="dtAfter" inputmode="decimal" aria-label="Double time after hours in a day"><span>hours a day, at</span><input id="r-dtMult" data-set="dtMult" inputmode="decimal" aria-label="Double time rate multiplier"><span>×</span></div></div> | |
| <div class="rule"><label class="check"><input type="checkbox" id="r-seventhOn" data-set="seventhOn" data-pro="1"> 7th consecutive day in a workweek: first 8 h overtime, the rest double time <span class="pro-tag">PRO</span></label></div> | |
| <p class="hint">Daily overtime hours are not counted again toward the weekly limit.</p> | |
| </div> | |
| <div class="g3"> | |
| <div><label for="r-currency">Currency</label><select id="r-currency" data-set="currency"></select></div> | |
| <div><label for="r-h24">Clock</label><select id="r-h24" data-set="h24"><option value="">12-hour (9:30 PM)</option><option value="1">24-hour (21:30)</option></select></div> | |
| <div><label for="r-paper">Paper</label><select id="r-paper" data-set="paper"><option value="">Auto</option><option value="Letter">US Letter</option><option value="A4">A4</option></select></div> | |
| <div class="only-semi"><label for="r-weekStart">Workweek starts</label><select id="r-weekStart" data-set="weekStart"></select></div> | |
| </div> | |
| </details> | |
| <div class="card"> | |
| <label for="f-notes" class="h2like">Notes on the timesheet <span class="opt">optional</span></label> | |
| <textarea id="f-notes" data-top="notes" rows="2" placeholder="Approved by, job or site, mileage…"></textarea> | |
| </div> | |
| <details class="card"> | |
| <summary><h2>Backup</h2></summary> | |
| <p class="hint">Everything lives in this browser only. Nothing is uploaded. A backup file moves your employees and saved periods to another device.</p> | |
| <div class="btns"><button type="button" class="btn ghost sm" id="btn-backup">Download backup (JSON) <span class="pro-tag">PRO</span></button><label class="btn ghost sm file-btn" for="f-restore">Restore backup</label><input type="file" id="f-restore" accept="application/json,.json" hidden></div> | |
| </details> | |
| </form> | |
| <aside class="preview-col" id="preview" aria-label="Totals and timesheet"> | |
| <div class="card sum" id="sum" aria-live="polite"></div> | |
| <div class="actions card"> | |
| <div class="act-row"> | |
| <button type="button" class="btn big" id="btn-pdf">Download PDF</button> | |
| <button type="button" class="btn ghost" id="btn-print">Print</button> | |
| <button type="button" class="btn ghost" id="btn-csv">CSV <span class="pro-tag">PRO</span></button> | |
| </div> | |
| <p class="limits" id="limits"></p> | |
| <p class="warn" id="warn" aria-live="polite"></p> | |
| </div> | |
| <div class="paper-wrap" id="paper-wrap"><div id="doc" class="paper" aria-label="Timesheet preview"></div></div> | |
| </aside> | |
| </div> | |
| </section> | |
| <div class="wrap"> | |
| <section class="pro-cta card" id="pro-cta" hidden> | |
| <div> | |
| <h2>Doing timesheets for a team?</h2> | |
| <p>Hoursprig Pro: every employee in one place, saved pay periods, a CSV for your payroll, daily and double-time overtime, your logo and no footer line. <b>$15 once</b>, no subscription.</p> | |
| </div> | |
| <button type="button" class="btn" id="btn-cta">See Pro</button> | |
| </section> | |
| <section class="history card" id="history" aria-labelledby="h-history"> | |
| <div class="hist-head"><h2 id="h-history">Saved pay periods <span class="pro-tag">PRO</span></h2><div class="btns" id="hist-btns"><button type="button" class="btn ghost sm" id="btn-save-hist">Save this period</button><button type="button" class="btn ghost sm" id="btn-csv-all">Export CSV for payroll</button></div></div> | |
| <div id="hist-body"></div> | |
| </section> | |
| <section class="how" id="how"> | |
| <h2>How it works</h2> | |
| <ol class="steps"> | |
| <li><b>Type the times.</b> In and out for each day, as many pairs as a split shift needs, and the unpaid break in minutes. Shifts past midnight are handled for you.</li> | |
| <li><b>Check the totals.</b> Hours in hours:minutes and decimal, regular and overtime split by your rules, and pay at the hourly rate, updated as you type.</li> | |
| <li><b>Print or download.</b> A clean weekly, bi-weekly or semi-monthly timesheet with signature lines for the employee and employer, as PDF or straight to the printer.</li> | |
| </ol> | |
| </section> | |
| <section class="example card" id="worked"> | |
| <h2>Worked example: weekly overtime</h2> | |
| <p>Jordan works Monday to Saturday at $22.50 an hour: 8:00, 8:00, 9:30, 8:30, 10:00 and 4:30 hours after unpaid breaks, <b>48:30 hours</b> (48.50 decimal) in total. With the US federal weekly rule, the first 40 hours are regular and the <b>8:30 above 40 are overtime</b> at 1.5×.</p> | |
| <div class="table-wrap"><table class="ht"> | |
| <thead><tr><th>Line</th><th class="num">Hours</th><th class="num">Rate</th><th class="num">Pay</th></tr></thead> | |
| <tbody> | |
| <tr><td>Regular</td><td class="num">40.00</td><td class="num">$22.50</td><td class="num">$900.00</td></tr> | |
| <tr><td>Overtime (1.5×)</td><td class="num">8.50</td><td class="num">$33.75</td><td class="num">$286.88</td></tr> | |
| <tr><td><b>Gross pay</b></td><td class="num"><b>48.50</b></td><td></td><td class="num"><b>$1,186.88</b></td></tr> | |
| </tbody> | |
| </table></div> | |
| <p class="hint">This is the “Weekly, split shift” example above. Load it to see the full timesheet.</p> | |
| </section> | |
| <section class="compare" id="compare"> | |
| <h2>Hoursprig vs time-tracking apps</h2> | |
| <div class="table-wrap"> | |
| <table class="cmp"> | |
| <thead><tr><th scope="col">Tool</th><th scope="col">Price</th><th scope="col">Good to know</th></tr></thead> | |
| <tbody> | |
| <tr class="us"><th scope="row">Hoursprig Free</th><td>$0</td><td>1 employee, current pay period, split and overnight shifts, rounding, weekly overtime, pay, print and PDF; no account, works offline, nothing uploaded</td></tr> | |
| <tr class="us"><th scope="row">Hoursprig Pro</th><td><b>$15 once</b></td><td>Every employee, saved periods, CSV for payroll, daily, double-time and 7th-day overtime, your logo, no footer line</td></tr> | |
| <tr><th scope="row"><a href="https://clockify.me/pricing" target="_blank" rel="noopener nofollow">Clockify</a></th><td>Basic $3.99/seat/month billed annually or $4.99 monthly; Standard $5.49 or $6.99; Pro $7.99 or $9.99</td><td>Full time-tracking service with clock-in apps, timers and team features</td></tr> | |
| <tr><th scope="row"><a href="https://www.timely.com/blog/jibble-pricing/" target="_blank" rel="noopener nofollow">Jibble</a></th><td>Premium $2.49/user/month, Ultimate $4.99</td><td>Time clock app with clock-in apps and GPS features</td></tr> | |
| </tbody> | |
| </table> | |
| </div> | |
| <p class="hint">Rival prices checked 2 Oct 2026 from the linked pages (Jibble from a pricing summary on timely.com). Prices can change; check their sites. If your staff need to clock in from their phones or you need GPS, those apps do that and Hoursprig does not: Hoursprig is the quick calculator and the printable timesheet, paid once.</p> | |
| </section> | |
| <section class="faq" id="faq"> | |
| <h2>Questions</h2> | |
| <details><summary>Is Hoursprig really free?</summary><p>Yes. One employee, the current pay period (weekly, bi-weekly or semi-monthly), split and overnight shifts, breaks, rounding, weekly overtime and pay, plus unlimited printing and PDF downloads, with no account. Free timesheets carry a small “Made with Hoursprig by CyberMax” line.</p></details> | |
| <details><summary>How do I type the times?</summary><p>Any way you like: <code>9</code>, <code>9a</code>, <code>9am</code>, <code>9:30pm</code>, <code>21:30</code>, <code>0930</code> or <code>noon</code>. An out time without am or pm is read as the afternoon when that makes sense, so 9 to 5 is 8 hours. Add a second in/out pair for a split shift.</p></details> | |
| <details><summary>How are overnight shifts counted?</summary><p>A shift that ends after midnight, such as 10pm to 6:30am, is counted in full on the day it starts, and the timesheet marks the end time “+1 day”.</p></details> | |
| <details><summary>How does rounding work?</summary><p>Rounding moves each clock-in and clock-out time to the nearest 5, 6 or 15 minutes before the hours are added up. With 15 minutes, 8:07 becomes 8:00 and 8:08 becomes 8:15 (the “7-minute rule”); 6 minutes is a tenth of an hour. US federal rules (29 CFR 785.48) accept rounding to the nearest 5 minutes, tenth or quarter hour when it averages out fairly over time; some states are stricter. “No rounding” uses exact minutes.</p></details> | |
| <details><summary>How is overtime worked out?</summary><p>Free: hours over 40 in a workweek (the US federal FLSA default; you can change the limit and the 1.5× rate). Pro adds daily overtime (for example after 8 hours a day), double time (for example after 12 hours) and the 7th consecutive day rule used in some states such as California. Hours already counted as daily overtime are not counted again toward the weekly limit. Overtime rules differ by state and country, so check yours.</p></details> | |
| <details><summary>Why not Clockify?</summary><p>Clockify is a full time-tracking service with apps and team features, priced per seat: Basic $3.99 per seat a month billed annually or $4.99 monthly, Standard $5.49 or $6.99, Pro $7.99 or $9.99 (checked 2 Oct 2026). If you just need to add up time cards and print a timesheet, Hoursprig is free, and Pro is $15 once for the whole business.</p></details> | |
| <details><summary>Why not Jibble?</summary><p>Jibble is a time clock app with clock-in apps and GPS features; a pricing summary lists Premium at $2.49 per user a month and Ultimate at $4.99. Choose it if staff must clock in on their phones. Hoursprig is for working out hours, overtime and pay from times you already have, with nothing to install and nothing per user.</p></details> | |
| <details><summary>Is my data private?</summary><p>Yes. Hoursprig runs entirely in your browser. Names, times and pay rates are saved only on this device and the PDF is made on your device. Nothing is uploaded.</p></details> | |
| <details><summary>What does Pro add?</summary><p>Multiple employees, a history of saved pay periods, CSV export for payroll, all overtime rules (daily, double time and 7th consecutive day), your company logo on timesheets, no footer line and JSON backup. It is $15 once.</p></details> | |
| <details><summary>Can I cancel?</summary><p>There is nothing to cancel: Hoursprig Pro is a single $15 payment with no subscription, and the free plan stays free.</p></details> | |
| <details><summary>Can the timesheet be signed?</summary><p>Yes. Every timesheet has signature and date lines for the employee and the supervisor or employer. Print it and sign it, or sign the PDF in any PDF reader.</p></details> | |
| </section> | |
| <p class="disclaimer">Hoursprig calculates from your inputs and settings; it is not legal or payroll advice. Overtime rules differ by state and country.</p> | |
| </div> | |
| </main> | |
| <div class="wrap"> | |
| <footer class="more"> | |
| <!-- guides:start --><div class="more-title">Hoursprig guides</div><div class="more-links"><a href="time-card-calculator-with-lunch-break/index.html">Time Card Calculator with Lunch Break (Free)</a><a href="biweekly-timesheet-calculator/index.html">Biweekly Timesheet Calculator (2 Weeks, Overtime Per Week)</a><a href="hours-and-minutes-to-decimal/index.html">Hours and Minutes to Decimal: Timesheet Calculator + Chart</a><a href="california-overtime-calculator/index.html">California Overtime Calculator: Daily OT, Double Time, 7th Day</a></div><!-- guides:end --> | |
| <div class="more-title">More free tools for business from CyberMax</div> | |
| <div class="more-links"> | |
| <a href="https://cybermax-tools-cybermax.static.hf.space/rotasprig/index.html" target="_blank" rel="noopener">Rotasprig · staff schedules</a> | |
| <a href="https://cybermax-tools-cybermax.static.hf.space/billsprig/index.html" target="_blank" rel="noopener">Billsprig · invoice your hours</a> | |
| <a href="https://cybermax-tools-cybermax.static.hf.space/pitchsprig/index.html" target="_blank" rel="noopener">Pitchsprig · proposals</a> | |
| <a href="https://cybermax-tools-cybermax.static.hf.space/sigsprig/index.html" target="_blank" rel="noopener">Sigsprig · email signatures</a> | |
| <a href="https://cybermax-tools-cybermax.static.hf.space/platesprig/index.html" target="_blank" rel="noopener">Platesprig · menu & food cost</a> | |
| <a href="https://cybermaxtools.com/store/?utm_source=hoursprig&utm_medium=more-from" target="_blank" rel="noopener">CyberMax Store</a> | |
| </div> | |
| <div class="copy">© 2026 CyberMax. All rights reserved. · Support: <a href="mailto:cybermax.tools@gmail.com">cybermax.tools@gmail.com</a></div> | |
| </footer> | |
| </div> | |
| <div class="mbar" id="mbar"><a class="btn ghost" href="#preview" id="m-preview">Totals</a><button type="button" class="btn" id="m-pdf">Download PDF</button></div> | |
| <div class="toast" id="toast" role="status" aria-live="polite" hidden></div> | |
| <script>window.CMX_PRO={"id":"hoursprig","name":"Hoursprig","free":"1 employee and the current pay period, weekly overtime, print and PDF with a small Hoursprig line.","perks":["Multiple employees","Saved pay periods history","CSV export for payroll","All overtime rules: daily, double time and 7th day","Company logo on timesheets","No footer line on print and PDF","JSON backup"],"plans":[{"offer":"st-hoursprig-pro-lifetime","label":"Lifetime","price":"$15","per":" once","note":"Pay once, keep forever"}]};</script> | |
| <script src="pro.js"></script> | |
| <script src="lib/calc.js"></script> | |
| <script src="lib/pdf.js"></script> | |
| <script src="app.js"></script> | |
| <!-- cybermax-count:start --><script>(function(){try{var D="https://data.cybermaxtools.com",P=location.host+location.pathname,H=navigator.webdriver||!(navigator.languages&&navigator.languages.length)||!screen.width?"&h=1":"",Z=function(x){navigator.sendBeacon?navigator.sendBeacon(x):(new Image).src=x},V=null,K="cmx-visit";if(navigator.doNotTrack!=="1")try{var o=JSON.parse(sessionStorage.getItem(K)||"null"),t=Date.now();if(!o||t-o.t>18e5)o={e:P,n:0};o.n++;o.t=t;sessionStorage.setItem(K,JSON.stringify(o));V=o}catch(e){}var u=D+"/v?p="+encodeURIComponent(P)+"&r="+encodeURIComponent((function(r){var h=r.split("/")[2]||"";return h===location.host?r.split(/[?#]/)[0]:h})(document.referrer||""))+H+(function(){var q=new URLSearchParams(location.search),s=q.get("utm_source"),t=(q.get("s")||"").toLowerCase().replace(/[^a-z0-9-]/g,"-").slice(0,80);return s?"&us="+encodeURIComponent(s)+"&uc="+encodeURIComponent(q.get("utm_campaign")||""):t?"&us=s&uc="+encodeURIComponent(t):""})()+(V?"&vn="+V.n+(V.n>1?"&ve="+encodeURIComponent(V.e):""):"");Z(u);if(!V)return;var B="a[data-count],a[href*=\"buy.stripe.com\"],a[href*=\"data.cybermaxtools.com/buy/\"],a[href*=\".workers.dev/buy/\"],a[href*=\"buy.polar.sh\"],a[href*=\"polar.sh/checkout\"],[data-cmx-buy]",E=function(k){try{var o=JSON.parse(sessionStorage.getItem(K)||"null");if(!o||o[k])return;o[k]=1;sessionStorage.setItem(K,JSON.stringify(o));Z(D+"/v?p="+encodeURIComponent(P)+"&ev="+k+"&ve="+encodeURIComponent(o.e)+H)}catch(e){}};document.addEventListener("click",function(x){var a=x.target&&x.target.closest&&x.target.closest(B);if(a){E("seen");E("click")}},true);var S=V.seen,C=function(){if(S)return;var l=document.querySelectorAll(B),w=innerWidth,h=innerHeight;for(var i=0;i<l.length;i++){var r=l[i].getBoundingClientRect();if(r.width>0&&r.height>0&&r.bottom>0&&r.right>0&&r.top<h&&r.left<w){S=1;E("seen");return}}},T0=Date.now(),I=setInterval(function(){C();if(S||Date.now()-T0>6e5)clearInterval(I)},1500),R=0;addEventListener("scroll",function(){if(!R&&!S){R=1;setTimeout(function(){R=0;C()},250)}},{passive:true});document.readyState=="loading"?document.addEventListener("DOMContentLoaded",C):C()}catch(e){}})()</script><!-- cybermax-count:end --></body> | |
| </html> | |