EasyDocs Pro | Contractor & Landlord Documents
:root {
–bg: #0b1220;
–bg-alt: #0f172a;
–accent: #f59e0b;
–accent-soft: rgba(245, 158, 11, 0.12);
–text: #e5e7eb;
–muted: #9ca3af;
–card: #111827;
–border: #1f2937;
–error: #ef4444;
–radius-lg: 20px;
–radius-md: 12px;
–shadow-soft: 0 18px 45px rgba(0, 0, 0, 0.4);
–shadow-card: 0 10px 30px rgba(0, 0, 0, 0.35);
}
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
font-family: system-ui, -apple-system, BlinkMacSystemFont, “SF Pro Text”, sans-serif;
background: radial-gradient(circle at top, #111827 0, #020617 50%, #000 100%);
color: var(–text);
line-height: 1.6;
min-height: 100vh;
}
a {
color: inherit;
text-decoration: none;
}
img {
max-width: 100%;
display: block;
}
.page {
max-width: 1120px;
margin: 0 auto;
padding: 20px 18px 60px;
}
header {
display: flex;
align-items: center;
justify-content: space-between;
gap: 16px;
padding: 10px 6px 16px;
position: sticky;
top: 0;
z-index: 20;
backdrop-filter: blur(20px);
background: linear-gradient(to bottom, rgba(15, 23, 42, 0.96), rgba(15, 23, 42, 0.7), transparent);
border-bottom: 1px solid rgba(148, 163, 184, 0.1);
}
.logo-wrap {
display: flex;
align-items: center;
gap: 10px;
}
.logo-mark {
width: 32px;
height: 32px;
border-radius: 999px;
background: radial-gradient(circle at 20% 20%, #facc15, #f97316 40%, #111827 100%);
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0 0 32px rgba(251, 191, 36, 0.55);
position: relative;
overflow: hidden;
}
.logo-mark span {
font-weight: 800;
font-size: 16px;
color: #020617;
}
.logo-text-main {
font-weight: 700;
font-size: 18px;
letter-spacing: 0.02em;
}
.logo-text-sub {
font-size: 11px;
color: var(–muted);
text-transform: uppercase;
letter-spacing: 0.12em;
}
nav {
display: flex;
gap: 10px;
align-items: center;
font-size: 13px;
}
nav a {
padding: 6px 8px;
border-radius: 999px;
color: var(–muted);
border: 1px solid transparent;
transition: all 0.15s ease;
}
nav a:hover {
border-color: rgba(148, 163, 184, 0.45);
color: #e5e7eb;
background: rgba(15, 23, 42, 0.8);
}
.nav-cta {
background: var(–accent);
color: #111827;
font-weight: 600;
padding-inline: 14px;
box-shadow: 0 0 24px rgba(249, 115, 22, 0.7);
border-radius: 999px;
border: none;
}
.nav-cta:hover {
background: #fbbf24;
box-shadow: 0 0 32px rgba(251, 191, 36, 0.7);
color: #020617;
}
main {
margin-top: 16px;
}
.hero {
display: grid;
gap: 24px;
grid-template-columns: minmax(0, 6fr) minmax(0, 5fr);
align-items: center;
padding: 26px 6px 22px;
}
@media (max-width: 840px) {
.hero {
grid-template-columns: minmax(0, 1fr);
}
header {
position: static;
background: transparent;
}
nav {
display: none;
}
}
.tagline {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 4px 10px 4px 4px;
border-radius: 999px;
background: rgba(15, 23, 42, 0.8);
border: 1px solid rgba(148, 163, 184, 0.3);
margin-bottom: 16px;
font-size: 11px;
color: var(–muted);
}
.tag-dot {
width: 22px;
height: 22px;
border-radius: 999px;
background: radial-gradient(circle at 20% 10%, #bbf7d0, #22c55e 40%, #052e16 100%);
box-shadow: 0 0 22px rgba(34, 197, 94, 0.7);
}
.tagline strong {
color: #e5e7eb;
font-weight: 600;
}
h1 {
font-size: clamp(30px, 5vw, 40px);
line-height: 1.15;
margin-bottom: 10px;
letter-spacing: 0.01em;
}
h1 span.highlight {
color: var(–accent);
text-shadow: 0 0 24px rgba(249, 115, 22, 0.8);
}
.hero-subtitle {
font-size: 14px;
color: var(–muted);
max-width: 32rem;
margin-bottom: 18px;
}
.hero-subtitle strong {
color: #e5e7eb;
font-weight: 600;
}
.hero-actions {
display: flex;
flex-wrap: wrap;
gap: 10px;
margin-bottom: 14px;
}
.btn {
border-radius: 999px;
padding: 10px 18px;
font-size: 13px;
font-weight: 600;
border: 1px solid transparent;
cursor: pointer;
display: inline-flex;
align-items: center;
gap: 8px;
transition: all 0.15s ease;
}
.btn-primary {
background: linear-gradient(to right, #f97316, #facc15);
color: #111827;
box-shadow: 0 0 30px rgba(248, 171, 32, 0.9);
}
.btn-primary:hover {
background: linear-gradient(to right, #fb923c, #fde047);
transform: translateY(-1px);
box-shadow: 0 0 38px rgba(250, 204, 21, 0.9);
}
.btn-outline {
background: rgba(15, 23, 42, 0.9);
border-color: rgba(148, 163, 184, 0.6);
color: var(–muted);
}
.btn-outline:hover {
border-color: var(–accent);
color: #e5e7eb;
background: rgba(15, 23, 42, 0.96);
}
.hero-footnote {
font-size: 11px;
color: var(–muted);
}
.hero-footnote strong {
color: #e5e7eb;
font-weight: 500;
}
.hero-card {
background: radial-gradient(circle at top right, rgba(249, 115, 22, 0.1), transparent 60%), var(–bg-alt);
border-radius: var(–radius-lg);
padding: 18px 18px 16px;
border: 1px solid rgba(148, 163, 184, 0.3);
box-shadow: var(–shadow-soft);
position: relative;
overflow: hidden;
}
.hero-card::before {
content: “”;
position: absolute;
inset: 0;
border-radius: inherit;
border: 1px solid rgba(249, 250, 251, 0.08);
pointer-events: none;
}
.card-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 10px;
}
.card-title {
font-size: 14px;
font-weight: 600;
}
.status-pill {
font-size: 11px;
padding: 4px 9px;
border-radius: 999px;
background: rgba(22, 163, 74, 0.16);
color: #bbf7d0;
border: 1px solid rgba(34, 197, 94, 0.7);
}
.service-grid {
margin-top: 4px;
border-radius: var(–radius-md);
background: rgba(15, 23, 42, 0.95);
border: 1px solid rgba(31, 41, 55, 0.9);
display: grid;
grid-template-columns: 1.1fr 1.2fr;
gap: 0;
overflow: hidden;
box-shadow: var(–shadow-card);
}
@media (max-width: 840px) {
.service-grid {
grid-template-columns: 1fr;
}
}
.service-column {
padding: 12px 14px;
}
.service-column + .service-column {
border-left: 1px solid rgba(31, 41, 55, 0.9);
}
@media (max-width: 840px) {
.service-column + .service-column {
border-left: none;
border-top: 1px solid rgba(31, 41, 55, 0.9);
}
}
.service-label {
font-size: 11px;
text-transform: uppercase;
letter-spacing: 0.14em;
color: var(–muted);
margin-bottom: 6px;
}
.service-item {
display: flex;
justify-content: space-between;
align-items: baseline;
padding: 6px 0;
border-bottom: 1px dashed rgba(55, 65, 81, 0.9);
font-size: 12px;
gap: 6px;
}
.service-item:last-child {
border-bottom: none;
}
.service-item span {
max-width: 70%;
}
.service-price {
font-weight: 600;
color: #facc15;
white-space: nowrap;
}
.microcopy {
margin-top: 8px;
font-size: 11px;
color: var(–muted);
}
.microcopy strong {
color: #e5e7eb;
}
.process-pill-row {
display: flex;
flex-wrap: wrap;
gap: 6px;
margin-top: 10px;
font-size: 10px;
}
.pill {
border-radius: 999px;
padding: 4px 9px;
background: rgba(15, 23, 42, 0.9);
border: 1px solid rgba(55, 65, 81, 0.9);
color: var(–muted);
}
.pill span {
color: #e5e7eb;
font-weight: 500;
}
/* Sections */
section {
margin-top: 42px;
padding: 0 6px;
}
section h2 {
font-size: 20px;
margin-bottom: 10px;
}
section p.section-intro {
font-size: 13px;
color: var(–muted);
max-width: 32rem;
margin-bottom: 18px;
}
/* Services (cards) */
.cards-row {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 16px;
}
@media (max-width: 900px) {
.cards-row {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
}
@media (max-width: 640px) {
.cards-row {
grid-template-columns: minmax(0, 1fr);
}
}
.card {
background: rgba(15, 23, 42, 0.98);
border-radius: var(–radius-md);
border: 1px solid rgba(31, 41, 55, 0.95);
padding: 14px 14px 13px;
box-shadow: var(–shadow-card);
position: relative;
overflow: hidden;
}
.card-tag {
font-size: 10px;
text-transform: uppercase;
letter-spacing: 0.16em;
color: var(–muted);
margin-bottom: 4px;
}
.card h3 {
font-size: 15px;
margin-bottom: 6px;
}
.card p {
font-size: 12px;
color: var(–muted);
margin-bottom: 10px;
}
.check-list {
list-style: none;
font-size: 12px;
color: var(–muted);
margin-bottom: 6px;
}
.check-list li {
display: flex;
align-items: flex-start;
gap: 6px;
margin-bottom: 6px;
}
.check-bullet {
font-size: 14px;
line-height: 1;
color: #22c55e;
margin-top: 1px;
}
.card-footer-note {
font-size: 11px;
color: var(–muted);
}
.price-chip {
display: inline-flex;
align-items: center;
gap: 6px;
font-size: 11px;
padding: 4px 9px;
border-radius: 999px;
background: rgba(24, 24, 27, 0.9);
border: 1px solid rgba(120, 113, 108, 0.9);
margin-bottom: 8px;
}
.price-chip span {
color: #e5e7eb;
font-weight: 600;
}
/* Process section */
.process-steps {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 12px;
font-size: 12px;
}
@media (max-width: 900px) {
.process-steps {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
}
@media (max-width: 600px) {
.process-steps {
grid-template-columns: minmax(0, 1fr);
}
}
.step-card {
background: rgba(15, 23, 42, 0.98);
border-radius: var(–radius-md);
border: 1px solid rgba(31, 41, 55, 0.95);
padding: 12px 12px 11px;
box-shadow: var(–shadow-card);
}
.step-number {
width: 24px;
height: 24px;
border-radius: 999px;
border: 1px solid rgba(148, 163, 184, 0.7);
display: flex;
align-items: center;
justify-content: center;
font-size: 12px;
color: var(–muted);
margin-bottom: 6px;
}
.step-card h3 {
font-size: 13px;
margin-bottom: 4px;
}
.step-card p {
font-size: 11px;
color: var(–muted);
}
/* Pricing */
.pricing-grid {
display: grid;
grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr);
gap: 18px;
align-items: stretch;
}
@media (max-width: 840px) {
.pricing-grid {
grid-template-columns: minmax(0, 1fr);
}
}
.pricing-main {
background: rgba(15, 23, 42, 0.98);
border-radius: var(–radius-lg);
border: 1px solid rgba(31, 41, 55, 0.98);
padding: 16px 16px 14px;
box-shadow: var(–shadow-soft);
position: relative;
overflow: hidden;
}
.pricing-main::before {
content: “”;
position: absolute;
inset: 0;
border-radius: inherit;
border: 1px solid rgba(249, 250, 251, 0.05);
pointer-events: none;
}
.pricing-main h3 {
font-size: 16px;
margin-bottom: 4px;
}
.pricing-main p {
font-size: 12px;
color: var(–muted);
margin-bottom: 12px;
}
.pricing-row {
display: flex;
justify-content: space-between;
align-items: baseline;
border-bottom: 1px dashed rgba(55, 65, 81, 0.9);
padding: 6px 0;
font-size: 12px;
gap: 6px;
}
.pricing-row:last-child {
border-bottom: none;
}
.pricing-row span {
max-width: 70%;
}
.pricing-note {
margin-top: 9px;
font-size: 11px;
color: var(–muted);
}
.pricing-side {
background: rgba(15, 23, 42, 0.98);
border-radius: var(–radius-md);
border: 1px solid rgba(31, 41, 55, 0.95);
padding: 12px 13px 11px;
box-shadow: var(–shadow-card);
font-size: 12px;
}
.badge {
display: inline-flex;
align-items: center;
gap: 6px;
font-size: 10px;
text-transform: uppercase;
letter-spacing: 0.12em;
padding: 4px 8px;
border-radius: 999px;
background: rgba(22, 101, 52, 0.16);
color: #bbf7d0;
border: 1px solid rgba(34, 197, 94, 0.6);
margin-bottom: 6px;
}
/* FAQ */
.faq-grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 16px;
font-size: 12px;
}
@media (max-width: 800px) {
.faq-grid {
grid-template-columns: minmax(0, 1fr);
}
}
.faq-item {
background: rgba(15, 23, 42, 0.98);
border-radius: var(–radius-md);
border: 1px solid rgba(31, 41, 55, 0.95);
padding: 11px 12px 10px;
box-shadow: var(–shadow-card);
}
.faq-item h3 {
font-size: 13px;
margin-bottom: 4px;
}
.faq-item p {
font-size: 12px;
color: var(–muted);
}
/* Contact */
.contact-wrapper {
display: grid;
grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr);
gap: 18px;
align-items: start;
}
@media (max-width: 840px) {
.contact-wrapper {
grid-template-columns: minmax(0, 1fr);
}
}
form {
background: rgba(15, 23, 42, 0.98);
border-radius: var(–radius-lg);
border: 1px solid rgba(31, 41, 55, 0.98);
padding: 16px 16px 14px;
box-shadow: var(–shadow-soft);
}
.form-row {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 10px;
}
@media (max-width: 640px) {
.form-row {
grid-template-columns: minmax(0, 1fr);
}
}
label {
display: block;
font-size: 11px;
margin-bottom: 4px;
color: var(–muted);
}
input, textarea, select {
width: 100%;
border-radius: 10px;
border: 1px solid rgba(55, 65, 81, 0.9);
background: #020617;
color: #e5e7eb;
padding: 8px 9px;
font-size: 13px;
outline: none;
transition: border-color 0.15s ease, box-shadow 0.15s ease, background 0.15s ease;
}
input:focus, textarea:focus, select:focus {
border-color: var(–accent);
box-shadow: 0 0 0 1px rgba(245, 158, 11, 0.8);
background: #020617;
}
textarea {
min-height: 80px;
resize: vertical;
}
.helper-text {
font-size: 10px;
color: var(–muted);
margin-top: 2px;
}
.contact-details {
font-size: 12px;
color: var(–muted);
}
.contact-details strong {
color: #e5e7eb;
}
.contact-chip {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 6px 10px;
border-radius: 999px;
background: rgba(15, 23, 42, 0.96);
border: 1px dashed rgba(148, 163, 184, 0.6);
margin-bottom: 8px;
font-size: 11px;
}
.contact-list {
list-style: none;
margin-top: 4px;
}
.contact-list li {
margin-bottom: 5px;
}
.contact-list span {
color: #e5e7eb;
}
.accent-link {
color: var(–accent);
text-decoration: underline;
text-decoration-style: dotted;
text-decoration-thickness: 1px;
text-underline-offset: 3px;
}
footer {
margin-top: 40px;
padding: 12px 8px 0;
border-top: 1px solid rgba(31, 41, 55, 0.95);
font-size: 11px;
color: var(–muted);
display: flex;
justify-content: space-between;
gap: 10px;
flex-wrap: wrap;
}
.footer-links {
display: flex;
gap: 12px;
flex-wrap: wrap;
}
.footer-links a {
text-decoration: underline;
text-decoration-style: dotted;
text-underline-offset: 3px;
}
Done-for-you paperwork for busy contractors & landlords
Professional contracts & leases
without the headache.
Turn your ideas into clear, professional documents that protect your business.
You tell us what you need — we build the documents, format them, and deliver them ready to send or print.
Perfect for: independent contractors · small crews · homeowners & landlords · property managers
Services for contractors & landlords
Whether you’re running a crew or managing tenants, you shouldn’t be designing documents at midnight.
We turn your notes, screenshots, and old paperwork into professional, branded forms that make you look organized and legit.
Contractor paperwork suite
Clean, professional docs you can send from your phone, tablet, or laptop in seconds.
- ✓Invoice & estimate templates with your logo, terms, and payment options.
- ✓Service agreement / work contract that protects you from scope creep.
- ✓Change order form so extras are signed, not argued about.
- ✓Basic lien/receipt wording (non-legal advice, business use only).
Landlord starter kit
Everything a small landlord needs to start or clean up their paperwork.
- ✓Custom lease (term or month-to-month) tailored to your property rules.
- ✓Move-in packet: key receipt, house rules, lead/paint acknowledgment (if provided).
- ✓Notices: late payment, lease violation, non-renewal, entry notification.
- ✓Simple documentation templates for repairs, photos, and communication logs.
Custom one-off documents
Have a very specific situation? We’ll build a document around it.
- ✓Letters to tenants or clients about specific issues (damages, schedule changes, etc.).
- ✓Checklists, forms, or tracking sheets for your team.
- ✓Editable templates you can reuse for different jobs or tenants.
- ✓Formatting and cleanup of documents you already started.
How it works
No complicated portals. You can work with us by text, WhatsApp, email, or simple forms.
We keep the process straightforward and transparent.
Tell us what you need
Briefly describe your situation: contractor, landlord, or both. Share screenshots, old documents, or notes—whatever you’ve got.
We review & confirm pricing
We’ll confirm what’s included, how many documents, and the total price before we start. No surprise fees.
Draft sent for your review
You receive draft documents in Word/Google Docs or PDF. You can request edits or adjustments as needed.
Final, ready-to-use documents
You get final files you can send from your phone, print, or upload to your systems and tenant/contractor apps.
Simple, transparent pricing
Pricing depends on how many documents you need and how customized they are.
Below are typical ranges to give you a clear idea before you reach out.
Typical price ranges
Final quote is confirmed before we start. Larger bundles and repeat clients receive discounted rates.
$25 – $45
$75 – $150
$145 – $225
$175 – $275
custom
Note: We provide practical business documents, not legal advice.
For complex legal situations or court matters, we recommend that you have a licensed attorney review your final documents.
Frequently asked questions
A few quick answers to common questions from contractors and landlords
using our document service for the first time.
Do you use templates or build from scratch?
Both. We work from proven structures and then customize them to fit your situation, policies, and language.
If you already have documents, we can clean them up and rebuild them into a sharper, more consistent format.
Is this legal advice?
No. We provide practical, business-focused documents based on your instructions.
We do not provide legal advice or represent you in any legal matter.
For anything complex or high-risk, you should have a licensed attorney review your documents.
Can you make documents in Spanish?
We can provide simple Spanish versions for tenant-facing or client-facing forms and notices
(for clarity and communication). For highly technical or legal wording, we recommend
having a professional translator or attorney review as needed.
How do we start working together?
Use the form below, send a WhatsApp message, or email us with a short description of what you need.
We’ll confirm details, send pricing, and give you an estimated turnaround time before we begin.
Request your documents
Share a few details about what you need, and we’ll reply with next steps and a clear quote.
Contractor
Landlord
Both contractor and landlord
Property manager
Other
Contractor forms (estimates, invoices, contracts)
Landlord documents (lease, notices, move-in packet)
Both contractor & landlord paperwork
Custom one-off document
Ongoing monthly support
Within 24 hours (rush if possible)
Within 2–3 days
Within a week
Just planning ahead / getting pricing
Send request
By submitting, you agree that we may contact you to discuss your documents.
This is a done-for-you document preparation service, not legal representation.
If you don’t like forms, you can send a quick message instead. Share what you do, what you need, and
any deadlines, and we’ll reply with simple next steps.
- WhatsApp / Text: (XXX) XXX-XXXX
- Email: youremail@easydocspro.com
Tip: If you already have old forms or screenshots you want us to improve, mention that in your message so we can
give you a more accurate quote.
// Set year automatically
document.getElementById(“year”).textContent = new Date().getFullYear();