.app-container{padding:20px;max-width:100%;height:100vh;display:flex;flex-direction:column;overflow:hidden;background:var(--bg-color)}.app-container,.controls{transition:background-color .3s ease}.controls{margin-bottom:20px;padding:12px;background:var(--panel-bg);border-radius:4px;position:relative}.controls-header{justify-content:space-between;margin-bottom:8px;gap:12px;flex-wrap:wrap;min-width:0}.controls-header,.controls-header>*{display:flex;align-items:center}.mobile-header-actions{display:none}@media (max-width:768px){.controls-header{justify-content:flex-start;padding:8px 12px}.button-group-desktop,.controls-row,.header-actions-desktop,.year-picker-desktop{display:none!important}.mobile-header-actions{display:flex!important;align-items:center;gap:8px;width:100%}.mobile-header-actions>div{display:flex;align-items:center;gap:8px}.mobile-header-actions [data-slot=select-trigger],.mobile-header-actions button{flex-shrink:0;width:40px;height:40px;padding:0;display:flex;align-items:center;justify-content:center}}.controls-row{display:flex;align-items:center;gap:12px;margin-bottom:8px;flex:1;min-width:0;overflow:hidden}.controls-row:last-child{margin-bottom:0}.button-group{display:flex;gap:8px}.btn{padding:6px 12px;border:1px solid var(--border-color);border-radius:4px;background:var(--calendar-bg);color:var(--text-color);cursor:pointer;font-size:14px;transition:background .2s,border-color .3s ease,color .3s ease}.btn:hover{background:var(--hover-bg)}.btn-primary{background:var(--text-color);color:var(--bg-color);border-color:var(--text-color);transition:background-color .3s ease,color .3s ease,border-color .3s ease}.btn-primary:hover{opacity:.8}.dark .btn-primary{background:var(--text-color);color:var(--bg-color)}.btn-secondary{background:var(--calendar-bg);color:var(--text-color);transition:background-color .3s ease,color .3s ease}.btn-outline{background:transparent}.header-actions{display:flex;align-items:center;gap:8px;flex-shrink:0;min-width:-moz-fit-content;min-width:fit-content}[data-radix-popper-content-wrapper]{width:auto!important}[data-slot=dropdown-menu-content]{min-width:180px!important}.year-picker,.year-picker *,[data-radix-popper-content-wrapper][data-radix-select-content],[data-radix-portal],[data-radix-select-content],[data-radix-select-item],[data-radix-select-portal],[data-radix-select-scroll-down-button],[data-radix-select-scroll-up-button],[data-radix-select-trigger],[data-radix-select-viewport],[data-slot=select-content],[data-slot=select-item],[data-slot=select-trigger],[data-slot=select],[data-slot=select] *,[data-slot=sheet-content],[data-slot=sheet-content] *,[data-slot=sheet-content] [data-radix-select-content],[data-slot=sheet-content] [data-radix-select-trigger],[data-slot=sheet-content] [data-slot=select-content],[data-slot=sheet-content] [data-slot=select-trigger]{pointer-events:auto!important}.language-selector{display:flex;align-items:center}.language-select{padding:6px 30px 6px 10px;border:1px solid var(--border-color);border-radius:6px;background:var(--calendar-bg);color:var(--text-color);font-size:14px;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23000' d='M6 9L1 4h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center;background-size:12px;transition:background-color .3s ease,border-color .3s ease,color .3s ease;min-width:140px}.dark .language-select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23fff' d='M6 9L1 4h10z'/%3E%3C/svg%3E")}.language-select:hover{background-color:var(--hover-bg);border-color:var(--text-color)}.language-select:focus{outline:none;border-color:var(--text-color);box-shadow:0 0 0 2px rgba(0,0,0,.1)}.settings-toggle-btn{width:40px;height:40px;border:1px solid var(--border-color);border-radius:8px;background:var(--calendar-bg);color:var(--text-color);cursor:pointer;font-size:20px;display:flex;align-items:center;justify-content:center;transition:all .2s;z-index:10}.settings-toggle-btn:hover{background:var(--hover-bg);border-color:var(--text-color);transform:scale(1.05)}.search-box{margin-left:auto;display:flex;align-items:center}.calendar-viewport{flex:1;position:relative;overflow:hidden;background:var(--viewport-bg);border:1px solid var(--border-color);-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;transform:translateZ(0);will-change:transform;transition:background-color .3s ease,border-color .3s ease;touch-action:none;-ms-touch-action:none;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.calendar-viewport .day-note-edit-container,.calendar-viewport .day-note-edit-container *{-webkit-user-select:text;-moz-user-select:text;user-select:text;pointer-events:auto}.dark .calendar-viewport{background:var(--viewport-bg);border-color:var(--border-color)}.calendar-viewport.panning{cursor:grabbing!important}.calendar-viewport:not(.panning){cursor:default}.calendar-wrapper{background:var(--calendar-bg);padding:40px;box-shadow:0 0 0 1px rgba(0,0,0,.1);width:-moz-fit-content;width:fit-content;min-width:calc(140px + 31 * 202.68px);max-width:calc(140px + 31 * 200px);will-change:transform;transition:background-color .3s ease;transform:translateZ(0);backface-visibility:hidden}.dark .calendar-wrapper{box-shadow:0 0 0 1px hsla(0,0%,100%,.1)}.calendar-wrapper.panning{cursor:grabbing!important;transition:none}.calendar-viewport.panning{cursor:grabbing}.zoom-controls{position:absolute;top:20px;right:20px;z-index:100;display:flex;align-items:center;gap:8px;background:hsla(0,0%,100%,.95);padding:8px 12px;border-radius:8px;box-shadow:0 2px 8px rgba(0,0,0,.15);border:1px solid #ddd;transition:background-color .3s ease,border-color .3s ease}.dark .zoom-controls{background:rgba(30,30,30,.95);border-color:hsla(0,0%,100%,.2);box-shadow:0 2px 8px rgba(0,0,0,.5)}.zoom-btn{width:32px;height:32px;border:1px solid var(--border-color);background:var(--calendar-bg)!important;color:var(--text-color)!important;border-radius:4px;cursor:pointer;font-size:18px;display:flex;align-items:center;justify-content:center;transition:background .2s,border-color .3s ease,color .3s ease;touch-action:manipulation;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;-moz-user-select:none;user-select:none}.zoom-btn:hover{background:var(--hover-bg)!important}.dark .zoom-btn{background:rgba(50,50,50,.9)!important;border-color:hsla(0,0%,100%,.3)!important;color:var(--text-color)!important}.dark .zoom-btn:hover{background:rgba(70,70,70,.9)!important}.zoom-level{min-width:50px;text-align:center;font-size:14px;font-weight:500}.calendar-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:30px;padding-bottom:15px;border-bottom:1px solid var(--border-color);transition:border-color .3s ease}.calendar-title-section{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px}.calendar-title{font-size:24px;font-weight:600;letter-spacing:1px;margin:0;text-transform:uppercase;color:var(--text-color);transition:color .3s ease}.qr-placeholder{width:80px;height:80px;border:1px solid var(--border-color);background:var(--panel-bg);display:flex;align-items:center;justify-content:center;font-size:12px;color:var(--text-color);opacity:.5;transition:border-color .3s ease,background-color .3s ease,color .3s ease}.qr-placeholder img{width:100%;height:100%;-o-object-fit:contain;object-fit:contain;opacity:1}.qr-placeholder span{opacity:.5}.year-title{font-size:var(--year-title-font-size);font-weight:var(--year-title-font-weight);letter-spacing:var(--year-title-letter-spacing);text-transform:lowercase;margin:0;color:var(--text-color);transition:color .3s ease}.calendar-container{width:100%}.calendar-grid{display:grid;grid-template-columns:140px 1fr;gap:0;border:.5px solid #000}.month-column{display:grid;grid-template-rows:repeat(12,1fr);border-right:.5px solid var(--border-color);background:var(--month-column-bg);transition:background-color .3s ease,border-color .3s ease}.month-label{padding:var(--month-label-padding);font-size:var(--month-label-font-size);font-weight:var(--month-label-font-weight);letter-spacing:var(--month-label-letter-spacing);text-align:center;border-bottom:.5px solid #000;display:flex;align-items:center;justify-content:center;line-height:var(--month-label-line-height);min-height:var(--month-label-min-height)}.month-label:last-child{border-bottom:none}.days-grid{grid-template-rows:repeat(12,1fr);border-left:.5px solid var(--border-color);width:calc(31 * 200px)}.days-grid,.month-row{display:grid;transition:border-color .3s ease}.month-row{grid-template-columns:repeat(31,200px);border-bottom:.5px solid var(--border-color);width:100%}.month-row:last-child{border-bottom:none}.day-cell{border-right:.5px solid var(--border-color);padding:0;min-height:80px;width:100%;display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;position:relative;background:var(--calendar-bg);transition:background .1s,border-color .3s ease;-webkit-user-select:text;-moz-user-select:text;user-select:text;pointer-events:auto;overflow:hidden}.day-cell:last-child{border-right:none}.day-cell:hover:not(.empty){background:var(--hover-bg)}.day-cell.gray-day,.day-cell.sunday{background:var(--sunday-bg)}.day-cell.gray-day:hover,.day-cell.sunday:hover{background:#d4d6d6}.dark .day-cell.gray-day:hover,.dark .day-cell.sunday:hover{background:#3a3a3a}.day-cell.holiday{border-left:3px solid #ff6b6b}.day-cell.holiday:hover{background:hsla(0,100%,71%,.15)}.dark .day-cell.holiday:hover{background:hsla(0,100%,71%,.2)}.dark .day-cell.holiday.gray-day:hover{background:hsla(0,100%,71%,.25)}.day-meta-container{position:absolute;top:2px;right:4px;display:flex;flex-direction:column;align-items:flex-end;gap:2px}.day-of-year{font-weight:400;opacity:.6}.day-of-year,.day-week-number{font-size:8px;color:var(--text-color);line-height:1;transition:color .3s ease}.day-week-number{font-weight:600;opacity:.7}.day-holiday{font-size:9px;font-weight:600;color:#ff6b6b;margin-top:2px;padding:2px 4px;background:hsla(0,100%,71%,.1);border-radius:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;min-height:18px}.day-cell.empty{background:var(--calendar-bg);cursor:default;transition:background-color .3s ease;visibility:hidden}.day-header{flex-direction:row;width:100%;min-height:45px;gap:0;padding:0;border-bottom:.5px solid #e0e0e0}.day-header,.day-number{display:flex;align-items:center}.day-number{font-size:32px;font-weight:700;line-height:1;flex-shrink:0;padding:6px 10px;border-right:.5px solid #e0e0e0;min-width:55px;width:55px;text-align:center;justify-content:center}.day-name{font-size:11px;font-weight:400;text-transform:uppercase;letter-spacing:.8px;flex:1;text-align:left;padding-left:12px;padding-right:8px}.day-note{width:100%;height:100%;text-align:left;padding:8px 12px;font-size:10px;margin-top:0;line-height:1.4;color:var(--text-color)!important;transition:color .3s ease;overflow:hidden;overflow-y:auto;word-break:break-word;display:block;box-sizing:border-box;white-space:pre-wrap}.day-note-edit-container{position:absolute;top:62%;left:50%;transform:translate(-50%,-50%);width:90%;z-index:10;display:flex;flex-direction:column;gap:4px}.day-note-input{width:100%;padding:4px 6px;font-size:12px;border:1px solid var(--border-color);background:var(--calendar-bg);color:var(--text-color);font-family:inherit;border-radius:2px;transition:background-color .3s ease,color .3s ease,border-color .3s ease;min-height:114px;max-height:114px;overflow-y:auto;line-height:1.4;word-wrap:break-word}.day-note-input:focus{outline:none;border-color:var(--text-color)}.day-note-edit-buttons{display:flex;gap:4px;justify-content:flex-end}.day-note-cancel-btn,.day-note-save-btn{width:24px;height:24px;border:1px solid var(--border-color);background:var(--calendar-bg);color:var(--text-color);font-size:14px;font-weight:600;border-radius:2px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s;padding:0;margin:0;line-height:1;touch-action:manipulation;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;-moz-user-select:none;user-select:none}.day-note-save-btn:hover{background:#4ade80;color:#fff;border-color:#4ade80}.day-note-cancel-btn:hover{background:#ef4444;color:#fff;border-color:#ef4444}.add-note-btn{position:absolute;bottom:8px;right:8px;width:24px;height:24px;border:none;background:rgba(0,0,0,.15);color:#fff;font-size:18px;font-weight:400;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:1;padding:0;margin:0;transition:background .2s,transform .1s,opacity .2s;z-index:5;pointer-events:auto;opacity:.3;touch-action:manipulation;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;-moz-user-select:none;user-select:none}.add-note-btn.visible{opacity:.6}.add-note-btn:hover{background:rgba(0,0,0,.5);opacity:1!important;transform:scale(1.1)}.add-note-btn:active{transform:scale(.95)}.settings-overlay{position:fixed;top:0;left:0;right:0;bottom:0;width:100%;height:100%;background:rgba(0,0,0,.3);z-index:998;opacity:0;pointer-events:none;transition:opacity .3s ease;backdrop-filter:blur(2px)}.settings-overlay.visible{opacity:1;pointer-events:auto}.settings-panel{position:fixed;top:0;right:0;width:400px;max-width:90vw;height:100vh;max-height:100vh;background:var(--panel-bg);box-shadow:-2px 0 20px rgba(0,0,0,.15);z-index:999;transform:translateX(100%);transition:transform .3s cubic-bezier(.4,0,.2,1),background-color .3s ease;display:flex;flex-direction:column;overflow:hidden;will-change:transform}.dark .settings-panel{box-shadow:-2px 0 20px rgba(0,0,0,.5)}.settings-panel.open{transform:translateX(0)}.settings-header{display:flex;align-items:center;justify-content:space-between;padding:24px;border-bottom:1px solid rgba(0,0,0,.1);background:var(--panel-bg);flex-shrink:0;transition:background-color .3s ease,border-color .3s ease}.dark .settings-header{border-bottom-color:hsla(0,0%,100%,.1)}.settings-header h2{color:var(--text-color);transition:color .3s ease;margin:0;font-size:20px;font-weight:600}.settings-close{background:none;border:none;font-size:32px;cursor:pointer;color:var(--text-color);padding:0;width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:8px;transition:all .2s;line-height:1;opacity:.7}.settings-close:hover{background:var(--hover-bg);color:var(--text-color);opacity:1}.settings-content{padding:24px;overflow-y:auto;flex:1}.settings-group{margin-bottom:32px}.settings-group:last-child{margin-bottom:0}.settings-label{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:500;margin-bottom:8px;cursor:pointer;color:var(--text-color);transition:color .3s ease}.settings-label input[type=checkbox]{width:18px;height:18px;cursor:pointer}.settings-checkbox-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-top:12px}.settings-day-checkbox{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:400;cursor:pointer;padding:8px;border:1px solid rgba(0,0,0,.1);border-radius:6px;transition:all .2s;color:var(--text-color)}.dark .settings-day-checkbox{border-color:hsla(0,0%,100%,.1)}.settings-day-checkbox:hover{background:var(--hover-bg);border-color:var(--border-color)}.settings-day-checkbox input[type=checkbox]{width:18px;height:18px;cursor:pointer;margin:0}.settings-day-checkbox input[type=checkbox]:checked+span{font-weight:600;color:#000}.settings-day-checkbox:has(input:checked){background:#f0f0f0;border-color:#000}.settings-input{width:100%;padding:8px 12px;border:1px solid var(--border-color);border-radius:4px;font-size:14px;margin-top:8px;font-family:inherit;background:var(--calendar-bg);color:var(--text-color);transition:border-color .3s ease,background-color .3s ease,color .3s ease}.settings-input:focus{outline:none;border-color:var(--text-color)}.settings-input::-moz-placeholder{color:var(--text-color);opacity:.5}.settings-input::placeholder{color:var(--text-color);opacity:.5}.settings-hint{font-size:12px;color:var(--text-color);opacity:.6;margin-top:4px;margin-bottom:0;transition:color .3s ease}.dark img[src*="logo.svg"],.dark img[src="/logo.svg"]{filter:brightness(0) invert(1)}@media print{*{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}body,html{height:100%!important;overflow:hidden!important}.app-container,body,html{margin:0!important;padding:0!important;width:100%!important}.app-container,.calendar-viewport{height:100vh!important;overflow:visible!important}.calendar-viewport{border:none!important;width:100%!important;position:relative!important}.calendar-wrapper{transform:scale(.13)!important;transform-origin:top left!important;width:769.23%!important;height:auto!important;padding:0!important;box-shadow:none!important;position:absolute!important;top:0!important;left:0!important;page-break-inside:avoid!important;-moz-column-break-inside:avoid!important;break-inside:avoid!important;-webkit-region-break-inside:avoid!important}.calendar-container,.calendar-grid{width:100%!important;height:auto!important;page-break-inside:avoid!important;-moz-column-break-inside:avoid!important;break-inside:avoid!important}.calendar-grid{border:.3px solid #000}.month-label{border-right:.3px solid #000}.month-label,.month-row{border-bottom:.3px solid #000}.day-cell,.month-label,.month-row{page-break-inside:avoid!important;-moz-column-break-inside:avoid!important;break-inside:avoid!important}.day-cell{border-right:.3px solid #000}.day-cell:hover{background:inherit!important}@page{size:A4 landscape;margin:0!important;orphans:0;widows:0}body{margin:0!important;padding:0!important;width:297mm!important;height:210mm!important;overflow:hidden!important}.app-container,.calendar-container,.calendar-grid,.calendar-header,.calendar-viewport,.calendar-wrapper{page-break-after:avoid!important;page-break-before:avoid!important;page-break-inside:avoid!important;-moz-column-break-after:avoid!important;break-after:avoid!important;-moz-column-break-before:avoid!important;break-before:avoid!important;-moz-column-break-inside:avoid!important;break-inside:avoid!important}.calendar-header{margin-bottom:15px;padding-bottom:10px}.controls,.no-print,.zoom-controls{display:none!important}}