*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;color:#1f2937;background:#f9fafb}.auth-page{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem}.auth-card{background:#fff;padding:2rem;border-radius:12px;box-shadow:0 4px 16px #00000014;width:100%;max-width:360px;display:flex;flex-direction:column;gap:.75rem}.auth-card h1{text-align:center;margin:0 0 .5rem}.downloads{background:#fff;padding:1rem 1.5rem;border-radius:12px;box-shadow:0 4px 16px #00000014;text-align:center;display:flex;flex-direction:column;gap:.5rem}.downloads p{margin:0;font-weight:600;font-size:.9rem;color:#4b5563}.download-links{display:flex;gap:.75rem;justify-content:center;flex-wrap:wrap}.download-links a{padding:.5rem .9rem;border:1px solid #3174ad;border-radius:6px;color:#3174ad;text-decoration:none;font-size:.9rem}.download-links a:hover{background:#3174ad;color:#fff}label{display:flex;flex-direction:column;gap:.25rem;font-size:.85rem;font-weight:600}label.inline{flex-direction:row;align-items:center;gap:.5rem;font-weight:400}input,select,textarea{padding:.5rem;border:1px solid #d1d5db;border-radius:6px;font-size:.95rem}button{padding:.5rem .9rem;border:1px solid #d1d5db;border-radius:6px;background:#fff;cursor:pointer;font-size:.9rem}button.primary{background:#3174ad;border-color:#3174ad;color:#fff}button.danger{background:#b91c1c;border-color:#b91c1c;color:#fff}button.active{background:#3174ad;border-color:#3174ad;color:#fff}.link-button{border:none;background:transparent;color:#3174ad}.error{color:#b91c1c;font-size:.85rem}.hint{color:#6b7280;font-size:.85rem}.layout{min-height:100vh}.topbar{display:flex;align-items:center;gap:1rem;padding:.75rem 1.5rem;background:#fff;border-bottom:1px solid #e5e7eb}.brand{font-weight:700;font-size:1.1rem}.nav-links{display:flex;gap:1rem;flex:1}.nav-links a{text-decoration:none;color:#4b5563;padding:.25rem 0}.nav-links a.active{color:#3174ad;border-bottom:2px solid #3174ad}.content{padding:1.5rem;max-width:1100px;margin:0 auto}.page-header{display:flex;align-items:center;justify-content:space-between}.toolbar{display:flex;align-items:center;gap:.5rem;margin-bottom:1rem;flex-wrap:wrap}.view-switch{display:flex;gap:.25rem}.current-date{font-weight:600;min-width:140px;text-align:center}.legend{display:flex;gap:1rem;flex-wrap:wrap;margin-bottom:.75rem}.legend-item{display:flex;align-items:center;gap:.35rem;font-size:.85rem}.dot{display:inline-block;width:12px;height:12px;border-radius:50%}.calendar.month .weekday-row,.calendar.month .month-grid{display:grid;grid-template-columns:repeat(7,1fr)}.weekday{text-align:center;font-weight:600;font-size:.8rem;padding:.4rem;color:#6b7280}.month-grid{border:1px solid #e5e7eb;border-radius:8px;overflow:hidden}.day-cell{height:110px;overflow:hidden;border:1px solid #e5e7eb;padding:.35rem;cursor:pointer;background:#fff}.day-cell.outside{background:#f3f4f6;color:#9ca3af}.day-number{font-size:.8rem;font-weight:600}.day-events{display:flex;flex-direction:column;gap:2px;margin-top:.25rem}.event-chip{display:flex;gap:.25rem;font-size:.72rem;color:#fff;padding:2px 4px;border-radius:3px;cursor:pointer;overflow:hidden;white-space:nowrap}.event-time{opacity:.85}.event-title{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.event-chip.multiday{border-left:3px solid rgba(255,255,255,.85);padding-left:5px}.more{font-size:.7rem;color:#6b7280}.calendar.week{display:grid;grid-template-columns:repeat(7,1fr);border:1px solid #e5e7eb;border-radius:8px;overflow:hidden}.week-col{height:320px;overflow:hidden;border-right:1px solid #e5e7eb;padding:.35rem;cursor:pointer}.week-col:last-child{border-right:none}.week-header{font-weight:600;font-size:.8rem;text-align:center;margin-bottom:.35rem}.week-events{display:flex;flex-direction:column;gap:2px}.calendar.day{background:#fff;border:1px solid #e5e7eb;border-radius:8px;padding:1rem}.empty{color:#9ca3af}.upcoming{margin-top:1.5rem;background:#fff;border:1px solid #e5e7eb;border-radius:8px;padding:1rem}.upcoming ul{margin:0;padding-left:1.2rem}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:10}.modal{background:#fff;border-radius:12px;padding:1.5rem;width:100%;max-width:480px;display:flex;flex-direction:column;gap:.75rem;max-height:90vh;overflow-y:auto}.modal .row{display:flex;gap:.75rem}.modal .row label{flex:1}.modal-actions{display:flex;justify-content:flex-end;gap:.5rem}.table{width:100%;border-collapse:collapse;background:#fff;border:1px solid #e5e7eb;border-radius:8px;overflow:hidden}.table th,.table td{text-align:left;padding:.6rem .9rem;border-bottom:1px solid #e5e7eb}.table .actions{display:flex;gap:.35rem}.settings-form{display:flex;flex-direction:column;gap:1rem;max-width:360px;background:#fff;border:1px solid #e5e7eb;border-radius:8px;padding:1.5rem}.kanban{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;align-items:start}.kanban-col{background:#f3f4f6;border:1px solid #e5e7eb;border-radius:8px;padding:.75rem;min-height:300px}.kanban-col-header{font-weight:700;margin-bottom:.75rem;display:flex;align-items:center;gap:.5rem}.kanban-count{background:#e5e7eb;border-radius:999px;padding:.1rem .5rem;font-size:.75rem;color:#4b5563}.kanban-cards{display:flex;flex-direction:column;gap:.5rem}.kanban-card{background:#fff;border:1px solid #e5e7eb;border-left:4px solid #3174ad;border-radius:6px;padding:.6rem;cursor:pointer;display:flex;flex-direction:column;gap:.35rem}.kanban-card-title{font-weight:600;font-size:.9rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kanban-card-time{font-size:.78rem;color:#6b7280}.kanban-card select{align-self:flex-start;padding:.2rem .4rem;font-size:.8rem}.event-chip.recurring:after{content:"↻";font-size:.7rem;opacity:.9}.notifications-banner{background:#fff7ed;border-bottom:1px solid #fde68a;padding:.75rem 1.5rem;display:flex;flex-direction:column;gap:.5rem}.notification-item{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}.notification-info{display:flex;flex-direction:column;gap:.1rem}.notification-info span{font-size:.8rem;color:#6b7280}.notification-actions{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}.notification-actions input{width:80px;padding:.3rem}body{background:#f1f5f9}button{transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease}button:hover{box-shadow:0 1px 4px #00000014}button.primary:hover{background:#285f8c}.topbar{position:sticky;top:0;z-index:5;box-shadow:0 1px 3px #0000000f}.brand{color:#3174ad}.auth-card,.modal,.upcoming,.table,.calendar.day,.kanban-col{box-shadow:0 2px 8px #0000000d}.settings-form+.settings-form{margin-top:1rem}.ics-url{display:flex;gap:.5rem}.ics-url input{flex:1}
