/* vlr69.css — VLR กรุงเทพมหานคร #69 (ย้ายจาก /bmaxsdg/web/2569/index.html) — ทุกกฎจำกัดขอบเขตไว้ใต้ .vlr เพื่อแสดงในเทมเพลตหลัก (ธีม pv2) */
.vlr{
    --paper:#faf8f4;
    --paper2:#f2efe8;
    --ink:#1c1d1a;
    --ink-soft:#5a5b54;
    --line:#ddd8cc;
    --blue:#0f3d5c;
    --blue-soft:#e7eef2;
    --accent:#c25b2c;
  }
  .vlr *{box-sizing:border-box;}
  .vlr,.vlr{margin:0;padding:0;}
  .vlr{
    background:var(--paper);
    color:var(--ink);
    font-family:'Sarabun',sans-serif;
    font-weight:400;
    line-height:1.55;
  }
  .vlr .mono{font-family:'IBM Plex Mono',monospace;}

  .vlr header.top{
    padding:28px 20px 22px;
    border-bottom:1px solid var(--line);
    background:linear-gradient(180deg,var(--paper2),var(--paper));
  }
  .vlr .eyebrow{
    font-family:'IBM Plex Mono',monospace;
    font-size:11px;
    letter-spacing:.14em;
    text-transform:uppercase;
    color:var(--blue);
    margin-bottom:8px;
  }
  .vlr h1{
    font-size:clamp(22px,4.5vw,32px);
    margin:0 0 6px;
    font-weight:700;
    letter-spacing:-.01em;
  }
  .vlr .sub{
    color:var(--ink-soft);
    font-size:14.5px;
    max-width:720px;
  }
  .vlr .stats-row{
    display:flex;
    gap:10px;
    margin-top:18px;
    flex-wrap:wrap;
  }
  .vlr .stat-chip{
    background:#fff;
    border:1px solid var(--line);
    border-radius:8px;
    padding:8px 14px;
    font-size:13px;
  }
  .vlr .stat-chip b{font-family:'IBM Plex Mono',monospace;font-size:16px;color:var(--blue);display:block;}

  .vlr main{max-width:1180px;margin:0 auto;padding:24px 20px 80px;}

  .vlr .controls{
    display:flex;
    gap:10px;
    flex-wrap:wrap;
    align-items:center;
    margin-bottom:22px;
    position:sticky;
    top:0;
    background:var(--paper);
    padding:12px 0;
    z-index:20;
    border-bottom:1px solid transparent;
  }
  .vlr .controls.stuck{border-bottom:1px solid var(--line);}
  .vlr select,.vlr input[type=text]{
    font-family:'Sarabun',sans-serif;
    font-size:14px;
    padding:9px 12px;
    border-radius:7px;
    border:1px solid var(--line);
    background:#fff;
    color:var(--ink);
  }
  .vlr input[type=text]{flex:1;min-width:180px;}
  .vlr .pill-btn{
    font-family:'IBM Plex Mono',monospace;
    font-size:11.5px;
    padding:8px 12px;
    border-radius:20px;
    border:1px solid var(--line);
    background:#fff;
    cursor:pointer;
    color:var(--ink-soft);
  }
  .vlr .pill-btn.active{background:var(--blue);border-color:var(--blue);color:#fff;}

  .vlr .goal-grid{
    display:grid;
    grid-template-columns:repeat(auto-fill,minmax(150px,1fr));
    gap:8px;
    margin-bottom:30px;
  }
  .vlr .goal-tile{
    border-radius:10px;
    padding:12px 12px 10px;
    color:#fff;
    cursor:pointer;
    position:relative;
    min-height:88px;
    display:flex;
    flex-direction:column;
    justify-content:space-between;
    border:2px solid transparent;
    transition:transform .12s ease;
  }
  .vlr .goal-tile:hover{transform:translateY(-2px);}
  .vlr .goal-tile.dim{opacity:.28;}
  .vlr .goal-tile.selected{border-color:var(--ink);}
  .vlr .goal-tile .gnum{font-family:'IBM Plex Mono',monospace;font-size:20px;font-weight:600;opacity:.9;}
  .vlr .goal-tile .gname{font-size:12px;line-height:1.3;font-weight:500;}
  .vlr .goal-tile .gcount{
    position:absolute;top:10px;right:10px;
    font-family:'IBM Plex Mono',monospace;
    font-size:11px;
    background:rgba(255,255,255,.25);
    padding:1px 7px;
    border-radius:10px;
  }

  .vlr .section-label{
    font-family:'IBM Plex Mono',monospace;
    font-size:11px;
    letter-spacing:.1em;
    text-transform:uppercase;
    color:var(--ink-soft);
    margin:26px 0 12px;
    display:flex;
    align-items:center;
    gap:10px;
  }
  .vlr .section-label::after{content:'';flex:1;height:1px;background:var(--line);}

  .vlr .proj-list{display:flex;flex-direction:column;gap:10px;}
  .vlr .proj-card{
    background:#fff;
    border:1px solid var(--line);
    border-left:5px solid var(--blue);
    border-radius:8px;
    padding:14px 16px;
    cursor:pointer;
    display:grid;
    grid-template-columns:auto 1fr auto;
    gap:14px;
    align-items:center;
  }
  .vlr .proj-card:hover{background:var(--blue-soft);}
  .vlr .proj-goalbadge{
    font-family:'IBM Plex Mono',monospace;
    font-size:12px;
    color:#fff;
    background:var(--blue);
    border-radius:6px;
    padding:4px 8px;
    white-space:nowrap;
    height:fit-content;
  }
  .vlr .proj-main .pname{font-weight:600;font-size:15px;margin-bottom:3px;}
  .vlr .proj-main .pmeta{font-size:12.5px;color:var(--ink-soft);}
  .vlr .proj-arrow{font-size:18px;color:var(--ink-soft);}

  .vlr .empty-note{
    font-size:13px;
    color:var(--ink-soft);
    padding:10px 14px;
    background:var(--paper2);
    border-radius:8px;
    border:1px dashed var(--line);
  }

  /* modal */
  .vlr .overlay{
    position:fixed;inset:0;background:rgba(20,20,18,.55);
    display:none;align-items:flex-start;justify-content:center;
    padding:30px 16px;overflow-y:auto;z-index:100;
  }
  .vlr .overlay.open{display:flex;}
  .vlr .modal{
    background:#fff;border-radius:14px;max-width:760px;width:100%;
    padding:0;overflow:hidden;
    box-shadow:0 30px 60px rgba(0,0,0,.3);
    animation:pop .18s ease;
  }
  @keyframes pop{from{transform:translateY(8px);opacity:0;}to{transform:translateY(0);opacity:1;}}
  .vlr .modal-head{
    padding:22px 26px 18px;
    color:#fff;
  }
  .vlr .modal-head .mgoal{font-family:'IBM Plex Mono',monospace;font-size:12px;opacity:.85;margin-bottom:6px;}
  .vlr .modal-head h2{margin:0 0 4px;font-size:20px;line-height:1.35;}
  .vlr .modal-head .mdept{font-size:13px;opacity:.9;}
  .vlr .modal-close{
    position:absolute;top:18px;right:20px;
    background:rgba(255,255,255,.2);border:none;color:#fff;
    width:30px;height:30px;border-radius:50%;cursor:pointer;font-size:16px;
  }
  .vlr .modal-body{padding:20px 26px 26px;}
  .vlr .mfield{margin-bottom:16px;}
  .vlr .mfield .flabel{
    font-family:'IBM Plex Mono',monospace;font-size:10.5px;text-transform:uppercase;
    letter-spacing:.08em;color:var(--accent);margin-bottom:5px;
  }
  .vlr .mfield .fval{font-size:14px;white-space:pre-line;}
  .vlr .mfield .fval.empty{color:#b7b3a6;font-style:italic;}
  .vlr .mgrid2{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
  @media(max-width:560px){.vlr .mgrid2{grid-template-columns:1fr;}}
  .vlr .tagrow{display:flex;flex-wrap:wrap;gap:6px;}
  .vlr .tag{
    background:var(--paper2);border:1px solid var(--line);
    border-radius:20px;padding:3px 10px;font-size:12px;
  }

  .vlr footer{
    text-align:center;padding:30px 20px 50px;
    color:var(--ink-soft);font-size:12px;
  }
