@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeUp{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes spin{to{transform:rotate(360deg)}}.app{flex-direction:column;align-items:center;max-width:1120px;min-height:100vh;margin:0 auto;padding:56px 24px;animation:.3s ease-out fadeIn;display:flex}.ledger-card{-webkit-backdrop-filter:blur(24px);background:#0e0b08a6;border:1px solid #c9a84c40;width:100%;animation:.35s ease-out fadeUp;overflow:hidden;box-shadow:0 0 80px #c9a84c12,0 8px 48px #000000b3,inset 0 1px #c9a84c14}.header{text-align:center;border-bottom:1px solid #a0782840;padding:36px 40px 24px}.header h1{font-family:var(--font-display);color:#c9a84c;letter-spacing:.12em;text-transform:uppercase;font-size:2.8rem;font-weight:700;line-height:1}.header .subtitle{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:#6b5220;margin-top:10px;font-size:.8rem}.toolbar{border-bottom:1px solid #a0782833;justify-content:center;align-items:center;gap:10px;padding:10px 40px;display:flex;overflow-x:auto}.toolbar-location{font-family:var(--font-mono);color:#8a7250;cursor:pointer;letter-spacing:.04em;border-bottom:1px dashed #3a2e18;padding-bottom:1px;font-size:.85rem;transition:color .2s,border-color .2s}.toolbar-location:hover{color:#c9a84c;border-bottom-color:#7a6030}.toolbar-sep{color:#2e2410;-webkit-user-select:none;user-select:none;font-size:.75rem}.toggle-row{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:6px;display:flex}.toggle-label{font-family:var(--font-mono);color:#9a8a6a;letter-spacing:.04em;font-size:.85rem}.toggle{flex-shrink:0;width:28px;height:16px;display:inline-block;position:relative}.toggle input{opacity:0;width:0;height:0;position:absolute}.toggle-track{cursor:pointer;background:#120f08;border:1px solid #2e2410;border-radius:8px;transition:background .2s,border-color .2s;position:absolute;inset:0}.toggle-track:before{content:"";background:#3a3020;border-radius:50%;width:10px;height:10px;transition:transform .2s,background .2s;position:absolute;top:2px;left:2px}.toggle input:checked+.toggle-track{background:#5a4018;border-color:#7a6030}.toggle input:checked+.toggle-track:before{background:#c9a84c;transform:translate(12px)}.month-dropdown{color:#8a7a5a;font-family:var(--font-mono);letter-spacing:.04em;cursor:pointer;appearance:none;background:0 0;border:none;border-bottom:1px dashed #3a2e18;outline:none;padding:0 2px 1px;font-size:.85rem;transition:color .2s}.month-dropdown:hover{color:#c9a84c;border-bottom-color:#7a6030}.month-dropdown option{color:#bfaa80;background:#0e0c08}.quality-select{color:#5a4a30;font-family:var(--font-mono);letter-spacing:.04em;cursor:pointer;appearance:none;background:0 0;border:none;border-bottom:1px dashed #3a2e18;outline:none;padding:0 2px 1px;font-size:.85rem;transition:color .2s}.quality-select:hover,.quality-select:focus{color:#8a7250;border-bottom-color:#7a6030}.table-scroll{padding:0 24px;overflow-x:auto}.nights-table{border-collapse:collapse;width:100%;min-width:900px}.nights-table thead th{text-align:left;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.1em;color:#6b5220;white-space:nowrap;border-bottom:1px solid #a078284d;padding:10px 16px;font-size:.72rem;font-weight:500}.nights-table thead th:last-child{text-align:right}.month-row td{font-family:var(--font-mono);letter-spacing:.14em;color:#6b5220;text-transform:uppercase;border-top:1px solid #a0782833;padding:12px 16px 4px;font-size:.7rem;font-weight:600}.month-row:first-of-type td{border-top:none;padding-top:6px}.nights-table tbody tr:not(.month-row){border-bottom:1px solid #a078281f;transition:background .12s}.nights-table tbody tr:not(.month-row):hover{background:#c9a84c08}.nights-table td{white-space:nowrap;vertical-align:middle;font-family:var(--font-mono);padding:10px 16px;font-size:.88rem}.col-date{font-size:.88rem}.col-moon{color:#8a7a5a;font-size:.85rem}.moon-emoji{vertical-align:middle;margin-right:6px;font-size:.88rem}.moon-times,.moon-none{color:#8a7a5a}.col-darkness,.col-dark-hours{color:#8a7a5a;font-size:.85rem}.dark-window{color:#8a7a5a}.col-clouds{font-size:.85rem}.cloud-clear,.cloud-partial,.cloud-heavy{color:#8a7a5a}.col-score{text-align:right}.score-label{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;font-size:.8rem;font-weight:600}.score-perfect{color:#c9a84c}.score-excellent{color:#8a6e30}.score-good{color:#8a7a5a}.score-fair{color:#4a4030}.score-iflucky{color:#3a3028}.custom-tip{z-index:1000;pointer-events:none;color:#9a8a6a;font-family:var(--font-mono);white-space:nowrap;background:#0e0c08;border:1px solid #7a6030;padding:10px 14px;font-size:.75rem;line-height:1.7;position:fixed;box-shadow:0 4px 24px #0009}.tip-spacer{height:6px}.tip-cell{cursor:pointer}.footer{text-align:center;color:#6b5220;font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;margin-top:20px;font-size:.62rem;line-height:2}.footer-link{color:#8a7250;border-bottom:1px dashed #5a4a28;text-decoration:none;transition:color .2s,border-color .2s}.footer-link:hover{color:#c9a84c;border-bottom-color:#7a6030}.modal-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:100;background:#000c;justify-content:center;align-items:center;animation:.2s ease-out fadeIn;display:flex;position:fixed;inset:0}.modal{background:#0e0c08;border:1px solid #7a6030;width:90%;max-width:400px;padding:28px;animation:.2s ease-out fadeUp}.modal h3{font-family:var(--font-display);color:#c9a84c;text-transform:uppercase;letter-spacing:.12em;margin-bottom:16px;font-size:1.1rem;font-weight:700}.modal input{color:#bfaa80;width:100%;font-family:var(--font-mono);background:#120f08;border:1px solid #2e2410;outline:none;margin-bottom:12px;padding:9px 12px;font-size:.85rem;transition:border-color .2s}.modal input:focus{border-color:#7a6030}.modal-results{max-height:260px;overflow-y:auto}.modal-searching{color:#5a4a30;font-size:.78rem;font-family:var(--font-mono);padding:8px 0}.modal-result{cursor:pointer;border-left:2px solid #0000;flex-direction:column;gap:2px;padding:9px 10px;transition:all .12s;display:flex}.modal-result:hover{background:#c9a84c0d;border-left-color:#7a6030}.result-name{font-size:.85rem;font-weight:500;font-family:var(--font-mono);color:#bfaa80}.result-sub{font-size:.7rem;font-family:var(--font-mono);color:#5a4a30}.modal-cancel{color:#5a4a30;width:100%;font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;background:0 0;border:1px solid #2e2410;margin-top:12px;padding:8px;font-size:.72rem;transition:all .2s}.modal-cancel:hover{color:#8a7250;background:#c9a84c0d}.loading{flex-direction:column;justify-content:center;align-items:center;gap:18px;padding:80px 20px;display:flex}.loading-spinner{border:1px solid #2e2410;border-top-color:#c9a84c;border-radius:50%;width:28px;height:28px;animation:.9s linear infinite spin}.loading-text{color:#5a4a30;font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;font-size:.72rem}.error-banner{color:#c45858;text-align:center;font-family:var(--font-mono);border:1px solid #c4585833;margin:20px 40px;padding:16px 20px;font-size:.82rem}.no-results{text-align:center;color:#3a3020;font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;padding:48px 0;font-size:.72rem}@media (width<=640px){.app{padding:16px 8px}.header h1{font-size:2rem}.header{padding:24px 20px 16px}.toolbar{gap:8px;padding:10px 20px}.nights-table td{padding:8px 10px}}:root{--bg-primary:#06080f;--bg-secondary:#0c1018;--bg-card:#10151f;--bg-card-hover:#151c2a;--text-primary:#d4d8e4;--text-secondary:#8891a5;--text-muted:#505868;--accent-gold:#c9a84c;--accent-gold-dim:#9a7b3a;--accent-blue:#4a8cc8;--accent-green:#3db88c;--accent-yellow:#d4a32c;--accent-red:#c45858;--accent-purple:#8b7abf;--border-color:#1a1f2e;--border-subtle:#12161f;--rating-excellent:#3db88c;--rating-good:#6cc9a0;--rating-fair:#d4a32c;--rating-poor:#c45858;--font-display:"Cormorant Garamond", Georgia, serif;--font-body:"DM Sans", system-ui, sans-serif;--font-mono:"JetBrains Mono", "SF Mono", monospace}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-body);color:var(--text-primary);background-color:#020308;background-image:radial-gradient(at 15% 20%,#c9a84c12 0%,#0000 45%),radial-gradient(at 85% 75%,#4a8cc80f 0%,#0000 45%),radial-gradient(#8c50c80a 0%,#0000 55%);background-position:0 0;background-repeat:repeat;background-size:auto;background-attachment:scroll;background-origin:padding-box;background-clip:border-box;min-height:100vh;line-height:1.6}#root{min-height:100vh}::selection{color:#fff;background:#c9a84c40}
