:root{--bg: #ffffff;--surface: #f8f9f8;--surface-2: #f1f3f1;--border: #e5e7e3;--border-strong: #d3d6d0;--text: #141815;--text-2: #5b625c;--text-3: #8a908a;--accent: #0f6e56;--accent-hover: #0c5c47;--accent-bg: #e6f3ee;--accent-bg-strong: #cfe9df;--danger: #b3261e;--danger-bg: #fcebea;--warn: #8a5a00;--warn-bg: #fdf3dd;--radius-sm: 6px;--radius: 10px;--radius-lg: 14px;--shadow-sm: 0 1px 2px rgba(20, 24, 21, .06);--shadow-md: 0 4px 16px rgba(20, 24, 21, .08), 0 1px 3px rgba(20, 24, 21, .06);--shadow-lg: 0 12px 32px rgba(20, 24, 21, .12), 0 2px 6px rgba(20, 24, 21, .06);--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-7: 32px;--sp-8: 40px;--sp-9: 56px;--font: -apple-system, "Segoe UI", "Noto Sans Bengali", "Hind Siliguri", Roboto, system-ui, sans-serif;--ease: cubic-bezier(.2, .7, .3, 1)}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font);font-size:15.5px;line-height:1.6;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3{margin:0;letter-spacing:-.01em;font-weight:700}h1{font-size:26px}h2{font-size:20px}h3{font-size:16px}p{margin:0}button,input,select{font-family:inherit;font-size:inherit;color:inherit}a{color:var(--accent)}::selection{background:var(--accent-bg-strong)}*:focus-visible{outline:2.5px solid var(--accent);outline-offset:2px;border-radius:4px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 20px;border-radius:var(--radius);border:1px solid transparent;font-weight:600;font-size:14.5px;cursor:pointer;transition:transform .12s var(--ease),box-shadow .15s var(--ease),background-color .15s var(--ease),opacity .15s var(--ease);white-space:nowrap}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:active:not(:disabled){transform:scale(.98)}.btn-solid{background:var(--accent);color:#fff;box-shadow:var(--shadow-sm)}.btn-solid:hover:not(:disabled){background:var(--accent-hover);box-shadow:var(--shadow-md)}.btn-outline{background:#fff;border-color:var(--border-strong);color:var(--text)}.btn-outline:hover:not(:disabled){border-color:var(--accent);color:var(--accent);background:var(--accent-bg)}.btn-ghost{background:transparent;color:var(--text-2)}.btn-ghost:hover:not(:disabled){background:var(--surface-2);color:var(--text)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover:not(:disabled){opacity:.92;box-shadow:var(--shadow-md)}.btn-sm{min-height:34px;padding:0 14px;font-size:13.5px;border-radius:var(--radius-sm)}.card{background:#fff;border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--sp-6);box-shadow:var(--shadow-sm)}.input,select.input{width:100%;min-height:44px;padding:0 14px;border:1.5px solid var(--border-strong);border-radius:var(--radius);background:#fff;transition:border-color .15s var(--ease),box-shadow .15s var(--ease)}.input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-bg)}.input::placeholder{color:var(--text-3)}.input:disabled{background:var(--surface);color:var(--text-3)}.label{font-size:13px;font-weight:600;color:var(--text-2);margin-bottom:7px;display:block}.field{margin-bottom:var(--sp-4)}.field-error{color:var(--danger);font-size:12.5px;margin-top:5px}.banner{border-radius:var(--radius);padding:13px 16px;font-size:14px;display:flex;align-items:flex-start;gap:10px;line-height:1.5}.banner-warn{background:var(--warn-bg);color:var(--warn)}.banner-danger{background:var(--danger-bg);color:var(--danger)}.banner-accent{background:var(--accent-bg);color:var(--accent-hover)}.toast{position:fixed;bottom:28px;left:50%;transform:translate(-50%);background:var(--text);color:#fff;padding:12px 22px;border-radius:999px;font-size:14px;box-shadow:var(--shadow-lg);z-index:1000;animation:toast-in .25s var(--ease);max-width:min(90vw,520px);text-align:center}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}.status-pill{display:inline-flex;align-items:center;padding:3px 11px;border-radius:999px;font-size:12px;font-weight:700;letter-spacing:.01em}.status-pending{background:var(--warn-bg);color:var(--warn)}.status-approved{background:var(--accent-bg);color:var(--accent-hover)}.status-rejected{background:var(--danger-bg);color:var(--danger)}.skeleton{background:linear-gradient(90deg,var(--surface) 25%,var(--surface-2) 37%,var(--surface) 63%);background-size:400% 100%;animation:skeleton-wave 1.4s ease infinite;border-radius:var(--radius-sm)}@keyframes skeleton-wave{0%{background-position:100% 50%}to{background-position:0 50%}}.fade-in{animation:fade-in .2s var(--ease)}@keyframes fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.shell-header{display:flex;align-items:center;justify-content:space-between;padding:0 24px;height:64px;border-bottom:1px solid var(--border);background:#fff;position:sticky;top:0;z-index:10}.brand{display:flex;align-items:center;gap:10px}.brand-mark{width:34px;height:34px;object-fit:contain;flex-shrink:0}.brand-name{font-weight:700;font-size:15.5px;color:var(--text)}.shell-nav{display:flex;gap:4px}.shell-nav a{color:var(--text-2);text-decoration:none;font-weight:600;font-size:14px;padding:8px 14px;border-radius:var(--radius-sm);transition:background-color .15s var(--ease),color .15s var(--ease)}.shell-nav a.active{color:var(--accent);background:var(--accent-bg)}.shell-nav a:hover:not(.active){background:var(--surface-2);color:var(--text)}.shell-right{display:flex;align-items:center;gap:16px;font-size:13px;color:var(--text-3)}.shell-right .last-login{display:flex;align-items:center;gap:6px}.hamburger-btn{display:none;flex-direction:column;justify-content:center;align-items:center;gap:4px;width:40px;height:40px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:#fff;cursor:pointer;padding:0;flex-shrink:0}.hamburger-btn span{display:block;width:18px;height:2px;background:var(--text);transition:transform .2s var(--ease),opacity .2s var(--ease)}.hamburger-btn[aria-expanded=true] span:nth-child(1){transform:translateY(6px) rotate(45deg)}.hamburger-btn[aria-expanded=true] span:nth-child(2){opacity:0}.hamburger-btn[aria-expanded=true] span:nth-child(3){transform:translateY(-6px) rotate(-45deg)}.shell-nav-mobile-right,.nav-backdrop{display:none}@media (max-width: 900px){.hamburger-btn{display:flex}.shell-right{display:none}.shell-header{padding:0 16px}.shell-nav{position:fixed;top:64px;left:0;bottom:0;width:280px;max-width:84vw;background:#fff;border-right:1px solid var(--border);flex-direction:column;align-items:stretch;gap:2px;padding:16px;transform:translate(-100%);transition:transform .22s var(--ease);overflow-y:auto;z-index:20}.shell-nav.open{transform:translate(0);box-shadow:var(--shadow-lg)}.shell-nav a{padding:13px 14px;font-size:15px}.shell-nav-mobile-right{display:flex;flex-direction:column;gap:12px;margin-top:16px;padding-top:16px;border-top:1px solid var(--border)}.shell-nav-mobile-right .last-login{font-size:13px;color:var(--text-3)}.shell-nav-mobile-right .btn{width:100%}.nav-backdrop{display:block;position:fixed;right:0;bottom:0;left:0;top:64px;background:#14181559;z-index:5}}@media (max-width: 480px){.brand-name{font-size:14px}}.identity-strip{background:var(--surface);border-bottom:1px solid var(--border);padding:11px 24px;font-size:13.5px;color:var(--text-2);display:flex;gap:8px;flex-wrap:wrap}.identity-strip b{color:var(--text);font-weight:700}.shell-content{max-width:860px;margin:0 auto;padding:32px 20px 60px}@media (max-width: 600px){.shell-content{padding:20px 14px 48px}}.page-header{margin-bottom:20px}.page-header h1{margin-bottom:4px}.page-header .sub{color:var(--text-3);font-size:13.5px}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:16px;background:radial-gradient(1200px 600px at 50% -10%,var(--accent-bg) 0%,transparent 60%),var(--bg)}.login-card{width:400px;max-width:100%;box-shadow:var(--shadow-lg)}.login-logo{display:flex;flex-direction:column;align-items:center;gap:10px;margin-bottom:26px}.login-logo .brand-mark{width:68px;height:68px}.login-logo .title{font-weight:700;font-size:18px;text-align:center}.login-logo .subtitle{color:var(--text-3);font-size:13px}.otp-input{letter-spacing:.3em;font-weight:700;text-align:center;font-size:18px}.login-btn-row{display:flex;gap:10px}.login-btn-row .btn{flex:1}@media (max-width: 380px){.login-btn-row{flex-direction:column}.login-btn-row .btn{flex:none;width:100%}}.info-line{display:flex;align-items:center;gap:8px;color:var(--text-2);font-size:14px;margin-bottom:18px;flex-wrap:wrap}.info-line .dot{color:var(--border-strong)}.info-line.warn-close{color:var(--warn);font-weight:600}.summary-card{margin-bottom:24px}.curriculum-row{display:flex;gap:10px;flex-wrap:wrap;align-items:center;padding:10px 0;border-bottom:1px solid var(--border)}.curriculum-row:last-of-type{border-bottom:none}.curriculum-row .cur-label{font-weight:700;min-width:200px;font-size:14px}@media (max-width: 600px){.curriculum-row{flex-direction:column;align-items:flex-start;gap:8px}.curriculum-row .cur-label{min-width:0}}.sub-chip{background:var(--surface-2);color:var(--text);padding:5px 12px;border-radius:999px;font-size:13px;font-weight:600;border:1px solid var(--border)}.sub-chip .count{color:var(--text-3);font-weight:500;margin-left:4px}.summary-total{font-weight:700;margin-top:14px;padding-top:14px;border-top:2px solid var(--border);display:flex;justify-content:space-between;font-size:15px}.summary-total .n{color:var(--accent);font-size:18px}.download-btn{width:100%;min-height:60px;border-radius:var(--radius-lg);background:linear-gradient(135deg,var(--accent),var(--accent-hover));color:#fff;border:none;font-weight:700;font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:12px;box-shadow:var(--shadow-md);transition:transform .12s var(--ease),box-shadow .15s var(--ease),opacity .15s var(--ease)}.download-btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:var(--shadow-lg)}.download-btn:active:not(:disabled){transform:translateY(0) scale(.99)}.download-btn:disabled{opacity:.7;cursor:wait}.download-btn .filename{font-weight:500;opacity:.85;font-size:14px}.extras-card{margin-top:22px}.extra-row{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;padding:12px 0;border-bottom:1px solid var(--border)}.extra-row:last-child{border-bottom:none}@media (max-width: 600px){.extra-row{flex-direction:column;align-items:flex-start}.extra-row .btn{width:100%}}.empty-state{text-align:center;padding:64px 24px;color:var(--text-2)}.empty-state .icon-wrap{width:56px;height:56px;border-radius:50%;background:var(--surface-2);display:flex;align-items:center;justify-content:center;margin:0 auto 16px;color:var(--text-3)}.empty-state .title{font-size:16px;font-weight:700;color:var(--text);margin-bottom:6px}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:18px}@media (max-width: 600px){.two-col{grid-template-columns:1fr}}.day-card h3{display:flex;align-items:center;gap:8px;margin-bottom:14px}.day-card h3 .date{color:var(--text-3);font-weight:500;font-size:13px}.routine-item{display:flex;justify-content:space-between;flex-wrap:wrap;gap:4px 12px;padding:9px 0;border-bottom:1px solid var(--border);font-size:14px}.routine-item:last-child{border-bottom:none}.routine-item .shift-tag{color:var(--text-3);text-transform:capitalize;min-width:70px}.routine-item .cnt{color:var(--text-2)}.routine-empty{color:var(--text-3);font-size:13.5px;padding:8px 0}table.simple{width:100%;border-collapse:collapse;font-size:14px}table.simple th,table.simple td{text-align:left;padding:11px 12px;border-bottom:1px solid var(--border);white-space:nowrap}table.simple th{color:var(--text-3);font-weight:600;font-size:12.5px;text-transform:uppercase;letter-spacing:.03em;background:var(--surface)}table.simple tbody tr{transition:background-color .12s var(--ease)}table.simple tbody tr:hover{background:var(--surface)}.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.table-scroll table{min-width:520px}@media (max-width: 600px){.table-scroll{background:linear-gradient(to right,#fff 30%,#fff0),linear-gradient(to right,#fff0,#fff 70%) 100% 0,linear-gradient(to right,#14181514,#14181500),linear-gradient(to left,#14181514,#14181500) 100% 0;background-repeat:no-repeat;background-size:40px 100%,40px 100%,12px 100%,12px 100%;background-attachment:local,local,scroll,scroll}}.request-form-row{display:grid;grid-template-columns:1.4fr 1.4fr 1fr auto;gap:12px;align-items:end}@media (max-width: 600px){.request-form-row{grid-template-columns:1fr}}
