  :root{
    --bg:#0A0F0D;
    --panel-bg:#101613;
    --panel-border:rgba(255,255,255,0.08);
    --card-bg:#121A17;
    --card-bg-alt:#161F1B;
    --card-border:rgba(255,255,255,0.08);
    --input-bg:#0D1311;
    --input-border:rgba(255,255,255,0.10);
    --teal:#2FE6C6;
    --teal-deep:#17B89B;
    --teal-dim:rgba(47,230,198,0.14);
    --teal-dim-strong:rgba(47,230,198,0.22);
    --text-primary:#F3F6F5;
    --text-secondary:#93A7A1;
    --text-tertiary:#5B6D67;
    --danger:#FF6B6B;
    --ok:#34D399;
    --on-teal:#07110D;

    /* legacy aliases kept so nothing else in the file needs renaming */
    --blue-header: var(--teal);
    --blue-header-text: var(--on-teal);
    --blue-row-odd: rgba(255,255,255,0.025);
    --blue-row-even: transparent;
    --blue-total: var(--teal-dim);
    --blue-border: var(--card-border);
    --blue-accent: var(--teal);
    --text-dark: var(--text-primary);
    --text-gray: var(--text-secondary);
  }

  *{box-sizing:border-box;}

  body{
    margin:0;
    background:var(--bg);
    color:var(--text-primary);
    font-family:'Montserrat', Arial, Helvetica, sans-serif;
    -webkit-font-smoothing:antialiased;
  }

  /* ===== LAYOUT ===== */
  .app-shell{
    display:flex;
    align-items:flex-start;
    gap:24px;
    max-width:1500px;
    margin:0 auto;
    padding:20px;
  }

  .panel{
    flex:0 0 380px;
    background:var(--panel-bg);
    border:1px solid var(--panel-border);
    border-radius:18px;
    padding:18px;
    max-height:calc(100vh - 40px);
    overflow-y:auto;
    position:sticky;
    top:20px;
  }
  .panel::-webkit-scrollbar{width:8px;}
  .panel::-webkit-scrollbar-thumb{background:rgba(255,255,255,0.12); border-radius:8px;}

  .preview-wrap{
    flex:1 1 auto;
    min-width:0;
    display:flex;
    flex-direction:column;
    align-items:center;
    gap:16px;
  }

  @media (max-width:980px){
    .app-shell{flex-direction:column;}
    .panel{position:static; max-height:none; width:100%; flex:none;}
  }

  /* ===== PANEL CONTROLS ===== */
  .panel h2{
    font-size:13px;
    font-weight:700;
    text-transform:uppercase;
    letter-spacing:.06em;
    color:var(--teal);
    margin:20px 0 10px;
    padding-bottom:8px;
    border-bottom:1px solid var(--panel-border);
  }
  .panel h2:first-child{margin-top:0;}

  .field{margin-bottom:10px;}
  .field label{
    display:block;
    font-size:11.5px;
    font-weight:600;
    color:var(--text-secondary);
    margin-bottom:4px;
  }
  .field input[type=text],
  .field input[type=password],
  .field input[type=date],
  .field input[type=time],
  .field input[type=number],
  .field select{
    width:100%;
    padding:9px 12px;
    border:1px solid var(--input-border);
    border-radius:999px;
    font-family:inherit;
    font-size:13px;
    background:var(--input-bg);
    color:var(--text-primary);
  }
  .field select{border-radius:12px;}
  .field input::placeholder{color:var(--text-tertiary);}
  .field input:focus, .field select:focus{
    outline:none;
    border-color:var(--teal);
    box-shadow:0 0 0 3px var(--teal-dim);
  }
  .field-row{display:flex; gap:8px;}
  .field-row .field{flex:1; min-width:0;}

  .toggle-row{
    display:flex;
    align-items:center;
    justify-content:space-between;
    background:var(--card-bg);
    border:1px solid var(--card-border);
    border-radius:12px;
    padding:9px 12px;
    margin-bottom:10px;
    font-size:12.5px;
    font-weight:600;
    color:var(--text-primary);
  }
  .toggle-row input{transform:scale(1.15); accent-color:var(--teal);}

  .day-card{
    background:var(--card-bg);
    border:1px solid var(--card-border);
    border-radius:14px;
    padding:12px 14px;
    margin-bottom:8px;
  }
  .day-card summary{
    cursor:pointer;
    font-weight:700;
    font-size:13px;
    color:var(--text-primary);
    display:flex;
    justify-content:space-between;
    list-style:none;
  }
  .day-card summary::-webkit-details-marker{display:none;}
  .day-card summary::before{
    content:"›";
    display:inline-block;
    margin-right:8px;
    color:var(--teal);
    font-weight:800;
    transform:rotate(0deg);
    transition:transform .15s ease;
  }
  .day-card[open] summary::before{transform:rotate(90deg);}
  .day-card summary .day-meta{font-weight:600; color:var(--teal); font-size:11.5px; background:var(--teal-dim); padding:2px 9px; border-radius:999px;}
  .day-card .field-row{margin-top:10px;}

  .btn{
    display:inline-block;
    width:100%;
    padding:11px 14px;
    margin-bottom:8px;
    border:none;
    border-radius:999px;
    font-family:inherit;
    font-size:12.5px;
    font-weight:700;
    cursor:pointer;
    text-align:center;
    transition:opacity .15s ease, transform .05s ease;
  }
  .btn:active{transform:scale(0.98);}
  .btn-primary{background:var(--teal); color:var(--on-teal);}
  .btn-primary:hover{opacity:.9;}
  .btn-secondary{background:transparent; color:var(--teal); border:1px solid var(--teal);}
  .btn-secondary:hover{background:var(--teal-dim);}
  .btn-danger{background:transparent; color:var(--danger); border:1px solid var(--danger);}
  .btn-danger:hover{background:rgba(255,107,107,0.1);}
  .btn-row{display:flex; gap:8px;}
  .btn-row .btn{margin-bottom:8px;}

  .export-buttons{
    display:flex;
    gap:10px;
    flex-wrap:wrap;
    justify-content:center;
    width:100%;
    max-width:900px;
  }
  .export-buttons .btn{width:auto; flex:1 1 160px;}

  .task-row{
    display:flex;
    align-items:center;
    gap:6px;
    margin-bottom:6px;
  }
  .task-row input[type=text]{flex:1;}
  .task-row .icon-btn{
    border:none; background:none; cursor:pointer; font-size:15px; padding:2px 6px; color:var(--text-tertiary);
  }
  .task-row .icon-btn:hover{color:var(--danger);}

  small.hint{display:block; font-size:11px; color:var(--text-tertiary); margin-top:2px;}

  /* ===== TIMESHEET CARD (exported area) ===== */
  .ts-card{
    width:100%;
    max-width:900px;
    background:var(--card-bg);
    border:1px solid var(--card-border);
    border-radius:18px;
    padding:32px 36px 26px;
  }
  .ts-title{
    text-align:center;
    font-size:28px;
    font-weight:800;
    letter-spacing:.01em;
    color:var(--text-primary);
    margin:0;
  }
  .ts-subtitle{
    text-align:center;
    font-size:15px;
    font-weight:600;
    color:var(--teal);
    margin:4px 0 22px;
  }

  table.ts-table{
    width:90%;
    margin:0 auto;
    border-collapse:collapse;
    font-size:13.5px;
  }
  table.ts-table th{
    background:var(--teal);
    color:var(--on-teal);
    font-weight:800;
    padding:10px 8px;
    border:1px solid var(--teal);
    text-align:center;
  }
  table.ts-table th:first-child{border-top-left-radius:8px; border-bottom-left-radius:8px;}
  table.ts-table th:last-child{border-top-right-radius:8px; border-bottom-right-radius:8px;}
  table.ts-table td{
    padding:9px 8px;
    border:1px solid var(--card-border);
    text-align:center;
    color:var(--text-primary);
  }
  table.ts-table tbody tr:nth-child(odd){background:var(--blue-row-odd);}
  table.ts-table tbody tr:nth-child(even){background:var(--blue-row-even);}
  table.ts-table .col-day{text-align:left; font-weight:700;}
  table.ts-table .num{font-variant-numeric:tabular-nums;}
  table.ts-table tr.ts-total-row td{
    background:var(--teal-dim);
    color:var(--teal);
    font-weight:800;
    border-top:2px solid var(--teal);
    border-bottom:none;
  }
  table.ts-table tr.ts-final-row td{
    background:transparent;
    border:none;
    padding-top:12px;
  }
  .final-amount{
    text-align:right;
    font-size:19px;
    font-weight:800;
    color:var(--teal);
  }
  .hours-note{font-size:10.5px; color:var(--text-tertiary); display:block; font-weight:500;}

  .ts-footer{
    margin-top:16px;
    font-size:10.5px;
    color:var(--text-secondary);
    line-height:1.5;
    width:90%;
    margin-left:auto;
    margin-right:auto;
    white-space:pre-line;
  }

  .task-summary-block{
    width:90%;
    margin:20px auto 0;
    border-top:1px dashed var(--card-border);
    padding-top:12px;
  }
  .task-summary-block h3{
    font-size:14px;
    font-weight:800;
    color:var(--teal);
    margin:0 0 8px;
  }
  .task-summary-block ul{list-style:none; margin:0; padding:0;}
  .task-summary-block li{
    font-size:12.5px;
    padding:4px 0;
    display:flex;
    gap:8px;
    color:var(--text-primary);
  }
  .task-summary-block li.done{color:var(--text-tertiary); text-decoration:line-through;}
  .task-check{font-weight:800; color:var(--teal);}
  .task-summary-block li.done .task-check{color:var(--ok);}
  .task-summary-block li:not(.done) .task-check{color:var(--text-tertiary);}

  @media print{
    .panel, .export-buttons, .top-bar{display:none !important;}
    .app-shell{padding:0;}
    body{background:var(--card-bg);}
  }

  @media (max-width:640px){
    .ts-card{padding:20px 12px;}
    table.ts-table{font-size:11px;}
    .ts-title{font-size:21px;}
    table.ts-table th, table.ts-table td{padding:6px 4px;}
  }

  /* ===== LOGIN SCREEN (Project One) ===== */
  .login-overlay{
    position:fixed; inset:0; z-index:1000;
    display:flex; overflow-y:auto;
    background:#F6F4EF;
    font-family:'Montserrat',system-ui,sans-serif;
  }
  .login-brand{
    flex:1.05; position:relative; overflow:hidden;
    background:#0A0A0A; color:#fff;
    display:flex; flex-direction:column; justify-content:space-between;
    padding:44px 52px;
  }
  .login-brand .pm-water{
    position:absolute; right:-90px; bottom:-70px;
    width:440px; height:auto; color:#C9A25A; opacity:.07; pointer-events:none;
  }
  .p1-lockup{display:flex; align-items:center; gap:14px;}
  .p1-lockup .pm{width:46px; height:auto; flex:none;}
  .p1-word{font-weight:800; font-size:17px; letter-spacing:.22em; line-height:1;}
  .p1-word .gold{
    background:linear-gradient(90deg,#d9b56a,#c79e55,#a98140);
    -webkit-background-clip:text; background-clip:text; color:transparent;
  }
  .p1-word small{display:block; margin-top:6px; font-size:9.5px; font-weight:600; letter-spacing:.28em; color:#8C8A84;}
  .login-brand h1{
    margin:0; max-width:420px;
    font-size:42px; line-height:1.08; font-weight:800; letter-spacing:-.02em;
  }
  .login-brand h1 em{font-style:normal; color:#D9B56A;}
  .login-brand .brand-copy{margin:16px 0 0; max-width:380px; font-size:14px; line-height:1.6; color:#A3A19B;}
  .brand-foot{display:flex; align-items:center; gap:14px; font-size:10.5px; font-weight:700; letter-spacing:.22em; color:#8C8A84; text-transform:uppercase;}
  .brand-foot::before{content:""; width:36px; height:2px; background:#A88A55;}

  .login-form-side{
    flex:1; display:flex; align-items:center; justify-content:center;
    padding:40px 24px; background:#F6F4EF;
  }
  .login-box{width:100%; max-width:360px; color:#141413;}
  .login-box .eyebrow{font-size:11px; font-weight:700; letter-spacing:.2em; text-transform:uppercase; color:#9A7A3F;}
  .login-box h2{margin:8px 0 6px; font-size:30px; font-weight:800; letter-spacing:-.02em; color:#0A0A0A;}
  .login-box p.sub{margin:0 0 28px; font-size:14px; color:#6B6964;}
  .lf{margin-bottom:16px;}
  .lf label{display:block; margin-bottom:7px; font-size:12.5px; font-weight:600; color:#2A2927;}
  .lf input{
    width:100%; height:50px; box-sizing:border-box;
    padding:0 14px; border:1.5px solid #DAD6CC; border-radius:12px;
    background:#fff; color:#141413; font:500 15px 'Montserrat',system-ui,sans-serif;
    transition:border-color .15s, box-shadow .15s;
  }
  .lf input::placeholder{color:#A9A69E;}
  .lf input:focus{outline:none; border-color:#0A0A0A; box-shadow:0 0 0 4px rgba(201,162,90,.28);}
  .pw-wrap{position:relative;}
  .pw-wrap input{padding-right:70px;}
  .pw-toggle{
    position:absolute; right:8px; top:50%; transform:translateY(-50%);
    border:0; background:transparent; cursor:pointer;
    padding:8px 10px; border-radius:8px;
    font:700 12px 'Montserrat',sans-serif; color:#6B6964;
  }
  .pw-toggle:hover{background:#F1EEE6; color:#0A0A0A;}
  .login-btn{
    width:100%; height:52px; margin-top:8px;
    border:0; border-radius:12px; cursor:pointer;
    background:#0A0A0A; color:#fff;
    font:700 15px 'Montserrat',sans-serif; letter-spacing:.02em;
    transition:background .15s, transform .05s;
  }
  .login-btn:hover{background:#26241F;}
  .login-btn:active{transform:translateY(1px);}
  .login-btn:disabled{opacity:.6; cursor:default;}
  .login-error{margin-top:14px; font-size:13px; font-weight:600; color:#B42318; background:#FDECEA; border:1px solid #F7C9C3; border-radius:10px; padding:10px 12px;}
  .login-error:empty{display:none;}
  .login-note{
    display:flex; gap:10px; align-items:flex-start;
    margin-top:28px; padding-top:20px; border-top:1px solid #E4E0D6;
    font-size:12.5px; line-height:1.5; color:#6B6964;
  }
  .login-note svg{flex:none; margin-top:1px; color:#9A7A3F;}
  .login-legal{margin-top:22px; font-size:11px; color:#A9A69E;}

  @media (max-width:820px){
    .login-overlay{flex-direction:column; background:#0A0A0A;}
    .login-brand{flex:none; padding:28px 24px 56px;}
    .login-brand .pm-water{width:260px; right:-60px; bottom:-40px;}
    .login-brand h1{font-size:28px; margin-top:28px;}
    .login-brand .brand-copy{font-size:13px; margin-top:10px;}
    .brand-foot{display:none;}
    .login-form-side{
      flex:1; align-items:flex-start;
      margin-top:-28px; position:relative;
      border-radius:24px 24px 0 0; padding:32px 22px 40px;
    }
    .login-box h2{font-size:26px;}
  }

  /* PIN + name steps */
  .pin-dots{display:flex; gap:16px; justify-content:center; margin:8px 0 28px;}
  .pin-dots span{width:16px; height:16px; border-radius:50%; border:2px solid #CFC9BC; transition:background .12s, border-color .12s;}
  .pin-dots span.on{background:#0A0A0A; border-color:#0A0A0A;}
  .pin-dots.shake{animation:pinShake .35s;}
  @keyframes pinShake{0%,100%{transform:translateX(0)}25%{transform:translateX(-8px)}75%{transform:translateX(8px)}}
  .pin-pad{display:grid; grid-template-columns:repeat(3,1fr); gap:10px; max-width:300px; margin:0 auto;}
  .pin-key{height:60px; border:1.5px solid #E1DDD3; background:#fff; border-radius:14px; font:600 22px 'Montserrat',sans-serif; color:#141413; cursor:pointer; -webkit-tap-highlight-color:transparent; touch-action:manipulation;}
  .pin-key:active{background:#EFEBE2;}
  .pin-key.alt{font-size:13px; font-weight:700; color:#6B6964; background:transparent; border-color:transparent;}
  .pin-pad.busy{opacity:.5; pointer-events:none;}
  .name-search{width:100%; height:46px; box-sizing:border-box; padding:0 14px; border:1.5px solid #DAD6CC; border-radius:12px; background:#fff; color:#141413; font:500 15px 'Montserrat',system-ui,sans-serif;}
  .name-search:focus{outline:none; border-color:#0A0A0A; box-shadow:0 0 0 4px rgba(201,162,90,.28);}
  .name-list{display:flex; flex-direction:column; gap:8px; max-height:46vh; overflow-y:auto; margin-top:12px;}
  .name-btn{display:flex; align-items:center; gap:12px; width:100%; padding:12px 14px; border:1.5px solid #E1DDD3; border-radius:12px; background:#fff; font:600 15px 'Montserrat',sans-serif; color:#141413; cursor:pointer; text-align:left;}
  .name-btn:hover{border-color:#0A0A0A;}
  .name-btn .av{width:34px; height:34px; border-radius:50%; background:#0A0A0A; color:#D9B56A; display:grid; place-items:center; font-size:12px; font-weight:800; flex:none;}
  .name-empty{font-size:13px; line-height:1.5; color:#6B6964; padding:16px; border:1.5px dashed #DAD6CC; border-radius:12px; text-align:center;}
  .link-btn{background:none; border:0; padding:0; margin-top:18px; font:600 13px 'Montserrat',sans-serif; color:#6B6964; cursor:pointer;}
  .link-btn:hover{color:#0A0A0A;}

  /* Settings */
  .emp-add{display:flex; gap:8px; margin-bottom:6px;}
  .emp-add input{flex:1; min-width:0; padding:10px 14px; border:1px solid var(--input-border); border-radius:999px; background:var(--input-bg); color:var(--text-primary); font-family:inherit; font-size:13px;}
  .emp-add input:focus{outline:none; border-color:var(--teal); box-shadow:0 0 0 3px var(--teal-dim);}
  .emp-add .btn{width:auto; margin:0; padding:10px 22px;}
  .emp-row{display:flex; justify-content:space-between; align-items:center; gap:10px; background:var(--card-bg); border:1px solid var(--card-border); border-radius:12px; padding:10px 14px; margin-bottom:8px; font-size:13.5px; font-weight:600;}
  .emp-row button{background:none; border:1px solid var(--card-border); color:var(--text-secondary); border-radius:999px; padding:5px 12px; font:600 11.5px 'Montserrat',sans-serif; cursor:pointer;}
  .emp-row button:hover{border-color:var(--danger); color:var(--danger);}
  .settings-sub{font-size:12px; color:var(--text-secondary); margin:0 0 12px;}
  .admin-box-header .icon-btn{background:none; border:0; color:var(--text-secondary); cursor:pointer;}
  .field input[readonly]{opacity:.8; cursor:not-allowed;}

  /* ===== TOP BAR ===== */
  .top-bar{
    max-width:1500px;
    margin:0 auto;
    padding:14px 20px 0;
    display:flex;
    align-items:center;
    justify-content:flex-end;
    gap:12px;
    font-size:12.5px;
    color:var(--text-secondary);
  }
  .top-bar .user-pill{
    background:var(--teal-dim);
    color:var(--teal);
    font-weight:700;
    padding:6px 14px;
    border-radius:999px;
  }
  .top-bar button{
    background:transparent; border:1px solid var(--card-border); border-radius:999px;
    padding:6px 14px; font-size:12px; font-weight:600; color:var(--text-secondary); cursor:pointer;
  }
  .top-bar button:hover{border-color:var(--teal); color:var(--teal);}

  /* ===== SYNC STATUS ===== */
  .sync-status{
    font-size:12px;
    font-weight:600;
    text-align:center;
    width:100%;
    min-height:16px;
    color:var(--text-secondary);
  }
  .sync-status.ok{color:var(--ok);}
  .sync-status.error{color:var(--danger);}
  .sync-status.pending{color:var(--teal);}

  /* ===== RECENT EXPORTS ===== */
  .recent-list{list-style:none; margin:0; padding:0;}
  .recent-list li{
    background:var(--card-bg);
    border:1px solid var(--card-border);
    border-radius:12px;
    padding:9px 12px;
    margin-bottom:6px;
    font-size:11.5px;
  }
  .recent-list li a{color:var(--teal); text-decoration:none; font-weight:700;}
  .recent-list .meta{color:var(--text-tertiary); display:block; margin-top:3px;}
  .backend-note{font-size:11px; color:var(--text-tertiary); margin-bottom:8px;}

  /* ===== ADMIN DASHBOARD ===== */
  .admin-overlay{
    position:fixed; inset:0;
    background:rgba(5,8,7,0.75);
    display:flex; align-items:center; justify-content:center;
    z-index:1100;
    padding:20px;
  }
  .admin-box{
    background:var(--panel-bg);
    border:1px solid var(--panel-border);
    border-radius:18px;
    width:100%;
    max-width:900px;
    max-height:85vh;
    display:flex;
    flex-direction:column;
    overflow:hidden;
    box-shadow:0 20px 60px rgba(0,0,0,.5);
  }
  .admin-box-header{
    display:flex; align-items:center; justify-content:space-between;
    padding:18px 22px 10px;
  }
  .admin-box-header h2{margin:0; font-size:17px; font-weight:800; color:var(--text-primary);}
  .admin-tabs{display:flex; gap:8px; padding:0 22px 12px;}
  .admin-tab{
    background:transparent; border:1px solid var(--card-border); color:var(--text-secondary);
    padding:7px 16px; border-radius:999px; font-size:12.5px; font-weight:700; cursor:pointer;
  }
  .admin-tab.active{background:var(--teal); color:var(--on-teal); border-color:var(--teal);}
  .admin-content{
    overflow-y:auto;
    padding:0 22px 22px;
    flex:1;
  }
  .admin-row{
    background:var(--card-bg);
    border:1px solid var(--card-border);
    border-radius:12px;
    padding:12px 14px;
    margin-bottom:10px;
  }
  .admin-row-top{display:flex; justify-content:space-between; align-items:baseline; gap:10px; flex-wrap:wrap;}
  .admin-row-name{font-weight:800; color:var(--text-primary); font-size:13.5px;}
  .admin-row-user{color:var(--teal); font-size:11px; font-weight:700; background:var(--teal-dim); padding:2px 9px; border-radius:999px;}
  .admin-row-meta{color:var(--text-secondary); font-size:11.5px; margin-top:4px;}
  .admin-row-amount{color:var(--teal); font-weight:800; font-size:13.5px;}
  .admin-row-detail-toggle{
    background:none; border:none; color:var(--text-tertiary); font-size:11px; font-weight:700;
    cursor:pointer; margin-top:8px; padding:0; text-decoration:underline;
  }
  .admin-row-detail{
    display:none;
    margin-top:10px;
    padding-top:10px;
    border-top:1px dashed var(--card-border);
    font-size:11.5px;
    color:var(--text-secondary);
  }
  .admin-row-detail.open{display:block;}
  .admin-row-detail table{width:100%; border-collapse:collapse; margin-top:6px;}
  .admin-row-detail th, .admin-row-detail td{
    border:1px solid var(--card-border); padding:4px 6px; text-align:center; font-size:10.5px;
  }
  .admin-row-detail th{background:rgba(47,230,198,0.1); color:var(--teal);}
