:root{--color-background: #212121;--color-primary: #1976D2;--color-success: #388E3C;--color-warning: #FFEB3B;--color-warning-strong: #FDD835;--color-danger: #D32F2F;--color-danger-strong: #B71C1C;--color-danger-bg: rgba(211, 47, 47, .22);--color-text: #F5F5F5;--color-text-light: #BDBDBD;--color-border: rgba(255,255,255,.15);--color-muted: #BDBDBD;--color-neutral-bg: #2F323A;--color-neutral-text: #BDBDBD;--color-bg-card: #2F323A;--color-bg-muted: #2A2D33;--color-warning-soft: rgba(255, 235, 59, .15);--radius-card: 16px;--radius-small: 8px;--radius-pill: 999px;--space-xs: .25rem;--space-s: .5rem;--space-m: 1rem;--space-l: 1.5rem;--space-xl: 2rem;--shadow-card: 0 8px 18px rgba(0,0,0,.35)}#root{min-height:100vh;display:flex;justify-content:center;align-items:flex-start;padding:var(--space-xl)}::-webkit-scrollbar{display:none}*{scrollbar-width:none}html,body{background:var(--color-background);color:var(--color-text)}.app-shell{padding-top:calc(env(safe-area-inset-top) + 1rem);background:var(--color-background);text-align:center;width:100%;max-width:1320px;margin:0 auto}.app-layout-3col{display:grid;grid-template-columns:minmax(260px,320px) minmax(0,1fr) minmax(260px,320px);gap:1.25rem;align-items:flex-start}.app-column{display:flex;flex-direction:column;gap:var(--space-m)}.app-main-card{border-radius:var(--radius-card);border:1px solid var(--color-border);background:var(--color-bg-card);box-shadow:var(--shadow-card);padding:var(--space-s) var(--space-m)}.app-main-card--sidebar{padding:.4rem .5rem .6rem;font-size:.9rem}.app-column--center{min-width:0}.app-column>div{box-shadow:var(--shadow-card)}.panel-title{font-weight:700;font-size:1rem;color:var(--color-text)}.panel-subtitle{margin-top:.35rem;margin-bottom:.6rem;color:var(--color-text-light);font-size:.8rem}.panel-stack{display:flex;flex-direction:column;gap:.35rem}.field-input,.field-select{width:100%;padding:.3rem .4rem;border-radius:var(--radius-small);border:1px solid var(--color-border);font-size:.85rem;background:var(--color-bg-muted);color:var(--color-text)}.field-input--sm{max-width:3.5rem}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.25rem;padding:.35rem .5rem;border-radius:var(--radius-small);border:1px solid transparent;font-size:.85rem;cursor:pointer;background:transparent;color:var(--color-text)}.btn--full{width:100%}.btn--primary{background:var(--color-primary);color:#fff}.btn--success{background:var(--color-success);color:#fff}.btn--warning{background:var(--color-warning);color:#000}.btn--warning-strong{background:var(--color-warning-strong);color:#000}.btn--danger{background:var(--color-danger-strong);color:#fff}.btn--neutral{background:var(--color-neutral-bg);color:var(--color-neutral-text)}.btn--outline-muted{border-color:var(--color-border);background:var(--color-bg-muted)}.btn-pill-danger{border-radius:var(--radius-pill);padding:.15rem .35rem;background-color:var(--color-danger-bg);color:var(--color-danger);border:none;font-size:.75rem}.btn--dashed{border-style:dashed;border-color:var(--color-muted);background:var(--color-bg-muted)}.absence-chip{flex:1;text-align:center;padding:.3rem .4rem;border-radius:var(--radius-small);border:1px solid var(--color-border);background:var(--color-bg-card);font-size:.85rem;cursor:pointer}.absence-chip--selected{border-width:2px;border-color:var(--color-warning);background:var(--color-warning-soft)}.timeformat-group{margin-top:.5rem;display:flex;flex-direction:column;gap:.25rem;font-size:.85rem}.upgrade-btn{display:inline-flex;align-items:center;justify-content:center;padding:.45rem .9rem;border-radius:999px;border:none;background:var(--color-primary);color:#fff;font-size:.85rem;font-weight:600;cursor:pointer;box-shadow:0 4px 12px #00000059;transition:transform .15s ease,box-shadow .15s ease,opacity .15s ease}.upgrade-btn:hover{opacity:.95;transform:translateY(-1px);box-shadow:0 6px 16px #00000073}.upgrade-btn:active{transform:translateY(0);box-shadow:0 3px 10px #0000004d}.mobile-nav{position:fixed;bottom:0;left:0;width:100%;height:calc(3.8rem + env(safe-area-inset-bottom,0));background:#2121218c;backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border-top:1px solid rgba(255,255,255,.12);box-shadow:0 -4px 18px #00000059;display:flex;justify-content:space-around;align-items:center;padding-bottom:env(safe-area-inset-bottom,0);z-index:10}.mobile-nav-item{flex:1;height:100%;border:none;background:none;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:.7rem;color:var(--color-text-light);position:relative}.mobile-nav-icon{display:flex;align-items:center;justify-content:center;margin-bottom:.15rem}.mobile-nav-item.active{color:var(--color-primary);font-weight:600}.mobile-nav-item.active .mobile-nav-icon svg{transform:scale(1.12)}.mobile-nav-icon svg{transition:transform .2s ease,stroke .2s ease}.nav-indicator{position:absolute;bottom:6px;left:calc((100% / var(--total-items)) * var(--i) + (100% / var(--total-items) / 2) - 3px);width:6px;height:6px;background:var(--color-primary);border-radius:50%;z-index:3;transition:left .28s cubic-bezier(.25,.8,.25,1),transform .25s cubic-bezier(.34,1.56,.64,1)}button{-webkit-tap-highlight-color:transparent}.tab-transition{animation:tabFadeSlide .28s ease-out}@keyframes tabFadeSlide{0%{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.ios-prompt{position:fixed;bottom:5.25rem;left:50%;transform:translate(-50%);width:min(100% - 1.5rem,520px);background:#1e1e1e;color:#f5f5f5;padding:0 .4rem;border-radius:.75rem;box-shadow:0 10px 30px #0006;font-size:.85rem;z-index:11}.ios-install-prompt{animation:iosPromptFade .25s ease-out}@keyframes iosPromptFade{0%{opacity:0;transform:translate(-50%) translateY(10px)}to{opacity:1;transform:translate(-50%) translateY(0)}}@media(display-mode:standalone){.mobile-nav{height:calc(2rem + env(safe-area-inset-bottom,0))}}@media(max-width:900px){#root{padding:var(--space-l)}.mobile-nav{display:flex}body{padding-bottom:5.2rem}.app-shell{max-width:100%}.app-layout-3col{grid-template-columns:1fr;gap:1.25rem}}@media(max-width:600px){#root{padding:.5rem 0}.app-layout-3col{gap:1rem}.app-column>div{padding:.65rem!important}.absence-chip{font-size:.8rem;white-space:normal;word-break:break-word;display:inline-block;max-width:100%}button{min-height:2.4rem}}@media(max-width:400px){#root{padding:.4rem}.app-layout-3col{gap:.5rem}.app-column>div{padding:.5rem!important}button{font-size:.85rem}}.shift-row{display:flex;gap:.35rem;align-items:stretch}.shift-select-btn{flex:1;text-align:left;padding:.4rem .5rem;border-radius:8px;border:1px solid var(--color-border);background:var(--color-bg-card);color:var(--color-text-primary);cursor:pointer;transition:all .15s ease}.shift-select-btn:hover{background:var(--color-bg-muted)}.shift-selected{border:2px solid var(--color-primary)!important;background:#1976d214!important}.shift-disabled{background:#ffffff0d!important;opacity:.6;cursor:not-allowed;pointer-events:none}.shift-name{font-weight:500;color:var(--color-text-primary)}.shift-hours{font-size:.8rem;color:var(--color-text-secondary)}.shift-side-buttons{display:flex;flex-direction:column;gap:.2rem}.shift-icon-btn{padding:.2rem .4rem;border-radius:999px;font-size:.75rem;border:none;background:transparent;color:var(--color-text-primary);cursor:pointer;transition:background .15s ease}.shift-icon-btn:hover{background:#ffffff1f}.shift-delete-btn{background:#d32f2f2e;border:1px solid rgba(211,47,47,.32);color:var(--color-danger)}.shift-delete-btn:hover{background:#d32f2f47}.shift-edit-box{padding:.75rem;border-radius:12px;border:2px solid var(--color-primary);background:#1976d21a;display:flex;flex-direction:column;gap:.6rem;font-size:.85rem}.shift-input{width:100%;max-width:100%;box-sizing:border-box;padding:.25rem;border-radius:6px;border:1px solid var(--color-border);background:var(--color-bg-muted);color:var(--color-text-primary)}.shift-edit-label{display:block;font-size:.75rem;margin-bottom:.15rem;color:var(--color-text-secondary)}.shift-edit-actions{display:flex;justify-content:flex-end;gap:.4rem;margin-top:.4rem}.shift-edit-row{display:flex;gap:.75rem}.shift-edit-row>div{flex:1;min-width:0}.shift-edit-action-btn{border-radius:999px;padding:.25rem .6rem;font-size:.8rem;border:none;cursor:pointer}.shift-cancel-btn{background:transparent;color:var(--color-text-secondary)}.shift-save-btn{background:var(--color-success);color:#fff}.shift-add-container{margin-top:1rem;display:flex;flex-direction:column;gap:1rem}.shift-add-box{display:flex;flex-direction:column;gap:.35rem}.shift-add-label{font-size:.8rem;color:var(--color-text-secondary)}.shift-add-input{width:100%;padding:.45rem;border-radius:8px;border:1px solid var(--color-border);font-size:.9rem;background:var(--color-bg-muted);color:var(--color-text-primary);box-sizing:border-box}.shift-add-time-row{display:flex;gap:.75rem}.shift-add-time-box{flex:1;display:flex;flex-direction:column;gap:.25rem}.shift-add-time-label{font-size:.8rem;color:var(--color-text-secondary)}.shift-add-time-input{width:100%;padding:.45rem;border-radius:8px;border:1px solid var(--color-border);font-size:.9rem;background:var(--color-bg-muted);color:var(--color-text-primary);box-sizing:border-box}.shift-add-btn{margin-top:.2rem;padding:.55rem .75rem;border-radius:10px;background-color:var(--color-success);color:#fff;border:none;font-size:.95rem;cursor:pointer;transition:background .15s ease}.shift-add-btn:hover{background-color:#2e7034}.ms-container{padding:1rem 1rem 5rem;background:var(--color-background)}.ms-card{background:var(--color-bg-card);border-radius:16px;padding:1.2rem;box-shadow:0 4px 12px #0000004d;margin-bottom:1rem;color:var(--color-text-primary)}.ms-month{color:var(--color-text-secondary);font-size:.75rem;margin-bottom:.25rem;font-weight:600}.ms-hours-number{font-size:2.8rem;font-weight:700;text-align:center;color:var(--color-text-primary)}.ms-hours-label{text-align:center;color:var(--color-text-secondary);margin-top:-.2rem;font-size:.9rem}.ms-breakdown{margin-top:.8rem;font-size:.85rem;color:var(--color-text-secondary);text-align:center;line-height:1.3}.ms-night-highlight{color:var(--color-accent-yellow);font-weight:600}.ms-night-highlight-small{color:var(--color-accent-yellow)}.ms-card-title{font-size:1rem;font-weight:600;margin-bottom:.6rem;color:var(--color-text-primary)}.ms-salary-main{font-size:1.8rem;font-weight:700;margin-bottom:.3rem;color:var(--color-text-primary)}.ms-salary-breakdown{font-size:.9rem;color:var(--color-text-secondary);margin-bottom:.2rem}.ms-donut-wrapper{display:flex;justify-content:center;margin-bottom:1rem}.ms-donut-bg{fill:none;stroke:var(--color-border);stroke-width:8}.ms-donut-day{fill:none;stroke:var(--color-primary);stroke-width:8;transform:rotate(-90deg);transform-origin:center}.ms-donut-night{fill:none;stroke:var(--color-accent-yellow);stroke-width:8;transform:rotate(-90deg);transform-origin:center}.ms-shift-list{display:flex;flex-direction:column;gap:.6rem}.ms-shift-row{display:grid;grid-template-columns:32px 1fr auto auto;align-items:center;color:var(--color-text-primary);font-size:.9rem}.ms-shift-icon{font-size:1.3rem}.ms-shift-name{color:var(--color-text-primary);font-weight:500}.ms-shift-count{color:var(--color-text-secondary);font-weight:500;text-align:right;padding-right:.5rem}.ms-shift-hours{text-align:right;color:var(--color-text-secondary)}.calendar-inner{padding:0;border:none;border-radius:999px;background:transparent}.calendar-weekdays{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;margin-bottom:.5rem;font-size:.9rem;font-weight:600;color:var(--color-text-secondary)}.calendar-weekday{--noop: 0}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:.5rem}.calendar-day{display:grid;grid-template-rows:auto 1fr auto;align-items:start;justify-items:stretch;min-height:110px;padding:.4rem .45rem;font-size:.8rem;border-radius:.9rem;background:#2a2d33;border:1px solid rgba(255,255,255,.06)}.calendar-day-number{font-size:.9rem;font-weight:600;color:var(--color-text);justify-self:left}.shift-text{margin-top:.2rem;align-self:stretch;text-align:left;font-size:.75rem;line-height:1.25;color:var(--color-text)}.absence-chip{display:inline-block;padding:.1rem .35rem;border-radius:999px;background-color:#ffeb3b26;color:var(--color-accent-yellow);font-weight:600}.calendar-missed-badge{align-self:center;justify-self:center;font-size:.65rem;line-height:1.25}.calendar-missed-badge span{display:inline-block;padding:.05rem .35rem;border-radius:999px;background-color:#d32f2f2e;color:var(--color-danger);font-weight:600;white-space:wrap}.calendar-help{font-size:.8rem;color:var(--color-text-secondary)}.calendar-generate-button,.calendar-edit-button{position:fixed;bottom:calc(4.8rem + env(safe-area-inset-bottom,0));padding:.55rem 1.2rem;border-radius:16px;background:#2121218c;backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border:1px solid rgba(255,255,255,.15);box-shadow:0 6px 20px #00000026;font-size:.85rem;color:var(--color-text-light);z-index:50;transition:.2s ease}.calendar-generate-button{right:7rem}.calendar-edit-button{right:1rem}@media(display-mode:standalone){.calendar-edit-button{bottom:calc(5.4rem + env(safe-area-inset-bottom,0))}}@media(max-width:600px){.calendar-weekdays{font-size:.75rem;margin-bottom:.25rem}.calendar-grid{gap:.15rem}.calendar-day{min-height:72px;padding:.18rem .22rem;font-size:.7rem;border-radius:.55rem;background:#2a2d33;border:1px solid rgba(255,255,255,.05)}.calendar-day.today{box-shadow:0 0 0 2px #ffeb3b99}.calendar-day-number{font-size:.75rem}.calendar-day .shift-text{font-size:.7rem;display:block;-webkit-line-clamp:unset;line-clamp:unset;-webkit-box-orient:unset;overflow:visible;white-space:normal}.absence-chip{font-size:.8rem;max-width:100%;white-space:normal;word-break:break-word}.calendar-missed-badge{font-size:.6rem}.calendar-missed-badge span{font-size:.6rem;padding:.01rem .15rem}.calendar-help{font-size:.7rem}}.sheet-backdrop{position:fixed;inset:0;background:#00000059;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);z-index:10;display:flex;justify-content:center;align-items:flex-end;animation:backdropFade .25s ease}.sheet{position:fixed;left:50%;bottom:calc(env(safe-area-inset-bottom) + 90px);transform:translate(-50%);width:92%;max-width:420px;background:#212121e0;backdrop-filter:blur(28px) saturate(180%);-webkit-backdrop-filter:blur(28px) saturate(180%);border-radius:26px;box-shadow:0 16px 40px #00000073;padding:.75rem 0;animation:sheetEnter .28s cubic-bezier(.25,.8,.25,1);transform-origin:bottom center}.sheet-header{text-align:center;padding:.8rem 1rem;font-size:1rem;font-weight:600;color:var(--color-text)}.sheet-row{display:flex;align-items:center;gap:12px;padding:.8rem 1.2rem;font-size:1.05rem;color:var(--color-text);cursor:pointer}.sheet-row:active{background:#ffffff1f}.sheet-row-danger{color:var(--color-danger);font-weight:600}.sheet-row-danger:active{background:#d32f2f40}.sheet-icon{width:24px;height:24px;display:flex;align-items:center;justify-content:center;opacity:.9;fill:var(--color-text);color:var(--color-text)}.sheet-chevron{margin-left:auto;display:flex;align-items:center;opacity:.55;fill:var(--color-text-secondary);color:var(--color-text-secondary)}.sheet-separator{height:1px;background:#ffffff1f;margin:.2rem 0}.sheet-content-animate{animation:contentSlide .25s ease}@keyframes sheetEnter{0%{opacity:0;transform:translate(-50%,20px) scale(.98)}to{opacity:1;transform:translate(-50%) scale(1)}}@keyframes backdropFade{0%{opacity:0}to{opacity:1}}@keyframes contentSlide{0%{opacity:0;transform:translate(10px)}to{opacity:1;transform:translate(0)}}.sheet-backdrop.closing{animation:backdropFadeOut .25s forwards ease}@keyframes backdropFadeOut{0%{opacity:1}to{opacity:0}}.sheet.closing{animation:sheetExit .25s forwards cubic-bezier(.25,.8,.25,1)}@keyframes sheetExit{0%{opacity:1;transform:translate(-50%) scale(1)}to{opacity:0;transform:translate(-50%,20px) scale(.95)}}
