Get AI Credits

🏪 Shop Setup

🔐 Account

No account? Sign Up free
Advanced — Login Required
⚡ AI Features
COMING SOON
Pay per use — no subscription.
🤖AI Repair Estimator
Soon
📝AI Estimate Writer
Soon
📞AI Client Message
Soon
📊AI Business Insights
Soon
🔍AI Parts Lookup
Soon
🔔 Get notified when AI launches!

📷 Snap Workspace

🧾 Create Estimate

INVOICE
⏳ Awaiting Payment
Bill To
Date
Description
Labor
Parts
Tax
TOTAL DUE

📅 Book Appointment

🗓 Upcoming

No appointments yet.

More Tools

📞
Client Search
Full history
🔧
Parts DB
Catalog & prices
📦
Inventory
Stock & alerts
🔔
Reminders
Job alerts
📊
Export CSV
Accounting
📂
History
Past estimates
📈
Analytics
Revenue & trends
🤖
Memory
Saved repairs

📞 Client Search

Type to find a client.

🔧 Parts Database

No parts yet.

📦 Inventory

No inventory yet.

🔔 Set Reminder

📋 Active Reminders

No reminders yet.

📊 Accounting Export

Export to CSV — opens in Excel or Google Sheets.

📂 History

Log in to view history.

📞 Phone Search

Type a number.

📊 Analytics

Generate estimates to see analytics.

🤖 Memory Workspace

