:root{--c-accent: #1B6B4C;--c-accent-dark: #155740;--c-accent-soft: #E7F1EC;--c-bg: #EFEFF4;--c-card: #FFFFFF;--c-divider: #E6E7EB;--c-overlay: rgba(18, 22, 28, .42);--c-text-1: #15181C;--c-text-2: #6E7480;--c-text-3: #9AA0AB;--c-text-on-accent:#FFFFFF;--c-present: #1B6B4C;--c-late: #E0972B;--c-late-soft: #FCEFD8;--c-absent: #E5484D;--c-absent-soft: #FDE7E7;--c-cat-attendance: #3B82F6;--c-cat-attendance-soft: #E8F0FE;--c-cat-tasks: #8B5CF6;--c-cat-tasks-soft: #F0EBFE;--c-cat-manager: #14B8A6;--c-cat-manager-soft: #DCF5F1;--c-cat-bonus: #F59E0B;--c-cat-bonus-soft: #FEF3D7;--sh-card: 0 1px 2px rgba(15, 23, 42, .04);--sh-sheet: 0 -8px 28px rgba(15, 23, 42, .12);--sh-cta: 0 8px 18px rgba(27, 107, 76, .28);--r-card: 16px;--r-button: 14px;--r-button-lg: 22px;--r-field: 12px;--r-pill: 999px;--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-5: 20px;--s-6: 24px;--s-8: 32px;--s-10: 40px;--ff-sys: -apple-system, BlinkMacSystemFont, "SF Pro Display", "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;--fz-xs: 12px;--fz-sm: 14px;--fz-md: 16px;--fz-lg: 18px;--fz-xl: 22px;--fz-2xl: 28px;--fw-regular: 400;--fw-medium: 500;--fw-semibold: 600;--fw-bold: 700;--app-max-w: 420px;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--ease-out: cubic-bezier(.2, .8, .2, 1);--t-fast: .12s;--t-base: .22s;--t-slow: .34s}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-family:var(--ff-sys);font-size:var(--fz-md);line-height:1.45;color:var(--c-text-1);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}body{min-height:100dvh;background:var(--c-bg);overflow-x:hidden}button{font-family:inherit;font-size:inherit;color:inherit;background:none;border:none;cursor:pointer}button:disabled{cursor:not-allowed}input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}a{color:var(--c-accent);text-decoration:none}.app-shell{min-height:100dvh;max-width:var(--app-max-w);margin:0 auto;padding-top:var(--safe-top);padding-bottom:var(--safe-bottom);display:flex;flex-direction:column;background:var(--c-bg)}.app-shell--with-tabs{padding-bottom:calc(56px + var(--safe-bottom))}.topbar{display:flex;align-items:center;justify-content:space-between;padding:var(--s-4) var(--s-5);background:var(--c-bg)}.topbar__title{font-size:var(--fz-lg);font-weight:var(--fw-semibold);letter-spacing:-.01em}.topbar__role{background:var(--c-accent-soft);color:var(--c-accent-dark);font-size:var(--fz-xs);font-weight:var(--fw-semibold);padding:4px 10px;border-radius:var(--r-pill);letter-spacing:.02em}.page{flex:1;display:flex;flex-direction:column;gap:var(--s-4);padding:0 var(--s-5) var(--s-8)}.card{background:var(--c-card);border-radius:var(--r-card);padding:var(--s-5);box-shadow:var(--sh-card)}.card--tight{padding:var(--s-4)}.section-title{font-size:var(--fz-sm);font-weight:var(--fw-semibold);color:var(--c-text-2);text-transform:uppercase;letter-spacing:.06em;padding:0 var(--s-2);margin-top:var(--s-3)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);border-radius:var(--r-button);padding:14px 18px;font-size:var(--fz-md);font-weight:var(--fw-semibold);transition:transform var(--t-fast) var(--ease-out),opacity var(--t-fast) var(--ease-out),background var(--t-fast) var(--ease-out);-webkit-user-select:none;user-select:none}.btn:active:not(:disabled){transform:scale(.98)}.btn:disabled{opacity:.45}.btn--primary{background:var(--c-accent);color:var(--c-text-on-accent)}.btn--primary:hover:not(:disabled){background:var(--c-accent-dark)}.btn--secondary{background:var(--c-card);color:var(--c-text-1);box-shadow:var(--sh-card)}.btn--ghost{background:transparent;color:var(--c-accent)}.btn--block{width:100%}.btn-hero{width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-height:132px;padding:var(--s-5) var(--s-6);border-radius:var(--r-button-lg);color:var(--c-text-on-accent);background:linear-gradient(180deg,#2A8061 0%,var(--c-accent) 55%,var(--c-accent-dark) 100%);box-shadow:var(--sh-cta);font-size:var(--fz-xl);font-weight:var(--fw-bold);letter-spacing:-.01em;transition:transform var(--t-fast) var(--ease-out),opacity var(--t-fast) var(--ease-out)}.btn-hero:active:not(:disabled){transform:scale(.985)}.btn-hero:disabled{opacity:.55}.btn-hero__hint{font-size:var(--fz-sm);font-weight:var(--fw-medium);opacity:.86}.field{display:flex;flex-direction:column;gap:6px}.field__label{font-size:var(--fz-sm);font-weight:var(--fw-medium);color:var(--c-text-2);padding:0 var(--s-1)}.field__input,.field__select{width:100%;padding:13px 14px;background:var(--c-bg);border:1px solid transparent;border-radius:var(--r-field);color:var(--c-text-1);font-size:var(--fz-md);outline:none;transition:border-color var(--t-fast) var(--ease-out),background var(--t-fast) var(--ease-out)}.field__input::placeholder{color:var(--c-text-3)}.field__input:focus,.field__select:focus{border-color:var(--c-accent);background:var(--c-card)}.field__select{-moz-appearance:none;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%236E7480' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;padding-right:38px}.hint{font-size:var(--fz-sm);color:var(--c-text-2);line-height:1.5}.error-banner{background:var(--c-absent-soft);color:var(--c-absent);font-size:var(--fz-sm);font-weight:var(--fw-medium);padding:12px 14px;border-radius:var(--r-field)}.success-banner{background:var(--c-accent-soft);color:var(--c-accent-dark);font-size:var(--fz-sm);font-weight:var(--fw-medium);padding:12px 14px;border-radius:var(--r-field)}.divider{height:1px;background:var(--c-divider);margin:var(--s-3) 0}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--c-overlay);opacity:0;pointer-events:none;transition:opacity var(--t-base) var(--ease-out);z-index:50}.sheet-backdrop--open{opacity:1;pointer-events:auto}.sheet{position:fixed;left:0;right:0;bottom:0;max-width:var(--app-max-w);margin:0 auto;background:var(--c-card);border-radius:22px 22px 0 0;box-shadow:var(--sh-sheet);padding:var(--s-4) var(--s-5) calc(var(--s-6) + var(--safe-bottom));transform:translateY(100%);transition:transform var(--t-slow) var(--ease-out);z-index:51;max-height:88dvh;overflow-y:auto}.sheet--open{transform:translateY(0)}.sheet__handle{width:38px;height:4px;background:var(--c-divider);border-radius:var(--r-pill);margin:0 auto var(--s-4)}.sheet__title{font-size:var(--fz-xl);font-weight:var(--fw-bold);margin-bottom:var(--s-4);letter-spacing:-.01em}.sheet__body{display:flex;flex-direction:column;gap:var(--s-4)}.center-stack{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:var(--s-8) var(--s-6);gap:var(--s-4)}.center-stack__icon{width:64px;height:64px;border-radius:50%;background:var(--c-accent-soft);color:var(--c-accent);display:flex;align-items:center;justify-content:center}.center-stack__title{font-size:var(--fz-xl);font-weight:var(--fw-bold);color:var(--c-text-1)}.center-stack__hint{font-size:var(--fz-md);color:var(--c-text-2);max-width:280px}.spinner{width:28px;height:28px;border-radius:50%;border:2.5px solid var(--c-divider);border-top-color:var(--c-accent);animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.brand-mark{width:56px;height:56px;border-radius:16px;background:linear-gradient(135deg,#2A8061,var(--c-accent-dark));color:var(--c-text-on-accent);font-weight:var(--fw-bold);font-size:24px;letter-spacing:-.02em;display:flex;align-items:center;justify-content:center;box-shadow:var(--sh-cta)}.copy-row{display:flex;gap:var(--s-2);align-items:stretch}.copy-row__input{flex:1;min-width:0;padding:13px 14px;background:var(--c-bg);border:none;border-radius:var(--r-field);font-size:var(--fz-sm);color:var(--c-text-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.copy-row__btn{flex-shrink:0;padding:0 16px;background:var(--c-accent);color:var(--c-text-on-accent);border-radius:var(--r-field);font-size:var(--fz-sm);font-weight:var(--fw-semibold)}.copy-row__btn:active{transform:scale(.97)}.tab-bar{position:fixed;left:50%;transform:translate(-50%);bottom:0;width:100%;max-width:var(--app-max-w);background:var(--c-card);border-top:1px solid var(--c-divider);display:flex;align-items:stretch;padding-bottom:var(--safe-bottom);z-index:50}.tab-bar__item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:8px 4px 6px;color:var(--c-text-3);font-size:11px;font-weight:var(--fw-medium);background:transparent;transition:color var(--t-fast) var(--ease-out);min-height:56px}.tab-bar__item--active{color:var(--c-accent)}.tab-bar__item:active:not(.tab-bar__item--active){color:var(--c-text-2)}.tab-bar__icon{width:22px;height:22px}.tab-bar__label{font-size:11px;letter-spacing:-.01em;line-height:1.1;text-align:center;max-width:70px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.month-mini{display:flex;flex-direction:column;gap:6px}.month-mini__head{display:flex;align-items:center;justify-content:space-between}.month-mini__title{font-size:var(--fz-md);font-weight:var(--fw-semibold);letter-spacing:-.01em}.month-mini__nav{width:30px;height:30px;border-radius:8px;display:flex;align-items:center;justify-content:center;color:var(--c-text-2)}.month-mini__nav:active{background:var(--c-bg)}.month-mini__weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;font-size:11px;font-weight:var(--fw-semibold);color:var(--c-text-3);text-align:center}.month-mini__grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.month-mini__cell{height:34px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:var(--fw-medium);color:var(--c-text-2)}.month-mini__cell--out{opacity:.3}.month-mini__cell--today{border:2px solid var(--c-accent);font-weight:var(--fw-bold)}.month-mini__cell--present{background:var(--c-accent-soft);color:var(--c-accent-dark)}.month-mini__cell--late{background:var(--c-late-soft);color:var(--c-late)}.month-mini__cell--absent{background:var(--c-absent-soft);color:var(--c-absent)}.month-mini__cell--off{background:var(--c-bg);color:var(--c-text-3)}.month-mini__cell--holiday{background:var(--c-cat-tasks-soft);color:var(--c-cat-tasks)}
