@charset "UTF-8";html,body{height:100%;margin:0;font-family:Noto Sans TC,sans-serif;background-color:#f8f9fa}*{box-sizing:border-box}@media (max-width: 768px){html{font-size:14px}}.container{margin:0 auto;padding:1rem;max-width:1200px}@media (max-width: 768px){.container{padding:.5rem}}.page-title{color:#343a40;margin-bottom:1.5rem}.card{background-color:#fff;border-radius:8px;box-shadow:0 2px 12px #00000014;padding:1.5rem;margin-bottom:1.5rem}.btn{display:inline-block;font-weight:500;color:#fff;background-color:#3b82f6;border:none;border-radius:4px;padding:.5rem 1rem;font-size:.875rem;cursor:pointer;transition:background-color .2s}.btn:hover{background-color:#2563eb}.btn-secondary{background-color:#6c757d}.btn-secondary:hover{background-color:#5c636a}.form-group{margin-bottom:1rem}.form-control{display:block;width:100%;padding:.5rem .75rem;font-size:1rem;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out}.form-control:focus{border-color:#3b82f6;outline:0}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.5rem}.badge{display:inline-block;padding:.25rem .5rem;font-size:.75em;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.375rem}.badge-primary{background-color:#cfe2ff;color:#084298}.badge-warning{background-color:#fff3cd;color:#664d03}.badge-danger{background-color:#f8d7da;color:#842029}.badge-success{background-color:#d1e7dd;color:#0f5132}.loading-spinner{width:50px;height:50px;margin:2rem auto;border:5px solid #f3f3f3;border-radius:50%;border-top:5px solid #3b82f6;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (max-width: 768px){.grid{grid-template-columns:1fr;gap:1rem}.card{padding:1rem;margin-bottom:1rem}.btn{padding:.75rem 1rem;font-size:.9rem;width:100%;margin-bottom:.5rem}.form-control{padding:.75rem;font-size:1rem}.page-title{font-size:1.5rem;margin-bottom:1rem}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}table{min-width:600px}}@media (max-width: 1024px) and (min-width: 769px){.grid{grid-template-columns:repeat(2,1fr)}.container{padding:.75rem}}@media (hover: none) and (pointer: coarse){.btn,.nav-links a,.sidebar-nav a{padding:.75rem 1rem;min-height:44px}}@media (max-width: 768px){.d-none-mobile{display:none!important}}@media (max-width: 768px){.d-block-mobile{display:block!important}}@media (max-width: 768px){.text-center-mobile{text-align:center!important}}@media (max-width: 768px){.w-100-mobile{width:100%!important}}body{overflow-x:hidden}.calendar-container{background:#fff;border-radius:8px;box-shadow:0 2px 12px #00000014;overflow:hidden;width:100%;max-width:100%;box-sizing:border-box;position:relative}.calendar-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.5rem;background:linear-gradient(135deg,#3b82f6,#1d4ed8);color:#fff}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:1px;background-color:#e5e7eb;padding:1px;width:100%;box-sizing:border-box}@media screen and (-ms-high-contrast: active),(-ms-high-contrast: none){.calendar-grid{display:-ms-grid;-ms-grid-columns:1fr 1fr 1fr 1fr 1fr 1fr 1fr;-ms-grid-rows:auto}.calendar-date{display:flex;flex-direction:column}}@supports not (display: grid){.calendar-grid{display:flex;flex-wrap:wrap;width:100%}.day-header,.calendar-date{flex:1;min-width:14.2857142857%;max-width:14.2857142857%;box-sizing:border-box}}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;background-color:#e5e7eb;padding:1px;width:100%;table-layout:fixed}.day-header{background:#f8fafc;padding:1rem .5rem;text-align:center;font-weight:600;color:#4b5563;font-size:.875rem;width:100%;min-width:0;box-sizing:border-box}.calendar-date{background:#fff;min-height:120px;max-height:120px;padding:.5rem;cursor:pointer;transition:all .2s;position:relative;display:flex;flex-direction:column;width:100%;min-width:0;box-sizing:border-box;overflow:hidden}.calendar-date:hover{background:#f8fafc}.calendar-date.other-month{color:#9ca3af;background:#f9fafb}.calendar-date.today{background:#eff6ff;border:2px solid #3b82f6}.calendar-date.selected{background:#dbeafe;border:2px solid #1d4ed8}.calendar-date.has-events{background:#f0f9ff}.date-number{font-weight:600;font-size:1rem;margin-bottom:.25rem;line-height:1.2}.schedule-indicators{flex:1;display:flex;flex-direction:column;gap:2px;overflow:hidden;min-height:0}.schedule-indicator{background:#3b82f6;color:#fff;padding:2px 4px;border-radius:3px;font-size:.75rem;line-height:1.2;cursor:pointer;transition:background-color .2s;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;min-width:0;flex-shrink:0}.schedule-indicator:hover{background:#1d4ed8}.schedule-indicator.more-indicator{background:#6b7280;text-align:center}.schedule-indicator.more-indicator:hover{background:#4b5563}@media (max-width: 768px){.calendar-header{padding:.75rem 1rem}.month-year{font-size:1.25rem}.btn-nav{width:32px;height:32px;font-size:1.25rem}.btn-today{padding:.375rem .75rem;font-size:.75rem}.calendar-date{min-height:80px;max-height:80px;padding:.25rem;overflow:hidden}.date-number{font-size:.875rem}.schedule-indicator{font-size:.625rem;padding:1px 2px}.day-header{padding:.75rem .25rem;font-size:.75rem}}
