:root{--color-bg-primary: #1a1a1a;--color-bg-secondary: #333333;--color-text: #ffffff;--color-border: #444444;--color-success: #2ecc71;--color-danger: #e74c3c;--gradient-header: linear-gradient(to bottom, #222222, #1f1f1f);--gradient-date-past: linear-gradient(to bottom, #404040, #383838);--gradient-date-future: linear-gradient(to bottom, #4a4a4a, #424242);--gradient-cancelled: linear-gradient(to bottom, #4a3636, #423636);--padding-standard: 1rem;--border-radius: 8px}body{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;margin:0;padding:20px;background:var(--color-bg-primary);color:var(--color-text);min-height:100vh}.attendance-section{max-width:1200px;margin:0 auto;background:linear-gradient(to bottom,#2a2a2a,#252525);border-radius:var(--border-radius);padding:2rem;box-shadow:0 8px 16px #0003;overflow:hidden}.attendance-table-container{overflow-x:auto;border-radius:var(--border-radius);background:var(--color-bg-secondary);padding:.5rem}.attendance-table{width:100%;border-collapse:separate;border-spacing:0;background:var(--color-bg-secondary);border-radius:var(--border-radius);white-space:nowrap}.attendance-table th,.attendance-table td{padding:var(--padding-standard);text-align:center;border-bottom:1px solid var(--color-border)}.attendance-table thead th{background:var(--gradient-date-past);font-weight:600;text-transform:uppercase;font-size:.9rem;letter-spacing:.05em}.name-cell{position:sticky;left:0;background:var(--color-bg-secondary);z-index:1;text-align:left!important;min-width:120px;font-weight:500;padding-left:2.5rem!important}.date-cell{min-width:100px;font-size:.9rem}.date-cell.past{background:var(--gradient-date-past)}.date-cell.future{background:var(--gradient-date-future)}.date-cell.cancelled{background:var(--gradient-cancelled);color:var(--color-danger)}.attendance-cell{padding:.75rem!important;transition:background-color .2s ease}.attendance-cell.cancelled,.attendance-cell.missing{background:#e74c3c0d}.role-header-row{background:var(--gradient-header);position:relative}.role-header-row:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:var(--gradient-header);z-index:1}.role-header{padding:var(--padding-standard)!important;text-align:left!important;font-weight:600;font-size:1.1rem;letter-spacing:.05em;border-block:1px solid var(--color-border);position:relative;z-index:2;display:flex;align-items:center;gap:.75rem}.attendance-status-icon{width:20px;height:20px;vertical-align:middle;transition:transform .2s ease}.attendance-status-icon.present{color:var(--color-success);filter:drop-shadow(0 0 3px rgba(46,204,113,.4))}.attendance-status-icon.absent{color:var(--color-danger);filter:drop-shadow(0 0 3px rgba(231,76,60,.4))}.role-header-row:nth-of-type(4n+1) .role-header svg{color:gold}.role-header-row:nth-of-type(4n+2) .role-header svg{color:var(--color-success)}.role-header-row:nth-of-type(4n+3) .role-header svg{color:var(--color-danger)}.role-header-row:nth-of-type(4n+4) .role-header svg{color:#3498db}.attendance-table tbody tr:hover{background:#ffffff0d}tr:hover .name-cell{background:#383838}.attendance-cell:hover{background:#ffffff08}.attendance-cell:hover .attendance-status-icon{transform:scale(1.1)}.attendance-table-container::-webkit-scrollbar{height:8px}.attendance-table-container::-webkit-scrollbar-track{background:#2a2a2a;border-radius:4px}.attendance-table-container::-webkit-scrollbar-thumb{background:#666;border-radius:4px}.attendance-table-container::-webkit-scrollbar-thumb:hover{background:#888}.cancelled-label{font-size:.8rem;color:var(--color-danger);font-weight:400;margin-top:.25rem;text-transform:none}@media (max-width: 768px){.attendance-section{padding:var(--padding-standard);margin:0 -1rem;border-radius:0}h1{font-size:2rem;margin:1rem 0}.attendance-table th,.attendance-table td{padding:.75rem}.name-cell{min-width:180px;padding:.75rem 1rem!important}.role-header-row:before{left:-100vw;right:-100vw}.role-header svg{flex-shrink:0}.character-name{display:block;font-weight:600;font-size:.95rem}.character-spec{display:block;font-size:.8rem;opacity:.7;margin-top:.2rem}.action-section{padding:0 1rem}.info-message{margin-left:1rem;margin-right:1rem;font-size:.9rem}.guild-header{margin:0 -1rem 1rem}.guild-header-content{padding:.75rem 1rem}.guild-name{font-size:1.75rem}.guild-realm{font-size:1rem;text-align:center}}.action-section{max-width:1200px;margin:0 auto 2rem;text-align:center}.warcraftlogs-button{display:inline-flex;align-items:center;gap:.75rem;background:linear-gradient(to bottom,#ff6b6b,#ee5253);color:#fff;padding:.75rem 1.5rem;border-radius:var(--border-radius);text-decoration:none;font-weight:600;transition:all .2s ease;box-shadow:0 4px 6px #ee525333}.warcraftlogs-button:hover{transform:translateY(-2px);box-shadow:0 6px 8px #ee52534d;background:linear-gradient(to bottom,#ff7b7b,#ff6263)}.button-icon{width:20px;height:20px}.info-message{width:fit-content;margin:0 auto 2rem;padding:1rem 1.5rem;background:linear-gradient(to bottom,#2d3436,#2a2d3d);border-radius:var(--border-radius);border-left:4px solid #3498db;display:flex;align-items:center;gap:1rem;font-size:.95rem;color:#dedede;box-shadow:0 2px 4px #0000001a;text-align:center;justify-content:center}.info-icon{width:24px;height:24px;color:#3498db;flex-shrink:0}.guild-header{width:100%}.guild-header-content{display:flex;align-items:center;gap:1rem;max-width:1200px;margin:0 auto;text-align:center;justify-content:center}.guild-logo{border-radius:50%}.guild-info{display:flex;flex-direction:column;justify-content:center}.guild-name{font-size:2.25rem;font-weight:700;color:#fff;text-decoration:none;line-height:1.2}.guild-name:hover{color:#e0e0e0}.guild-realm{font-size:1.25rem;color:#9ca3af;text-align:left}@keyframes attendance-pop{0%{transform:scale(1);filter:brightness(1)}50%{transform:scale(1.2);filter:brightness(1.5)}to{transform:scale(1);filter:brightness(1)}}@keyframes attendance-pop{0%{transform:scale(1) rotate(0);filter:hue-rotate(0deg) brightness(1)}25%{transform:scale(1.4) rotate(180deg);filter:hue-rotate(90deg) brightness(1.8)}50%{transform:scale(1.2) rotate(360deg);filter:hue-rotate(180deg) brightness(2)}75%{transform:scale(1.4) rotate(180deg);filter:hue-rotate(270deg) brightness(1.8)}to{transform:scale(1) rotate(0);filter:hue-rotate(360deg) brightness(1)}}@keyframes attendance-ripple{0%{box-shadow:0 0 #f006,0 0 #0f06,0 0 #00f6}33%{box-shadow:0 0 0 10px #f000,0 0 0 20px #0f06,0 0 0 30px #00f6}66%{box-shadow:0 0 0 20px #f000,0 0 0 30px #0f00,0 0 0 40px #00f6}to{box-shadow:0 0 0 30px #f000,0 0 0 40px #0f00,0 0 0 50px #00f0}}@keyframes rainbow-bg{0%{background-color:#f003}17%{background-color:#ffa50033}33%{background-color:#ff03}50%{background-color:#0f03}67%{background-color:#00f3}84%{background-color:#4b008233}to{background-color:#ee82ee33}}.attendance-cell{position:relative;transition:all .3s ease}.attendance-update{animation:attendance-pop .8s ease-out,attendance-ripple .8s ease-out,rainbow-bg .8s linear;z-index:10}.attendance-update .attendance-status-icon{animation:attendance-pop .8s ease-out}.attendance-cell.missing .attendance-status-icon{filter:drop-shadow(0 0 10px rgba(231,76,60,.8))}.attendance-cell:not(.missing) .attendance-status-icon{filter:drop-shadow(0 0 10px rgba(46,204,113,.8))}.attendance-status-icon{transition:transform .3s ease,filter .3s ease}.attendance-status-icon:hover{transform:scale(1.2);filter:hue-rotate(90deg) brightness(1.5)}.attendance-cell{overflow:visible!important}.attendance-cell:after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:transparent;transition:background .3s ease;pointer-events:none}.attendance-cell:hover:after{background:radial-gradient(circle at center,#fff3,#fff0 70%)}@keyframes owl-spiral{0%{transform:rotate(0) translate(15px) rotate(0) scale(1);opacity:0}50%{opacity:1}to{transform:rotate(360deg) translate(15px) rotate(-360deg) scale(.8);opacity:0}}@keyframes owl-pulse{0%{transform:scale(1)}50%{transform:scale(1.2)}to{transform:scale(1)}}.owl-party{position:relative;animation:rainbow-bg 2s linear infinite;overflow:visible!important;padding:1rem 3rem!important}.owl-party:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(45deg,#f003,#ffa50033,#ff03,#0f03,#00f3,#4b008233,#ee82ee33);animation:hue-rotate 3s linear infinite;z-index:-1;filter:blur(8px)}.owl-party:after{content:"🦉";position:absolute;font-size:1.2em;top:50%;left:50%;transform:translate(-50%,-50%);animation:owl-pulse 1s ease-in-out infinite}@keyframes hue-rotate{0%{filter:hue-rotate(0deg)}to{filter:hue-rotate(360deg)}}.owl-party span{position:absolute;top:50%;left:50%;pointer-events:none}.owl-party span:nth-child(1){animation:owl-spiral 3s linear infinite;animation-delay:0s}.owl-party span:nth-child(2){animation:owl-spiral 3s linear infinite;animation-delay:.3s}.owl-party span:nth-child(3){animation:owl-spiral 3s linear infinite;animation-delay:.6s}.owl-party span:nth-child(4){animation:owl-spiral 3s linear infinite;animation-delay:.9s}.owl-party span:nth-child(5){animation:owl-spiral 3s linear infinite;animation-delay:1.2s}.owl-party span:nth-child(6){animation:owl-spiral 3s linear infinite;animation-delay:1.5s}.owl-party span:nth-child(7){animation:owl-spiral 3s linear infinite;animation-delay:1.8s}.owl-party span:nth-child(8){animation:owl-spiral 3s linear infinite;animation-delay:2.1s}.owl-party span:nth-child(9){animation:owl-spiral 3s linear infinite;animation-delay:2.4s}.owl-party span:nth-child(10){animation:owl-spiral 3s linear infinite reverse;animation-delay:0s}.owl-party span:nth-child(11){animation:owl-spiral 3s linear infinite reverse;animation-delay:.3s}.owl-party span:nth-child(12){animation:owl-spiral 3s linear infinite reverse;animation-delay:.6s}.owl-party span:nth-child(13){animation:owl-spiral 3s linear infinite reverse;animation-delay:.9s}.owl-party span:nth-child(14){animation:owl-spiral 3s linear infinite reverse;animation-delay:1.2s}.owl-party span:nth-child(15){animation:owl-spiral 3s linear infinite reverse;animation-delay:1.5s}.owl-party span:nth-child(16){animation:owl-spiral 3s linear infinite reverse;animation-delay:1.8s}.owl-party span:nth-child(17){animation:owl-spiral 3s linear infinite reverse;animation-delay:2.1s}.owl-party span:nth-child(18){animation:owl-spiral 3s linear infinite reverse;animation-delay:2.4s}
