/* BOOK-AKAI: visual design directly derived from supplied DASHPY Index (9).html
   Palette: #f5f7f9, #7c1630/#641324, #8e1d35, Inter/Segoe UI.
   This stylesheet is self-hosted and does not require a CDN. */
:root{--bg:#f5f7f9;--nav:#641324;--surface:#fff;--ink:#1c2936;--muted:#6b7785;--line:#e3e8ee;--accent:#8e1d35;--accent2:#f6ebee;--success:#24744e;--amber:#b17821;--danger:#b43e40;--shadow:0 10px 35px rgba(22,41,59,.06)}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;font:14px/1.5 Inter,'Segoe UI',Arial,sans-serif;color:var(--ink);background:var(--bg)}
[hidden]{display:none!important}button,input,select,textarea{font:inherit}button{cursor:pointer}a{text-decoration:none;color:inherit}p{margin:8px 0 15px}
.shell{display:flex;min-height:100vh}.sidebar{width:244px;flex:0 0 244px;background:linear-gradient(180deg,#7c1630 0%,#651324 48%,#4f0f1d 100%);border-right:1px solid #4f0f1d;padding:24px 15px;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:18px;color:#fff}
.brand{display:block;padding:4px 11px 13px;border-bottom:1px solid rgba(255,255,255,.18)}.brand strong{font-size:20px;letter-spacing:-.55px;color:#fff}.brand small{display:block;color:#f3d8df;font-size:11px;letter-spacing:1.4px;text-transform:uppercase}
.nav-label{font-size:10px;text-transform:uppercase;color:#f0cad3;font-weight:750;letter-spacing:1.3px;margin:0 12px 8px}.nav{display:grid;gap:4px}.nav a{width:100%;display:flex;justify-content:space-between;align-items:center;background:rgba(255,255,255,.05);color:#fff;border:1px solid transparent;padding:11px 12px;text-align:left;border-radius:9px;font-weight:550}.nav a:hover{background:rgba(255,255,255,.13)}.nav a.active{background:#fff;border-color:#f1d8de;color:#7c1630;box-shadow:0 3px 10px rgba(0,0,0,.08);font-weight:750}
.nav-count{font-size:10px;padding:1px 6px;background:#fae0e6;color:#70192f;border-radius:20px}.user-mini{margin-top:auto;border-top:1px solid rgba(255,255,255,.18);padding:16px 10px 0;color:#f0cad3;font-size:11px;overflow-wrap:anywhere}.user-mini strong{display:block;color:#fff;font-size:12px}.user-role{margin:7px 0 11px;color:#f3c5d1}.sidebar-link{display:block;width:100%;text-align:left;border:1px solid rgba(255,255,255,.18);border-radius:8px;background:rgba(255,255,255,.06);color:#fff;margin-top:7px;padding:8px 10px;font-size:11px;font-weight:650}.sidebar-link:hover{background:rgba(255,255,255,.18)}
.main{flex:1;min-width:0;padding:28px clamp(18px,3vw,44px) 44px;max-width:1850px;margin:0 auto}.topbar{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:24px}.eyebrow{font-size:11px;letter-spacing:1.4px;text-transform:uppercase;font-weight:750;color:var(--accent);margin:0 0 6px}.page-title{font-size:28px;letter-spacing:-.8px;line-height:1.15;margin:0}.sub{color:var(--muted);font-size:13px;margin-top:8px;max-width:950px}.user-chip{display:inline-block;font-size:12px;font-weight:700;background:#fff;border:1px solid var(--line);border-radius:9px;padding:8px 12px}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:13px;box-shadow:var(--shadow);padding:21px}.panel h2{font-size:16px;letter-spacing:-.3px;margin:0 0 16px}.panel h3{font-size:13px}.panel.narrow{max-width:740px}.wide-form{max-width:800px}.stat-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px;margin-bottom:18px}.stat{background:#fff;border:1px solid var(--line);border-radius:12px;padding:18px}.stat .name{font-size:12px;color:#6f7e8a;font-weight:600}.stat .number{font-size:31px;font-weight:770;letter-spacing:-1.2px;margin-top:7px}.stat .meta{color:#7d8995;font-size:11px;margin-top:5px}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:16px}.section-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:15px}.section-head h2{margin:0}.muted{color:var(--muted)}.tiny{font-size:11px}.section-label{font-size:10px;letter-spacing:1px;color:var(--muted);font-weight:750;margin:22px 0 8px}
.btn{display:inline-flex;align-items:center;justify-content:center;border:1px solid #dce3e9;background:#fff;color:#2f4455;padding:9px 14px;border-radius:8px;font-size:12px;font-weight:700;transition:.15s;min-height:36px}.btn:hover{background:#f4f7f9}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover{background:#6e152a}.btn.danger{color:#a72e36;border-color:#e7cbd0;background:#fff}.btn.danger:hover{background:#fff0f1}.btn.small{padding:5px 9px;min-height:30px;font-size:11px}.btn.wide{width:100%}.btn:focus-visible,.nav a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid #76a5bf;outline-offset:2px}.actions{display:flex;gap:9px;flex-wrap:wrap;align-items:center}.page-actions{margin-bottom:17px}
.table-scroll{overflow-x:auto;border:1px solid var(--line);border-radius:9px;max-height:65vh;overflow-y:auto}table{border-collapse:separate;border-spacing:0;width:100%;font-size:12px}th{position:sticky;top:0;z-index:2;background:#f4f7f9;text-align:left;color:#627282;font-size:11px;letter-spacing:.2px;border-bottom:1px solid var(--line);padding:11px 12px;white-space:nowrap}td{padding:11px 12px;border-bottom:1px solid #edf1f4;vertical-align:top;min-width:85px}tr:last-child td{border-bottom:0}tbody tr:hover{background:#fbfcfd}td small{display:block;color:var(--muted);font-size:11px;margin-top:4px}.link,td a:not(.btn){color:#8e1d35;font-weight:650}.link:hover,td a:hover{text-decoration:underline}.count-pill{font-size:11px;color:#7c3043;border:1px solid #ead1d7;border-radius:20px;padding:3px 8px}.role-badge{display:inline-block;border:1px solid #e3e8ee;border-radius:20px;background:#f5f7f9;padding:3px 8px;white-space:nowrap;font-size:11px;font-weight:700}
.tag{border-radius:20px;display:inline-flex;align-items:center;padding:3px 9px;font-size:11px;font-weight:750;white-space:nowrap;background:#edf1f3;color:#536477}.tag.pending_hrd,.tag.pending_chief,.tag.pending_ceo,.tag.pending,.tag.waiting{background:#fff4dc;color:#916419}.tag.approved{background:#e3f3e8;color:#28784c}.tag.rejected,.tag.cancelled{background:#f9e3e5;color:#9c3245}.tag.large{font-size:12px}.empty{padding:28px;text-align:center;color:var(--muted)}.empty.short{padding:14px}.activity-link{display:flex;justify-content:space-between;gap:15px;align-items:center;padding:12px 2px;border-bottom:1px solid #edf1f4;font-size:12px}.activity-link:hover{background:#fbfcfd}.activity-link strong{display:block}.activity-link small{display:block;color:var(--muted);margin-top:4px}.notification-row{padding:15px 4px}
.form-stack{display:grid;gap:17px}.form-stack label{font-size:12px;font-weight:700;color:#546473;display:block}.form-stack input,.form-stack textarea,.form-stack select{display:block;border:1px solid #d5dfe6;border-radius:8px;padding:9px 11px;background:white;color:#263642;width:100%;min-height:39px;margin-top:6px;font-weight:400;font-size:13px}.form-stack textarea{resize:vertical;min-height:85px}.form-stack input:disabled{background:#f3f6f8;color:#8794a0}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.hint{font-size:11px;color:var(--muted);font-weight:400}.info-note{padding:13px 15px;border:1px solid #e5eaf0;background:#fbfcfd;color:#5e6e7f;border-radius:10px;font-size:12px;margin:14px 0}.details>div{display:flex;justify-content:space-between;gap:18px;padding:10px 0;border-bottom:1px solid #edf1f4;font-size:12px}.details>div span{color:var(--muted)}.details>div strong{text-align:right;overflow-wrap:anywhere}.reason-text{white-space:pre-wrap;border:1px solid var(--line);background:#fafbfc;border-radius:9px;padding:12px;font-size:13px}.timeline{display:grid;gap:16px;margin:14px 0 20px}.timeline-item{display:flex;gap:13px}.step-index{height:30px;width:30px;border-radius:50%;border:1px solid #e3c6ce;color:#7c1630;background:#f8eef1;display:grid;place-items:center;font-weight:800;flex-shrink:0}.timeline-item strong{font-size:13px}.timeline-item p{margin:3px 0}.timeline-item small{color:var(--muted)}.comment{margin-top:8px;padding:9px 11px;background:#fbf7f8;border-radius:8px;font-size:12px}.review-box{border:1px solid #ebd6db;background:#fffafb;border-radius:10px;padding:17px}.secret{font-size:14px;color:#762039;overflow-wrap:anywhere}
.flash-stack{display:grid;gap:8px;margin-bottom:18px}.flash{border:1px solid #dce5eb;background:#f5f8fa;color:#46606d;border-radius:10px;padding:11px 13px;font-size:12px;margin-bottom:10px}.flash.error{border-color:#efd2d3;background:#fff5f5;color:#a53c41}.flash.success{border-color:#cce7d9;background:#effbf3;color:#24744e}
.auth-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(125deg,#370916 0%,#681429 54%,#9d253a 100%);padding:24px}.auth-panel{width:min(430px,100%);background:#fff;border-radius:19px;padding:37px;box-shadow:0 22px 80px rgba(29,0,7,.28)}.auth-brand{font-size:30px;font-weight:850;letter-spacing:-1.3px;color:#751831}.auth-subtitle{color:#7d7076;font-size:12px;letter-spacing:.5px;margin:0 0 24px}.auth-panel h2{margin:0 0 7px;font-size:20px}.auth-panel p{color:#65727d;font-size:12px;line-height:1.65}.auth-panel .form-stack label{font-size:12px}.auth-panel .btn{margin-top:4px;padding:12px}.auth-help{margin-top:20px!important}.auth-version{text-align:center;font-size:10px!important;color:#8c7c84!important}
.calendar-toolbar{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:16px}.calendar-toolbar h2{margin:0}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px}.weekday{background:#f4f7f9;color:#627282;text-align:center;font-size:11px;font-weight:750;padding:11px 2px}.day-cell{min-height:91px;border:1px solid #e3e8ee;border-radius:5px;padding:5px;min-width:0;background:#fff}.day-cell.empty-day{background:#f9fafb}.day-label{font-size:11px;font-weight:700;color:#4f5d6b;margin-bottom:6px}.day-label.today{color:#8e1d35}.cal-event{background:#f6ebee;color:#782238;border-left:3px solid #8e1d35;border-radius:4px;padding:4px 5px;font-size:10px;line-height:1.3;margin:3px 0;overflow:hidden;text-overflow:ellipsis}.calendar-legend{font-size:11px;color:#6b7785;margin-top:14px}
@media(max-width:1000px){.two-col{grid-template-columns:1fr}.sidebar{width:205px;flex-basis:205px}}@media(max-width:680px){.shell{display:block}.sidebar{position:relative;width:100%;height:auto;padding:12px;gap:10px}.brand{border:0;padding:5px}.nav-label{display:none}.nav{display:flex;overflow-x:auto;gap:5px}.nav a{width:auto;white-space:nowrap;padding:9px 11px}.user-mini{margin-top:0;border:0;padding:5px;display:flex;flex-wrap:wrap;align-items:center;gap:7px}.user-mini strong{flex-basis:100%}.user-mini>div:not(.user-role){display:none}.sidebar-link{width:auto;margin:0}.main{padding:20px 14px}.page-title{font-size:23px}.topbar{margin-bottom:18px}.user-chip{display:none}.stat-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.stat{padding:13px}.stat .number{font-size:24px}.stat:last-child{grid-column:1/-1}.form-grid{grid-template-columns:1fr}.panel{padding:15px}.calendar-grid{gap:2px}.day-cell{min-height:67px;padding:3px}.cal-event{font-size:9px;padding:2px}.weekday{font-size:9px}}

.day-cell.weekend{background:#f1f3f5}.day-cell.national-holiday{background:#ffedf1;border-color:#e9b8c3}.day-cell.collective-holiday:not(.national-holiday){background:#fff6e7;border-color:#f2dbb2}.holiday-tag{font-size:9px;color:#92314a;line-height:1.1;font-weight:750;margin-bottom:3px}.collective-holiday .holiday-tag{color:#9d711d}.signature-pad{width:100%;height:150px;touch-action:none;background:#fff;border:1px dashed #bda9ae;border-radius:9px;display:block;cursor:crosshair}.signature-controls{display:flex;gap:10px;align-items:center;margin:8px 0 10px}.signature-caption{color:#65727d;font-size:11px}.signature-thumbnail{width:160px;max-height:65px;object-fit:contain;border:1px solid #e5e8ed;background:white;border-radius:5px;padding:3px}

/* PATCH v1.3 -- top hamburger app bar is ONLY for narrow phones. */
.mobile-appbar,.sidebar-backdrop{display:none}
.password-field{position:relative;display:block}
.form-stack .password-field input{padding-right:110px}
.password-toggle{position:absolute;right:7px;top:50%;transform:translateY(-50%);border:0;border-radius:6px;padding:5px 10px;background:#f4ebee;color:#7c1630;font-size:12px;font-weight:750;min-width:78px}
.password-toggle:focus-visible,.mobile-menu-toggle:focus-visible{outline:2px solid #76a5bf;outline-offset:2px}
@media(max-width:680px){
  .mobile-appbar{display:flex;align-items:center;gap:15px;position:sticky;top:0;z-index:31;height:58px;padding:0 15px;background:#fff;border-bottom:1px solid var(--line);box-shadow:0 2px 10px rgba(0,0,0,.05)}
  .mobile-appbar-brand{font-size:17px;font-weight:800;color:#71182f;letter-spacing:-.4px}
  .mobile-menu-toggle{display:grid;place-items:center;background:transparent;border:0;border-radius:8px;width:42px;height:42px;flex-shrink:0}
  .hamburger{width:22px;display:grid;gap:5px}
  .hamburger i{height:2.5px;width:22px;border-radius:2px;background:#71182f;display:block}
  .sidebar{position:fixed;z-index:41;top:0;left:0;width:min(82vw,310px);max-width:310px;height:100dvh;max-height:100dvh;overflow-y:auto;overscroll-behavior:contain;display:flex;flex-direction:column;gap:18px;padding:23px 15px;transform:translateX(-105%);visibility:hidden;pointer-events:none;transition:transform .22s ease,visibility .22s ease;box-shadow:14px 0 35px rgba(0,0,0,.22)}
  .mobile-nav-open .sidebar{transform:translateX(0);visibility:visible;pointer-events:auto}
  .sidebar-backdrop{display:block;position:fixed;inset:0;z-index:40;background:rgba(17,22,32,.48);opacity:0;visibility:hidden;pointer-events:none;transition:opacity .2s ease, visibility .2s ease}
  .mobile-nav-open .sidebar-backdrop{opacity:1;visibility:visible;pointer-events:auto}
  body.mobile-nav-open{overflow:hidden}
  .sidebar .nav-label{display:block}
  .sidebar .nav{display:grid;overflow:visible;gap:4px}
  .sidebar .nav a{width:100%;white-space:normal;padding:10px 12px}
  .sidebar .user-mini{margin-top:auto;border-top:1px solid rgba(255,255,255,.18);padding:16px 10px 0;display:block}
  .sidebar .user-mini>div:not(.user-role){display:block}
  .sidebar .sidebar-link{display:block;width:100%;margin-top:7px}
  .main{padding-top:17px}
}
@media(prefers-reduced-motion:reduce){.sidebar,.sidebar-backdrop{transition:none!important}}
