.calendar-editor-page{min-height:100vh;background:var( --bg-gradient-brand, linear-gradient(135deg, var(--color-surface-muted) 0%, var(--color-border-secondary) 100%) )}.calendar-visual-layout{display:flex;flex-direction:column;height:calc(100vh - 4rem - 1px);height:calc(100vh - var(--header-height, 4rem) - 1px);overflow:hidden;background:var( --bg-gradient-brand, linear-gradient(135deg, var(--color-surface-muted) 0%, var(--color-border-secondary) 100%) )}.layout-body{display:flex;flex:1;overflow:hidden;min-height:0}.left-panel{width:30%;min-width:320px;max-width:450px;background:var(--color-bg-primary);border-right:1px solid var(--color-border-primary);display:flex;flex-direction:column;height:100%;overflow:hidden}.left-panel-header{padding:1rem;border-bottom:1px solid var(--color-border-primary);background:var(--color-bg-primary);flex-shrink:0;display:flex;justify-content:space-between;align-items:center}.left-panel-content{padding:1rem;display:flex;flex-direction:column;gap:1rem;flex:1;overflow-y:auto;min-height:0}.right-panel{flex:1;overflow:hidden;position:relative;background:var(--color-surface-muted);min-height:0;height:100%;padding:2rem;display:flex;flex-direction:column}.right-panel>*{flex-shrink:0}.right-panel .month-calendar{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}.control-panel{margin-bottom:0;border:1px solid var(--color-border-primary);border-radius:var(--radius-card);background:var(--color-bg-primary)}.control-panel input[type=text],.control-panel input[type=number],.control-panel textarea{border-radius:var(--radius-input)}.panel-header{display:flex;justify-content:space-between;align-items:center;padding:1rem;background:var(--color-surface-muted);border-bottom:1px solid var(--color-border-primary);border-radius:var(--radius-card) var(--radius-card) 0 0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.panel-header:hover{background:var(--color-surface-subtle)}.panel-header-left{display:flex;align-items:center;gap:.5rem}.panel-title{font-size:.875rem;font-weight:600;color:var(--color-text-primary);text-transform:uppercase;letter-spacing:.05em}.panel-header-action{display:flex;align-items:center}.panel-toggle{font-size:.75rem;color:var(--color-text-tertiary);transition:transform .2s}.panel-toggle.expanded{transform:rotate(180deg)}.panel-content{padding:1rem}.panel-content.collapsed{display:none}.month-navigator{display:flex;align-items:center;justify-content:center;gap:2rem;background:var(--color-bg-primary);border-radius:var(--radius-card);box-shadow:0 1px 3px #0000001a;margin-bottom:1.5rem;position:relative;padding:1.5rem 3.5rem}.month-navigator .nav-button{padding:.5rem 1rem;font-size:1.5rem;background:var(--color-primary-600);color:var(--color-text-inverse);border:none;border-radius:var(--radius-button);cursor:pointer;transition:all .2s;min-width:3rem;position:absolute;top:50%;transform:translateY(-50%);z-index:10}.month-navigator .nav-button:first-child{left:.75rem}.month-navigator .nav-button:nth-child(3){right:.75rem}.month-navigator .nav-button:hover:not(:disabled){background:var(--color-primary-700);transform:translateY(-50%)}.month-navigator .nav-button:disabled{opacity:.4;cursor:not-allowed}.month-navigator .month-year-display{display:flex;align-items:center;gap:.75rem;font-size:1.5rem;font-weight:600;color:var(--color-text-primary);cursor:pointer;padding:.5rem 1rem;border-radius:var(--radius-button);transition:background-color .2s}.month-navigator .month-year-display:hover{background:var(--color-surface-subtle)}.month-navigator .year{color:var(--color-text-secondary);font-weight:500}.month-calendar{background:var(--color-bg-primary);border-radius:var(--radius-card);box-shadow:0 1px 3px #0000001a;padding:1.5rem;display:flex;flex-direction:column;overflow:hidden}.intercalary-badge{display:inline-block;padding:.25rem .75rem;background:var(--color-warning-100);color:var(--color-warning-700);border-radius:var(--radius-badge);font-size:.875rem;font-weight:500;margin-bottom:1rem;flex-shrink:0}.intercalary-row{grid-column:1 / -1;background:var(--color-surface-subtle);border-top:1px dashed var(--color-border-secondary);border-bottom:1px dashed var(--color-border-secondary);padding:.5rem;margin:.5rem 0;text-align:center;display:flex;justify-content:center;align-items:center}.intercalary-content{display:flex;align-items:center;gap:.5rem;color:var(--color-text-secondary);font-weight:600;font-style:italic}.intercalary-label{font-size:.875rem}.intercalary-date{font-size:.75rem;opacity:.8;font-weight:500}.weekday-headers{display:grid;gap:.5rem;margin-bottom:.75rem;padding-bottom:.75rem;border-bottom:2px solid var(--color-border-primary);flex-shrink:0}.weekday-header{text-align:center;font-weight:600;font-size:.875rem;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.05em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.calendar-grid{display:flex;flex-direction:column;gap:.5rem;flex:1;min-height:0;overflow:hidden}.week-row{display:grid;gap:.5rem;flex:1;min-height:0}.day-cell{aspect-ratio:1;max-height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:var(--radius-card);position:relative;font-weight:500;transition:all .2s;overflow:hidden}.day-cell.empty{background:transparent}.day-cell.normal{background:var(--color-surface-muted);border:1px solid var(--color-border-primary)}.day-cell.normal:hover{background:var(--color-surface-subtle);transform:translateY(-2px);box-shadow:0 2px 4px #0000001a}.day-cell.leap-day{background:var(--color-surface-muted);border:1px dashed var(--color-border-secondary);font-weight:500}.day-cell.leap-day:hover{background:var(--color-surface-subtle);transform:translateY(-2px);box-shadow:0 2px 4px #0000001a}.day-cell.current-day{background:linear-gradient(135deg,var(--color-primary-100) 0%,var(--color-primary-300) 100%);border:2px solid var(--color-primary-500);font-weight:700}.day-cell.current-day:hover{background:linear-gradient(135deg,var(--color-primary-300) 0%,var(--color-primary-400) 100%);transform:translateY(-2px);box-shadow:0 4px 8px #3b82f666}.day-cell.current-day .day-number{color:var(--color-primary-800)}.day-number{font-size:1rem;color:var(--color-text-primary)}.leap-day-badge{position:absolute;top:.25rem;right:.25rem;font-size:.75rem}.month-stats{margin-top:1rem;padding-top:1rem;border-top:1px solid var(--color-border-primary);text-align:center;font-size:.875rem;color:var(--color-text-secondary);flex-shrink:0}.space-y-4>*+*{margin-top:1rem}.navigator-popup{background:var(--color-bg-primary);border:1px solid var(--color-border-primary);border-radius:var(--radius-dropdown);box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;padding:1rem;min-width:300px;animation:fadeIn .2s ease-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.navigator-view{display:flex;flex-direction:column;gap:1rem}.picker-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.picker-nav-btn{padding:.25rem .75rem;background:transparent;border:1px solid var(--color-border-primary);border-radius:var(--radius-button);cursor:pointer;font-size:1rem;color:var(--color-text-secondary);transition:all .2s}.picker-nav-btn:hover{background:var(--color-surface-subtle);color:var(--color-text-primary)}.picker-title-btn{font-weight:600;font-size:1.125rem;background:transparent;border:none;cursor:pointer;padding:.25rem 1rem;color:var(--color-text-primary);transition:color .2s}.picker-title-btn:hover{color:var(--color-primary-600);text-decoration:underline}.picker-title{font-weight:600;font-size:1.125rem;color:var(--color-text-primary)}.picker-grid{display:grid;gap:.5rem}.months-grid{grid-template-columns:repeat(3,1fr)}.years-grid{grid-template-columns:repeat(4,1fr)}.picker-item{padding:.75rem .5rem;background:var(--color-surface-muted);border:1px solid transparent;border-radius:var(--radius-button);cursor:pointer;font-size:.875rem;color:var(--color-text-primary);transition:all .2s;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.picker-item:hover{background:var(--color-surface-subtle);border-color:var(--color-border-secondary)}.picker-item.active{background:var(--color-primary-600);color:var(--color-text-inverse);border-color:var(--color-primary-600)}.picker-item.current{border:1px solid var(--color-primary-600);color:var(--color-primary-600);font-weight:600}.picker-item.active.current{background:var(--color-primary-600);color:var(--color-text-inverse);border:1px solid var(--color-primary-600);box-shadow:inset 0 0 0 2px var(--color-bg-primary)}.picker-list{display:flex;flex-direction:column;gap:.5rem;max-height:300px;overflow-y:auto;padding-right:.25rem}.picker-list-item{display:flex;flex-direction:column;align-items:flex-start;padding:.75rem 1rem;background:var(--color-surface-muted);border:1px solid transparent;border-radius:var(--radius-button);cursor:pointer;text-align:left;transition:all .2s;width:100%}.picker-list-item:hover{background:var(--color-surface-subtle);border-color:var(--color-border-secondary)}.picker-list-item.active{background:var(--color-primary-600);color:var(--color-text-inverse);border-color:var(--color-primary-600)}.picker-list-item.active .text-xs{opacity:.9;color:var(--color-text-on-brand)}.picker-list-item .font-medium{font-weight:600;font-size:.875rem;margin-bottom:.125rem}.picker-list-item .text-xs{font-size:.75rem;color:var(--color-text-secondary)}.month-item{padding:.75rem;border-radius:var(--radius-card)}.month-item-row{display:flex;align-items:flex-start;gap:.5rem}.month-item-drag{flex-shrink:0}.month-item-content{flex:1;min-width:0}.month-item-name{width:100%;padding:.375rem .5rem;font-size:.875rem;background:var(--color-bg-primary);border:1px solid var(--color-border-primary);border-radius:var(--radius-input);color:var(--color-text-primary);margin-bottom:.5rem}.month-item-name:focus{outline:none;box-shadow:0 0 0 2px var(--color-interactive-primary);border-color:var(--color-interactive-primary)}.month-item-days{display:flex;align-items:center;gap:.5rem}.month-item-days-input{width:4rem;padding:.375rem .5rem;font-size:.875rem;background:var(--color-bg-primary);border:1px solid var(--color-border-primary);border-radius:var(--radius-input);color:var(--color-text-primary)}.month-item-days-input:focus{outline:none;box-shadow:0 0 0 2px var(--color-interactive-primary);border-color:var(--color-interactive-primary)}.month-item-days-label{font-size:.75rem;color:var(--color-text-secondary)}.month-item-delete{flex-shrink:0}.weekday-item{padding:.75rem;border-radius:var(--radius-card)}.weekday-item-row{display:flex;align-items:center;gap:.5rem}.weekday-item-drag{flex-shrink:0}.weekday-item-content{flex:1;min-width:0}.weekday-item-name{width:100%;padding:.375rem .5rem;font-size:.875rem;background:var(--color-bg-primary);border:1px solid var(--color-border-primary);border-radius:var(--radius-input);color:var(--color-text-primary)}.weekday-item-name:focus{outline:none;box-shadow:0 0 0 2px var(--color-interactive-primary);border-color:var(--color-interactive-primary)}.weekday-item-delete{flex-shrink:0}@media(max-width:1024px){.calendar-visual-layout{height:auto;min-height:calc(100vh - 4rem);min-height:calc(100vh - var(--header-height, 4rem));overflow:visible}.layout-body{flex-direction:column;overflow:visible;height:auto}.right-panel{order:-1;height:auto;min-height:300px;flex:none;border-bottom:1px solid var(--color-border-primary);overflow:visible;padding:1rem}.left-panel{order:1;width:100%;max-width:100%;min-width:100%;border-right:none;height:auto;overflow:visible;flex:1;display:block}.left-panel-header{position:static}.left-panel-content{overflow:visible;height:auto;flex:none}.weekday-headers,.week-row{grid-template-columns:repeat(7,minmax(0,1fr))}.month-item{padding:.5rem}.month-item-row{gap:.25rem}.month-item-drag{padding:.25rem;min-width:1.5rem}.month-item-name{padding:.25rem .375rem;font-size:.8125rem;margin-bottom:.375rem}.month-item-days{gap:.25rem}.month-item-days-input{width:3.5rem;padding:.25rem .375rem;font-size:.8125rem}.month-item-days-label{font-size:.6875rem}.month-item-delete{padding:.25rem;min-width:1.5rem;font-size:.875rem}.weekday-item{padding:.5rem}.weekday-item-row{gap:.25rem}.weekday-item-drag{padding:.25rem;min-width:1.5rem}.weekday-item-name{padding:.25rem .375rem;font-size:.8125rem}.weekday-item-delete{padding:.25rem;min-width:1.5rem;font-size:.875rem}}
