:root{
  --ink:#07151d;
  --ink-2:#112630;
  --paper:#eef2f3;
  --surface:#ffffff;
  --surface-2:#f7f9f9;
  --line:#d9e2e5;
  --muted:#70828a;
  --text:#14272f;
  --cyan:#15b9c6;
  --cyan-2:#0d8f9d;
  --orange:#f59b52;
  --red:#dc5a65;
  --green:#2fbf86;
  --shadow:0 18px 60px rgba(7,21,29,.12);
  --radius:22px;
}

*{box-sizing:border-box}
html,body{height:100%;margin:0}
body{
  overflow:hidden;
  color:var(--text);
  background:
    radial-gradient(circle at 10% 0%,rgba(21,185,198,.14),transparent 28%),
    radial-gradient(circle at 95% 5%,rgba(245,155,82,.12),transparent 24%),
    var(--paper);
  font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
}
button,input,textarea{font:inherit}
button{cursor:pointer}

.ambient{position:fixed;border-radius:999px;filter:blur(30px);pointer-events:none;opacity:.45}
.ambient-a{width:340px;height:340px;left:-170px;bottom:-120px;background:rgba(21,185,198,.22)}
.ambient-b{width:280px;height:280px;right:-120px;top:18%;background:rgba(245,155,82,.18)}

