:root{--font-primary: -apple-system, BlinkMacSystemFont, "SF Pro Display", "Segoe UI", Roboto, sans-serif;--font-mono: "SF Mono", "Monaco", "Menlo", monospace;--bg-primary: #f5f5f7;--bg-secondary: #ffffff;--bg-tertiary: #f9f9fb;--bg-elevated: #ffffff;--text-primary: #1d1d1f;--text-secondary: #6e6e73;--text-tertiary: #86868b;--border-color: rgba(0, 0, 0, .1);--border-light: rgba(0, 0, 0, .06);--divider: rgba(0, 0, 0, .08);--shadow-sm: 0 1px 3px rgba(0, 0, 0, .08);--shadow-md: 0 4px 12px rgba(0, 0, 0, .1);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .12);--shadow-card: 0 2px 8px rgba(0, 0, 0, .06);--accent-primary: #007aff;--accent-hover: #0051d5;--accent-light: rgba(0, 122, 255, .1);--success: #34c759;--success-light: rgba(52, 199, 89, .1);--warning: #ff9500;--warning-light: rgba(255, 149, 0, .1);--danger: #ff3b30;--danger-light: rgba(255, 59, 48, .1);--calendar-cell-bg: #ffffff;--calendar-cell-border: rgba(0, 0, 0, .08);--calendar-today: rgba(0, 122, 255, .08);--nav-bg: rgba(255, 255, 255, .8);--card-bg: #ffffff;--input-bg: rgba(255, 255, 255, .9);--input-border: rgba(0, 0, 0, .1);--button-bg: rgba(0, 0, 0, .04);--button-hover-bg: rgba(0, 0, 0, .08);--overlay: rgba(0, 0, 0, .4);--glass-bg: rgba(255, 255, 255, .72);--glass-border: rgba(255, 255, 255, .18);--space-xs: 4px;--space-s: 8px;--space-m: 16px;--space-l: 24px;--space-xl: 32px;--space-2xl: 48px;--radius-xs: 6px;--radius-s: 10px;--radius-m: 12px;--radius-l: 16px;--radius-xl: 20px;--radius-pill: 100px;--color-background: var(--bg-primary);--color-primary: var(--accent-primary);--color-primary-hover: var(--accent-hover);--color-success: var(--success);--color-warning: var(--warning);--color-danger: var(--danger);--color-holiday: #9C27B0;--color-text: var(--text-primary);--color-text-primary: var(--text-primary);--color-text-secondary: var(--text-secondary);--color-border: var(--border-color);--color-muted: var(--text-tertiary);--shadow-elevated: var(--shadow-lg)}#root{min-height:100vh;min-height:100dvh;display:flex;justify-content:center;align-items:flex-start;padding:var(--space-xl);background:var(--bg-primary);font-family:var(--font-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::-webkit-scrollbar{width:0;height:0}*{scrollbar-width:none}html,body{background:var(--bg-primary);color:var(--text-primary);font-family:var(--font-primary);-webkit-text-size-adjust:100%}html.scroll-locked,body.scroll-locked{overflow:hidden;height:100%;overscroll-behavior:none}::selection{background:var(--accent-light);color:var(--text-primary)}::-moz-selection{background:var(--accent-light);color:var(--text-primary)}.app-shell{padding-top:0;text-align:center;width:100%;max-width:1400px;margin:0 auto}.app-shell h1{font-size:2.5rem;font-weight:600;letter-spacing:-.015em;color:var(--text-primary);margin-bottom:var(--space-s)}.app-shell>p{color:var(--text-secondary);font-size:1.0625rem;line-height:1.5;font-weight:400}.app-layout-3col{display:grid;grid-template-columns:minmax(280px,340px) minmax(0,1fr) minmax(280px,340px);gap:var(--space-l);align-items:flex-start}.app-column{display:flex;flex-direction:column;gap:var(--space-m)}.app-main-card{border-radius:var(--radius-l);border:1px solid var(--border-light);background:var(--card-bg);box-shadow:var(--shadow-card);padding:var(--space-l);position:relative;overflow:hidden;backdrop-filter:blur(20px);transition:box-shadow .3s ease,transform .2s ease}.app-main-card:hover{box-shadow:var(--shadow-md)}.app-main-card--sidebar{padding:var(--space-m);font-size:.9375rem}.app-column--center{min-width:0}.app-main-card--calendar{overflow:visible}.panel-title{font-weight:600;font-size:1.25rem;letter-spacing:-.01em;color:var(--text-primary)}.panel-subtitle{margin-top:var(--space-xs);margin-bottom:var(--space-m);color:var(--text-secondary);font-size:.9375rem;line-height:1.5}.panel-stack{display:flex;flex-direction:column;gap:var(--space-s)}.field-input,.field-select{width:100%;padding:10px 14px;border-radius:var(--radius-s);border:1px solid var(--input-border);font-size:1rem;background:var(--input-bg);color:var(--text-primary);transition:border-color .2s ease,box-shadow .2s ease;font-family:var(--font-primary)}.field-input:focus,.field-select:focus{outline:none;border-color:var(--accent-primary);box-shadow:0 0 0 3px var(--accent-light)}.field-input--sm{max-width:4rem;padding:8px 12px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-xs);padding:10px 20px;border-radius:var(--radius-s);border:1px solid rgba(0,122,255,.2);font-size:1rem;font-weight:500;cursor:pointer;background:#007aff14;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);color:var(--text-primary);transition:all .25s cubic-bezier(.4,0,.2,1);font-family:var(--font-primary);letter-spacing:-.01em;box-shadow:0 4px 16px #0000001a}.btn:hover{background:#007aff26;border-color:#007aff66;transform:translateY(-2px);box-shadow:0 8px 24px #0003}.btn:active{transform:translateY(0)}.btn--full{width:100%}.btn--primary{background:#007aff40;border-color:#007aff80;color:#fff;box-shadow:0 4px 16px #007aff4d}.btn--primary:hover{background:#007aff59;border-color:#007aff99;box-shadow:0 8px 24px #007aff66}.btn--success{background:#4caf5040;border-color:#4caf5080;color:#fff;box-shadow:0 4px 16px #4caf504d}.btn--success:hover{background:#4caf5059;border-color:#4caf5099;box-shadow:0 8px 24px #4caf5066}.btn--warning{background:#ff950040;border-color:#ff950080;color:#fff;box-shadow:0 4px 16px #ff95004d}.btn--warning:hover{background:#ff950059;border-color:#ff950099;box-shadow:0 8px 24px #ff950066}.btn--danger{background:#ff3b3040;border-color:#ff3b3080;color:#fff;box-shadow:0 4px 16px #ff3b304d}.btn--danger:hover{background:#ff3b3059;border-color:#ff3b3099;box-shadow:0 8px 24px #ff3b3066}.btn--neutral{background:#007aff0d;border-color:#007aff26;color:var(--text-primary)}.btn--neutral:hover{background:#007aff1a;border-color:#007aff4d}.btn--outline-muted{border:1px solid rgba(0,122,255,.15);background:#007aff08;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px)}.btn--outline-muted:hover{background:#007aff14;border-color:#007aff4d}.btn-pill-danger{border-radius:var(--radius-pill);padding:6px 12px;background:#ff3b3026;border:1px solid rgba(255,59,48,.3);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);color:#ff3b30;font-size:.8125rem;font-weight:500;transition:all .25s cubic-bezier(.4,0,.2,1);box-shadow:0 2px 8px #ff3b3033}.btn-pill-danger:hover{background:#ff3b3040;border-color:#ff3b3080;box-shadow:0 4px 16px #ff3b304d}.btn-pill-danger:hover{background-color:var(--danger);color:#fff}.btn--dashed{border:2px dashed var(--border-color);background:transparent;color:var(--text-secondary)}.btn--dashed:hover{border-color:var(--accent-primary);color:var(--accent-primary);background:var(--accent-light)}.absence-chip{flex:1;text-align:center;padding:10px 14px;border-radius:var(--radius-s);border:1.5px solid var(--border-color);background:var(--card-bg);font-size:.9375rem;font-weight:500;cursor:pointer;transition:all .2s ease}.absence-chip:hover{border-color:var(--accent-primary);transform:translateY(-1px)}.absence-chip--selected{border-width:2px;border-color:var(--warning);background:var(--warning-light);box-shadow:0 2px 8px #ff950033}.timeformat-group{margin-top:var(--space-m);display:flex;flex-direction:column;gap:var(--space-s);font-size:.9375rem}.desktop-sidebar{position:fixed;left:0;top:0;bottom:0;width:240px;background:var(--card-bg);backdrop-filter:blur(40px);-webkit-backdrop-filter:blur(40px);border-right:1px solid var(--border-color);box-shadow:var(--shadow-md);display:flex;flex-direction:column;padding:var(--space-xl) 0;z-index:100}.desktop-sidebar-header{padding:0 var(--space-l);margin-bottom:var(--space-xl)}.desktop-sidebar-logo{font-size:1.75rem;font-weight:700;letter-spacing:-.02em;color:var(--text-primary);margin-bottom:var(--space-xs)}.desktop-sidebar-tagline{font-size:.8125rem;color:var(--text-secondary);line-height:1.4}.desktop-sidebar-nav{flex:1;display:flex;flex-direction:column;gap:var(--space-xs);padding:0 var(--space-m)}.desktop-nav-item{display:flex;align-items:center;gap:var(--space-m);padding:12px 16px;border-radius:var(--radius-s);border:none;background:none;color:var(--text-secondary);font-size:1rem;font-weight:500;cursor:pointer;transition:all .2s ease;text-align:left;font-family:var(--font-primary)}@media(hover:hover)and (pointer:fine){.desktop-nav-item:hover{background:var(--button-hover-bg);color:var(--text-primary)}}.desktop-nav-item:focus-visible{outline:none;box-shadow:0 0 0 3px var(--accent-light)}.desktop-nav-item.active{background:var(--accent-light);color:var(--accent-primary)}.desktop-nav-icon{width:24px;height:24px;display:flex;align-items:center;justify-content:center}.desktop-nav-icon svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:2}.desktop-nav-item.active .desktop-nav-icon svg{stroke-width:2.5}.app-with-sidebar{margin-left:240px;width:calc(100% - 240px)}:root{--mobile-nav-height: 4.25rem;--mobile-nav-total-height: calc( var(--mobile-nav-height) + env(safe-area-inset-bottom, 0) )}:root.is-native{--mobile-nav-height: 4rem}@media(display-mode:standalone){:root{--mobile-nav-height: 4rem}}.mobile-nav{display:none;position:fixed;bottom:0;left:0;right:0;width:100%;height:var(--mobile-nav-total-height);background:var(--card-bg);backdrop-filter:blur(40px);-webkit-backdrop-filter:blur(40px);border-top:1px solid var(--border-color);box-shadow:0 -4px 24px var(--shadow-xl);justify-content:space-around;align-items:center;padding-bottom:env(safe-area-inset-bottom,0);z-index:100}.mobile-nav-item{flex:1;height:100%;border:none;background:none;background-color:transparent;-webkit-appearance:none;appearance:none;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:.75rem;color:var(--text-secondary);position:relative;cursor:pointer;transition:color .2s ease,opacity .2s ease}.mobile-nav-item:focus{outline:none;background-color:transparent}.mobile-nav-item:active{background-color:transparent}.mobile-nav-item:focus-visible{outline:none;box-shadow:0 0 0 3px var(--accent-light)}.mobile-nav-icon{display:flex;align-items:center;justify-content:center;margin-bottom:4px}.mobile-nav-icon svg{width:24px;height:24px;stroke:currentColor;fill:none;stroke-width:2}.mobile-nav-label{font-size:.6875rem;font-weight:500;letter-spacing:-.01em}.mobile-nav-item.active{color:var(--accent-primary)}.mobile-nav-item.active .mobile-nav-icon svg{transform:scale(1.08);stroke-width:2.5}.mobile-nav-icon svg{transition:transform .25s cubic-bezier(.34,1.56,.64,1)}.nav-indicator{position:absolute;bottom:env(safe-area-inset-bottom,0);left:calc((100% / var(--total-items)) * var(--i) + (100% / var(--total-items) / 2) - 4px);width:8px;height:8px;background:var(--accent-primary);border-radius:50%;box-shadow:0 0 12px #007aff99;z-index:3;transition:left .3s cubic-bezier(.4,0,.2,1)}html{-webkit-tap-highlight-color:transparent}button,a,[role=button],[role=tab],[role=link],[role=menuitem],.btn,.mobile-nav-item{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}input,textarea,select,[contenteditable=true],[contenteditable=""]{-webkit-user-select:text;user-select:text;-webkit-touch-callout:default}svg,img{-webkit-tap-highlight-color:transparent}.tab-transition{animation:tabFadeSlide .3s cubic-bezier(.4,0,.2,1)}@keyframes tabFadeSlide{0%{opacity:0;transform:translateY(16px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.ios-prompt{position:fixed;bottom:5.5rem;left:50%;transform:translate(-50%);width:min(100% - 2rem,520px);background:#1e1e1ef2;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);color:#f5f5f7;padding:var(--space-m);border-radius:var(--radius-l);box-shadow:0 12px 40px #00000080;font-size:.9375rem;z-index:11}.ios-install-prompt{animation:iosPromptFade .3s cubic-bezier(.4,0,.2,1)}@keyframes iosPromptFade{0%{opacity:0;transform:translate(-50%) translateY(16px) scale(.95)}to{opacity:1;transform:translate(-50%) translateY(0) scale(1)}}@media(min-width:901px){.desktop-sidebar{display:flex}.mobile-nav{display:none!important}.app-shell{padding-bottom:0}@media(min-width:1400px){.app-shell.can-use-columns{display:grid;grid-template-columns:1fr 2fr 1fr;gap:var(--space-l);text-align:left;max-width:1600px}.app-shell.can-use-columns>h1,.app-shell.can-use-columns>p{grid-column:1 / -1;text-align:center}}}@media(display-mode:standalone){.mobile-nav{height:var(--mobile-nav-total-height)}}@media(max-width:900px){.desktop-sidebar{display:none}.app-with-sidebar{margin-left:0;width:100%}#root{padding:0}.mobile-nav{display:flex!important}body{padding-bottom:0}.app-shell{max-width:100%;padding:calc(var(--space-s) + env(safe-area-inset-top,0)) calc(var(--space-xs) + env(safe-area-inset-right,0)) calc(3.25rem + env(safe-area-inset-bottom,0) + var(--space-l)) calc(var(--space-xs) + env(safe-area-inset-left,0))}:root.is-native .app-shell{padding:calc(var(--space-s) + env(safe-area-inset-top,0)) calc(var(--space-xs) + env(safe-area-inset-right,0)) calc(var(--mobile-nav-total-height) + var(--space-m)) calc(var(--space-xs) + env(safe-area-inset-left,0))}.app-layout-3col{grid-template-columns:1fr;gap:var(--space-m)}.app-main-card{margin:0;max-width:100%;width:100%;box-sizing:border-box;border-left:none;border-right:none;border-radius:0}.app-main-card--calendar{padding:var(--space-m) var(--space-xs);border-radius:var(--radius-l);border-left:1px solid var(--border-color);border-right:1px solid var(--border-color);backdrop-filter:none;overflow:visible}.calendar-inner{width:100%;max-width:100%}}@media(max-width:600px){#root{padding:0}.app-shell{padding:calc(var(--space-xs) + env(safe-area-inset-top,0)) env(safe-area-inset-right,0) calc(3.25rem + env(safe-area-inset-bottom,0) + var(--space-l)) env(safe-area-inset-left,0)}:root.is-native .app-shell{padding:calc(var(--space-xs) + env(safe-area-inset-top,0)) env(safe-area-inset-right,0) calc(var(--mobile-nav-total-height) + var(--space-m)) env(safe-area-inset-left,0)}.app-layout-3col{gap:0}.app-main-card--calendar{padding:var(--space-m) 0;border-radius:var(--radius-l);border-left:1px solid var(--border-color);border-right:1px solid var(--border-color);backdrop-filter:none;overflow:visible}.app-column>div{padding:var(--space-s)!important}.absence-chip{font-size:.8125rem;white-space:normal;word-break:break-word;display:inline-block;max-width:100%}button{min-height:2.5rem}}@media(max-width:400px){#root{padding:0}.app-layout-3col{gap:var(--space-s)}.app-column>div{padding:var(--space-s)!important}button{font-size:.875rem}}.app-shell{width:100%;min-height:100vh;padding-bottom:5rem}.loading-spinner{display:flex;justify-content:center;align-items:center;min-height:200px;color:var(--text-secondary, #666);font-size:.875rem}.loading-spinner:after{content:"";width:24px;height:24px;margin-left:8px;border:2px solid rgba(0,0,0,.1);border-top-color:var(--accent-primary, #007aff);border-radius:50%;animation:spinner .6s linear infinite}@keyframes spinner{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.loading-spinner:after{animation:none}.tab-content{animation:none}.app-with-sidebar{transition:none}}@media(min-width:901px){.app-shell{padding-bottom:2rem;padding-top:2rem}.app-with-sidebar{transition:margin-left .3s ease}}.app-shell>*{position:relative;z-index:1}.tab-content{animation:tabFadeIn .3s ease-out}@keyframes tabFadeIn{0%{opacity:0}to{opacity:1}}@media(max-width:900px){@keyframes tabFadeIn{0%{opacity:0}to{opacity:1}}}.btn{padding:.5rem 1rem;border:1px solid rgba(0,122,255,.2);border-radius:6px;font-size:.9rem;font-weight:500;cursor:pointer;transition:all .25s cubic-bezier(.4,0,.2,1);display:inline-flex;align-items:center;justify-content:center;gap:.5rem;background:#007aff14;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);box-shadow:0 4px 16px #0000001a}.btn-primary{background:#007aff40;border-color:#007aff80;color:#fff;box-shadow:0 4px 16px #007aff4d}.btn-primary:hover{background:#007aff59;border-color:#007aff99;transform:translateY(-2px);box-shadow:0 8px 24px #007aff66}.btn-secondary{background:#007aff0d;border:1px solid rgba(0,122,255,.15);color:var(--text-primary, #333)}.btn-secondary:hover{background:#007aff1a;border-color:#007aff4d;transform:translateY(-2px);box-shadow:0 8px 24px #00000026}.btn-danger{background:#ff3b3040;border-color:#ff3b3080;color:#fff;box-shadow:0 4px 16px #ff3b304d}.btn-danger:hover{background:#ff3b3059;border-color:#ff3b3099;transform:translateY(-2px);box-shadow:0 8px 24px #ff3b3066}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:disabled:hover{transform:none}.mobile-nav-item{cursor:pointer;transition:all .25s cubic-bezier(.4,0,.2,1)}@media(hover:hover)and (pointer:fine){.mobile-nav-item:hover{background:var(--button-hover-bg)}}.profile-dropdown-wrapper{position:relative;margin:var(--space-m) 0;padding:0 var(--space-m)}.profile-selector{width:100%;display:flex;align-items:center;gap:var(--space-s);padding:var(--space-s) var(--space-m);background:var(--card-bg);border:2px solid var(--border-color);border-radius:var(--radius-m);cursor:pointer;transition:all .2s ease;color:var(--text-primary);font-size:.9375rem;font-weight:500}.profile-selector:hover{border-color:var(--accent-primary);box-shadow:0 2px 8px var(--shadow-xs)}.profile-selector-color{width:24px;height:24px;border-radius:50%;flex-shrink:0;border:2px solid var(--bg-primary);box-shadow:0 2px 4px #0000001a}.profile-selector-name{flex:1;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.profile-selector-icon{flex-shrink:0;stroke-width:2;transition:transform .2s ease}.profile-selector-icon.open{transform:rotate(180deg)}.profile-dropdown{position:absolute;top:calc(100% + var(--space-xs));left:var(--space-m);right:var(--space-m);background:var(--card-bg);border:2px solid var(--border-color);border-radius:var(--radius-m);box-shadow:0 8px 24px var(--shadow-s);z-index:1000;max-height:300px;overflow-y:auto;animation:slideDown .2s ease-out}.profile-dropdown-item{width:100%;display:flex;align-items:center;gap:var(--space-s);padding:var(--space-s) var(--space-m);background:none;border:none;border-bottom:1px solid var(--border-color);cursor:pointer;transition:all .2s ease;color:var(--text-primary);font-size:.9375rem;text-align:left}.profile-dropdown-item:last-child{border-bottom:none}.profile-dropdown-item:hover{background:var(--button-hover-bg)}.profile-dropdown-item.active{background:var(--accent-light);color:var(--accent-primary);font-weight:600}.profile-dropdown-color{width:20px;height:20px;border-radius:50%;flex-shrink:0;border:2px solid var(--bg-primary);box-shadow:0 1px 3px #0000001a}.profile-dropdown-item svg{margin-left:auto;stroke-width:2.5}@keyframes slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.toast-container{position:fixed;top:var(--space-m);right:var(--space-m);z-index:9999;display:flex;flex-direction:column;gap:var(--space-s);max-width:420px;pointer-events:none}.toast{display:flex;align-items:center;gap:var(--space-m);padding:var(--space-m) var(--space-l);background:var(--card-bg);backdrop-filter:blur(40px);-webkit-backdrop-filter:blur(40px);border-radius:var(--radius-l);box-shadow:0 8px 32px var(--shadow-l),0 0 0 1px var(--border-color);animation:toastSlideIn .35s cubic-bezier(.34,1.56,.64,1);pointer-events:auto;min-width:340px}.toast-icon{flex-shrink:0;display:flex;align-items:center;justify-content:center}.toast-message{flex:1;color:var(--text-primary);font-size:1rem;font-weight:500;line-height:1.5;letter-spacing:-.01em}.toast-close{flex-shrink:0;background:none;border:none;padding:var(--space-xs);cursor:pointer;color:var(--text-secondary);transition:all .2s ease;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-s)}.toast-close:hover{color:var(--text-primary);background:var(--button-hover-bg)}.toast--success{border-left:3px solid var(--success)}.toast--success .toast-icon{color:var(--success)}.toast--error{border-left:3px solid var(--danger)}.toast--error .toast-icon{color:var(--danger)}.toast--warning{border-left:3px solid var(--warning)}.toast--warning .toast-icon{color:var(--warning)}.toast--info{border-left:3px solid var(--accent-primary)}.toast--info .toast-icon{color:var(--accent-primary)}@keyframes toastSlideIn{0%{transform:translate(450px) scale(.9);opacity:0}to{transform:translate(0) scale(1);opacity:1}}.toast--exit{animation:toastSlideOut .25s cubic-bezier(.4,0,.2,1) forwards}@keyframes toastSlideOut{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(450px) scale(.9);opacity:0}}@media(max-width:768px){.toast-container{top:auto;bottom:calc(5rem + env(safe-area-inset-bottom,0));left:var(--space-m);right:var(--space-m);max-width:none}:root.is-native .toast-container{bottom:calc(var(--mobile-nav-total-height) + var(--space-m))}.toast{min-width:0;width:100%}@keyframes toastSlideIn{0%{transform:translateY(120px) scale(.95);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}@keyframes toastSlideOut{0%{transform:translateY(0) scale(1);opacity:1}to{transform:translateY(100px);opacity:0}}}
