:root{color-scheme:light;--ink:#233329;--muted:#758078;--line:#e6ebe5;--green:#315c45;--paper:#fff;--wash:#f5f7f3}*{box-sizing:border-box}body{margin:0;color:var(--ink);background:var(--wash);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}a,button{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}a:focus-visible,button:focus-visible{outline:3px solid #7f9d61;outline-offset:3px}.calendar-experience{min-height:100dvh}.mobile-view{display:none}.desktop-shell{display:flex;min-height:100dvh}.sidebar{width:220px;flex-shrink:0;padding:40px 24px;border-right:1px solid var(--line);background:#f0f3ec}.brand{font-size:21px;font-weight:750;text-decoration:none;color:var(--green);letter-spacing:-.8px}.brand span{display:block;font-size:10px;letter-spacing:3px;margin-top:10px;font-weight:500}.sidebar-current{margin-top:56px;padding:14px;border-radius:12px;color:var(--green);background:#e1e9dc;font-size:14px;font-weight:650}.sidebar-note{margin-top:96px;padding:14px;font-size:14px}.sidebar-note p{color:var(--muted);font-size:13px;line-height:1.8}.desktop-content{flex:1 1;min-width:0;padding:34px 36px}.desktop-header,.mobile-header{display:flex;align-items:center;justify-content:space-between}.desktop-header{font-size:14px;margin-bottom:24px}.preview-badge{color:var(--green);background:#e6eddf;padding:6px 10px;border-radius:20px;font-size:11px;white-space:nowrap}.connection-notice{font-size:12px;color:var(--muted);line-height:1.7;margin:0 0 26px}.month-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:24px}.month-toolbar h1{font-size:29px;margin:0;letter-spacing:-1.5px}.month-actions{display:flex;gap:6px}.month-actions button{border:1px solid var(--line);background:var(--paper);min-width:38px;height:38px;border-radius:10px;padding:0 12px;font-size:14px}.month-actions button:hover{background:#e8eee4}.desktop-calendar-body{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:24px;align-items:start}.month-grid{background:var(--paper);border:1px solid var(--line);border-radius:18px;overflow:hidden}.day-grid,.weekday-row{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.weekday-row{border-bottom:1px solid var(--line)}.weekday-row span{text-align:center;padding:17px 0;font-size:12px;color:var(--muted)}.weekday-row span:first-child{color:#b15f58}.day{min-width:0;min-height:105px;background:white;border:0;border-bottom:1px solid var(--line);border-right:1px solid var(--line);padding:9px 6px;text-align:left;display:flex;flex-direction:column;align-items:flex-start;gap:5px}.day:nth-child(7n){border-right:0}.day:hover{background:#f0f5eb}.day[aria-pressed=true]{background:#edf3e7;box-shadow:inset 0 0 0 1px #8ca37b}.day.outside{color:#aeb6ae;background:#fafbf9}.day-number{display:inline-flex;width:27px;height:27px;align-items:center;justify-content:center;font-size:12px;border-radius:50%;flex-shrink:0}.today .day-number{background:var(--green);color:white}.event-chip{display:block;width:100%;font-size:11px;background:#e0ead8;border-radius:4px;padding:3px 4px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.event-more{font-size:10px;color:var(--muted)}.day-agenda{background:white;border:1px solid var(--line);border-radius:18px;padding:22px}.agenda-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.agenda-heading h2{font-size:17px;margin:0}.agenda-heading>span{font-size:11px;color:var(--muted)}.empty-state{padding:44px 0;text-align:center}.empty-state>span{font-size:34px;color:#afbea4}.empty-state p{font-size:13px;margin:16px 0 9px}.empty-state small{display:block;font-size:11px;line-height:1.8;color:var(--muted)}.event-list{padding:0;margin:22px 0 0;list-style:none}.event-list li{padding:16px 0;border-top:1px solid var(--line)}.event-list time{display:block;font-size:11px;color:var(--muted);margin-bottom:8px}.event-list strong{font-size:14px}.force-mobile .mobile-view{display:block}.mobile-shell{max-width:600px;min-height:100dvh;margin:auto;background:#fff;padding:max(24px,env(safe-area-inset-top)) 20px max(24px,env(safe-area-inset-bottom))}.mobile-header{margin-bottom:22px}.mobile-header .brand{font-size:19px}.mobile-shell .connection-notice{font-size:11px;margin-bottom:24px}.mobile-shell .month-toolbar{margin-bottom:18px}.mobile-shell .month-toolbar h1{font-size:23px}.mobile-shell .month-actions{gap:4px}.mobile-shell .month-actions button{min-width:36px;height:40px;padding:0 8px}.compact{border:0;border-radius:0}.compact .weekday-row{border:0}.compact .weekday-row span{padding:12px 0}.compact .day{align-items:center;min-height:53px;border:0;border-radius:12px;padding:5px 0;gap:4px}.compact .day-number{width:32px;height:32px;font-size:13px}.compact .day.outside{background:white}.event-dot{height:4px;width:4px;border-radius:50%;background:var(--green)}.mobile-shell .day-agenda{border:0;border-top:1px solid var(--line);border-radius:0;margin-top:24px;padding:25px 0 0}@media (max-width:1199px){.desktop-calendar-body{grid-template-columns:minmax(0,1fr)}.desktop-calendar-body .day-agenda{max-width:none}.sidebar{width:180px}.desktop-content{padding:28px 24px}}@media (max-width:767px){.responsive .desktop-view{display:none}.responsive .mobile-view{display:block}}@media (max-width:360px){.mobile-shell{padding-left:12px;padding-right:12px}.mobile-shell .month-toolbar h1{font-size:20px}}.test-page{max-width:880px;margin:auto;padding:max(12px,env(safe-area-inset-top)) 12px max(16px,env(safe-area-inset-bottom));background:white;min-height:100dvh;font-size:13px;line-height:1.4;overflow-wrap:anywhere}.test-page h1{font-size:18px;margin:0 0 6px}.test-page h2{font-size:15px;margin:0 0 6px}.test-page h3{font-size:14px;margin:6px 0}.test-page section{border-top:1px solid #ddd;padding:6px 0;margin-top:10px}.test-page code,.test-page pre{background:#f4f4f4;padding:6px;border-radius:4px}.test-page code{display:block}.test-page pre{overflow:auto;white-space:pre;font-size:12px;max-height:420px}.test-button,.test-page button{display:inline-block;border:1px solid #aaa;background:#f5f5f5;border-radius:5px;padding:5px 8px;margin:2px 5px 2px 0;font-size:12px;text-decoration:none;color:#111}.test-page button:disabled{opacity:.5;cursor:not-allowed}.test-page .kakao{background:#fee500;border-color:#fee500;color:#191919;font-weight:600}.test-page [role=alert]{color:#a12525;background:#fff0ee;padding:6px}.test-page small{color:#555}.test-notice{background:#fff9df;padding:6px}.test-filters{display:flex;align-items:end;flex-wrap:wrap;gap:6px}.test-filters label{display:flex;flex-direction:column;font-size:13px;min-width:130px;max-width:100%}.test-filters select{font:inherit;padding:6px;max-width:100%}.test-events{list-style:none;padding:0}.test-events li{border-bottom:1px solid #ddd;padding:6px 0}.test-events span{font-size:13px}.test-page details{margin:8px 0}.test-page summary{cursor:pointer}.create-fields{border:0;padding:0;margin:0;display:grid;gap:6px}.create-fields label{display:flex;flex-direction:column;gap:4px;font-size:12px}.create-fields input{font:inherit;padding:6px;border:1px solid #aaa;border-radius:4px;min-width:0;width:100%}.create-fields button{justify-self:start}.ical-row{padding:8px;border:1px solid #ddd;border-radius:5px;display:grid;gap:6px}.test-page p{margin:5px 0}.test-page small{font-size:11px}.test-page .ical-row p{margin:0}.test-page .ical-row{display:flex;align-items:center;gap:6px;padding:5px 0;border:0;border-bottom:1px solid #eee;border-radius:0}.ical-row .ical-name{flex:0 0 auto;max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ical-row .ical-name-input{flex:0 1 100px;width:100px}.ical-row .ical-status{flex-shrink:0;white-space:nowrap}.ical-row .ical-url{flex:1 1;width:0;min-width:0}.test-page .ical-row button{flex-shrink:0;margin:0;padding:5px 6px;white-space:nowrap}@media (max-width:420px){.ical-row .ical-name{max-width:80px}.test-page .ical-row{gap:4px}}.ical-row .ical-url-text{overflow-x:auto;white-space:nowrap;-webkit-user-select:text;user-select:text;overflow-wrap:normal;scrollbar-width:thin}