/* RentReactor — stylesheet */

:root{
    --navy:#16243d; --navy2:#1f3354; --teal:#1f8a8a; --teal-d:#156d6d;
    --bg:#f4f6f9; --card:#ffffff; --line:#e3e8ef; --text:#1c2733; --muted:#697586;
    --green:#1f9d5a; --green-bg:#e7f6ee; --amber:#c9890d; --amber-bg:#fcf3df;
    --red:#d6453d; --red-bg:#fde9e8; --gray:#9aa4b2; --gray-bg:#eef1f5;
    --shadow:0 1px 3px rgba(16,24,40,.06),0 1px 2px rgba(16,24,40,.04);
  }
  *{box-sizing:border-box;margin:0;padding:0}
  html,body{height:100%}
  body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
    background:var(--bg);color:var(--text);font-size:15px;line-height:1.45;-webkit-text-size-adjust:100%}
  button{font-family:inherit;cursor:pointer;border:none;background:none}
  a{color:inherit}
  .hidden{display:none!important}

  /* ---- top bar ---- */
  header{background:var(--navy);color:#fff;padding:14px 20px;display:flex;align-items:center;
    gap:14px;position:sticky;top:0;z-index:50;box-shadow:0 2px 8px rgba(0,0,0,.12)}
  .logo{display:flex;align-items:center;gap:9px;font-weight:700;font-size:17px;letter-spacing:.2px}
  .logo .mark{width:26px;height:26px;border-radius:7px;background:var(--teal);display:flex;
    align-items:center;justify-content:center;font-size:15px}
  .nav{display:flex;gap:4px;margin-left:auto}
  .nav button{color:#c4ccd8;padding:7px 14px;border-radius:7px;font-size:14px;font-weight:600}
  .nav button:hover{color:#fff;background:rgba(255,255,255,.08)}
  .nav button.active{color:#fff;background:var(--teal)}
  #navUser{display:flex;align-items:center;gap:6px}
  .nav-name{color:#c4ccd8;font-size:13px;padding:0 6px}
  .nav-signout{color:#c4ccd8;font-size:13px;font-weight:600;padding:7px 11px;border-radius:7px}
  .nav-signout:hover{background:rgba(255,255,255,.08)}
  #hamburger{display:none;color:#fff;font-size:23px;line-height:1;padding:4px 8px;
    margin-left:auto;cursor:pointer}
  #navbackdrop{display:none;position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:190}
  #navbackdrop.open{display:block}

  .wrap{max-width:1180px;margin:0 auto;padding:24px 20px 64px}
  .page-title{font-size:22px;font-weight:700;margin-bottom:3px}
  .page-sub{color:var(--muted);font-size:14px;margin-bottom:20px}

  /* ---- summary cards ---- */
  .cards{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:22px}
  .card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px 17px;
    box-shadow:var(--shadow)}
  .card .k{font-size:12px;font-weight:700;color:var(--muted);text-transform:uppercase;
    letter-spacing:.5px;display:flex;align-items:center;gap:6px}
  .card .v{font-size:27px;font-weight:750;margin-top:7px;line-height:1.1}
  .card .d{font-size:12.5px;color:var(--muted);margin-top:3px}
  .card.flag{border-left:4px solid var(--red)}
  .card.warn{border-left:4px solid var(--amber)}
  .card.good{border-left:4px solid var(--teal)}

  /* ---- toolbar ---- */
  .toolbar{display:flex;flex-wrap:wrap;gap:9px;align-items:center;margin-bottom:14px}
  select,input[type=text],input[type=number]{font-family:inherit;font-size:14px;padding:8px 11px;
    border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--text)}
  select:focus,input:focus{outline:2px solid var(--teal);outline-offset:-1px}
  .chip{padding:7px 13px;border:1px solid var(--line);border-radius:20px;background:#fff;
    font-size:13px;font-weight:600;color:var(--muted)}
  .chip.on{background:var(--navy);color:#fff;border-color:var(--navy)}
  .spacer{flex:1}
  .btn{background:var(--teal);color:#fff;padding:9px 17px;border-radius:8px;font-weight:650;
    font-size:14px;display:inline-flex;align-items:center;gap:7px}
  .btn:hover{background:var(--teal-d)}
  .btn.ghost{background:#fff;color:var(--navy);border:1px solid var(--line)}
  .btn.ghost:hover{background:var(--bg)}
  .btn.lg{padding:13px 22px;font-size:15px}

  /* ---- table ---- */
  .tbl-wrap{background:var(--card);border:1px solid var(--line);border-radius:12px;
    overflow:hidden;box-shadow:var(--shadow)}
  table{width:100%;border-collapse:collapse}
  th{text-align:left;font-size:11.5px;font-weight:700;color:var(--muted);text-transform:uppercase;
    letter-spacing:.5px;padding:11px 14px;background:#fafbfc;border-bottom:1px solid var(--line)}
  td{padding:12px 14px;border-bottom:1px solid var(--line);font-size:14px;vertical-align:middle}
  tbody tr{cursor:pointer}
  tbody tr:hover{background:#f7fafc}
  tbody tr:last-child td{border-bottom:none}
  .u-name{font-weight:650}
  .u-prop{font-size:12.5px;color:var(--muted)}
  .grouphdr td{background:var(--navy2);color:#fff;font-weight:700;font-size:12.5px;
    text-transform:uppercase;letter-spacing:.6px;padding:8px 14px;cursor:default}
  .grouphdr:hover td{background:var(--navy2)}

  /* ---- badges ---- */
  .badge{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:14px;
    font-size:12.5px;font-weight:700;white-space:nowrap}
  .b-green{background:var(--green-bg);color:var(--green)}
  .b-amber{background:var(--amber-bg);color:var(--amber)}
  .b-red{background:var(--red-bg);color:var(--red)}
  .b-gray{background:var(--gray-bg);color:var(--muted)}
  .score-dot{width:9px;height:9px;border-radius:50%;display:inline-block}
  .delta-neg{color:var(--red);font-weight:650}
  .delta-pos{color:var(--green);font-weight:650}
  .delta-zero{color:var(--muted)}
  .tag{font-size:11px;font-weight:700;padding:2px 7px;border-radius:5px;background:var(--gray-bg);
    color:var(--muted);text-transform:uppercase;letter-spacing:.4px}
  .tag.evict{background:var(--red-bg);color:var(--red)}
  .tag.vacant{background:var(--amber-bg);color:var(--amber)}
  .muted{color:var(--muted)}

  /* ---- unit detail ---- */
  .back{color:var(--navy);font-weight:650;font-size:13px;margin-bottom:16px;display:inline-flex;
    align-items:center;gap:6px;cursor:pointer;border:1px solid var(--line);
    background:var(--card);padding:8px 14px;border-radius:8px}
  .back:hover{background:var(--bg)}
  #navprogress{position:fixed;top:0;left:0;height:3px;width:0;background:var(--teal);
    z-index:120;opacity:0;border-radius:0 2px 2px 0;pointer-events:none}
  .logo{cursor:pointer}
  .card.link{cursor:pointer}
  .card.link:hover{border-color:var(--teal)}
  .detail-head{display:flex;flex-wrap:wrap;gap:18px;align-items:flex-start;
    background:var(--card);border:1px solid var(--line);border-radius:12px;padding:20px;
    box-shadow:var(--shadow);margin-bottom:18px}
  .detail-head .main{flex:1;min-width:220px}
  .detail-head h2{font-size:21px}
  .kv{display:flex;gap:24px;flex-wrap:wrap;margin-top:12px}
  .kv div .lbl{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;
    letter-spacing:.5px}
  .kv div .val{font-size:16px;font-weight:700;margin-top:2px}
  .scorebox{text-align:center;min-width:130px;border-left:1px solid var(--line);padding-left:18px}
  .scorebox .big{font-size:42px;font-weight:800;line-height:1}
  .scorebox .small{font-size:12px;color:var(--muted);margin-top:3px}

  .section-title{font-size:15px;font-weight:700;margin:22px 0 11px;display:flex;
    align-items:center;gap:8px}
  .panel{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:18px;
    box-shadow:var(--shadow)}

  /* timeline */
  .insp-row{display:flex;gap:14px;padding:14px 0;border-bottom:1px solid var(--line)}
  .insp-row:last-child{border-bottom:none}
  .insp-row .mark{width:42px;height:42px;border-radius:9px;display:flex;align-items:center;
    justify-content:center;font-weight:800;font-size:16px;color:#fff;flex-shrink:0}
  .insp-row .body{flex:1}
  .insp-row .body .t{font-weight:650}
  .insp-row .body .s{font-size:13px;color:var(--muted);margin-top:1px}
  .secscores{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
  .secscore{font-size:11.5px;padding:2px 8px;border-radius:6px;background:var(--bg);
    border:1px solid var(--line);font-weight:600}

  /* photo gallery */
  .gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
  .gallery .ph{border:1px solid var(--line);border-radius:9px;overflow:hidden;background:var(--bg)}
  .gallery .ph img{width:100%;height:115px;object-fit:cover;display:block}
  .gallery .ph .cap{font-size:11.5px;padding:6px 8px;color:var(--muted);font-weight:600}
  .empty{text-align:center;color:var(--muted);padding:34px 16px;font-size:14px}

  .repair-row{display:flex;gap:11px;align-items:flex-start;padding:10px 0;
    border-bottom:1px solid var(--line)}
  .repair-row:last-child{border-bottom:none}
  .repair-row .sev{width:7px;height:7px;border-radius:50%;margin-top:7px;flex-shrink:0}
  .repair-row .rt{flex:1}
  .repair-row .rt .rn{font-weight:600}
  .repair-row .rt .rm{font-size:12.5px;color:var(--muted)}
  .repair-row .cost{font-weight:700;font-size:14px;white-space:nowrap}

  /* ---- inspection wizard ---- */
  .wizard{max-width:680px;margin:0 auto}
  .progress{height:7px;background:var(--line);border-radius:5px;overflow:hidden;margin-bottom:6px}
  .progress > div{height:100%;background:var(--teal);transition:width .25s}
  .step-meta{display:flex;justify-content:space-between;font-size:12.5px;color:var(--muted);
    font-weight:600;margin-bottom:18px}
  .wz-card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:22px;
    box-shadow:var(--shadow)}
  .wz-card h2{font-size:19px;display:flex;align-items:center;gap:9px;margin-bottom:4px}
  .wz-card .h-sub{color:var(--muted);font-size:13.5px;margin-bottom:18px}
  .field{margin-bottom:15px}
  .field label{display:block;font-size:12.5px;font-weight:700;color:var(--muted);
    text-transform:uppercase;letter-spacing:.4px;margin-bottom:6px}
  .field select,.field input,.field textarea{width:100%;font-size:15px;padding:11px 12px}
  .field textarea{font-family:inherit;border:1px solid var(--line);border-radius:8px;
    resize:vertical;min-height:74px;color:var(--text)}

  .check-item{display:flex;align-items:center;gap:11px;padding:11px 0;
    border-bottom:1px solid var(--line)}
  .check-item:last-of-type{border-bottom:none}
  .check-item .ci-name{flex:1;font-size:14.5px}
  .tog{display:flex;gap:5px}
  .tog button{padding:7px 13px;border-radius:7px;font-size:13px;font-weight:700;
    border:1.5px solid var(--line);color:var(--muted);background:#fff;min-width:46px}
  .tog button.pass.on{background:var(--green);border-color:var(--green);color:#fff}
  .tog button.fail.on{background:var(--red);border-color:var(--red);color:#fff}
  .tog button.na.on{background:var(--gray);border-color:var(--gray);color:#fff}

  .scoreline{margin-top:18px;padding-top:16px;border-top:2px solid var(--line)}
  .scoreline .sl-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:9px}
  .scoreline .sl-label{font-weight:700;font-size:14px}
  .scoreline .sl-val{font-size:24px;font-weight:800}
  .scorebtns{display:grid;grid-template-columns:repeat(10,1fr);gap:5px}
  .scorebtns button{padding:9px 0;border-radius:7px;font-weight:700;font-size:14px;
    border:1.5px solid var(--line);background:#fff;color:var(--muted)}
  .scorebtns button.on{color:#fff}
  .score-hint{font-size:12.5px;color:var(--muted);margin-top:7px;min-height:16px}

  .photo-add{margin-top:16px}
  .photo-add label.up{display:inline-flex;align-items:center;gap:7px;border:1.5px dashed var(--teal);
    color:var(--teal-d);padding:10px 16px;border-radius:9px;font-weight:650;font-size:14px;
    cursor:pointer}
  .photo-add label.up:hover{background:var(--green-bg)}
  .photo-strip{display:flex;flex-wrap:wrap;gap:8px;margin-top:11px}
  .photo-strip .pt{position:relative;width:78px;height:78px;border-radius:8px;overflow:hidden;
    border:1px solid var(--line)}
  .photo-strip .pt img{width:100%;height:100%;object-fit:cover}
  .photo-strip .pt button{position:absolute;top:2px;right:2px;width:19px;height:19px;
    border-radius:50%;background:rgba(0,0,0,.62);color:#fff;font-size:12px;line-height:19px;
    text-align:center}

  .wz-nav{display:flex;gap:10px;margin-top:20px}
  .wz-nav .btn{flex:1;justify-content:center}

  .repair-input{display:grid;grid-template-columns:1fr 130px 88px auto;gap:8px;margin-bottom:8px}
  .repair-input input,.repair-input select{width:100%}
  .repair-list-item{display:flex;gap:9px;align-items:center;padding:9px 11px;background:var(--bg);
    border-radius:8px;margin-bottom:6px;font-size:13.5px}
  .repair-list-item .rli-cost{font-weight:700;margin-left:auto}
  .repair-list-item button{color:var(--red);font-weight:700;font-size:16px}

  /* review */
  .rev-score{text-align:center;padding:8px 0 16px}
  .rev-score .rs-num{font-size:54px;font-weight:850;line-height:1}
  .rev-score .rs-band{font-size:14px;font-weight:700;margin-top:5px}
  .rev-grid{display:grid;grid-template-columns:1fr 1fr;gap:11px;margin:14px 0}
  .rev-grid .rg{background:var(--bg);border-radius:9px;padding:12px 14px}
  .rev-grid .rg .rgl{font-size:11.5px;font-weight:700;color:var(--muted);text-transform:uppercase;
    letter-spacing:.4px}
  .rev-grid .rg .rgv{font-size:19px;font-weight:750;margin-top:3px}
  .rev-sec{display:flex;justify-content:space-between;padding:7px 0;font-size:13.5px;
    border-bottom:1px dashed var(--line)}
  .rev-sec:last-child{border-bottom:none}

  .toast{position:fixed;left:50%;bottom:26px;transform:translateX(-50%);background:var(--navy);
    color:#fff;padding:13px 22px;border-radius:10px;font-weight:600;font-size:14px;
    box-shadow:0 8px 24px rgba(0,0,0,.25);z-index:200;opacity:0;transition:opacity .25s,
    transform .25s;pointer-events:none}
  .toast.show{opacity:1;transform:translateX(-50%) translateY(-4px)}

  .scorekey{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:12px;color:var(--muted);
    margin-top:10px}
  .scorekey span{display:flex;align-items:center;gap:5px}

  @media(max-width:760px){
    header{padding:12px 12px}
    .wrap{padding:18px 18px 60px}
    .cards{grid-template-columns:1fr 1fr;gap:10px}
    #hamburger{display:block}
    .nav{position:fixed;top:0;right:0;bottom:0;width:250px;max-width:80vw;
      background:var(--navy);flex-direction:column;align-items:stretch;gap:0;margin-left:0;
      padding:60px 0 24px;transform:translateX(106%);transition:transform .25s ease;
      z-index:200;overflow-y:auto;box-shadow:-4px 0 24px rgba(0,0,0,.35)}
    .nav.open{transform:translateX(0)}
    .nav button{width:100%;text-align:left;padding:14px 22px;font-size:15px;
      border-radius:0;color:#dce2ea}
    .nav button.active{background:var(--teal);color:#fff}
    #navUser{flex-direction:column;align-items:stretch;gap:0;margin-top:8px;
      padding-top:8px;border-top:1px solid rgba(255,255,255,.12)}
    .nav-name{padding:10px 22px 4px;font-size:12px;color:#8fa0bd;
      text-transform:uppercase;letter-spacing:.5px}
    .nav-signout{width:100%;text-align:left;padding:14px 22px;font-size:15px;border-radius:0}
    .logo span.full{display:none}
    .detail-head{padding:16px}
    .scorebox{border-left:none;border-top:1px solid var(--line);padding-left:0;padding-top:14px;
      width:100%;display:flex;gap:18px;align-items:center;justify-content:center}
    .scorebox .small{margin-top:0}
    th.hide-m,td.hide-m{display:none}
    .repair-input{grid-template-columns:1fr 1fr;}
    .scorebtns{grid-template-columns:repeat(5,1fr)}
    .rev-grid{grid-template-columns:1fr}
    td,th{padding:10px 9px;font-size:13px}
  }

  /* ---- modal / lightbox ---- */
  .modal-host{display:none;position:fixed;inset:0;z-index:300}
  .modal-bg{position:absolute;inset:0;background:rgba(16,24,40,.80);
    display:flex;align-items:center;justify-content:center;padding:22px}
  .lightbox{position:relative;display:flex;align-items:center;justify-content:center}
  .lightbox img{max-width:94vw;max-height:86vh;border-radius:8px;display:block;
    box-shadow:0 10px 40px rgba(0,0,0,.5)}
  .lightbox .cap{position:absolute;left:0;right:0;bottom:-28px;text-align:center;
    color:#fff;font-size:13px;font-weight:600}
  .modal-x{position:fixed;top:14px;right:16px;width:40px;height:40px;border-radius:50%;
    background:rgba(255,255,255,.93);font-size:22px;color:var(--navy);font-weight:700;
    box-shadow:0 2px 10px rgba(0,0,0,.3);z-index:310}
  .modal-card{background:#fff;border-radius:14px;padding:20px;max-width:440px;width:100%;
    box-shadow:0 14px 44px rgba(0,0,0,.32);position:relative;max-height:88vh;overflow:auto}
  .modal-card h3{font-size:17px;margin-bottom:3px}
  .gallery .ph img{cursor:zoom-in}

  /* ---- inspection detail ---- */
  .item-row{display:flex;justify-content:space-between;align-items:center;gap:10px;
    padding:8px 0;border-bottom:1px solid var(--line);font-size:13.5px}
  .item-row:last-child{border-bottom:none}
  .res{font-size:11.5px;font-weight:700;padding:2px 9px;border-radius:5px;white-space:nowrap}
  .sec-block{margin-bottom:6px}
  .sec-block .sec-head{display:flex;justify-content:space-between;align-items:center;
    font-weight:700;font-size:14px;padding:6px 0}
  .sec-note{font-size:12.5px;color:var(--muted);font-style:italic;padding:4px 0 8px}

  /* ---- loading ---- */
  .loading-wrap{text-align:center;padding:56px 20px}
  .spinner{width:34px;height:34px;border:3px solid var(--line);border-top-color:var(--teal);
    border-radius:50%;animation:uw-spin .8s linear infinite;margin:0 auto}
  @keyframes uw-spin{to{transform:rotate(360deg)}}
  .loading-wrap .lmsg{margin-top:15px;font-size:14px;font-weight:600;color:var(--muted)}
