:root{--nav:#081426;--nav2:#0f2745;--ink:#122033;--muted:#667085;--line:#d7dfeb;--bg:#f5f8fc;--blue:#1d4ed8}body{background:var(--bg);color:var(--ink)}.cal-top{background:linear-gradient(135deg,var(--nav),var(--nav2))}.cal-shell{max-width:1440px}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-left:1px solid var(--line);border-top:1px solid var(--line);background:#fff}.cal-head{padding:.7rem;text-align:center;background:#eef3f9;font-weight:700;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.cal-day{min-height:135px;padding:.45rem;border-right:1px solid var(--line);border-bottom:1px solid var(--line);overflow:hidden}.cal-day.muted-day{background:#fafbfd;color:#98a2b3}.cal-day.today{box-shadow:inset 0 0 0 2px #2563eb}.day-num{font-weight:800;margin-bottom:.35rem}.event-chip{display:block;text-decoration:none;border-left:4px solid var(--blue);padding:.25rem .4rem;margin:.22rem 0;background:#f7f9fc;border-radius:.35rem;color:#1d2939;font-size:.82rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.event-chip:hover{background:#eef4ff}.week-grid{display:grid;grid-template-columns:repeat(7,minmax(180px,1fr));gap:.75rem;overflow-x:auto}.week-col{background:#fff;border:1px solid var(--line);border-radius:.7rem;min-height:350px;padding:.7rem}.agenda-card{border-left:5px solid var(--blue)}.badge-soft{background:#eaf2ff;color:#1849a9}.card{border-color:#e3e9f2}.form-label{font-weight:700}.nav-pills .nav-link.active{background:#1d4ed8}@media(max-width:800px){.calendar-grid{min-width:760px}.calendar-scroll{overflow-x:auto}.cal-day{min-height:110px}.cal-shell{padding-left:.7rem!important;padding-right:.7rem!important}}

/* Taiwan government holidays */
.tw-holiday-day{background:rgba(220,53,69,.055)}
.tw-holiday-day .day-num{color:#b02a37;font-weight:700}
.tw-holiday-label{font-size:.72rem;line-height:1.2;color:#b02a37;font-weight:600;margin:2px 0 5px;white-space:normal}


/* V6.13 calendar display enhancements */
.office-palette{display:grid;grid-template-columns:repeat(7,34px);gap:8px;align-items:center}
.color-swatch{width:34px;height:30px;border:2px solid #d6dbe3;border-radius:5px;background:var(--swatch);box-shadow:inset 0 0 0 1px rgba(255,255,255,.45);cursor:pointer}
.color-swatch:hover{transform:translateY(-1px);box-shadow:0 2px 7px rgba(0,0,0,.18)}
.color-swatch.selected{outline:3px solid #1d4ed8;outline-offset:2px}
.department-highlight{padding:10px;border-radius:9px;background:#eef4ff}
.rest-day{background:#fff1f1}
.rest-day .day-num{color:#c62828}
.rest-day-week{background:#fff5f5;border-color:#efcaca}
.rest-day-head{color:#b42318}
.cal-day.muted-day,
.cal-day.muted-day.rest-day,
.cal-day.muted-day.tw-holiday-day{background:#eceff3;color:#98a2b3}
.cal-day.muted-day .day-num,
.cal-day.muted-day.rest-day .day-num,
.cal-day.muted-day.tw-holiday-day .day-num{color:#98a2b3}
.cal-day.muted-day .tw-holiday-label{color:#98a2b3}
@media(max-width:600px){.office-palette{grid-template-columns:repeat(7,30px)}.color-swatch{width:30px;height:28px}}


/* V6.13.1 calendar month state fix */
.calendar-grid .weekend-head{
    background:#ffe8e8 !important;
    color:#b42318 !important;
}
.calendar-grid .cal-day.current-month-workday{
    background:#ffffff !important;
    color:#122033 !important;
}
.calendar-grid .cal-day.current-month-rest{
    background:#ffe8e8 !important;
    color:#b42318 !important;
}
.calendar-grid .cal-day.current-month-rest .day-num,
.calendar-grid .cal-day.current-month-rest .add-day-link{
    color:#b42318 !important;
}
.calendar-grid .cal-day.outside-month{
    background:#e7e9ed !important;
    color:#9aa3af !important;
}
.calendar-grid .cal-day.outside-month .day-num,
.calendar-grid .cal-day.outside-month .add-day-link,
.calendar-grid .cal-day.outside-month .tw-holiday-label,
.calendar-grid .cal-day.outside-month .weekend-label{
    color:#9aa3af !important;
}
.calendar-grid .cal-day.outside-month .event-chip{
    opacity:.55;
    filter:grayscale(.45);
}
.weekend-label{
    display:inline-block;
    font-size:.72rem;
    line-height:1.2;
    color:#b42318;
    font-weight:700;
    margin:2px 0 5px;
}
.tw-holiday-label{
    color:#b42318 !important;
    font-weight:700 !important;
}
.week-col.rest-day-week{
    background:#fff0f0 !important;
    border-color:#efc1c1 !important;
}
.week-col.rest-day-week .week-day-head{
    color:#b42318 !important;
}


/* V6.13.2 clearer Office-style color picker */
.selected-color-panel{
    display:flex;
    align-items:center;
    gap:10px;
    min-height:54px;
    padding:8px 10px;
    border:1px solid #d7dfeb;
    border-radius:9px;
    background:#fff;
}
.selected-color-preview{
    width:34px;
    height:34px;
    border-radius:7px;
    background:var(--selected-color);
    border:2px solid rgba(0,0,0,.12);
    box-shadow:inset 0 0 0 1px rgba(255,255,255,.45);
    flex:0 0 auto;
}
.color-help{
    padding:10px 12px;
    border-radius:8px;
    background:#eef4ff;
    color:#344054;
    font-size:.92rem;
}
.office-palette-clear{
    display:grid;
    grid-template-columns:repeat(5,minmax(120px,1fr));
    gap:10px;
}
.color-choice{
    position:relative;
    display:flex;
    align-items:center;
    gap:9px;
    min-height:46px;
    padding:8px 11px;
    border:2px solid #d7dfeb;
    border-radius:9px;
    background:#fff;
    color:#263445;
    font-weight:700;
    cursor:pointer;
    text-align:left;
}
.color-choice:hover{
    border-color:#98a9c2;
    background:#f8fbff;
}
.color-choice.selected{
    border-color:#1d4ed8;
    box-shadow:0 0 0 3px rgba(29,78,216,.12);
    background:#eef4ff;
}
.color-choice-dot{
    width:24px;
    height:24px;
    border-radius:5px;
    background:var(--swatch);
    border:1px solid rgba(0,0,0,.18);
    flex:0 0 auto;
}
.color-check{
    margin-left:auto;
    opacity:0;
    color:#1d4ed8;
    font-size:1.1rem;
}
.color-choice.selected .color-check{opacity:1}
.custom-color-box{
    padding:12px;
    border:1px dashed #b9c4d3;
    border-radius:9px;
    background:#fafcff;
}
@media(max-width:800px){
    .office-palette-clear{grid-template-columns:repeat(2,minmax(120px,1fr))}
}

/* V6.14 responsive calendar */
.calendar-mobile{display:none}
.mobile-month-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden}
.mobile-month-head{padding:.48rem .15rem;text-align:center;background:#eef3f9;border-right:1px solid var(--line);font-size:.78rem;font-weight:800}
.mobile-month-day{position:relative;min-height:54px;padding:.25rem;border-right:1px solid var(--line);border-top:1px solid var(--line);text-decoration:none;color:var(--ink);background:#fff}
.mobile-month-day.outside-month{background:#eef0f3;color:#a0a7b1}.mobile-month-day.current-month-rest{background:#fff0f0;color:#b42318}.mobile-month-day.today{box-shadow:inset 0 0 0 2px #2563eb}
.mobile-day-num{font-weight:800;font-size:.88rem}.mobile-event-count{position:absolute;right:4px;bottom:4px;min-width:20px;height:20px;padding:0 4px;border-radius:10px;background:#1d4ed8;color:#fff;font-size:.7rem;line-height:20px;text-align:center;font-weight:800}
.mobile-holiday-dot{width:6px;height:6px;border-radius:50%;background:#dc3545;display:inline-block;margin-left:2px;vertical-align:middle}
.mobile-month-agenda{display:flex;flex-direction:column;gap:.65rem;margin-top:1rem}.mobile-agenda-day{background:#fff;border:1px solid var(--line);border-radius:12px;padding:.75rem}.mobile-agenda-day.rest{background:#fff8f8}
.mobile-agenda-date{font-weight:800;margin-bottom:.45rem;display:flex;justify-content:space-between;gap:.5rem}.mobile-agenda-event{display:block;text-decoration:none;color:#1d2939;background:#f7f9fc;border-left:4px solid var(--blue);border-radius:7px;padding:.55rem .65rem;margin-top:.4rem}
.calendar-mobile-note{font-size:.82rem;color:#667085}
@media(max-width:767.98px){
 .cal-shell{padding-left:.7rem!important;padding-right:.7rem!important}.calendar-desktop{display:none!important}.calendar-mobile{display:block!important}
 .week-grid{display:grid;grid-template-columns:1fr;gap:.65rem;overflow:visible}.week-col{min-height:auto;padding:.75rem}
 .cal-top .cal-shell{padding-top:.55rem;padding-bottom:.55rem}.cal-top .navbar-brand{max-width:calc(100% - 56px)}
 .cal-nav-toggle{display:inline-flex!important}.cal-nav-collapse{width:100%;padding-top:.6rem}.cal-nav-collapse .btn{flex:1 1 calc(50% - .5rem)}
 .calendar-title-row{align-items:stretch!important}.calendar-title-row>div:first-child{width:100%}
 .calendar-nav-buttons{display:grid!important;grid-template-columns:1fr 1fr 1fr;width:100%}.calendar-nav-buttons .btn{padding:.55rem .35rem}
 .nav-pills{display:grid;grid-template-columns:repeat(3,1fr);gap:.35rem}.nav-pills .nav-item{width:100%}.nav-pills .nav-link{width:100%;text-align:center}
 .agenda-card .card-body{padding:1rem}.office-palette-clear{grid-template-columns:1fr 1fr}.selected-color-panel{min-height:48px}select[multiple]{min-height:150px}
}
@media(max-width:420px){.cal-nav-collapse .btn{flex:1 1 100%}.office-palette-clear{grid-template-columns:1fr}}

/* V6.14.1 phone calendar bottom dock */
.calendar-mobile-dock{display:none!important}
@media(max-width:767.98px){
 body{padding-bottom:78px}
 .calendar-mobile-dock{
   position:fixed;left:0;right:0;bottom:0;z-index:1040;
   display:grid!important;grid-template-columns:repeat(5,1fr);
   padding:6px max(8px,env(safe-area-inset-left)) calc(6px + env(safe-area-inset-bottom));
   background:rgba(255,255,255,.97);backdrop-filter:blur(12px);
   border-top:1px solid #d8e0eb;box-shadow:0 -5px 18px rgba(17,34,51,.10)
 }
 .calendar-mobile-dock a{
   min-height:52px;text-decoration:none;color:#667085;display:flex;flex-direction:column;
   align-items:center;justify-content:center;gap:1px;border-radius:10px;font-weight:700
 }
 .calendar-mobile-dock a span{font-size:1.2rem;line-height:1}
 .calendar-mobile-dock a small{font-size:.72rem}
 .calendar-mobile-dock a.active{color:#1d4ed8;background:#eef4ff}
 .calendar-mobile-dock .calendar-dock-add{
   width:60px;height:60px;min-height:60px;justify-self:center;margin-top:-18px;
   border-radius:50%;background:#1d4ed8;color:#fff;box-shadow:0 6px 16px rgba(29,78,216,.3)
 }
 .calendar-mobile-dock .calendar-dock-add span{font-size:1.65rem}
 .calendar-mobile-dock .calendar-dock-add small{font-size:.68rem}
}
