/* ============================================
   LyricForge — Premium Dark Musical Theme
   ============================================ */

:root {
    --bg-base: #07060e;
    --bg-surface: rgba(255,255,255,0.035);
    --bg-surface-hover: rgba(255,255,255,0.065);
    --bg-surface-active: rgba(255,255,255,0.09);
    --border: rgba(255,255,255,0.08);
    --border-hover: rgba(139,92,246,0.4);
    --text-main: #f0f0f5;
    --text-muted: #8a8a9f;
    --text-dim: #5a5a70;
    --accent: #8b5cf6;
    --accent2: #ec4899;
    --accent3: #06b6d4;
    --accent-glow: rgba(139,92,246,0.25);
    --gradient-main: linear-gradient(135deg, #8b5cf6, #ec4899);
    --gradient-subtle: linear-gradient(135deg, rgba(139,92,246,0.15), rgba(236,72,153,0.15));
    --radius-xl: 24px;
    --radius-lg: 16px;
    --radius-md: 12px;
    --radius-sm: 8px;
    --radius-full: 100px;
    --shadow-lg: 0 20px 60px rgba(0,0,0,0.5);
    --shadow-glow: 0 0 30px rgba(139,92,246,0.15);
    --transition: 0.25s cubic-bezier(0.4,0,0.2,1);
}

*{margin:0;padding:0;box-sizing:border-box;}

body {
    font-family:'Inter',system-ui,-apple-system,sans-serif;
    background:var(--bg-base);
    color:var(--text-main);
    min-height:100vh;
    overflow-x:hidden;
    line-height:1.6;
}

a{color:inherit;text-decoration:none;}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit;}
input,textarea,select{font-family:inherit;}

/* === BACKGROUND ORBS === */
.bg-orbs{position:fixed;inset:0;pointer-events:none;z-index:0;overflow:hidden;}
.orb{position:absolute;border-radius:50%;filter:blur(80px);opacity:0.4;animation:orbFloat 20s ease-in-out infinite alternate;}
.orb-1{width:500px;height:500px;background:radial-gradient(circle,rgba(139,92,246,0.3),transparent 70%);top:-10%;left:-5%;animation-duration:22s;}
.orb-2{width:400px;height:400px;background:radial-gradient(circle,rgba(236,72,153,0.25),transparent 70%);bottom:-10%;right:-5%;animation-duration:18s;animation-delay:-5s;}
.orb-3{width:350px;height:350px;background:radial-gradient(circle,rgba(6,182,212,0.2),transparent 70%);top:40%;left:50%;animation-duration:25s;animation-delay:-10s;}
@keyframes orbFloat{0%{transform:translate(0,0) scale(1);}50%{transform:translate(30px,-40px) scale(1.1);}100%{transform:translate(-20px,30px) scale(0.95);}}

.noise-overlay{position:fixed;inset:0;pointer-events:none;z-index:1;opacity:0.03;
    background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* === LAYOUT === */
.app-container{position:relative;z-index:2;max-width:1200px;margin:0 auto;padding:1.5rem;min-height:100vh;display:flex;flex-direction:column;}

/* === HEADER === */
.app-header{display:flex;justify-content:space-between;align-items:center;padding:1.2rem 1.8rem;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-xl);backdrop-filter:blur(16px);margin-bottom:2rem;gap:1rem;flex-wrap:wrap;}
.header-brand{display:flex;align-items:center;gap:1rem;}
.brand-icon{width:46px;height:46px;background:var(--gradient-main);border-radius:14px;display:flex;align-items:center;justify-content:center;font-size:1.5rem;box-shadow:var(--shadow-glow);flex-shrink:0;}
.brand-title{font-size:1.4rem;font-weight:800;letter-spacing:-0.02em;}
.brand-title span{background:var(--gradient-main);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;}
.brand-sub{font-size:0.8rem;color:var(--text-muted);}

