:root{--bg:#e8e1d1;--bg-elevated:#f4efe3;--lead:#241f18;--lead-highlight:#ffffff1a;--stone-border:#bdae90;--text:#2b251c;--text-dim:#6b5f4c;--text-faint:#93856c;--accent:#c9832c;--accent-strong:#93601c;--frost:#d7d2c4;--frost-text:#948a78;--shadow:#3c301c38 0 10px 22px -8px, #3c301c24 0 2px 6px -2px;--glow-ambient:#c9832c38;--scrim:#050403b8;--scrim-light:#0504038c;--font-gothic:"Grenze Gotisch", "Cambria", serif;--font-book:"IM Fell English", "Cambria", serif;--font-caps:"IM Fell English SC", "Cambria", serif;--came:#5e4e3a;--tint-winter:#e4dfb9;--tint-spring:#c6aaa3;--tint-summer:#fbe2a8;--tint-fall:#e49041;--jewel-red:#a8202f;--jewel-gold:#b8912c;--jewel-green:#2f6b3f;--jewel-blue:#1f4f8a;--space-xs:4px;--space-sm:8px;--space-md:14px;--space-lg:22px;font:17px/1.5 var(--font-book);letter-spacing:.005em;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{box-sizing:border-box;z-index:1;width:900px;max-width:100%;height:100svh;margin:0 auto;position:relative;overflow:hidden}body{background:var(--bg);margin:0}h1,h2{font-family:var(--font-gothic);color:var(--text);margin:0;font-weight:500}p{margin:0}::selection{background:var(--accent);color:var(--lead)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:var(--frost)}::-webkit-scrollbar-thumb{background:var(--stone-border);border:2px solid var(--frost);border-radius:1px}::-webkit-scrollbar-thumb:hover{background:var(--accent-strong)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}input,textarea{caret-color:var(--accent-strong)}button{font:inherit}:root{--shell-width:900px;--shell-pad-x:20px;--shell-pad-top:14px;--shell-pad-bottom:12px;--art-band:175px;--art-gap:32px;--calendar-edge:max(var(--shell-pad-x), calc((100vw - var(--shell-width)) / 2 + var(--shell-pad-x)));--art-band-width:min(var(--art-band), var(--calendar-edge))}.app-shell{box-sizing:border-box;height:100%;padding:var(--shell-pad-top) var(--shell-pad-x) var(--shell-pad-bottom);gap:var(--space-md);flex-direction:column;min-height:0;display:flex}.season-art{width:var(--art-band-width);z-index:0;pointer-events:none;display:flex;position:fixed}.season-art img{max-width:max(0px, calc(var(--art-band-width) - var(--art-gap)));height:auto}.season-art-left{top:var(--shell-pad-top);left:calc(var(--calendar-edge) - var(--art-band-width));justify-content:flex-start}.season-art-right{bottom:var(--shell-pad-bottom);right:calc(var(--calendar-edge) - var(--art-band-width));justify-content:flex-end}.app-header{gap:var(--space-xs);flex-direction:column;flex:none;display:flex}.header-name{font-family:var(--font-gothic);color:var(--text);letter-spacing:.005em;font-size:46px;font-weight:500;line-height:1.05}.header-subtitle{font-family:var(--font-book);color:var(--accent-strong);font-size:21px;font-style:italic;font-weight:400;line-height:1.2}.status-message{text-align:center;color:var(--text-dim);font-family:var(--font-book);margin-top:120px;font-style:italic}.login-screen{justify-content:center;align-items:center;gap:var(--space-lg);flex-direction:column;min-height:100svh;display:flex}.login-title{font-family:var(--font-caps);letter-spacing:.06em;color:var(--text);margin:0;font-size:22px;font-weight:400}.login-link{font-family:var(--font-caps);letter-spacing:.06em;border:2px solid var(--lead);background:var(--accent);color:var(--lead);box-shadow:var(--shadow), inset 0 0 0 1px var(--lead-highlight), 0 0 32px -4px var(--glow-ambient);border-radius:2px;padding:14px 34px;font-size:22px;text-decoration:none;transition:box-shadow .2s,transform .2s}.login-link:hover{box-shadow:var(--shadow), inset 0 0 0 1px var(--lead-highlight), 0 0 48px -2px var(--glow-ambient);transform:translateY(-1px)}.inset{border:2px solid var(--came);box-shadow:var(--shadow), inset 0 0 0 1px var(--lead-highlight);background:var(--bg-elevated);border-radius:3px;flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.tabs{background:var(--bg);border-bottom:2px solid var(--came);flex:none;display:flex}.tab{font-family:var(--font-caps);letter-spacing:.09em;padding:10px var(--space-md) 9px;cursor:pointer;color:var(--text-dim);background:0 0;border:none;border-bottom:3px solid #0000;flex:1;margin-bottom:-2px;font-size:15px;transition:color .2s,border-color .2s,background .2s}.tab:hover{color:var(--accent-strong)}.tab.active{color:var(--accent-strong);border-bottom-color:var(--accent);background:var(--bg-elevated)}.tab-content{padding:var(--space-md);flex-direction:column;flex:1;min-height:0;display:flex}.calendar{flex-direction:column;flex:1;min-height:0;display:flex}.calendar-header{justify-content:center;align-items:center;gap:var(--space-md);flex:none;margin-bottom:10px;display:flex}.calendar-header h2{font-family:var(--font-gothic);text-align:center;letter-spacing:.01em;min-width:170px;font-size:26px;font-weight:500;line-height:1.15}.calendar-nav{color:var(--accent-strong);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:5px;transition:color .2s;display:flex}.calendar-nav svg{width:16px;height:16px}.calendar-nav:hover{color:var(--accent)}.calendar-grid{background:var(--came);border-radius:2px;flex:1;grid-template-rows:auto repeat(6,1fr);grid-template-columns:repeat(7,1fr);gap:4px;min-height:0;padding:4px;display:grid}.calendar-weekday{text-align:center;font-family:var(--font-caps);color:var(--bg);letter-spacing:.12em;padding:6px 0 var(--space-sm);font-size:14px;line-height:1.2}.calendar-day{box-shadow:inset 0 0 0 1px var(--lead-highlight);font-family:var(--font-book);color:var(--text);cursor:pointer;isolation:isolate;background-position:50%;background-size:cover;border:none;border-radius:1px;flex-direction:column;padding:0;transition:box-shadow .2s;display:flex;position:relative;overflow:hidden}.calendar-day.pane-void{background:var(--frost);box-shadow:none;cursor:default}.calendar-day:disabled{cursor:default}.day-number{font-family:var(--font-book);color:var(--text-dim);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);padding:1px var(--space-xs);z-index:1;pointer-events:none;background:#ffffff8c;border-radius:1px;font-size:13px;line-height:1.2;position:absolute;top:3px;left:3px}.cell-glass{background-image:var(--art);background-size:cover;background-position:var(--art-pos,50% 50%);transform:rotate(var(--art-rot,0deg)) scale(var(--art-scale,1.6));filter:grayscale()contrast(.5)brightness(1.35)blur(3px);mix-blend-mode:multiply;pointer-events:none;position:absolute;inset:-25%}.cell-sheen{pointer-events:none;background:linear-gradient(105deg,#ffffff38,#fff0 40%);position:absolute;inset:0}.cell-roundel{z-index:1;pointer-events:none;flex:1;justify-content:center;align-items:center;min-height:0;display:flex;position:relative}.pane-filled{background:var(--season-tint);box-shadow:inset 0 0 0 1px var(--lead-highlight), 0 0 10px -3px color-mix(in oklab, var(--season-tint) 68%, #000)}.pane-filled:hover{box-shadow:inset 0 0 0 1px var(--lead-highlight), 0 0 14px -2px color-mix(in oklab, var(--season-tint) 58%, #000)}.pane-fillable{background:var(--bg-elevated);justify-content:center;align-items:center}.pane-fillable.pane-today{box-shadow:inset 0 0 0 1px var(--lead-highlight), 0 0 14px -3px var(--glow-ambient)}.pane-plus{width:16px;height:16px;color:var(--text-faint);opacity:.7;pointer-events:none}.pane-fillable:hover .pane-plus{color:var(--plus-jewel,var(--accent));opacity:1}.pane-locked{background:repeating-linear-gradient(135deg, var(--frost) 0px, var(--frost) 6px, var(--stone-border) 6px, var(--stone-border) 12px);cursor:default}.pane-locked .day-number{color:var(--text-dim);background:#ffffff8c}.cover-art{object-fit:cover;background:var(--came);border:3px solid var(--came);box-shadow:0 0 16px -2px var(--glow-ambient), inset 0 0 0 1px var(--lead-highlight);border-radius:50%}.cover-art.small{border-width:2px;width:40px;height:40px}.cover-art.cell{border-width:1px;width:56px;height:56px}.cover-art.large{width:128px;height:128px;margin:0 auto var(--space-lg);border-width:2px;display:block}.modal-overlay{background:var(--scrim);z-index:10;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal{background:var(--bg-elevated);border:3px solid var(--lead);width:100%;max-width:420px;max-height:85svh;box-shadow:var(--shadow), inset 0 0 0 1px var(--lead-highlight), 0 0 60px -20px var(--glow-ambient);text-align:center;border-radius:3px;padding:22px;position:relative;overflow-y:auto}.modal:focus,.modal:focus-visible{outline:none}.modal.picking{max-width:500px}.modal-header{margin-bottom:var(--space-lg);justify-content:space-between;align-items:center;gap:var(--space-sm);display:flex;position:relative}.modal-close{cursor:pointer;color:var(--text-dim);background:0 0;border:none;padding:4px;transition:color .2s;display:flex}.modal-close svg{width:18px;height:18px}.modal-close:hover{color:var(--accent)}.modal-edit{border:2px solid var(--stone-border);background:var(--bg-elevated);color:var(--accent-strong);cursor:pointer;border-radius:2px;flex:none;justify-content:center;align-items:center;width:30px;height:30px;transition:box-shadow .2s,border-color .2s;display:flex}.modal-edit svg{width:15px;height:15px}.modal-edit:hover{border-color:var(--accent);box-shadow:0 0 12px -2px var(--glow-ambient)}.modal-date{font-family:var(--font-caps);letter-spacing:.08em;color:var(--text-dim);white-space:nowrap;pointer-events:none;font-size:15px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.modal-save{border:2px solid var(--lead);background:var(--accent);color:var(--lead);font-family:var(--font-caps);letter-spacing:.05em;cursor:pointer;border-radius:2px;padding:7px 18px;font-size:15px;transition:box-shadow .2s}.modal-save:hover:not(:disabled){box-shadow:0 0 16px -2px var(--glow-ambient)}.modal-save:disabled{opacity:.5;cursor:default}.modal-error{color:#8f2f22;margin:0 0 14px;font-size:15px}.modal-body .song-name{font-family:var(--font-book);color:var(--text);margin-bottom:var(--space-xs);font-size:22px;line-height:1.25}.modal-body .song-artist{font-family:var(--font-caps);color:var(--text-dim);letter-spacing:.05em;font-size:15px}.modal-body .note{font-family:var(--font-book);color:var(--text-dim);margin-top:var(--space-lg);font-size:17px;font-style:italic;line-height:1.55}.change-song{border:2px solid var(--stone-border);color:var(--text);font-family:var(--font-caps);letter-spacing:.05em;cursor:pointer;margin-top:var(--space-lg);background:0 0;border-radius:2px;padding:7px 18px;font-size:14px;transition:border-color .2s,color .2s}.change-song:hover{border-color:var(--accent);color:var(--accent-strong)}.suggestions{margin-bottom:var(--space-lg)}.suggestions-label{font-family:var(--font-book);color:var(--text-faint);margin:0 0 var(--space-md);font-size:17px;font-style:italic}.suggestion-row{gap:var(--space-md);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.suggestion{align-items:center;gap:var(--space-xs);min-width:0;padding:var(--space-md) var(--space-xs);font:inherit;color:var(--text);cursor:pointer;background:0 0;border:2px solid #0000;border-radius:2px;flex-direction:column;transition:border-color .2s,background-color .2s;display:flex}.suggestion:hover,.suggestion:focus-visible{border-color:var(--came);background:var(--bg)}.cover-art.suggestion-art{width:64px;height:64px;margin-bottom:var(--space-xs);border-width:2px}.suggestion .song-name{font-family:var(--font-book);text-align:center;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;min-height:2.6em;margin:0;font-size:15px;line-height:1.3;display:-webkit-box;overflow:hidden}.suggestion .song-artist{font-family:var(--font-caps);letter-spacing:.04em;color:var(--text-dim);text-align:center;white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:14px;overflow:hidden}.search-input{box-sizing:border-box;width:100%;font-family:var(--font-book);border:2px solid var(--stone-border);background:var(--bg-elevated);color:var(--text);border-radius:2px;padding:10px 14px;font-size:17px}.search-input::placeholder{color:var(--text-faint);font-style:italic}.search-input:focus-visible{border-color:var(--accent)}.search-status{font-family:var(--font-book);color:var(--text-faint);margin:8px 0 0;font-size:15px;font-style:italic}.search-results{margin:var(--space-md) 0 0;gap:var(--space-sm);text-align:left;flex-direction:column;max-height:260px;padding:0;list-style:none;display:flex;overflow-y:auto}.search-results button{align-items:center;gap:var(--space-md);width:100%;font:inherit;padding:var(--space-sm) 10px;cursor:pointer;text-align:left;color:var(--text);background:0 0;border:none;border-radius:2px;display:flex}.search-results button:hover{background:#e0a5421a}.result-text{flex-direction:column;display:flex;overflow:hidden}.result-text .song-name{font-family:var(--font-book);color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-size:17px;overflow:hidden}.result-text .song-artist{font-family:var(--font-caps);letter-spacing:.04em;color:var(--text-dim);white-space:nowrap;text-overflow:ellipsis;font-size:14px;overflow:hidden}.note-input{box-sizing:border-box;width:100%;font-family:var(--font-book);padding:var(--space-md);border:2px solid var(--stone-border);background:var(--bg-elevated);color:var(--text);min-height:80px;margin-top:var(--space-md);resize:vertical;border-radius:2px;font-size:17px;font-style:italic;line-height:1.55}.note-input::placeholder{color:var(--text-faint)}.note-input:focus-visible{border-color:var(--accent)}.confirm-overlay{background:var(--scrim-light);z-index:20;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.confirm-box{background:var(--bg-elevated);border:3px solid var(--lead);max-width:340px;box-shadow:var(--shadow);border-radius:3px;padding:20px}.confirm-box p{font-family:var(--font-book);color:var(--text);margin:0 0 var(--space-lg);font-size:17px;line-height:1.5}.confirm-actions{gap:var(--space-sm);justify-content:flex-end;display:flex}.confirm-actions button{font-family:var(--font-caps);letter-spacing:.05em;cursor:pointer;border:2px solid var(--stone-border);color:var(--text);background:0 0;border-radius:2px;padding:7px 18px;font-size:15px}.confirm-actions button:first-child{background:var(--accent);border-color:var(--lead);color:var(--lead)}.playlist-status{text-align:center;color:var(--text-dim);font-family:var(--font-book);padding:60px 0;font-size:17px;font-style:italic}.playlist-embed{border:none;border-radius:2px;display:block}
