
:root{
 --bg:#f6f8fc;--surface:#fff;--surface2:#f0f5fb;--text:#142033;--muted:#738198;--line:#dbe5ef;
 --primary:#0b73f6;--primary2:#eaf3ff;--green:#16a765;--green2:#e8f7ef;--red:#e5484d;--red2:#fff0f1;
 --gold:#e4a92a;--purple:#7a5af8;--shadow:0 8px 24px rgba(28,45,67,.08);--radius:18px;--header-h:74px;--nav-h:74px;
 color-scheme:light dark;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;
}
@media(prefers-color-scheme:dark){:root{
 --bg:#07111d;--surface:#0d1b2a;--surface2:#11263a;--text:#f3f7fb;--muted:#92a5b8;--line:#284158;
 --primary:#3a97ff;--primary2:#102b47;--green:#39c980;--green2:#103325;--red:#ff6b70;--red2:#38171b;
 --gold:#f0b64a;--purple:#9f87ff;--shadow:0 10px 28px rgba(0,0,0,.24);
}}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg);color:var(--text)}body{overscroll-behavior-y:none}
button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{opacity:.5;cursor:not-allowed}
.app-shell{min-height:100dvh}.app-header{position:fixed;z-index:50;top:0;left:0;right:0;height:calc(var(--header-h) + env(safe-area-inset-top));padding:env(safe-area-inset-top) 18px 0;display:flex;align-items:center;justify-content:space-between;background:color-mix(in srgb,var(--surface) 94%,transparent);backdrop-filter:blur(18px);border-bottom:1px solid var(--line)}
.brand-wrap{display:flex;align-items:center;gap:10px;min-width:0}.brand-logo{width:42px;height:42px;object-fit:contain;border-radius:12px}.brand-copy{display:flex;flex-direction:column;line-height:1.05}.brand-copy strong{font-size:22px;letter-spacing:.1px}.brand-copy span{font-size:12px;color:var(--muted);font-weight:700}.beta-badge{font-size:10px;font-weight:900;background:#ffd86b;color:#392700;border-radius:999px;padding:5px 7px;white-space:nowrap}
.header-actions{display:flex;gap:8px}.icon-btn{border:1px solid var(--line);background:var(--surface);color:var(--text);min-width:44px;height:44px;border-radius:14px;display:flex;align-items:center;justify-content:center;position:relative}.add-btn{background:var(--primary);color:white;border-color:var(--primary);font-size:25px}.sync-chip{gap:7px;padding:0 12px;min-width:auto}.sync-dot{width:8px;height:8px;border-radius:50%;background:#9aa8b7}.sync-text{font-size:12px;font-weight:800}.sync-chip.synced .sync-dot{background:var(--green)}.sync-chip.pending .sync-dot{background:var(--gold)}.sync-chip.conflict .sync-dot{background:var(--red)}
.notify-dot{position:absolute;right:-3px;top:-5px;background:var(--red);color:#fff;border:2px solid var(--surface);font-size:10px;font-weight:900;min-width:19px;height:19px;border-radius:10px;display:grid;place-items:center}.hidden{display:none!important}
.main-content{padding:calc(var(--header-h) + env(safe-area-inset-top) + 18px) 18px calc(var(--nav-h) + env(safe-area-inset-bottom) + 24px);max-width:1100px;margin:0 auto;min-height:100dvh;outline:none}
.page-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:2px 0 16px}.page-head h1{font-size:30px;margin:0}.page-head p{margin:4px 0 0;color:var(--muted)}.back-title{display:flex;align-items:center;gap:10px}.back-btn{border:0;background:var(--primary2);color:var(--primary);width:42px;height:42px;border-radius:14px;font-weight:900}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}.card+.card{margin-top:14px}.section-title{font-size:18px;margin:0 0 12px}.muted{color:var(--muted)}
.project-picker{display:flex;align-items:center;gap:12px}.project-avatar{width:48px;height:48px;border-radius:14px;background:linear-gradient(135deg,#dcecff,#fff2d1);display:grid;place-items:center;font-size:25px;flex:0 0 auto}.project-picker select,.field select,.field input,.field textarea{width:100%;border:1px solid var(--line);background:var(--surface2);color:var(--text);border-radius:13px;padding:12px 13px;min-height:46px;outline:none}.project-picker select:focus,.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 18%,transparent)}
.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:14px 0}.metric{min-height:104px;padding:14px;border-radius:16px;background:var(--surface);border:1px solid var(--line);display:flex;flex-direction:column;justify-content:space-between}.metric .ico{font-size:20px}.metric strong{font-size:24px}.metric small{font-weight:800;color:var(--muted)}.metric.green{background:color-mix(in srgb,var(--green2) 70%,var(--surface))}.metric.red{background:color-mix(in srgb,var(--red2) 70%,var(--surface))}.metric.blue{background:color-mix(in srgb,var(--primary2) 70%,var(--surface))}
.progress-row{display:flex;justify-content:space-between;align-items:center;gap:14px}.progress-track{height:9px;border-radius:9px;background:var(--surface2);overflow:hidden;flex:1}.progress-bar{height:100%;border-radius:inherit;background:linear-gradient(90deg,#28c88a,var(--primary));width:0}.status-pill{font-size:11px;font-weight:900;padding:6px 8px;border-radius:999px;background:var(--green2);color:var(--green)}
.quick-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:10px}.quick-btn{border:1px solid var(--line);background:var(--surface);border-radius:16px;min-height:92px;padding:11px 8px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--text);font-weight:800}.quick-btn span{font-size:24px}.quick-btn:hover{border-color:var(--primary);transform:translateY(-1px)}
.alert-card{border-left:4px solid var(--gold)}.alert-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 0;border-top:1px solid var(--line)}.alert-row:first-of-type{border-top:0}.link-btn{border:0;background:none;color:var(--primary);font-weight:800;padding:8px}
.bottom-nav{position:fixed;z-index:60;bottom:0;left:0;right:0;height:calc(var(--nav-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:color-mix(in srgb,var(--surface) 96%,transparent);backdrop-filter:blur(18px);border-top:1px solid var(--line);display:grid;grid-template-columns:repeat(6,1fr)}.nav-btn{border:0;background:transparent;color:var(--muted);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;width:100%;height:100%;min-width:0}.nav-btn span{font-size:20px}.nav-btn b{font-size:10px}.nav-btn.active{color:var(--primary);background:linear-gradient(180deg,transparent,var(--primary2))}
.list{display:grid;gap:10px}.list-row{width:100%;border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:16px;padding:14px;display:flex;align-items:center;gap:12px;text-align:left;min-height:74px}.list-row .grow{flex:1;min-width:0}.list-row strong{display:block;font-size:16px}.list-row small{color:var(--muted)}.chev{font-size:24px;color:var(--muted)}
.project-card{width:100%;text-align:left;border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:18px;padding:15px}.project-card-top{display:flex;gap:12px;align-items:center}.project-card .mini-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:12px}.mini{background:var(--surface2);border-radius:12px;padding:9px}.mini b{display:block;font-size:16px}.mini span{font-size:10px;color:var(--muted);font-weight:800}.project-progress{height:7px;background:var(--surface2);border-radius:8px;overflow:hidden;margin-top:12px}.project-progress i{display:block;height:100%;background:var(--primary)}
.toolbar{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:12px}.btn{border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:13px;min-height:44px;padding:10px 14px;font-weight:800}.btn.primary{background:var(--primary);color:#fff;border-color:var(--primary)}.btn.danger{background:var(--red2);color:var(--red);border-color:color-mix(in srgb,var(--red) 30%,var(--line))}.btn.block{width:100%}.segmented{display:flex;background:var(--surface2);padding:4px;border-radius:14px;gap:4px}.segmented button{flex:1;border:0;background:transparent;color:var(--muted);border-radius:10px;padding:8px;font-weight:800}.segmented button.active{background:var(--surface);color:var(--primary);box-shadow:var(--shadow)}
.attendance-table{display:grid;gap:10px}.trade-row{display:grid;grid-template-columns:minmax(130px,1.15fr) 150px 105px minmax(190px,1fr) 120px;grid-template-areas:"trade counter shift name rate";align-items:end;gap:10px;background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:12px}.trade-name{grid-area:trade;align-self:center;font-weight:900;display:flex;flex-direction:column;gap:4px;min-width:0}.trade-name strong{font-size:16px}.trade-workers{font-size:11px;font-weight:700;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.attendance-control{display:flex;flex-direction:column;gap:5px;min-width:0}.attendance-control label{font-size:10px;font-weight:900;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);padding-left:2px}.attendance-control label span{text-transform:none;letter-spacing:0;font-weight:700}.counter-control{grid-area:counter}.shift-control{grid-area:shift}.name-control{grid-area:name}.rate-control{grid-area:rate}.counter{display:grid;grid-template-columns:44px 1fr 44px;align-items:center;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--surface2);height:44px}.counter button{height:42px;border:0;background:transparent;color:var(--primary);font-size:20px;font-weight:900}.counter b{text-align:center}.trade-row select,.trade-row input{width:100%;height:44px;border:1px solid var(--line);background:var(--surface2);color:var(--text);border-radius:11px;padding:0 10px}.name-control select{font-weight:700}
.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.field{display:flex;flex-direction:column;gap:6px}.field label{font-size:11px;font-weight:900;color:var(--muted);text-transform:uppercase;letter-spacing:.4px}.field.full{grid-column:1/-1}.field textarea{min-height:88px;resize:vertical}
.modal-layer{position:fixed;z-index:100;inset:0;background:rgba(4,12,22,.55);display:flex;align-items:center;justify-content:center;padding:18px}.modal{width:min(720px,100%);max-height:min(88dvh,900px);overflow:auto;background:var(--surface);border:1px solid var(--line);border-radius:22px;box-shadow:0 30px 80px rgba(0,0,0,.25)}.modal.full{width:min(1000px,100%)}.modal-head{position:sticky;top:0;z-index:2;background:color-mix(in srgb,var(--surface) 96%,transparent);backdrop-filter:blur(16px);display:flex;align-items:center;justify-content:space-between;padding:16px;border-bottom:1px solid var(--line)}.modal-head h2{margin:0}.modal-body{padding:16px}.modal-close{width:42px;height:42px;border:0;border-radius:13px;background:var(--surface2);color:var(--text);font-size:20px}.modal-actions{position:sticky;bottom:0;background:color-mix(in srgb,var(--surface) 96%,transparent);backdrop-filter:blur(16px);border-top:1px solid var(--line);padding:12px 16px;display:flex;justify-content:flex-end;gap:10px}
.doc-items{display:grid;gap:8px}.doc-item{display:grid;grid-template-columns:1.8fr .8fr .8fr 44px;gap:8px}.doc-item input{width:100%;border:1px solid var(--line);background:var(--surface2);color:var(--text);border-radius:11px;padding:10px}.gst-details{border:1px solid var(--line);border-radius:15px;margin-top:12px}.gst-details summary{padding:13px 14px;font-weight:900;cursor:pointer}.gst-details>div{padding:0 14px 14px}.total-box{margin-top:12px;background:var(--surface2);border-radius:14px;padding:12px}.total-line{display:flex;justify-content:space-between;padding:5px 0}.total-line.grand{font-size:20px;font-weight:900;border-top:1px solid var(--line);margin-top:6px;padding-top:10px}
.report-card{padding:14px;border:1px solid var(--line);border-radius:16px;background:var(--surface);display:flex;align-items:center;gap:12px}.report-icon{width:48px;height:48px;border-radius:14px;background:var(--primary2);display:grid;place-items:center;font-size:24px}.report-card .grow{flex:1}.report-card-actions{display:flex;gap:7px}.report-card-actions button{border:0;background:var(--primary2);color:var(--primary);border-radius:10px;padding:8px 10px;font-weight:800}
.sync-panel{display:grid;gap:12px}.sync-state{display:flex;align-items:center;justify-content:space-between;padding:12px;background:var(--surface2);border-radius:14px}.sync-state b{display:block}.sync-state small{color:var(--muted)}
.vai-screen{min-height:65dvh;display:flex;flex-direction:column}.vai-hero{text-align:center;padding:10px 0 18px}.vai-hero img{width:90px;height:90px;object-fit:contain}.vai-chips{display:grid;gap:8px}.vai-chips button{border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:14px;padding:11px;text-align:left;font-weight:800}.vai-chat{flex:1;display:grid;align-content:end;gap:8px;margin-top:12px}.bubble{max-width:82%;padding:11px 13px;border-radius:15px;background:var(--surface2)}.bubble.user{margin-left:auto;background:var(--primary);color:#fff}.vai-compose{display:grid;grid-template-columns:1fr 46px;gap:8px;margin-top:12px}.vai-compose input{border:1px solid var(--line);background:var(--surface2);color:var(--text);border-radius:14px;padding:12px}.vai-compose button{border:0;background:var(--primary);color:#fff;border-radius:14px;font-size:20px}
.toast-root{position:fixed;z-index:200;left:50%;bottom:calc(var(--nav-h) + env(safe-area-inset-bottom) + 12px);transform:translateX(-50%);display:grid;gap:8px;width:min(92vw,460px)}.toast{background:#162130;color:#fff;border-radius:13px;padding:12px 14px;box-shadow:var(--shadow);animation:toastIn .2s ease}.toast.error{background:#7d2025}.toast.success{background:#12643e}@keyframes toastIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media(max-width:780px){
 .app-header{padding-left:12px;padding-right:12px}.brand-logo{width:38px;height:38px}.brand-copy strong{font-size:19px}.beta-badge{display:none}.sync-chip .sync-text{display:none}.sync-chip{padding:0;width:44px}
 .main-content{padding-left:12px;padding-right:12px}.page-head h1{font-size:26px}.metric-grid{grid-template-columns:repeat(2,1fr)}.quick-grid{grid-template-columns:repeat(4,1fr)}.trade-row{grid-template-columns:minmax(92px,1fr) 140px 86px;grid-template-areas:"trade counter shift" "name name rate";align-items:end}.trade-name{align-self:center}.name-control{grid-area:name}.rate-control{grid-area:rate}.form-grid{grid-template-columns:1fr}.field.full{grid-column:auto}.doc-item{grid-template-columns:1fr 76px 86px 42px}.report-card{align-items:flex-start}.report-card-actions{flex-direction:column}.bottom-nav{grid-template-columns:repeat(6,1fr)}.nav-btn b{font-size:9px}.modal-layer{padding:0;align-items:flex-end}.modal{width:100%;max-height:92dvh;border-radius:22px 22px 0 0}.modal.full{width:100%}
}
@media(max-width:430px){.quick-grid{grid-template-columns:repeat(3,1fr)}.metric{min-height:96px}.metric strong{font-size:21px}.brand-copy span{font-size:11px}.bottom-nav{height:calc(70px + env(safe-area-inset-bottom))}.nav-btn span{font-size:19px}.nav-btn b{font-size:8.5px}.trade-row{grid-template-columns:minmax(84px,1fr) 132px 82px;grid-template-areas:"trade counter shift" "name name rate";gap:8px;padding:10px}.attendance-control label{font-size:9px}.trade-workers{font-size:10px}}
@media(min-width:1000px){.main-content{padding-left:26px;padding-right:26px}.bottom-nav{left:50%;right:auto;transform:translateX(-50%);width:min(900px,calc(100% - 30px));border:1px solid var(--line);border-bottom:0;border-radius:22px 22px 0 0;overflow:hidden}.app-header{padding-left:max(24px,calc((100vw - 1100px)/2));padding-right:max(24px,calc((100vw - 1100px)/2))}.quick-btn{min-height:104px}}
@media print{.app-header,.bottom-nav,.modal-actions,.modal-close,.no-print{display:none!important}.main-content{padding:0}.modal-layer{position:static;background:none;padding:0}.modal{max-height:none;overflow:visible;border:0;box-shadow:none;width:100%}}

/* V34 Beta 2 Change 1: attendance worker/rate controls */
@media(prefers-color-scheme:dark){
  .attendance-control select,
  .attendance-control input,
  .counter{background:var(--surface2);color:var(--text);border-color:var(--line)}
  .attendance-control select option{background:var(--surface);color:var(--text)}
}

/* V34 Beta 3 Change 2: clickable Home calendar date */
.home-date-card-v34{
  appearance:none;
  -webkit-appearance:none;
  border:1px solid var(--line);
  background:var(--surface);
  color:var(--text);
  border-radius:16px;
  min-height:64px;
  padding:0 18px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  font:inherit;
  font-size:18px;
  font-weight:900;
  cursor:pointer;
  box-shadow:var(--shadow-sm);
  touch-action:manipulation;
}
.home-date-card-v34:hover{border-color:var(--primary);background:var(--surface2)}
.home-date-card-v34:active{transform:scale(.985)}
.calendar-glyph-v34{font-size:15px;color:var(--primary);font-weight:900}
.home-date-native-v34{
  position:fixed!important;
  width:1px!important;
  height:1px!important;
  opacity:0!important;
  pointer-events:none!important;
  left:-9999px!important;
  top:-9999px!important;
}
@media(max-width:700px){
  .home-date-card-v34{
    min-height:58px;
    padding:0 16px;
    font-size:17px;
    border-radius:15px;
  }
}
@media(prefers-color-scheme:dark){
  .home-date-card-v34{
    background:var(--surface);
    color:var(--text);
    border-color:var(--line);
  }
  .home-date-card-v34:hover{background:var(--surface2)}
}

/* V34 Beta 4 Change 3: global modal scroll lock */
html.modal-open-v34,
body.modal-open-v34{
  overflow:hidden!important;
  overscroll-behavior:none!important;
  width:100%!important;
}
body.modal-open-v34{
  position:fixed!important;
  left:0!important;
  right:0!important;
}
.modal-layer{
  overscroll-behavior:contain!important;
  touch-action:none;
  overflow:hidden!important;
}
.modal{
  overscroll-behavior:contain!important;
  -webkit-overflow-scrolling:touch;
  touch-action:pan-y;
}
.modal-body{
  overscroll-behavior:contain!important;
}
@media(max-width:700px){
  .modal-layer{
    height:100dvh!important;
    min-height:100dvh!important;
  }
  .modal{
    max-height:92dvh!important;
  }
}

/* V34 Beta 5 Change 4: true viewport bottom navigation */
:root{
  --bottom-nav-h:76px;
}
.bottom-nav,
.bottom,
nav.bottom,
#bottomNav,
[data-bottom-nav]{
  position:fixed!important;
  left:0!important;
  right:0!important;
  bottom:0!important;
  top:auto!important;
  width:100%!important;
  min-height:var(--bottom-nav-h)!important;
  z-index:1000!important;
  transform:none!important;
  margin:0!important;
  padding-bottom:env(safe-area-inset-bottom,0px)!important;
  background:color-mix(in srgb,var(--surface) 96%,transparent)!important;
  backdrop-filter:blur(18px);
  -webkit-backdrop-filter:blur(18px);
  border-top:1px solid var(--line)!important;
  box-shadow:0 -8px 24px rgba(15,35,60,.08)!important;
}

/* Ensure the app content always clears the fixed nav */
main,
.app-main,
#appMain,
.page,
.page-content,
#pageRoot{
  padding-bottom:calc(var(--bottom-nav-h) + env(safe-area-inset-bottom,0px) + 22px)!important;
}

/* Extra clearance for long Home sections/cards */
#app,
.app-shell{
  min-height:100dvh;
}

/* iOS PWA safe area */
@supports(padding:max(0px)){
  .bottom-nav,
  .bottom,
  nav.bottom,
  #bottomNav,
  [data-bottom-nav]{
    padding-bottom:max(env(safe-area-inset-bottom),0px)!important;
  }
}

/* Mobile touch targets */
@media(max-width:700px){
  :root{--bottom-nav-h:72px}
  .bottom-nav button,
  .bottom button,
  nav.bottom button,
  #bottomNav button,
  [data-bottom-nav] button{
    min-height:58px!important;
    touch-action:manipulation;
  }
}

/* Desktop keeps nav stable and centered without covering content */
@media(min-width:901px){
  :root{--bottom-nav-h:70px}
}

/* When a modal is open the nav belongs to the frozen background */
body.modal-open-v34 .bottom-nav,
body.modal-open-v34 .bottom,
body.modal-open-v34 nav.bottom,
body.modal-open-v34 #bottomNav,
body.modal-open-v34 [data-bottom-nav]{
  pointer-events:none!important;
}

/* V34 Beta 6 Change 5: clear Money Received action */
.payment-head-actions{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:10px;
  flex-wrap:wrap;
}
.received-btn-v34{
  background:color-mix(in srgb,var(--primary) 8%,var(--surface))!important;
  color:var(--primary)!important;
  border:1px solid color-mix(in srgb,var(--primary) 38%,var(--line))!important;
}
.received-btn-v34:hover{
  background:color-mix(in srgb,var(--primary) 14%,var(--surface))!important;
}
.empty-received-v34{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
}
@media(max-width:700px){
  .payments-head-v34{
    align-items:flex-start;
    gap:12px;
  }
  .payment-head-actions{
    width:100%;
    display:grid;
    grid-template-columns:1fr 1fr;
  }
  .payment-head-actions .btn{
    width:100%;
    min-height:54px;
    padding:8px 10px;
    white-space:normal;
    line-height:1.15;
  }
  .empty-received-v34{
    align-items:stretch;
    flex-direction:column;
  }
  .empty-received-v34 .btn{
    width:100%;
  }
}
@media(max-width:390px){
  .payment-head-actions{
    grid-template-columns:1fr;
  }
}
@media(prefers-color-scheme:dark){
  .received-btn-v34{
    background:color-mix(in srgb,var(--primary) 13%,var(--surface))!important;
    color:#8fc2ff!important;
  }
}

/* V34 Beta 7 Change 6: report preview and PDF */
.report-print-sheet{background:#fff;color:#0d1b2e;padding:20px;border-radius:14px}
.report-brand{display:flex;align-items:center;gap:12px}.report-brand img{width:52px;height:52px;object-fit:contain}.report-brand h2{margin:0;font-size:22px}.report-brand div div{font-size:12px}
.report-rule{border-top:2px solid #111;margin:12px 0 18px}.report-print-sheet h1{font-size:24px;margin:0 0 8px}.report-period{font-size:14px;margin-bottom:16px}
.report-metrics{display:grid;gap:10px;margin:14px 0}.report-metrics.two,.report-metrics.four{grid-template-columns:repeat(2,1fr)}
.report-metric{border:1px solid #dce5ee;border-radius:12px;padding:12px}.report-metric span{display:block;color:#728198;font-size:12px;font-weight:800;margin-bottom:7px}.report-metric strong{font-size:20px}
.report-section-title{margin:18px 0 8px}.report-details{display:grid;gap:6px}.report-detail-row{display:grid;grid-template-columns:1fr auto auto;gap:12px;border-bottom:1px solid #edf1f5;padding:7px 0;font-size:13px}
.report-generated{margin-top:18px;color:#7d899b;font-size:11px}
@media print{
  @page{size:A4 portrait;margin:10mm}
  html,body{background:#fff!important;overflow:visible!important;height:auto!important}
  body *{visibility:hidden!important}
  #printReportV34,#printReportV34 *{visibility:visible!important}
  #printReportV34{position:absolute!important;left:0!important;top:0!important;width:100%!important;max-width:none!important;margin:0!important;padding:0!important;border:0!important;box-shadow:none!important;border-radius:0!important;color:#000!important;background:#fff!important}
  .modal-head,.modal-actions,.bottom-nav,.bottom,header,.app-header{display:none!important}
}

/* V34 Beta 8 Change 7: report period selector */
.report-period-select-v34{
  width:100%;
  min-height:54px;
  border:1px solid var(--line);
  background:var(--surface2);
  color:var(--text);
  border-radius:14px;
  padding:0 16px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  font:inherit;
  font-weight:800;
  cursor:pointer;
  touch-action:manipulation;
}
.report-period-select-v34:hover{border-color:var(--primary)}
.report-period-chevron-v34{font-size:24px;color:var(--primary);line-height:1}
.period-mode-v34{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:8px;
  margin-bottom:16px;
}
.period-mode-btn-v34{
  min-height:46px;
  border:1px solid var(--line);
  background:var(--surface2);
  color:var(--muted);
  border-radius:12px;
  font-weight:900;
}
.period-mode-btn-v34.active{
  background:var(--primary);
  color:#fff;
  border-color:var(--primary);
}
.period-preview-v34{
  margin-top:10px;
  padding:12px 14px;
  border-radius:12px;
  background:var(--surface2);
  color:var(--text);
  font-weight:800;
  text-align:center;
}
@media(max-width:700px){
  .period-mode-v34{grid-template-columns:1fr 1fr 1fr}
  .period-mode-btn-v34{font-size:13px;padding:8px}
}

/* V34.0.1 Beta 9 stability pass: modal stacking, safe areas, VAI and print */
#modalRoot.active-v34{position:fixed;inset:0;z-index:5000;pointer-events:none}
#modalRoot.active-v34 .modal-layer{pointer-events:auto}
.modal-layer{z-index:5000!important;padding:max(12px,env(safe-area-inset-top)) 12px max(12px,env(safe-area-inset-bottom))!important;touch-action:none}
.modal{display:flex;flex-direction:column;overflow:hidden!important;max-height:calc(100dvh - max(24px,env(safe-area-inset-top)) - max(24px,env(safe-area-inset-bottom)))!important}
.modal-head{flex:0 0 auto}
.modal-body{flex:1 1 auto;min-height:0;overflow:auto;-webkit-overflow-scrolling:touch;touch-action:pan-y}
.modal-actions{position:relative!important;flex:0 0 auto;bottom:auto!important;padding-bottom:calc(12px + env(safe-area-inset-bottom))!important}
body.modal-open-v34 .bottom-nav{z-index:60!important;pointer-events:none!important}
body.modal-open-v34 #app{pointer-events:none;user-select:none}

/* Inputs inside sheets must stay above the iPhone home indicator and remain tappable. */
.modal input,.modal select,.modal textarea,.modal button{touch-action:manipulation}
.modal .field input,.modal .field select,.modal .field textarea{font-size:16px}

/* Report preview has its own scroll body; actions never sit under bottom navigation. */
.report-preview-modal-v34{width:min(820px,100%)!important}
.report-preview-modal-v34 .modal-body{background:var(--surface2)}
.report-preview-modal-v34 .report-print-sheet{margin:0 auto;max-width:760px}

/* VAI is a true chat workspace, not a stretched generic form. */
.vai-modal-v34{width:min(980px,calc(100vw - 32px))!important;height:min(820px,calc(100dvh - 32px))!important;max-height:none!important}
.vai-modal-v34 .modal-body{padding:0!important;overflow:hidden!important}
.vai-screen{height:100%;min-height:0!important;display:grid!important;grid-template-rows:auto auto minmax(0,1fr) auto;gap:12px;padding:16px}
.vai-hero{display:flex!important;align-items:center;justify-content:center;gap:14px;text-align:left!important;padding:0!important}
.vai-hero img{width:58px!important;height:58px!important;border-radius:16px}
.vai-hero h2{margin:0 0 3px;font-size:22px}.vai-hero p{margin:0}
.vai-chips{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px!important}
.vai-chips button{min-height:46px}
.vai-chat{min-height:0!important;overflow:auto!important;align-content:start!important;margin-top:0!important;padding:12px;border:1px solid var(--line);background:var(--surface2);border-radius:16px}
.vai-compose{margin-top:0!important;position:relative;background:var(--surface);padding-top:0}
.vai-compose input{font-size:16px;min-height:50px}
.vai-compose button{min-width:50px;min-height:50px}

@media(max-width:780px){
  .modal-layer{padding:max(8px,env(safe-area-inset-top)) 0 0!important;align-items:flex-end!important}
  .modal{width:100%!important;max-height:calc(100dvh - max(8px,env(safe-area-inset-top)))!important;border-radius:22px 22px 0 0!important;border-bottom:0!important}
  .modal-actions{padding-bottom:calc(12px + max(env(safe-area-inset-bottom),8px))!important}
  .vai-modal-v34{height:calc(100dvh - max(8px,env(safe-area-inset-top)))!important;max-height:calc(100dvh - max(8px,env(safe-area-inset-top)))!important;border-radius:20px 20px 0 0!important}
  .vai-modal-v34 .modal-head{padding:12px 14px}
  .vai-screen{padding:12px;gap:10px}
  .vai-hero{justify-content:flex-start}
  .vai-hero img{width:46px!important;height:46px!important}
  .vai-hero h2{font-size:18px}.vai-hero p{font-size:12px}
  .vai-chips{grid-template-columns:1fr 1fr!important}
  .vai-chips button{font-size:12px;padding:9px;min-height:42px}
  .vai-chat{padding:10px}
  .bubble{max-width:90%}
}
@media(max-width:430px){
  .vai-chips{grid-template-columns:1fr!important}
  .modal-actions{display:grid!important;grid-template-columns:1fr 1fr;gap:8px}
  .modal-actions .btn{width:100%}
}

/* Print fallback: isolate report even if iframe printing is unavailable. */
@media print{
  body{position:static!important;top:auto!important;width:auto!important;overflow:visible!important}
  body>#app,body>#toastRoot,body>#restoreInput{display:none!important}
  body>#modalRoot{display:block!important;position:static!important}
  #modalRoot .modal-layer{display:block!important;position:static!important;padding:0!important;background:#fff!important}
  #modalRoot .modal{display:block!important;max-height:none!important;overflow:visible!important;border:0!important;box-shadow:none!important;background:#fff!important}
  #modalRoot .modal-head,#modalRoot .modal-actions{display:none!important}
  #modalRoot .modal-body{display:block!important;overflow:visible!important;padding:0!important}
  #modalRoot .modal-body>*:not(#printReportV34){display:none!important}
  #printReportV34{display:block!important;position:static!important;width:100%!important;margin:0!important;padding:0!important}
}

/* V34 Beta 10: unified iOS-safe Home + Attendance date selector */
.date-picker-shell-v34{
  position:relative;
  display:inline-flex;
  flex:0 0 auto;
  cursor:pointer;
  -webkit-tap-highlight-color:transparent;
  touch-action:manipulation;
}
.date-picker-shell-v34 .home-date-card-v34{
  width:100%;
  pointer-events:none;
}
.date-picker-native-v34{
  position:absolute!important;
  inset:0!important;
  width:100%!important;
  height:100%!important;
  min-width:100%!important;
  min-height:100%!important;
  margin:0!important;
  padding:0!important;
  border:0!important;
  opacity:.001!important;
  z-index:3!important;
  cursor:pointer!important;
  pointer-events:auto!important;
  -webkit-appearance:none;
  appearance:none;
}
.date-picker-shell-v34:focus-within .home-date-card-v34{
  border-color:var(--primary);
  box-shadow:0 0 0 2px color-mix(in srgb,var(--primary) 18%,transparent),var(--shadow-sm);
}
.attendance-head-actions-v34{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:10px;
  flex-wrap:wrap;
}
.attendance-project-card-v34 .field{margin:0}
.attendance-project-card-v34 select{
  width:100%;
  min-height:50px;
  border:1px solid var(--line);
  background:var(--surface2);
  color:var(--text);
  border-radius:13px;
  padding:0 14px;
  font:inherit;
  font-weight:800;
}
@media(max-width:700px){
  .attendance-page-head-v34{align-items:flex-start}
  .attendance-head-actions-v34{width:auto;max-width:58%;flex-direction:column;align-items:stretch}
  .attendance-head-actions-v34 .date-picker-shell-v34{width:100%}
  .attendance-head-actions-v34 .copy-yesterday-v34{min-height:40px;padding:8px 12px;font-size:12px}
}
@media(max-width:430px){
  .attendance-page-head-v34{gap:10px}
  .attendance-head-actions-v34{max-width:60%}
  .attendance-head-actions-v34 .home-date-card-v34{min-height:54px;padding:0 12px;font-size:16px}
}

/* V34 Beta 11: Attendance date layout + reliable calendar trigger */
.date-picker-shell-v34{
  position:relative;
  display:inline-flex;
  width:auto;
  min-width:0;
}
.date-picker-shell-v34 .home-date-card-v34{
  position:relative;
  z-index:1;
  width:auto;
  min-width:170px;
  border:1.5px solid var(--primary);
  background:var(--surface2);
}
.date-picker-native-v34{
  position:absolute!important;
  inset:0!important;
  width:100%!important;
  height:100%!important;
  margin:0!important;
  padding:0!important;
  border:0!important;
  opacity:0!important;
  z-index:2!important;
  cursor:pointer!important;
  pointer-events:auto!important;
  /* Keep the native date control intact on iOS. */
  -webkit-appearance:auto!important;
  appearance:auto!important;
}
.attendance-page-head-v34{
  align-items:center;
}
.attendance-project-top-v34{
  display:flex;
  align-items:flex-end;
  gap:10px;
}
.attendance-project-field-v34{
  flex:1;
  min-width:0;
}
.copy-yesterday-v34{
  flex:0 0 auto;
  white-space:nowrap;
  min-height:50px;
}
@media(max-width:700px){
  .attendance-page-head-v34{align-items:center;gap:10px}
  .attendance-page-head-v34>.date-picker-shell-v34{width:auto;max-width:58%}
  .attendance-page-head-v34>.date-picker-shell-v34 .home-date-card-v34{min-width:0;width:100%;min-height:58px;padding:0 13px;font-size:16px}
  .attendance-project-top-v34{align-items:flex-end}
  .copy-yesterday-v34{min-height:50px;padding:9px 11px;font-size:11px}
}
@media(max-width:430px){
  .attendance-page-head-v34 h1{font-size:26px}
  .attendance-page-head-v34 p{font-size:13px}
  .attendance-page-head-v34>.date-picker-shell-v34{max-width:56%}
  .attendance-page-head-v34>.date-picker-shell-v34 .home-date-card-v34{font-size:15px;padding:0 10px}
}

/* V34 Beta 12: Attendance header/project row viewport-safe layout */
.attendance-page-head-v34{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  align-items:center;
  gap:16px;
  width:100%;
}
.attendance-page-head-v34>div:first-child{min-width:0}
.attendance-page-head-v34>.date-picker-shell-v34{
  justify-self:end;
  max-width:100%;
}
.attendance-page-head-v34>.date-picker-shell-v34 .home-date-card-v34{
  min-width:170px;
  max-width:100%;
}
.attendance-project-top-v34{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  align-items:end;
  gap:10px;
  width:100%;
}
.attendance-project-field-v34{min-width:0;width:100%}
.copy-yesterday-v34{justify-self:end;max-width:100%}

@media(max-width:780px){
  .attendance-page-head-v34{
    grid-template-columns:minmax(0,1fr) minmax(150px,46%);
    gap:10px;
  }
  .attendance-page-head-v34>.date-picker-shell-v34{width:100%;max-width:none}
  .attendance-page-head-v34>.date-picker-shell-v34 .home-date-card-v34{
    width:100%;min-width:0;min-height:58px;padding:0 12px;font-size:16px;
  }
  .attendance-project-top-v34{grid-template-columns:minmax(0,1fr) auto}
}
@media(max-width:520px){
  .attendance-page-head-v34{grid-template-columns:minmax(0,1fr) minmax(142px,48%)}
  .attendance-page-head-v34 h1{font-size:26px}
  .attendance-page-head-v34 p{font-size:13px}
  .copy-yesterday-v34{min-height:46px;padding:8px 10px;font-size:11px}
}
@media(max-width:390px){
  .attendance-page-head-v34{grid-template-columns:minmax(0,1fr) minmax(132px,49%)}
  .attendance-page-head-v34>.date-picker-shell-v34 .home-date-card-v34{font-size:14px;padding:0 8px}
}


/* V34 Beta 13: compact attendance rows like approved reference */
.attendance-table-compact-v34{gap:10px}
.trade-row-compact-v34{grid-template-columns:minmax(180px,1.35fr) 110px 78px 92px;grid-template-areas:'trade counter shift rate';align-items:center}
.trade-row-compact-v34 .trade-name{align-self:center;gap:3px}
.trade-row-compact-v34 .trade-name strong{font-size:15px;line-height:1.2}
.trade-row-compact-v34 .trade-workers{font-size:12px;white-space:normal;overflow:visible;text-overflow:clip;line-height:1.3}
.trade-row-compact-v34 .attendance-control{gap:4px}
.trade-row-compact-v34 .attendance-control label{font-size:9px}
.trade-row-compact-v34 .counter{height:40px}
.trade-row-compact-v34 .counter button{height:38px}
.trade-row-compact-v34 select,.trade-row-compact-v34 input{height:40px;padding:0 9px}
@media(max-width:860px){.trade-row-compact-v34{grid-template-columns:minmax(140px,1fr) 118px 86px 96px}}
@media(max-width:560px){.trade-row-compact-v34{grid-template-columns:minmax(0,1fr) 120px 84px 86px;grid-template-areas:'trade counter shift rate';padding:10px;gap:8px}.trade-row-compact-v34 .trade-name strong{font-size:14px}.trade-row-compact-v34 .trade-workers{font-size:11px}}
@media(max-width:390px){.trade-row-compact-v34{grid-template-columns:minmax(88px,1fr) 108px 74px 82px}.trade-row-compact-v34 .trade-workers{font-size:10px}}

/* V34 Beta 15: worker editor */
.worker-active-field-v34 select{min-height:44px}


/* V34 Beta 16: multi-worker trade attendance + custom trades */
.attendance-trades-v34{display:grid;gap:12px;margin-top:12px}.attendance-trade-card-v34{border:1px solid var(--line);background:var(--surface);border-radius:16px;overflow:hidden}.attendance-trade-head-v34{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 12px;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--surface2) 55%,var(--surface))}.attendance-trade-head-v34 strong{display:block;font-size:16px}.attendance-trade-head-v34 small{display:block;color:var(--muted);margin-top:2px}.add-trade-worker-v34{min-height:36px;padding:7px 10px;font-size:12px}.attendance-worker-list-v34{display:grid}.attendance-worker-row-v34{display:grid;grid-template-columns:minmax(130px,1.2fr) 150px 105px 120px;grid-template-areas:'worker counter shift rate';align-items:end;gap:10px;padding:11px 12px;border-top:1px solid var(--line)}.attendance-worker-row-v34:first-child{border-top:0}.attendance-worker-name-v34{grid-area:worker;align-self:center;min-width:0}.attendance-worker-name-v34 strong{font-size:15px}.attendance-worker-row-v34 .counter-control{grid-area:counter}.attendance-worker-row-v34 .shift-control{grid-area:shift}.attendance-worker-row-v34 .rate-control{grid-area:rate}.attendance-worker-row-v34 select,.attendance-worker-row-v34 input{width:100%;height:42px;border:1px solid var(--line);background:var(--surface2);color:var(--text);border-radius:11px;padding:0 10px}@media(max-width:620px){.attendance-worker-row-v34{grid-template-columns:minmax(88px,1fr) 128px 84px 92px;gap:7px;padding:10px}.attendance-worker-name-v34 strong{font-size:14px}.attendance-trade-head-v34{padding:10px}.add-trade-worker-v34{font-size:11px;padding:6px 8px}}


/* V34 Beta 17: compact collapsed empty trades + mobile fit */
.attendance-trade-card-v34.empty-trade-v34 .attendance-trade-head-v34{border-bottom:0}
.attendance-trade-card-v34.empty-trade-v34{min-height:0}
.attendance-worker-row-v34{grid-template-columns:minmax(120px,1.2fr) 150px 105px 112px}
.attendance-worker-name-v34 strong{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media(max-width:620px){
  .attendance-trades-v34{gap:9px}
  .attendance-trade-head-v34{min-height:66px}
  .attendance-trade-card-v34.empty-trade-v34 .attendance-trade-head-v34{min-height:68px}
  .attendance-worker-row-v34{grid-template-columns:minmax(72px,1fr) minmax(104px,1.35fr) minmax(70px,.85fr) minmax(72px,.9fr);gap:6px;padding:9px 10px}
  .attendance-worker-row-v34 .counter{grid-template-columns:30px 1fr 30px;height:40px}
  .attendance-worker-row-v34 .counter button{height:38px;font-size:18px}
  .attendance-worker-row-v34 select,.attendance-worker-row-v34 input{height:40px;padding:0 7px;font-size:14px}
  .attendance-worker-row-v34 .attendance-control label{font-size:8px;letter-spacing:.03em}
  .attendance-worker-name-v34 strong{font-size:13px}
  .attendance-trade-head-v34 strong{font-size:15px}
  .attendance-trade-head-v34 small{font-size:11px}
  .add-trade-worker-v34{white-space:nowrap;min-height:38px}
}
@media(max-width:390px){
  .attendance-worker-row-v34{grid-template-columns:minmax(64px,.9fr) minmax(100px,1.35fr) minmax(66px,.85fr) minmax(68px,.9fr);gap:5px;padding:8px}
  .attendance-worker-row-v34 .counter{grid-template-columns:28px 1fr 28px}
  .attendance-worker-row-v34 select,.attendance-worker-row-v34 input{padding:0 5px}
}


/* V34 Beta 18: collapsible trade attendance accordion */
.attendance-trade-head-v34{cursor:pointer;border-bottom:0;user-select:none}
.attendance-trade-title-v34{min-width:0;flex:1}
.attendance-trade-actions-v34{display:flex;align-items:center;gap:8px;flex:0 0 auto}
.attendance-trade-chevron-v34{display:grid;place-items:center;width:30px;height:30px;font-size:22px;font-weight:900;color:var(--text);transition:transform .18s ease}
.attendance-trade-card-v34.is-open-v34 .attendance-trade-head-v34{border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--primary2) 34%,var(--surface))}
.attendance-trade-card-v34.is-open-v34 .attendance-trade-chevron-v34{transform:rotate(180deg)}
.attendance-trade-card-v34.is-collapsed-v34 .attendance-worker-list-v34{display:none}
.attendance-trade-card-v34.is-collapsed-v34 .attendance-trade-head-v34{min-height:72px}
@media(max-width:620px){
  .attendance-trade-card-v34.is-collapsed-v34 .attendance-trade-head-v34{min-height:66px}
  .attendance-trade-actions-v34{gap:4px}
  .attendance-trade-chevron-v34{width:24px;height:28px;font-size:20px}
  .add-trade-worker-v34{min-height:38px;padding:6px 8px}
}


/* V34 Beta 19: PDF preview / save / share */
.pdf-preview-modal-v34{width:min(980px,100%)!important}
.pdf-preview-modal-v34 .modal-body{padding:0;background:#e9eef5}
.pdf-viewer-v34{height:min(72dvh,900px);background:#e9eef5}
.pdf-viewer-v34 iframe{width:100%;height:100%;border:0;background:#fff;display:block}
@media(max-width:600px){.pdf-preview-modal-v34{max-height:96dvh}.pdf-viewer-v34{height:70dvh}.pdf-preview-modal-v34 .modal-actions{display:grid;grid-template-columns:1fr 1fr}.pdf-preview-modal-v34 .modal-actions .btn{width:100%}}

/* V34.0.3 Beta1 feature parity */
.material-total-v34{font-weight:900}


/* V34.0.3 Beta2 QA: dark-mode color corrections and document/report preview safety */
#docPrint,.report-print-sheet{background:#fff!important;color:#0b1728!important}
#docPrint{padding:18px;border-radius:14px}
#docPrint .total-box{background:#f0f5fb!important;color:#0b1728!important}
#docPrint .total-line{color:#0b1728!important}
.pdf-preview-modal-v34 .modal-body,.pdf-viewer-v34{background:var(--surface2)!important}
@media(prefers-color-scheme:dark){
  .pdf-preview-modal-v34 .modal-head,.pdf-preview-modal-v34 .modal-actions{background:var(--surface)!important;color:var(--text)!important}
  .material-total-v34{color:var(--text)}
  .report-period-select-v34,.period-mode-btn-v34,.period-preview-v34{border-color:var(--line);background:var(--surface2);color:var(--text)}
  .report-card,.list-row,.card,.metric,.quick-btn{border-color:var(--line)}
  select,input,textarea{color-scheme:dark}
}
@media(prefers-color-scheme:light){select,input,textarea{color-scheme:light}}


/* V34 MASTER TEST 01 — reliable native calendar target */
.date-picker-shell-v34{position:relative!important;display:inline-flex!important;cursor:pointer!important;overflow:hidden!important;isolation:isolate!important}
.date-picker-shell-v34 .home-date-card-v34{display:flex!important;align-items:center!important;justify-content:center!important;gap:8px!important;pointer-events:none!important;position:relative!important;z-index:1!important}
.date-picker-shell-v34 .date-picker-native-v34{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;min-width:100%!important;min-height:100%!important;opacity:.01!important;z-index:10!important;pointer-events:auto!important;cursor:pointer!important;margin:0!important;padding:0!important;border:0!important;background:transparent!important;color:transparent!important;-webkit-appearance:auto!important;appearance:auto!important}
.date-picker-shell-v34 .date-picker-native-v34::-webkit-calendar-picker-indicator{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;opacity:.01!important;cursor:pointer!important}

/* V34 MASTER TEST 02 — materials UX */
#matAmountV34[readonly]{font-weight:900;background:var(--surface2);color:var(--text)}
#matCustomName.hidden{display:none!important}
#matName+#matCustomName:not(.hidden){margin-top:7px}

/* V34 MASTER TEST 03 — unified Payments Center */
.quick-grid-home-v34{grid-template-columns:repeat(5,minmax(0,1fr))}
.payment-project-card-v34{margin-bottom:12px}
.payment-summary-v34{margin-bottom:12px}
.payment-position-v34{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:12px}
.payment-position-v34>div{background:var(--surface2);border-radius:12px;padding:11px;display:flex;flex-direction:column;gap:4px}
.payment-position-v34 span{font-size:10px;color:var(--muted);font-weight:800;text-transform:uppercase;letter-spacing:.03em}
.payment-position-v34 b{font-size:15px}
.payment-actions-v34{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:12px 0}
.payment-actions-v34 .btn{width:100%}
.payment-filter-v34{overflow:auto;white-space:nowrap}
.payment-filter-v34 button{min-width:82px}
.payment-transaction-row-v34{min-height:68px}
.transaction-type-v34{width:38px;height:38px;border-radius:12px;background:var(--surface2);display:grid;place-items:center;font-weight:900;flex:0 0 auto}
.transaction-in-v34{color:var(--green)}
.transaction-out-v34{color:var(--text)}
@media(max-width:720px){
 .quick-grid-home-v34{grid-template-columns:repeat(3,1fr)}
 .payment-actions-v34{grid-template-columns:repeat(2,1fr)}
 .payment-position-v34{grid-template-columns:1fr}
}
@media(max-width:430px){
 .payment-summary-v34{grid-template-columns:repeat(2,1fr)}
 .payment-actions-v34{grid-template-columns:repeat(2,1fr)}
 .payment-actions-v34 .btn{font-size:12px;padding:9px 8px}
 .payment-filter-v34{display:flex}
}
html[data-theme="dark"] .transaction-type-v34,
body.dark .transaction-type-v34{background:var(--surface2);color:var(--text)}

/* V34 MASTER TEST 04 — modern payment input forms */
.payment-actions-three-v34{grid-template-columns:repeat(3,1fr)}
.modern-payment-modal-v34 .modal{max-width:760px}
.modern-payment-modal-v34 .modal-body{padding:18px 20px 12px}
.modern-input-card-v34{
  border:1px solid var(--border);
  border-radius:20px;
  background:linear-gradient(180deg,var(--surface),var(--surface2));
  padding:18px;
  box-shadow:0 12px 34px rgba(17,38,70,.06)
}
.modern-section-title-v34{display:flex;flex-direction:column;gap:3px;margin-bottom:16px}
.modern-section-title-v34>span{font-size:16px;font-weight:900;color:var(--text)}
.modern-section-title-v34>small{font-size:12px;color:var(--muted)}
.modern-form-grid-v34{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.modern-form-grid-v34 .field{margin:0}
.modern-form-grid-v34 .field.full{grid-column:1/-1}
.modern-form-grid-v34 label{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:10px;letter-spacing:.055em;font-weight:900;color:var(--muted)}
.modern-form-grid-v34 label span{font-size:9px;font-weight:800;letter-spacing:.02em}
.modern-form-grid-v34 input,
.modern-form-grid-v34 select,
.modern-form-grid-v34 textarea{
  min-height:50px;
  border-radius:14px;
  border:1px solid var(--border);
  background:var(--surface);
  color:var(--text);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04)
}
.modern-form-grid-v34 textarea{min-height:92px}
.modern-form-grid-v34 input:focus,
.modern-form-grid-v34 select:focus,
.modern-form-grid-v34 textarea:focus{outline:none;border-color:#2f7df6;box-shadow:0 0 0 3px rgba(47,125,246,.12)}
.money-input-v34{font-weight:900;font-size:16px}
.balance-readonly-v34{font-weight:900;background:var(--surface2)!important}
.input-hint-v34{display:block;margin-top:5px;color:var(--muted);font-size:10px}
.date-display-shell-v34{position:relative}
.date-display-v34{width:100%;padding-right:46px;font-variant-numeric:tabular-nums}
.date-calendar-icon-v34{position:absolute;right:15px;top:50%;transform:translateY(-50%);pointer-events:none;font-size:14px;opacity:.8}
.date-native-overlay-v34{position:absolute!important;inset:0;width:100%!important;height:100%!important;opacity:0!important;cursor:pointer;z-index:2}
.expense-status-note-v34{display:flex;flex-direction:column;gap:3px;margin-top:14px;padding:12px 14px;border-radius:14px;background:var(--surface);border:1px solid var(--border)}
.expense-status-note-v34 b{font-size:11px}
.expense-status-note-v34 span{font-size:10px;color:var(--muted)}
html[data-theme="dark"] .modern-input-card-v34,
body.dark .modern-input-card-v34{box-shadow:none}
@media(max-width:640px){
  .payment-actions-three-v34{grid-template-columns:1fr}
  .modern-payment-modal-v34 .modal-body{padding:12px}
  .modern-input-card-v34{padding:14px;border-radius:16px}
  .modern-form-grid-v34{grid-template-columns:1fr;gap:11px}
  .modern-form-grid-v34 .field.full{grid-column:auto}
}

/* V34 MASTER TEST 05 — Option 1 payment UI */
.modern-payment-modal-v34 .modal{max-width:760px;border-radius:22px}
.modern-payment-modal-v34 .modal-body{background:var(--surface);padding:18px}
.modern-input-card-v34{
  background:var(--surface);
  border:0;
  box-shadow:none;
  border-radius:0;
  padding:0;
}
.option1-title-v34{
  display:flex;align-items:center;gap:12px;
  padding-bottom:16px;margin-bottom:16px;border-bottom:1px solid var(--border)
}
.option1-title-v34>div:last-child{display:flex;flex-direction:column;gap:2px}
.option1-title-v34 span{font-size:18px;font-weight:900;color:var(--text)}
.option1-title-v34 small{font-size:11px;color:var(--muted)}
.option1-icon-v34{
  width:42px;height:42px;border-radius:50%;display:grid;place-items:center;
  font-size:19px;font-weight:900;color:white;flex:0 0 auto
}
.option1-icon-v34.received{background:#19b977}
.option1-icon-v34.labour{background:#27a5ef}
.option1-icon-v34.expense{background:#ff6d5e}
.modern-form-grid-v34 input,
.modern-form-grid-v34 select,
.modern-form-grid-v34 textarea,
.select-like-v34{
  min-height:48px;border-radius:12px;border:1px solid var(--border);
  background:var(--surface2);color:var(--text)
}
.select-like-v34{
  width:100%;display:flex;align-items:center;justify-content:space-between;
  padding:0 14px;font:inherit;text-align:left;cursor:pointer
}
.select-like-v34 span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.seg-control-v34{display:grid;grid-template-columns:1fr 1fr;gap:0;border:1px solid var(--border);border-radius:12px;overflow:hidden;background:var(--surface2);min-height:48px}
.seg-control-v34.three{grid-template-columns:repeat(3,1fr)}
.seg-control-v34 button{border:0;background:transparent;color:var(--text);font-weight:800;font-size:12px}
.seg-control-v34 button.active{background:#1677ff;color:white}
.hidden-select-v34{display:none!important}
.payee-selector-v34{display:flex;flex-direction:column;gap:12px}
.payee-search-wrap-v34 input,.payee-add-v34 input{width:100%;min-height:48px;border:1px solid var(--border);border-radius:12px;background:var(--surface2);color:var(--text);padding:0 14px}
.payee-list-v34{display:flex;flex-direction:column;gap:6px;max-height:280px;overflow:auto}
.payee-row-v34{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:48px;border:1px solid var(--border);border-radius:12px;background:var(--surface);color:var(--text);padding:0 14px;font-weight:800;text-align:left}
.payee-add-v34{display:grid;grid-template-columns:1fr auto;gap:8px;padding-top:10px;border-top:1px solid var(--border)}
.payee-picker-modal-v34 .modal{max-width:520px}
@media(max-width:640px){
  .option1-title-v34{align-items:flex-start}
  .modern-payment-modal-v34 .modal-body{padding:14px}
  .payee-add-v34{grid-template-columns:1fr}
}

/* V34 MASTER TEST 06 — Documents & Contracts rebuild, Option 2 */
.docs-hub-modal-v34 .modal{max-width:820px}
.docs-hub-intro-v34{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:16px 18px;margin-bottom:14px;border-radius:18px;background:linear-gradient(135deg,rgba(41,139,255,.16),rgba(51,211,153,.08));border:1px solid var(--border)}
.docs-hub-intro-v34>div:first-child{display:flex;flex-direction:column;gap:4px}
.docs-hub-intro-v34 b{font-size:16px}.docs-hub-intro-v34 span{font-size:11px;color:var(--muted)}
.docs-hub-badge-v34{font-size:11px;font-weight:900;letter-spacing:.08em;padding:8px 10px;border-radius:10px;background:#1677ff;color:#fff}
.docs-card-grid-v34{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.doc-type-card-v34{min-height:94px;border:1px solid var(--border);border-radius:17px;padding:14px;display:flex;align-items:center;gap:12px;text-align:left;color:#0c1c32;box-shadow:0 8px 24px rgba(16,42,70,.05)}
.doc-card-icon-v34{width:44px;height:44px;border-radius:13px;display:grid;place-items:center;font-size:20px;background:rgba(255,255,255,.72);flex:0 0 auto}
.doc-card-copy-v34{display:flex;flex-direction:column;gap:4px}.doc-card-copy-v34 b{font-size:14px}.doc-card-copy-v34 small{font-size:10px;opacity:.72}
.doc-blue{background:linear-gradient(135deg,#d7ecff,#b9ddff)}.doc-green{background:linear-gradient(135deg,#ddffe8,#c8f7d7)}.doc-orange{background:linear-gradient(135deg,#fff0d9,#ffd9a8)}.doc-purple{background:linear-gradient(135deg,#eee1ff,#d8c1ff)}.doc-teal{background:linear-gradient(135deg,#dcfff4,#bfeee0)}.doc-red{background:linear-gradient(135deg,#ffe4e7,#ffcbd1)}.doc-sky{background:linear-gradient(135deg,#e2f4ff,#c6e6ff)}.doc-gold{background:linear-gradient(135deg,#fff1d2,#ffe0a1)}
.docs-saved-entry-v34{width:100%;margin-top:12px;min-height:70px;display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--border);border-radius:16px;background:var(--surface);color:var(--text);text-align:left}
.docs-saved-entry-v34 small{display:block;margin-top:3px;color:var(--muted)}
.saved-docs-filter-v34{display:flex;gap:7px;overflow:auto;margin-bottom:12px}.saved-docs-filter-v34 button{border:0;background:var(--surface2);color:var(--muted);padding:8px 12px;border-radius:999px;font-weight:800;white-space:nowrap}.saved-docs-filter-v34 button.active{background:#1677ff;color:white}
.saved-doc-row-v34{width:100%;display:flex;align-items:center;gap:11px;min-height:64px;padding:10px 12px;border:0;border-bottom:1px solid var(--border);background:transparent;color:var(--text);text-align:left}.saved-doc-icon-v34{width:38px;height:38px;border-radius:11px;background:var(--surface2);display:grid;place-items:center}.saved-doc-row-v34 small{display:block;color:var(--muted);margin-top:3px}.saved-doc-total-v34{font-weight:900;white-space:nowrap}.empty-docs-v34{padding:26px;text-align:center;display:flex;flex-direction:column;gap:5px;color:var(--muted)}.empty-docs-v34 b{color:var(--text)}
.doc-editor-modal-v34 .modal{max-width:860px}.doc-editor-v34{display:flex;flex-direction:column;gap:14px}
.doc-editor-hero-v34{display:flex;align-items:center;gap:12px;padding:14px 16px;border-radius:17px;background:var(--surface2);border:1px solid var(--border)}.doc-editor-icon-v34{width:43px;height:43px;border-radius:13px;background:#1677ff;color:#fff;display:grid;place-items:center;font-size:19px}.doc-editor-hero-v34>div{display:flex;flex-direction:column;gap:3px}.doc-editor-hero-v34 b{font-size:16px}.doc-editor-hero-v34 small{font-size:10px;color:var(--muted)}
.doc-editor-section-v34{padding:15px;border-radius:17px;border:1px solid var(--border);background:var(--surface)}.doc-section-title-v34{display:flex;flex-direction:column;gap:2px;margin-bottom:12px}.doc-section-title-v34 b{font-size:13px}.doc-section-title-v34 span{font-size:10px;color:var(--muted)}.doc-items-head-v34{flex-direction:row;align-items:center;justify-content:space-between}
.doc-item-table-head-v34,.doc-item-v34{display:grid;grid-template-columns:minmax(0,1fr) 72px 105px 38px;gap:8px;align-items:center}.doc-item-table-head-v34{padding:0 5px 7px;font-size:9px;font-weight:900;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.doc-item-v34{padding:6px 0}.doc-item-v34 input{min-height:43px;border-radius:11px;border:1px solid var(--border);background:var(--surface2);color:var(--text)}.doc-remove-v34{width:36px;height:36px;border-radius:10px;border:0;background:rgba(230,50,70,.12);color:#d9304f;font-size:20px}
.doc-tax-v34{border:1px solid var(--border);border-radius:17px;padding:12px 15px;background:var(--surface)}.doc-tax-v34 summary{font-weight:900;cursor:pointer}.doc-tax-v34 summary span{font-size:9px;color:var(--muted);margin-left:5px}
.doc-total-card-v34{margin-left:auto;width:min(100%,380px);padding:15px 17px;border:1px solid var(--border);border-radius:17px;background:var(--surface2)}.doc-total-card-v34>div{display:flex;justify-content:space-between;gap:20px;padding:7px 0}.doc-total-card-v34 .grand{border-top:1px solid var(--border);margin-top:5px;padding-top:12px;font-size:17px;font-weight:900}
.doc-preview-modal-v34 .modal,.doc-pdf-preview-modal-v34 .modal{max-width:900px}.doc-preview-stage-v34,.doc-pdf-preview-shell-v34{background:#2b3039;padding:22px;border-radius:14px;overflow:auto}
.doc-paper-v34{width:min(100%,760px);min-height:900px;margin:auto;background:#fff;color:#0b1728;padding:34px 38px;box-shadow:0 12px 35px rgba(0,0,0,.25);font-family:Arial,sans-serif}.doc-paper-v34.compact{min-height:0}
.doc-paper-header-v34{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:2px solid #17324f;padding-bottom:14px}.doc-brand-v34{display:flex;gap:10px;align-items:center}.doc-brand-v34 img{width:46px;height:46px;object-fit:contain}.doc-brand-v34>div{display:flex;flex-direction:column}.doc-brand-v34 b{font-size:18px}.doc-brand-v34 span{font-size:9px;font-weight:700}.doc-brand-v34 small{font-size:7px}.doc-paper-title-v34{display:flex;flex-direction:column;align-items:flex-end;gap:4px}.doc-paper-title-v34 b{font-size:18px}.doc-paper-title-v34 small{font-size:8px}
.doc-paper-meta-v34{margin-top:16px;padding:12px;background:#edf5fb;display:grid;grid-template-columns:repeat(2,1fr);gap:10px 24px}.doc-paper-meta-v34 div,.doc-paper-subject-v34{display:flex;gap:8px}.doc-paper-meta-v34 small,.doc-paper-subject-v34 small{font-size:7px;font-weight:900;color:#53657a}.doc-paper-meta-v34 b,.doc-paper-subject-v34 b{font-size:8px}.doc-paper-subject-v34{padding:12px 0}
.doc-paper-table-v34{margin-top:18px;border-bottom:1px solid #cad7e3}.doc-paper-tr-v34{display:grid;grid-template-columns:42px minmax(0,1fr) 70px 95px 105px;font-size:8px;border-top:1px solid #d7e1ea;min-height:30px;align-items:center}.doc-paper-tr-v34.head{background:#dfeef7;font-weight:900}.doc-paper-tr-v34 span{padding:7px 8px}.doc-paper-tr-v34 span:nth-child(n+3){text-align:right}
.doc-paper-summary-v34{width:260px;margin:20px 0 0 auto}.doc-paper-summary-v34>div{display:flex;justify-content:space-between;padding:5px;font-size:9px}.doc-paper-summary-v34 .grand{border-top:1px solid #233d56;font-weight:900;font-size:11px;margin-top:4px;padding-top:8px}
.doc-paper-sign-v34{display:grid;grid-template-columns:1fr 1fr;gap:80px;margin-top:80px}.doc-paper-sign-v34 div{display:flex;flex-direction:column;text-align:center;gap:7px;font-size:8px}.doc-paper-sign-v34 span{border-top:1px solid #43576c}.doc-paper-footer-v34{display:flex;justify-content:space-between;border-top:1px solid #43576c;margin-top:28px;padding-top:8px;font-size:6px}
html[data-theme="dark"] .doc-type-card-v34,body.dark .doc-type-card-v34{color:#0b1728}
@media(max-width:640px){.docs-card-grid-v34{grid-template-columns:repeat(2,minmax(0,1fr))}.doc-type-card-v34{min-height:102px;padding:12px;flex-direction:column;align-items:flex-start}.doc-card-icon-v34{width:38px;height:38px}.doc-item-table-head-v34{display:none}.doc-item-v34{grid-template-columns:1fr 62px 82px 34px}.doc-paper-v34{width:700px}.doc-preview-stage-v34,.doc-pdf-preview-shell-v34{padding:10px;overflow:auto}}

/* V34 MASTER TEST 07 — Reports Option 2 */
.option2-reports-v34{padding-bottom:24px}.reports-head-v34{margin-bottom:14px}.report-selector-row-v34{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:10px}.report-selector-card-v34{min-height:78px;border:1px solid var(--border);border-radius:17px;background:var(--surface);padding:12px 14px;display:flex;flex-direction:column;justify-content:center;gap:7px;position:relative}.report-selector-card-v34 small{font-size:9px;text-transform:uppercase;letter-spacing:.06em;font-weight:900;color:var(--muted)}.report-selector-card-v34 select{border:0;background:transparent;color:var(--text);font-size:15px;font-weight:850;padding:0;min-height:30px}.period-card-v34{text-align:left;color:var(--text)}.period-card-v34 b{font-size:14px;line-height:1.25;padding-right:20px}.period-card-v34>span{position:absolute;right:14px;bottom:20px;color:#2490ff;font-size:22px}.report-quick-period-v34{display:flex;gap:7px;overflow:auto;padding:1px 0 13px}.report-quick-period-v34 button{border:1px solid var(--border);background:var(--surface2);color:var(--text);padding:8px 13px;border-radius:999px;font-size:11px;font-weight:800;white-space:nowrap}.report-quick-period-v34 button.active{background:#9ed7ff;color:#07182d;border-color:#9ed7ff}.report-visual-grid-v34{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.report-visual-card-v34{min-height:154px;border:0;border-radius:18px;padding:16px;text-align:left;color:#122035;display:flex;flex-direction:column;justify-content:space-between;box-shadow:0 9px 25px rgba(10,30,50,.08)}.report-card-blue{background:linear-gradient(135deg,#e2f1ff,#acd7ff)}.report-card-green{background:linear-gradient(135deg,#e6ffed,#bcefc9)}.report-card-orange{background:linear-gradient(135deg,#fff2dd,#ffd2a0)}.report-card-purple{background:linear-gradient(135deg,#eee8ff,#d5c8ff)}.report-card-pink{background:linear-gradient(135deg,#ffe9ef,#ffcad8)}.report-card-combined-v34{grid-column:1/-1;min-height:116px}.report-card-top-v34{display:flex;align-items:center;justify-content:space-between}.report-card-icon-v34{width:48px;height:48px;border-radius:14px;background:rgba(255,255,255,.60);display:grid;place-items:center;font-size:23px}.report-card-arrow-v34{width:31px;height:31px;border-radius:50%;background:rgba(255,255,255,.48);display:grid;place-items:center;font-size:22px}.report-card-copy-v34{display:flex;flex-direction:column;gap:4px}.report-card-copy-v34 b{font-size:15px}.report-card-copy-v34 small{font-size:11px;line-height:1.35;opacity:.78}.report-hint-v34{margin-top:12px;padding:13px 15px;border-radius:16px;border:1px solid var(--border);background:var(--surface);display:flex;align-items:center;gap:11px}.report-hint-v34>span{font-size:20px}.report-hint-v34>div{display:flex;flex-direction:column;gap:3px}.report-hint-v34 b{font-size:12px}.report-hint-v34 small{font-size:10px;color:var(--muted)}.report-brand-option2-v34{display:flex;align-items:center;gap:10px}.report-brand-option2-v34 img{width:48px;height:48px;object-fit:contain}.report-brand-option2-v34 h2{margin:0}.report-brand-option2-v34 small{font-size:9px;color:var(--muted)}@media(max-width:640px){.report-selector-card-v34{min-height:72px;padding:11px}.period-card-v34 b{font-size:13px}.report-visual-card-v34{min-height:138px;padding:14px}.report-card-copy-v34 b{font-size:14px}.report-card-copy-v34 small{font-size:10px}}@media(max-width:390px){.report-selector-row-v34{grid-template-columns:1fr}}html[data-theme="dark"] .report-visual-card-v34,body.dark .report-visual-card-v34{color:#102039}

/* V34 MASTER TEST 07A — mobile-safe report PDF preview */
.report-pdf-preview-modal-v34 .modal{max-width:940px}
.report-pdf-preview-shell-v34{background:#24272d;padding:14px;border-radius:14px;overflow:auto;max-height:72vh}
.report-paper-v34{width:min(100%,820px);min-height:980px;margin:auto;background:#fff;color:#0b1728;padding:30px 34px;box-shadow:0 12px 30px rgba(0,0,0,.24);font-family:Arial,sans-serif}
.report-paper-header-v34{display:flex;justify-content:space-between;gap:20px;border-bottom:2px solid #17324f;padding-bottom:13px}
.report-paper-brand-v34{display:flex;align-items:center;gap:10px}.report-paper-brand-v34 img{width:48px;height:48px;object-fit:contain}.report-paper-brand-v34>div{display:flex;flex-direction:column}.report-paper-brand-v34 b{font-size:18px}.report-paper-brand-v34 span{font-size:9px;font-weight:700}.report-paper-brand-v34 small{font-size:7px}
.report-paper-title-v34{text-align:right;display:flex;flex-direction:column;gap:3px}.report-paper-title-v34 b{font-size:18px}.report-paper-title-v34 small{font-size:8px}
.report-paper-meta-v34{margin-top:14px;background:#edf5fb;display:grid;grid-template-columns:repeat(4,1fr);gap:10px;padding:11px}.report-paper-meta-v34 div{display:flex;flex-direction:column;gap:3px}.report-paper-meta-v34 small{font-size:6px;font-weight:900;color:#53657a}.report-paper-meta-v34 b{font-size:8px}
.report-paper-kpis-v34{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:18px}.report-paper-kpis-v34>div{border:1px solid #cedbe7;padding:12px;min-height:58px}.report-paper-kpis-v34 small{display:block;font-size:6px;font-weight:900;color:#53657a;margin-bottom:6px}.report-paper-kpis-v34 b{font-size:12px}
.report-paper-v34 h3{font-size:10px;margin:18px 0 8px}
.report-paper-table-v34{border-top:1px solid #cad7e3}.report-paper-table-v34 .rpt-row{display:grid;grid-template-columns:1.2fr .7fr .8fr 1fr;border-bottom:1px solid #d6e0e8;min-height:28px;align-items:center;font-size:8px}.report-paper-table-v34 .rpt-row.head{background:#dfeef7;font-weight:900}.report-paper-table-v34 .rpt-row span{padding:6px 7px}.report-paper-table-v34 .rpt-row span:nth-child(n+2){text-align:right}
.empty-rpt-v34{padding:18px;font-size:8px;color:#66788c}
.report-combined-grid-v34{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:16px}.rpt-summary-line{display:flex;justify-content:space-between;border-bottom:1px solid #d9e2ea;padding:7px 4px;font-size:8px}
.report-paper-footer-v34{display:flex;justify-content:space-between;border-top:1px solid #43576c;margin-top:28px;padding-top:8px;font-size:6px}
@media(max-width:640px){
  .report-pdf-preview-shell-v34{padding:8px;max-height:70vh}
  .report-paper-v34{width:720px;min-height:930px;padding:26px 30px}
}

/* V34 FINAL RC1 — Project icon & colour selector */
.project-customize-v34{grid-column:1/-1;margin-top:4px;padding:14px;border:1px solid var(--border);border-radius:16px;background:var(--surface2)}
.project-customize-preview-v34{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.project-customize-preview-v34>div{display:flex;flex-direction:column;gap:2px}
.project-customize-preview-v34 b{font-size:12px}
.project-customize-preview-v34 small{font-size:10px;color:var(--muted)}
.project-avatar-v34{--project-color:#1677ff;width:38px;height:38px;border-radius:12px;background:var(--project-color);color:#fff;display:grid;place-items:center;font-weight:900;flex:0 0 auto}
.project-avatar-v34.large{width:48px;height:48px;border-radius:15px;font-size:20px}
.project-icon-grid-v34{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:7px}
.project-icon-choice-v34{min-height:62px;border:1px solid var(--border);border-radius:12px;background:var(--surface);color:var(--text);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px}
.project-icon-choice-v34 span{font-size:19px}.project-icon-choice-v34 small{font-size:8px;color:var(--muted)}
.project-icon-choice-v34.active{border-color:#1677ff;box-shadow:0 0 0 2px rgba(22,119,255,.15)}
.project-colour-grid-v34{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.project-colour-choice-v34{width:30px;height:30px;border-radius:50%;border:3px solid transparent;background:var(--swatch)}
.project-colour-choice-v34.active{outline:2px solid var(--text);outline-offset:2px}
@media(max-width:640px){.project-icon-grid-v34{grid-template-columns:repeat(4,minmax(0,1fr))}}

/* V34.1 — Supabase app-login gate */
body.supabase-auth-locked-v34{overflow:hidden}
body.supabase-auth-locked-v34 #app{display:none!important}
#authRoot:empty{display:none}
.supa-login-shell-v34{position:fixed;inset:0;z-index:10000;min-height:100dvh;display:grid;grid-template-columns:1.02fr .98fr;background:#f4f7fb;color:#142338}
.supa-login-brand-v34{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:36px;color:#fff;background:linear-gradient(150deg,#0c3558,#145a91 55%,#2177b8);position:relative;overflow:hidden}
.supa-login-brand-v34:after{content:"";position:absolute;left:-15%;right:-15%;bottom:-23%;height:48%;background:rgba(255,255,255,.08);transform:rotate(-7deg)}
.supa-login-brand-v34 img{width:112px;height:112px;object-fit:contain;filter:drop-shadow(0 12px 24px rgba(0,0,0,.18))}
.supa-login-brand-v34 h1{font-size:38px;margin:12px 0 0;letter-spacing:.04em}.supa-login-brand-v34 p{font-size:18px;margin:3px 0 24px}.supa-login-brand-v34 small{opacity:.82}
.supa-login-panel-v34{display:flex;align-items:center;justify-content:center;padding:28px}
.supa-login-card-v34{width:min(440px,100%);background:#fff;border:1px solid #dbe4ee;border-radius:25px;padding:30px;box-shadow:0 24px 70px rgba(25,52,82,.13)}
.supa-secure-badge-v34{width:max-content;margin:0 auto 12px;padding:6px 10px;border-radius:999px;background:#eaf7ef;color:#23814e;font-size:10px;font-weight:850}
.supa-login-card-v34 h2{text-align:center;font-size:27px;margin:3px 0 5px}.supa-login-card-v34>p{text-align:center;color:#708095;font-size:13px;line-height:1.45;margin:0 0 23px}
.supa-login-card-v34 label{display:flex;flex-direction:column;gap:7px;margin:0 0 14px;font-size:11px;font-weight:850;color:#62758b;text-transform:uppercase;letter-spacing:.03em}
.supa-login-card-v34 input{width:100%;height:52px;border:1px solid #cdd9e6;border-radius:14px;background:#f8fbff;color:#142338;padding:0 14px;font-size:15px;outline:none}.supa-login-card-v34 input:focus{border-color:#1c74b6;box-shadow:0 0 0 3px rgba(28,116,182,.12)}
.supa-pin-wrap-v34{position:relative}.supa-pin-wrap-v34 input{padding-right:50px}.supa-pin-wrap-v34 button{position:absolute;right:6px;top:6px;width:40px;height:40px;border:0;background:transparent;color:#61758c;font-size:16px}
.supa-login-primary-v34{width:100%;height:52px;border:0;border-radius:14px;background:linear-gradient(135deg,#0d4775,#1874b3);color:#fff;font-size:15px;font-weight:900;box-shadow:0 9px 22px rgba(18,91,145,.19)}.supa-login-primary-v34:disabled{opacity:.65}
.supa-login-help-v34{display:block;width:100%;padding:14px 6px 5px;border:0;background:transparent;color:#316a97;font-size:12px;font-weight:750}
.supa-login-error-v34{margin:-2px 0 12px;padding:10px 12px;border:1px solid #ffbdc3;border-radius:12px;background:#fff0f1;color:#b92938;font-size:12px}.supa-login-error-v34.hidden{display:none}
.supa-login-foot-v34{display:flex;align-items:center;justify-content:center;gap:7px;margin-top:18px;color:#718195;font-size:10px}.supa-login-foot-v34 .sync-dot{position:static;width:7px;height:7px;border-radius:50%;background:#2bab68}
.supa-mobile-brand-v34{display:none}
.account-card-v34{display:flex;align-items:center;gap:12px}.account-avatar-v34{width:44px;height:44px;display:grid;place-items:center;border-radius:50%;background:#1c78b8;color:#fff;font-weight:900;font-size:17px;flex:0 0 auto}
@media(max-width:760px){
 .supa-login-shell-v34{grid-template-columns:1fr;background:#fff}
 .supa-login-brand-v34{display:none}.supa-login-panel-v34{padding:18px;align-items:center}
 .supa-login-card-v34{border:0;box-shadow:none;padding:16px 8px 26px}
 .supa-mobile-brand-v34{display:flex;position:absolute;top:calc(28px + env(safe-area-inset-top));left:0;right:0;align-items:center;justify-content:center;flex-direction:column;pointer-events:none}
 .supa-mobile-brand-v34 img{width:58px;height:58px;object-fit:contain}.supa-mobile-brand-v34 b{font-size:21px;margin-top:3px}.supa-mobile-brand-v34 span{font-size:10px;color:#6d7d90}
 .supa-login-panel-v34{padding-top:135px}
}
@media(prefers-color-scheme:dark){
 .supa-login-shell-v34{background:#081521;color:#f5f8fb}
 .supa-login-panel-v34{background:#081521}.supa-login-card-v34{background:#0e2133;border-color:#284158;color:#f5f8fb}
 .supa-login-card-v34 input{background:#142b41;border-color:#32506a;color:#f5f8fb}.supa-login-card-v34>p,.supa-login-foot-v34{color:#9aabba}
 .supa-login-card-v34 label{color:#a9b7c5}.supa-mobile-brand-v34 span{color:#9babb9}
}

.hidden-nav-v34{display:none!important}
.users-toolbar-v34{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.users-toolbar-v34 small{display:block;color:var(--muted);margin-top:2px}
.permission-grid-v34{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.permission-row-v34{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border:1px solid var(--border);border-radius:12px;background:var(--surface)}
.permission-row-v34 span{font-size:11px;font-weight:750}.permission-row-v34 input{width:18px;height:18px;accent-color:#1677ff}
.account-avatar-v34.role-admin{background:#e95662}.account-avatar-v34.role-manager{background:#2c7be5}.account-avatar-v34.role-supervisor{background:#2da66f}.account-avatar-v34.role-user{background:#8a5ce6}
@media(max-width:680px){.permission-grid-v34{grid-template-columns:1fr}}

/* ===== V34.3.0 Stable UI Polish ===== */
.modal-card{border-radius:22px;box-shadow:0 22px 70px rgba(15,23,42,.18);overflow:hidden}
.modal-head{padding:18px 20px;border-bottom:1px solid var(--line,#e5e7eb)}
.modal-body{padding:20px;overscroll-behavior:contain}
.modal-foot{padding:14px 20px 18px;display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap;border-top:1px solid var(--line,#e5e7eb);background:var(--panel,#fff)}
.modal-foot .btn{min-height:44px;border-radius:13px;padding:10px 16px;font-weight:700}
.modal-foot .btn.primary{box-shadow:0 8px 22px rgba(22,119,255,.18)}
.modal-foot .btn.danger{background:#fff1f2;color:#b42318;border:1px solid #fecdd3;box-shadow:none}
.modal-foot .btn.danger:hover{background:#ffe4e6}
.form-grid{gap:14px}
.field>label{font-weight:700;letter-spacing:.01em}
.field input,.field select,.field textarea{min-height:46px;border-radius:13px}
.list-row{min-height:58px}
.project-card,.card{border-radius:20px}
.bottom-nav button{min-height:60px}
@media(max-width:640px){
  .modal-card{border-radius:20px 20px 0 0;max-height:92dvh}
  .modal-body{padding:16px}
  .modal-foot{position:sticky;bottom:0;padding:12px 16px calc(12px + env(safe-area-inset-bottom));background:var(--panel,#fff);z-index:3}
  .modal-foot .btn{flex:1 1 calc(50% - 6px)}
  .modal-foot .btn.primary{flex-basis:100%}
  .modal-foot .btn.danger{order:-1}
}
[data-theme="dark"] .modal-foot .btn.danger{background:#3a1619;color:#fecaca;border-color:#7f1d1d}

/* ===== V34.4 Common Upgrade Phase 1 ===== */
.search-v344{display:flex;flex-direction:column;gap:14px}
.search-box-v344{display:flex;gap:10px;align-items:center}
.search-box-v344 input{flex:1;min-height:48px;border-radius:14px}
.search-filters-v344{display:flex;gap:8px;overflow:auto;padding-bottom:2px}
.search-chip-v344{border:1px solid var(--line,#dbe3ee);background:var(--panel,#fff);border-radius:999px;padding:8px 12px;white-space:nowrap;font-weight:700;font-size:12px}
.search-chip-v344.active{background:#1677ff;color:#fff;border-color:#1677ff}
.search-results-v344{display:flex;flex-direction:column;gap:8px;max-height:58vh;overflow:auto}
.search-result-v344{display:flex;align-items:center;gap:12px;width:100%;text-align:left;border:1px solid var(--line,#e5e7eb);background:var(--panel,#fff);border-radius:14px;padding:12px}
.search-result-v344 .sr-ico{width:38px;height:38px;border-radius:11px;background:#eef6ff;display:grid;place-items:center;font-size:18px;flex:0 0 auto}
.search-result-v344 .grow{min-width:0}
.search-result-v344 small{display:block;color:var(--muted,#64748b);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.timeline-v344{display:flex;flex-direction:column;gap:0}
.timeline-row-v344{display:grid;grid-template-columns:16px 1fr auto;gap:10px;padding:12px 0;border-bottom:1px solid var(--line,#e5e7eb)}
.timeline-dot-v344{width:10px;height:10px;border-radius:50%;background:#1677ff;margin-top:6px;box-shadow:0 0 0 4px rgba(22,119,255,.10)}
.timeline-row-v344 b{display:block}
.timeline-row-v344 small{color:var(--muted,#64748b)}
.timeline-date-v344{font-size:11px;color:var(--muted,#64748b);white-space:nowrap}
.notice-list-v344{display:flex;flex-direction:column;gap:10px}
.notice-v344{display:flex;gap:12px;align-items:flex-start;border:1px solid var(--line,#e5e7eb);border-radius:15px;padding:13px;background:var(--panel,#fff)}
.notice-v344 .n-ico{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;background:#fff7ed;flex:0 0 auto}
.notice-v344.good .n-ico{background:#ecfdf3}
.close-summary-v344{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.close-summary-v344 .mini{padding:14px;border:1px solid var(--line,#e5e7eb);border-radius:15px;background:var(--panel,#fff)}
.close-check-v344{display:flex;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line,#e5e7eb)}
.recent-activity-v344{display:flex;flex-direction:column;gap:8px}
.recent-activity-v344 .list-row{border:1px solid var(--line,#e5e7eb);border-radius:14px}
.metric-grid-v344{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.metric-v344{padding:14px;border:1px solid var(--line,#e5e7eb);border-radius:15px;background:var(--panel,#fff)}
.metric-v344 small{display:block;color:var(--muted,#64748b);margin-bottom:6px}
.metric-v344 strong{font-size:18px}
@media(min-width:760px){.metric-grid-v344{grid-template-columns:repeat(3,minmax(0,1fr))}.close-summary-v344{grid-template-columns:repeat(3,minmax(0,1fr))}}

/* ===== V34.5 Common Upgrade Phase 2 ===== */
.photo-grid-v345{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.photo-card-v345{border:1px solid var(--line,#e5e7eb);border-radius:16px;overflow:hidden;background:var(--panel,#fff)}
.photo-card-v345 img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block;background:#eef2f7}
.photo-meta-v345{padding:10px}
.photo-meta-v345 b,.photo-meta-v345 small{display:block}
.photo-meta-v345 small{color:var(--muted,#64748b);margin-top:3px}
.task-list-v345{display:flex;flex-direction:column;gap:10px}
.task-v345{display:grid;grid-template-columns:24px 1fr auto;gap:10px;align-items:start;border:1px solid var(--line,#e5e7eb);border-radius:15px;padding:13px;background:var(--panel,#fff)}
.task-v345.done{opacity:.66}
.task-v345.done b{text-decoration:line-through}
.priority-v345{display:inline-flex;border-radius:999px;padding:4px 8px;font-size:10px;font-weight:800}
.priority-v345.high{background:#fee2e2;color:#b42318}.priority-v345.medium{background:#fff7ed;color:#b45309}.priority-v345.low{background:#ecfdf3;color:#047857}
.audit-v345{display:flex;flex-direction:column}
.audit-row-v345{display:grid;grid-template-columns:12px 1fr auto;gap:10px;padding:12px 0;border-bottom:1px solid var(--line,#e5e7eb)}
.audit-dot-v345{width:9px;height:9px;border-radius:50%;background:#6366f1;margin-top:5px}
.audit-row-v345 small{color:var(--muted,#64748b)}
.transfer-box-v345{border:1px solid var(--line,#e5e7eb);border-radius:16px;padding:15px;background:var(--panel,#fff);margin-bottom:12px}
.transfer-box-v345 h3{margin:0 0 6px}
@media(min-width:720px){.photo-grid-v345{grid-template-columns:repeat(3,minmax(0,1fr))}}

/* ===== V34.6 Reminder Center Phase 1 ===== */
.reminder-list-v346{display:flex;flex-direction:column;gap:10px}
.reminder-card-v346{border:1px solid var(--line,#e5e7eb);background:var(--panel,#fff);border-radius:16px;padding:13px;display:grid;grid-template-columns:42px 1fr auto;gap:11px;align-items:start}
.reminder-card-v346.done{opacity:.62}
.reminder-ico-v346{width:42px;height:42px;border-radius:13px;background:#eef6ff;display:grid;place-items:center;font-size:20px}
.reminder-card-v346 small{display:block;color:var(--muted,#64748b);margin-top:3px}
.reminder-actions-v346{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.reminder-chip-v346{border-radius:999px;padding:4px 8px;font-size:10px;font-weight:800;background:#eef2ff}
.reminder-chip-v346.high{background:#fee2e2;color:#b42318}
.reminder-chip-v346.medium{background:#fff7ed;color:#b45309}
.reminder-chip-v346.low{background:#ecfdf3;color:#047857}
.reminder-quick-v346{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.reminder-permission-v346{border:1px dashed var(--line,#dbe3ee);border-radius:15px;padding:13px;background:var(--panel,#fff)}
.upcoming-reminders-v346{display:flex;flex-direction:column;gap:8px}
.upcoming-reminder-v346{display:flex;gap:10px;align-items:center;border:1px solid var(--line,#e5e7eb);border-radius:14px;padding:10px;background:var(--panel,#fff)}
.upcoming-reminder-v346 .u-time{font-weight:800;white-space:nowrap}

/* ===== V34.7 Reminder Push Phase 2 ===== */
.push-status-v347{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--line,#e5e7eb);border-radius:15px;padding:13px;background:var(--panel,#fff);margin-top:10px}
.push-status-v347 .ico{width:38px;height:38px;border-radius:12px;background:#eef6ff;display:grid;place-items:center;flex:0 0 auto}
.push-status-v347 small{display:block;color:var(--muted,#64748b);margin-top:3px}
.push-test-v347{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
