/* AlenRock Construction — field app
   Palette from the brand guide: green #4A6A50, grey #5B5B5B, tan #C7A55D.
   Type: Raleway. Visual rules: geometric, thin dividers, solid blocks, minimal.
   Designed thumb-first: primary actions sit low, targets are >=56px. */

:root{
  --green:#4A6A50; --green-d:#3b5540; --green-l:#88a08c; --green-xl:#eef2ef;
  --grey:#5B5B5B; --grey-l:#949494; --grey-xl:#f1f1f1;
  --tan:#C7A55D; --tan-l:#eadfc6;
  --ink:#232323; --paper:#fff; --rule:#e2e2e2;
  --red:#a8443c; --blue:#4a6a8a;
  --safe-top:env(safe-area-inset-top,0px);
  --safe-bot:env(safe-area-inset-bottom,0px);
}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html,body{font-family:'Raleway',-apple-system,system-ui,sans-serif;color:var(--ink);
  background:var(--grey-xl);overscroll-behavior-y:none}
body{padding-bottom:var(--safe-bot)}
button,input,select,textarea{font-family:inherit;font-size:16px}
.hidden{display:none !important}

/* ---------- sync bar ---------- */
.syncbar{position:sticky;top:0;z-index:60;display:flex;align-items:center;gap:8px;
  padding:calc(6px + var(--safe-top)) 14px 6px;background:var(--green-d);color:#fff;
  font-size:12px;font-weight:600;letter-spacing:.02em}