.header-nav{display:flex;gap:0.4rem;background:rgba(255,255,255,0.02);border-radius:var(--radius-full);padding:0.3rem;border:1px solid var(--border);}
.nav-link{padding:0.55rem 1.2rem;border-radius:var(--radius-full);font-size:0.85rem;font-weight:500;color:var(--text-muted);transition:var(--transition);display:flex;align-items:center;gap:0.5rem;white-space:nowrap;}
.nav-link svg{width:16px;height:16px;flex-shrink:0;}
.nav-link:hover{color:var(--text-main);background:var(--bg-surface-hover);}
.nav-link.active{color:white;background:var(--accent);box-shadow:0 2px 12px var(--accent-glow);}

.header-right{display:flex;align-items:center;gap:0.8rem;}
.user-pill{display:flex;align-items:center;gap:0.6rem;padding:0.4rem 0.8rem 0.4rem 0.5rem;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-full);}
.user-avatar{width:32px;height:32px;border-radius:50%;background:var(--gradient-main);display:flex;align-items:center;justify-content:center;font-size:0.8rem;font-weight:700;flex-shrink:0;}
.user-name{font-size:0.85rem;font-weight:500;}
.btn-icon{width:38px;height:38px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--bg-surface);border:1px solid var(--border);transition:var(--transition);}
.btn-icon svg{width:18px;height:18px;}
.btn-icon:hover{background:var(--bg-surface-hover);border-color:var(--border-hover);}
.btn-icon.danger:hover{background:rgba(239,68,68,0.1);border-color:rgba(239,68,68,0.3);color:#ef4444;}

/* === MAIN === */
.app-main{flex:1;}

/* === PAGE HEADER === */
.page-header{margin-bottom:2rem;}
.page-title{font-size:2rem;font-weight:800;letter-spacing:-0.03em;margin-bottom:0.3rem;}
.page-title .emoji{margin-right:0.5rem;}
.page-desc{color:var(--text-muted);font-size:0.95rem;}

/* === CARDS === */
.card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.5rem;backdrop-filter:blur(12px);transition:var(--transition);}
.card:hover{border-color:var(--border-hover);box-shadow:var(--shadow-glow);}
.card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;}
.card-title{font-size:1.1rem;font-weight:600;}

/* === BUTTONS === */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:0.5rem;padding:0.7rem 1.4rem;border-radius:var(--radius-md);font-size:0.9rem;font-weight:600;transition:var(--transition);border:1px solid transparent;white-space:nowrap;}
.btn svg{width:16px;height:16px;flex-shrink:0;}
.btn-primary{background:var(--gradient-main);color:white;box-shadow:0 4px 15px var(--accent-glow);}
.btn-primary:hover{transform:translateY(-2px);box-shadow:0 8px 25px var(--accent-glow);}
.btn-secondary{background:var(--bg-surface);border-color:var(--border);color:var(--text-main);}
.btn-secondary:hover{background:var(--bg-surface-hover);border-color:var(--border-hover);}
.btn-danger{background:rgba(239,68,68,0.1);border-color:rgba(239,68,68,0.2);color:#ef4444;}
.btn-danger:hover{background:rgba(239,68,68,0.2);}
.btn-ghost{color:var(--text-muted);padding:0.5rem 0.8rem;}
.btn-ghost:hover{color:var(--text-main);background:var(--bg-surface);}
.btn-sm{padding:0.45rem 1rem;font-size:0.8rem;border-radius:var(--radius-sm);}
.btn-copy{background:rgba(6,182,212,0.1);border-color:rgba(6,182,212,0.2);color:var(--accent3);}
.btn-copy:hover{background:rgba(6,182,212,0.2);}
.btn-copy.copied{background:rgba(34,197,94,0.15);border-color:rgba(34,197,94,0.3);color:#22c55e;}

/* === FORMS === */
.form-group{margin-bottom:1.2rem;}
.form-label{display:block;font-size:0.85rem;font-weight:500;color:var(--text-muted);margin-bottom:0.5rem;}
.form-input,.form-select,.form-textarea{width:100%;padding:0.8rem 1rem;background:rgba(0,0,0,0.3);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-main);font-size:0.95rem;transition:var(--transition);}
.form-input:focus,.form-select:focus,.form-textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow);}
.form-input::placeholder,.form-textarea::placeholder{color:var(--text-dim);}
.form-textarea{min-height:120px;resize:vertical;line-height:1.6;}
.form-select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%238a8a9f' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 1rem center;padding-right:2.5rem;}
.form-select option{background:var(--bg-base);color:var(--text-main);}
.form-hint{font-size:0.78rem;color:var(--text-dim);margin-top:0.35rem;}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem;}