.app{height:100dvh;display:flex;flex-direction:column;padding:14px;gap:12px;position:relative;z-index:2}
.topbar{
  min-height:76px;
  display:grid;
  grid-template-columns:1fr auto 1fr;
  align-items:center;
  gap:18px;
  padding:12px 16px;
  border-radius:24px;
  color:#fff;
  background:
    linear-gradient(120deg,rgba(21,185,198,.08),transparent 35%,rgba(245,155,82,.08)),
    var(--ink);
  box-shadow:0 20px 55px rgba(7,21,29,.22);
  position:relative;
  overflow:hidden;
}
.topbar::after{content:"";position:absolute;inset:0;background:linear-gradient(100deg,transparent 0 62%,rgba(255,255,255,.04) 62% 64%,transparent 64%);pointer-events:none}
.brand-wrap{display:flex;align-items:center;gap:12px;min-width:0;position:relative;z-index:1}
.brand-mark{width:42px;height:42px;border-radius:13px;display:grid;place-items:center;background:linear-gradient(145deg,var(--cyan),#55d8df);box-shadow:0 10px 28px rgba(21,185,198,.25);color:var(--ink);font-weight:950;font-size:22px;transform:rotate(-3deg)}
.brand-mark.large{width:56px;height:56px;border-radius:17px;font-size:28px}
.brand{font-size:22px;font-weight:500;letter-spacing:-.03em;line-height:1}.brand strong{font-weight:900;color:#7be0e6}
.brand-sub{margin-top:6px;color:rgba(255,255,255,.56);font-size:11px;text-transform:uppercase;letter-spacing:.15em;font-weight:800}
.month-nav{display:flex;align-items:center;gap:10px;position:relative;z-index:1}
.icon-button,.today-button,.logout-button,.month-title,.close-button,.mini-button,.primary-button,.secondary-button,.danger-button{
  border:0;outline:none;transition:.18s ease;
}
.icon-button{width:42px;height:42px;border-radius:13px;background:rgba(255,255,255,.08);color:#fff;font-size:18px}
.icon-button:hover{background:rgba(255,255,255,.14);transform:translateY(-1px)}
.month-title{min-width:230px;background:transparent;color:#fff;font-size:20px;font-weight:900;text-transform:capitalize;padding:8px 12px;border-radius:12px}
.month-title:hover{background:rgba(255,255,255,.06)}
.top-actions{display:flex;justify-content:flex-end;gap:8px;position:relative;z-index:1}
.today-button,.logout-button{height:42px;padding:0 14px;border-radius:13px;font-size:12px;font-weight:900}
.today-button{background:#fff;color:var(--ink)}
.today-button:hover{transform:translateY(-1px);box-shadow:0 9px 24px rgba(255,255,255,.16)}
.logout-button{background:rgba(255,255,255,.07);color:rgba(255,255,255,.75);border:1px solid rgba(255,255,255,.09)}
.logout-button:hover{background:rgba(220,90,101,.17);color:#fff}

.calendar-shell{flex:1;min-height:0;border:1px solid rgba(7,21,29,.07);border-radius:26px;background:rgba(255,255,255,.78);backdrop-filter:blur(16px);box-shadow:var(--shadow);overflow:hidden}
.desktop-calendar{height:100%;display:flex;flex-direction:column}
.weekday-row{display:grid;grid-template-columns:repeat(7,1fr);border-bottom:1px solid var(--line);background:rgba(247,249,249,.9)}
.weekday-row div{padding:11px 12px;color:#6f8188;font-size:11px;font-weight:900;text-transform:uppercase;letter-spacing:.14em;border-right:1px solid var(--line)}
.weekday-row div:last-child{border-right:0;color:#b27152}
.calendar-grid{flex:1;min-height:0;display:grid;grid-template-columns:repeat(7,1fr);grid-template-rows:repeat(6,minmax(0,1fr))}
.day-cell{min-width:0;min-height:0;padding:9px 8px 8px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:rgba(255,255,255,.82);position:relative;overflow:hidden;transition:.16s ease}
.day-cell:nth-child(7n){border-right:0}
.day-cell:hover{background:#fff;box-shadow:inset 0 0 0 2px rgba(21,185,198,.12)}
.day-cell.outside{background:rgba(239,243,244,.58);color:#9ba8ad}
.day-cell.today{background:linear-gradient(180deg,rgba(21,185,198,.09),rgba(255,255,255,.94))}
.day-cell.today::after{content:"";position:absolute;left:0;top:0;width:4px;height:100%;background:linear-gradient(var(--cyan),var(--orange))}
.day-number{width:32px;height:32px;border-radius:10px;border:0;background:transparent;color:inherit;font-weight:900;font-size:13px;display:grid;place-items:center;margin-bottom:6px}
.day-number:hover{background:rgba(21,185,198,.11);color:var(--cyan-2)}
.today .day-number{background:var(--ink);color:#fff}
.visits{display:flex;flex-direction:column;gap:5px;overflow:hidden}
.visit-chip{min-width:0;border:0;border-left:3px solid var(--cyan);border-radius:9px;padding:6px 7px;background:linear-gradient(90deg,rgba(21,185,198,.11),rgba(21,185,198,.035));color:var(--text);text-align:left;display:grid;grid-template-columns:auto 1fr;gap:7px;align-items:center;transition:.15s ease}
.visit-chip:nth-child(2n){border-left-color:var(--orange);background:linear-gradient(90deg,rgba(245,155,82,.12),rgba(245,155,82,.035))}
.visit-chip:hover{transform:translateX(2px);filter:saturate(1.1)}
.visit-time{font-size:10px;font-weight:950;color:var(--cyan-2)}
.visit-chip:nth-child(2n) .visit-time{color:#b7682f}
.visit-name{font-size:11px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.more-visits{font-size:10px;color:var(--muted);padding:1px 4px;font-weight:800}

.mobile-agenda{display:none;height:100%;overflow:auto;padding:10px}
.mobile-day{border:1px solid var(--line);border-radius:18px;background:rgba(255,255,255,.88);margin-bottom:9px;overflow:hidden}
.mobile-day.today{border-color:rgba(21,185,198,.5);box-shadow:0 8px 24px rgba(21,185,198,.08)}
.mobile-day-head{width:100%;border:0;background:transparent;padding:13px 14px;display:flex;align-items:center;justify-content:space-between;text-align:left}
.mobile-day-date{display:flex;align-items:baseline;gap:8px}.mobile-day-num{font-size:24px;font-weight:950}.mobile-day-week{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.1em;font-weight:850}
.mobile-day-count{font-size:11px;color:var(--muted);font-weight:800}
.mobile-visits{padding:0 10px 10px;display:flex;flex-direction:column;gap:6px}
.mobile-visit{border:0;border-radius:12px;padding:10px 11px;text-align:left;background:linear-gradient(90deg,rgba(21,185,198,.1),rgba(255,255,255,.8));display:grid;grid-template-columns:52px 1fr;gap:10px;align-items:start}
.mobile-visit:nth-child(2n){background:linear-gradient(90deg,rgba(245,155,82,.12),rgba(255,255,255,.8))}
.mobile-visit-time{font-weight:950;color:var(--cyan-2)}
.mobile-visit-name{font-weight:900}.mobile-visit-address{grid-column:2;color:var(--muted);font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.login-overlay,.modal-backdrop{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:18px;background:rgba(5,17,24,.72);backdrop-filter:blur(16px)}
.login-overlay[hidden],.modal-backdrop[hidden]{display:none!important}
.login-card{width:min(430px,100%);border-radius:28px;padding:28px;background:linear-gradient(155deg,#10262f,#07151d 72%);box-shadow:0 34px 110px rgba(0,0,0,.38);color:#fff;border:1px solid rgba(255,255,255,.08)}
.login-brand{display:flex;align-items:center;gap:14px;margin-bottom:26px}.login-title{font-size:27px}
.login-card .field span{color:rgba(255,255,255,.72)}
.login-card input{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.12);color:#fff}

.visit-modal{width:min(980px,calc(100vw - 28px));max-height:min(760px,calc(100dvh - 28px));border-radius:28px;background:var(--surface);box-shadow:0 30px 100px rgba(0,0,0,.33);overflow:hidden;border:1px solid rgba(255,255,255,.6)}
.modal-header{min-height:86px;padding:18px 22px;display:flex;align-items:center;justify-content:space-between;color:#fff;background:linear-gradient(120deg,var(--ink),#12303a);position:relative}
.modal-header::after{content:"";position:absolute;right:-40px;top:-90px;width:260px;height:260px;border-radius:50%;background:radial-gradient(circle,rgba(21,185,198,.28),transparent 68%)}
.eyebrow{font-size:10px;letter-spacing:.18em;font-weight:950;color:#82dce2}.modal-header h2{margin:5px 0 0;font-size:24px}.close-button{position:relative;z-index:1;width:42px;height:42px;border-radius:13px;background:rgba(255,255,255,.08);color:#fff;font-size:28px;line-height:1}.close-button:hover{background:rgba(255,255,255,.14)}
.modal-content{display:grid;grid-template-columns:310px 1fr;height:min(674px,calc(100dvh - 114px));min-height:0;overflow:hidden}
.day-visits{padding:18px;border-right:1px solid var(--line);background:#f5f8f8;overflow:auto}.day-visits-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:12px}.day-visits-head strong{font-size:14px}.mini-button{padding:7px 10px;border-radius:10px;background:var(--ink);color:#fff;font-size:11px;font-weight:900}
.day-visits-list{display:flex;flex-direction:column;gap:8px}.day-visit-item{border:1px solid var(--line);border-radius:13px;background:#fff;padding:10px;text-align:left}.day-visit-item.active{border-color:rgba(21,185,198,.65);box-shadow:0 0 0 3px rgba(21,185,198,.09)}.day-visit-item time{font-size:11px;font-weight:950;color:var(--cyan-2)}.day-visit-item strong{display:block;margin-top:4px;font-size:13px}.day-visit-item small{display:block;margin-top:4px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.day-empty{padding:12px;color:var(--muted);font-size:12px}
.visit-form{min-width:0;min-height:0;display:grid;grid-template-rows:minmax(0,1fr) auto;overflow:hidden}.visit-form-scroll{min-height:0;overflow:auto;padding:22px 22px 10px}.form-grid.two{display:grid;grid-template-columns:1fr 1fr;gap:12px}.field{display:flex;flex-direction:column;gap:7px;margin-bottom:14px}.field span{font-size:11px;color:#647780;text-transform:uppercase;letter-spacing:.1em;font-weight:900}.field input,.field textarea{width:100%;border:1px solid #d5dfe2;border-radius:13px;background:#f9fbfb;color:var(--text);padding:12px 13px;outline:none;transition:.16s}.field input{height:48px}.field textarea{resize:vertical;min-height:88px}.field input:focus,.field textarea:focus{border-color:var(--cyan);box-shadow:0 0 0 4px rgba(21,185,198,.10);background:#fff}
.form-error{min-height:20px;color:var(--red);font-size:12px;font-weight:800}.modal-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0;padding:14px 22px 18px;border-top:1px solid var(--line);background:rgba(255,255,255,.96);box-shadow:0 -12px 30px rgba(16,38,47,.06);position:relative;z-index:4}.modal-actions-right{display:flex;gap:8px;margin-left:auto}.primary-button,.secondary-button,.danger-button{min-height:46px;padding:0 17px;border-radius:13px;font-size:12px;font-weight:950}.primary-button{background:linear-gradient(135deg,var(--cyan),#44d0d8);color:var(--ink);box-shadow:0 10px 24px rgba(21,185,198,.18)}.primary-button:hover{transform:translateY(-1px);filter:brightness(1.03)}.secondary-button{background:#edf2f3;color:var(--text)}.secondary-button:hover{background:#e3eaec}.danger-button{background:rgba(220,90,101,.11);color:#b93f49}.danger-button:hover{background:rgba(220,90,101,.17)}.full{width:100%}

.toast{position:fixed;z-index:200;left:50%;bottom:24px;transform:translate(-50%,30px);opacity:0;pointer-events:none;background:var(--ink);color:#fff;border-radius:14px;padding:11px 15px;font-size:12px;font-weight:850;box-shadow:0 16px 45px rgba(0,0,0,.28);transition:.2s ease}.toast.show{opacity:1;transform:translate(-50%,0)}.toast.error{background:#8f3038}

@media(max-width:900px){
  .topbar{grid-template-columns:1fr auto}.month-nav{grid-row:2;grid-column:1/-1;justify-content:center;padding-top:4px}.top-actions{align-self:start}.month-title{min-width:210px}.brand-sub{display:none}.calendar-shell{border-radius:20px}}
@media(max-width:720px){
  body{overflow:hidden}.app{padding:8px;gap:8px}.topbar{min-height:auto;padding:10px 11px;border-radius:18px;grid-template-columns:1fr auto}.brand-mark{width:36px;height:36px;border-radius:11px}.brand{font-size:18px}.top-actions .today-button{display:none}.logout-button{height:36px;padding:0 11px}.month-nav{gap:6px}.icon-button{width:38px;height:38px}.month-title{font-size:17px;min-width:180px}.desktop-calendar{display:none}.mobile-agenda{display:block}.calendar-shell{background:rgba(255,255,255,.72)}
  .visit-modal{width:100%;height:92dvh;max-height:92dvh;align-self:end;border-radius:24px 24px 0 0}.modal-backdrop{align-items:end;padding:0}.modal-header{min-height:76px;padding:15px 16px}.modal-content{display:grid;grid-template-columns:1fr;grid-template-rows:auto minmax(0,1fr);height:calc(92dvh - 76px);max-height:none;overflow:hidden}.day-visits{border-right:0;border-bottom:1px solid var(--line);max-height:165px;padding:14px}.visit-form{min-height:0;overflow:hidden}.visit-form-scroll{overflow:auto;padding:16px 16px 8px}.form-grid.two{grid-template-columns:1fr 1fr}.modal-actions{padding:12px 16px max(12px,env(safe-area-inset-bottom));background:#fff}}
@media(max-width:440px){.month-title{min-width:150px}.form-grid.two{grid-template-columns:1fr}.modal-actions{align-items:stretch;flex-direction:column}.modal-actions-right{width:100%;margin:0}.modal-actions-right button,.danger-button{flex:1}.visit-modal{height:95dvh;max-height:95dvh}.modal-content{height:calc(95dvh - 76px)}}


/* Audit details */
.address-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:stretch}
.address-row textarea{min-width:0}
.map-button{border:1px solid rgba(21,185,198,.24);border-radius:13px;background:linear-gradient(145deg,rgba(21,185,198,.11),rgba(21,185,198,.05));color:var(--cyan-2);padding:0 15px;min-width:142px;font-size:11px;font-weight:950;display:flex;align-items:center;justify-content:center;gap:7px;transition:.16s ease}
.map-button:hover:not(:disabled){background:linear-gradient(145deg,rgba(21,185,198,.18),rgba(21,185,198,.08));transform:translateY(-1px);box-shadow:0 10px 24px rgba(21,185,198,.10)}
.map-button:disabled{opacity:.42;cursor:not-allowed}
.map-button-icon{display:grid;place-items:center;width:21px;height:21px;border-radius:7px;background:var(--cyan);color:var(--ink);font-size:13px}
.audit-field{margin-top:2px}
.audit-upload-box{display:flex;align-items:center;gap:10px;min-height:54px;padding:8px;border:1px solid #d5dfe2;border-radius:14px;background:#f9fbfb;min-width:0}
.audit-picker{flex:0 0 auto;margin:0;cursor:pointer}
.audit-picker input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.audit-picker>span{display:inline-flex;align-items:center;min-height:38px;padding:0 13px;border-radius:10px;background:var(--ink);color:#fff;font-size:11px;font-weight:950;transition:.16s ease}
.audit-picker:hover>span{background:var(--ink-2);transform:translateY(-1px)}
.audit-file-state{flex:1;min-width:0;color:var(--muted);font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.audit-current{display:flex;align-items:center;gap:6px;flex:0 0 auto}
.audit-current[hidden]{display:none!important}
.audit-current a,.audit-remove{border:0;border-radius:9px;padding:8px 9px;font-size:10px;font-weight:900;text-decoration:none}
.audit-current a{background:rgba(21,185,198,.11);color:var(--cyan-2)}
.audit-current a:hover{background:rgba(21,185,198,.17)}
.audit-remove{background:rgba(220,90,101,.10);color:#b93f49;cursor:pointer}
.audit-remove:hover{background:rgba(220,90,101,.17)}
.field-hint{margin-top:-7px;color:#84949a;font-size:10px;line-height:1.4}

@media(max-width:720px){
  .address-row{grid-template-columns:1fr}
  .map-button{min-height:44px;width:100%}
  .audit-upload-box{align-items:stretch;flex-direction:column}
  .audit-picker>span{width:100%;justify-content:center}
  .audit-file-state{white-space:normal;overflow:visible}
  .audit-current{width:100%}
  .audit-current a,.audit-remove{flex:1;text-align:center;min-height:38px}
}
