@tailwind base;@tailwind components;@tailwind utilities;:root{--primary-color: #1976d2;--secondary-color: #dc004e;--background-color: #f5f5f5;--text-color: #333333;--transition-duration: .3s}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Open Sans,sans-serif;background-color:var(--background-color);color:var(--text-color);line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@font-face{font-family:Roboto;font-style:normal;font-weight:400;src:url(/assets/Roboto-Regular-CN_pkOMA.ttf) format("truetype");font-display:swap}#landing-page{width:100%;height:100vh;background:url(/assets/bg-CCdRjRCD.jpg) no-repeat center;background-size:cover}.layout-stable{contain:layout paint;content-visibility:auto;contain-intrinsic-size:0 500px;min-height:100vh;display:flex;flex-direction:column}.content-stable{min-height:200px;display:flex;flex-direction:column;justify-content:center;contain:layout size}.skeleton{animation:pulse 1.5s ease-in-out infinite;background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0,#f0f0f0 75%);background-size:200% 100%}@keyframes pulse{0%{opacity:1}50%{opacity:.5}to{opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}img,video,audio,iframe{max-width:100%;height:auto;contain:size}.media-container{aspect-ratio:16/9;contain:size;background:#f0f0f0}h1,h2,h3,h4,h5,h6{font-family:Roboto,sans-serif;line-height:1.2;margin-bottom:1rem}a{color:var(--primary-color);text-decoration:none;transition:color var(--transition-duration)}a:hover{color:var(--secondary-color)}.button{display:inline-flex;align-items:center;justify-content:center;padding:.5rem 1rem;border-radius:.375rem;font-weight:500;transition:all var(--transition-duration);contain:layout size}input,textarea,select{width:100%;padding:.5rem;border:1px solid #ddd;border-radius:.375rem;transition:border-color var(--transition-duration)}.modal{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;contain:layout size}.fade-in{animation:fadeIn var(--transition-duration) ease-in-out}.hidden{display:none}.visible{display:block}@media (max-width: 768px){.layout-stable{contain-intrinsic-size:0 300px}.content-stable{min-height:150px}}@media print{.no-print{display:none}body{background:#fff}}.custom-toast{font-family:Roboto,sans-serif;font-size:14px;box-shadow:0 4px 12px #00000026;padding:14px 20px;border-radius:8px;display:flex;align-items:center;animation:toastSlideIn .3s ease-out;min-width:250px}.custom-toast svg{flex-shrink:0}.custom-toast-success{background:#f1f8e9;color:#2e7d32;border-left:4px solid #4caf50}.custom-toast-error{background:#ffebee;color:#c62828;border-left:4px solid #ff5252}.custom-toast-loading{background:#e3f2fd;color:#1565c0;border-left:4px solid #2196f3}@keyframes toastSlideIn{0%{transform:translate(110%)}to{transform:translate(0)}}.toast-loader{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){*{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.fc-event{border:2px solid rgba(255,255,255,.8)!important;border-radius:8px!important;box-shadow:0 2px 8px #00000026,0 1px 3px #0000001a!important;margin:1px!important;transition:all .2s ease-in-out!important}.fc-event:hover{box-shadow:0 4px 12px #0003,0 2px 6px #00000026!important;transform:translateY(-1px)!important}.fc-daygrid-event{border:2px solid rgba(255,255,255,.8)!important;border-radius:8px!important;box-shadow:0 2px 8px #00000026,0 1px 3px #0000001a!important;margin:1px!important}.fc-daygrid-event:hover{box-shadow:0 4px 12px #0003,0 2px 6px #00000026!important;transform:translateY(-1px)!important}.fc-day-today{background:#1976d20d!important;border:2px solid #1976d2!important;border-radius:4px!important;position:relative!important;z-index:1!important}.fc-day-today .fc-daygrid-day-number{background:linear-gradient(135deg,#1976d2,#42a5f5)!important;color:#fff!important;border-radius:4px!important;font-weight:600!important}.fc-popover{background:#fff!important;border:1px solid #e0e0e0!important;border-radius:8px!important;box-shadow:0 8px 32px #0000001f!important;z-index:1300!important}.fc-popover-header{background:linear-gradient(135deg,#1976d2,#42a5f5)!important;color:#fff!important;padding:8px 12px!important;border-radius:8px 8px 0 0!important;border-bottom:none!important;font-weight:600!important;font-size:14px!important}.fc-popover-title{color:#fff!important;font-weight:600!important}.fc-popover-close{color:#fff!important;font-size:18px!important;padding:2px!important;border-radius:50%!important}.fc-popover-close:hover{background:#fff3!important}.fc-popover-body{background:#fff!important;padding:8px!important;border-radius:0 0 8px 8px!important;max-height:300px!important;overflow-y:auto!important}.fc-popover-body::-webkit-scrollbar{width:6px}.fc-popover-body::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px}.fc-popover-body::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:3px}.fc-popover-body::-webkit-scrollbar-thumb:hover{background:#a8a8a8}.react-select__menu{z-index:9999!important}.react-select__option--is-selected{background-color:#1976d2!important;color:#fff!important}.react-select__option--is-focused{background-color:#e3f2fd!important;color:#333!important}.hub-status-overview{contain:layout paint;content-visibility:auto;contain-intrinsic-size:0 200px;will-change:transform;transform:translateZ(0);backface-visibility:hidden;perspective:1000px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.hub-status-overview .MuiCard-root{contain:layout paint;content-visibility:auto;contain-intrinsic-size:0 200px;will-change:transform;transform:translateZ(0);backface-visibility:hidden;perspective:1000px}.hub-status-overview .MuiTypography-root{contain:content;will-change:transform;transform:translateZ(0);backface-visibility:hidden}.hub-status-overview .MuiTypography-h4{font-weight:700;letter-spacing:-.5px}.hub-status-overview .MuiTypography-h6{font-weight:600;letter-spacing:-.25px}.hub-status-overview .MuiBox-root{contain:layout;will-change:transform;transform:translateZ(0);backface-visibility:hidden}@keyframes hubStatusFadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.hub-status-overview.visible{animation:hubStatusFadeIn .3s ease-out forwards}