/* === CHIPS (Context selection) === */
.chips-container{display:flex;flex-wrap:wrap;gap:0.6rem;}
.chip{display:inline-flex;align-items:center;gap:0.4rem;padding:0.5rem 1rem;border-radius:var(--radius-full);background:var(--bg-surface);border:1px solid var(--border);font-size:0.85rem;cursor:pointer;transition:var(--transition);user-select:none;}
.chip:hover{border-color:var(--border-hover);background:var(--bg-surface-hover);}
.chip.selected{background:rgba(139,92,246,0.15);border-color:rgba(139,92,246,0.5);color:var(--accent);}
.chip .chip-remove{width:16px;height:16px;display:flex;align-items:center;justify-content:center;border-radius:50%;opacity:0.5;transition:var(--transition);}
.chip .chip-remove:hover{opacity:1;background:rgba(239,68,68,0.2);color:#ef4444;}

/* === CONTEXT CARDS === */
.contexts-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.2rem;}
.context-card{position:relative;overflow:hidden;animation:fadeInUp 0.4s backwards;}
.context-card .card-accent{position:absolute;top:0;left:0;right:0;height:3px;background:var(--gradient-main);opacity:0;transition:var(--transition);}
.context-card:hover .card-accent{opacity:1;}
.context-card .context-name{font-size:1.05rem;font-weight:600;margin-bottom:0.5rem;display:flex;align-items:center;gap:0.5rem;}
.context-card .context-name .emoji{font-size:1.2rem;}
.context-card .context-preview{color:var(--text-muted);font-size:0.88rem;line-height:1.5;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;}
.context-card .context-actions{display:flex;gap:0.5rem;margin-top:1rem;padding-top:1rem;border-top:1px solid var(--border);}
.context-card:nth-child(1){animation-delay:0.05s;}
.context-card:nth-child(2){animation-delay:0.1s;}
.context-card:nth-child(3){animation-delay:0.15s;}
.context-card:nth-child(4){animation-delay:0.2s;}
.context-card:nth-child(5){animation-delay:0.25s;}
.context-card:nth-child(6){animation-delay:0.3s;}

/* === GENERATION PAGE === */
.gen-layout{display:grid;grid-template-columns:1fr 1fr;gap:2rem;align-items:start;}
.gen-panel{position:sticky;top:2rem;}

.style-toggle{display:flex;background:rgba(0,0,0,0.3);border-radius:var(--radius-full);padding:0.25rem;border:1px solid var(--border);margin-bottom:1rem;}
.style-toggle-btn{flex:1;padding:0.6rem 1rem;border-radius:var(--radius-full);font-size:0.85rem;font-weight:500;text-align:center;color:var(--text-muted);transition:var(--transition);}
.style-toggle-btn.active{background:var(--accent);color:white;}

.selected-contexts{margin-top:1rem;display:flex;flex-direction:column;gap:0.5rem;}
.selected-context-item{padding:0.6rem 0.8rem;background:rgba(139,92,246,0.08);border:1px solid rgba(139,92,246,0.15);border-radius:var(--radius-sm);font-size:0.82rem;color:var(--text-muted);}
.selected-context-item strong{color:var(--text-main);font-weight:600;}

