:root{--bg-app:#fafafa;--bg-surface:#fff;--bg-cell-empty:#fafafa;--bg-weekend:#f4f4f5;--text-primary:#18181b;--text-secondary:#52525b;--text-muted:#a1a1aa;--border-default:#e4e4e7;--border-strong:#3f3f46;--accent:#047857;--accent-bg:#ecfdf5;--danger:#b45309;--font-display:"Söhne", "Inter Display", "Helvetica Neue", system-ui, sans-serif;--font-body:"Söhne", "Inter", system-ui, sans-serif;--font-mono:"Söhne Mono", "JetBrains Mono", "SF Mono", monospace;--text-xs-size:11px;--text-xs-line:16px;--text-sm-size:13px;--text-sm-line:18px;--text-base-size:14px;--text-base-line:20px;--text-md-size:16px;--text-md-line:24px;--text-lg-size:24px;--text-lg-line:32px;--text-day-size:12px;--text-day-line:14px;--radius-sm:4px;--radius-md:6px;--radius-lg:12px;--border-width:1px;--border-width-armed:2px;--cell-desktop:36px;--cell-tablet:16px;--cell-mobile:44px}[data-theme=dark]{--bg-app:#09090b;--bg-surface:#18181b;--bg-cell-empty:#09090b;--bg-weekend:#18181b;--text-primary:#fafafa;--text-secondary:#a1a1aa;--text-muted:#52525b;--border-default:#27272a;--border-strong:#fafafa;--accent:#34d399;--accent-bg:#022c22;--danger:#f59e0b}.year-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;width:100%;display:grid}.month-card{flex-direction:column;gap:8px;display:flex;position:relative;overflow:hidden}.month-card__title{font-family:var(--font-display);font-size:var(--text-md-size);line-height:var(--text-md-line);color:var(--text-primary);text-transform:lowercase;font-weight:600}.weekday-header{grid-template-columns:repeat(7, var(--cell-desktop));gap:0;display:grid}.weekday-header__cell{font-size:var(--text-xs-size);line-height:var(--text-xs-line);color:var(--text-secondary);text-align:center;text-transform:lowercase;-webkit-user-select:none;user-select:none}.cells-grid{border-top:var(--border-width) solid var(--border-default);border-left:var(--border-width) solid var(--border-default);flex-direction:column;width:max-content;display:flex}.cells-row{grid-template-columns:repeat(7, var(--cell-desktop));display:grid}.day-cell{width:var(--cell-desktop);height:var(--cell-desktop);border-right:var(--border-width) solid var(--border-default);border-bottom:var(--border-width) solid var(--border-default);box-sizing:border-box;border-radius:0;justify-content:center;align-items:center;display:flex;position:relative}.day-cell--blank{background:0 0}.day-cell--weekend{background-color:var(--bg-weekend)}.cells-grid-root.is-armed .day-cell:not(.day-cell--blank){cursor:pointer}.cells-grid-root.is-armed{-webkit-user-select:none;user-select:none;touch-action:none}.day-cell__number{z-index:2;font-size:var(--text-day-size);line-height:var(--text-day-line);font-variant-numeric:tabular-nums;color:var(--text-secondary);pointer-events:none;position:relative}.cell-half{z-index:1;position:absolute;left:0;right:0}.cell-half--top{border-bottom:var(--border-width) solid var(--border-default);height:50%;top:0}.cell-half--bottom{height:50%;bottom:0}.cell-fill{z-index:1;position:absolute;inset:0}.year-skeleton__grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;width:100%;display:grid}.year-skeleton__month{border-radius:var(--radius-sm);background-color:var(--bg-weekend);opacity:.6;height:280px}@media (width<=767px){.year-grid,.year-skeleton__grid{grid-template-columns:minmax(0,1fr);gap:16px}.weekday-header,.cells-row{grid-template-columns:repeat(7, var(--cell-mobile))}.day-cell{width:var(--cell-mobile);height:var(--cell-mobile)}}.app-shell{grid-template-columns:240px minmax(0,1fr);align-items:start;gap:32px;max-width:1280px;margin:0 auto;padding:32px;display:grid}.app-sidebar{flex-direction:column;gap:16px;display:flex;position:sticky;top:32px}.app-wordmark{font-family:var(--font-display);font-size:var(--text-lg-size);line-height:var(--text-lg-line);color:var(--text-primary);text-transform:lowercase;letter-spacing:-.01em}@media (width<=767px){.app-shell{grid-template-columns:minmax(0,1fr);gap:16px;padding:16px}.app-sidebar{position:static}}.layer-panel{flex-direction:column;gap:8px;display:flex}.layer-panel__list{flex-direction:column;gap:6px;display:flex}.layer-chip{border:var(--border-width) solid var(--border-default);border-radius:var(--radius-md);background-color:var(--bg-surface);color:var(--text-primary);font-size:var(--text-sm-size);line-height:var(--text-sm-line);align-items:center;gap:4px;padding:2px 6px 2px 2px;transition:border-color .12s ease-out,background-color .12s ease-out;display:flex}.layer-chip__arm{min-width:0;color:inherit;font:inherit;text-align:left;cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:0;flex:auto;align-items:center;gap:8px;padding:4px 6px;display:flex}.layer-chip__name{text-overflow:ellipsis;white-space:nowrap;flex:auto;overflow:hidden}.layer-chip--armed{border-width:var(--border-width-armed);border-color:var(--border-strong);background-color:var(--accent-bg);font-weight:600}.layer-chip--hidden{opacity:.55}.layer-chip__eye{width:24px;height:24px;color:var(--text-secondary);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.layer-chip__eye:hover{color:var(--text-primary)}.ghost-chip{border:var(--border-width) dashed var(--accent);border-radius:var(--radius-md);width:100%;color:var(--accent);font-size:var(--text-sm-size);line-height:var(--text-sm-line);font-family:var(--font-body);cursor:pointer;background:0 0;justify-content:center;align-items:center;gap:6px;padding:10px 12px;display:flex}.ghost-chip:hover{background-color:var(--accent-bg)}.app-header{justify-content:space-between;align-items:center;gap:16px;margin-bottom:24px;display:flex}.theme-toggle{border:var(--border-width) solid var(--border-default);border-radius:var(--radius-md);background-color:var(--bg-surface);width:28px;height:28px;color:var(--text-secondary);cursor:pointer;flex:none;justify-content:center;align-items:center;display:inline-flex}.theme-toggle:hover{color:var(--text-primary)}.year-selector{align-items:center;gap:4px;display:flex}.year-selector__chips{gap:4px;display:flex;overflow:hidden}.year-chip{border:var(--border-width) solid var(--border-default);border-radius:var(--radius-md);background-color:var(--bg-surface);color:var(--text-secondary);font-size:var(--text-sm-size);line-height:var(--text-sm-line);font-variant-numeric:tabular-nums;cursor:pointer;padding:4px 10px}.year-chip--selected{border-color:var(--border-strong);background-color:var(--accent-bg);color:var(--text-primary);font-weight:600}.year-selector__arrow{border:var(--border-width) solid var(--border-default);border-radius:var(--radius-md);background-color:var(--bg-surface);width:28px;height:28px;color:var(--text-secondary);cursor:pointer;justify-content:center;align-items:center;display:inline-flex}.year-selector__arrow:hover:not(:disabled){color:var(--text-primary)}.year-selector__arrow:disabled{opacity:.4;cursor:default}.modal-backdrop{z-index:50;background:#0006;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal{background-color:var(--bg-surface);border:var(--border-width) solid var(--border-default);border-radius:var(--radius-lg);flex-direction:column;gap:16px;width:100%;max-width:360px;padding:20px;display:flex}.modal__title{font-family:var(--font-display);font-size:var(--text-md-size);line-height:var(--text-md-line);font-weight:600}.modal__label{font-size:var(--text-sm-size);color:var(--text-secondary);margin-bottom:6px;display:block}.modal__input{box-sizing:border-box;border:var(--border-width) solid var(--border-default);border-radius:var(--radius-md);background-color:var(--bg-app);width:100%;color:var(--text-primary);font-size:var(--text-base-size);padding:8px 10px}.modal__error{color:var(--danger);font-size:var(--text-xs-size);margin-top:4px}.modal__help{color:var(--text-muted);font-size:var(--text-xs-size);margin-top:4px}.modal__body{color:var(--text-secondary);font-size:var(--text-sm-size);line-height:var(--text-sm-line)}.swatch-row{flex-wrap:wrap;gap:8px;display:flex}.swatch-button{border:var(--border-width) solid var(--border-default);border-radius:var(--radius-md);cursor:pointer;width:28px;height:28px;padding:0}.swatch-button--selected{outline:var(--border-width-armed) solid var(--border-strong);outline-offset:1px}.pattern-row{gap:8px;display:flex}.pattern-button{border:var(--border-width) solid var(--border-default);border-radius:var(--radius-md);background-color:var(--bg-surface);cursor:pointer;justify-content:center;align-items:center;width:36px;height:36px;display:flex}.pattern-button--selected{outline:var(--border-width-armed) solid var(--border-strong);outline-offset:1px}.modal__actions{justify-content:flex-end;gap:8px;display:flex}.btn{border-radius:var(--radius-md);font-size:var(--text-sm-size);font-family:var(--font-body);cursor:pointer;border:var(--border-width) solid var(--border-default);background-color:var(--bg-surface);color:var(--text-primary);padding:8px 14px}.btn--primary{background-color:var(--accent);border-color:var(--accent);color:#fff}.btn--primary:disabled{opacity:.5;cursor:default}.btn--ghost{color:var(--text-secondary);background:0 0;border-color:#0000}.toaster{z-index:60;pointer-events:none;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.toast{background-color:var(--text-primary);color:var(--bg-surface);border-radius:var(--radius-md);font-size:var(--text-sm-size);line-height:var(--text-sm-line);padding:8px 14px;box-shadow:0 2px 8px #00000026}.layer-chip--readonly{opacity:.7}.layer-chip--readonly .layer-chip__arm,.layer-chip--readonly .layer-chip__eye{cursor:default}.app-header__actions{flex:none;align-items:center;gap:8px;display:flex}.sync-button{border:var(--border-width) solid var(--border-default);border-radius:var(--radius-md);background-color:var(--bg-surface);height:28px;color:var(--text-secondary);font-size:var(--text-sm-size);font-family:var(--font-body);cursor:pointer;align-items:center;gap:6px;padding:0 10px;display:inline-flex}.sync-button:hover{color:var(--text-primary)}.sync-button[data-status=synced]{color:var(--accent);border-color:var(--accent)}.sync-button[data-status=offline],.sync-button[data-status=readonly]{color:var(--text-muted)}@media (width<=767px){.sync-button__label{display:none}}.modal__warning{font-size:var(--text-xs-size);line-height:var(--text-sm-line);color:var(--text-muted);border-left:2px solid var(--border-strong);padding-left:10px}.sync-strength{font-size:var(--text-xs-size);color:var(--text-muted);margin-top:4px}.sync-strength[data-strength=medium]{color:var(--text-secondary)}.sync-strength[data-strength=strong]{color:var(--accent)}.sync-qr{color:var(--text-primary);justify-content:center;display:flex}.sync-link-row{align-items:stretch;gap:8px;display:flex}.sync-link-row .modal__input{flex:auto;min-width:0}.app-wordmark{position:relative}.app-wordmark__button{font:inherit;color:inherit;text-transform:inherit;letter-spacing:inherit;cursor:pointer;background:0 0;border:0;padding:0}.wordmark-heart{color:var(--accent);pointer-events:none;animation:.6s ease-out forwards wordmark-heart-float;position:absolute;top:0;left:50%}@keyframes wordmark-heart-float{0%{opacity:1;transform:translate(-50%)scale(.8)}to{opacity:0;transform:translate(-50%,-24px)scale(1.1)}}@media (prefers-reduced-motion:reduce){.wordmark-heart{animation:.6s ease-out forwards wordmark-heart-fade}@keyframes wordmark-heart-fade{0%{opacity:1}to{opacity:0}}}@media (width>=768px) and (width<=1023px){.app-shell{grid-template-columns:minmax(0,1fr);gap:20px}.app-sidebar{flex-flow:wrap;align-items:center;gap:12px;position:static}.layer-panel{flex:100%}.layer-panel__list{flex-flow:wrap}.ghost-chip{width:auto}.year-grid,.year-skeleton__grid{grid-template-columns:repeat(6,minmax(0,1fr));gap:12px}.weekday-header,.cells-row{grid-template-columns:repeat(7, var(--cell-tablet))}.day-cell{width:var(--cell-tablet);height:var(--cell-tablet)}.year-skeleton__month{height:160px}}*,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border:0 solid #e5e7eb}:before,:after{--tw-content:""}html,:host{-webkit-text-size-adjust:100%;tab-size:4;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{line-height:inherit;margin:0}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--font-mono);font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-feature-settings:inherit;font-variation-settings:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:#0000;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{margin:0;padding:0;list-style:none}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder{opacity:1;color:#9ca3af}textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}html,body,#root{height:100%}body{background-color:var(--bg-app);color:var(--text-primary);font-family:var(--font-body);font-size:var(--text-base-size);line-height:var(--text-base-line);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;margin:0}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:0s!important;animation-duration:0s!important;animation-iteration-count:1!important}}.container{width:100%}@media (width>=640px){.container{max-width:640px}}@media (width>=768px){.container{max-width:768px}}@media (width>=1024px){.container{max-width:1024px}}@media (width>=1280px){.container{max-width:1280px}}@media (width>=1536px){.container{max-width:1536px}}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.visible{visibility:visible}.fixed{position:fixed}.relative{position:relative}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.grid{display:grid}.hidden{display:none}.border{border-width:var(--border-width)}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.shadow{--tw-shadow:0 1px 3px 0 #0000001a, 0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0), var(--tw-enter-translate-y,0), 0) scale3d(var(--tw-enter-scale,1), var(--tw-enter-scale,1), var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0), var(--tw-exit-translate-y,0), 0) scale3d(var(--tw-exit-scale,1), var(--tw-exit-scale,1), var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}