.syncbar .dot{width:8px;height:8px;border-radius:50%;background:#7ddc9a;flex:0 0 auto}
.syncbar.pending .dot{background:var(--tan)}
.syncbar.offline{background:var(--grey)}
.syncbar.offline .dot{background:#ddd}

/* ---------- top bar ---------- */
.top{display:flex;align-items:center;justify-content:space-between;
  padding:12px 14px;background:var(--paper);border-bottom:1px solid var(--rule)}
.brand{display:flex;align-items:center;gap:9px;color:var(--green)}
.brand .mark{width:26px;height:26px}
.bt{line-height:1.05}
.bt strong{display:block;font-size:13px;font-weight:800;letter-spacing:.07em}
.bt span{display:block;font-size:7.5px;font-weight:600;letter-spacing:.3em;color:var(--grey-l)}
.modes{display:flex;background:var(--grey-xl);padding:3px;border-radius:2px}
.mode{border:0;background:none;padding:7px 14px;font-size:12px;font-weight:700;
  color:var(--grey);cursor:pointer;letter-spacing:.04em}
.mode.active{background:var(--green);color:#fff}

.view{display:none;padding:14px}
.view.active{display:block}

/* ---------- field: project cards ---------- */
.plist{display:grid;gap:12px}
.pcard{background:var(--paper);border:1px solid var(--rule);border-left:4px solid var(--green);
  padding:16px;cursor:pointer}
.pcard h3{font-size:17px;font-weight:800;margin-bottom:3px}
.pcard .addr{font-size:12.5px;color:var(--grey);margin-bottom:11px}
.progress{height:7px;background:var(--grey-xl);overflow:hidden}
.progress>div{height:100%;background:var(--green);transition:width .3s}
.pcard .meta{display:flex;justify-content:space-between;margin-top:9px;
  font-size:11.5px;color:var(--grey);font-weight:600}

.back{border:0;background:none;color:var(--green);font-weight:700;font-size:14px;
  padding:6px 0 12px;cursor:pointer}
#fd-name{font-size:23px;font-weight:800;line-height:1.15}
.sub{font-size:13px;color:var(--grey);margin:3px 0 13px}
.stats{display:flex;gap:18px;margin:11px 0 4px;font-size:12px;color:var(--grey);font-weight:600}
.stats b{display:block;font-size:19px;color:var(--ink);font-weight:800}

/* ---------- tabs ---------- */
.tabs{display:flex;gap:2px;margin:16px 0 12px;border-bottom:1px solid var(--rule)}
.tab{flex:1;border:0;background:none;padding:11px 4px;font-size:13px;font-weight:700;
  color:var(--grey-l);cursor:pointer;border-bottom:3px solid transparent}
.tab.active{color:var(--green);border-bottom-color:var(--green)}
.ftab{display:none}.ftab.active{display:block}

/* ---------- field tasks: thumb-sized ---------- */
.phasehdr{display:flex;align-items:center;gap:8px;margin:18px 0 7px;
  font-size:11px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--grey)}
.phasehdr .swatch{width:10px;height:10px;flex:0 0 auto}
.phasehdr .count{margin-left:auto;color:var(--grey-l);letter-spacing:0}
.trow{display:flex;align-items:center;gap:13px;background:var(--paper);
  border:1px solid var(--rule);padding:14px;margin-bottom:7px;min-height:58px}
.tcheck{width:28px;height:28px;flex:0 0 auto;border:2px solid var(--grey-l);
  background:none;cursor:pointer;display:flex;align-items:center;justify-content:center;
  font-size:16px;color:#fff;font-weight:800}
.trow.done .tcheck{background:var(--green);border-color:var(--green)}
.trow.done .ttitle{text-decoration:line-through;color:var(--grey-l)}
.trow.doing{border-left:4px solid var(--tan)}
.ttitle{flex:1;font-size:14.5px;font-weight:600;line-height:1.3}
.tmeta{font-size:11px;color:var(--grey-l);font-weight:600;white-space:nowrap}

/* ---------- buttons ---------- */
.bigbtn{display:flex;align-items:center;justify-content:center;width:100%;min-height:56px;
  border:2px dashed var(--green-l);color:var(--green);background:var(--paper);
  font-weight:800;font-size:15px;cursor:pointer;margin-bottom:12px}
.bigbtn.solid{border:0;background:var(--green);color:#fff}
.newbtn{border:0;background:var(--green);color:#fff;padding:9px 14px;font-size:12.5px;
  font-weight:700;cursor:pointer;white-space:nowrap}

/* ---------- photos ---------- */
.pgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:5px}
.pgrid figure{position:relative;aspect-ratio:1;background:var(--grey-xl);overflow:hidden}
.pgrid img{width:100%;height:100%;object-fit:cover;display:block}
.pgrid .q{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  background:rgba(91,91,91,.82);color:#fff;font-size:10px;font-weight:700;text-align:center;padding:6px}

/* ---------- log ---------- */
textarea,input[type=text],input[type=number],input:not([type]){width:100%;padding:13px;
  border:1px solid var(--rule);background:var(--paper);font-size:15px;margin-bottom:9px}
.row{display:flex;gap:8px;margin-bottom:9px}
.row input{margin:0}
.mic{flex:0 0 56px;border:1px solid var(--rule);background:var(--paper);font-size:20px;cursor:pointer}
.mic.rec{background:var(--red);border-color:var(--red)}
.loglist{margin-top:18px}
.logitem{background:var(--paper);border-left:3px solid var(--tan);padding:12px 14px;margin-bottom:8px}
.logitem .d{font-size:10.5px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;
  color:var(--grey-l);margin-bottom:4px}
.logitem p{font-size:13.5px;line-height:1.5}

/* ---------- office ---------- */
.officebar{display:flex;gap:9px;align-items:center;flex-wrap:wrap;margin-bottom:14px}
#projpick{padding:9px 11px;border:1px solid var(--rule);background:var(--paper);
  font-size:13.5px;font-weight:700;min-width:190px}
.vtabs{display:flex;background:var(--paper);border:1px solid var(--rule)}
.vtab{border:0;background:none;padding:9px 14px;font-size:12.5px;font-weight:700;
  color:var(--grey);cursor:pointer}
.vtab.active{background:var(--green);color:#fff}
.ov{display:none}.ov.active{display:block}

/* list view */
.ltable{width:100%;border-collapse:collapse;background:var(--paper);font-size:13px}
.ltable th{text-align:left;padding:10px 12px;font-size:10px;letter-spacing:.12em;
  text-transform:uppercase;color:var(--green);border-bottom:2px solid var(--green);font-weight:800}
.ltable td{padding:10px 12px;border-bottom:1px solid var(--rule);vertical-align:middle}
.pill{display:inline-block;padding:3px 9px;font-size:10px;font-weight:800;
  letter-spacing:.07em;text-transform:uppercase}
.pill.todo{background:var(--grey-xl);color:var(--grey)}
.pill.doing{background:var(--tan-l);color:#8a6a1e}
.pill.done{background:var(--green-xl);color:var(--green)}
.pill.blocked{background:#f6e2e0;color:var(--red)}

/* board */
.board{display:flex;gap:11px;overflow-x:auto;padding-bottom:10px}
.col{flex:0 0 255px;background:var(--grey-xl);padding:10px}
.col h4{font-size:10.5px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;
  color:var(--grey);margin-bottom:9px;display:flex;justify-content:space-between}
.card{background:var(--paper);border-left:3px solid var(--green-l);padding:11px;margin-bottom:7px;
  font-size:13px;line-height:1.35;cursor:grab}
.card .cm{font-size:10.5px;color:var(--grey-l);margin-top:5px;font-weight:600}

/* gantt */
.gwrap{background:var(--paper);border:1px solid var(--rule);overflow-x:auto}
.gantt{min-width:900px;position:relative}
.grow{display:flex;align-items:center;height:30px;border-bottom:1px solid #f0f0f0}
.grow:hover{background:#fafafa}
.glabel{flex:0 0 232px;padding:0 11px;font-size:12px;font-weight:600;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis;border-right:1px solid var(--rule)}
.glabel.ph{font-weight:800;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--grey)}
.gtrack{flex:1;position:relative;height:100%}
.gbar{position:absolute;top:7px;height:16px;background:var(--green-l);cursor:pointer}
.gbar.done{background:var(--green)}
.gbar.doing{background:var(--tan)}
.gbar.todo{background:var(--grey-l);opacity:.55}
.gbar span{position:absolute;left:100%;margin-left:7px;font-size:10.5px;white-space:nowrap;
  color:var(--grey);line-height:16px;font-weight:600}
.ghead{display:flex;border-bottom:2px solid var(--green);position:sticky;top:0;background:var(--paper);z-index:2}
.ghead .glabel{font-size:10px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;
  color:var(--green);padding:9px 11px}
.gmonths{flex:1;display:flex}
.gmonth{border-left:1px solid var(--rule);font-size:10px;font-weight:700;color:var(--grey);
  padding:9px 5px;text-align:center}
.gtoday{position:absolute;top:0;bottom:0;width:2px;background:var(--red);z-index:3;pointer-events:none}

/* templates */
.tplbox{background:var(--paper);border:1px solid var(--rule);padding:16px;margin-bottom:12px}
.tplbox h3{font-size:16px;font-weight:800;margin-bottom:3px}
.tplbox .d{font-size:12.5px;color:var(--grey);margin-bottom:13px}
.tphase{margin-bottom:14px}
.tphase .h{display:flex;align-items:center;gap:8px;font-size:11px;font-weight:800;
  letter-spacing:.12em;text-transform:uppercase;color:var(--grey);margin-bottom:6px}
.ttask{display:flex;align-items:center;gap:9px;padding:8px 10px;border:1px solid var(--rule);
  margin-bottom:4px;font-size:13px;background:var(--paper)}
.ttask input{border:0;flex:1;padding:2px;margin:0;font-size:13px;font-weight:600}
.ttask .dur{flex:0 0 66px;text-align:right;font-size:11px;color:var(--grey-l);font-weight:700}
.ttask .del{border:0;background:none;color:var(--grey-l);cursor:pointer;font-size:17px;padding:0 4px}
.ttask .del:hover{color:var(--red)}

/* modal */
.modal{position:fixed;inset:0;background:rgba(35,35,35,.5);z-index:100;
  display:flex;align-items:flex-end;justify-content:center}
.sheet{background:var(--paper);width:100%;max-width:520px;padding:20px;
  max-height:88vh;overflow-y:auto;padding-bottom:calc(20px + var(--safe-bot))}
.sheet h3{font-size:18px;font-weight:800;margin-bottom:13px}
.sheet label{display:block;font-size:10.5px;font-weight:800;letter-spacing:.1em;
  text-transform:uppercase;color:var(--grey);margin:11px 0 4px}
.sheet .acts{display:flex;gap:8px;margin-top:16px}
.sheet .acts button{flex:1;min-height:50px;border:0;font-weight:800;font-size:14px;cursor:pointer}
.sheet .ok{background:var(--green);color:#fff}
.sheet .cancel{background:var(--grey-xl);color:var(--grey)}

.empty{text-align:center;padding:40px 20px;color:var(--grey-l);font-size:13.5px}

@media(min-width:760px){
  .view{padding:22px 26px;max-width:1240px;margin:0 auto}
  .plist{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}
  .pgrid{grid-template-columns:repeat(5,1fr)}
}
