:root{color-scheme:light dark;font-family:system-ui,-apple-system,Segoe UI,sans-serif;--color-primary: #4f46e5;--color-primary-hover: #4338ca;--color-primary-soft: color-mix(in srgb, var(--color-primary) 14%, transparent);--color-primary-soft-strong: color-mix(in srgb, var(--color-primary) 24%, transparent);--color-danger: #dc2626;--color-danger-hover: #b91c1c;--color-danger-soft: color-mix(in srgb, var(--color-danger) 12%, transparent);--color-border: color-mix(in srgb, currentColor 15%, transparent);--color-border-strong: color-mix(in srgb, currentColor 22%, transparent);--surface-hover: color-mix(in srgb, currentColor 6%, transparent);--surface-active: color-mix(in srgb, currentColor 10%, transparent);--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px;--shadow-sm: 0 1px 3px rgba(15, 23, 42, .08), 0 1px 2px rgba(15, 23, 42, .06);--shadow-md: 0 8px 24px rgba(15, 23, 42, .14), 0 2px 8px rgba(15, 23, 42, .08);--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem}@media(prefers-color-scheme:dark){:root{--color-primary: #818cf8;--color-primary-hover: #a5b4fc;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .4), 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 8px 24px rgba(0, 0, 0, .45), 0 2px 8px rgba(0, 0, 0, .3)}}*{box-sizing:border-box}body{margin:0}a{color:var(--color-primary)}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}button{font-family:inherit;padding:.5rem .9rem;border-radius:var(--radius-sm);border:1px solid var(--color-border);background:transparent;color:inherit;cursor:pointer;transition:background-color .12s ease,border-color .12s ease,color .12s ease,transform 80ms ease}button:hover:not(:disabled){background:var(--surface-hover)}button:active:not(:disabled){transform:translateY(1px)}button:disabled{opacity:.5;cursor:not-allowed}input,select,textarea{font-family:inherit;font-size:1rem;padding:.55rem .7rem;border-radius:var(--radius-sm);border:1px solid var(--color-border);background:transparent;color:inherit;transition:border-color .12s ease}input:focus,select:focus,textarea:focus{border-color:var(--color-primary)}.app-shell{display:flex;flex-direction:column;min-height:100vh}.app-sidebar{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-4);background:color-mix(in srgb,var(--color-primary) 4%,transparent);border-bottom:1px solid var(--color-border)}.app-sidebar-header{display:flex;align-items:center;justify-content:space-between}.app-title{margin:0;font-size:1.25rem;font-weight:700;letter-spacing:-.01em}.app-sidebar-toggle{display:inline-flex;align-items:center;justify-content:center;padding:.4rem;border-radius:var(--radius-sm);border:1px solid var(--color-border);background:transparent;color:inherit}.app-sidebar-panel{display:none;flex-direction:column;gap:var(--space-3)}.app-sidebar-panel.open{display:flex;margin-top:var(--space-2);padding-top:var(--space-3);border-top:1px solid var(--color-border)}.app-sidebar-nav{display:flex;flex-direction:column;flex-wrap:wrap;gap:var(--space-2)}.app-sidebar-link{display:flex;align-items:center;gap:.6rem;padding:.5rem .8rem;border-radius:var(--radius-sm);text-decoration:none;color:inherit;font-size:.9rem;font-weight:500;transition:background-color .12s ease,color .12s ease}.app-sidebar-link svg{flex-shrink:0;opacity:.75}.app-sidebar-link:hover{background:var(--surface-hover)}.app-sidebar-link.active{background:var(--color-primary-soft);color:var(--color-primary);font-weight:600}.app-sidebar-link.active svg{opacity:1}.app-main{flex:1;display:flex;flex-direction:column;min-width:0}.app-content{flex:1;padding:var(--space-4)}@media(min-width:768px){.app-shell{flex-direction:row}.app-sidebar{width:220px;flex-shrink:0;border-bottom:none;border-right:1px solid var(--color-border);height:100vh;position:sticky;top:0}.app-sidebar-toggle{display:none}.app-sidebar-panel,.app-sidebar-panel.open{display:flex;flex:1;min-height:0;margin-top:0;padding-top:0;border-top:none}.app-content{padding:var(--space-5) var(--space-6)}}@media(min-width:1200px){.app-content{max-width:1400px;margin:0 auto;width:100%}}@media(max-width:480px){.app-content{padding:var(--space-3)}}.app-account{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-2);margin-top:auto;padding-top:var(--space-3);border-top:1px solid var(--color-border)}.app-account-username{font-size:.9rem;opacity:.8}.auth-page{max-width:380px;margin:var(--space-6) auto;padding:var(--space-5);background:color-mix(in srgb,currentColor 3%,transparent);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.auth-page h2{margin-top:0}.auth-form{display:flex;flex-direction:column;gap:.4rem}.auth-form label{font-size:.85rem;font-weight:600;margin-top:.5rem}.auth-form button{margin-top:var(--space-4);padding:.65rem 1rem}.auth-form button[type=submit]{background:var(--color-primary);color:#fff;border-color:transparent}.auth-form button[type=submit]:hover:not(:disabled){background:var(--color-primary-hover)}.auth-form .auth-secondary{background:transparent}.auth-error{color:var(--color-danger);font-size:.9rem;margin:.25rem 0 0}.auth-info{color:#16a34a;font-size:.9rem;margin:.25rem 0 0}.auth-divider{display:flex;align-items:center;gap:var(--space-3);margin:var(--space-5) 0;opacity:.6;font-size:.85rem}.auth-divider:before,.auth-divider:after{content:"";flex:1;border-top:1px solid var(--color-border)}.auth-social{display:flex;flex-direction:column;gap:var(--space-2)}.auth-switch{margin-top:var(--space-5);font-size:.9rem;text-align:center}.calendar-subnav{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-4)}.calendar-subnav-link{padding:.4rem .8rem;border-radius:var(--radius-sm);text-decoration:none;color:inherit;border:1px solid var(--color-border);font-size:.9rem;font-weight:500;transition:background-color .12s ease,color .12s ease,border-color .12s ease}.calendar-subnav-link:hover{background:var(--surface-hover)}.calendar-subnav-link.active{background:var(--color-primary-soft);color:var(--color-primary);border-color:transparent;font-weight:600}.calendar-toolbar{display:flex;align-items:center;gap:var(--space-4);margin-bottom:var(--space-4);flex-wrap:wrap}.calendar-toolbar h2{margin:0;font-size:1.15rem;font-weight:700}.calendar-nav{display:flex;gap:var(--space-2)}.calendar-nav button{padding:.3rem .7rem}.event-pill{display:block;width:100%;background:var(--color-primary-soft);color:var(--color-primary);border:none;border-radius:var(--radius-sm);padding:1px 6px;font-size:.75rem;font-weight:500;text-align:left;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:background-color .12s ease}.event-pill:hover{background:var(--color-primary-soft-strong)}.month-weekdays{display:grid;grid-template-columns:repeat(7,1fr);border-top:1px solid var(--color-border);border-left:1px solid var(--color-border)}.month-weekday{text-align:center;font-size:.75rem;font-weight:600;opacity:.7;padding:6px 2px;border-bottom:1px solid var(--color-border);border-right:1px solid var(--color-border)}.month-weeks{display:flex;flex-direction:column}.month-week{display:grid;grid-template-columns:repeat(7,1fr);row-gap:2px;border-left:1px solid var(--color-border);border-bottom:1px solid var(--color-border)}.month-day-cell{border-right:1px solid var(--color-border);padding:2px 3px;cursor:pointer;transition:background-color .12s ease}.month-day-cell:hover{background:var(--surface-hover)}.month-day-cell-outside{opacity:.4}.month-day-number{font-family:inherit;font-size:.8rem;font-weight:600;color:inherit;background:none;border:none;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;cursor:pointer;border-radius:50%;transition:background-color .12s ease}.month-day-number:hover{background:var(--surface-active)}.month-day-cell-today .month-day-number{background:var(--color-primary);color:#fff}.month-day-cell-today .month-day-number:hover{background:var(--color-primary-hover)}.event-banner{align-self:center;margin:0 2px;background:var(--color-primary-soft);color:var(--color-primary);border:none;border-radius:var(--radius-sm);padding:1px 6px;font-size:.7rem;font-weight:500;text-align:left;cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;transition:background-color .12s ease}.event-banner:hover{background:var(--color-primary-soft-strong)}.event-banner-continues-before{margin-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.event-banner-continues-after{margin-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.week-grid{display:grid;grid-template-columns:50px repeat(7,minmax(90px,1fr));border-top:1px solid var(--color-border);border-left:1px solid var(--color-border);overflow-x:auto}.week-gutter{border-bottom:1px solid var(--color-border);border-right:1px solid var(--color-border);font-size:.7rem;display:flex;align-items:center;justify-content:center;padding:4px}.week-day-header{width:100%;font-family:inherit;color:inherit;background:none;border:none;text-align:center;padding:6px 4px;cursor:pointer;border-bottom:1px solid var(--color-border);border-right:1px solid var(--color-border);transition:background-color .12s ease}.week-day-header:hover{background:var(--surface-hover)}.week-day-name{font-size:.7rem;opacity:.7}.week-day-number{font-weight:600;display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px}.week-day-header-today .week-day-number{background:var(--color-primary);color:#fff;border-radius:50%}.week-allday-cell{border-bottom:1px solid var(--color-border);border-right:1px solid var(--color-border);padding:4px;display:flex;flex-direction:column;gap:2px;min-height:28px}.week-allday-row{grid-column:2 / 9;display:grid;grid-template-columns:repeat(7,1fr);grid-auto-rows:20px;row-gap:2px;padding:4px 0;border-bottom:1px solid var(--color-border)}.week-allday-day-cell,.week-hours-gutter{border-right:1px solid var(--color-border)}.week-hour-label{font-size:.65rem;opacity:.6;padding:2px 4px;box-sizing:border-box;border-bottom:1px solid color-mix(in srgb,currentColor 8%,transparent);text-align:right}.week-day-column{position:relative;border-right:1px solid var(--color-border)}.week-hour-cell{box-sizing:border-box;border-bottom:1px solid color-mix(in srgb,currentColor 8%,transparent);cursor:pointer;transition:background-color .12s ease}.week-hour-cell:hover{background:var(--surface-hover)}.event-block{position:absolute;left:2px;right:2px;background:var(--color-primary);color:#fff;border:none;border-radius:var(--radius-sm);padding:2px 4px;font-size:.7rem;text-align:left;overflow:hidden;cursor:pointer;display:flex;flex-direction:column;gap:1px;transition:background-color .12s ease}.event-block:hover{background:var(--color-primary-hover)}.event-block-title{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.event-block-time{opacity:.85}.event-block-continues-before{border-top-left-radius:0;border-top-right-radius:0}.event-block-continues-after{border-bottom-left-radius:0;border-bottom-right-radius:0}.day-allday-row,.day-grid{display:flex}.day-allday-row .week-gutter,.day-grid .week-hours-gutter{width:50px;flex-shrink:0}.day-allday-row .week-allday-cell,.day-grid .week-day-column{flex:1}.day-allday-row{border-top:1px solid var(--color-border);border-left:1px solid var(--color-border)}.day-grid{border-left:1px solid var(--color-border);margin-top:var(--space-3)}.year-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--space-5)}.year-month{padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm)}.year-month-title{display:block;width:100%;margin:0 0 .4rem;font-family:inherit;font-size:.95rem;font-weight:700;text-align:center;color:inherit;background:none;border:none;border-radius:var(--radius-sm);cursor:pointer;padding:2px 0;transition:background-color .12s ease}.year-month-title:hover{background:var(--surface-active)}.year-month-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.year-month-weekday{text-align:center;font-size:.65rem;opacity:.6}.year-month-day{background:transparent;border:none;font-size:.7rem;padding:3px 0;cursor:pointer;color:inherit;border-radius:var(--radius-sm);transition:background-color .12s ease}.year-month-day:hover{background:var(--surface-active)}.year-month-day-outside{opacity:.3}.year-month-day-today{background:var(--color-primary);color:#fff;font-weight:600}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a80;display:flex;align-items:center;justify-content:center;padding:var(--space-4);z-index:100}.modal{background:Canvas;color:CanvasText;border-radius:var(--radius-lg);padding:var(--space-5);max-width:420px;width:100%;max-height:90vh;overflow-y:auto;box-shadow:var(--shadow-md)}.modal h3{margin-top:0}.modal-section-heading{margin:var(--space-4) 0 var(--space-2);padding-top:var(--space-3);border-top:1px solid var(--color-border);font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;opacity:.65}.modal-section-heading:first-child{margin-top:0;padding-top:0;border-top:none}@media(max-width:480px){.modal{padding:var(--space-4);border-radius:var(--radius-md)}}.event-form{display:flex;flex-direction:column;gap:.35rem}.event-form label{font-size:.85rem;font-weight:600;margin-top:.5rem}.event-form input[type=text],.event-form input[type=date],.event-form input[type=time],.event-form textarea{font-size:1rem;background:transparent}.event-form-checkbox{flex-direction:row!important;align-items:center;gap:.5rem;font-weight:400!important}.event-form-times{display:flex;gap:var(--space-3)}.event-form-times>div{flex:1;display:flex;flex-direction:column;gap:.35rem;min-width:0}@media(max-width:480px){.event-form-times{flex-direction:column}}.event-form-actions{display:flex;justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-4);flex-wrap:wrap}.event-form-actions button[type=submit]{background:var(--color-primary);color:#fff;border-color:transparent}.event-form-actions button[type=submit]:hover:not(:disabled){background:var(--color-primary-hover)}.event-form-delete{margin-right:auto;color:var(--color-danger)!important;border-color:var(--color-danger)!important}.event-form-delete:hover:not(:disabled){background:var(--color-danger-soft)!important}.event-view{display:flex;flex-direction:column;gap:.35rem}.event-view-title{margin:0;font-size:1.15rem;font-weight:700}.event-view-description{margin:0;white-space:pre-wrap;opacity:.85}.event-view-time{margin:0;font-size:.9rem;opacity:.7}.lists-page,.groups-page,.friends-page{max-width:960px;margin:0 auto}.lists-create-form,.groups-create-form,.friends-add-form{display:flex;gap:var(--space-2);margin-bottom:var(--space-4)}.lists-create-form input,.groups-create-form input,.friends-add-form input{flex:1}.lists-create-form button,.groups-create-form button,.friends-add-form button{background:var(--color-primary);color:#fff;border-color:transparent;white-space:nowrap}.lists-create-form button:hover:not(:disabled),.groups-create-form button:hover:not(:disabled),.friends-add-form button:hover:not(:disabled){background:var(--color-primary-hover)}.lists-empty,.groups-empty,.friends-empty{opacity:.7}.lists-grid,.groups-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:var(--space-3)}.lists-card,.groups-card{display:flex;flex-direction:column;align-items:flex-start;gap:.4rem;padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);transition:box-shadow .15s ease,transform .15s ease}.lists-card:hover,.groups-card:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}.lists-card-title,.groups-card-title{text-align:left;font-size:1rem;font-weight:600;background:none;border:none;color:inherit;cursor:pointer;padding:0}.lists-card-title:hover,.groups-card-title:hover{color:var(--color-primary)}.lists-card-count,.groups-card-count,.lists-card-events{font-size:.8rem;opacity:.7}.lists-card-actions{display:flex;gap:var(--space-2);margin-top:auto}.lists-card-actions button{padding:.3rem .6rem;font-size:.8rem}.list-detail-items{list-style:none;margin:0 0 var(--space-4);padding:0;display:flex;flex-direction:column;gap:var(--space-2)}.list-detail-empty{opacity:.7;font-size:.9rem}.list-detail-events{list-style:none;margin:0 0 var(--space-4);padding:0;display:flex;flex-direction:column;gap:.35rem}.list-detail-event-row{display:flex;justify-content:space-between;gap:var(--space-2);font-size:.9rem;padding-bottom:.35rem;border-bottom:1px solid color-mix(in srgb,currentColor 10%,transparent)}.list-detail-event-title{font-weight:600}.list-detail-event-time{opacity:.7;font-size:.8rem;white-space:nowrap}.list-item-row{display:flex;align-items:flex-start;gap:var(--space-2);padding-bottom:.4rem;border-bottom:1px solid color-mix(in srgb,currentColor 10%,transparent)}.list-item-checkbox{display:flex;align-items:center;gap:var(--space-2);flex:1}.list-item-text.checked{text-decoration:line-through;opacity:.6}.list-item-quantity{opacity:.7;font-size:.85rem}.list-item-notes{margin:.1rem 0 0 1.75rem;font-size:.8rem;opacity:.7;flex-basis:100%}.list-item-delete,.event-lists-detach,.event-sharing-remove,.group-member-remove,.group-invitation-cancel{background:none;border:none;color:var(--color-danger);cursor:pointer;font-size:1.1rem;line-height:1;padding:0 .25rem}.list-item-delete:hover,.event-lists-detach:hover,.event-sharing-remove:hover,.group-member-remove:hover,.group-invitation-cancel:hover{background:var(--color-danger-soft);border-radius:var(--radius-sm)}.list-add-item-form{display:flex;flex-wrap:wrap;gap:var(--space-2)}.list-add-item-form input{flex:1;min-width:90px;font-size:.9rem}.list-add-item-quantity{flex:0 0 70px!important}.list-add-item-form button{background:var(--color-primary);color:#fff;border-color:transparent}.list-add-item-form button:hover:not(:disabled){background:var(--color-primary-hover)}.event-lists-section,.event-sharing-section{display:flex;flex-direction:column;gap:.4rem}.event-lists-hint{font-size:.85rem;opacity:.6;margin-top:.5rem}.event-lists-empty,.event-sharing-empty{font-size:.85rem;opacity:.7;margin:0}.event-lists-attached,.event-sharing-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.3rem}.event-lists-attached-row{display:flex;align-items:center;gap:.4rem}.event-lists-open{flex:1;display:flex;justify-content:space-between;text-align:left;background:var(--surface-hover);border:none;border-radius:var(--radius-sm);padding:.4rem .6rem;color:inherit;cursor:pointer;font-size:.9rem;transition:background-color .12s ease}.event-lists-open:hover{background:var(--surface-active)}.event-lists-count{opacity:.7;font-size:.8rem}.event-lists-attach-form,.event-lists-create-form,.event-sharing-attach-form{display:flex;gap:var(--space-2);flex-wrap:wrap}.event-lists-attach-form input,.event-lists-create-form input,.event-sharing-attach-form input{flex:1;min-width:140px;font-size:.85rem;padding:.4rem .5rem}.event-lists-attach-form button,.event-lists-create-form button,.event-sharing-attach-form button{padding:.4rem .7rem;font-size:.85rem}.event-lists-create-form button{background:var(--color-primary);color:#fff;border-color:transparent}.event-lists-create-form button:hover:not(:disabled){background:var(--color-primary-hover)}.event-sharing-group{display:flex;flex-direction:column;gap:.25rem}.event-sharing-subheading{display:block;font-size:.75rem;font-weight:600;opacity:.6}.event-sharing-row,.group-invitation-row,.groups-invitation-row,.friends-row,.friends-request-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);background:var(--surface-hover);border-radius:var(--radius-sm);padding:.4rem .6rem;font-size:.9rem}.groups-invitation-row,.friends-row,.friends-request-row{border:1px solid var(--color-border);border-radius:var(--radius-md);padding:.6rem .75rem;background:transparent}.event-sharing-attach-form button{background:var(--color-primary);color:#fff;border-color:transparent}.event-sharing-attach-form button:hover:not(:disabled){background:var(--color-primary-hover)}.group-role-badge{display:inline-block;padding:.1rem .55rem;border-radius:999px;background:var(--color-primary-soft);color:var(--color-primary);font-size:.75rem;font-weight:600;text-transform:capitalize}.groups-invitations-heading,.friends-section-heading{margin-top:var(--space-6);font-size:1.05rem}.groups-invitations-list,.friends-list,.friends-request-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-2)}.groups-invitation-actions,.friends-request-actions{display:flex;gap:var(--space-2)}.groups-invitation-actions button,.friends-request-actions button,.friends-row button{padding:.3rem .6rem;font-size:.8rem}.group-member-list,.group-invitation-list{list-style:none;margin:0 0 var(--space-4);padding:0;display:flex;flex-direction:column;gap:.4rem}.group-member-row{display:flex;align-items:center;gap:var(--space-2);padding-bottom:.4rem;border-bottom:1px solid color-mix(in srgb,currentColor 10%,transparent)}.group-member-name,.group-invitation-row span{flex:1}.group-invite-form{display:flex;gap:var(--space-2);margin-top:var(--space-2)}.group-invite-form input{flex:1;font-size:.85rem;padding:.4rem .5rem}.group-invite-form button{padding:.4rem .7rem;font-size:.85rem;background:var(--color-primary);color:#fff;border-color:transparent}.group-invite-form button:hover:not(:disabled){background:var(--color-primary-hover)}@media(max-width:600px){.year-grid{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:var(--space-4)}}
