:root{--bg:#070b14;--card:rgba(14,21,37,0.75);--elevated:rgba(18,28,48,0.92);--text:#f1f5f9;--muted:#94a3b8;--subtle:#64748b;--gold:#e8c97a;--gold-glow:rgba(232,201,122,0.14);--gold-border:rgba(232,201,122,0.28);--blue:#7eb8d4;--border:rgba(255,255,255,0.08);--shadow:0 8px 24px -6px rgba(0,0,0,0.6);--danger-bg:rgba(212,104,104,0.15);--danger-bdr:rgba(212,104,104,0.35);--danger:#e06c75;--serif:'Cinzel',serif;--sans:'Plus Jakarta Sans',sans-serif;--r-md:10px;--r-pill:9999px;--tr:0.2s ease}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
body{font-family:var(--sans);background:var(--bg);color:var(--text);line-height:1.6;min-height:100vh;overflow-x:hidden}
#starfield{position:fixed;top:0;left:0;width:100vw;height:100vh;pointer-events:none;z-index:0}
body::before{content:'';position:fixed;inset:0;background:radial-gradient(circle at 50% 0%,rgba(30,48,80,0.28) 0%,transparent 65%),radial-gradient(circle at 85% 30%,rgba(232,201,122,0.05) 0%,transparent 45%);pointer-events:none;z-index:1}
:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
.app-container{position:relative;z-index:2;max-width:820px;margin:0 auto;padding:2rem 1.25rem 3rem;display:flex;flex-direction:column;min-height:100vh}
.app-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:1.5rem;margin-bottom:1.5rem;border-bottom:1px solid var(--border);gap:1rem}
.brand-group{display:flex;align-items:center;gap:0.85rem}
.brand-icon{width:44px;height:44px;border-radius:var(--r-md);background:linear-gradient(135deg,rgba(232,201,122,0.15),rgba(126,184,212,0.08));border:1px solid var(--gold-border);display:flex;align-items:center;justify-content:center;color:var(--gold);box-shadow:0 0 16px rgba(232,201,122,0.2)}
.brand-title{font-family:var(--serif);font-size:1.75rem;font-weight:600;letter-spacing:0.06em;color:#fff;line-height:1.1}
.brand-tagline{font-size:0.82rem;color:var(--muted)}
.header-actions{display:flex;align-items:center;gap:0.85rem}
.stats-badge{display:inline-flex;align-items:center;gap:0.45rem;font-size:0.8rem;color:var(--muted);background:rgba(255,255,255,0.04);border:1px solid var(--border);padding:0.4rem 0.8rem;border-radius:var(--r-pill)}
.stats-dot{width:6px;height:6px;border-radius:50%;background:var(--gold);box-shadow:0 0 8px var(--gold)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:0.45rem;font-family:var(--sans);font-size:0.88rem;font-weight:600;padding:0.6rem 1.15rem;border-radius:var(--r-md);border:1px solid transparent;cursor:pointer;transition:all var(--tr);user-select:none}
.btn-primary{background:linear-gradient(135deg,#e8c97a,#cfb061);color:#0b1120;box-shadow:0 4px 14px rgba(232,201,122,0.28)}
.btn-primary:hover{background:linear-gradient(135deg,#f3d993,#dcbe6e);transform:translateY(-1px)}
.btn-secondary{background:rgba(255,255,255,0.05);color:var(--text);border-color:rgba(255,255,255,0.15)}
.btn-secondary:hover{background:rgba(255,255,255,0.09);color:#fff}
.btn-danger{background:var(--danger-bg);color:var(--danger);border-color:var(--danger-bdr)}
.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.25rem;gap:1rem}
.section-title{font-family:var(--serif);font-size:1.3rem;font-weight:600;letter-spacing:0.04em}
.search-box{position:relative;display:flex;align-items:center}
.search-box input{background:rgba(255,255,255,0.04);border:1px solid var(--border);color:#fff;font-size:0.85rem;padding:0.4rem 1.8rem 0.4rem 0.85rem;border-radius:var(--r-pill);width:220px;transition:all var(--tr)}
.search-box input:focus{width:250px;background:rgba(20,30,52,0.8);border-color:var(--blue);outline:none}
.clear-search-btn{position:absolute;right:0.6rem;background:none;border:none;color:var(--subtle);font-size:1.1rem;cursor:pointer}
.status-banner{background:rgba(232,201,122,0.1);border:1px solid var(--gold-border);color:var(--gold);padding:0.65rem 0.9rem;border-radius:var(--r-md);margin-bottom:1.25rem;font-size:0.85rem}
.session-list{display:flex;flex-direction:column;gap:1.1rem}
.session-card{background:var(--card);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--border);border-radius:16px;padding:1.25rem 1.4rem;box-shadow:var(--shadow);transition:all var(--tr);position:relative}
.session-card:hover{transform:translateY(-2px);border-color:rgba(232,201,122,0.22);box-shadow:var(--shadow),0 0 20px -4px rgba(126,184,212,0.15)}
.card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:0.85rem;margin-bottom:0.75rem}
.card-title-meta{display:flex;flex-direction:column;gap:0.2rem}
.card-datetime{font-size:1rem;font-weight:600;color:#fff;display:flex;align-items:center;gap:0.45rem}
.card-relative-time{font-size:0.75rem;font-weight:400;color:var(--subtle);background:rgba(255,255,255,0.04);padding:0.1rem 0.45rem;border-radius:6px}
.card-location{display:inline-flex;align-items:center;gap:0.35rem;font-size:0.85rem;color:var(--muted)}
.card-location-icon{color:var(--blue);flex-shrink:0}
.card-header-actions{display:flex;align-items:center;gap:0.65rem}
.condition-badge{display:inline-flex;align-items:center;gap:0.35rem;font-size:0.75rem;font-weight:600;padding:0.25rem 0.65rem;border-radius:var(--r-pill);border:1px solid transparent}
.cond-clear{color:#7eb8d4;background:rgba(126,184,212,0.12);border-color:rgba(126,184,212,0.3)}
.cond-partly-cloudy{color:#b0a4c8;background:rgba(176,164,200,0.12);border-color:rgba(176,164,200,0.3)}
.cond-overcast{color:#94a3b8;background:rgba(148,163,184,0.12);border-color:rgba(148,163,184,0.25)}
.cond-light-polluted{color:#dca06c;background:rgba(220,160,108,0.12);border-color:rgba(220,160,108,0.3)}
.cond-hazy-fog{color:#8fa89f;background:rgba(143,168,159,0.12);border-color:rgba(143,168,159,0.3)}
.cond-windy{color:#8cb1cf;background:rgba(140,177,207,0.12);border-color:rgba(140,177,207,0.3)}
.btn-delete-card{background:transparent;border:none;color:var(--subtle);width:30px;height:30px;border-radius:6px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all var(--tr)}
.btn-delete-card:hover{background:var(--danger-bg);color:var(--danger)}
.card-constellations{display:flex;flex-wrap:wrap;gap:0.4rem;margin:0.75rem 0}
.constellation-chip{display:inline-flex;align-items:center;gap:0.3rem;font-size:0.78rem;font-weight:500;color:var(--gold);background:var(--gold-glow);border:1px solid var(--gold-border);padding:0.2rem 0.6rem;border-radius:var(--r-pill)}
.chip-star-icon{width:9px;height:9px;fill:var(--gold)}
.card-notes{margin-top:0.65rem;padding-top:0.65rem;border-top:1px dashed rgba(255,255,255,0.08);font-size:0.85rem;color:var(--muted);line-height:1.5;white-space:pre-wrap;word-break:break-word}
.card-notes.truncated{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.btn-toggle-notes{background:none;border:none;color:var(--blue);font-size:0.8rem;font-weight:500;cursor:pointer;margin-top:0.25rem}
.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:4rem 1.5rem;background:var(--card);backdrop-filter:blur(12px);border:1px dashed rgba(255,255,255,0.15);border-radius:16px}
.empty-illustration{width:130px;height:130px;margin-bottom:1.25rem}
.empty-title{font-family:var(--serif);font-size:1.35rem;font-weight:600;color:#fff;margin-bottom:0.4rem}
.empty-desc{font-size:0.88rem;color:var(--muted);max-width:360px;margin-bottom:1.5rem}
.modal-dialog{border:none;background:transparent;padding:1rem 0;margin:auto;max-width:560px;width:calc(100% - 2rem);max-height:94vh;overflow-y:auto}
.modal-dialog::backdrop{background:rgba(4,7,15,0.85);backdrop-filter:blur(8px)}
.modal-card{background:var(--elevated);backdrop-filter:blur(16px);border:1px solid rgba(255,255,255,0.15);border-radius:16px;padding:1.75rem;color:var(--text);max-height:calc(94vh - 2rem);overflow-y:auto}
.modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.25rem;padding-bottom:0.85rem;border-bottom:1px solid var(--border)}
.modal-title{font-family:var(--serif);font-size:1.25rem;font-weight:600;color:#fff}
.modal-subtitle{font-size:0.8rem;color:var(--muted)}
.btn-close-modal{background:transparent;border:none;color:var(--subtle);font-size:1.5rem;cursor:pointer;width:30px;height:30px;display:flex;align-items:center;justify-content:center}
.session-form{display:flex;flex-direction:column;gap:1.15rem}
.form-group{display:flex;flex-direction:column;gap:0.35rem;position:relative}
.label-row{display:flex;align-items:center;justify-content:space-between}
.form-label{font-size:0.82rem;font-weight:600;color:#e2e8f0}
.req{color:var(--gold)}
.opt,.field-hint,.char-count{font-size:0.75rem;color:var(--subtle)}
.form-input,.form-select,.form-textarea{width:100%;background:rgba(10,16,28,0.8);border:1px solid rgba(255,255,255,0.15);border-radius:var(--r-md);padding:0.6rem 0.8rem;font-family:var(--sans);font-size:0.88rem;color:#fff;transition:all var(--tr)}
.form-input:focus,.form-select:focus,.form-textarea:focus,.token-container:focus-within{border-color:var(--gold);outline:none;box-shadow:0 0 10px rgba(232,201,122,0.2)}
.form-group.has-error .form-input,.form-group.has-error .token-container{border-color:var(--danger)}
.field-error{font-size:0.78rem;color:#f87171;min-height:0.9rem;display:none}
.form-group.has-error .field-error{display:block}
.form-textarea{resize:vertical;min-height:75px}
.token-container{min-height:44px;background:rgba(10,16,28,0.8);border:1px solid rgba(255,255,255,0.15);border-radius:var(--r-md);padding:0.35rem 0.55rem;display:flex;flex-wrap:wrap;align-items:center;gap:0.35rem;cursor:text}
.chips-list{display:flex;flex-wrap:wrap;gap:0.35rem}
.token-chip{display:inline-flex;align-items:center;gap:0.35rem;font-size:0.78rem;font-weight:500;color:var(--gold);background:var(--gold-glow);border:1px solid var(--gold-border);padding:0.15rem 0.5rem;border-radius:var(--r-pill)}
.token-chip-remove{background:none;border:none;color:var(--gold);cursor:pointer;font-size:0.95rem}
.token-input{flex:1;min-width:120px;background:transparent;border:none;outline:none;color:#fff;font-size:0.85rem;padding:0.2rem}
.autocomplete-list{position:absolute;top:calc(100% + 4px);left:0;right:0;max-height:180px;overflow-y:auto;background:var(--elevated);border:1px solid rgba(255,255,255,0.15);border-radius:var(--r-md);box-shadow:0 8px 20px rgba(0,0,0,0.6);z-index:100}
.autocomplete-item{padding:0.5rem 0.85rem;font-size:0.82rem;color:var(--text);cursor:pointer;display:flex;justify-content:space-between}
.autocomplete-item:hover,.autocomplete-item.active{background:rgba(232,201,122,0.15);color:var(--gold)}
.quick-suggestions-bar{display:flex;align-items:center;gap:0.35rem;flex-wrap:wrap;margin-top:0.35rem}
.quick-label{font-size:0.72rem;color:var(--subtle);font-weight:500}
.quick-pills{display:flex;flex-wrap:wrap;gap:0.3rem}
.quick-pill{background:rgba(255,255,255,0.04);border:1px solid var(--border);color:var(--muted);font-size:0.72rem;padding:0.15rem 0.5rem;border-radius:var(--r-pill);cursor:pointer}
.quick-pill:hover{background:var(--gold-glow);color:var(--gold);border-color:var(--gold-border)}
.quick-pill.selected{opacity:0.4;pointer-events:none}
.form-actions{display:flex;align-items:center;justify-content:flex-end;gap:0.75rem;margin-top:0.4rem;padding-top:0.85rem;border-top:1px solid var(--border)}
.delete-card{text-align:center;max-width:420px;padding:2rem}
.delete-title{font-family:var(--serif);font-size:1.25rem;font-weight:600;color:#fff;margin-bottom:0.35rem}
.delete-description{font-size:0.85rem;color:var(--muted);margin-bottom:1rem}
.delete-preview{background:rgba(0,0,0,0.35);border:1px solid var(--border);border-radius:var(--r-md);padding:0.75rem;font-size:0.82rem;margin-bottom:1.5rem;text-align:left}
.delete-actions{display:flex;gap:0.75rem;justify-content:center}
.delete-actions .btn{flex:1}
.app-footer{margin-top:3.5rem;padding-top:1.25rem;border-top:1px solid var(--border);text-align:center;font-size:0.78rem;color:var(--subtle)}
@media(max-width:640px){.app-container{padding:1rem 0.85rem 2.5rem}.app-header{flex-direction:column;align-items:stretch;gap:1rem}.header-actions{justify-content:space-between}.section-header{flex-direction:column;align-items:stretch}.search-box input{width:100%}.form-actions{flex-direction:column-reverse}.form-actions .btn{width:100%}}