/* === RESULT === */
.result-card{animation:fadeInUp 0.5s ease;}
.result-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.2rem;flex-wrap:wrap;gap:0.8rem;}
.result-meta{display:flex;gap:0.8rem;flex-wrap:wrap;}
.result-tag{padding:0.3rem 0.8rem;border-radius:var(--radius-full);font-size:0.78rem;background:var(--bg-surface);border:1px solid var(--border);}
.result-lyrics{white-space:pre-wrap;line-height:1.8;font-size:1rem;padding:1.5rem;background:rgba(0,0,0,0.3);border-radius:var(--radius-md);border:1px solid var(--border);max-height:500px;overflow-y:auto;}
.result-lyrics::-webkit-scrollbar{width:6px;}
.result-lyrics::-webkit-scrollbar-track{background:transparent;}
.result-lyrics::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px;}
.result-actions{display:flex;gap:0.8rem;margin-top:1.2rem;flex-wrap:wrap;}

/* === LOADING === */
.loading-overlay{display:none;position:fixed;inset:0;background:rgba(7,6,14,0.85);backdrop-filter:blur(8px);z-index:100;justify-content:center;align-items:center;flex-direction:column;gap:1.5rem;}
.loading-overlay.active{display:flex;}
.loader{width:60px;height:60px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin 0.8s linear infinite;}
@keyframes spin{to{transform:rotate(360deg);}}
.loading-text{color:var(--text-muted);font-size:0.95rem;animation:pulse 1.5s ease-in-out infinite;}
@keyframes pulse{0%,100%{opacity:0.5;}50%{opacity:1;}}

/* === HISTORY === */
.history-list{display:flex;flex-direction:column;gap:1rem;}
.history-item{animation:fadeInUp 0.4s backwards;}
.history-item .history-top{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:0.8rem;gap:1rem;}
.history-item .history-date{font-size:0.8rem;color:var(--text-dim);white-space:nowrap;}
.history-item .history-prompt{font-size:0.9rem;font-weight:500;margin-bottom:0.3rem;}
.history-item .history-preview{color:var(--text-muted);font-size:0.85rem;line-height:1.5;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;cursor:pointer;}
.history-item .history-preview:hover{color:var(--text-main);}
.history-item .history-full{display:none;white-space:pre-wrap;line-height:1.7;font-size:0.9rem;padding:1rem;background:rgba(0,0,0,0.25);border-radius:var(--radius-sm);margin-top:0.8rem;border:1px solid var(--border);max-height:400px;overflow-y:auto;}
.history-item .history-full.open{display:block;}
.history-item .history-bottom{display:flex;justify-content:space-between;align-items:center;margin-top:1rem;padding-top:0.8rem;border-top:1px solid var(--border);flex-wrap:wrap;gap:0.5rem;}

/* === SETTINGS (Admin) === */
.users-list{display:flex;flex-direction:column;gap:0.6rem;}
.user-row{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.2rem;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);transition:var(--transition);}
.user-row:hover{border-color:var(--border-hover);}
.user-row .user-info{display:flex;align-items:center;gap:0.8rem;}
.user-row .user-info .avatar{width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:0.85rem;flex-shrink:0;}
.user-row .user-info .avatar.admin{background:var(--gradient-main);color:white;}
.user-row .user-info .avatar.user{background:var(--bg-surface-active);color:var(--text-muted);}
.user-row .badge{padding:0.2rem 0.6rem;border-radius:var(--radius-full);font-size:0.72rem;font-weight:600;text-transform:uppercase;letter-spacing:0.05em;}
.badge-admin{background:rgba(139,92,246,0.15);color:var(--accent);}
.badge-user{background:var(--bg-surface);color:var(--text-muted);}

/* === MODAL === */
.modal-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,0.7);backdrop-filter:blur(6px);z-index:50;justify-content:center;align-items:center;padding:2rem;}
.modal-overlay.active{display:flex;}
.modal-card{background:var(--bg-base);border:1px solid var(--border);border-radius:var(--radius-xl);width:100%;max-width:500px;max-height:90vh;overflow-y:auto;animation:modalIn 0.3s ease;}
@keyframes modalIn{from{opacity:0;transform:scale(0.95) translateY(10px);}to{opacity:1;transform:scale(1) translateY(0);}}
.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1.5rem 1.5rem 0;}
.modal-header h2{font-size:1.2rem;font-weight:700;}
.modal-body{padding:1.5rem;}
.modal-footer{display:flex;justify-content:flex-end;gap:0.8rem;padding:0 1.5rem 1.5rem;}

