:root{font-family:system-ui,-apple-system,Segoe UI,sans-serif;color:#18253b;background:#f3f6fa}*{box-sizing:border-box}body{margin:0;display:flex;min-height:100vh}aside{width:245px;flex-shrink:0;background:#102b4b;color:#fff;padding:22px 15px;display:flex;flex-direction:column}aside .logo{max-width:185px;max-height:85px;object-fit:contain;background:white;border-radius:8px;padding:7px}.brand{font-size:21px;font-weight:800;margin:16px 5px}.brand small{display:block;font-size:12px;font-weight:400;color:#c5d6e8}nav{display:grid;gap:3px}nav a,.logout{padding:10px 13px;color:#dce7f5;text-decoration:none;border-radius:8px;font-size:14px}nav a.active,nav a:hover{background:#245383;color:white}.logout{margin-top:auto}.content{padding:28px 36px;width:calc(100% - 245px);max-width:1700px;margin:auto}.top{display:flex;justify-content:space-between;align-items:center;margin-bottom:28px;padding-bottom:16px;border-bottom:1px solid #dfe5ed}.top small{display:block;color:#6d7b8e}.heading{display:flex;justify-content:space-between;align-items:center;gap:16px}h1{font-size:28px}h2{font-size:19px}.panel,.stat{background:white;border:1px solid #e2e8f0;border-radius:12px;padding:22px;margin:16px 0;box-shadow:0 2px 10px #102b4b08}.stats{display:grid;grid-template-columns:repeat(3,minmax(130px,1fr));gap:14px}.stat{text-decoration:none;color:inherit;margin:0}.stat small{display:block;color:#64748b}.stat b{display:block;font-size:32px;margin-top:6px}.btn,button{background:#145ba2;color:white;border:0;border-radius:8px;padding:10px 15px;text-decoration:none;font-weight:600;cursor:pointer;display:inline-block;font-size:14px}.btn.muted{background:#e9eef5;color:#1b3856}.danger{background:#c03737}.formgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.field{display:flex;flex-direction:column;gap:7px}label{display:block;font-size:13px;font-weight:700;margin-bottom:6px}input,textarea,select{width:100%;border:1px solid #cdd7e4;border-radius:8px;padding:11px;font:inherit;background:white}textarea{resize:vertical}.actions{grid-column:1/-1}.scroll{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:14px}th{text-align:left;background:#edf3f9}td,th{border-bottom:1px solid #e5ebf1;padding:11px 9px;vertical-align:top}a{color:#145ba2}progress{width:110px;accent-color:#2474bc}.inlineform{display:grid;grid-template-columns:3fr 1fr 1fr 1fr auto;gap:8px;margin-top:16px}.calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}.weekday{text-align:center;font-weight:700;padding:12px}.day{min-height:115px;background:white;border:1px solid #dce5f0;border-radius:8px;padding:8px;overflow-wrap:anywhere}.day.empty{background:transparent}.event{display:block;background:#dbeafe;border-radius:5px;font-size:11px;padding:5px;margin-top:5px;text-decoration:none}.event.job{background:#d9f7e8}.error,.success{padding:12px;border-radius:8px}.error{background:#fee2e2;color:#991b1b}.success{background:#dcfce7;color:#166534}.login{max-width:420px;margin:9vh auto;background:white;padding:32px;border-radius:14px;box-shadow:0 12px 40px #102b4b20}.login .logo{max-width:230px;max-height:90px;object-fit:contain}.login input{margin-bottom:16px}.detail{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.detail p{white-space:normal;margin:6px 0}.detail strong{font-size:13px;color:#64748b}.printing{background:white;display:block}.paper{width:100%;max-width:900px;margin:auto;padding:30px}.printlogo{max-width:190px;max-height:85px;object-fit:contain}.signatures{display:flex;justify-content:space-between;margin-top:70px}.total{text-align:right;font-weight:700}.printbutton{position:fixed;right:25px;bottom:25px}@media print{.printbutton{display:none}.paper{padding:0}body{font-size:12px}}@media(max-width:900px){body{display:block}aside{width:100%;padding:12px}aside .logo{max-height:48px}nav{display:flex;overflow-x:auto}nav a{white-space:nowrap}.logout{margin:5px}.content{width:100%;padding:18px}.stats{grid-template-columns:repeat(2,1fr)}.formgrid{grid-template-columns:1fr}.calendar{overflow-x:auto}.day{min-height:85px;font-size:12px}.inlineform{grid-template-columns:1fr 1fr}.heading{flex-wrap:wrap}}
