:root{
  --bg:#f5f4f0;--surface:#fff;--surface2:#f0efe9;
  --border:#e4e2da;--border2:#ccc9be;
  --text:#1a1916;--text2:#55524a;--text3:#9a9790;
  --green:#0d2d6e;--green-light:#e8eef9;--green-border:#a8bcdf;
  --red:#c0392b;--red-light:#fdf0ee;--red-border:#f0c4be;
  --amber:#a07010;--amber-light:#fdf6e3;--amber-border:#e8d08a;
  --blue:#1d5fa6;--blue-light:#eaf2fc;
  --r:10px;--rsm:6px;
}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent;}
body{background:var(--bg);color:var(--text);font-family:'Sarabun',sans-serif;font-size:15px;min-height:100vh;}


/* ── ACTIVITY LOG ── */
.log-popup{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:200;display:flex;align-items:flex-end;justify-content:center;}
.log-box{background:#fff;border-radius:16px 16px 0 0;width:100%;max-width:520px;max-height:75vh;display:flex;flex-direction:column;padding-bottom:env(safe-area-inset-bottom);}
.log-hdr{padding:16px 18px 12px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;}
.log-hdr h3{font-size:15px;font-weight:600;}
.log-list{overflow-y:auto;padding:10px 0;}
.log-row{display:flex;align-items:flex-start;gap:10px;padding:9px 18px;border-bottom:1px solid var(--border);}
.log-row:last-child{border-bottom:none;}
.log-badge{font-size:11px;font-weight:600;padding:3px 8px;border-radius:20px;white-space:nowrap;margin-top:1px;}
.log-badge.pass{background:#dcfce7;color:#16a34a;}
.log-badge.recheck{background:var(--amber-light);color:var(--amber);}
.log-badge.fail{background:var(--red-light);color:var(--red);}
.log-meta{font-size:12px;color:var(--text2);}
.log-meta span{color:var(--text3);font-size:11px;margin-left:6px;}
.log-empty{text-align:center;padding:30px;color:var(--text3);font-size:13px;}
/* username popup */
.uname-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:1100;display:flex;align-items:center;justify-content:center;padding:20px;}
.uname-box{background:#fff;border-radius:14px;padding:24px;width:100%;max-width:320px;text-align:center;}
.uname-box h3{font-size:17px;font-weight:600;margin-bottom:6px;}
.uname-box p{font-size:13px;color:var(--text3);margin-bottom:16px;}
.uname-inp{width:100%;border:1.5px solid var(--border);border-radius:var(--rsm);padding:10px 12px;font-size:15px;font-family:'Sarabun',sans-serif;outline:none;text-align:center;}
.uname-field{margin-top:10px;text-align:left;}
.uname-field label{display:block;font-size:12px;color:var(--text2);margin-bottom:4px;}
.uname-select{width:100%;border:1.5px solid var(--border);border-radius:var(--rsm);padding:10px 12px;font-size:14px;font-family:'Sarabun',sans-serif;background:#fff;}
.uname-inp:focus{border-color:#0d2d6e;}
.uname-btn{margin-top:12px;width:100%;padding:11px;background:#0d2d6e;color:#fff;border:none;border-radius:var(--rsm);font-size:15px;font-weight:600;cursor:pointer;font-family:'Sarabun',sans-serif;}

/* HEADER */
.hdr{background:#fff;border-bottom:1px solid #e4e2da;height:56px;display:flex;align-items:center;padding:0 16px;gap:10px;position:sticky;top:0;z-index:50;}
.hdr-logo{font-family:'Space Mono',monospace;font-size:13px;font-weight:700;color:#0d2d6e;letter-spacing:.05em;}
.hdr-proj{font-size:14px;font-weight:600;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:none;}
.hdr-proj.v{display:block;}
.hdr-logo.h{display:none;}
.hdr-stat{font-family:'Space Mono',monospace;font-size:11px;color:var(--text3);}
.ibtn{width:40px;height:40px;border:1px solid var(--border);border-radius:var(--rsm);background:transparent;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:18px;color:var(--text2);transition:background .15s;}
.ibtn:hover{background:var(--surface2);}
.back-btn{display:none;}
.back-btn.v{display:flex;}

/* LAYOUT */
.layout{display:flex;height:calc(100vh - 56px);}
.side{width:275px;flex-shrink:0;border-right:1px solid var(--border);background:var(--surface);display:flex;flex-direction:column;overflow:hidden;}
.detail{flex:1;overflow-y:auto;background:var(--bg);}

/* SIDEBAR */
.side-hdr{padding:14px 14px 10px;border-bottom:1px solid var(--border);}
.side-hdr h2{font-size:14px;font-weight:600;}
.side-hdr p{font-size:11px;color:var(--text3);margin-top:2px;}
.proj-scroll{flex:1;overflow-y:auto;padding:8px;}
.proj-scroll::-webkit-scrollbar{width:3px;}
.proj-scroll::-webkit-scrollbar-thumb{background:var(--border);}
.pcard{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:12px;margin-bottom:7px;cursor:pointer;transition:all .15s;}
.pcard:hover{border-color:var(--border2);background:var(--surface2);}
.pcard.active{border-color:var(--green-border);background:var(--green-light);}
.pcard-top{display:flex;align-items:flex-start;gap:7px;}
.pdot{width:8px;height:8px;border-radius:50%;flex-shrink:0;margin-top:5px;}
.pdot.done{background:var(--green);}
.pdot.prog{background:var(--amber);}
.pdot.issue{background:var(--red);}
.pdot.pend{background:var(--border2);}
.pname{font-size:13px;font-weight:500;flex:1;line-height:1.4;}
.pdel{width:26px;height:26px;border:none;background:transparent;cursor:pointer;color:var(--text3);font-size:16px;border-radius:4px;display:flex;align-items:center;justify-content:center;transition:all .15s;margin-top:-2px;}
.pdel:hover{background:var(--red-light);color:var(--red);}
.pedit{width:26px;height:26px;border:none;background:transparent;cursor:pointer;color:var(--text3);font-size:14px;border-radius:4px;display:flex;align-items:center;justify-content:center;transition:all .15s;margin-top:-2px;}
.pedit:hover{background:var(--blue-light);color:var(--blue);}
.pmeta{font-size:11px;color:var(--text3);margin-top:3px;padding-left:15px;}
.pbar-row{display:flex;align-items:center;gap:7px;margin-top:8px;}
.mbar{flex:1;height:4px;background:var(--border);border-radius:2px;overflow:hidden;}
.mfill{height:100%;border-radius:2px;transition:width .3s;}
.mfill.done{background:#16a34a;}
.mfill.prog{background:var(--amber);}
.mfill.issue{background:var(--red);}
.mfill.pend{background:var(--border2);}
.mpct{font-family:'Space Mono',monospace;font-size:10px;color:var(--text3);min-width:28px;text-align:right;}
.add-btn{margin:8px;padding:11px;background:transparent;border:1.5px dashed var(--border2);color:var(--text3);font-family:'Sarabun',sans-serif;font-size:13px;border-radius:var(--r);cursor:pointer;width:calc(100% - 16px);display:flex;align-items:center;justify-content:center;gap:7px;transition:all .2s;}
.add-btn:hover{border-color:var(--green-border);color:var(--green);background:var(--green-light);}


/* SUB-PROJECTS */
.pcard-parent{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);margin-bottom:4px;}
.pcard-parent-hdr{display:flex;align-items:center;gap:7px;padding:11px 12px;cursor:pointer;transition:background .15s;border-radius:var(--r);}
.pcard-parent-hdr:hover{background:var(--surface2);}
.pcard-parent-hdr.active-parent{background:var(--green-light);}
.pcard-title-line,.pchild-title-line{display:grid;grid-template-columns:minmax(0,1fr) max-content;align-items:center;gap:7px;min-width:0;width:100%;}
.pcard-title,.pchild-title{font-weight:700;color:var(--text);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.pcard-title{font-size:13px;}
.pchild-title{font-size:12px;}
.pcard-actions{display:flex;align-items:center;gap:4px;flex-shrink:0;margin-left:auto;}
.parent-toggle{font-size:12px;color:var(--text3);transition:transform .2s;flex-shrink:0;}
.parent-toggle.open{transform:rotate(90deg);}
.pchildren{padding:0 6px 6px 22px;display:none;}
.pchildren.open{display:block;}
.pchild-card{background:var(--surface2);border:1px solid var(--border);border-radius:var(--rsm);padding:9px 10px;margin-bottom:5px;cursor:pointer;transition:all .15s;display:flex;align-items:center;gap:7px;}
.pchild-card:hover{border-color:var(--border2);background:#eeede7;}
.pchild-card.active{border-color:var(--green-border);background:var(--green-light);}
.pchild-card[draggable="true"],.status-list-item[draggable="true"]{cursor:grab;}
.pchild-card.dragging,.status-list-item.dragging{opacity:.42;cursor:grabbing;}
.pchild-card.drag-over,.status-list-item.drag-over{outline:2px dashed var(--green);outline-offset:2px;}
.plan-badge{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:999px;padding:3px 8px;font-size:10px;font-weight:700;white-space:nowrap;background:var(--surface2);color:var(--text3);}
.pcard-title-line .plan-badge,.pchild-title-line .plan-badge{justify-self:end;}
.plan-badge.ahead{background:#e8f8ef;border-color:#a9dfbf;color:#16834f;}
.plan-badge.ontrack{background:#eaf3ff;border-color:#b9d6ff;color:#0b67f6;}
.plan-badge.risk{background:#fff7e6;border-color:#f3cf8f;color:#b7791f;}
.plan-badge.urgent{background:#ffebeb;border-color:#ffc6c6;color:#dc3545;}
.plan-badge.muted{background:#f5f7f7;border-color:var(--border);color:var(--text3);}
.plan-badge.bf-plan{width:max-content;max-width:130px;overflow:hidden;text-overflow:ellipsis;}
.parchive,.archive-restore{border:1px solid var(--border);border-radius:999px;background:var(--surface2);color:var(--text3);font-family:'Sarabun',sans-serif;font-size:10px;font-weight:700;padding:3px 8px;cursor:pointer;white-space:nowrap;}
.parchive:hover,.archive-restore:hover{border-color:var(--green-border);background:var(--green-light);color:var(--green);}
.archive-box{border:1px dashed var(--border2);border-radius:var(--r);padding:9px;margin-top:10px;background:rgba(255,255,255,.45);}
.archive-title{display:flex;align-items:center;justify-content:space-between;font-size:11px;font-weight:700;color:var(--text3);margin-bottom:7px;}
.archive-title span{font-family:'Space Mono',monospace;}
.archive-card{display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--border);border-radius:var(--rsm);padding:8px 9px;margin-bottom:6px;}
.archive-card:last-child{margin-bottom:0;}
.archive-info{flex:1;min-width:0;}
.archive-info b{display:block;font-size:12px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.archive-info small{display:block;font-size:10px;color:var(--text3);margin-top:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.pchild-name{font-size:12px;font-weight:500;flex:1;min-width:0;line-height:1.3;}
.pchild-pct{font-family:'Space Mono',monospace;font-size:10px;color:var(--text3);}
.pchild-pct.done{color:#16a34a;font-weight:700;}
.add-sub-btn{font-size:11px;padding:4px 10px;border:1px dashed var(--border2);border-radius:var(--rsm);background:transparent;color:var(--text3);cursor:pointer;margin-top:2px;font-family:'Sarabun',sans-serif;transition:all .15s;}
.add-sub-btn:hover{border-color:var(--green-border);color:var(--green);background:var(--green-light);}


/* GROUP BLOCK */
.grp-block{display:block;border-bottom:1px solid var(--border);}
.grp-block:last-child{border-bottom:none;}
.grp-items{flex:1;min-width:0;}

/* DETAIL */
.d-inner{padding:18px;max-width:800px;margin:0 auto;}
.empty-st{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;gap:10px;text-align:center;padding:24px;}
.empty-st .ei{font-size:44px;opacity:.18;}
.empty-st h3{font-size:20px;font-weight:600;color:var(--text2);}
.empty-st p{font-size:14px;color:var(--text3);max-width:260px;line-height:1.7;}
.ecta{margin-top:8px;padding:12px 24px;background:#0d2d6e;color:#fff;border:none;border-radius:var(--r);font-family:'Sarabun',sans-serif;font-size:14px;font-weight:500;cursor:pointer;}

/* SUMMARY CARD */
.sum-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:16px 18px;margin-bottom:14px;}
.sum-top{display:flex;align-items:flex-start;gap:10px;margin-bottom:12px;}
.sum-info{flex:1;}
.sum-info h2{font-size:17px;font-weight:600;}
.sum-info p{font-size:12px;color:var(--text3);margin-top:2px;}
.sbadge{font-family:'Space Mono',monospace;font-size:10px;padding:4px 10px;border-radius:20px;border:1px solid;white-space:nowrap;}
.sbadge.done{background:var(--green-light);border-color:var(--green-border);color:var(--green);}
.sbadge.issue{background:var(--red-light);border-color:var(--red-border);color:var(--red);}
.sbadge.prog{background:var(--amber-light);border-color:var(--amber-border);color:var(--amber);}
.sbadge.pend{background:var(--surface2);border-color:var(--border);color:var(--text3);}
.main-bar{height:6px;background:var(--border);border-radius:3px;overflow:hidden;}
.main-fill{height:100%;border-radius:3px;transition:width .4s;}
.main-fill.done{background:#16a34a;}
.main-fill.prog{background:var(--amber);}
.main-fill.issue{background:var(--red);}
.snums{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:12px;}
.snum{background:var(--surface2);border-radius:var(--rsm);padding:10px;text-align:center;}
.sn{font-family:'Space Mono',monospace;font-size:18px;font-weight:700;}
.sn.g{color:#16a34a;}
.sn.r{color:var(--red);}
.sl{font-size:11px;color:var(--text3);margin-top:2px;}

/* PHASE */
.phase{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);margin-bottom:10px;overflow:hidden;}
.ph-hdr{display:flex;align-items:center;gap:9px;padding:13px 15px;cursor:pointer;user-select:none;transition:background .15s;}
.ph-hdr:hover{background:var(--surface2);}
.ph-num{font-family:'Space Mono',monospace;font-size:10px;color:var(--text3);width:18px;flex-shrink:0;}
.ph-icon{font-size:15px;width:18px;text-align:center;flex-shrink:0;}
.ph-title{font-size:14px;font-weight:600;flex:1;}
.ph-cnt{font-family:'Space Mono',monospace;font-size:11px;color:var(--text3);}
.ph-chev{font-size:12px;color:var(--text3);transition:transform .2s;margin-left:4px;}
.ph-chev.o{transform:rotate(90deg);}
.ph-body{border-top:1px solid var(--border);}

/* GROUP HEADER (horizontal) */
.grp-hdr{display:flex;align-items:center;gap:8px;padding:7px 15px 6px;border-bottom:1px solid var(--border);}
.grp-hdr-name{font-size:11px;font-weight:700;letter-spacing:.06em;color:#fff;}
.grp-hdr-range{font-family:'Space Mono',monospace;font-size:10px;color:rgba(255,255,255,.75);margin-left:auto;}
.grp-hdr-pct{font-family:'Space Mono',monospace;font-size:10px;color:rgba(255,255,255,.85);padding-left:8px;}
/* CHECK ROW */
.crow{display:flex;gap:10px;padding:12px 15px;border-bottom:1px solid var(--border);}
.crow:last-child{border-bottom:none;}
.crow.locked-row{background:#f6f5f2;opacity:.72;}
.crow.focus-flash{animation:focusFlash 1.45s ease-out;}
@keyframes focusFlash{0%,65%{background:rgba(11,103,246,.16);box-shadow:0 0 0 2px rgba(11,103,246,.24);border-radius:var(--rsm);}100%{background:transparent;box-shadow:none;}}
.step-lock{font-size:11px;color:var(--red);margin-top:6px;padding:6px 8px;background:var(--red-light);border-radius:4px;}
.crow-num{font-family:'Space Mono',monospace;font-size:10px;color:var(--text3);min-width:22px;margin-top:3px;}
.crow-main{flex:1;min-width:0;}
.crow-label{font-size:14px;font-weight:500;line-height:1.5;}
.crow-sub{font-size:12px;color:var(--text3);margin-top:1px;}
/* RESULT BUTTONS */
.result-row{display:flex;gap:5px;margin-top:8px;flex-wrap:nowrap;align-items:center;overflow-x:auto;}
.rbtn{font-size:12px;padding:5px 11px;border-radius:var(--rsm);border:1px solid var(--border);cursor:pointer;font-family:'Sarabun',sans-serif;font-weight:500;transition:all .15s;display:flex;align-items:center;gap:4px;background:var(--surface2);color:var(--text3);}
.rbtn.pass:hover{background:#dcfce7;border-color:#86efac;color:#16a34a;}
.rbtn.pass.sel{background:#16a34a;color:#fff;border-color:#16a34a;}
.rbtn.fail:hover{background:var(--red-light);border-color:var(--red-border);color:var(--red);}
.rbtn.fail.sel{background:var(--red);color:#fff;border-color:var(--red);}
.rbtn.recheck:hover{background:var(--amber-light);border-color:var(--amber-border);color:var(--amber);}
.rbtn.recheck.sel{background:var(--amber);color:#fff;border-color:var(--amber);}
.rbtn.photo{background:var(--surface2);border-color:var(--border);color:var(--text3);}
.rbtn.photo:hover{background:var(--blue-light);border-color:#c0d8f2;color:var(--blue);}
/* NOTE INPUT */
.note-wrap{margin-top:7px;}
.note-inp{width:100%;background:var(--surface2);border:1px solid var(--border);color:var(--text);font-family:'Sarabun',sans-serif;font-size:13px;padding:8px 11px;border-radius:var(--rsm);outline:none;resize:none;line-height:1.5;}
.note-inp:focus{border-color:var(--green);}
.note-row{display:flex;gap:6px;margin-top:5px;}
.note-save{font-size:12px;padding:5px 12px;background:var(--green);color:#fff;border:none;border-radius:var(--rsm);cursor:pointer;font-family:'Sarabun',sans-serif;font-weight:500;}
.saved-note{font-size:12px;margin-top:6px;padding:7px 10px;background:var(--amber-light);border:1px solid var(--amber-border);border-radius:var(--rsm);color:var(--amber);line-height:1.5;}
.saved-note.red{background:var(--red-light);border-color:var(--red-border);color:var(--red);}
.reviewer-note{font-size:12px;margin-top:5px;padding:7px 10px;background:var(--blue-light);border:1px solid #c0d8f2;border-radius:var(--rsm);color:var(--blue);line-height:1.5;}
.mh3d-scan-banner{display:flex;align-items:center;justify-content:space-between;gap:10px;background:#eaf3ff;border:1px solid #b9d6ff;border-radius:var(--r);padding:10px 12px;margin:-4px 0 12px;color:#0b3f91;}
.mh3d-scan-banner b{display:block;font-size:12px;}
.mh3d-scan-banner span{display:block;font-size:11px;margin-top:2px;overflow-wrap:anywhere;}
.mh3d-scan-banner button{border:1px solid #b9d6ff;background:#fff;color:#0b67f6;border-radius:999px;padding:5px 10px;font-family:'Sarabun',sans-serif;font-size:11px;font-weight:700;cursor:pointer;white-space:nowrap;}
.mh3d-parts-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:10px 12px;margin:0 0 12px;}
.mh3d-parts-head{display:flex;align-items:center;justify-content:space-between;gap:10px;}
.mh3d-parts-head b{display:block;font-size:13px;color:var(--text);}
.mh3d-parts-head span{display:block;font-size:11px;color:var(--text3);margin-top:1px;}
.mh3d-parts-head button{border:1px solid #b9d6ff;background:#eaf3ff;color:#0b67f6;border-radius:999px;padding:5px 10px;font-family:'Sarabun',sans-serif;font-size:11px;font-weight:700;cursor:pointer;white-space:nowrap;}
.mh3d-parts-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end;}
.mh3d-parts-note{margin-top:8px;font-size:12px;color:#0b67f6;background:#f7fbff;border:1px solid #c8d8e8;border-radius:var(--rsm);padding:7px 9px;}
.mh3d-parts-dropdown{margin-top:9px;border:1px solid var(--border);background:var(--surface2);border-radius:var(--rsm);overflow:hidden;}
.mh3d-parts-dropdown summary{list-style:none;display:flex;align-items:center;gap:8px;cursor:pointer;padding:9px 11px;font-size:12px;font-weight:700;color:var(--text);}
.mh3d-parts-dropdown summary::-webkit-details-marker{display:none;}
.mh3d-parts-dropdown summary::after{content:'›';margin-left:auto;font-size:18px;color:var(--text3);transition:transform .15s;}
.mh3d-parts-dropdown[open] summary{border-bottom:1px solid var(--border);background:#f7fbff;}
.mh3d-parts-dropdown[open] summary::after{transform:rotate(90deg);}
.mh3d-parts-dropdown summary span{font-family:'Space Mono',monospace;font-size:11px;color:#0b67f6;background:#eaf3ff;border:1px solid #b9d6ff;border-radius:999px;padding:2px 7px;}
.mh3d-part-list{margin-top:9px;display:flex;flex-direction:column;gap:6px;}
.mh3d-parts-dropdown .mh3d-part-list{margin:0;padding:8px;max-height:420px;overflow:auto;}
.mh3d-part-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:8px;border:1px solid var(--border);background:var(--surface2);border-radius:var(--rsm);padding:8px 9px;cursor:pointer;}
.mh3d-part-row.active{border-color:#7db7ff;background:#eef6ff;box-shadow:inset 3px 0 0 #0b67f6;}
.mh3d-part-row b{display:block;font-size:12px;color:var(--text);overflow-wrap:anywhere;}
.mh3d-part-row small{display:block;font-size:10px;color:var(--text3);margin-top:1px;overflow-wrap:anywhere;}
.mh3d-part-row em{display:inline-block;margin-top:4px;font-style:normal;font-size:10px;font-weight:700;border-radius:999px;padding:2px 7px;background:var(--surface);border:1px solid var(--border);color:var(--text3);}
.mh3d-part-row em.progress{background:#eaf3ff;border-color:#b9d6ff;color:#0b67f6;}
.mh3d-part-row em.done{background:#dcfce7;border-color:#bbf7d0;color:#16a34a;}
.mh3d-part-row em.fail{background:var(--red-light);border-color:var(--red-border);color:var(--red);}
.mh3d-part-row span{font-family:'Space Mono',monospace;font-size:11px;color:var(--blue);font-weight:700;white-space:nowrap;}
.mh3d-part-row button{width:26px;height:26px;border:0;background:transparent;color:var(--text3);font-size:18px;line-height:1;cursor:pointer;}
.mh3d-parts-empty{margin-top:8px;font-size:12px;color:var(--text3);background:var(--surface2);border:1px dashed var(--border2);border-radius:var(--rsm);padding:9px;}
.mh3d-bind-info{background:#f7fbff;border:1px solid #c8d8e8;border-radius:var(--rsm);padding:10px 12px;margin-bottom:14px;font-size:12px;color:var(--text2);line-height:1.6;overflow-wrap:anywhere;}
.mh3d-bind-info b{color:var(--text);}
.mh3d-bind-note{margin-top:6px;color:#0b67f6;font-weight:700;}
.part-qc-box{margin-top:8px;border:1px solid #c8d8e8;background:#f7fbff;border-radius:var(--rsm);padding:8px 10px;}
.part-qc-box.part-focus-flash{animation:partFocusFlash 1.65s ease-out;}
@keyframes partFocusFlash{0%,72%{border-color:#0b67f6;background:#eaf3ff;box-shadow:0 0 0 3px rgba(11,103,246,.18);}100%{border-color:#c8d8e8;background:#f7fbff;box-shadow:none;}}
.part-qc-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;font-size:12px;font-weight:700;color:#0b3f91;flex-wrap:wrap;}
.part-status-stats{display:flex;gap:5px;flex-wrap:wrap;justify-content:flex-end;}
.part-status-stats span{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--border);background:#fff;border-radius:999px;padding:2px 7px;font-size:11px;font-weight:700;color:var(--text3);}
.part-status-stats b{font-family:'Space Mono',monospace;font-size:12px;color:inherit;}
.part-status-stats .pass{border-color:#bbf7d0;background:#dcfce7;color:#16a34a;}
.part-status-stats .fail,.part-status-stats .open,.part-status-stats .blocked{border-color:var(--red-border);background:var(--red-light);color:var(--red);}
.part-status-stats .waiting{border-color:#f2cf80;background:#fff8e6;color:#9a6200;}
.part-status-stats .pending{border-color:#c0d8f2;background:var(--blue-light);color:var(--blue);}
.part-qc-meta,.part-hint{font-size:11px;color:var(--text3);margin-top:3px;}
.part-active-row{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-top:7px;}
.part-active-name{font-size:12px;color:var(--text2);margin-right:auto;}
.part-check-btn{border:1px solid var(--border);background:#fff;border-radius:999px;padding:4px 9px;font-family:'Sarabun',sans-serif;font-size:11px;font-weight:700;cursor:pointer;color:var(--text2);}
.part-check-btn.pass:hover,.part-check-btn.pass.sel{background:#16a34a;border-color:#16a34a;color:#fff;}
.part-check-btn.fail:hover,.part-check-btn.fail.sel{background:var(--red);border-color:var(--red);color:#fff;}
.part-check-btn.photo:hover{background:#eef6ff;border-color:#b9d6ff;color:#0b67f6;}
.part-check-btn.issue:hover{background:var(--red-light);border-color:var(--red-border);color:var(--red);}
.part-check-btn:disabled{cursor:not-allowed;opacity:.48;background:#f1f4f7!important;border-color:#d6dee6!important;color:#7b8794!important;}
.part-result-blocked,.part-result-waiting{margin-top:8px;padding:8px 10px;border:1px solid;border-radius:8px;font-size:11px;font-weight:700;line-height:1.45;}
.part-result-blocked{border-color:var(--red-border);background:var(--red-light);color:var(--red);}
.part-result-waiting{border-color:#f2cf80;background:#fff8e6;color:#8a5900;}
.part-note{margin-top:7px;}
.part-note-btn{margin-top:7px;border:1px dashed var(--border2);background:var(--surface);color:var(--text3);border-radius:var(--rsm);padding:4px 9px;font-family:'Sarabun',sans-serif;font-size:11px;font-weight:700;cursor:pointer;}
.part-issues{margin-top:7px;}
.part-issue-label{font-size:11px;font-weight:700;color:#0b67f6;background:#eaf3ff;border:1px solid #c9dfff;border-radius:999px;display:inline-block;padding:2px 7px;margin:3px 0;}
.part-issue-summary{margin-top:7px;border:1px solid var(--red-border);background:#fff7f7;border-radius:var(--rsm);overflow:hidden;}
.part-issue-summary summary{list-style:none;display:flex;align-items:center;gap:6px;cursor:pointer;padding:7px 10px;font-size:12px;font-weight:700;color:var(--red);}
.part-issue-summary summary::-webkit-details-marker{display:none;}
.part-issue-summary summary::after{content:'›';margin-left:auto;font-size:16px;color:var(--text3);transition:transform .15s;}
.part-issue-summary[open] summary{border-bottom:1px solid var(--red-border);}
.part-issue-summary[open] summary::after{transform:rotate(90deg);}
.part-issue-summary summary span{font-family:'Space Mono',monospace;font-size:11px;color:var(--red);background:#fff;border:1px solid var(--red-border);border-radius:999px;padding:1px 7px;}
.part-issue-summary-counts{display:flex;gap:6px;flex-wrap:wrap;padding:7px 10px;border-bottom:1px solid var(--red-border);}
.part-issue-summary-counts span{font-size:11px;font-weight:700;border:1px solid var(--border);background:#fff;border-radius:999px;padding:2px 7px;color:var(--text3);}
.part-issue-summary-counts .open{border-color:var(--red-border);color:var(--red);background:var(--red-light);}
.part-issue-summary-counts .wait{border-color:#c0d8f2;color:var(--blue);background:var(--blue-light);}
.part-issue-summary-list{display:flex;flex-direction:column;}
.part-issue-summary-row{display:flex;gap:8px;align-items:flex-start;justify-content:space-between;padding:8px 10px;background:rgba(255,255,255,.55);}
.part-issue-summary-row+.part-issue-summary-row{border-top:1px solid var(--red-border);}
.part-issue-summary-row b{font-size:12px;color:var(--text);}
.part-issue-summary-row span{display:inline-block;margin-left:5px;font-size:10px;font-weight:700;border-radius:999px;padding:1px 6px;background:#fff;border:1px solid var(--border);color:var(--text3);}
.part-issue-summary-row span.open{border-color:var(--red-border);color:var(--red);background:var(--red-light);}
.part-issue-summary-row span.wait{border-color:#c0d8f2;color:var(--blue);background:var(--blue-light);}
.part-issue-summary-row span.done{border-color:#bbf7d0;color:#16a34a;background:#dcfce7;}
.part-issue-summary-row p{font-size:12px;line-height:1.45;margin:3px 0 0;color:var(--text);}
.part-issue-summary-row small{display:block;font-size:11px;color:var(--text3);margin-top:2px;}
.part-issue-summary-row button{flex:0 0 auto;border:1px solid #b9d6ff;background:#fff;color:#0b67f6;border-radius:999px;padding:4px 9px;font-family:'Sarabun',sans-serif;font-size:11px;font-weight:700;cursor:pointer;white-space:nowrap;}
.step-lock.part-mode{background:#eef6ff;border:1px solid #c9ddf4;color:#0b67f6;}
.step-issues{margin-top:6px;border:1px solid var(--red-border);background:var(--red-light);border-radius:var(--rsm);overflow:hidden;}
.step-issues summary{list-style:none;cursor:pointer;padding:6px 10px;font-size:12px;font-weight:600;color:var(--red);display:flex;align-items:center;gap:6px;line-height:1.35;min-height:34px;}
.step-issues summary::-webkit-details-marker{display:none;}
.step-issues summary::after{content:'ดูรายละเอียด';margin-left:auto;font-size:11px;font-weight:500;color:var(--text3);white-space:nowrap;}
.step-issues[open] summary{border-bottom:1px solid var(--red-border);}
.step-issues[open] summary::after{content:'ย่อ';}
.step-issue-row{padding:8px 10px;font-size:12px;line-height:1.55;color:var(--text);background:rgba(255,255,255,.35);}
.step-issue-row+.step-issue-row{border-top:1px solid var(--red-border);}
.step-issue-row.closed{background:rgba(255,255,255,.55);opacity:.82;}
.step-issue-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;}
.step-issue-status{font-weight:700;white-space:nowrap;}
.step-issue-actions{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px;}
.step-issue-mini-btn{font-size:11px;padding:3px 8px;border:1px solid #c0d8f2;background:var(--blue-light);color:var(--blue);border-radius:var(--rsm);font-family:'Sarabun',sans-serif;font-weight:600;cursor:pointer;}
.step-issue-mini-btn:hover{filter:brightness(.98);}
.photo-dropdown{margin-top:7px;border:1px solid var(--border);background:var(--surface2);border-radius:var(--rsm);overflow:hidden;max-width:420px;}
.photo-dropdown summary{list-style:none;display:flex;align-items:center;gap:6px;cursor:pointer;padding:7px 10px;font-size:12px;font-weight:700;color:var(--text2);}
.photo-dropdown summary::-webkit-details-marker{display:none;}
.photo-dropdown summary::after{content:'›';margin-left:auto;font-size:16px;color:var(--text3);transition:transform .15s;}
.photo-dropdown[open] summary{border-bottom:1px solid var(--border);background:#f7fbff;}
.photo-dropdown[open] summary::after{transform:rotate(90deg);}
.photo-dropdown summary span{font-family:'Space Mono',monospace;font-size:11px;color:#0b67f6;background:#eaf3ff;border:1px solid #b9d6ff;border-radius:999px;padding:1px 7px;}
.photo-list{display:flex;flex-direction:column;gap:4px;padding:7px;}
.photo-list-row{display:flex;align-items:center;gap:6px;}
.photo-list-row button{border:1px solid var(--border);background:#fff;border-radius:var(--rsm);padding:5px 8px;font-family:'Sarabun',sans-serif;font-size:12px;color:var(--text2);cursor:pointer;text-align:left;}
.photo-list-row button:first-child{flex:1;}
.photo-list-row .photo-list-delete{flex:0 0 auto;color:var(--red);border-color:var(--red-border);background:var(--red-light);font-weight:700;}
.photo-viewer{position:fixed;inset:0;z-index:99999;display:none;align-items:center;justify-content:center;background:rgba(2,8,23,.86);padding:18px;}
.photo-viewer img{max-width:100%;max-height:92vh;border-radius:8px;object-fit:contain;box-shadow:0 18px 48px rgba(0,0,0,.35);}
.photo-viewer-close{position:fixed;top:14px;right:14px;width:38px;height:38px;border:0;border-radius:50%;background:rgba(255,255,255,.92);color:#0f172a;font-size:24px;line-height:38px;cursor:pointer;}

/* ISSUE LOG */
.issue-log{margin-top:14px;}
.shdr{font-family:'Space Mono',monospace;font-size:10px;letter-spacing:.12em;color:var(--text3);text-transform:uppercase;margin-bottom:9px;display:flex;align-items:center;gap:8px;}
.shdr::after{content:'';flex:1;height:1px;background:var(--border);}
.icard{background:var(--surface);border:1px solid var(--red-border);border-radius:var(--r);padding:12px;margin-bottom:7px;display:flex;gap:9px;align-items:flex-start;}
.icard.issue-focus-card{cursor:pointer;transition:border-color .15s,box-shadow .15s,transform .15s;}
.icard.issue-focus-card:hover{border-color:var(--red);box-shadow:0 3px 10px rgba(185,28,28,.09);transform:translateY(-1px);}
.idot{width:6px;height:6px;border-radius:50%;background:var(--red);flex-shrink:0;margin-top:5px;}
.ibody{flex:1;}
.iphase{font-size:11px;color:var(--text3);margin-bottom:2px;}
.idesc{font-size:13px;line-height:1.5;}
.res-btn{font-size:12px;padding:5px 11px;border:1px solid var(--border2);border-radius:var(--rsm);background:transparent;color:var(--text3);cursor:pointer;white-space:nowrap;transition:all .15s;font-family:'Sarabun',sans-serif;}
.res-btn:hover{border-color:var(--green-border);color:var(--green);background:var(--green-light);}
.no-issue{font-size:13px;color:var(--text3);padding:6px 0;}

/* MODAL */
.mbg{position:fixed;inset:0;background:rgba(0,0,0,.32);z-index:200;display:flex;align-items:flex-end;justify-content:center;}
@media(min-width:600px){.mbg{align-items:center;padding:20px;}}
.modal{background:var(--surface);width:100%;max-width:480px;border-radius:14px 14px 0 0;padding:22px 18px calc(env(safe-area-inset-bottom,0px) + 22px);max-height:90vh;overflow-y:auto;}
@media(min-width:600px){.modal{border-radius:var(--r);padding:26px;}}
.modal h3{font-size:17px;font-weight:600;margin-bottom:18px;}
.fg{margin-bottom:14px;}
.fg label{font-size:11px;font-weight:600;letter-spacing:.05em;color:var(--text2);display:block;margin-bottom:5px;text-transform:uppercase;}
.fg input,.fg select,.fg textarea{width:100%;background:var(--surface2);border:1.5px solid var(--border);color:var(--text);font-family:'Sarabun',sans-serif;font-size:15px;padding:10px 13px;border-radius:var(--rsm);outline:none;transition:border-color .2s;-webkit-appearance:none;appearance:none;}
.fg input:focus,.fg select:focus,.fg textarea:focus{border-color:var(--green);}
.fg select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23999' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 13px center;padding-right:34px;}
.macts{display:flex;gap:9px;margin-top:4px;}
.mbtn{flex:1;padding:12px;border-radius:var(--rsm);font-family:'Sarabun',sans-serif;font-size:15px;font-weight:600;cursor:pointer;border:1.5px solid;transition:all .2s;}
.mbtn.pri{background:#0d2d6e;color:#fff;border-color:#0d2d6e;}
.mbtn.pri:hover{opacity:.88;}
.mbtn.ghost{background:transparent;color:var(--text3);border-color:var(--border);}

/* CONFIRM */
.confirm-box{background:var(--surface);border-radius:var(--r);padding:22px;width:310px;max-width:90vw;text-align:center;}
.confirm-box h4{font-size:16px;font-weight:600;margin-bottom:7px;}
.confirm-box p{font-size:13px;color:var(--text3);margin-bottom:18px;line-height:1.6;}
.conf-acts{display:flex;gap:9px;}
.cdel{flex:1;padding:11px;border-radius:var(--rsm);font-family:'Sarabun',sans-serif;font-size:14px;font-weight:600;cursor:pointer;border:1.5px solid;transition:all .2s;}
.cdel.danger{background:var(--red);color:#fff;border-color:var(--red);}
.cdel.cancel{background:transparent;color:var(--text3);border-color:var(--border);}

/* ── AUTH OVERLAY ── */
.auth-overlay{position:fixed;inset:0;background:var(--bg);z-index:1000;display:flex;align-items:center;justify-content:center;padding:20px;}
.auth-box{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:40px 36px;max-width:400px;width:100%;text-align:center;box-shadow:0 8px 40px rgba(0,0,0,.08);}
.auth-logo{font-family:'Space Mono',monospace;font-size:22px;font-weight:700;color:var(--green);letter-spacing:.05em;margin-bottom:6px;}
.auth-sub{font-size:13px;color:var(--text3);margin-bottom:32px;}
.auth-google-btn{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;padding:13px;border:1.5px solid var(--border);border-radius:var(--r);background:var(--surface);cursor:pointer;font-family:'Sarabun',sans-serif;font-size:14px;font-weight:600;color:var(--text);transition:all .2s;}
.auth-google-btn:hover{border-color:var(--green);background:var(--green-light);}
.auth-google-btn img{width:20px;height:20px;}
.auth-loading{font-size:13px;color:var(--text3);margin-top:16px;}
.auth-pending{background:var(--amber-light);border:1px solid var(--amber-border);border-radius:var(--r);padding:16px;margin-top:16px;font-size:13px;color:var(--amber);line-height:1.6;}
.auth-profile-btn{display:block;width:100%;margin-top:10px;padding:9px 12px;border:1px solid var(--amber-border);border-radius:var(--rsm);background:var(--surface);color:var(--amber);font-family:'Sarabun',sans-serif;font-size:12px;font-weight:600;cursor:pointer;}

/* ── ROLE BADGE ── */
.role-badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:20px;font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;}
.role-admin{background:#e8eef9;color:var(--blue);}
.role-staff{background:var(--green-light);color:var(--green);}
.role-supervisor{background:var(--amber-light);color:var(--amber);}
.role-pending{background:var(--amber-light);color:var(--amber);}

/* ── USER MENU (header avatar) ── */
.usr-avatar{width:34px;height:34px;border-radius:50%;border:2px solid var(--border);cursor:pointer;object-fit:cover;flex-shrink:0;}
.usr-avatar:hover{border-color:var(--green);}
.mh3d-request-btn{position:relative;width:auto;min-width:42px;padding:0 10px;font-size:11px;font-weight:800;color:#0b67f6;}
.mh3d-request-btn span{position:absolute;top:-5px;right:-5px;min-width:17px;height:17px;padding:0 4px;border-radius:999px;background:var(--red);color:#fff;font-size:10px;line-height:17px;font-family:'Space Mono',monospace;}
.usr-dropdown{position:absolute;top:52px;right:12px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r);box-shadow:0 8px 30px rgba(0,0,0,.12);z-index:200;min-width:220px;padding:8px 0;}
.usr-dropdown-item{display:flex;align-items:center;gap:10px;padding:10px 16px;font-size:13px;color:var(--text);cursor:pointer;transition:background .15s;}
.usr-dropdown-item:hover{background:var(--surface2);}
.usr-dropdown-sep{height:1px;background:var(--border);margin:4px 0;}

/* ── USER MANAGEMENT MODAL ── */
.user-avatar-sm{width:36px;height:36px;border-radius:50%;object-fit:cover;background:var(--surface2);flex-shrink:0;}
.user-info{flex:1;min-width:0;}
.user-name{font-size:13px;font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.user-email{font-size:11px;color:var(--text3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}

/* ── BANNED ── */
.role-banned{background:var(--red-light);color:var(--red);}
.user-row{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--border);}
.user-row:last-child{border-bottom:none;}
.user-row.is-banned{opacity:0.6;}
.mh3d-request-list{max-height:360px;overflow:auto;display:flex;flex-direction:column;gap:8px;margin-bottom:12px;}
.mh3d-request-card{border:1px solid var(--border);background:var(--surface2);border-radius:var(--rsm);padding:10px 12px;}
.mh3d-request-card b{display:block;font-size:13px;color:var(--text);overflow-wrap:anywhere;}
.mh3d-request-card small{display:block;font-size:11px;color:var(--text3);line-height:1.5;margin-top:2px;overflow-wrap:anywhere;}
.mh3d-request-actions{display:flex;gap:7px;justify-content:flex-end;margin-top:8px;flex-wrap:wrap;}
.mh3d-request-actions button{border:1px solid #b9d6ff;background:#eaf3ff;color:#0b67f6;border-radius:var(--rsm);padding:6px 10px;font-family:'Sarabun',sans-serif;font-size:12px;font-weight:700;cursor:pointer;}
.mh3d-request-empty{border:1px dashed var(--border2);background:var(--surface2);border-radius:var(--rsm);padding:14px;text-align:center;color:var(--text3);font-size:13px;}
.ban-btn{font-size:11px;padding:4px 10px;border:1px solid var(--red-border);border-radius:var(--rsm);background:var(--red-light);color:var(--red);cursor:pointer;font-family:'Sarabun',sans-serif;font-weight:500;white-space:nowrap;transition:all .15s;flex-shrink:0;}
.ban-btn:hover{background:var(--red);color:#fff;}
.unban-btn{font-size:11px;padding:4px 10px;border:1px solid var(--green-border);border-radius:var(--rsm);background:var(--green-light);color:var(--green);cursor:pointer;font-family:'Sarabun',sans-serif;font-weight:500;white-space:nowrap;transition:all .15s;flex-shrink:0;}
.unban-btn:hover{background:var(--green);color:#fff;}
.auth-banned{background:var(--red-light);border:1px solid var(--red-border);border-radius:var(--r);padding:20px;margin-top:16px;font-size:13px;color:var(--red);line-height:1.7;text-align:center;display:none;}
.auth-banned h4{font-size:15px;font-weight:600;margin-bottom:6px;}

.role-select{font-family:'Sarabun',sans-serif;font-size:12px;padding:4px 8px;border:1px solid var(--border);border-radius:var(--rsm);background:var(--surface);color:var(--text);cursor:pointer;}
.position-manager{border:1px solid var(--border);border-radius:var(--rsm);margin-bottom:12px;background:var(--surface2);}
.position-manager>summary{list-style:none;cursor:pointer;padding:9px 11px;font-size:12px;font-weight:700;color:var(--text);display:flex;align-items:center;justify-content:space-between;}
.position-manager>summary::-webkit-details-marker{display:none;}
.position-manager>summary::after{content:'›';font-size:15px;color:var(--text3);transition:transform .15s;}
.position-manager[open]>summary::after{transform:rotate(90deg);}
.position-manager-body{border-top:1px solid var(--border);padding:8px 10px 10px;background:var(--surface);}
.position-list{max-height:180px;overflow-y:auto;margin-bottom:8px;}
.position-row{display:grid;grid-template-columns:minmax(0,1fr) auto 26px;gap:7px;align-items:center;padding:5px 0;border-bottom:1px solid var(--border);}
.position-row:last-child{border-bottom:none;}
.position-name{font-size:12px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.position-head{display:flex;align-items:center;gap:4px;font-size:10px;color:var(--text3);white-space:nowrap;}
.position-head input{width:13px;height:13px;accent-color:var(--green);}
.position-delete{width:26px;height:26px;border:1px solid var(--border);border-radius:4px;background:transparent;color:var(--red);cursor:pointer;font-size:15px;}
.position-add{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:6px;align-items:center;}
.position-add input[type="text"]{min-width:0;height:32px;border:1px solid var(--border);border-radius:var(--rsm);padding:5px 8px;font-family:'Sarabun',sans-serif;font-size:12px;}
.position-add button{height:32px;border:0;border-radius:var(--rsm);background:var(--green);color:#fff;padding:0 10px;font-family:'Sarabun',sans-serif;font-size:11px;font-weight:600;cursor:pointer;}


.export-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:16px;}
.exp-card{border:1.5px solid var(--border);border-radius:var(--r);padding:16px;cursor:pointer;text-align:center;transition:all .2s;background:var(--surface2);}
.exp-card:hover{border-color:var(--green-border);background:var(--green-light);}
.exp-card.active{border-color:var(--green);background:var(--green-light);}
.exp-icon{font-size:28px;margin-bottom:6px;}
.exp-name{font-size:13px;font-weight:600;color:var(--text);}
.exp-desc{font-size:11px;color:var(--text3);margin-top:2px;line-height:1.4;}
.exp-scope{display:flex;gap:8px;margin-bottom:14px;}
.exp-scope-btn{flex:1;padding:9px;border:1.5px solid var(--border);border-radius:var(--rsm);background:transparent;font-family:'Sarabun',sans-serif;font-size:13px;cursor:pointer;color:var(--text2);transition:all .2s;}
.exp-scope-btn.active{border-color:var(--green);background:var(--green-light);color:var(--green);font-weight:600;}
.exp-preview{background:var(--surface2);border:1px solid var(--border);border-radius:var(--rsm);padding:10px 12px;margin-bottom:14px;font-size:12px;color:var(--text3);line-height:1.7;}
.exp-preview b{color:var(--text);}

/* BOTTOM NAV */
.bnav{display:none;position:fixed;bottom:0;left:0;right:0;background:var(--surface);border-top:1px solid var(--border);padding:6px 0 env(safe-area-inset-bottom,0);z-index:50;}
.bnav-inner{display:flex;justify-content:space-around;}
.ntab{flex:1;display:flex;flex-direction:column;align-items:center;gap:1px;padding:5px 4px;cursor:pointer;border:none;background:none;color:var(--text3);font-family:'Sarabun',sans-serif;font-size:11px;transition:color .15s;}
.ntab.active{color:#0d2d6e;}
.ntab .ti{font-size:20px;line-height:1;}

/* DASHBOARD */
.dash-page{display:none;flex:1;overflow-y:auto;background:var(--bg);}
.dash-page.active{display:block;}
.dash-inner{padding:20px;max-width:900px;margin:0 auto;}
.dash-hero{margin-bottom:20px;}
.dash-hero h2{font-size:22px;font-weight:700;color:var(--text);}
.dash-hero p{font-size:13px;color:var(--text3);margin-top:3px;}
.dash-date{font-family:'Space Mono',monospace;font-size:11px;color:var(--text3);}

/* KPI GRID */
.kpi-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:20px;}
.kpi{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:16px;}
.kpi-icon{font-size:22px;margin-bottom:8px;line-height:1;}
.kpi-val{font-family:'Space Mono',monospace;font-size:26px;font-weight:700;line-height:1;color:var(--text);}
.kpi-val.g{color:var(--green);}
.kpi-val.r{color:var(--red);}
.kpi-val.a{color:var(--amber);}
.kpi-lbl{font-size:12px;color:var(--text3);margin-top:5px;}

.dash-section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:10px;}
.dash-section-head h3{font-size:14px;font-weight:700;color:var(--text);display:flex;align-items:center;gap:7px;}
.dash-section-head p{font-size:11px;color:var(--text3);text-align:right;}

/* DASH SECTIONS */
.dash-2col{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px;}
.dash-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:16px;}
.dash-card h3{font-size:13px;font-weight:600;color:var(--text);margin-bottom:14px;display:flex;align-items:center;gap:7px;}
.dash-card h3 span{font-size:16px;}

/* PHASE PROGRESS BARS */
.phase-bar-row{display:flex;align-items:center;gap:10px;margin-bottom:10px;}
.phase-bar-row:last-child{margin-bottom:0;}
.phase-bar-label{font-size:12px;color:var(--text2);width:70px;flex-shrink:0;}
.phase-bar-track{flex:1;height:8px;background:var(--surface2);border-radius:4px;overflow:hidden;}
.phase-bar-fill{height:100%;border-radius:4px;transition:width .4s;}
.phase-bar-fill.g{background:#16a34a;}
.phase-bar-fill.a{background:#f59e0b;}
.phase-bar-fill.r{background:#dc2626;}
.phase-bar-fill.low{background:#94a3b8;}
.phase-bar-fill.m{background:var(--border2);}
.phase-bar-pct{font-family:'Space Mono',monospace;font-size:10px;color:var(--text3);width:30px;text-align:right;flex-shrink:0;}
.phase-bar-pct.done{color:#16a34a;font-weight:700;}
.project-phase{padding:10px 0;border-bottom:1px solid var(--border);}
.project-phase:first-of-type{padding-top:0;}
.project-phase:last-child{border-bottom:none;padding-bottom:0;}
.project-phase-title{font-size:12px;font-weight:700;color:var(--text);margin-bottom:9px;display:flex;align-items:center;gap:6px;}
.project-phase-title::before{content:'';width:8px;height:8px;border-radius:50%;background:var(--phase-color,#888);flex-shrink:0;}
.project-phase-title span:first-child{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.project-phase-count{font-family:'Space Mono',monospace;font-size:10px;font-weight:700;color:var(--phase-color,#888);background:var(--surface2);border:1px solid var(--border);border-radius:999px;padding:2px 7px;white-space:nowrap;}
.project-phase .phase-bar-label{width:86px;}
.project-status-toggle{margin-top:10px;border:1px solid var(--border);border-radius:var(--rsm);background:var(--surface2);overflow:hidden;}
.project-status-toggle>summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;cursor:pointer;font-size:11px;font-weight:700;color:var(--text2);user-select:none;}
.project-status-toggle>summary::-webkit-details-marker{display:none;}
.project-status-toggle>summary::after{content:'›';font-size:15px;color:var(--text3);transition:transform .15s;margin-left:2px;}
.project-status-toggle[open]>summary::after{transform:rotate(90deg);}
.project-status-toggle>summary span{font-family:'Space Mono',monospace;color:var(--phase-color,#888);margin-left:auto;}
.project-status-list{border-top:1px solid var(--border);padding:2px 10px;background:var(--surface);}

/* PROJECT STATUS LIST */
.status-list-item{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--border);cursor:pointer;transition:opacity .15s;}
.status-list-item:last-child{border-bottom:none;}
.status-list-item:hover{opacity:.75;}
.sli-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;}
.sli-name{font-size:13px;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.sli-client{font-size:11px;color:var(--text3);flex-shrink:0;}
.status-list-item .bf-plan{margin-top:0;flex-shrink:0;max-width:94px;}
.sli-bar{width:60px;height:5px;background:var(--surface2);border-radius:3px;overflow:hidden;flex-shrink:0;}
.sli-bar-fill{height:100%;border-radius:3px;}
.sli-bar-fill.done{background:var(--green);}
.sli-bar-fill.prog{background:var(--amber);}
.sli-bar-fill.issue{background:var(--red);}
.sli-bar-fill.pend{background:var(--border2);}
.sli-pct{font-family:'Space Mono',monospace;font-size:10px;color:var(--text3);width:28px;text-align:right;flex-shrink:0;}

/* OPEN ISSUES TABLE */
.issue-table{width:100%;}
.issue-table-row{display:flex;align-items:flex-start;gap:8px;padding:9px 0;border-bottom:1px solid var(--border);}
.issue-table-row:last-child{border-bottom:none;}
.itr-dot{width:6px;height:6px;border-radius:50%;background:var(--red);flex-shrink:0;margin-top:5px;}
.itr-body{flex:1;min-width:0;}
.itr-proj{font-size:11px;color:var(--text2);font-weight:600;margin-bottom:4px;line-height:1.45;}
.itr-path{color:var(--blue);font-weight:600;}
.itr-detail{display:grid;grid-template-columns:72px minmax(0,1fr);gap:5px;font-size:11px;line-height:1.45;margin-top:2px;}
.itr-label{color:var(--text3);white-space:nowrap;}
.itr-detail-text{color:var(--text);min-width:0;overflow-wrap:anywhere;}
.itr-who{font-size:11px;color:var(--amber);}
.issue-analytics-title{font-size:13px;font-weight:700;color:var(--text);margin:0 0 10px;display:flex;align-items:center;gap:7px;}
.issue-analytics-copy{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px;}
.issue-analytics-copy b{font-size:13px;color:var(--text);}
.issue-analytics-copy small{font-size:10px;font-weight:500;color:var(--text3);line-height:1.35;text-transform:none;}
.issue-range-select{min-width:112px;height:30px;font-size:11px;padding:0 8px;}
.issue-clear-btn{margin-left:auto;font-size:11px;padding:4px 9px;border:1px solid var(--red-border);background:var(--red-light);color:var(--red);border-radius:var(--rsm);font-family:'Sarabun',sans-serif;font-weight:600;cursor:pointer;}
.issue-clear-btn:hover{background:#fee2e2;}
.issue-analytics{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:20px;}
.issue-stat h4{font-size:12px;font-weight:700;color:var(--text);margin-bottom:9px;}
.issue-stat-row{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid var(--border);}
.issue-stat-row:last-child{border-bottom:none;}
.issue-stat-name{font-size:12px;color:var(--text2);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.issue-stat-count{font-family:'Space Mono',monospace;font-size:11px;font-weight:700;color:var(--red);background:var(--red-light);border:1px solid var(--red-border);border-radius:999px;padding:2px 7px;white-space:nowrap;}
.no-data{font-size:13px;color:var(--text3);text-align:center;padding:20px 0;}
.no-data.compact{font-size:12px;padding:10px 0;}

/* DONUT CHART */
.donut-wrap{display:flex;align-items:center;gap:20px;}
.donut-svg{flex-shrink:0;}
.donut-legend{flex:1;}
.dl-item{display:flex;align-items:center;gap:7px;margin-bottom:7px;}
.dl-dot{width:10px;height:10px;border-radius:2px;flex-shrink:0;}
.dl-label{font-size:12px;color:var(--text2);}
.dl-val{font-family:'Space Mono',monospace;font-size:12px;color:var(--text);margin-left:auto;}
.check-trend{margin-top:16px;padding-top:13px;border-top:1px solid var(--border);}
.check-trend-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:10px;}
.check-trend-title{font-size:12px;font-weight:700;color:var(--text);}
.check-trend-sub{font-size:10px;color:var(--text3);margin-top:2px;line-height:1.4;}
.trend-range-select{height:34px;min-width:118px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text2);font-family:'Sarabun',sans-serif;font-size:12px;font-weight:700;padding:0 10px;outline:none;cursor:pointer;}
.trend-range-select:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(11,103,246,.12);}
.trend-compare{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;margin-top:10px;}
.trend-stat{border:1px solid var(--border);border-radius:6px;padding:7px;background:var(--surface2);}
.trend-stat-label{font-size:10px;color:var(--text3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.trend-stat-value{font-family:'Space Mono',monospace;font-size:15px;font-weight:700;color:var(--text);margin-top:2px;}
.trend-stat-diff{font-size:10px;color:var(--text3);margin-top:1px;}
.trend-stat.pass .trend-stat-value{color:#16a34a;}
.trend-stat.fail .trend-stat-value{color:var(--red);}
.trend-stat.recheck .trend-stat-value{color:var(--amber);}
.trend-stat.total .trend-stat-value{color:var(--blue);}
.trend-stat.pending .trend-stat-value{color:var(--text2);}

/* UPCOMING */
.upcoming-item{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--border);cursor:pointer;}
.upcoming-item:last-child{border-bottom:none;}
.upcoming-item:hover{opacity:.75;}
.up-date{font-family:'Space Mono',monospace;font-size:10px;background:var(--surface2);border:1px solid var(--border);border-radius:4px;padding:3px 7px;color:var(--text2);flex-shrink:0;min-width:60px;text-align:center;}
.up-date.urgent{background:var(--red-light);border-color:var(--red-border);color:var(--red);}
.up-date.soon{background:var(--amber-light);border-color:var(--amber-border);color:var(--amber);}
.up-name{font-size:13px;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.upcoming-plan{flex-shrink:0;max-width:116px;overflow:hidden;text-overflow:ellipsis;}
.up-pct{font-family:'Space Mono',monospace;font-size:10px;color:var(--text3);}
.up-pct.done{color:#16a34a;font-weight:700;}

@media(max-width:700px){
  .kpi-grid{grid-template-columns:repeat(2,1fr);}
  .dash-2col{grid-template-columns:1fr;}
  .issue-analytics{grid-template-columns:1fr;}
  .trend-compare{grid-template-columns:repeat(2,minmax(0,1fr));}
  .issue-analytics-title{align-items:flex-start;flex-wrap:wrap;}
  .issue-range-select{margin-left:31px;}
  .upcoming-item{flex-wrap:wrap;}
  .up-name{min-width:160px;}
}
@media(max-width:640px){
  .side{display:none;}
  .side.msw{display:flex;position:fixed;inset:0;top:56px;z-index:40;width:100%;border-right:none;}
  .detail{width:100%;}
  .bnav{display:block;}
  .layout{height:calc(100vh - 56px - 56px);}
  .d-inner{padding:12px;}
  .dash-inner{padding:12px;}
  .dash-section-head{align-items:flex-start;flex-direction:column;gap:3px;}
  .dash-section-head p{text-align:left;}
}

/* MODERN FACTORY UI */
:root{
  --bg:#eef1f2;--surface:#ffffff;--surface2:#f5f7f7;
  --border:#dce2e4;--border2:#c5cfd2;
  --text:#172126;--text2:#4f5f65;--text3:#7d8b90;
  --green:#174a52;--green-light:#e7f1f1;--green-border:#a9c8c8;
  --red:#b42318;--red-light:#fff1ef;--red-border:#efc1bb;
  --amber:#946200;--amber-light:#fff7df;--amber-border:#e8cf87;
  --blue:#245e91;--blue-light:#eaf2f8;
  --r:8px;--rsm:6px;
}
*{letter-spacing:0!important;}
body{line-height:1.45;background:var(--bg);}
button,input,select,textarea{font-family:'Sarabun',sans-serif;}
button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:2px solid #4d8f95;outline-offset:2px;}

.hdr{background:rgba(255,255,255,.98);border-color:var(--border);padding:0 18px;box-shadow:0 1px 2px rgba(23,33,38,.05);}
.hdr-logo{color:var(--green);font-size:12px;}
.ibtn{background:var(--surface);border-color:var(--border);color:var(--text2);}
.ibtn:hover{background:var(--green-light);border-color:var(--green-border);color:var(--green);}
.usr-avatar{border-color:var(--border2);}
.usr-avatar:hover{border-color:var(--green);}

.side{width:288px;background:#f9fbfb;border-color:var(--border);}
.side-hdr{padding:15px 14px 11px;background:var(--surface);}
.side-hdr h2{font-size:13px;color:var(--text);}
.proj-scroll{padding:9px;}
.pcard,.pcard-parent{border-color:var(--border);border-radius:7px;box-shadow:0 1px 1px rgba(23,33,38,.025);}
.pcard:hover,.pcard-parent-hdr:hover{background:var(--surface2);border-color:var(--border2);}
.pcard.active,.pcard-parent-hdr.active-parent{background:var(--green-light);border-color:var(--green-border);box-shadow:inset 3px 0 0 var(--green);}
.pchild-card{background:#f2f5f5;border-color:transparent;border-radius:5px;}
.pchild-card:hover{background:#e9eeee;border-color:var(--border2);}
.pchild-card.active{background:var(--surface);border-color:var(--green-border);box-shadow:inset 3px 0 0 var(--green);}
.add-btn{border-color:var(--border2);border-radius:7px;}
.add-btn:hover{border-color:var(--green);background:var(--green-light);}

.d-inner{max-width:920px;padding:22px;}
.sum-card,.phase,.dash-card,.kpi{border-color:var(--border);box-shadow:0 1px 2px rgba(23,33,38,.035);}
.sum-card{border-top:3px solid var(--green);padding:15px 17px;}
.sum-info h2{font-size:18px;}
.snum{background:#f4f6f6;border:1px solid #e8ecec;}
.main-bar{background:#e2e7e8;}
.phase{margin-bottom:9px;}
.ph-hdr{min-height:50px;padding:12px 14px;}
.ph-hdr:hover{background:#f7f9f9;}
.ph-num{color:var(--text3);}
.ph-title{font-size:13px;}
.grp-hdr{min-height:31px;padding:7px 14px;}
.crow{padding:11px 14px;background:var(--surface);}
.crow:hover{background:#fbfcfc;}
.crow-label{font-size:13px;}
.result-row{gap:6px;}
.rbtn{min-height:32px;padding:5px 10px;background:#f5f7f7;color:var(--text2);border-color:var(--border);}
.rbtn:hover{transform:translateY(-1px);}
.rbtn.pass.sel{background:#18794e;border-color:#18794e;}
.rbtn.fail.sel{background:var(--red);border-color:var(--red);}
.rbtn.recheck.sel{background:var(--amber);border-color:var(--amber);}
.note-inp,.fg input,.fg select,.fg textarea,.uname-inp,.uname-select{background:var(--surface);border-color:var(--border2);}
.note-inp:focus,.fg input:focus,.fg select:focus,.fg textarea:focus,.uname-inp:focus,.uname-select:focus{border-color:#4d8f95;box-shadow:0 0 0 3px rgba(77,143,149,.12);}
.auth-profile-btn{background:var(--green-light);border-color:var(--green-border);color:var(--green);}
.uname-btn{background:var(--green);}

.dash-inner{max-width:1120px;padding:24px;}
.dash-hero{margin-bottom:12px;}
.dash-hero h2{font-size:21px;}
.kpi-grid{gap:10px;margin-bottom:18px;}
.kpi{padding:14px;min-height:112px;display:flex;flex-direction:column;justify-content:center;}
.kpi-icon{width:32px;height:32px;display:grid;place-items:center;background:#edf2f2;border:1px solid #e0e7e7;border-radius:6px;font-size:16px;margin-bottom:9px;}
.kpi-val{font-size:24px;}
.dash-card{padding:15px;}
.dash-card h3{font-size:12px;margin-bottom:12px;}
.issue-analytics{gap:10px;margin-bottom:18px;}
.issue-stat-row{padding:7px 0;}
.issue-stat-count{border-radius:6px;}
.dash-2col{gap:10px;margin-bottom:10px;}
.status-list-item{padding:10px 0;}
.issue-table-row{padding:10px 0;}

.modal,.auth-box,.uname-box{border-radius:8px;box-shadow:0 14px 38px rgba(23,33,38,.14);}
.auth-box{border-color:var(--border);}
.auth-logo{color:var(--green);}
.mbtn{min-height:42px;}
.mbtn.pri{background:var(--green);border-color:var(--green);}
.mbtn.ghost:hover{background:var(--surface2);color:var(--text2);}
.role-select{min-height:30px;border-color:var(--border2);}
.user-row{padding:11px 0;}
.position-manager{background:#f5f7f7;border-color:var(--border);}

.bnav{border-color:var(--border);box-shadow:0 -2px 8px rgba(23,33,38,.06);}
.ntab.active{color:var(--green);}

@media(max-width:700px){
  .dash-inner{padding:14px;}
  .kpi{min-height:100px;padding:12px;}
  .dash-card{padding:13px;}
}
@media(max-width:640px){
  .side.msw{top:56px;background:#f9fbfb;}
  .d-inner{padding:10px;}
  .sum-card{padding:13px;margin-bottom:10px;}
  .phase{margin-bottom:8px;}
  .ph-hdr{min-height:48px;padding:11px 12px;}
  .crow{padding:10px 12px;}
  .rbtn{min-height:34px;}
  .kpi-grid{gap:8px;margin-bottom:14px;}
  .kpi-val{font-size:22px;}
  .dash-hero h2{font-size:19px;}
  .itr-detail{grid-template-columns:68px minmax(0,1fr);}
  .modal{border-radius:8px 8px 0 0;}
  .user-row{flex-wrap:wrap;gap:7px 9px;}
  .user-row .user-info{flex:1 1 calc(100% - 48px)!important;}
  .user-row .role-badge{margin-left:45px;}
  .user-row .role-select{flex:1;min-width:120px;}
  .position-add{grid-template-columns:minmax(0,1fr) auto;}
  .position-add .position-head{grid-column:1/2;grid-row:2;}
  .position-add button{grid-column:2;grid-row:1/3;height:100%;min-height:32px;}
}

/* MODERN INDUSTRIAL UI V2 */
.hdr{height:60px;padding:0 20px;gap:12px;}
.layout{height:calc(100vh - 60px);}
.hdr-logo{display:flex;align-items:center;gap:9px;min-width:154px;}
.brand-mark{width:30px;height:30px;display:grid;place-items:center;background:var(--green);color:#fff;border-radius:6px;font-family:'Space Mono',monospace;font-size:14px;font-weight:700;box-shadow:0 4px 10px rgba(23,74,82,.18);}
.brand-copy{display:flex;flex-direction:column;line-height:1.05;}
.brand-copy b{font-family:'Space Mono',monospace;font-size:11px;color:var(--text);}
.brand-copy small{font-family:'Sarabun',sans-serif;font-size:9px;font-weight:500;color:var(--text3);margin-top:4px;text-transform:uppercase;}
.hdr-proj{font-size:13px;color:var(--text);}
.hdr-stat{padding:4px 8px;background:var(--surface2);border:1px solid var(--border);border-radius:5px;color:var(--text2);}
.ibtn{width:36px;height:36px;font-size:17px;border-radius:6px;}
.usr-avatar{width:36px;height:36px;}

.side{width:300px;background:#edf1f2;}
.side-hdr{padding:14px 13px;background:#edf1f2;border-bottom-color:#d7dfe1;}
.side-hdr h2{font-size:12px;text-transform:uppercase;color:var(--text2);}
.side-hdr p{font-size:10px;}
.side-dash-btn{height:30px;display:flex;align-items:center;gap:6px;padding:0 10px;border:1px solid var(--border2);border-radius:6px;background:rgba(255,255,255,.7);color:var(--text2);font-size:11px;font-weight:600;cursor:pointer;white-space:nowrap;}
.side-dash-btn:hover{background:var(--surface);border-color:var(--green-border);color:var(--green);}
.proj-scroll{padding:8px;}
.pcard,.pcard-parent{background:transparent;border-color:transparent;box-shadow:none;margin-bottom:3px;}
.pcard{padding:11px;}
.pcard:hover,.pcard-parent-hdr:hover{background:rgba(255,255,255,.72);border-color:transparent;}
.pcard.active,.pcard-parent-hdr.active-parent{background:var(--surface);border-color:transparent;box-shadow:inset 3px 0 0 var(--green),0 2px 8px rgba(23,33,38,.06);}
.pcard-parent-hdr{padding:10px 11px;}
.pchildren{padding-left:18px;}
.pchild-card{background:rgba(255,255,255,.48);padding:9px 10px;}
.pchild-card.active{box-shadow:inset 3px 0 0 var(--green),0 1px 3px rgba(23,33,38,.05);}
.add-btn{background:rgba(255,255,255,.55);margin-bottom:10px;}

.dash-topbar{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:18px;}
.dash-actions{display:flex;align-items:center;gap:9px;}
.dash-date{padding:6px 9px;background:var(--surface);border:1px solid var(--border);border-radius:6px;}
.dash-sync-btn{height:34px;display:flex;align-items:center;gap:7px;padding:0 12px;background:var(--green);border:1px solid var(--green);color:#fff;border-radius:6px;cursor:pointer;font-size:11px;font-weight:600;white-space:nowrap;box-shadow:0 4px 10px rgba(23,74,82,.14);}
.dash-sync-btn:hover{background:#103d44;}
.dash-sync-btn span{font-family:'Space Mono',monospace;font-size:14px;}
.dash-hero{margin:0;}
.dash-hero h2{font-size:20px;line-height:1.2;}
.dash-hero p{font-size:11px;}
.kpi-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;}
.kpi{min-height:88px;padding:13px 14px;display:grid;grid-template-columns:38px minmax(0,1fr);grid-template-rows:auto auto;column-gap:10px;align-items:center;border-top:2px solid var(--blue);}
.kpi:nth-child(2){border-top-color:#18794e;}
.kpi:nth-child(3){border-top-color:var(--red);}
.kpi-icon{grid-row:1/3;width:36px;height:36px;margin:0;border:0;background:var(--blue-light);color:var(--blue);font-family:'Space Mono',monospace;font-size:10px;font-weight:700;}
.kpi:nth-child(2) .kpi-icon{background:#e8f4ed;color:#18794e;}
.kpi:nth-child(3) .kpi-icon{background:var(--red-light);color:var(--red);font-size:15px;}
.kpi-val{align-self:end;font-size:23px;}
.kpi-lbl{align-self:start;margin-top:1px;font-size:10px;}
.dash-section-head{padding-bottom:8px;border-bottom:1px solid var(--border);}
.dash-section-head h3,.issue-analytics-title{font-size:12px;text-transform:uppercase;color:var(--text2);}
.dash-card{border:0;box-shadow:0 2px 8px rgba(23,33,38,.055);}
.dash-card h3{padding-bottom:9px;border-bottom:1px solid var(--border);}
.dash-card h3>span,.dash-section-head h3>span,.issue-analytics-title>span{width:24px;height:24px;display:inline-grid;place-items:center;background:var(--surface2);border:1px solid var(--border);border-radius:5px;font-size:12px;filter:grayscale(1);}
.issue-stat{border-top:2px solid var(--red-border);}
.sum-card{border:0;border-left:4px solid var(--green);box-shadow:0 3px 12px rgba(23,33,38,.06);}
.sbadge,.role-badge{border-radius:5px;}
.phase{border:0;box-shadow:0 2px 8px rgba(23,33,38,.05);}
.ph-num{width:27px;height:27px;display:grid;place-items:center;background:var(--green-light);border:1px solid var(--green-border);border-radius:5px;color:var(--green);font-size:9px;}
.ph-icon{color:var(--green);}
.ph-title{font-size:13px;font-weight:700;}
.ph-body{border-top-color:#e6ebec;}
.crow{border-bottom-color:#e9edee;}
.rbtn{border-radius:5px;font-weight:600;}
.auth-overlay{background:#edf1f2;}
.auth-box{max-width:390px;padding:34px;border:0;border-top:4px solid var(--green);}
.auth-logo{font-size:19px;}
.auth-google-btn{min-height:46px;border-radius:6px;box-shadow:0 1px 2px rgba(23,33,38,.04);}
.usr-dropdown{border:0;box-shadow:0 14px 34px rgba(23,33,38,.16);}
.modal h3{font-size:16px;}

@media(max-width:900px){
  .side{width:270px;}
  .dash-inner{padding:18px;}
  .kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media(max-width:640px){
  .hdr{height:60px;padding:0 12px;gap:8px;}
  .layout{height:calc(100vh - 60px - 56px);}
  .side.msw{top:60px;width:100%;}
  .hdr-logo{min-width:0;gap:7px;}
  .brand-mark{width:30px;height:30px;}
  .brand-copy b{font-size:10px;}
  .brand-copy small{display:none;}
  .hdr-stat{display:none;}
  .dash-topbar{align-items:flex-start;flex-direction:column;margin-bottom:13px;}
  .dash-actions{width:100%;justify-content:space-between;}
  .dash-sync-btn{flex:1;justify-content:center;}
  .dash-date{flex-shrink:0;}
  .kpi{min-height:80px;padding:11px;grid-template-columns:32px minmax(0,1fr);column-gap:8px;}
  .kpi-icon{width:32px;height:32px;}
  .kpi-val{font-size:21px;}
  .dash-section-head h3,.issue-analytics-title{font-size:11px;}
}

/* LIVELY BLUE UI - reference inspired */
:root{
  --bg:#f2f7fc;--surface:#ffffff;--surface2:#f5f9fd;
  --border:#dce7f1;--border2:#c5d5e3;
  --text:#10243f;--text2:#52677d;--text3:#8495a8;
  --green:#0b67f6;--green-light:#eaf3ff;--green-border:#a9cdfd;
  --blue:#0b67f6;--blue-light:#eaf3ff;
}
body{background:#f2f7fc;}
.hdr{background:#ffffff;border-bottom-color:#dce7f1;box-shadow:0 2px 10px rgba(39,91,145,.07);}
.brand-mark{width:36px;background:#0b67f6;box-shadow:0 5px 14px rgba(11,103,246,.28);font-size:10px;}
.brand-copy b{color:#10243f;}
.ibtn:hover{background:#eaf3ff;border-color:#a9cdfd;color:#0b67f6;}
.usr-avatar:hover{border-color:#0b67f6;}
.dash-page,.detail{background:#f4f8fc;}

.side{background:#082d4e;border-right-color:#123f62;}
.side-hdr{background:#082d4e;border-bottom-color:#1c4a6a;}
.side-hdr h2{color:#ffffff;}
.side-hdr p{color:#8faec5;}
.side-dash-btn{background:#0b67f6;border-color:#3382fa;color:#ffffff;box-shadow:0 5px 14px rgba(11,103,246,.3);}
.side-dash-btn:hover{background:#2478f7;border-color:#62a0ff;color:#fff;}
.proj-scroll{background:#082d4e;}
.pcard,.pcard-parent{background:#0d3756;border:1px solid #1b4867;color:#eaf4fb;margin-bottom:7px;}
.pcard:hover,.pcard-parent-hdr:hover{background:#113d5e;}
.pcard.active,.pcard-parent-hdr.active-parent{background:#0b67f6;color:#fff;box-shadow:inset 3px 0 0 #53d49b,0 7px 18px rgba(0,14,32,.24);}
.pname,.pchild-name{color:inherit;}
.side .pcard-title,.side .pchild-title{color:#f4fbff;text-shadow:0 1px 0 rgba(0,14,32,.28);}
.side .pcard-title{font-weight:800;}
.side .pchild-title{font-weight:800;}
.pmeta,.side .mpct,.side .pchild-pct,.side .parent-toggle{color:#8faec5;}
.pcard.active .pmeta,.pcard.active .mpct,.active-parent .pmeta,.active-parent .parent-toggle{color:#dcecff;}
.pchildren{border-left:1px solid #28516f;margin-left:10px;}
.pchild-card{background:#103957;border-color:#194766;color:#dcebf5;}
.pchild-card:hover{background:#164867;border-color:#2c5f80;}
.pchild-card.active{background:#1765a1;border-color:#3c8ac1;color:#fff;box-shadow:inset 3px 0 0 #36d399,0 3px 9px rgba(0,14,32,.18);}
.pchild-card.active .pchild-pct{color:#dcecff;}
.side .add-btn{background:#123b5a;border-color:#315c79;color:#d8e8f2;}
.side .add-btn:hover{background:#174866;border-color:#3f89bd;color:#fff;}
.side .pdel{color:#87a6bb;}
.side .pdel:hover{background:#5b2630;color:#ffccd1;}
.side .pedit{color:#87a6bb;}
.side .pedit:hover{background:#173f61;color:#b9ddff;}
.side .archive-box{background:#e8f2f8;border-color:#b7d0e3;box-shadow:0 4px 14px rgba(0,14,32,.14);}
.side .archive-title{color:#244d6a;font-weight:800;}
.side .archive-title span{color:#0b67f6;}
.side .archive-card{background:#ffffff;border-color:#c9dce9;}
.side .archive-info b{color:#0d2d4f;font-weight:800;}
.side .archive-info small{color:#526f84;}

.dash-topbar{margin-bottom:20px;}
.dash-hero h2{font-size:23px;color:#10243f;}
.dash-hero p{color:#6686aa;}
.dash-date{background:#fff;border-color:#d8e5f0;color:#58718a;box-shadow:0 2px 6px rgba(39,91,145,.04);}
.dash-sync-btn{background:#0b67f6;border-color:#0b67f6;box-shadow:0 7px 18px rgba(11,103,246,.24);}
.dash-sync-btn:hover{background:#0759d8;}
.kpi{min-height:112px;padding:16px;grid-template-columns:52px minmax(0,1fr);column-gap:13px;border:1px solid #dce7f1;border-top-color:#dce7f1;box-shadow:0 7px 20px rgba(39,91,145,.075);}
.kpi:nth-child(2),.kpi:nth-child(3){border-top-color:#dce7f1;}
.kpi-icon{width:50px;height:50px;border-radius:50%;font-size:22px;background:#e8f1ff;color:#0b67f6;box-shadow:0 0 0 8px #f4f8ff,0 6px 15px rgba(11,103,246,.18);}
.kpi:nth-child(2) .kpi-icon{background:#e3f9ef;color:#16a665;box-shadow:0 0 0 8px #f2fcf7,0 6px 15px rgba(22,166,101,.18);font-size:22px;}
.kpi:nth-child(3) .kpi-icon{background:#ffebeb;color:#ef4444;box-shadow:0 0 0 8px #fff5f5,0 6px 15px rgba(239,68,68,.18);font-size:20px;}
.kpi-val{font-size:28px;color:#10243f;}
.kpi-lbl{font-size:11px;color:#687f96;}
.kpi-val.g{color:#138a58;}
.kpi-val.r{color:#dc3545;}
.kpi-val.a{color:#d77b0b;}

.dash-card,.sum-card,.phase{background:#fff;border:1px solid #dce7f1;box-shadow:0 6px 18px rgba(39,91,145,.065);}
.dash-card h3{color:#17304d;}
.dash-card h3>span,.dash-section-head h3>span,.issue-analytics-title>span{background:#eaf3ff;border-color:#c9dfff;color:#0b67f6;filter:none;}
.dash-section-head h3,.issue-analytics-title{color:#23435f;}
.issue-stat{border-top:3px solid #ff6b6b;}
.issue-stat:nth-child(2){border-top-color:#4c8df6;}
.issue-stat:nth-child(3){border-top-color:#2bc783;}
.issue-stat-count{background:#edf4ff;border-color:#cfe1ff;color:#0b67f6;}
.status-list-item:hover,.upcoming-item:hover{background:#f7faff;opacity:1;}

.sum-card{border-left:4px solid #0b67f6;}
.sbadge.done{background:#e8f8ef;border-color:#a9dfbf;color:#16834f;}
.pdot.done{background:#20b86a;}
.ph-num{background:#eaf3ff;border-color:#b9d6ff;color:#0b67f6;}
.ph-icon{color:#0b67f6;}
.ph-hdr:hover{background:#f5f9ff;}
.crow:hover{background:#f8fbff;}
.rbtn.photo:hover{background:#eaf3ff;border-color:#b9d6ff;color:#0b67f6;}
.auth-profile-btn{background:#eaf3ff;border-color:#a9cdfd;color:#0b67f6;}
.uname-btn,.mbtn.pri{background:#0b67f6;border-color:#0b67f6;}

.auth-overlay{background:#eef5fb;}
.auth-box{border-top-color:#0b67f6;box-shadow:0 18px 46px rgba(26,72,116,.17);}
.auth-logo{color:#0b67f6;}
.bnav{background:#fff;border-color:#dce7f1;}
.ntab.active{color:#0b67f6;}

@media(max-width:900px){
  .side{background:#082d4e;}
  .kpi{min-height:102px;}
}
@media(max-width:640px){
  .side.msw{background:#082d4e;}
  .kpi{min-height:94px;grid-template-columns:40px minmax(0,1fr);}
  .kpi-icon{width:40px;height:40px;font-size:18px;box-shadow:0 0 0 5px #f4f8ff,0 4px 10px rgba(11,103,246,.15);}
  .kpi:nth-child(2) .kpi-icon,.kpi:nth-child(3) .kpi-icon{font-size:17px;}
  .kpi-val{font-size:23px;}
}

/* FIXED SIDEBAR BRAND */
.hdr{padding:0 18px 0 0;}
.hdr-logo,.hdr-logo.h{width:300px;min-width:300px;height:60px;align-self:stretch;display:flex;align-items:center;gap:11px;padding:0 18px;background:#082d4e;flex-shrink:0;}
.brand-hex{position:relative;width:48px;height:54px;display:grid;place-items:center;flex-shrink:0;background:#ffffff;clip-path:polygon(50% 0,93% 24%,93% 76%,50% 100%,7% 76%,7% 24%);}
.brand-hex::before{content:'';position:absolute;inset:3px;background:#082d4e;clip-path:inherit;}
.brand-hex span{position:relative;z-index:1;color:#ffffff;font-family:'Space Mono',monospace;font-size:17px;font-weight:700;}
.hdr-logo .brand-copy b{font-size:14px;color:#ffffff;}
.hdr-logo .brand-copy small{font-size:9px;color:#a9c2d5;text-transform:uppercase;}
.hdr>.back-btn{margin-left:12px;}

@media(max-width:900px) and (min-width:641px){
  .hdr-logo,.hdr-logo.h{width:270px;min-width:270px;}
}
@media(max-width:640px){
  .hdr{padding:0 12px;}
  .hdr-logo{width:auto;min-width:0;height:auto;align-self:auto;padding:0;background:transparent;gap:7px;}
  .hdr-logo.h{display:none;}
  .brand-hex{width:34px;height:38px;background:#0b67f6;}
  .brand-hex::before{inset:2px;background:#0b67f6;}
  .brand-hex span{font-size:11px;}
  .hdr-logo .brand-copy b{font-size:10px;color:#10243f;}
  .hdr>.back-btn{margin-left:0;}
}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{scroll-behavior:auto!important;transition:none!important;animation:none!important;}
}

/* ISSUE ACCOUNTABILITY */
.field-help,.modal-note{display:block;margin-top:5px;color:var(--text3);font-size:11px;line-height:1.45;}
.modal-note{margin:-5px 0 14px;padding:9px 11px;background:var(--surface2);border:1px solid var(--border);border-radius:7px;}
.issue-accountability{margin-top:8px;padding:9px 10px;background:#f8fbff;border:1px solid #dce9f6;border-radius:8px;}
.issue-accountability.compact{padding:7px 8px;}
.issue-accountability-head{display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
.severity-badge,.review-status{display:inline-flex;align-items:center;min-height:23px;padding:3px 8px;border:1px solid;border-radius:999px;font-size:10px;font-weight:700;line-height:1.2;}
.severity-badge.minor{background:#edf9f2;border-color:#b7e2c8;color:#18794e;}
.severity-badge.moderate{background:#fff8e6;border-color:#f1d28a;color:#9a6200;}
.severity-badge.major{background:#fff0e9;border-color:#f4b99d;color:#b94713;}
.severity-badge.critical{background:#ffebee;border-color:#efadb6;color:#b42332;}
.severity-badge.legacy,.review-status.legacy{background:#f1f4f7;border-color:#d6dee6;color:#637485;}
.severity-guide{display:grid;gap:5px;margin-top:7px;}
.severity-guide-row{display:flex;align-items:flex-start;gap:9px;padding:8px 9px;border:1px solid #cfd9e3;border-radius:8px;background:#f8fafc;transition:border-color .15s,background .15s,box-shadow .15s;}
.severity-guide-row.selected{border-width:2px;padding:7px 8px;box-shadow:0 1px 3px rgba(15,23,42,.08);}
.severity-guide-score{display:flex;align-items:center;justify-content:center;flex:0 0 27px;height:27px;border-radius:50%;background:#e8edf2;color:var(--text2);font-size:12px;font-weight:800;}
.severity-guide-row span:last-child{min-width:0;}
.severity-guide-row b{display:block;font-size:12px;color:#172331;line-height:1.3;}
.severity-guide-row small{display:block;margin-top:2px;color:#425466;font-size:11px;font-weight:500;line-height:1.45;}
.severity-guide-row.minor.selected{background:#edf9f2;border-color:#62bd88}.severity-guide-row.minor .severity-guide-score{background:#d5f1e0;color:#18794e}
.severity-guide-row.moderate.selected{background:#fff8e6;border-color:#e7b849}.severity-guide-row.moderate .severity-guide-score{background:#ffedbd;color:#9a6200}
.severity-guide-row.major.selected{background:#fff0e9;border-color:#e88758}.severity-guide-row.major .severity-guide-score{background:#ffdaca;color:#b94713}
.severity-guide-row.critical.selected{background:#ffebee;border-color:#df6676}.severity-guide-row.critical .severity-guide-score{background:#ffd1d7;color:#b42332}
.review-status.waiting{background:#eef5ff;border-color:#bfd7fb;color:#225ea8;}
.review-status.disputed{background:#f5efff;border-color:#d4baf5;color:#7141a5;}
.review-status.approved{background:#e9f8ef;border-color:#aee0c1;color:#167247;}
.review-status.dismissed{background:#f1f4f7;border-color:#d3dbe3;color:#596875;}
.issue-defense-text,.issue-review-text{margin-top:7px;padding-left:8px;border-left:3px solid #8b5cf6;color:var(--text2);font-size:11px;line-height:1.45;}
.issue-defense-text.accepted{border-left-color:#20a86b;}.issue-review-text{border-left-color:#0b67f6;}
.issue-account-actions{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px;}
.issue-account-btn{padding:5px 9px;border:1px solid var(--border2);border-radius:6px;background:#fff;color:var(--text2);font-size:10px;font-weight:700;cursor:pointer;}
.issue-account-btn.accept{border-color:#a8ddbf;color:#167247}.issue-account-btn.defend{border-color:#cfb9ef;color:#7141a5}.issue-account-btn.review{border-color:#a9cdfd;color:#0b67f6}
.accountability-section{margin-bottom:16px;padding:14px;border:1px solid #d5e4f2;border-radius:12px;background:linear-gradient(180deg,#f7fbff 0,#eef6ff 100%);}
.accountability-title{margin-bottom:11px;}.accountability-kpis{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin-bottom:10px;}
.accountability-kpis>div{padding:10px 11px;background:#fff;border:1px solid #dce7f1;border-radius:8px;box-shadow:0 3px 9px rgba(39,91,145,.05);}
.accountability-kpis span{display:block;color:var(--text3);font-size:10px}.accountability-kpis b{display:block;margin-top:3px;color:var(--text);font-size:22px;}
.accountability-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:10px}.account-panel{margin:0;min-width:0;}
.account-rank-row{display:grid;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid var(--border);}
.account-rank-row:last-child{border-bottom:0}.account-rank-no{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:#eaf3ff;color:#0b67f6;font-size:10px;font-weight:800;}
.account-rank-person b,.account-rank-person small{display:block}.account-rank-person b{font-size:12px}.account-rank-person small{margin-top:2px;color:var(--text3);font-size:9px}.account-rank-row>strong{color:#b94713;font-size:18px}.account-rank-row>strong small{font-size:9px;}
.account-pending-row{width:100%;display:grid;grid-template-columns:10px minmax(0,1fr) auto;align-items:center;gap:8px;padding:8px 3px;border:0;border-bottom:1px solid var(--border);background:none;text-align:left;cursor:pointer;}
.account-pending-row:last-child{border-bottom:0}.account-pending-row:hover{background:#f7faff}.account-pending-row span b,.account-pending-row span small{display:block}.account-pending-row b{font-size:11px}.account-pending-row small{margin-top:2px;color:var(--text3);font-size:9px}.account-pending-row strong{font-size:15px;color:#b94713;}
.severity-dot{width:8px;height:8px;border-radius:50%;background:#94a3b8}.severity-dot.minor{background:#22a66b}.severity-dot.moderate{background:#e6a319}.severity-dot.major{background:#ed6b2d}.severity-dot.critical{background:#d62f43}
@media(max-width:900px){.accountability-kpis{grid-template-columns:repeat(3,minmax(0,1fr));}}
@media(max-width:640px){.accountability-section{padding:10px}.accountability-kpis{grid-template-columns:repeat(2,minmax(0,1fr));}.accountability-grid{grid-template-columns:1fr}.issue-accountability-head{align-items:flex-start}.severity-badge,.review-status{white-space:normal;}}

/* HIGH-TECH PRECISION UI */
:root{
  --brand-primary:#0b67f6;
  --brand-bright:#27b7ff;
  --brand-cyan:#45d8ff;
  --tech-navy:#061f38;
  --tech-navy-2:#0a3152;
  --tech-line:rgba(72,177,255,.16);
  --tech-glow:rgba(11,103,246,.22);
  --card-shadow:0 10px 28px rgba(24,76,126,.09),0 2px 6px rgba(24,76,126,.045);
  --card-shadow-strong:0 16px 38px rgba(16,67,118,.14),0 3px 9px rgba(16,67,118,.07);
}

body{
  background:#f2f7fc;
  text-rendering:optimizeLegibility;
  -webkit-font-smoothing:antialiased;
}

.dash-page,.detail{
  background-color:#f3f8fd;
  background-image:
    radial-gradient(circle at 78% 2%,rgba(39,183,255,.11),transparent 24rem),
    linear-gradient(rgba(34,111,181,.032) 1px,transparent 1px),
    linear-gradient(90deg,rgba(34,111,181,.032) 1px,transparent 1px);
  background-size:auto,28px 28px,28px 28px;
}

.hdr{
  position:sticky;
  background:linear-gradient(90deg,#ffffff 0%,#fbfdff 60%,#f3f9ff 100%);
  border-bottom:1px solid #cfe0ef;
  box-shadow:0 5px 20px rgba(21,72,120,.09);
}
.hdr::after{
  content:'';
  position:absolute;
  left:300px;
  right:0;
  bottom:-1px;
  height:1px;
  background:linear-gradient(90deg,rgba(69,216,255,.72),rgba(11,103,246,.25),transparent 72%);
  pointer-events:none;
}
.hdr-logo,.hdr-logo.h{
  position:relative;
  overflow:hidden;
  background-color:var(--tech-navy);
  background-image:
    radial-gradient(circle at 12% 35%,rgba(39,183,255,.22),transparent 8rem),
    linear-gradient(rgba(86,187,255,.055) 1px,transparent 1px),
    linear-gradient(90deg,rgba(86,187,255,.055) 1px,transparent 1px);
  background-size:auto,18px 18px,18px 18px;
}
.hdr-logo::after{
  content:'';
  position:absolute;
  right:0;
  top:10px;
  bottom:10px;
  width:1px;
  background:linear-gradient(transparent,var(--brand-cyan),transparent);
  opacity:.72;
}
.brand-hex{
  filter:drop-shadow(0 0 9px rgba(69,216,255,.38));
}
.brand-hex::after{
  content:'';
  position:absolute;
  inset:7px;
  z-index:0;
  border:1px solid rgba(69,216,255,.72);
  clip-path:inherit;
}
.hdr-logo .brand-copy small{letter-spacing:.12em;}

.ibtn,.usr-avatar{
  border-color:#cbddeb;
  background:linear-gradient(180deg,#ffffff,#f5f9fd);
  box-shadow:0 3px 10px rgba(25,78,129,.055);
}
.ibtn:hover{
  transform:translateY(-1px);
  border-color:#70b9ff;
  background:#eef7ff;
  color:var(--brand-primary);
  box-shadow:0 8px 18px rgba(11,103,246,.15),inset 0 0 0 1px rgba(69,216,255,.18);
}
.ibtn:focus-visible,.dash-sync-btn:focus-visible,.side-dash-btn:focus-visible,.ntab:focus-visible{
  outline:3px solid rgba(39,183,255,.25);
  outline-offset:2px;
}

.side{
  background-color:var(--tech-navy);
  background-image:
    radial-gradient(circle at 20% 0,rgba(31,145,229,.19),transparent 20rem),
    linear-gradient(rgba(95,187,255,.035) 1px,transparent 1px),
    linear-gradient(90deg,rgba(95,187,255,.035) 1px,transparent 1px);
  background-size:auto,22px 22px,22px 22px;
  border-right:1px solid #1c567f;
  box-shadow:8px 0 30px rgba(3,27,50,.12);
}
.side-hdr,.proj-scroll{background:transparent;}
.side-hdr{border-bottom-color:rgba(113,194,255,.17);}
.side-dash-btn{
  background:linear-gradient(135deg,#0b67f6,#168fe8);
  border-color:#53b9ff;
  box-shadow:0 8px 20px rgba(0,87,203,.35),inset 0 1px 0 rgba(255,255,255,.22);
}
.side-dash-btn:hover{transform:translateY(-1px);box-shadow:0 11px 24px rgba(0,87,203,.42);}
.pcard,.pcard-parent{
  background:linear-gradient(145deg,rgba(15,60,91,.94),rgba(8,45,75,.94));
  border-color:rgba(91,168,220,.24);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.025),0 6px 14px rgba(0,12,29,.1);
}
.pcard:hover,.pcard-parent-hdr:hover{
  background:linear-gradient(145deg,#164d73,#0c3a60);
  border-color:rgba(88,193,255,.46);
}
.pcard.active,.pcard-parent-hdr.active-parent{
  background:linear-gradient(135deg,#0a62da,#0c86d8);
  border-color:#4bd6ff;
  box-shadow:inset 3px 0 0 #63f2d2,0 0 0 1px rgba(69,216,255,.2),0 11px 25px rgba(0,20,48,.34);
}
.pchild-card.active{
  border-color:#4bd6ff;
  box-shadow:inset 3px 0 0 #63f2d2,0 8px 18px rgba(0,17,40,.25);
}
.side .add-btn{
  background:rgba(13,64,99,.72);
  border-color:rgba(96,191,255,.46);
  color:#dff5ff;
  box-shadow:inset 0 0 18px rgba(39,183,255,.035);
}
.side .add-btn:hover{border-color:#55d9ff;box-shadow:0 0 20px rgba(39,183,255,.14);}

.dash-inner{position:relative;}
.dash-hero h2{
  color:#0b2744;
  letter-spacing:-.02em;
  text-shadow:0 1px 0 #fff;
}
.dash-hero p{color:#6686a4;}
.dash-date{
  background:rgba(255,255,255,.92);
  border-color:#c9ddeb;
  box-shadow:0 5px 15px rgba(27,80,130,.07),inset 0 1px 0 #fff;
}
.dash-sync-btn,.uname-btn,.mbtn.pri,.ecta,.note-save{
  background:linear-gradient(135deg,#0861ed,#0a8ee4);
  border-color:#28b2ff;
  color:#fff;
  box-shadow:0 9px 22px rgba(11,103,246,.25),inset 0 1px 0 rgba(255,255,255,.24);
}
.dash-sync-btn:hover,.uname-btn:hover,.mbtn.pri:hover,.ecta:hover,.note-save:hover{
  background:linear-gradient(135deg,#0758d8,#0782d4);
  transform:translateY(-1px);
  box-shadow:0 12px 26px rgba(11,103,246,.32),0 0 0 1px rgba(69,216,255,.16);
}

.kpi,.dash-card,.sum-card,.phase,.accountability-section,.modal,.uname-box{
  border-color:#cfdfec;
  box-shadow:var(--card-shadow);
}
.kpi{
  position:relative;
  overflow:hidden;
  background:
    linear-gradient(135deg,rgba(255,255,255,.99),rgba(246,251,255,.98));
}
.kpi::before{
  content:'';
  position:absolute;
  left:0;
  right:0;
  top:0;
  height:2px;
  background:linear-gradient(90deg,#0b67f6,#45d8ff,transparent 82%);
}
.kpi:nth-child(2)::before{background:linear-gradient(90deg,#16a665,#63f2d2,transparent 82%);}
.kpi:nth-child(3)::before{background:linear-gradient(90deg,#ef4444,#ff9f9f,transparent 82%);}
.kpi::after{
  content:'';
  position:absolute;
  right:-38px;
  bottom:-52px;
  width:120px;
  height:120px;
  border-radius:50%;
  border:1px solid rgba(11,103,246,.08);
  box-shadow:0 0 0 18px rgba(11,103,246,.025),0 0 0 38px rgba(11,103,246,.018);
  pointer-events:none;
}
.kpi-icon{
  position:relative;
  z-index:1;
  border:1px solid rgba(70,148,227,.16);
  box-shadow:0 0 0 7px #f4f8ff,0 8px 18px rgba(11,103,246,.18);
}
.kpi-val,.kpi-lbl{position:relative;z-index:1;}
.kpi-val{letter-spacing:-.04em;}
.kpi-lbl{font-size:12px;}

.dash-card,.sum-card,.phase{
  background:linear-gradient(155deg,rgba(255,255,255,.99),rgba(249,252,255,.98));
}
.dash-card h3,.dash-section-head,.issue-analytics-title{
  border-color:#d4e3ef;
}
.dash-card h3>span,.dash-section-head h3>span,.issue-analytics-title>span{
  background:linear-gradient(145deg,#edf6ff,#e5f1ff);
  border-color:#bfdbf7;
  color:#0868d8;
  box-shadow:inset 0 1px 0 #fff,0 3px 8px rgba(11,103,246,.08);
}
.accountability-section{
  background:
    linear-gradient(180deg,rgba(249,253,255,.98),rgba(237,247,255,.98)),
    linear-gradient(rgba(34,111,181,.04) 1px,transparent 1px),
    linear-gradient(90deg,rgba(34,111,181,.04) 1px,transparent 1px);
  background-size:auto,20px 20px,20px 20px;
  border-color:#bdd8eb;
  box-shadow:var(--card-shadow-strong),inset 0 1px 0 #fff;
}
.accountability-kpis>div{
  border-color:#cfe1ef;
  background:linear-gradient(145deg,#fff,#f6fbff);
  box-shadow:0 5px 13px rgba(23,75,124,.07),inset 0 1px 0 #fff;
}
.issue-stat{box-shadow:var(--card-shadow);}
.status-list-item,.upcoming-item,.issue-table-row{transition:background .16s ease,transform .16s ease;}
.status-list-item:hover,.upcoming-item:hover{transform:translateX(2px);}

.phase-bar-track,.main-bar,.mbar,.sli-bar{
  background:#e5eef6;
  box-shadow:inset 0 1px 2px rgba(19,63,102,.1);
}
.phase-bar-fill,.main-fill,.mfill,.sli-bar-fill{
  box-shadow:0 0 10px rgba(11,103,246,.18);
}
.rbtn,.part-check-btn,.issue-account-btn,.photo-list-row button{
  box-shadow:0 2px 6px rgba(23,70,113,.045);
}
.rbtn:hover,.part-check-btn:hover,.issue-account-btn:hover,.photo-list-row button:hover{
  transform:translateY(-1px);
  box-shadow:0 6px 14px rgba(23,70,113,.11);
}

.auth-overlay{
  background-color:#edf6fc;
  background-image:
    radial-gradient(circle at 50% 42%,rgba(11,103,246,.13),transparent 22rem),
    linear-gradient(rgba(25,110,185,.05) 1px,transparent 1px),
    linear-gradient(90deg,rgba(25,110,185,.05) 1px,transparent 1px);
  background-size:auto,26px 26px,26px 26px;
}
.auth-box{
  position:relative;
  overflow:hidden;
  border:1px solid #c8deed;
  border-top:3px solid #1bb9ff;
  background:linear-gradient(160deg,rgba(255,255,255,.99),rgba(244,250,255,.99));
  box-shadow:0 24px 62px rgba(17,66,112,.2),0 0 0 1px rgba(255,255,255,.9),inset 0 1px 0 #fff;
}
.auth-box::before{
  content:'';
  position:absolute;
  left:15%;
  right:15%;
  top:-1px;
  height:2px;
  background:#68e6ff;
  box-shadow:0 0 14px #2ccaff;
}
.auth-box::after{
  content:'';
  position:absolute;
  right:-45px;
  top:-45px;
  width:120px;
  height:120px;
  border:1px solid rgba(11,103,246,.1);
  transform:rotate(45deg);
  pointer-events:none;
}
.auth-logo{color:#0865d8;text-shadow:0 0 18px rgba(11,103,246,.16);}
.auth-google-btn{
  background:linear-gradient(180deg,#fff,#f7fbff);
  border-color:#c8dce9;
  box-shadow:0 5px 14px rgba(21,69,112,.075);
}
.auth-google-btn:hover{
  transform:translateY(-1px);
  border-color:#55baff;
  box-shadow:0 10px 22px rgba(11,103,246,.14),0 0 0 3px rgba(69,216,255,.08);
}

.modal,.uname-box{
  background:linear-gradient(155deg,#fff,#f8fbfe);
  border:1px solid #cbddea;
  box-shadow:0 22px 58px rgba(8,42,75,.24),inset 0 1px 0 #fff;
}
.photo-viewer{background:rgba(2,13,28,.91);}
.photo-viewer img{border:1px solid rgba(86,215,255,.42);box-shadow:0 24px 70px rgba(0,0,0,.5),0 0 28px rgba(31,169,255,.16);}
.photo-viewer-close{border:1px solid rgba(69,216,255,.5);box-shadow:0 0 18px rgba(69,216,255,.22);}

.bnav{
  background:linear-gradient(180deg,rgba(255,255,255,.98),rgba(244,249,253,.99));
  border-top-color:#c7dcea;
  box-shadow:0 -8px 24px rgba(15,58,99,.11);
}
.ntab{position:relative;}
.ntab.active{color:#0868e5;}
.ntab.active::after{
  content:'';
  position:absolute;
  top:-6px;
  left:28%;
  right:28%;
  height:2px;
  border-radius:2px;
  background:#21baff;
  box-shadow:0 0 10px rgba(33,186,255,.72);
}

@media(max-width:900px){
  .hdr::after{left:0;}
  .side{box-shadow:12px 0 32px rgba(3,25,48,.26);}
}

@media(max-width:640px){
  .hdr-logo,.hdr-logo.h{
    background:transparent;
    background-image:none;
    box-shadow:none;
  }
  .hdr-logo{overflow:visible;}
  .hdr-logo::after{display:none;}
  .hdr-logo .brand-copy b{color:#10243f;}
  .hdr-logo .brand-copy small{color:#6e879e;letter-spacing:.08em;}
  .brand-hex{filter:drop-shadow(0 4px 8px rgba(11,103,246,.24));}
  .dash-inner{padding-bottom:96px;}
  .kpi-grid>.kpi:nth-child(3){grid-column:1/-1;}
  .kpi-grid>.kpi:nth-child(3) .kpi-icon{justify-self:start;}
  .accountability-title{
    display:grid;
    grid-template-columns:28px minmax(0,1fr) auto;
    align-items:start;
    gap:7px;
  }
  .accountability-title>span{grid-column:1;grid-row:1;}
  .accountability-title>.issue-analytics-copy{grid-column:2/4;grid-row:1;}
  .accountability-title>.issue-range-select{grid-column:1/3;grid-row:2;width:100%;min-width:0;margin:0;}
  .accountability-title>.issue-clear-btn{grid-column:3;grid-row:2;margin:0;align-self:stretch;}
  .accountability-kpis>div:last-child:nth-child(odd){grid-column:1/-1;}
  .accountability-kpis span{font-size:11px;}
  .accountability-kpis b{font-size:21px;}
  .auth-box{padding:34px 28px;}
  .dash-card,.sum-card,.phase,.accountability-section{box-shadow:0 8px 22px rgba(24,76,126,.085),0 2px 5px rgba(24,76,126,.04);}
}

/* CONSISTENT ICONS + HIGH-TECH COMPONENT POLISH */
.ui-icon{
  width:1em;
  height:1em;
  display:inline-block;
  flex:0 0 auto;
  vertical-align:-.14em;
  pointer-events:none;
}
.kpi-icon .ui-icon{width:24px;height:24px;stroke-width:1.65;}
.dash-card h3>span .ui-icon,.dash-section-head h3>span .ui-icon,.issue-analytics-title>span .ui-icon{width:16px;height:16px;}
.dash-sync-btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;}
.dash-sync-btn .ui-icon{width:15px;height:15px;}
.phase-bar-label{display:flex;align-items:center;gap:6px;}
.phase-bar-label .ui-icon{width:14px;height:14px;color:var(--phase-color,#0b67f6);}

.pcard-parent{
  position:relative;
  overflow:hidden;
  border-left-width:3px!important;
}
.pcard-parent::after{
  content:'';
  position:absolute;
  left:0;
  top:0;
  bottom:0;
  width:34%;
  background:linear-gradient(90deg,color-mix(in srgb,var(--project-color) 12%,transparent),transparent);
  pointer-events:none;
}
.pcard-parent-hdr{position:relative;z-index:1;align-items:flex-start;padding:11px 10px;}
.pcard-project-mark,.pchild-mark{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:30px;
  height:30px;
  border-radius:8px;
  flex:0 0 auto;
}
.pcard-project-mark{
  color:#69dfff;
  background:linear-gradient(145deg,rgba(45,169,244,.2),rgba(32,111,180,.09));
  border:1px solid rgba(105,223,255,.27);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.08),0 5px 14px rgba(0,18,42,.15);
}
.pcard-project-mark .ui-icon{width:17px;height:17px;}
.pcard-copy{flex:1;min-width:0;}
.pcard-parent-hdr.has-actions .pcard-copy{padding-bottom:29px;}
.pcard-meta-row{display:flex;align-items:center;gap:3px 8px;flex-wrap:wrap;margin-top:5px;}
.pcard-meta-row span{font-size:10px;color:#91aec3;white-space:nowrap;}
.pcard-meta-row span+span::before{content:'·';margin-right:7px;color:#4e7693;}
.pcard-actions{position:absolute;right:8px;bottom:7px;gap:5px;}
.pcard-actions .pedit,.pcard-actions .pdel,.pcard-actions .parchive,.pchild-card>.pedit,.pchild-card>.pdel{
  width:27px;
  height:27px;
  min-width:27px;
  padding:0;
  margin:0;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border:1px solid rgba(122,185,228,.2);
  border-radius:7px;
  background:rgba(7,38,66,.45);
  color:#8fb9d6;
}
.pcard-actions button .ui-icon,.pchild-card>button .ui-icon{width:13px;height:13px;}
.pcard-actions .pedit:hover,.pchild-card>.pedit:hover{border-color:#51c5ff;background:rgba(31,142,211,.22);color:#8ee8ff;}
.pcard-actions .parchive:hover{border-color:#63dfbc;background:rgba(30,150,116,.18);color:#8df2d2;}
.pcard-actions .pdel:hover,.pchild-card>.pdel:hover{border-color:#ff909b;background:rgba(207,55,72,.2);color:#ffb0b7;}

.pchildren{position:relative;z-index:1;padding:1px 7px 7px 23px;}
.pchild-card{
  position:relative;
  display:grid;
  grid-template-columns:30px minmax(0,1fr) 42px;
  align-items:center;
  gap:7px;
  padding:9px;
  background:rgba(8,43,71,.64);
  border-color:rgba(96,166,213,.17);
}
.pchild-card.has-actions{padding-bottom:40px;}
.pchild-card>.pedit,.pchild-card>.pdel{position:absolute;bottom:8px;}
.pchild-card>.pedit{right:41px;}
.pchild-card>.pdel{right:9px;}
.pchild-card:hover{background:rgba(14,65,99,.88);border-color:rgba(82,194,255,.38);transform:translateX(2px);}
.pchild-card.active{background:linear-gradient(135deg,rgba(8,95,195,.9),rgba(8,119,185,.88));border-color:#43d0ff;}
.pchild-mark{
  color:var(--project-color,#4fb7ff);
  background:rgba(56,152,214,.1);
  border:1px solid currentColor;
  box-shadow:inset 0 0 12px rgba(61,184,255,.08);
}
.pchild-mark .ui-icon{width:15px;height:15px;}
.pchild-card.active .pchild-mark{color:#9af1ff!important;background:rgba(255,255,255,.09);}
.pchild-title-line{grid-template-columns:minmax(0,1fr);gap:3px;}
.pchild-title-line .plan-badge{justify-self:start;max-width:100%;}
.pchild-current{display:flex;align-items:center;gap:4px;margin-top:4px;font-size:10px;font-weight:700;opacity:.95;}
.pchild-current .ui-icon{width:11px;height:11px;}
.pchild-metrics{width:42px;}
.pchild-pct{text-align:right;font-size:10px;color:#a8c2d5;}
.pchild-progress{height:3px;margin-top:5px;overflow:hidden;border-radius:999px;background:rgba(151,197,226,.16);}
.pchild-progress span{display:block;height:100%;border-radius:inherit;box-shadow:0 0 7px currentColor;}
.add-sub-btn{display:flex;align-items:center;justify-content:center;gap:5px;width:100%;min-height:31px;color:#9bc3dd;border-color:rgba(103,183,232,.28);}
.add-sub-btn .ui-icon{width:13px;height:13px;}
.archive-title-copy{display:inline-flex;align-items:center;gap:6px;}
.archive-title-copy .ui-icon{width:13px;height:13px;}

.ph-icon{
  width:28px;
  height:28px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border:1px solid #c4def3;
  border-radius:8px;
  background:linear-gradient(145deg,#eef7ff,#e5f2ff);
  box-shadow:inset 0 1px 0 #fff,0 4px 10px rgba(11,103,246,.09);
}
.ph-icon .ui-icon{width:15px;height:15px;}
.ph-cnt{display:flex;align-items:center;gap:7px;}
.phase-fail-count{display:inline-flex;align-items:center;gap:3px;color:var(--red);}
.phase-fail-count .ui-icon{width:11px;height:11px;}
.result-row{gap:7px;padding:1px 1px 3px;}
.rbtn,.part-check-btn{min-height:34px;border-radius:8px;padding:6px 11px;font-weight:700;gap:6px;}
.rbtn .ui-icon,.part-check-btn .ui-icon{width:14px;height:14px;stroke-width:2;}
.rbtn.pass{background:#f1fbf6;border-color:#b9e2cc;color:#148552;}
.rbtn.fail{background:#fff5f5;border-color:#f1c8cc;color:#c43845;}
.rbtn.recheck{background:#fff9ed;border-color:#ecd8a7;color:#a66b05;}
.rbtn.photo,.rbtn.history{background:#f1f7fd;border-color:#c7dced;color:#315f83;}
.rbtn.pass.sel{background:linear-gradient(135deg,#10955b,#19b774);border-color:#31ce8b;color:#fff;box-shadow:0 6px 15px rgba(17,148,89,.25),0 0 0 2px rgba(49,206,139,.11);}
.rbtn.fail.sel{background:linear-gradient(135deg,#c92f40,#e45260);border-color:#ff7784;color:#fff;box-shadow:0 6px 15px rgba(199,45,61,.24),0 0 0 2px rgba(255,119,132,.1);}
.rbtn.recheck.sel{background:linear-gradient(135deg,#c88913,#e6aa31);border-color:#f5c35c;color:#fff;box-shadow:0 6px 15px rgba(194,127,12,.22);}
.rbtn:disabled,.part-check-btn:disabled{transform:none!important;box-shadow:none!important;filter:saturate(.35);}
.part-check-btn{display:inline-flex;align-items:center;justify-content:center;}
.part-check-btn.pass{background:#f1fbf6;border-color:#b9e2cc;color:#148552;}
.part-check-btn.fail{background:#fff5f5;border-color:#f1c8cc;color:#c43845;}
.part-check-btn.photo{background:#f0f7ff;border-color:#c6dcf1;color:#22699e;}
.part-check-btn.issue{background:#fff5f5;border-color:#f1c8cc;color:#c43845;}
.part-check-btn.pass.sel{box-shadow:0 6px 14px rgba(17,148,89,.23);}
.part-check-btn.fail.sel{box-shadow:0 6px 14px rgba(199,45,61,.22);}
.saved-note>.ui-icon{width:13px;height:13px;margin-right:3px;}
.photo-dropdown summary>.ui-icon,.step-issues summary>.ui-icon{width:14px;height:14px;}
.empty-st .ei .ui-icon{width:46px;height:46px;}
.ecta{display:inline-flex;align-items:center;justify-content:center;gap:7px;}
.ecta .ui-icon{width:15px;height:15px;}
.sum-parent-label{display:flex;align-items:center;gap:5px;margin-bottom:3px;font-size:11px;color:var(--text3);}
.sum-parent-label .ui-icon{width:13px;height:13px;color:var(--brand-primary);}

@media(max-width:640px){
  .result-row{flex-wrap:wrap;overflow-x:visible;}
  .rbtn,.part-check-btn{min-height:38px;padding:8px 12px;}
  .pchild-card{grid-template-columns:32px minmax(0,1fr) 48px;padding:11px;}
  .pchild-card.has-actions{padding-bottom:43px;}
  .pchild-metrics{width:48px;}
}
