html{height:100%}body{margin:0;padding:0;height:100%;font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,SF Pro Text,system-ui,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:var(--bg-primary, #ffffff);color:var(--text-primary, #1c1c1e);overflow:hidden}#root{height:100%;display:flex;flex-direction:column}button,input,select,textarea{font-family:inherit}button{cursor:pointer;border:none;background:none;padding:0}@media (prefers-reduced-motion: reduce){*{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}:focus-visible{outline:2px solid var(--accent-color, #007AFF);outline-offset:2px}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-secondary, #f2f2f7)}::-webkit-scrollbar-thumb{background:var(--text-tertiary, #8e8e93);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--text-secondary, #636366)}:root{--color-blue: #007AFF;--color-green: #34C759;--color-indigo: #5856D6;--color-orange: #FF9500;--color-pink: #FF2D92;--color-purple: #AF52DE;--color-red: #FF3B30;--color-teal: #5AC8FA;--color-yellow: #FFCC00;--color-gray-1: #F2F2F7;--color-gray-2: #E5E5EA;--color-gray-3: #C7C7CC;--color-gray-4: #8E8E93;--color-gray-5: #636366;--color-gray-6: #48484A;--bg-primary: #FFFFFF;--bg-secondary: #F2F2F7;--bg-tertiary: #FFFFFF;--bg-grouped-primary: #F2F2F7;--bg-grouped-secondary: #FFFFFF;--text-primary: #000000;--text-secondary: #3C3C43;--text-tertiary: #3C3C4399;--text-quaternary: #3C3C434D;--font-largetitle: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", sans-serif;--font-title1: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", sans-serif;--font-title2: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", sans-serif;--font-title3: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", sans-serif;--font-headline: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", sans-serif;--font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", sans-serif;--font-callout: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", sans-serif;--font-subhead: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", sans-serif;--font-footnote: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", sans-serif;--font-caption1: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", sans-serif;--font-caption2: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", sans-serif;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 16px;--spacing-lg: 24px;--spacing-xl: 32px;--spacing-2xl: 48px;--radius-xs: 4px;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 20px;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .1);--shadow-md: 0 4px 6px rgba(0, 0, 0, .1);--shadow-lg: 0 10px 15px rgba(0, 0, 0, .1);--animation-fast: .15s ease-out;--animation-normal: .25s ease-out;--animation-slow: .35s ease-out}@media (prefers-color-scheme: dark){:root{--bg-primary: #000000;--bg-secondary: #1C1C1E;--bg-tertiary: #2C2C2E;--bg-grouped-primary: #000000;--bg-grouped-secondary: #1C1C1E;--text-primary: #FFFFFF;--text-secondary: #EBEBF5;--text-tertiary: #EBEBF599;--text-quaternary: #EBEBF54D;--color-gray-1: #1C1C1E;--color-gray-2: #2C2C2E;--color-gray-3: #38383A;--color-gray-4: #636366;--color-gray-5: #8E8E93;--color-gray-6: #C7C7CC}}*{box-sizing:border-box}body{margin:0;padding:0;font-family:var(--font-body);background-color:var(--bg-grouped-primary);color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.largetitle{font-family:var(--font-largetitle);font-size:34px;font-weight:700;line-height:1.2}.title1{font-family:var(--font-title1);font-size:28px;font-weight:700;line-height:1.2}.title2{font-family:var(--font-title2);font-size:22px;font-weight:700;line-height:1.3}.title3{font-family:var(--font-title3);font-size:20px;font-weight:600;line-height:1.3}.headline{font-family:var(--font-headline);font-size:17px;font-weight:600;line-height:1.3}.body{font-family:var(--font-body);font-size:17px;font-weight:400;line-height:1.3}.callout{font-family:var(--font-callout);font-size:16px;font-weight:400;line-height:1.3}.subhead{font-family:var(--font-subhead);font-size:15px;font-weight:400;line-height:1.3}.footnote{font-family:var(--font-footnote);font-size:13px;font-weight:400;line-height:1.3}.caption1{font-family:var(--font-caption1);font-size:12px;font-weight:400;line-height:1.3}.caption2{font-family:var(--font-caption2);font-size:11px;font-weight:400;line-height:1.3}.button{display:inline-flex;align-items:center;justify-content:center;padding:var(--spacing-sm) var(--spacing-md);border:none;border-radius:var(--radius-sm);font-family:var(--font-body);font-size:17px;font-weight:600;cursor:pointer;transition:all var(--animation-fast);text-decoration:none;min-height:44px}.button-primary{background-color:var(--color-blue);color:#fff}.button-primary:hover{background-color:#0056cc}.button-secondary{background-color:var(--bg-secondary);color:var(--color-blue);border:1px solid var(--color-gray-3)}.button-secondary:hover{background-color:var(--color-gray-1)}.button-destructive{background-color:var(--color-red);color:#fff}.button-destructive:hover{background-color:#d12b20}.button-small{padding:var(--spacing-xs) var(--spacing-sm);font-size:15px;min-height:32px}.button-large{padding:var(--spacing-md) var(--spacing-lg);font-size:18px;min-height:52px}.input{width:100%;padding:var(--spacing-sm) var(--spacing-md);border:1px solid var(--color-gray-3);border-radius:var(--radius-sm);font-family:var(--font-body);font-size:17px;background-color:var(--bg-primary);color:var(--text-primary);min-height:44px;transition:border-color var(--animation-fast)}.input:focus{outline:none;border-color:var(--color-blue)}.input::placeholder{color:var(--text-tertiary)}.card{background-color:var(--bg-grouped-secondary);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);overflow:hidden}.card-header{padding:var(--spacing-md);border-bottom:1px solid var(--color-gray-2)}.card-body{padding:var(--spacing-md)}.card-footer{padding:var(--spacing-md);border-top:1px solid var(--color-gray-2);background-color:var(--bg-secondary)}.fade-in{animation:fadeIn var(--animation-normal)}.slide-up{animation:slideUp var(--animation-normal)}.scale-in{animation:scaleIn var(--animation-fast)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.d-flex{display:flex}.d-block{display:block}.d-none{display:none}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.align-center{align-items:center}.align-start{align-items:flex-start}.align-end{align-items:flex-end}.flex-1{flex:1}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.gap-xs{gap:var(--spacing-xs)}.gap-sm{gap:var(--spacing-sm)}.gap-md{gap:var(--spacing-md)}.gap-lg{gap:var(--spacing-lg)}.p-xs{padding:var(--spacing-xs)}.p-sm{padding:var(--spacing-sm)}.p-md{padding:var(--spacing-md)}.p-lg{padding:var(--spacing-lg)}.m-xs{margin:var(--spacing-xs)}.m-sm{margin:var(--spacing-sm)}.m-md{margin:var(--spacing-md)}.m-lg{margin:var(--spacing-lg)}.mb-xs{margin-bottom:var(--spacing-xs)}.mb-sm{margin-bottom:var(--spacing-sm)}.mb-md{margin-bottom:var(--spacing-md)}.mb-lg{margin-bottom:var(--spacing-lg)}.mt-xs{margin-top:var(--spacing-xs)}.mt-sm{margin-top:var(--spacing-sm)}.mt-md{margin-top:var(--spacing-md)}.mt-lg{margin-top:var(--spacing-lg)}.w-full{width:100%}.h-full{height:100%}@media (max-width: 768px){.largetitle{font-size:28px}.title1{font-size:24px}.title2{font-size:20px}}#root{max-width:100vw;margin:0;padding:0;min-height:100vh;background:var(--bg-secondary)}.calendar-app{display:flex;flex-direction:column;height:100vh;background:var(--bg-primary)}.calendar-header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-md) var(--spacing-lg);background:var(--bg-primary);border-bottom:1px solid var(--border-color);position:sticky;top:0;z-index:100}.calendar-header h1{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);color:var(--text-primary);margin:0}.header-controls{display:flex;align-items:center;gap:var(--spacing-sm)}.view-switcher{display:flex;background:var(--bg-secondary);border-radius:var(--border-radius-sm);overflow:hidden}.view-switcher button{padding:var(--spacing-xs) var(--spacing-sm);border:none;background:transparent;color:var(--text-secondary);font-size:var(--font-size-sm);cursor:pointer;transition:all .2s ease}.view-switcher button.active{background:var(--accent-color);color:#fff}.view-switcher button:hover:not(.active){background:var(--bg-tertiary);color:var(--text-primary)}.nav-controls{display:flex;align-items:center;gap:var(--spacing-sm)}.nav-button{width:32px;height:32px;border:none;background:var(--bg-secondary);border-radius:var(--border-radius-sm);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease}.nav-button:hover{background:var(--bg-tertiary)}.nav-button:active{transform:scale(.95)}.current-date{font-size:var(--font-size-lg);font-weight:var(--font-weight-medium);color:var(--text-primary);min-width:200px;text-align:center}.calendar-content{flex:1;display:flex;overflow:hidden}.sidebar{width:280px;background:var(--bg-secondary);border-right:1px solid var(--border-color);display:flex;flex-direction:column;padding:var(--spacing-md)}.main-view{flex:1;display:flex;flex-direction:column;overflow:hidden}.quick-event-input{padding:var(--spacing-md);border-bottom:1px solid var(--border-color);background:var(--bg-primary)}.quick-input-form{display:flex;gap:var(--spacing-sm);margin-bottom:var(--spacing-sm)}.quick-input{flex:1;padding:var(--spacing-sm) var(--spacing-md);border:1px solid var(--border-color);border-radius:var(--border-radius-sm);font-size:var(--font-size-base);background:var(--bg-primary);color:var(--text-primary)}.quick-input:focus{outline:none;border-color:var(--accent-color);box-shadow:0 0 0 3px var(--accent-color-alpha)}.quick-templates{display:flex;gap:var(--spacing-xs);flex-wrap:wrap}.template-button{padding:var(--spacing-xs) var(--spacing-sm);background:var(--bg-tertiary);border:none;border-radius:var(--border-radius-xs);font-size:var(--font-size-sm);color:var(--text-secondary);cursor:pointer;transition:all .2s ease}.template-button:hover{background:var(--accent-color);color:#fff}.layer-toggle{margin-bottom:var(--spacing-lg)}.layer-toggle h3{font-size:var(--font-size-base);font-weight:var(--font-weight-medium);margin:0 0 var(--spacing-sm) 0;color:var(--text-primary)}.layer-list{display:flex;flex-direction:column;gap:var(--spacing-xs)}.layer-item{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-xs);border-radius:var(--border-radius-xs);cursor:pointer;transition:background-color .2s ease}.layer-item:hover{background:var(--bg-tertiary)}.layer-checkbox{width:18px;height:18px;border-radius:50%;border:2px solid;display:flex;align-items:center;justify-content:center;flex-shrink:0}.layer-checkbox.checked:after{content:"✓";color:#fff;font-size:12px;font-weight:700}.layer-name{flex:1;font-size:var(--font-size-sm);color:var(--text-primary)}.calendar-view{flex:1;overflow:hidden;display:flex;flex-direction:column}.month-view{display:flex;flex-direction:column;height:100%}.month-header{display:grid;grid-template-columns:repeat(7,1fr);background:var(--bg-secondary);border-bottom:1px solid var(--border-color)}.day-header{padding:var(--spacing-sm);text-align:center;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--text-secondary)}.month-grid{display:grid;grid-template-columns:repeat(7,1fr);grid-template-rows:repeat(6,1fr);flex:1;gap:1px;background:var(--border-color)}.day-cell{background:var(--bg-primary);padding:var(--spacing-xs);display:flex;flex-direction:column;cursor:pointer;transition:background-color .2s ease;min-height:120px}.day-cell:hover{background:var(--bg-secondary)}.day-cell.other-month{background:var(--bg-tertiary);color:var(--text-tertiary)}.day-cell.today{background:rgba(var(--accent-color-rgb),.1)}.day-number{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);margin-bottom:var(--spacing-xs);color:var(--text-primary)}.day-cell.other-month .day-number{color:var(--text-tertiary)}.day-cell.today .day-number{background:var(--accent-color);color:#fff;width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center}.day-events{display:flex;flex-direction:column;gap:2px;flex:1;overflow:hidden}.event-item{padding:2px var(--spacing-xs);border-radius:var(--border-radius-xs);font-size:var(--font-size-xs);color:#fff;background:var(--accent-color);cursor:pointer;transition:opacity .2s ease;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.event-item:hover{opacity:.8}.more-events{font-size:var(--font-size-xs);color:var(--text-secondary);margin-top:2px}.week-view{display:flex;flex-direction:column;height:100%}.week-header{display:grid;grid-template-columns:60px repeat(7,1fr);background:var(--bg-secondary);border-bottom:1px solid var(--border-color)}.week-time-header{background:var(--bg-secondary)}.week-day-header{padding:var(--spacing-sm);text-align:center;border-left:1px solid var(--border-color)}.week-day-header.today{background:rgba(var(--accent-color-rgb),.1)}.week-all-day{display:grid;grid-template-columns:60px repeat(7,1fr);border-bottom:1px solid var(--border-color);background:var(--bg-primary)}.all-day-label{padding:var(--spacing-xs);font-size:var(--font-size-xs);color:var(--text-secondary);display:flex;align-items:center;justify-content:center}.all-day-cell{padding:var(--spacing-xs);border-left:1px solid var(--border-color);min-height:40px;display:flex;flex-direction:column;gap:2px}.week-grid{flex:1;overflow-y:auto;display:grid;grid-template-columns:60px repeat(7,1fr)}.time-slot{padding:var(--spacing-xs);text-align:center;font-size:var(--font-size-xs);color:var(--text-secondary);border-bottom:1px solid var(--border-color);height:60px;display:flex;align-items:flex-start;justify-content:center}.week-day-column{border-left:1px solid var(--border-color);position:relative}.hour-slot{height:60px;border-bottom:1px solid var(--border-color);position:relative;cursor:pointer}.hour-slot:hover{background:var(--bg-secondary)}.day-view{display:flex;flex-direction:column;height:100%}.day-header-section{padding:var(--spacing-md);background:var(--bg-secondary);border-bottom:1px solid var(--border-color)}.day-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);color:var(--text-primary);margin:0}.day-grid{flex:1;overflow-y:auto;display:grid;grid-template-columns:80px 1fr}.day-time-column{background:var(--bg-secondary);border-right:1px solid var(--border-color)}.day-events-column{position:relative}.current-time-indicator{position:absolute;left:0;right:0;height:2px;background:var(--accent-color);z-index:10;pointer-events:none}.current-time-indicator:before{content:"";position:absolute;left:-6px;top:-4px;width:10px;height:10px;background:var(--accent-color);border-radius:50%}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:var(--spacing-md)}.modal-content{background:var(--bg-primary);border-radius:var(--border-radius-md);width:100%;max-width:500px;max-height:90vh;overflow-y:auto;box-shadow:var(--shadow-lg)}.modal-header{padding:var(--spacing-lg);border-bottom:1px solid var(--border-color);display:flex;align-items:center;justify-content:space-between}.modal-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);color:var(--text-primary);margin:0}.modal-close{width:32px;height:32px;border:none;background:var(--bg-secondary);border-radius:var(--border-radius-sm);display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text-secondary)}.modal-close:hover{background:var(--bg-tertiary);color:var(--text-primary)}.modal-body{padding:var(--spacing-lg)}.form-group{margin-bottom:var(--spacing-md)}.form-label{display:block;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--text-primary);margin-bottom:var(--spacing-xs)}.form-input,.form-select,.form-textarea{width:100%;padding:var(--spacing-sm) var(--spacing-md);border:1px solid var(--border-color);border-radius:var(--border-radius-sm);font-size:var(--font-size-base);background:var(--bg-primary);color:var(--text-primary);box-sizing:border-box}.form-input:focus,.form-select:focus,.form-textarea:focus{outline:none;border-color:var(--accent-color);box-shadow:0 0 0 3px var(--accent-color-alpha)}.form-textarea{resize:vertical;min-height:80px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-sm)}.checkbox-group{display:flex;align-items:center;gap:var(--spacing-sm)}.checkbox-input{width:18px;height:18px}.modal-actions{padding:var(--spacing-lg);border-top:1px solid var(--border-color);display:flex;justify-content:flex-end;gap:var(--spacing-sm)}.btn-secondary{padding:var(--spacing-sm) var(--spacing-md);border:1px solid var(--border-color);background:var(--bg-secondary);color:var(--text-primary);border-radius:var(--border-radius-sm);cursor:pointer;font-size:var(--font-size-base);transition:all .2s ease}.btn-secondary:hover{background:var(--bg-tertiary)}.btn-primary{padding:var(--spacing-sm) var(--spacing-md);border:none;background:var(--accent-color);color:#fff;border-radius:var(--border-radius-sm);cursor:pointer;font-size:var(--font-size-base);font-weight:var(--font-weight-medium);transition:all .2s ease}.btn-primary:hover{background:var(--accent-color-hover)}.btn-danger{padding:var(--spacing-sm) var(--spacing-md);border:none;background:var(--error-color);color:#fff;border-radius:var(--border-radius-sm);cursor:pointer;font-size:var(--font-size-base);transition:all .2s ease}.btn-danger:hover{background:var(--error-color-hover)}@media (max-width: 768px){.calendar-content{flex-direction:column}.sidebar{width:100%;height:auto;max-height:200px;overflow-y:auto}.calendar-header{padding:var(--spacing-sm)}.header-controls{flex-direction:column;gap:var(--spacing-xs)}.nav-controls{order:-1}.current-date{font-size:var(--font-size-base);min-width:auto}.day-cell{min-height:80px}.modal-overlay{padding:var(--spacing-sm)}.modal-content{max-height:95vh}.form-row{grid-template-columns:1fr}}.loading{display:flex;align-items:center;justify-content:center;padding:var(--spacing-xl);color:var(--text-secondary)}.error{display:flex;align-items:center;justify-content:center;padding:var(--spacing-xl);color:var(--error-color);background:rgba(var(--error-color-rgb),.1);border-radius:var(--border-radius-sm);margin:var(--spacing-md)}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes slideIn{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}.fade-in{animation:fadeIn .3s ease-out}.slide-in{animation:slideIn .3s ease-out}.calendar-app *:focus-visible{outline:2px solid var(--accent-color);outline-offset:2px}@media print{.calendar-header,.sidebar,.quick-event-input{display:none}.main-view{width:100%}.calendar-view{height:auto}}