/* SCREENS */ .screen { display: none; position: relative; z-index: 1; padding: 72px 16px 80px; max-width: 600px; margin: 0 auto; } .screen.active { display: block; animation: fadeUp 0.28s ease; } @keyframes fadeUp { from{opacity:0;transform:translateY(14px)} to{opacity:1;transform:translateY(0)} } /* GLASS CARD */ .gcard { background: var(--card); backdrop-filter: blur(20px); border: 1px solid var(--border); border-radius: 22px; padding: 24px; margin-bottom: 16px; position: relative; overflow: hidden; } .gcard::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 1px; background: linear-gradient(90deg, transparent, rgba(96,165,250,0.45), transparent); } .gcard h2 { font-family: 'Syne', sans-serif; font-size: 20px; font-weight: 700; margin-bottom: 18px; color: var(--white); } /* INPUTS */ input, textarea, select { width: 100%; background: rgba(255,255,255,0.04); border: 1px solid var(--border); border-radius: 12px; padding: 13px 16px; color: var(--white); font-family: 'DM Sans', sans-serif; font-size: 15px; margin-bottom: 10px; transition: 0.2s; -webkit-appearance: none; } input:focus, textarea:focus, select:focus { outline: none; border-color: var(--electric); background: rgba(59,130,246,0.06); box-shadow: 0 0 0 3px rgba(59,130,246,0.1); } input::placeholder, textarea::placeholder { color: var(--muted); } select option { background: #0d1635; color: var(--white); } textarea { min-height: 80px; resize: vertical; } /* BUTTONS */ .btn { width: 100%; padding: 15px; border: none; border-radius: 14px; font-family: 'Syne', sans-serif; font-size: 15px; font-weight: 700; cursor: pointer; transition: all 0.2s; margin-bottom: 10px; letter-spacing: 0.02em; } .btn:active { transform: scale(0.97); } .btn-primary { background: linear-gradient(135deg,var(--blue),var(--electric)); color: white; box-shadow: 0 4px 20px rgba(59,130,246,0.3); } .btn-primary:hover { box-shadow: 0 6px 28px rgba(59,130,246,0.45); } .btn-glow { background: linear-gradient(135deg,#0369a1,var(--electric)); color: white; box-shadow: 0 4px 20px rgba(59,130,246,0.22); } .btn-green { background: linear-gradient(135deg,#059669,var(--green)); color: white; box-shadow: 0 4px 16px rgba(34,197,94,0.22); } .btn-amber { background: linear-gradient(135deg,#d97706,var(--amber)); color: white; box-shadow: 0 4px 16px rgba(245,158,11,0.22); } .btn-ghost { background: rgba(255,255,255,0.05); color: var(--muted); border: 1px solid var(--border); } .btn-ghost:hover { background: rgba(255,255,255,0.08); } .btn-sm { padding: 7px 13px; font-size: 12px; font-weight: 700; border: none; border-radius: 8px; cursor: pointer; font-family:'DM Sans',sans-serif; transition: 0.15s; white-space: nowrap; } .btn-sm:active { transform: scale(0.94); } .btn-sm-blue { background: rgba(59,130,246,0.15); color: var(--glow); } .btn-sm-red { background: rgba(239,68,68,0.15); color: #fca5a5; } .btn-sm-green { background: rgba(34,197,94,0.15); color: #86efac; } .btn-sm-amber { background: rgba(245,158,11,0.15); color: #fcd34d; } /* STATUS */ .sbar { padding: 10px 14px; font-size: 13px; font-weight: 600; border-radius: 10px; margin-bottom: 12px; display: none; } .s-ok { background: rgba(34,197,94,0.1); color: #86efac; border: 1px solid rgba(34,197,94,0.2); display: block; } .s-err { background: rgba(239,68,68,0.1); color: #fca5a5; border: 1px solid rgba(239,68,68,0.2); display: block; } .s-info { background: rgba(59,130,246,0.1); color: var(--glow); border: 1px solid var(--border); display: block; } /* AUTH */ .tab-row { display: flex; gap: 6px; margin-bottom: 16px; background: rgba(255,255,255,0.04); border-radius: 12px; padding: 4px; } .tab-pill { flex: 1; padding: 9px; border: none; border-radius: 9px; font-weight: 700; font-size: 14px; cursor: pointer; background: transparent; color: var(--muted); font-family: 'DM Sans',sans-serif; transition: 0.2s; } .tab-pill.act { background: var(--blue); color: white; box-shadow: 0 2px 10px rgba(59,130,246,0.3); } .user-badge { background: rgba(59,130,246,0.1); border: 1px solid var(--border); border-radius: 12px; padding: 12px 16px; font-size: 13px; color: var(--glow); margin-bottom: 12px; display: none; align-items: center; gap: 8px; } .user-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--green); box-shadow: 0 0 7px var(--green); flex-shrink: 0; } /* FEATURE BUBBLES */ .feat-grid { display: grid; grid-template-columns: repeat(2,1fr); gap: 12px; } .feat-bubble { background: rgba(13,22,53,0.85); border: 1px solid var(--border); border-radius: 20px; padding: 22px 16px; text-align: center; cursor: pointer; transition: all 0.25s; position: relative; overflow: hidden; } .feat-bubble::after { content:''; position:absolute; inset:0; border-radius:20px; background:radial-gradient(ellipse at top,rgba(59,130,246,0.1),transparent 70%); opacity:0; transition:0.25s; } .feat-bubble:hover { border-color: rgba(96,165,250,0.4); transform: translateY(-4px); box-shadow: 0 10px 32px rgba(59,130,246,0.15); } .feat-bubble:hover::after { opacity: 1; } .feat-bubble:active { transform: scale(0.95); } .feat-icon { font-size: 30px; margin-bottom: 8px; display: block; filter: drop-shadow(0 0 8px rgba(96,165,250,0.5)); } .feat-label { font-family: 'Syne',sans-serif; font-size: 13px; font-weight: 700; color: var(--white); } .feat-sub { font-size: 11px; color: var(--muted); margin-top: 3px; } /* AI ROWS */ .ai-head { display: flex; align-items: center; justify-content: space-between; margin: 18px 0 10px; padding-top: 18px; border-top: 1px solid var(--border); } .ai-head-title { font-family: 'Syne',sans-serif; font-size: 11px; font-weight: 700; color: var(--amber); letter-spacing: 0.1em; text-transform: uppercase; } .ai-chip { background: linear-gradient(135deg,var(--amber),var(--red)); color: white; font-size: 10px; font-weight: 800; padding: 3px 9px; border-radius: 99px; } .ai-row { display: flex; align-items: center; justify-content: space-between; background: rgba(255,255,255,0.03); border: 1px solid var(--border); border-radius: 14px; padding: 13px 16px; margin-bottom: 8px; cursor: pointer; transition: 0.2s; } .ai-row:hover { background: rgba(59,130,246,0.06); border-color: rgba(59,130,246,0.3); } .ai-row-left { display: flex; align-items: center; gap: 12px; } .ai-row-icon { font-size: 19px; } .ai-row-name { font-size: 14px; font-weight: 600; color: var(--white); } .ai-soon { font-size: 10px; font-weight: 700; background: rgba(245,158,11,0.15); color: var(--amber); padding: 3px 9px; border-radius: 99px; } .notify-box { background: rgba(245,158,11,0.06); border: 1px solid rgba(245,158,11,0.2); border-radius: 14px; padding: 16px; margin-top: 4px; display: none; } .notify-btn { width: 100%; padding: 12px; border: none; border-radius: 10px; background: linear-gradient(135deg,var(--amber),#f97316); color: white; font-weight: 700; font-size: 14px; cursor: pointer; font-family: 'DM Sans',sans-serif; } /* SECTION LABEL */ .slabel { font-size: 11px; font-weight: 700; color: var(--muted); text-transform: uppercase; letter-spacing: 0.1em; margin: 16px 0 10px; padding-top: 16px; border-top: 1px solid var(--border); } .slabel:first-child { padding-top: 0; border-top: none; margin-top: 0; } /* ESTIMATE SUMMARY */ #summary { background: rgba(59,130,246,0.05); border: 1px solid var(--border); border-radius: 14px; padding: 18px; white-space: pre-wrap; font-size: 14px; color: var(--white); margin-bottom: 10px; display: none; line-height: 1.7; } /* INVOICE (white card on dark app) */ .invoice-wrap { background: white; border-radius: 18px; padding: 24px; margin-top: 8px; display: none; } .inv-title { font-family: 'Syne',sans-serif; font-size: 26px; font-weight: 800; color: #1a56db; } .inv-num { font-size: 12px; color: #64748b; } .inv-badge { display: inline-block; padding: 4px 12px; border-radius: 99px; font-size: 12px; font-weight: 700; margin-top: 6px; background: #fef3c7; color: #92400e; } .inv-header { display: flex; justify-content: space-between; align-items: flex-start; padding-bottom: 16px; border-bottom: 2px solid #f1f5f9; margin-bottom: 16px; } .inv-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-bottom: 14px; } .inv-label { font-size: 10px; font-weight: 700; color: #94a3b8; text-transform: uppercase; letter-spacing: 0.08em; margin-bottom: 3px; } .inv-val { font-size: 14px; color: #111827; font-weight: 600; } .inv-sub { font-size: 12px; color: #64748b; } .inv-row { display: flex; justify-content: space-between; padding: 8px 0; border-bottom: 1px solid #f1f5f9; font-size: 14px; color: #374151; } .inv-total { display: flex; justify-content: space-between; padding: 12px 0; font-size: 18px; font-weight: 700; color: #111827; border-top: 2px solid #111827; } .inv-footer { font-size: 11px; color: #94a3b8; text-align: center; margin-top: 12px; padding-top: 12px; border-top: 1px solid #f1f5f9; } .inv-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 14px; } .inv-sms { background: #22c55e; color: white; border: none; border-radius: 12px; padding: 13px; font-size: 14px; font-weight: 700; cursor: pointer; font-family: 'DM Sans',sans-serif; } .inv-email { background: #2563eb; color: white; border: none; border-radius: 12px; padding: 13px; font-size: 14px; font-weight: 700; cursor: pointer; font-family: 'DM Sans',sans-serif; } .inv-paid { width: 100%; padding: 13px; border: none; border-radius: 12px; background: #dcfce7; color: #166534; font-size: 14px; font-weight: 700; cursor: pointer; margin-top: 8px; font-family: 'DM Sans',sans-serif; } /* HISTORY / LIST ITEMS */ .hist-item { background: rgba(255,255,255,0.03); border: 1px solid var(--border); border-radius: 12px; padding: 14px; margin-bottom: 8px; font-size: 13px; color: var(--white); white-space: pre-wrap; line-height: 1.65; } .hist-time { font-size: 11px; color: var(--muted); margin-bottom: 6px; } /* LIST ITEM (parts/inventory/reminders) */ .litem { background: rgba(255,255,255,0.03); border: 1px solid var(--border); border-radius: 14px; padding: 14px 16px; margin-bottom: 8px; display: flex; justify-content: space-between; align-items: center; } .litem.low-border { border-left: 3px solid var(--red); } .litem-name { font-size: 15px; font-weight: 600; color: var(--white); } .litem-meta { font-size: 12px; color: var(--muted); margin-top: 2px; } .litem-price { font-family: 'Syne',sans-serif; font-size: 16px; font-weight: 700; color: var(--electric); } .low-chip { display: inline-block; background: rgba(239,68,68,0.15); color: #fca5a5; font-size: 10px; font-weight: 700; padding: 2px 7px; border-radius: 99px; margin-left: 6px; } /* ANALYTICS */ .stat-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 18px; } .stat-box { background: rgba(59,130,246,0.07); border: 1px solid var(--border); border-radius: 14px; padding: 16px; text-align: center; } .stat-num { font-family: 'Syne',sans-serif; font-size: 24px; font-weight: 800; color: var(--electric); } .stat-lbl { font-size: 11px; color: var(--muted); margin-top: 3px; } .bar-row { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; font-size: 12px; color: var(--muted); } .bar-bg { flex: 1; background: rgba(255,255,255,0.06); border-radius: 99px; height: 10px; overflow: hidden; } .bar-fill { height: 100%; background: linear-gradient(90deg,var(--blue),var(--cyan)); border-radius: 99px; } .repair-tag { display: inline-block; background: rgba(59,130,246,0.12); color: var(--glow); border: 1px solid var(--border); border-radius: 8px; padding: 4px 10px; font-size: 12px; font-weight: 600; margin: 3px; } /* CLIENT PROFILE */ .client-hero { background: linear-gradient(135deg,rgba(26,86,219,0.3),rgba(34,211,238,0.1)); border: 1px solid rgba(96,165,250,0.25); border-radius: 18px; padding: 20px; margin-bottom: 14px; } .client-hero-name { font-family: 'Syne',sans-serif; font-size: 22px; font-weight: 700; } .client-hero-phone { font-size: 14px; color: var(--glow); margin-top: 4px; } .client-stats { display: grid; grid-template-columns: repeat(3,1fr); gap: 8px; margin-top: 14px; } .cs-box { background: rgba(255,255,255,0.08); border-radius: 10px; padding: 10px; text-align: center; } .cs-num { font-family: 'Syne',sans-serif; font-size: 20px; font-weight: 700; } .cs-lbl { font-size: 10px; color: rgba(255,255,255,0.6); margin-top: 2px; } /* APPOINTMENTS */ .appt-item { background: rgba(255,255,255,0.03); border: 1px solid var(--border); border-radius: 14px; padding: 14px 16px; margin-bottom: 8px; display: flex; justify-content: space-between; align-items: flex-start; } .appt-name { font-size: 15px; font-weight: 600; color: var(--white); } .appt-time { font-size: 12px; color: var(--electric); font-weight: 600; margin-top: 3px; } .appt-desc { font-size: 12px; color: var(--muted); margin-top: 3px; } .achip { display: inline-block; font-size: 10px; font-weight: 700; padding: 2px 8px; border-radius: 99px; margin-top: 5px; } .achip-pending { background: rgba(245,158,11,0.15); color: #fcd34d; } .achip-confirmed { background: rgba(34,197,94,0.15); color: #86efac; } .achip-cancelled { background: rgba(239,68,68,0.15); color: #fca5a5; } .day-sep { font-size: 11px; font-weight: 700; color: var(--muted); text-transform: uppercase; letter-spacing: 0.1em; margin: 14px 0 6px; padding-bottom: 6px; border-bottom: 1px solid var(--border); } /* REMINDERS */ .rem-title { font-size: 15px; font-weight: 600; color: var(--white); } .rem-time { font-size: 12px; color: var(--amber); margin-top: 3px; font-weight: 600; } .overdue-chip { display: inline-block; background: rgba(239,68,68,0.15); color: #fca5a5; font-size: 10px; font-weight: 700; padding: 2px 7px; border-radius: 99px; margin-left: 6px; } .today-chip { display: inline-block; background: rgba(245,158,11,0.15); color: #fcd34d; font-size: 10px; font-weight: 700; padding: 2px 7px; border-radius: 99px; margin-left: 6px; } /* ADV BUTTONS */ .adv-btn { width: 100%; padding: 14px 16px; border-radius: 14px; font-size: 14px; font-weight: 600; margin-bottom: 8px; border: 1px solid var(--border); opacity: 0.3; cursor: not-allowed; transition: 0.3s; font-family: 'DM Sans',sans-serif; color: var(--white); text-align: left; background: rgba(255,255,255,0.03); display: flex; align-items: center; gap: 10px; } .adv-btn.on { opacity: 1; cursor: pointer; } .adv-btn.on:hover { background: rgba(59,130,246,0.1); border-color: rgba(96,165,250,0.3); } /* SNAP */ #preview { width: 100%; border-radius: 14px; margin-bottom: 10px; display: none; } /* SECTION HEADER (dynamic content) */ .section-header { font-size: 11px; font-weight: 700; color: var(--muted); text-transform: uppercase; letter-spacing: 0.1em; margin: 14px 0 8px; } ::-webkit-scrollbar { width: 4px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: rgba(59,130,246,0.3); border-radius: 99px; }
Get AI Credits

\\ud83c\\udfea Shop Setup

\\ud83d\\udd10 Account

No account? Sign Up free
Advanced \\u2014 Login Required
\\u26a1 AI Features
COMING SOON
Pay per use \\u2014 no subscription.
\\ud83e\\udd16AI Repair Estimator
Soon
\\ud83d\\udcddAI Estimate Writer
Soon
\\ud83d\\udcdeAI Client Message
Soon
\\ud83d\\udccaAI Business Insights
Soon
\\ud83d\\udd0dAI Parts Lookup
Soon
\\ud83d\\udd14 Get notified when AI launches!

\\ud83d\\udcf7 Snap Workspace

\\ud83e\\uddfe Create Estimate

INVOICE
\\u23f3 Awaiting Payment
Bill To
Date
Description
Labor
Parts
Tax
TOTAL DUE

\\ud83d\\udcc5 Book Appointment

\\ud83d\\uddd3 Upcoming

No appointments yet.

More Tools

\\ud83d\\udcde
Client Search
Full history
\\ud83d\\udd27
Parts DB
Catalog & prices
\\ud83d\\udce6
Inventory
Stock & alerts
\\ud83d\\udd14
Reminders
Job alerts
\\ud83d\\udcca
Export CSV
Accounting
\\ud83d\\udcc2
History
Past estimates
\\ud83d\\udcc8
Analytics
Revenue & trends
\\ud83e\\udd16
Memory
Saved repairs

\\ud83d\\udcde Client Search

Type to find a client.

\\ud83d\\udd27 Parts Database

No parts yet.

\\ud83d\\udce6 Inventory

No inventory yet.

\\ud83d\\udd14 Set Reminder

\\ud83d\\udccb Active Reminders

No reminders yet.

\\ud83d\\udcca Accounting Export

Export to CSV \\u2014 opens in Excel or Google Sheets.

\\ud83d\\udcc2 History

Log in to view history.

\\ud83d\\udcde Phone Search

Type a number.

\\ud83d\\udcca Analytics

Generate estimates to see analytics.

\\ud83e\\udd16 Memory Workspace