/* === TOAST === */
.toast-container{position:fixed;bottom:2rem;right:2rem;z-index:200;display:flex;flex-direction:column;gap:0.5rem;}
.toast{padding:0.8rem 1.2rem;border-radius:var(--radius-md);font-size:0.88rem;font-weight:500;display:flex;align-items:center;gap:0.6rem;animation:toastIn 0.3s ease,toastOut 0.3s ease 2.7s forwards;backdrop-filter:blur(12px);border:1px solid var(--border);}
.toast-success{background:rgba(34,197,94,0.15);border-color:rgba(34,197,94,0.3);color:#22c55e;}
.toast-error{background:rgba(239,68,68,0.15);border-color:rgba(239,68,68,0.3);color:#ef4444;}
.toast-info{background:rgba(6,182,212,0.15);border-color:rgba(6,182,212,0.3);color:var(--accent3);}
@keyframes toastIn{from{opacity:0;transform:translateX(40px);}to{opacity:1;transform:translateX(0);}}
@keyframes toastOut{to{opacity:0;transform:translateX(40px);}}

/* === STATS === */
.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-bottom:2rem;}
.stat-card{text-align:center;padding:1.5rem;}
.stat-value{font-size:2rem;font-weight:800;background:var(--gradient-main);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;}
.stat-label{font-size:0.82rem;color:var(--text-muted);margin-top:0.3rem;}

/* === EMPTY STATE === */
.empty-state{text-align:center;padding:4rem 2rem;}
.empty-icon{font-size:3.5rem;margin-bottom:1rem;opacity:0.5;}
.empty-state h3{font-size:1.2rem;margin-bottom:0.5rem;}
.empty-state p{color:var(--text-muted);margin-bottom:1.5rem;}

/* === LOGIN PAGE === */
.login-body{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:2rem;}
.login-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-xl);padding:3rem 2.5rem;width:100%;max-width:420px;text-align:center;backdrop-filter:blur(16px);box-shadow:var(--shadow-lg);animation:fadeInUp 0.6s ease;}
.login-logo{width:72px;height:72px;margin:0 auto 1.5rem;background:var(--gradient-main);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:2rem;box-shadow:0 8px 40px var(--accent-glow);}
.login-title{font-size:1.6rem;font-weight:800;margin-bottom:0.3rem;letter-spacing:-0.02em;}
.login-title span{background:var(--gradient-main);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;}
.login-subtitle{color:var(--text-muted);font-size:0.9rem;margin-bottom:2rem;}
.alert-error{background:rgba(239,68,68,0.1);border:1px solid rgba(239,68,68,0.25);color:#ef4444;padding:0.8rem;border-radius:var(--radius-md);margin-bottom:1.5rem;font-size:0.88rem;}

/* === ANIMATIONS === */
@keyframes fadeInUp{from{opacity:0;transform:translateY(20px);}to{opacity:1;transform:translateY(0);}}
.fade-in{animation:fadeInUp 0.5s ease;}

/* === SCROLLBAR === */
::-webkit-scrollbar{width:8px;}
::-webkit-scrollbar-track{background:transparent;}
::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px;}
::-webkit-scrollbar-thumb:hover{background:rgba(255,255,255,0.15);}

/* === RESPONSIVE === */
@media(max-width:900px){
    .gen-layout{grid-template-columns:1fr;}
    .gen-panel{position:static;}
}
@media(max-width:768px){
    .app-header{flex-direction:column;align-items:stretch;}
    .header-nav{overflow-x:auto;-webkit-overflow-scrolling:touch;}
    .header-right{justify-content:flex-end;}
    .contexts-grid{grid-template-columns:1fr;}
    .form-row{grid-template-columns:1fr;}
    .page-title{font-size:1.5rem;}
    .stats-grid{grid-template-columns:1fr 1fr;}
}
@media(max-width:480px){
    .app-container{padding:1rem;}
    .app-header{padding:1rem;}
    .stats-grid{grid-template-columns:1fr;}
    .nav-link span{display:none;}
}
