:root{--primary-color:#7b68ee;--primary-dark:#5a4cbe;--primary-light:#9f8ffa;--secondary-color:#ff5722;--secondary-dark:#e64a19;--secondary-light:#ff8a65;--background-color:#121212;--surface-color:#1e1e1e;--surface-color-light:#2d2d2d;--error-color:#cf6679;--text-primary:#eeeeee;--text-secondary:#aaaaaa;--text-hint:#777777;--border-radius:12px;--spacing-sm:8px;--spacing-md:16px;--spacing-lg:24px;--spacing-xl:32px;--shadow-color:rgba(0,0,0,0.5);--accent-color:#00e676;--card-background:#1e1e1e;--text-color:#e0e0e0;--border-color:#333333;--alarm-ringing-color:#ffeb3b;--button-hover:#9370db;--success-color:#4caf50;--warning-color:#ff9800;--danger-color:#f44336;--input-background:#2a2a2a;--game-ui-border:2px solid #7b68ee;--loading-animation:#7b68ee;--bg-secondary-color:#333333}*{box-sizing:border-box;margin:0;padding:0}body,html{font-family:Noto Sans KR,Malgun Gothic,맑은 고딕,sans-serif;color:var(--text-primary);background-color:var(--background-color);line-height:1.6;overflow-x:hidden}a{color:var(--primary-light);text-decoration:none}a:hover{text-decoration:underline}button{cursor:pointer;font-family:inherit;font-size:1rem;border:none;border-radius:var(--border-radius);padding:10px 18px;transition:all .2s ease;background-color:var(--primary-color);color:white}button:hover{background-color:var(--primary-dark);box-shadow:0 4px 8px var(--shadow-color);transform:translateY(-2px)}button:disabled{opacity:.6;cursor:not-allowed;transform:none;box-shadow:none}input,select,textarea{font-family:inherit;font-size:1rem;padding:12px 16px;color:var(--text-primary);background-color:var(--surface-color);border:1px solid #444;border-radius:var(--border-radius);width:100%;transition:border-color .2s}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 2px rgba(123,104,238,.25)}.container{max-width:1200px;margin:0 auto;padding:var(--spacing-lg) var(--spacing-md);min-height:100vh;display:flex;flex-direction:column}main{flex:1 1}.loading-container{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100vh;background-color:var(--background-color)}.loading-spinner{width:50px;height:50px;border-radius:50%;border:5px solid rgba(123,104,238,.2);border-top:5px solid var(--primary-color);animation:spin 1s ease-in-out infinite}@keyframes spin{to{transform:rotate(1turn)}}.loading-text{margin-top:var(--spacing-md);color:var(--text-primary);font-size:1.2rem}.error-message{padding:var(--spacing-md);margin-bottom:var(--spacing-md);background-color:rgba(207,102,121,.1);border-left:4px solid var(--error-color);color:var(--error-color);border-radius:4px}.welcome-container{display:flex;flex-direction:column;align-items:center;padding:var(--spacing-xl) 0}.app-title{font-size:3rem;margin-bottom:var(--spacing-md);color:var(--primary-color);text-align:center;text-shadow:0 2px 10px rgba(123,104,238,.5)}.app-description{font-size:1.2rem;margin-bottom:var(--spacing-xl);text-align:center;color:var(--text-secondary);max-width:700px}.actions-container{display:flex;gap:var(--spacing-xl);margin-bottom:var(--spacing-xl);width:100%;max-width:900px}.action-card{flex:1 1;background-color:var(--surface-color);border-radius:var(--border-radius);padding:var(--spacing-lg);box-shadow:0 4px 20px rgba(0,0,0,.3);display:flex;flex-direction:column}.action-card h2{font-size:1.5rem;margin-bottom:var(--spacing-md);color:var(--primary-color)}.action-card p{margin-bottom:var(--spacing-lg);color:var(--text-secondary);flex-grow:1}.create-room-button,.join-room-button{width:100%;font-size:1.1rem;padding:12px}.join-room-button{background-color:var(--secondary-color)}.join-room-button:hover{background-color:var(--secondary-dark)}.join-form{display:flex;flex-direction:column;gap:var(--spacing-md)}.features{display:flex;gap:var(--spacing-xl);margin-top:var(--spacing-xl);width:100%;max-width:900px}.feature{flex:1 1;padding:var(--spacing-md);text-align:center}.feature h3{font-size:1.3rem;margin-bottom:var(--spacing-sm);color:var(--primary-light)}.feature p{color:var(--text-secondary)}.room-container{background-color:var(--surface-color);border-radius:var(--border-radius);padding:var(--spacing-lg);box-shadow:0 4px 20px rgba(0,0,0,.3)}.room-header{margin-bottom:var(--spacing-lg);padding-bottom:var(--spacing-md);border-bottom:1px solid #333}.room-header h1{color:var(--primary-color);margin-bottom:var(--spacing-md)}.room-info{display:flex;flex-wrap:wrap;gap:var(--spacing-md);align-items:center;justify-content:space-between}.room-id,.user-count{display:flex;align-items:center;gap:8px}.room-id code{padding:4px 8px;border-radius:4px;font-family:monospace;font-size:1rem}.copy-button,.room-id code{background-color:var(--surface-color-light)}.copy-button{padding:4px 12px;font-size:.9rem;color:var(--text-primary)}.copy-button:hover{background-color:#444}.count{font-weight:700;color:var(--primary-color)}.leave-button{background-color:transparent;border:1px solid #444;color:var(--text-secondary)}.leave-button:hover{background-color:rgba(255,255,255,.05);border-color:var(--text-primary);color:var(--text-primary);box-shadow:none}.add-alarm-section,.alarms-section{margin-bottom:var(--spacing-xl)}.add-alarm-section h2,.alarms-section h2{margin-bottom:var(--spacing-md);color:var(--primary-light);font-size:1.5rem}.no-alarms{text-align:center;padding:var(--spacing-lg);color:var(--text-hint);background-color:var(--surface-color-light);border-radius:var(--border-radius)}.alarms-list{display:flex;flex-direction:column;gap:var(--spacing-md)}.alarm-item{display:flex;justify-content:space-between;align-items:center;background-color:var(--surface-color-light);border-radius:var(--border-radius);padding:var(--spacing-md);box-shadow:0 2px 8px rgba(0,0,0,.2);border-left:4px solid var(--primary-color);transition:all .3s ease}.alarm-item.ringing{animation:pulse 1.5s infinite;border-left:4px solid var(--secondary-color);background-color:rgba(255,87,34,.1)}@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(255,87,34,.7)}70%{box-shadow:0 0 0 10px rgba(255,87,34,0)}to{box-shadow:0 0 0 0 rgba(255,87,34,0)}}.alarm-details{flex:1 1}.alarm-name{font-size:1.2rem;font-weight:700;margin-bottom:4px}.alarm-time{display:flex;flex-direction:column;gap:4px}.time-left{font-size:1.1rem;color:var(--primary-light);font-weight:700}.scheduled-time{font-size:.9rem;color:var(--text-secondary)}.ringing-text{font-size:1.2rem;color:var(--secondary-color);font-weight:700;animation:blink 1s infinite}@keyframes blink{0%,to{opacity:1}50%{opacity:.5}}.alarm-actions{display:flex;gap:var(--spacing-sm)}.stop-button{background-color:var(--secondary-color)}.stop-button:hover{background-color:var(--secondary-dark)}.delete-button{background-color:transparent;border:1px solid #444;color:var(--text-secondary)}.delete-button:hover{background-color:rgba(255,255,255,.05);border-color:var(--text-primary);color:var(--text-primary);box-shadow:none}.alarm-form{background-color:var(--surface-color-light);border-radius:var(--border-radius);padding:var(--spacing-lg);gap:var(--spacing-md)}.alarm-form,.form-group{display:flex;flex-direction:column}.form-group{gap:8px}.form-group label{font-weight:700;color:var(--text-secondary)}.add-button{background-color:var(--primary-color);font-size:1.1rem;padding:12px;margin-top:var(--spacing-sm)}.quick-add-buttons{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:var(--spacing-md)}.quick-add-button{background-color:var(--surface-color-light);color:var(--text-primary);font-size:.9rem;padding:8px 12px;border-radius:var(--border-radius);border:1px solid #444;flex-grow:1;min-width:80px;transition:all .2s ease}.quick-add-button:hover{background-color:var(--primary-dark);border-color:var(--primary-color);color:white;transform:translateY(-2px)}footer{margin-top:var(--spacing-xl);padding:var(--spacing-md) 0;text-align:center;color:var(--text-hint);font-size:.9rem}@media (max-width:768px){.actions-container,.features{flex-direction:column;gap:var(--spacing-lg)}.alarm-item,.room-info{flex-direction:column;align-items:flex-start}.alarm-actions{margin-top:var(--spacing-md);align-self:flex-end}.quick-add-buttons{justify-content:center}}.connection-status{background-color:var(--bg-secondary-color);padding:5px 10px;border-radius:6px;margin-bottom:10px;font-size:.9rem;display:inline-block}.connection-status .connected{color:#4caf50;font-weight:700}.connection-status .disconnected{color:#f44336;font-weight:700}.socket-status{font-size:.8rem;color:var(--text-secondary-color);margin-top:10px;padding:5px 10px;background-color:rgba(0,0,0,.3);border-radius:5px;display:inline-block}