:root{--navy:#0f2a44;--navy-2:#1b3a58;--amber:#f2a900;--amber-soft:#fff7dd;--amber-text:#6b4b00;--ink:#14202e;--muted:#5b6675;--line:#e3e6ea;--line-soft:#eef0f3;--bg:#f4f5f7;--card:#fff;--good:#1e7b4f;--good-soft:#e6f4ec;--bad:#b42318;--bad-soft:#fdecea;--radius:14px;color:var(--ink);background:var(--bg);font-family:IBM Plex Sans Arabic,system-ui,sans-serif}*{box-sizing:border-box}body{min-height:100vh;margin:0}a{color:var(--navy);text-decoration:none}button,input,select,textarea{font:inherit}.btn{cursor:pointer;border:1px solid #0000;border-radius:10px;justify-content:center;align-items:center;gap:8px;min-height:44px;padding:0 18px;font-size:15px;font-weight:600;display:inline-flex}.btn:disabled{opacity:.6;cursor:default}.btn-primary{background:var(--navy);color:#fff}.btn-accent{background:var(--amber);color:var(--navy);font-weight:700}.btn-ghost{color:var(--navy);background:#fff;border-color:#d5dae0}.btn-sm{min-height:36px;padding:0 12px;font-size:13px}.field{color:var(--navy);flex-direction:column;gap:6px;font-size:14px;font-weight:600;display:flex}.field input,.field select,.field textarea{min-height:46px;color:var(--ink);background:#fff;border:1px solid #d5dae0;border-radius:10px;padding:0 12px;font-size:16px;font-weight:400}.field input:focus,.field select:focus{outline:2px solid var(--amber);outline-offset:1px}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px}.muted{color:var(--muted)}.error-box{background:var(--bad-soft);color:#7a1a12;border-radius:10px;padding:10px 12px;font-size:14px}.info-box{background:var(--amber-soft);color:var(--amber-text);border-radius:10px;padding:10px 12px;font-size:14px}.pill{border-radius:99px;padding:3px 10px;font-size:12px;font-weight:700;display:inline-block}.pill-good{background:var(--good-soft);color:#1e5b3c}.pill-muted{color:var(--muted);background:#eef1f4}.pill-sub{background:var(--amber-soft);color:var(--amber-text)}.shell{min-height:100vh;display:flex}.sidebar{background:var(--navy);color:#fff;flex-direction:column;flex-shrink:0;gap:4px;width:248px;padding:24px 16px;display:flex}.sidebar img.logo{width:176px;margin:0 8px 20px}.sidebar .project-box{background:var(--navy-2);border-radius:10px;margin-bottom:16px;padding:10px 12px}.sidebar .project-box small{color:#b8c4d1;font-size:12px;display:block}.sidebar a.nav{color:#e6ebf1;border-radius:8px;padding:11px 12px;font-size:15px;display:block}.sidebar a.nav.active{background:var(--amber);color:var(--navy);font-weight:600}.sidebar .spacer{flex-grow:1}.sidebar .footer-actions{gap:8px;display:flex}.sidebar .footer-actions button{color:#e6ebf1;cursor:pointer;background:0 0;border:1px solid #3a5775;border-radius:8px;flex:1;min-height:40px}.main{flex-direction:column;flex-grow:1;gap:18px;min-width:0;padding:28px 32px;display:flex}.page-title{color:var(--navy);margin:0;font-size:26px;font-weight:700}.topbar{display:none}@media (width<=860px){.shell{flex-direction:column}.sidebar{display:none}.topbar{background:var(--navy);color:#fff;z-index:5;align-items:center;gap:10px;padding:10px 16px;display:flex;position:sticky;top:0;overflow-x:auto}.topbar img{height:28px}.topbar a{color:#e6ebf1;white-space:nowrap;border-radius:8px;padding:8px 10px;font-size:14px}.topbar a.active{background:var(--amber);color:var(--navy);font-weight:600}.main{padding:16px}.page-title{font-size:22px}}table.list{border-collapse:collapse;width:100%;font-size:14px}table.list th{text-align:start;color:var(--muted);padding:10px 12px;font-size:13px;font-weight:600}table.list td{border-top:1px solid var(--line-soft);padding:12px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;display:grid}@media (width<=860px){.grid-2,.grid-3{grid-template-columns:1fr}table.list .hide-mobile{display:none}}.tabs{flex-wrap:wrap;gap:8px;display:flex}.tab{min-height:40px;color:var(--navy);cursor:pointer;background:#fff;border:1px solid #d5dae0;border-radius:99px;padding:0 16px;font-weight:600}.tab.on{background:var(--navy);color:#fff;border-color:var(--navy)}.good-box{background:var(--good-soft);color:#1e5b3c;border-radius:10px;padding:10px 12px;font-size:14px}.stat{border:1px solid var(--line-soft);background:#f7f8fa;border-radius:10px;flex-direction:column;gap:4px;padding:12px 14px;display:flex}.stat small{color:var(--muted);font-size:13px}.stat b{color:var(--navy);font-size:20px}.search{border:1px solid #d5dae0;border-radius:10px;flex:240px;max-width:420px;min-height:42px;padding:0 12px;font-size:15px}table.boq td{vertical-align:top;padding:8px 12px}table.boq td.num{white-space:nowrap;font-variant-numeric:tabular-nums;text-align:end;direction:ltr}table.boq thead th{z-index:1;background:#fff;position:sticky;top:0}table.boq tr.k-section td{background:var(--navy);color:#fff;border-top:0;font-weight:700}table.boq tr.k-group td{color:var(--navy);background:#f3f6fa;font-weight:600}table.boq tr.k-note td{color:var(--muted);font-style:italic}table.boq tr.warn td{background:var(--amber-soft)}table.boq tr.k-total td{color:var(--navy);border-top:2px solid var(--navy);font-weight:700}.show-mobile{display:none}@media (width<=860px){.show-mobile{display:block}}.mobile-user{display:none}@media (width<=860px){.mobile-user{background:var(--navy-2);color:#e6ebf1;z-index:4;align-items:center;gap:8px;padding:6px 16px;font-size:13px;display:flex;position:sticky;top:48px}.mobile-user .who{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.mobile-user button{color:#e6ebf1;cursor:pointer;background:0 0;border:1px solid #3a5775;border-radius:8px;min-height:32px;padding:0 12px;font-size:13px}}.section-title{color:var(--navy);margin:0;font-size:18px}.att-list{flex-direction:column;gap:8px;display:flex}.att-row{border:1px solid var(--line);background:#fff;border-radius:12px;padding:10px 12px}.att-row.st-present{border-inline-start:4px solid var(--good)}.att-row.st-half_day{border-inline-start:4px solid var(--amber)}.att-row.st-absent{background:#fafbfc;border-inline-start:4px solid #cfd5dc}.att-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.seg{border:1px solid #d5dae0;border-radius:10px;display:inline-flex;overflow:hidden}.seg button{min-height:40px;color:var(--navy);cursor:pointer;background:#fff;border:0;padding:0 14px;font-weight:600}.seg button+button{border-inline-start:1px solid #d5dae0}.seg button.on.present{background:var(--good);color:#fff}.seg button.on.half_day{background:var(--amber);color:var(--navy)}.seg button.on.absent{color:#fff;background:#6b7684}.att-body{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.mini{color:var(--muted);flex-direction:column;gap:4px;font-size:12px;font-weight:600;display:flex}.mini input,.mini select,.line-row input,.line-row select{min-height:42px;color:var(--ink);background:#fff;border:1px solid #d5dae0;border-radius:8px;padding:0 10px;font-size:15px}.mini input[type=number]{width:80px}.mini.grow,.line-row .grow{flex:200px;min-width:0}.mini.grow select{width:100%}.line-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.sticky-actions{z-index:3;border-top:1px solid var(--line);background:#f4f5f7f2;flex-wrap:wrap;gap:10px;padding:10px 0;display:flex;position:sticky;bottom:0}.print-only{display:none}@media print{@page{size:A4;margin:12mm}body{background:#fff}.sidebar,.topbar,.mobile-user,.no-print{display:none!important}.main{padding:0}.print-only{display:block}.print-report{color:#000;font-size:11px}.print-report h3{color:var(--navy);margin:14px 0 6px;font-size:13px}.pr-head{border-bottom:3px solid var(--navy);justify-content:space-between;align-items:center;margin-bottom:10px;padding-bottom:8px;display:flex}.pr-company{color:var(--navy);font-size:16px;font-weight:700}.pr-title{color:#444;font-size:13px}.pr-meta,.pr-table{border-collapse:collapse;width:100%}.pr-meta th,.pr-meta td,.pr-table th,.pr-table td{text-align:start;vertical-align:top;border:1px solid #999;padding:4px 6px}.pr-meta th,.pr-table th{background:#eef1f5;font-weight:700}.pr-total td{background:#f6f6f6;font-weight:700}.pr-notes{white-space:pre-wrap;border:1px solid #999;margin:0;padding:6px}.pr-signs{gap:20px;margin-top:30px;display:flex}.pr-signs div{flex:1;font-weight:700}.pr-signs span{border-bottom:1px solid #000;height:34px;display:block}.pr-foot{color:#777;text-align:center;margin-top:16px;font-size:9px}}
