
:root{font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#172d3b;background:#f5f7fa;--accent:#068c77;--accentSoft:#e6f7f2;--ink:#172d3b;--muted:#728496;--border:#e4ebef;--surface:#fff;--deep:#102737;--shadow:0 5px 22px #122f4009}
*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible{outline:3px solid #75dcca;outline-offset:2px}a{color:inherit}h1,h2,h3,p{margin:0}h1{font-size:29px;line-height:1.14;letter-spacing:-1px}h2{font-size:19px;letter-spacing:-.4px}h3{font-size:15px}.muted{color:var(--muted)}.small{font-size:12px}.tiny{font-size:10px}.bold{font-weight:800}.flex{display:flex;align-items:center;gap:10px}.between{display:flex;align-items:center;justify-content:space-between;gap:15px}.wrap{flex-wrap:wrap}.app-shell{display:flex;min-height:100vh}.sidebar{background:var(--deep);color:#f5fffe;width:250px;flex:0 0 250px;height:100vh;position:sticky;top:0;display:flex;flex-direction:column;padding:24px 14px}.logo-wrap{display:flex;align-items:center;gap:11px;padding:0 11px 25px}.logo{width:40px;height:40px;display:grid;place-items:center;border-radius:13px;background:linear-gradient(135deg,#33e7c8,#0e9484);font-size:23px;font-weight:950;color:#083f39}.wordmark{font-weight:900;letter-spacing:-.8px;font-size:22px}.tagline{color:#8ac2ba;font-size:9px;font-weight:850;letter-spacing:1.5px;margin-top:4px}.nav-head{margin:10px 10px 5px;color:#6f92a0;font-size:10px;font-weight:800;letter-spacing:1.5px}.nav{display:flex;align-items:center;gap:12px;padding:11px 12px;margin:2px 0;border-radius:10px;border:0;background:transparent;color:#adbfca;width:100%;text-align:left;font-size:13px;font-weight:670}.nav:hover{background:#244350;color:#fff}.nav.active{background:#174740;color:#9cecdc}.nav-icon{width:22px;text-align:center;font-size:17px}.sidebar-footer{margin-top:auto;padding:14px 10px;border-top:1px solid #345260;font-size:11px;color:#aac1c9;line-height:1.6}.green-dot{display:inline-block;width:8px;height:8px;border-radius:99px;background:#18c3a6;margin-right:7px}.main{flex:1;min-width:0}.topbar{height:76px;display:flex;align-items:center;justify-content:space-between;background:#fff;border-bottom:1px solid var(--border);padding:0 34px;gap:20px}.company-head{font-size:13px;font-weight:780}.top-actions{display:flex;align-items:center;gap:14px}.demo-pill{font-size:10px;color:#087864;background:#e9f8f3;padding:8px 12px;border-radius:40px;font-weight:850;white-space:nowrap}.avatar{width:34px;height:34px;border-radius:50%;background:#dcefeb;color:#08816f;display:grid;place-items:center;font-size:12px;font-weight:800}.content{max-width:1460px;margin:auto;padding:32px 35px 60px}.intro{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:23px}.eyebrow{color:var(--accent);font-size:10px;font-weight:900;letter-spacing:2px;margin-bottom:10px}.lead{font-size:13px;line-height:1.6;color:var(--muted);max-width:780px;margin-top:10px}.safe-banner{background:#eaf9f5;border:1px solid #c9ebe0;color:#246b5d;border-radius:10px;padding:11px 15px;margin-bottom:20px;font-size:11px;line-height:1.5}.cards4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:15px;margin-bottom:18px}.stat,.card{background:#fff;border-radius:14px;border:1px solid var(--border);box-shadow:var(--shadow)}.stat{padding:20px}.stat-label{font-size:11px;color:#7f90a0;font-weight:750}.stat-number{font-size:27px;letter-spacing:-.8px;font-weight:900;margin:13px 0 10px}.stat-foot{font-size:11px;color:#8e9ca8}.grid2{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:18px;align-items:start}.gridEqual{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;align-items:start}.gridSide{display:grid;grid-template-columns:minmax(0,1fr) 350px;gap:18px;align-items:start}.card{margin-bottom:18px;overflow:hidden}.card-head{border-bottom:1px solid var(--border);padding:20px 22px;display:flex;justify-content:space-between;align-items:center;gap:12px}.card-title{font-weight:820;font-size:15px}.card-body{padding:20px 22px}.btn{border:1px solid #d9e2e9;color:#203e51;background:#fff;border-radius:9px;padding:10px 14px;font-size:12px;font-weight:790;min-height:36px;white-space:nowrap}.btn:hover{background:#f5faf8;border-color:#9acfc7}.btn.primary{background:var(--accent);border-color:var(--accent);color:white}.btn.primary:hover{filter:brightness(.93)}.btn.soft{background:var(--accentSoft);color:var(--accent);border-color:#cfeee3}.btn.small{padding:7px 10px;font-size:11px;min-height:29px}.btn.danger{color:#af4d56}.btn.active{background:#103e44;border-color:#103e44;color:#fff}.btn:disabled{opacity:.48;cursor:not-allowed}.hero{border-radius:15px;background:linear-gradient(125deg,#102c3b,#15645a);padding:26px;color:white;display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:18px}.hero h2{font-size:19px}.hero p{margin-top:8px;color:#b1ded2;font-size:12px;line-height:1.6;max-width:690px}.hero .btn{border:0}.table-scroll{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:12px}th{text-align:left;color:#8a9ba8;background:#f9fbfc;letter-spacing:.6px;text-transform:uppercase;font-size:10px;padding:13px 15px;white-space:nowrap}td{border-top:1px solid #edf1f3;padding:14px 15px;vertical-align:middle}tr:hover td{background:#fbfdfc}.state{display:inline-block;border-radius:25px;background:#e1f5ed;color:#138461;font-size:10px;font-weight:800;padding:5px 9px;white-space:nowrap}.state.warn{background:#fff3df;color:#9b7127}.state.blue{background:#e9f2fc;color:#3975ae}.state.gray{background:#eef1f3;color:#8793a0}.input,select{width:100%;background:#fff;border:1px solid #dce5e9;border-radius:8px;padding:10px 11px;font-size:13px;min-width:0;color:var(--ink)}.input-num{text-align:right;font-variant-numeric:tabular-nums}.field{display:flex;flex-direction:column;gap:6px;min-width:0}.field label{font-size:11px;color:#5e7381;font-weight:810}.form2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.hint{padding:15px;background:#f2fbf7;border:1px solid #d5eee5;border-radius:11px;color:#2e7465;font-size:12px;line-height:1.6}.helper{color:#7d90a0;font-size:12px;line-height:1.6}.divider{border:0;border-top:1px solid #e8edf0;margin:18px 0}.actionlink{font-size:11px;text-decoration:none;font-weight:780;color:#097b69;background:#e9f8f2;border-radius:7px;padding:8px 10px;white-space:nowrap;border:1px solid #d7f0e7;display:inline-block}.actionlink:hover{background:#d9f1e8}.input-row{display:grid;grid-template-columns:minmax(110px,1fr) 68px 85px 109px 32px;gap:8px;align-items:center;margin:9px 0}.bonus-row{display:grid;grid-template-columns:1fr 1fr 34px;gap:8px;align-items:center;margin:9px 0}.lines{display:grid;gap:13px;margin:16px 0}.money-line{display:flex;justify-content:space-between;align-items:center;gap:13px;font-size:12px;color:#758997}.money-line strong{color:#183e49}.grand-total{padding:22px;border-radius:12px;background:#112e3d;color:white;margin:18px 0}.grand-total .caption{font-size:11px;color:#aacbd2}.grand-total .value{font-size:31px;letter-spacing:-.8px;font-weight:920;margin:8px 0 3px}.progress{height:9px;border-radius:100px;background:#eaf0f2;overflow:hidden;margin-top:9px}.progress span{display:block;height:100%;border-radius:100px;background:linear-gradient(90deg,#0bba9a,#078274)}.chart{display:flex;height:198px;gap:12px;align-items:flex-end;padding:12px 9px 20px;border-bottom:1px solid #e5ecee}.bar-group{position:relative;flex:1;min-width:0;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:8px}.bar-value{font-size:10px;font-weight:850;color:#6d8591}.bar-column{width:min(44px,100%);min-height:4px;background:linear-gradient(180deg,#22d4af,#0b967f);border-radius:6px 6px 2px 2px}.bar-month{position:absolute;bottom:-20px;font-size:11px;color:#899aa4}.funnel-item{margin:17px 0}.funnel-title{display:flex;justify-content:space-between;gap:10px;font-size:12px;font-weight:780}.funnel-title small{color:#8798a4}.calendar-days,.weekdays{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.weekdays span{padding:11px 0;text-align:center;color:#8b9da7;font-weight:850;font-size:10px}.day{border:1px solid #e6ecef;border-top:0;border-left:0;min-height:96px;background:white;padding:8px 5px;display:flex;align-items:flex-start;flex-direction:column;gap:6px;text-align:left;min-width:0}.day:hover{background:#f5fbf7}.day.dim{background:#fbfcfd;color:#c3cdd2}.day.selected{background:#ebf9f4;box-shadow:inset 0 0 0 2px #1bb69e}.daynum{display:grid;place-items:center;border-radius:50%;font-weight:850;font-size:11px;height:22px;width:22px}.day.current .daynum{background:var(--accent);color:white}.day-tag{color:#3b708d;background:#e4f2ff;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis;font-size:10px;border-radius:5px;padding:4px}.visit{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:12px 0;border-bottom:1px solid #edf1f3}.visit:last-child{border-bottom:0}.visit-time{font-size:12px;font-weight:900;color:var(--accent);min-width:40px}.visit-title{font-size:12px;font-weight:800}.visit-detail{color:#7e929f;font-size:11px;margin-top:6px}.toggle-row{border-bottom:1px solid #edf1f3;padding:13px 0;display:flex;justify-content:space-between;gap:15px;align-items:center}.toggle-row:last-child{border-bottom:0}.switch{width:44px;height:24px;border-radius:50px;background:#c4d3d7;position:relative;border:0;flex-shrink:0}.switch.on{background:var(--accent)}.switch:after{content:"";position:absolute;background:white;border-radius:50%;width:18px;height:18px;left:3px;top:3px;transition:transform .12s}.switch.on:after{transform:translateX(20px)}.setup{display:grid;gap:11px}.setup-step{display:flex;gap:13px;align-items:flex-start;background:#f7faf9;border:1px solid #e2ebe9;padding:14px;border-radius:10px}.step-count{width:28px;height:28px;border-radius:9px;background:#e1f8ef;color:#078d71;display:grid;place-items:center;flex-shrink:0;font-weight:850;font-size:12px}.section-sub{font-size:11px;color:#97a4af;margin-top:6px}.toast{position:fixed;bottom:23px;right:23px;background:#183743;color:white;padding:13px 16px;border-radius:11px;box-shadow:0 14px 40px #12324355;font-size:12px;font-weight:790;z-index:100}.footer{color:#98a6b2;font-size:11px;margin-top:27px}.chip{padding:6px 9px;background:#f1f5f6;border:1px solid #e1e8ed;border-radius:7px;font-size:11px;color:#6f8391;font-weight:800}.chip.selected{color:var(--accent);background:var(--accentSoft);border-color:#d8eee7}.price-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.price-card{border:1px solid var(--border);border-radius:13px;padding:19px;background:#fff}.price-card.featured{border-color:#0aa78d;box-shadow:0 0 0 2px #10ab8e33}.price-card .price{font-size:30px;font-weight:900;letter-spacing:-1px;margin:18px 0 6px}.price-card .price small{font-size:12px;color:#8c9ba6;font-weight:600}.checkrow{font-size:12px;color:#506779;line-height:2}.empty{font-size:12px;color:#92a1ac;padding:16px 0}.role-tag{font-size:10px;background:#edf4f8;color:#46718b;padding:5px 8px;border-radius:7px;font-weight:800}.role-tag.admin{color:#0e8770;background:#e5f8f1}.role-tag.installer{color:#7765a8;background:#f1eefe}
@media(max-width:1120px){.sidebar{width:208px;flex-basis:208px}.content{padding:26px 22px 60px}.cards4{grid-template-columns:repeat(2,minmax(0,1fr))}.grid2,.gridSide{grid-template-columns:1fr}}
@media(max-width:760px){.app-shell{display:block}.sidebar{position:static;width:auto;height:auto;padding:9px 9px 12px;display:flex;flex-direction:row;flex-wrap:wrap;gap:3px}.logo-wrap{width:100%;padding:9px 8px 13px}.nav-head,.sidebar-footer{display:none}.nav{width:auto;flex:1;padding:9px 8px;justify-content:center;font-size:10px}.nav-icon{display:none}.topbar{height:58px;padding:0 14px}.top-actions .muted{display:none}.content{padding:22px 13px 50px}.intro{display:block}.intro .btn{margin-top:14px}h1{font-size:26px}.cards4{gap:9px}.stat{padding:14px}.stat-number{font-size:22px}.card-head,.card-body{padding:15px}.gridEqual,.price-cards{grid-template-columns:1fr}.form2{grid-template-columns:1fr}.hero{display:block}.hero .btn{margin-top:14px}.day{min-height:70px;padding:4px}.day-tag{font-size:8px}.input-row{grid-template-columns:minmax(75px,1fr) 42px 57px 68px 28px;gap:4px}.input-row .input,.input-row select{padding:8px 4px;font-size:10px}.bonus-row{gap:5px}.small{font-size:11px}}
