:root{--bg:#f5f5f7;--card:#fff;--text:#1d1d1f;--text-secondary:#6e6e73;--text-tertiary:#aeaeb2;--hairline:#00000014;--blue:#0071e3;--blue-tint:#e8f2fe;--orange:#ff9500;--red:#ff3b30;--red-tint:#ffebea;--purple:#af52de;--gray:#8e8e93;--gray-tint:#f0f0f2;--green:#34c759;--shadow-sm:0 1px 2px #0000000a, 0 1px 8px #0000000a;--shadow-md:0 4px 16px #00000014, 0 1px 3px #0000000f;--shadow-lg:0 20px 60px #0000002e, 0 2px 8px #00000014;--radius-sm:10px;--radius-md:16px;--radius-lg:22px}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#app{height:100%}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;letter-spacing:-.01em;margin:0;font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,SF Pro Text,Helvetica Neue,Arial,sans-serif}.app{max-width:980px;margin:0 auto;padding:28px 20px 80px}.login-wrap{justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.login-card{background:var(--card);border-radius:var(--radius-lg);width:100%;max-width:380px;box-shadow:var(--shadow-lg);text-align:center;padding:32px 28px}.login-card .mark{background:linear-gradient(135deg,#0071e3,#42a5f5);border-radius:14px;justify-content:center;align-items:center;width:52px;height:52px;margin:0 auto 16px;font-size:24px;display:flex}.login-card h1{margin:0 0 4px;font-size:21px;font-weight:700}.login-card p{color:var(--text-secondary);margin:0 0 22px;font-size:13.5px}.login-card .field{text-align:left;margin-bottom:12px}.login-card label{color:var(--text-secondary);margin-bottom:5px;font-size:12.5px;font-weight:600;display:block}.login-card input{border:1px solid var(--hairline);background:var(--gray-tint);width:100%;color:var(--text);border-radius:10px;padding:11px 13px;font-family:inherit;font-size:14.5px}.login-card input:focus{outline:2px solid var(--blue);outline-offset:1px;background:#fff}.login-msg{min-height:16px;margin:10px 0;font-size:12.5px}.login-msg.error{color:var(--red)}.login-msg.info{color:var(--blue)}.login-actions{flex-direction:column;gap:10px;margin-top:16px;display:flex}.login-toggle{color:var(--blue);cursor:pointer;background:0 0;border:none;margin-top:14px;font-family:inherit;font-size:13px}.header{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:22px;display:flex}.header h1{letter-spacing:-.02em;margin:0 0 2px;font-size:26px;font-weight:700}.header p{color:var(--text-secondary);margin:0;font-size:13.5px}.header-actions{flex-shrink:0;align-items:center;gap:10px;display:flex}.who{color:var(--text-tertiary);text-align:right;margin-right:2px;font-size:12.5px}.btn{cursor:pointer;white-space:nowrap;border:none;border-radius:980px;align-items:center;gap:6px;padding:10px 18px;font-family:inherit;font-size:14px;font-weight:600;transition:transform .12s,background .15s;display:inline-flex}.btn:active{transform:scale(.96)}.btn-primary{background:var(--blue);color:#fff;box-shadow:var(--shadow-sm)}.btn-primary:hover{background:#0077ed}.btn-secondary{background:var(--card);color:var(--text);border:1px solid var(--hairline)}.btn-secondary:hover{background:#fafafa}.btn-small{padding:7px 13px;font-size:12.5px}.btn-icon{background:var(--card);border:1px solid var(--hairline);width:34px;height:34px;color:var(--text);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;padding:0;font-size:16px;display:inline-flex}.btn-icon:active{transform:scale(.9)}.alerts-section{margin-bottom:22px}.alerts-title{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em;margin:0 0 10px 4px;font-size:13px;font-weight:600}.alerts-scroll{scrollbar-width:none;gap:10px;padding:2px 2px 8px;display:flex;overflow-x:auto}.alerts-scroll::-webkit-scrollbar{display:none}.alert-pill{background:var(--card);border-radius:var(--radius-sm);min-width:190px;box-shadow:var(--shadow-sm);border-left:4px solid var(--gray);flex:none;padding:12px 14px}.alert-pill.urgent{border-left-color:var(--red)}.alert-pill.soon{border-left-color:var(--orange)}.alert-pill.upcoming{border-left-color:var(--blue)}.alert-pill .cat{text-transform:uppercase;letter-spacing:.03em;color:var(--text-tertiary);margin-bottom:3px;font-size:11px;font-weight:700}.alert-pill .title{margin-bottom:3px;font-size:14px;font-weight:600;line-height:1.25}.alert-pill .when{color:var(--text-secondary);font-size:12.5px}.alert-pill.urgent .when{color:var(--red);font-weight:600}.alert-pill.soon .when{color:var(--orange);font-weight:600}.no-alerts{background:var(--card);border-radius:var(--radius-sm);color:var(--text-tertiary);box-shadow:var(--shadow-sm);padding:16px;font-size:13.5px}.toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.month-nav{align-items:center;gap:10px;display:flex}.month-label{text-align:center;min-width:170px;font-size:19px;font-weight:700}.filters{flex-wrap:wrap;gap:6px;display:flex}.chip{border:1px solid var(--hairline);background:var(--card);color:var(--text-secondary);cursor:pointer;border-radius:980px;align-items:center;gap:6px;padding:6px 13px;font-size:12.5px;font-weight:600;display:flex}.chip .dot{border-radius:50%;width:7px;height:7px}.chip.active{background:var(--text);color:#fff;border-color:var(--text)}.chip.active .dot{background:#fff!important}.calendar-card{background:var(--card);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:14px;overflow:hidden}.weekdays{grid-template-columns:repeat(7,1fr);padding:6px 4px 10px;display:grid}.weekdays div{text-align:center;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.03em;font-size:11.5px;font-weight:700}.grid{grid-template-columns:repeat(7,1fr);gap:4px;display:grid}.day{aspect-ratio:1/.85;cursor:pointer;background:0 0;border-radius:12px;flex-direction:column;padding:6px 6px 4px;transition:background .12s;display:flex;position:relative}.day:hover{background:var(--gray-tint)}.day.other-month{opacity:.28}.day.selected{background:var(--blue-tint)}.day .num{border-radius:50%;justify-content:center;align-items:center;width:22px;height:22px;font-size:13.5px;font-weight:600;display:flex}.day.today .num{background:var(--red);color:#fff}.day .dots{flex-wrap:wrap;gap:3px;margin-top:4px;display:flex}.day .dots span{border-radius:50%;width:6px;height:6px}.day .more{color:var(--text-tertiary);margin-top:2px;font-size:9.5px}.day-panel{background:var(--card);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);margin-top:16px;padding:16px 18px}.day-panel h3{margin:0 0 10px;font-size:15.5px;font-weight:700}.event-row{border-top:1px solid var(--hairline);align-items:flex-start;gap:10px;padding:10px 0;display:flex}.event-row:first-of-type{border-top:none}.event-row .swatch{border-radius:50%;flex-shrink:0;width:9px;height:9px;margin-top:5px}.event-row .info{flex:1;min-width:0}.event-row .info .t{font-size:14px;font-weight:600}.event-row .info .meta{color:var(--text-secondary);margin-top:1px;font-size:12.5px}.event-row .info .notes{color:var(--text-tertiary);margin-top:3px;font-size:12.5px}.del-btn{color:var(--text-tertiary);cursor:pointer;background:0 0;border:none;border-radius:6px;flex-shrink:0;padding:4px 6px;font-size:13px}.del-btn:hover{color:var(--red);background:var(--red-tint)}.empty-state{color:var(--text-tertiary);padding:6px 0;font-size:13.5px}.overlay{-webkit-backdrop-filter:blur(6px);z-index:100;opacity:0;pointer-events:none;background:#00000059;justify-content:center;align-items:center;padding:20px;transition:opacity .18s;display:flex;position:fixed;inset:0}.overlay.show{opacity:1;pointer-events:auto}.modal{background:var(--card);border-radius:var(--radius-lg);width:100%;max-width:420px;box-shadow:var(--shadow-lg);max-height:88vh;padding:22px;transition:transform .18s;overflow-y:auto;transform:scale(.94)translateY(8px)}.overlay.show .modal{transform:scale(1)translateY(0)}.modal h2{margin:0 0 16px;font-size:19px;font-weight:700}.field{margin-bottom:14px}.field label{color:var(--text-secondary);margin-bottom:5px;font-size:12.5px;font-weight:600;display:block}.field input[type=text],.field input[type=date],.field select,.field textarea{border:1px solid var(--hairline);background:var(--gray-tint);width:100%;color:var(--text);border-radius:10px;padding:10px 12px;font-family:inherit;font-size:14px}.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid var(--blue);outline-offset:1px;background:#fff}.field textarea{resize:vertical;min-height:56px}.row2{grid-template-columns:1fr 1fr;gap:10px;display:grid}.cat-options{flex-wrap:wrap;gap:8px;display:flex}.cat-opt{border:1.5px solid var(--hairline);cursor:pointer;color:var(--text-secondary);background:#fff;border-radius:980px;align-items:center;gap:6px;padding:7px 13px;font-size:13px;font-weight:600;display:flex}.cat-opt .dot{border-radius:50%;width:8px;height:8px}.cat-opt.selected{border-color:currentColor}.modal-actions{gap:10px;margin-top:18px;display:flex}.modal-actions .btn{flex:1;justify-content:center}.notif-banner{color:#fff;border-radius:var(--radius-md);box-shadow:var(--shadow-sm);background:linear-gradient(135deg,#0071e3,#42a5f5);justify-content:space-between;align-items:center;gap:12px;margin-bottom:18px;padding:13px 16px;font-size:13.5px;display:flex}.notif-banner button{color:#fff;cursor:pointer;background:#ffffff38;border:none;border-radius:980px;flex-shrink:0;padding:8px 14px;font-size:12.5px;font-weight:700}.notif-banner button:hover{background:#ffffff52}.notif-banner.hidden{display:none}.loading-state{text-align:center;color:var(--text-tertiary);padding:60px 20px;font-size:14px}@media (width<=600px){.month-label{min-width:auto;font-size:17px}.day .num{width:19px;height:19px;font-size:12px}.weekdays div{font-size:10px}.header{flex-direction:column}.header-actions{justify-content:space-between;width:100%}}.year-view{background:var(--card);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);margin-bottom:18px;padding:18px;display:none}.year-view.show{display:block}.year-view-header{justify-content:center;align-items:center;gap:14px;margin-bottom:16px;display:flex}.year-label{text-align:center;min-width:70px;font-size:18px;font-weight:700}.year-grid{grid-template-columns:repeat(4,1fr);gap:16px;display:grid}.mini-month{border:1px solid var(--hairline);cursor:pointer;border-radius:12px;padding:10px;transition:background .12s,border-color .12s}.mini-month:hover{background:var(--gray-tint);border-color:var(--text-tertiary)}.mini-month.current{border-color:var(--blue);background:var(--blue-tint)}.mini-month .mm-title{text-align:center;margin-bottom:6px;font-size:12.5px;font-weight:700}.mini-month.current .mm-title{color:var(--blue)}.mini-grid{grid-template-columns:repeat(7,1fr);gap:1px;display:grid}.mini-grid .mm-day{aspect-ratio:1;color:var(--text-secondary);justify-content:center;align-items:center;font-size:9px;display:flex;position:relative}.mini-grid .mm-day.other{opacity:.25}.mini-grid .mm-day.today{background:var(--red);color:#fff;border-radius:50%;font-weight:700}.mini-grid .mm-day.has-event:after{content:"";background:var(--blue);border-radius:50%;width:3px;height:3px;position:absolute;bottom:0;left:50%;transform:translate(-50%)}.mini-grid .mm-day.today.has-event:after{background:#fff}@media (width<=900px){.year-view,#yearToggleBtn{display:none!important}}@media (width<=700px){.year-grid{grid-template-columns:repeat(2,1fr)}}.day-tooltip{z-index:200;background:var(--card);color:var(--text);box-shadow:var(--shadow-lg);border:1px solid var(--hairline);pointer-events:none;opacity:0;transform-origin:0 0;border-radius:12px;min-width:150px;max-width:230px;padding:10px 12px;font-size:12.5px;line-height:1.5;transition:opacity .1s,transform .1s;position:fixed;transform:scale(.92)}.day-tooltip.show{opacity:1;transform:scale(1)}.day-tooltip .tt-date{color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.03em;margin-bottom:6px;font-size:10.5px;font-weight:700}.day-tooltip .tt-row{align-items:flex-start;gap:6px;display:flex}.day-tooltip .tt-row+.tt-row{margin-top:5px}.day-tooltip .tt-dot{border-radius:50%;flex-shrink:0;width:6px;height:6px;margin-top:5px}.day-tooltip .tt-title{color:var(--text);font-weight:600}.text-btn{border:1px solid var(--hairline);background:var(--card);color:#34c759;cursor:pointer;border-radius:980px;align-items:center;gap:5px;margin-top:8px;padding:6px 12px;font-size:12.5px;font-weight:600;display:inline-flex}.text-btn:hover{background:#e7f8ed;border-color:#34c759}.cc-header{margin-bottom:24px}.cc-header h1{letter-spacing:-.02em;margin:0 0 4px;font-size:26px;font-weight:700}.cc-header p{color:var(--text-secondary);margin:0;font-size:13.5px}.cc-stats{grid-template-columns:repeat(5,1fr);gap:12px;margin-bottom:24px;display:grid}.cc-stat-card{background:var(--card);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);text-align:center;padding:16px 14px}.cc-stat-num{color:var(--blue);letter-spacing:-.02em;font-size:28px;font-weight:700}.cc-stat-label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.03em;margin-top:4px;font-size:11.5px;font-weight:600}.cc-grid{grid-template-columns:280px 1fr;align-items:start;gap:16px;display:grid}.cc-panel{background:var(--card);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:18px}.cc-panel-title{margin-bottom:14px;font-size:14px;font-weight:700}.cc-user-row{border-top:1px solid var(--hairline);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:12px 4px;display:flex}.cc-user-row:first-child{border-top:none}.cc-user-info{align-items:center;gap:12px;display:flex}.cc-user-avatar{color:#fff;background:linear-gradient(135deg,#0071e3,#42a5f5);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:38px;height:38px;font-size:15px;font-weight:700;display:flex}.cc-user-name{font-size:14px;font-weight:600}.cc-user-handle{color:var(--text-tertiary);font-size:12px}.cc-admin-badge{background:var(--blue-tint);color:var(--blue);letter-spacing:.02em;vertical-align:middle;border-radius:980px;margin-left:6px;padding:2px 7px;font-size:10px;font-weight:700;display:inline-block}.cc-user-actions{flex-wrap:wrap;gap:6px;display:flex}.cc-danger{color:var(--red)!important}.cc-danger:hover{background:var(--red-tint)!important;border-color:var(--red)!important}@media (width<=900px){.cc-stats{grid-template-columns:repeat(2,1fr)}.cc-grid{grid-template-columns:1fr}}
