html, body{overflow-x:hidden;}
body.login-body{display:flex; align-items:center; justify-content:center; min-height:100vh; min-height:100dvh; background:var(--green-950); padding:20px; box-sizing:border-box;}
.login-box{background:#fff; padding:36px; border-radius:14px; width:100%; max-width:400px; box-sizing:border-box;}
.login-box h2{margin-bottom:20px;}
.login-box form{display:flex; flex-direction:column; gap:12px;}
.login-box input{padding:10px 12px; border:1px solid var(--line); border-radius:8px;}
.error{color:#b3261e; font-size:.85rem;}

.admin-body{margin:0; font-family:'Work Sans',sans-serif; background:var(--stone-100); color:var(--ink);}
.admin-shell{display:grid; grid-template-columns:220px 1fr; min-height:100vh; min-height:100dvh;}
.admin-sidebar{background:var(--green-950); color:var(--stone-50); padding:24px 0;}
.admin-sidebar .logo{display:block; padding:0 20px 20px; font-family:'Fraunces',serif; font-size:1.3rem;}
.admin-sidebar a{display:block; padding:11px 20px; color:rgba(246,243,236,.8); font-size:.9rem;}
.admin-sidebar a:hover, .admin-sidebar a.active{background:var(--green-800); color:#fff;}
.admin-main{padding:28px 32px;}
.admin-topbar{display:flex; justify-content:space-between; align-items:center; margin-bottom:24px;}
.admin-topbar h1{font-size:1.4rem;}
.pipeline{display:grid; grid-template-columns:repeat(7,1fr); gap:12px; margin-bottom:28px;}
.pipeline-col{background:#fff; border:1px solid var(--line); border-radius:4px; padding:10px;}
.pipeline-col h4{font-size:.78rem; text-transform:uppercase; color:var(--green-600); margin-bottom:8px;}
.pipeline-col .count{font-size:1.6rem; font-family:'Fraunces',serif; color:var(--green-950);}
table.data-table{width:100%; border-collapse:collapse; background:#fff; border:1px solid var(--line); border-radius:4px; overflow:hidden;}
table.data-table th, table.data-table td{padding:10px 12px; border-bottom:1px solid var(--line); font-size:.87rem; text-align:left;}
table.data-table th{background:var(--stone-100); font-weight:600; color:var(--green-800);}
.status-badge{padding:3px 9px; border-radius:12px; font-size:.72rem; font-weight:600; text-transform:capitalize;}
.status-new{background:#E4EEFF; color:#1D4ED8;}
.status-contacted{background:#FFF4D6; color:#92640A;}
.status-qualified{background:#E6F4EA; color:#1E7B3C;}
.status-site_visit{background:#EDE4FF; color:#5B21B6;}
.status-negotiation{background:#FFE9DA; color:#B45309;}
.status-won{background:#DBF5E5; color:#0F7A3D;}
.status-lost{background:#FDE2E2; color:#B3261E;}
.filters-bar{display:flex; gap:10px; margin-bottom:16px; flex-wrap:wrap;}
.filters-bar select, .filters-bar input{padding:8px 10px; border:1px solid var(--line); border-radius:3px; font-size:.85rem;}
a.btn-small, button.btn-small{background:var(--green-800); color:#fff; border:none; padding:6px 12px; border-radius:3px; font-size:.8rem; cursor:pointer; text-decoration:none; display:inline-block;}
.detail-card{background:#fff; border:1px solid var(--line); border-radius:4px; padding:20px; margin-bottom:20px;}
.detail-grid{display:grid; grid-template-columns:1fr 1fr; gap:16px; margin-bottom:16px;}
.note-item{border-bottom:1px solid var(--line); padding:10px 0; font-size:.87rem;}
.note-item small{color:var(--green-600); display:block; margin-top:3px;}
form.inline-form{display:flex; gap:8px; margin-top:12px;}
form.inline-form select, form.inline-form input, form.inline-form textarea{padding:8px; border:1px solid var(--line); border-radius:3px; font-size:.85rem;}
.form-field-md{flex:1 1 200px;}
.form-field-full{flex:1 1 100%;}
.reset-password-row{display:none;}
.reset-password-row.open-reset{display:block;}

.hamburger-btn{display:none;}
.sidebar-overlay{display:none;}

@media (max-width:900px){
  /* THE KEY FIX: grid/flex items default to min-width:auto, which was letting
     the sidebar's content force the entire page wider than the viewport and
     pan sideways on swipe. min-width:0 lets them actually shrink/scroll
     within their own box instead of expanding the whole layout. */
  .admin-shell, .admin-sidebar, .admin-main{min-width:0;}
  html, body{overflow-x:hidden;}

  .admin-shell{grid-template-columns:1fr; position:relative;}

  .hamburger-btn{
    display:flex; flex-direction:column; justify-content:center; gap:4px;
    position:fixed; top:14px; left:14px; z-index:200;
    width:38px; height:38px; background:var(--green-950); border:none; border-radius:5px;
    padding:0 8px; cursor:pointer;
  }
  .hamburger-btn span{display:block; height:2px; width:100%; background:#fff; border-radius:2px; transition:transform .2s ease, opacity .2s ease;}
  .hamburger-btn.open span:nth-child(1){transform:translateY(6px) rotate(45deg);}
  .hamburger-btn.open span:nth-child(2){opacity:0;}
  .hamburger-btn.open span:nth-child(3){transform:translateY(-6px) rotate(-45deg);}

  .admin-sidebar{
    position:fixed; top:0; left:0; height:100vh; height:100dvh; width:240px; z-index:150;
    transform:translateX(-100%); transition:transform .25s ease;
    display:flex; flex-direction:column; overflow-y:auto; padding:60px 0 20px;
  }
  .admin-sidebar.open{transform:translateX(0);}
  .admin-sidebar a{white-space:normal;}

  .sidebar-overlay{
    position:fixed; inset:0; background:rgba(15,36,25,.5); z-index:140;
  }
  .sidebar-overlay.open{display:block;}

  .admin-main{padding:60px 16px 24px;}
  .admin-topbar{flex-direction:column; align-items:flex-start; gap:6px;}
  .pipeline{grid-template-columns:repeat(2,1fr);}
  .detail-grid{grid-template-columns:1fr;}
  form.inline-form{flex-direction:column; align-items:stretch;}
  .form-field-md, .form-field-full{flex:none !important; width:100%; height:auto; min-height:auto;}
  .filters-bar{flex-direction:column; align-items:stretch;}
  table.data-table{display:block; overflow-x:auto; white-space:nowrap; -webkit-overflow-scrolling:touch;}
}

@media (max-width:480px){
  .pipeline{grid-template-columns:repeat(2,1fr); gap:8px;}
  .pipeline-col{padding:8px;}
  .pipeline-col .count{font-size:1.3rem;}
  .login-box{padding:24px 20px; max-width:calc(100% - 32px);}
}
