:root{--bg: #0f1115;--surface: #171a21;--border: #2a2e38;--text: #e8e9ec;--text-dim: #9199a8;--tag-excited: #3ecf8e;--tag-neutral: #6b8afd;--tag-dreading: #f26d6d;--tag-deadline: #d99a3c;color-scheme:dark}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif}#app{max-width:900px;margin:0 auto;padding:24px 16px 64px}.loading,.error{padding:32px 0;text-align:center;color:var(--text-dim)}.error{color:var(--tag-dreading)}.app-header{text-align:center;margin-bottom:32px}.app-header h1{margin:0 0 4px;font-size:1.75rem}.subtitle{margin:0;color:var(--text-dim);font-size:.9rem}.stats-row{display:flex;gap:10px;margin-bottom:28px}.stat-card{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:14px 8px;background:var(--surface);border:1px solid var(--border);border-radius:8px}.stat-value{font-size:1.4rem;font-weight:700}.stat-label{font-size:.75rem;color:var(--text-dim)}.timeline{margin-bottom:40px}.timeline-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:4px}.timeline-scroll-inner{padding:0 42px}.timeline-bands{display:flex;flex-direction:column;gap:6px;margin-bottom:10px}.event-band-row{position:relative;height:28px}.event-band{position:absolute;top:0;height:100%;min-width:6px;border-radius:6px;background:color-mix(in srgb,var(--tag-color, var(--tag-neutral)) 30%,var(--surface));border:1px solid var(--tag-color, var(--tag-neutral));overflow:hidden;display:flex;align-items:center;padding:0 8px}.event-band-label{font-size:.75rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.event-band-compact .event-band-label{visibility:hidden}.event-band-outside-label{position:absolute;top:50%;transform:translateY(-50%);font-size:.75rem;color:var(--text-dim);white-space:nowrap}.range-subprogress{position:absolute;top:0;right:0;bottom:0;left:0;background:color-mix(in srgb,var(--tag-color, var(--tag-neutral)) 15%,transparent);pointer-events:none}.range-subprogress-fill{position:absolute;inset:0 auto 0 0;background:color-mix(in srgb,var(--tag-color, var(--tag-neutral)) 45%,transparent)}.range-subprogress-label{position:absolute;right:8px;top:50%;transform:translateY(-50%);font-size:.7rem;color:var(--text-dim)}.week-strip{display:flex;gap:2px;height:40px}.week-block{flex-basis:0;background:var(--surface);border:1px solid var(--border);border-radius:4px;display:flex;align-items:center;justify-content:center;min-width:4px}.week-block .week-number{font-size:.65rem;color:var(--text-dim)}.week-block.is-current{background:color-mix(in srgb,var(--tag-neutral) 25%,var(--surface));border-color:var(--tag-neutral)}.week-block.is-current .week-number{color:var(--text);font-weight:600}.timeline-pins{position:relative;height:34px;margin-top:6px}.event-pin{position:absolute;top:0;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:3px}.event-pin-dot{width:8px;height:8px;border-radius:50%;background:var(--tag-color, var(--tag-neutral))}.event-pin-label{font-size:.65rem;color:var(--text-dim);white-space:nowrap;max-width:90px;overflow:hidden;text-overflow:ellipsis}.tag-excited{--tag-color: var(--tag-excited)}.tag-neutral{--tag-color: var(--tag-neutral)}.tag-dreading{--tag-color: var(--tag-dreading)}.tag-deadline{--tag-color: var(--tag-deadline)}.event-list h2{font-size:1.1rem;color:var(--text-dim);margin-bottom:12px}.event-list ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.event-row{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--tag-color, var(--tag-neutral));border-radius:6px}.event-row-tag{font-size:.65rem;text-transform:uppercase;letter-spacing:.04em;color:var(--tag-color, var(--tag-neutral));min-width:64px}.event-row-title{flex:1;font-size:.9rem}.event-row-date{font-size:.8rem;color:var(--text-dim);white-space:nowrap}.event-row-countdown{color:var(--text-dim);opacity:.75;margin-left:6px;font-size:.75rem}.event-row-empty{color:var(--text-dim);padding:10px 12px}.btn-primary,.btn-secondary,.btn-danger{font:inherit;border-radius:6px;padding:8px 14px;cursor:pointer;border:1px solid transparent}.btn-primary{background:var(--tag-neutral);color:#0b0d12;font-weight:600}.btn-secondary{background:transparent;border-color:var(--border);color:var(--text)}.btn-danger{background:transparent;border-color:var(--tag-dreading);color:var(--tag-dreading)}.btn-primary:disabled,.btn-secondary:disabled,.btn-danger:disabled{opacity:.6;cursor:default}.btn-sm{padding:5px 10px;font-size:.8rem}.btn-lg{padding:12px 24px;font-size:1rem}.icon-btn{font:inherit;font-size:.8rem;background:none;border:none;color:var(--tag-neutral);cursor:pointer;padding:0;margin-left:8px;text-decoration:underline}.event-list-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.event-list-header h2{margin:0}.event-row{cursor:pointer}.event-row:hover{border-color:var(--tag-color, var(--tag-neutral))}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;padding:16px;z-index:100}.modal-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;width:100%;max-width:420px;max-height:90vh;overflow-y:auto}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border)}.modal-header h2{margin:0;font-size:1.1rem}.modal-close{background:none;border:none;color:var(--text-dim);font-size:1.4rem;line-height:1;cursor:pointer}.modal-body{padding:20px}.entity-form{display:flex;flex-direction:column;gap:14px}.entity-form label{display:flex;flex-direction:column;gap:6px;font-size:.85rem;color:var(--text-dim)}.entity-form label[hidden]{display:none}.entity-form label.checkbox-field{flex-direction:row;align-items:center;gap:8px}.entity-form label.checkbox-field input{width:auto}.entity-form input,.entity-form select,.entity-form textarea{font:inherit;background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:8px 10px;color:var(--text)}.entity-form textarea{resize:vertical}.form-error{color:var(--tag-dreading);font-size:.85rem;margin:0}.form-actions{display:flex;align-items:center;gap:10px}.form-actions .spacer{flex:1}.end-state{text-align:center;padding:80px 16px}.end-state h1{margin:0 0 8px;font-size:2rem}.end-state .subtitle{margin:0 0 28px;color:var(--text-dim)}@media (max-width: 480px){.app-header h1{font-size:1.4rem}.event-pin-label{display:none}.event-row{flex-wrap:wrap}}
