:root{--card:#fff;--accent:#2d8cff;--calendar-today-bg:#fff8e1;--calendar-today-border:#fbbf24;--calendar-today-text:#92400e}*{box-sizing:border-box}body{font-family:system-ui,-apple-system,Segoe UI,Roboto,ヒラギノ角ゴ ProN,Hiragino Kaku Gothic ProN,Noto Sans JP,sans-serif;background:var(--bg);margin:0;padding:5px}.container{margin:0 auto}h1{text-align:center}@media (max-width: 900px){html,body{overscroll-behavior-y:none;touch-action:none}.container{overflow:hidden}.nav-drawer,.shift-day-body,.shift-layout-detail,.day-time-schedule,.shift-modal,.list,.form,.login{touch-action:pan-y}}.app-title{text-align:left;font-size:1.9rem;line-height:1.2;margin:4px 0 12px 56px}.with-fixed-header{padding-top:0}.hamburger-button{width:40px;height:40px;padding:8px;display:flex;flex-direction:column;justify-content:space-between;border:1px solid #ddd;border-radius:10px;background:#fff;color:#333;cursor:pointer;position:relative;z-index:31}.hamburger-button span{display:block;height:2px;width:18px;background:#333;border-radius:2px;transition:transform .2s ease,opacity .2s ease}.hamburger-button.open span:nth-child(1){transform:translateY(9px) rotate(45deg)}.hamburger-button.open span:nth-child(2){opacity:0}.hamburger-button.open span:nth-child(3){transform:translateY(-9px) rotate(-45deg)}.floating-menu-button{position:fixed;top:12px;left:12px;z-index:20}.drawer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000052;display:none;opacity:0;pointer-events:none;transition:opacity .25s ease;z-index:20}.drawer-backdrop.open{display:block;opacity:1;pointer-events:auto}.nav-drawer{position:fixed;left:0;right:0;bottom:0;height:320px;padding:16px;background:var(--card);box-shadow:0 -12px 32px #0000001f;transform:translateY(100%);transition:transform .25s ease,visibility .25s ease;display:flex;flex-direction:column;gap:12px;z-index:30;overflow-y:auto;border-top-left-radius:12px;border-top-right-radius:12px;visibility:hidden;pointer-events:none}.nav-drawer.open{transform:translateY(0);visibility:visible;pointer-events:auto}.sidebar-site-title{font-size:1.1rem;font-weight:700;color:#333;padding:2px 120px 8px 2px;border-bottom:1px solid #eef2f7;margin-bottom:2px}.drawer-welcome{position:absolute;top:22px;right:16px;margin:0;max-width:145px;text-align:right;color:#555;font-size:.8rem;line-height:1.2}.sidebar-toggle-button{display:none;position:absolute;top:18px;right:12px;background:#f2f5fa;color:#333;border:1px solid #ddd;border-radius:8px;padding:4px 8px;text-align:center;line-height:1}.sidebar-toggle-icon{font-size:16px;font-weight:700;display:inline-block}.nav-item{background:#fff;border:1px solid #ddd;color:#333;border-radius:8px;padding:12px 14px;text-align:left;cursor:pointer;transition:background .2s ease,border-color .2s ease,box-shadow .2s ease,opacity .2s ease}.nav-item--reorderable{display:flex;align-items:center;gap:10px;position:relative}.nav-item-text{flex:1;min-width:0}.nav-item-short{display:none;flex-shrink:0;font-weight:700;font-size:.9rem;line-height:1;text-align:center}.nav-drag-handle{flex-shrink:0;font-size:14px;line-height:1;color:#9ca3af;-webkit-user-select:none;user-select:none;touch-action:none;cursor:grab;padding:2px 0}.nav-drag-handle:active{cursor:grabbing}.nav-item.active .nav-drag-handle{color:#ffffffd9}.nav-item-dragging{opacity:.72;box-shadow:0 8px 20px #2d8cff2e;border-color:var(--accent)}.nav-item-drag-over{box-shadow:0 0 0 2px var(--accent),0 4px 12px #2d8cff29}.nav-item.active{background:var(--accent);color:#fff;border-color:var(--accent)}.nav-group{display:flex;flex-direction:column;gap:6px}.nav-group-header{display:flex;align-items:center;gap:10px;padding:2px 2px 0;font-size:.82rem;font-weight:700;color:#64748b}.nav-group-title{flex:1;min-width:0}.nav-group-title-short{display:none;flex:1;font-weight:700;font-size:.9rem;line-height:1;text-align:center}.nav-group--active .nav-group-header{color:var(--accent)}.nav-group-children{display:flex;flex-direction:column;gap:6px;padding-left:10px;border-left:2px solid #e6edf6;margin-left:8px}.nav-item--child{padding:10px 12px}.nav-group.nav-item-drag-over .nav-group-header,.nav-group.nav-item-dragging .nav-group-header{opacity:.72}.nav-group.nav-item-drag-over{box-shadow:0 0 0 2px var(--accent),0 4px 12px #2d8cff29;border-radius:8px}.nav-item-with-badge{display:flex;align-items:center;justify-content:space-between;gap:8px}.nav-item-label{flex:1;min-width:0}.nav-item-badge{flex-shrink:0;min-width:1.4em;padding:2px 7px;border-radius:999px;font-size:11px;font-weight:700;line-height:1.3;text-align:center;background:#ef4444;color:#fff}.nav-item.active .nav-item-badge{background:#fff;color:var(--accent)}.sidebar-section{background:#f8fbff;padding:12px;border-radius:12px;border:1px solid #dde9f4}.sidebar-section-header{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px}.sidebar-section-title{font-size:.92rem;font-weight:700;color:#1f2937}.sidebar-section-action{background:transparent;border:none;color:var(--accent);cursor:pointer;font-size:.85rem;padding:0}.sidebar-preview-list{list-style:none;margin:0;padding:0;display:grid;gap:8px}.sidebar-preview-item{background:#fff;border:1px solid #e6edf6;border-radius:10px;padding:10px;cursor:pointer;transition:background .2s ease,border-color .2s ease}.sidebar-preview-item:hover{background:#eef6ff;border-color:var(--accent)}.sidebar-preview-item strong{display:block;font-size:.95rem;line-height:1.2}.sidebar-preview-item small{color:#64748b;font-size:.82rem;line-height:1.4}.sidebar-preview-empty{color:#6b7280;font-size:.9rem;padding:8px 0}.logout-drawer-button{margin-top:auto;background:#f05a5a;color:#fff;border-color:#f05a5a}.header-spacer{width:40px;height:40px}.logout-button{background:#f05a5a;box-shadow:none}.summary{display:flex;gap:12px;justify-content:space-between;background:var(--card);padding:12px;border-radius:8px;margin-bottom:16px}.form{background:var(--card);padding:0;border-radius:8px;margin-bottom:16px}.field{display:flex;flex-direction:column;margin-bottom:8px}.amount-field .amount-input-wrapper{display:flex;gap:8px;align-items:center}.amount-field input{flex:1}.step-buttons{display:flex;flex-direction:column}.step-buttons button{padding:6px 8px;border:1px solid #ddd;border-radius:6px;background:#f2f5fa;color:#333;cursor:pointer}.step-buttons button:hover{background:#e9effa}.button-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px}.button-row button{flex:1}.button-row .secondary{background:#f2f5fa;color:#333;border:1px solid #ddd}.shift-calendar{background:var(--card);padding:1px;border-radius:10px;margin-bottom:16px;touch-action:pan-y;width:100%;height:100%;display:flex;flex-direction:column;min-height:0;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;overscroll-behavior:contain;--calendar-shift-line-height:24px;--calendar-shift-line-border:rgba(15,23,42,.38);--calendar-shift-overlay-top:38px;--calendar-shift-area-height:calc(var(--calendar-shift-line-height) * 4 + 4px)}.shift-calendar *{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.calendar-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:12px}.calendar-title{font-weight:700}.calendar-title-wrap{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center}.calendar-title-row{display:flex;align-items:center;justify-content:center;gap:10px;width:100%}.calendar-title-summary{font-size:18px;color:#585f68;display:flex;align-items:center;gap:4px}.calendar-title-summary strong{color:#929191}.calendar-title-button{background:transparent;color:#333;border:none;padding:0;font-size:20px;font-weight:700;cursor:pointer}.calendar-today-button{background:#f2f5fa;color:#333;border:1px solid #ddd;border-radius:8px;padding:6px 10px;font-size:.9rem;cursor:pointer}.calendar-today-button:disabled{opacity:.5;cursor:not-allowed}.calendar-month-picker{position:absolute;top:calc(100% + 6px);left:50%;transform:translate(-50%);width:160px;z-index:5;background:#fff}.calendar-nav{background:#f2f5fa;color:#333;border:1px solid #ddd;border-radius:8px;padding:8px 12px;cursor:pointer}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);grid-auto-rows:minmax(0,1fr);gap:0;overflow:visible;width:100%;flex:1 1 0;min-height:0;align-content:stretch}.calendar-grid.calendar-transition-next{animation:calendar-slide-left .26s ease}.calendar-grid.calendar-transition-prev{animation:calendar-slide-right .26s ease}.calendar-weekday{display:flex;align-items:center;justify-content:center;width:auto;min-height:0;padding:6px;border-radius:8px;font-weight:700;color:#666;font-size:12px;height:auto}.calendar-day{display:flex;justify-content:flex-start;align-items:flex-start;width:auto;min-height:0;padding:6px 6px 40px;border-radius:8px;height:100%}.calendar-day-number{position:absolute;top:6px;left:8px;line-height:1;z-index:1}@keyframes calendar-slide-left{0%{transform:translate(16px);opacity:.1}to{transform:translate(0);opacity:1}}@keyframes calendar-slide-right{0%{transform:translate(-16px);opacity:.1}to{transform:translate(0);opacity:1}}.calendar-weekday.calendar-weekday-0{color:#d64545}.calendar-weekday.calendar-weekday-6{color:#3f68d8}.calendar-day-cell{position:relative;display:flex;align-items:center;justify-content:center;min-height:0;overflow:visible;container-type:inline-size;container-name:calendar-cell}.calendar-day{background:#f9f9fb;border:1px solid #eee;color:#333;cursor:pointer;position:relative;font-size:20px;width:100%;min-height:0;box-sizing:border-box;overflow:visible;border-radius:0}.calendar-day.sunday,.calendar-day.holiday,.calendar-day-cell.sunday>button,.calendar-day-cell.holiday>button{color:#d64545;background:#fff1f1;border-color:#f2caca}.calendar-day.saturday,.calendar-day-cell.saturday>button{color:#3f68d8;background:#eef3ff;border-color:#cfdcff}.calendar-day-cell.today:not(.selected)>.calendar-day{background:var(--calendar-today-bg);border-color:var(--calendar-today-border);color:var(--calendar-today-text);font-weight:700;box-shadow:inset 0 0 0 1px #fbbf2466}.calendar-day-cell.today:not(.selected).sunday>.calendar-day,.calendar-day-cell.today:not(.selected).holiday>.calendar-day,.calendar-day-cell.today:not(.selected).saturday>.calendar-day{background:var(--calendar-today-bg);border-color:var(--calendar-today-border);color:var(--calendar-today-text)}.calendar-day-cell.today:not(.selected)>.calendar-day:after{content:"";position:absolute;bottom:8px;left:50%;transform:translate(-50%);width:6px;height:6px;border-radius:50%;background:#f59e0b}.calendar-day.empty{background:transparent;border-color:transparent;cursor:default}.calendar-day-cell.other-month>.calendar-day{color:#b8bcc4;background:#fafafa;border-color:#f0f0f0}.calendar-day-cell.other-month.sunday>.calendar-day,.calendar-day-cell.other-month.holiday>.calendar-day{color:#e8b4b4;background:#fdf8f8;border-color:#f5e8e8}.calendar-day-cell.other-month.saturday>.calendar-day{color:#a8bdf0;background:#f5f8ff;border-color:#e8eeff}.calendar-day-cell.other-month.selected>.calendar-day{background:var(--accent);color:#fff;border-color:var(--accent)}.calendar-day-cell.selected>.calendar-day{background:var(--accent);color:#fff;border-color:var(--accent)}.calendar-day-cell.drag-source .calendar-day{background:#2d8cff24;border-color:#2d8cff73}.calendar-day-cell.drag-target .calendar-day{background:#2d8cff2e;border-color:#2d8cff8c}.calendar-work-hours{display:flex;flex-direction:column;align-items:flex-start;gap:2px;margin-top:22px;padding-left:4px;width:100%;pointer-events:none}.calendar-work-hours-item{display:inline-flex;align-items:center;justify-content:center;gap:3px;max-width:100%}.calendar-work-hours-time{display:inline-flex;flex-direction:row;flex-wrap:nowrap;align-items:center;gap:1px;font-size:10px;font-weight:600;line-height:1.25;min-width:0;max-width:100%}.calendar-work-hours-start,.calendar-work-hours-end{white-space:nowrap}.calendar-work-hours-separator{flex-shrink:0}@container calendar-cell (max-width:80px){.calendar-work-hours-time{flex-direction:column;align-items:flex-start;gap:0;line-height:1.15}.calendar-work-hours-separator{line-height:1;font-size:9px}}.calendar-overtime-badge{position:absolute;top:3px;right:3px;z-index:5;display:inline-flex;align-items:center;justify-content:center;padding:1px 4px;border-radius:999px;font-size:8px;font-weight:700;line-height:1.2;color:#fff;background:#ef4444;box-shadow:0 1px 2px #0000002e;pointer-events:none}.calendar-overtime-badge-short{display:none}@container calendar-cell (max-width:80px){.calendar-overtime-badge-full{display:none}.calendar-overtime-badge-short{display:inline}.calendar-overtime-badge{padding:1px 3px}}.calendar-day-cell.has-payday-and-overtime .payday-marker{top:18px;right:3px}.calendar-day-cell.has-work-hours>.calendar-day{flex-direction:column;padding-bottom:6px}.calendar-day-cell.selected>.calendar-day .calendar-work-hours-start,.calendar-day-cell.selected>.calendar-day .calendar-work-hours-end,.calendar-day-cell.selected>.calendar-day .calendar-work-hours-separator{color:#fff!important}.shift-mark-overlay{position:absolute;top:var(--calendar-shift-overlay-top);left:0;right:0;height:var(--calendar-shift-area-height);min-height:0;overflow:hidden;pointer-events:none;z-index:2}.shift-mark{display:flex;align-items:center;position:absolute;left:0;min-width:0;width:100%;height:var(--calendar-shift-line-height);background:var(--shift-mark-color, var(--accent));box-sizing:border-box;border:1px solid var(--calendar-shift-line-border);border-radius:2px;cursor:pointer;pointer-events:auto;transform:translateY(calc(var(--shift-line-row, 0) * var(--calendar-shift-line-height)));transition:width .18s ease,background-color .18s ease,opacity .18s ease,border-color .18s ease;box-shadow:inset 0 0 0 1px #ffffff38;overflow:hidden;padding:0 4px;touch-action:none}.shift-mark-label{flex:1;min-width:0;font-size:clamp(7px,calc(var(--calendar-shift-line-height) - 6px),11px);font-weight:600;line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none;-webkit-user-select:none;user-select:none}.shift-mark-span-start{border-right:none;border-radius:2px 0 0 2px;box-shadow:inset 1px 0 #ffffff38,inset 0 1px #ffffff38,inset 0 -1px #ffffff38}.shift-mark-span-middle{border-left:none;border-right:none;border-radius:0;box-shadow:inset 0 1px #ffffff38,inset 0 -1px #ffffff38}.shift-mark-span-end{border-left:none;border-radius:0 2px 2px 0;box-shadow:inset -1px 0 #ffffff38,inset 0 1px #ffffff38,inset 0 -1px #ffffff38}.shift-mark.dragging{opacity:.001!important;width:100%!important}.shift-mark-long-press-ready{box-shadow:0 0 0 2px #2d8cff8c,inset 0 0 0 1px #ffffff38;filter:brightness(1.06)}.shift-mark-just-moved{animation:shift-mark-pop .42s ease-out forwards}@keyframes shift-mark-pop{0%{transform:translateY(calc(var(--shift-line-row, 0) * var(--calendar-shift-line-height))) scale(.95);opacity:.3}50%{transform:translateY(calc(var(--shift-line-row, 0) * var(--calendar-shift-line-height) - 4px)) scale(1.04);opacity:1}to{transform:translateY(calc(var(--shift-line-row, 0) * var(--calendar-shift-line-height))) scale(1);opacity:1}}.donut-animated-stroke{transition:stroke-dashoffset .9s ease,opacity .9s ease;opacity:.95}.shift-mark-ellipsis{color:#666;font-size:10px;line-height:1;align-self:center;margin-left:6px}.shift-mark-more{position:absolute;right:2px;left:auto;width:auto;min-width:18px;height:var(--calendar-shift-line-height);padding:0 4px;border-radius:2px;background:#ffffffeb;border:1px solid rgba(15,23,42,.2);color:#475569;font-size:9px;font-weight:700;line-height:1;display:flex;align-items:center;justify-content:center;pointer-events:auto;cursor:pointer;z-index:4;transform:translateY(calc(var(--shift-line-row, 0) * var(--calendar-shift-line-height)));box-sizing:border-box;font-family:inherit;-webkit-appearance:none;-moz-appearance:none;appearance:none}.shift-mark-more:hover{background:#fff;border-color:#0f172a59}.shift-hidden-popup{position:fixed;z-index:41;min-width:200px;max-width:min(280px,calc(100vw - 16px));padding:8px;border-radius:8px;background:#fff;border:1px solid #e2e8f0;box-shadow:0 8px 24px #0f172a29;touch-action:none}.shift-hidden-popup-title{font-size:11px;font-weight:700;color:#64748b;margin:0 0 6px;padding:0 2px}.shift-hidden-popup-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:0}.shift-hidden-popup-item{margin:0;padding:0}.shift-hidden-popup .shift-mark{position:relative;left:auto;transform:none;touch-action:none;-webkit-user-select:none;user-select:none}.payday-marker{position:absolute;top:3px;right:3px;width:12px;height:12px;border-radius:25%;background:#f7c41c00;display:flex;align-items:center;justify-content:center;color:#ffc812;font-size:13px;font-weight:100;line-height:1;z-index:3}.drag-overlay{position:fixed;pointer-events:none;z-index:9999;transform:translate(-50%,-50%);border-radius:2px;border:1px solid var(--calendar-shift-line-border);box-sizing:border-box;box-shadow:inset 0 0 0 1px #ffffff38,0 4px 10px #0f172a2e;opacity:.92;will-change:left,top}.calendar-title-summary{font-size:16px;color:#4b5563;display:flex;align-items:center;gap:4px}.calendar-title-summary strong{color:#111827}.shift-layout{display:flex;flex-direction:column;gap:0px}.shift-layout-calendar{width:100%;position:sticky;top:12px;align-self:stretch;z-index:3;flex-shrink:0;display:flex;flex-direction:column;height:100%;min-height:0;aspect-ratio:10 / 14;max-height:97vh}.shift-layout-detail{width:100%}.shift-day-panel{background:var(--card);padding:12px;border-radius:8px}.shift-day-header{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px}.shift-day-header h2{margin:0;font-size:1.1rem}.shift-day-body{min-height:0}.shift-day-empty{flex:1;display:flex;align-items:center;justify-content:center;padding:16px;color:#64748b;font-size:.92rem;text-align:center;line-height:1.5}.shift-day-footer{display:flex;justify-content:stretch;padding:4px 0 2px}.shift-day-footer button{width:100%}.shift-day-list{list-style:none;margin:0 0 12px;padding:0;display:flex;flex-direction:column;gap:8px}.shift-day-item{position:relative;overflow:hidden;border-radius:8px;display:block;padding:0;border-bottom:none;background:#f9fbff}.shift-day-swipe-bg{position:absolute;top:0;right:0;bottom:0;width:104px;border-radius:9px;display:flex;align-items:center;justify-content:center;background:#e35b5b;color:#fff;font-weight:700;letter-spacing:.04em}.shift-day-item-content{display:flex;justify-content:space-between;align-items:center;gap:10px;width:100%;padding:10px;border:1px solid #e6ebf4;border-radius:8px;background:#f9fbff;transition:transform .18s ease,background-color .18s ease,opacity .18s ease;position:relative;z-index:1}.shift-day-item.swipe-delete .shift-day-item-content{background:#ffe8e8;opacity:.85}.shift-day-item-main{display:flex;flex-direction:column;gap:6px;min-width:0}.shift-day-time{font-weight:400;word-break:break-all}.shift-day-meta{display:flex;align-items:center;gap:6px;color:#212121;font-weight:500}.shift-workplace-dot{width:10px;height:10px;border-radius:50%;display:inline-block;flex-shrink:0}.shift-day-actions{display:flex;gap:8px;flex-shrink:0}.day-time-schedule{display:flex;flex-direction:column;gap:12px}.day-time-schedule-untimed{padding:10px;border:1px dashed #d7dee9;border-radius:8px;background:#f8fbff}.day-time-schedule-untimed-title{font-size:.82rem;font-weight:700;color:#64748b;margin-bottom:8px}.day-time-schedule-untimed-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.day-time-schedule-untimed-item{display:flex;align-items:center;gap:8px;width:100%;padding:8px 10px;border:1px solid #e2e8f0;border-radius:8px;background:#fff;color:#1f2937;font:inherit;text-align:left;cursor:pointer}.day-time-schedule-grid{position:relative;display:grid;grid-template-columns:52px 1fr;gap:8px;flex:0 0 auto}.day-time-schedule-axis{position:relative;min-height:100%}.day-time-schedule-hour{position:absolute;right:0;transform:translateY(-50%);font-size:.75rem;color:#64748b;line-height:1;white-space:nowrap}.day-time-schedule-canvas{position:relative;min-height:100%;border:1px solid #e2e8f0;border-radius:8px;background:linear-gradient(180deg,#fbfdff,#f8fafc);overflow:hidden;cursor:pointer;touch-action:none}.day-time-schedule-line{position:absolute;left:0;right:0;height:1px;background:#e8edf5;pointer-events:none}.day-time-schedule-block{position:absolute;display:flex;flex-direction:column;align-items:stretch;justify-content:stretch;min-height:28px;border:1px solid rgba(15,23,42,.18);border-radius:6px;color:#fff;text-align:left;overflow:hidden;box-shadow:0 2px 8px #0f172a1f;z-index:1;touch-action:none}.day-time-schedule-block--editable .day-time-schedule-block-body{cursor:grab}.day-time-schedule-block--dragging{opacity:.88;box-shadow:0 6px 18px #0f172a33;z-index:2}.day-time-schedule-block-body{flex:1;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:2px;min-height:0;padding:6px 8px;-webkit-user-select:none;user-select:none}.day-time-schedule-block-handle{position:absolute;left:0;right:0;height:10px;z-index:3;touch-action:none}.day-time-schedule-block-handle--top{top:0;cursor:ns-resize}.day-time-schedule-block-handle--bottom{bottom:0;cursor:ns-resize}.day-time-schedule-block-handle--top:after,.day-time-schedule-block-handle--bottom:after{content:"";position:absolute;left:50%;transform:translate(-50%);width:28px;height:3px;border-radius:999px;background:#ffffffb8}.day-time-schedule-block-handle--top:after{top:3px}.day-time-schedule-block-handle--bottom:after{bottom:3px}.day-time-schedule-block-label{font-size:.82rem;font-weight:700;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.day-time-schedule-block-time{font-size:.72rem;line-height:1.2;opacity:.92;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.shift-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000061;z-index:40}.shift-modal{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:min(560px,calc(100vw - 24px));max-height:calc(100vh - 32px);overflow:auto;z-index:41}.shift-modal .form{margin:0;border:1px solid #dde4eb}.history-item-list{display:grid;gap:8px;margin:12px 0}.history-item{display:flex;flex-direction:column;align-items:flex-start;padding:12px 14px;border:1px solid #d7dee9;border-radius:10px;background:var(--card);text-align:left;transition:transform .16s ease,border-color .16s ease,background .16s ease;color:inherit}.history-item:hover{border-color:var(--accent);background:#0f76ff0d}.history-item.selected{border-color:var(--accent);background:var(--accent-background, rgba(15, 118, 255, .12))}.history-item-label{font-weight:600;line-height:1.4}.history-item-subtitle{font-size:.95rem;color:#5f6f8f;line-height:1.4;margin-top:4px}.edit-button{background:#2e7d32;color:#fff;border:1px solid #2e7d32;padding:8px 10px;border-radius:8px;cursor:pointer}.edit-button:hover{background:#246b29}.delete-button{background:#d32f2f;color:#fff;border:1px solid #d32f2f;padding:8px 10px;border-radius:8px;cursor:pointer}.delete-button:hover{background:#b71c1c}@media (min-width: 900px){.with-fixed-header{padding-top:0;padding-left:280px;max-width:none;margin:0}.app-title{margin-left:0}.with-fixed-header.sidebar-collapsed{padding-left:108px}.hamburger-button,.drawer-backdrop{display:none}.nav-drawer{top:0;left:0;bottom:0;width:260px;transform:none;z-index:21;border-right:1px solid #e8edf5;box-shadow:none;padding-top:24px;transition:width .2s ease,padding .2s ease}.nav-drawer.open{transform:none}.nav-drawer{visibility:visible;pointer-events:auto}.nav-drawer{height:100vh;overflow-y:auto}.with-fixed-header.sidebar-collapsed .nav-drawer{width:88px;padding-left:10px;padding-right:10px}.with-fixed-header.sidebar-collapsed .nav-item{padding:10px 6px;font-size:.75rem;text-align:center;justify-content:center}.with-fixed-header.sidebar-collapsed .nav-item-text,.with-fixed-header.sidebar-collapsed .nav-item-label{display:none}.with-fixed-header.sidebar-collapsed .nav-item-short{display:block}.with-fixed-header.sidebar-collapsed .nav-item--reorderable{justify-content:center}.with-fixed-header.sidebar-collapsed .nav-item-with-badge{position:relative;justify-content:center}.with-fixed-header.sidebar-collapsed .nav-item-with-badge .nav-item-badge{position:absolute;top:2px;right:2px;min-width:1.1em;padding:1px 4px;font-size:9px}.with-fixed-header.sidebar-collapsed .nav-drag-handle{display:none}.with-fixed-header.sidebar-collapsed .nav-item--reorderable[draggable=true]{cursor:pointer}.with-fixed-header.sidebar-collapsed .nav-group-header{justify-content:center;padding:2px 0}.with-fixed-header.sidebar-collapsed .nav-group-title{display:none}.with-fixed-header.sidebar-collapsed .nav-group-title-short{display:block}.with-fixed-header.sidebar-collapsed .nav-group-children{padding-left:0;border-left:none;margin-left:0;gap:4px}.with-fixed-header.sidebar-collapsed .nav-item--child{padding:8px 4px}.with-fixed-header.sidebar-collapsed .sidebar-site-title{font-size:.85rem;text-align:center;padding-right:2px}.with-fixed-header.sidebar-collapsed .drawer-welcome{display:none}.with-fixed-header.sidebar-collapsed .sidebar-toggle-button{position:static;align-self:center;margin-top:2px;padding:4px 6px}.sidebar-toggle-button{display:block}.shift-layout{display:grid;grid-template-columns:minmax(320px,1fr) minmax(360px,1fr);gap:16px;align-items:start}.shift-layout-calendar{align-self:start}.shift-layout-detail{max-height:calc(100vh - 40px);display:flex;overflow:hidden;padding-right:0}.shift-layout-detail>.shift-day-panel{flex:1;min-height:0;display:flex;flex-direction:column}.shift-day-header{position:sticky;top:0;z-index:2;background:var(--card);padding-bottom:10px;margin-bottom:0}.shift-day-body{flex:1;overflow-y:auto;padding-top:10px;-ms-overflow-style:none;scrollbar-width:none;display:flex;flex-direction:column;min-height:0}.day-time-schedule{flex:0 0 auto}.day-time-schedule-grid{min-height:0;height:auto}.shift-day-body::-webkit-scrollbar{display:none}.shift-day-list{margin:0;padding-bottom:12px}}input,select,textarea{padding:8px;border:1px solid #ddd;border-radius:6px;font:inherit}textarea{resize:vertical;min-height:96px}button{background:var(--accent);color:#fff;border:none;padding:8px 12px;border-radius:6px;cursor:pointer}.login{background:var(--card);padding:18px;border-radius:10px;max-width:420px;margin:24px auto}.login-tabs{display:flex;gap:8px;margin-bottom:12px}.login-tabs button{flex:1;background:#f2f5fa;color:#333;border:1px solid #d8e2f0;border-radius:8px;padding:8px}.login-tabs button.active{background:var(--accent);color:#fff;border-color:var(--accent)}.login form{display:flex;flex-direction:column}.login .note{margin-top:12px;color:#666;font-size:.9rem}.error{color:#d12f2f;margin-bottom:8px}.app-error-modal{width:min(420px,calc(100vw - 24px))}.app-error-message{margin:12px 0 4px;color:#d12f2f;line-height:1.6;white-space:pre-wrap}.dashboard-card{margin-bottom:16px;background:var(--card);padding:12px;border-radius:8px;display:flex;align-items:center;justify-content:space-between;box-shadow:0 1px 4px #0000000d}.list{background:var(--card);padding:12px;border-radius:8px}.workplace-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;margin-bottom:10px;border:1px solid #dde4eb;border-radius:12px;cursor:pointer;transition:transform .16s ease,border-color .16s ease,background .16s ease;min-width:180px}.workplace-item:hover{background:#f4f7fb;border-color:#cdd9e8}.workplace-item-label{display:flex;align-items:center;gap:10px}.workplace-color-dot{width:12px;height:12px;border-radius:50%;flex-shrink:0}.workplace-item-hint{font-size:.85rem;color:#666}.fixed-schedule-times{display:grid;gap:12px}@media (min-width:480px){.fixed-schedule-times{grid-template-columns:1fr 1fr 1fr}}.salary-type-group{display:flex;gap:14px;align-items:center}.salary-type-group label{display:flex;gap:6px;align-items:center;font-weight:500;cursor:pointer}.shift-modal .button-row{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end;margin-top:12px}.shift-modal .button-row button{min-width:92px}.shift-modal .delete-button{background:#d32f2f;color:#fff;border-color:#d32f2f}.fixed-income-table{width:100%;border-collapse:collapse;background:var(--card);border-radius:8px;overflow:hidden;margin-top:12px}.fixed-income-table th,.fixed-income-table td{padding:12px 10px;text-align:left;border-bottom:1px solid #eee}.fixed-income-table th{background:#f5f7fb;color:#333;font-weight:600}.fixed-income-table tr:last-child td{border-bottom:none}.fixed-income-table td.amount{text-align:right;color:#2d8cff}.fixed-income-table button.delete-button,.fixed-income-table button.edit-button,.fixed-income-table button.save-button,.fixed-income-table button.cancel-button{padding:6px 10px;font-size:.9rem;margin-right:6px;border-radius:6px;border:1px solid #ddd;background:#f2f5fa;color:#333;cursor:pointer}.fixed-income-table button.save-button{background:#2d8cff;color:#fff;border-color:#2d8cff}.fixed-income-table button.cancel-button{background:#fff;color:#333}.fixed-income-table button:last-child{margin-right:0}ul{list-style:none;padding:0;margin:0}li{display:flex;align-items:center;justify-content:space-between;padding:8px 0;border-bottom:1px dashed #eee}li.income .amt{color:#15803d}.income-page{display:flex;flex-direction:column;gap:16px}.income-summary-amount{font-size:1.75rem;font-weight:700;color:#15803d}.income-form-grid{display:grid;gap:12px}@media (min-width:640px){.income-form-grid{grid-template-columns:1fr 1fr}}.income-list li.income{flex-direction:column;align-items:stretch;gap:8px;padding:12px 0;border-bottom:1px solid #eee}@media (min-width:640px){.income-list li.income{flex-direction:row;align-items:center;justify-content:space-between}}.income-list .expense-item-actions .amt{color:#15803d}.income-editing{background:#f0fdf4;border-radius:8px;padding:12px!important;margin:0 -4px}.income-item-workplace{display:inline-flex;align-items:center;gap:6px;font-size:.85rem;color:#6b7280}.income-item-workplace .workplace-color-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.income-scan-preview-pdf embed{width:100%;min-height:280px;border:1px solid #e5e7eb;border-radius:8px;background:#f9fafb}.income-payslip-sections{display:flex;flex-direction:column;gap:16px;margin-top:16px}.payslip-lines-section{background:#f8fafc;border:1px solid #e5e7eb;border-radius:10px;padding:12px}.payslip-lines-header{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}.payslip-lines-title{margin:0;font-size:.95rem;font-weight:600;color:#374151}.payslip-lines-add{padding:4px 10px;font-size:.85rem}.payslip-lines-empty{margin:0}.payslip-lines-table{width:100%;border-collapse:collapse;font-size:.9rem}.payslip-lines-table th,.payslip-lines-table td{padding:6px 8px;text-align:left;border-bottom:1px solid #e5e7eb;vertical-align:middle}.payslip-lines-table th{font-weight:600;color:#6b7280;font-size:.8rem}.payslip-lines-table input{width:100%;min-width:0;padding:6px 8px;border:1px solid #d1d5db;border-radius:6px;font-size:.9rem}.payslip-lines-remove{padding:4px 8px;font-size:.8rem}.payslip-lines-table--readonly input{display:none}.payslip-amount-cell{text-align:right;font-weight:600;color:#15803d;white-space:nowrap}.income-payslip-details{margin-top:8px;display:flex;flex-direction:column;gap:10px}.income-payslip-detail-block h4{margin:0 0 6px;font-size:.85rem;color:#6b7280;font-weight:600}li.expense .amt{color:red}.expense-page,.borrowing-page{display:flex;flex-direction:column;gap:16px}.borrowing-summary-grid{display:grid;grid-template-columns:1fr;gap:16px}@media (min-width:640px){.borrowing-summary-grid{grid-template-columns:repeat(3,1fr)}}.borrowing-summary-item{display:flex;flex-direction:column;align-items:center;gap:4px}.borrowing-summary-borrow{font-size:1.5rem;font-weight:700;color:#7c3aed}.borrowing-summary-payment{font-size:1.5rem;font-weight:700;color:#2563eb}.borrowing-summary-remaining{font-size:1.5rem;font-weight:700;color:#b45309}.borrowing-form-grid{display:grid;gap:16px}@media (min-width:900px){.borrowing-form-grid{grid-template-columns:1fr 1fr}}.borrowing-list li.borrowing,.borrowing-active-list li.borrowing-active-item{flex-direction:column;align-items:stretch;gap:8px;padding:12px 0;border-bottom:1px solid #eee}@media (min-width:600px){.borrowing-list li.borrowing,.borrowing-active-list li.borrowing-active-item{flex-direction:row;align-items:center;justify-content:space-between}}.borrowing-kind-badge{display:inline-flex;align-items:center;align-self:flex-start;padding:2px 8px;border-radius:999px;font-size:.75rem;font-weight:600;margin-bottom:4px}.borrowing-kind-badge--borrow{background:#ede9fe;color:#6d28d9}.borrowing-kind-badge--payment{background:#dbeafe;color:#1d4ed8}.borrowing-borrow-amt{color:#7c3aed}.borrowing-payment-amt{color:#2563eb}.borrowing-remaining-amt{color:#b45309}.borrowing-item-notes{font-size:.85rem;color:#6b7280}.borrowing-editing{background:#f8fafc;border-radius:8px;padding:12px!important;margin:0 -4px}.borrowing-edit-fields{grid-template-columns:1fr}@media (min-width:600px){.borrowing-edit-fields{grid-template-columns:1fr 1fr}}.expense-summary{background:var(--card);padding:16px;border-radius:12px;box-shadow:0 1px 4px #0000000f}.expense-month-nav{display:flex;align-items:center;justify-content:center;gap:12px;margin-bottom:12px}.expense-summary-total{display:flex;flex-direction:column;align-items:center;gap:4px}.expense-summary-label{font-size:.9rem;color:#6b7280}.expense-summary-amount{font-size:1.75rem;font-weight:700;color:#d32f2f}.expense-summary-count{font-size:.85rem;color:#9ca3af}.expense-form{margin-bottom:0}.expense-list-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px;flex-wrap:wrap}.expense-list-title{margin:0;font-size:16px;font-weight:600}.expense-list ul{gap:0}.expense-list li.expense{flex-direction:column;align-items:stretch;gap:8px;padding:12px 0;border-bottom:1px solid #eee}@media (min-width:600px){.expense-list li.expense{flex-direction:row;align-items:center;justify-content:space-between}}.expense-item-main{display:flex;flex-direction:column;gap:4px;min-width:0}.expense-item-date{font-size:.8rem;color:#9ca3af}.expense-item-desc{font-weight:600;color:#1f2937;word-break:break-word}.expense-item-actions{display:flex;align-items:center;gap:12px;flex-shrink:0}.expense-item-actions .amt{font-size:1.1rem;font-weight:700;color:#d32f2f}.expense-item-actions .delete-button,.expense-item-actions .secondary{padding:6px 10px;font-size:.85rem}.expense-editing{background:#f8fafc;border-radius:8px;padding:12px!important;margin:0 -4px}.expense-item-edit{display:flex;flex-direction:column;gap:10px;width:100%}.expense-item-edit-fields{display:grid;gap:10px}@media (min-width:600px){.expense-item-edit-fields{grid-template-columns:minmax(140px,1fr) 1fr minmax(120px,160px)}}.expense-item-edit-actions{margin-top:0}.expense-item-edit-actions .button-row{gap:8px}.card-panel{background:var(--card);padding:16px;border-radius:12px;box-shadow:0 1px 4px #0000000f}.expense-accordion .expense-scan-title{margin:0;font-size:16px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}.expense-accordion-trigger{width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0;border:none;background:transparent;cursor:pointer;text-align:left;color:inherit;font:inherit}.expense-accordion-trigger:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}.expense-accordion-icon{color:#6b7280;font-size:.75rem;line-height:1;flex-shrink:0}.expense-accordion-body{margin-top:16px}.expense-preview-count{font-size:.9rem;font-weight:600;color:#6b7280}.expense-import-section{margin-bottom:12px}.expense-preview-section{margin-bottom:12px;scroll-margin-top:12px}.expense-import-tabs{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap}.expense-import-tabs button{flex:1;min-width:100px;background:#f2f5fa;color:#333;border:1px solid #d8e2f0;border-radius:8px;padding:8px 12px;cursor:pointer}.expense-import-tabs button.active{background:var(--accent);color:#fff;border-color:var(--accent)}.expense-import-panel{margin-bottom:8px}.expense-column-map-row{display:grid;gap:12px;margin-top:12px}.expense-column-map select{width:100%}.expense-grid-wrap{margin-top:8px}.expense-grid-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:8px}.expense-grid-size{font-size:.9rem;color:#6b7280;font-weight:600}.expense-grid-toolbar-buttons{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.expense-grid-toolbar-group{display:flex;gap:8px;flex-wrap:wrap}.expense-grid-scroll{overflow:auto;border:1px solid #e5e7eb;border-radius:10px;background:#fff;outline:none;-webkit-overflow-scrolling:touch;max-height:500px}.expense-grid-scroll:focus-visible{box-shadow:0 0 0 2px #3b82f659}.expense-grid-cell{cursor:cell;padding:0;position:relative}.expense-grid-cell.selected{background:#e8f0fe}.expense-grid-cell.editing{padding:4px}.expense-grid-cell-value{display:block;min-width:120px;min-height:32px;padding:6px 8px;font-size:.9rem;line-height:1.35;white-space:pre-wrap;word-break:break-word}.expense-grid-cell-input{border:1px solid #ddd;border-radius:6px;padding:6px 8px;min-width:120px;width:100%;font-size:.9rem;box-sizing:border-box}.expense-grid-cell-input:focus{border-color:var(--accent);outline:none}.expense-grid-row-label,.expense-grid-col-label{cursor:pointer;-webkit-user-select:none;user-select:none}.expense-grid-paste-msg{color:#b45309;margin-top:4px}.expense-grid-paste-msg:empty{display:none}.expense-grid-wrap--mobile .expense-grid-scroll{touch-action:pan-x pan-y;max-height:min(55vh,420px)}.expense-grid-wrap--mobile .expense-grid-cell{touch-action:manipulation;cursor:pointer}.expense-grid-wrap--mobile .expense-grid-cell.selected .expense-grid-cell-value{background:#e8f0fe}.expense-grid-wrap--mobile .expense-grid-cell-input{min-width:88px;min-height:40px;font-size:16px;padding:8px}.expense-grid-wrap--mobile .expense-grid-cell-value{min-width:88px;min-height:40px;font-size:16px}.expense-grid-wrap--mobile .expense-grid-row-label,.expense-grid-wrap--mobile .expense-grid-col-label{min-width:44px;min-height:44px;line-height:44px;padding:0;touch-action:manipulation}.expense-grid-wrap--mobile .expense-grid-corner{width:44px;min-width:44px}.expense-grid-wrap--mobile .expense-grid-toolbar-buttons button{min-height:40px;padding:8px 12px}.expense-grid-table{border-collapse:collapse;min-width:100%;width:max-content}.expense-grid-table th,.expense-grid-table td{border:1px solid #e5e7eb;padding:4px;vertical-align:middle}.expense-grid-table th{background:#f5f7fb;font-size:.8rem;color:#6b7280;font-weight:600}.expense-grid-corner{width:36px}.expense-grid-row-label,.expense-grid-col-label{text-align:center;transition:background .15s,color .15s}.expense-grid-row-label:hover,.expense-grid-col-label:hover{background:#e8eef8}.expense-grid-row-label.selected,.expense-grid-col-label.selected,.expense-grid-row-label.selected:hover,.expense-grid-col-label.selected:hover{background:var(--accent);color:#fff}.expense-grid-row-label{width:36px;min-width:36px}.expense-grid-context-menu{position:fixed;z-index:1200;min-width:180px;padding:4px 0;background:#fff;border:1px solid #d1d5db;border-radius:8px;box-shadow:0 8px 24px #0000001f}.expense-grid-context-menu button{display:block;width:100%;padding:8px 14px;border:none;background:transparent;text-align:left;font-size:.9rem;color:#1f2937;cursor:pointer}.expense-grid-context-menu button:hover:not(:disabled){background:#f3f4f6}.expense-grid-context-menu button:disabled{opacity:.45;cursor:not-allowed}.expense-grid-context-menu button.danger{color:#b91c1c}.expense-grid-context-menu button.danger:hover:not(:disabled){background:#fef2f2}.schedule-entry-context-menu{position:fixed;z-index:1200;min-width:160px;padding:4px 0;background:#fff;border:1px solid #d1d5db;border-radius:8px;box-shadow:0 8px 24px #0000001f}.schedule-entry-context-menu button{display:block;width:100%;padding:8px 14px;border:none;background:transparent;text-align:left;font-size:.9rem;color:#1f2937;cursor:pointer;font-family:inherit}.schedule-entry-context-menu button:hover:not(:disabled){background:#f3f4f6}.schedule-entry-context-menu button:disabled{opacity:.45;cursor:not-allowed}.schedule-entry-context-menu button.danger{color:#b91c1c}.schedule-entry-context-menu button.danger:hover:not(:disabled){background:#fef2f2}.expense-grid-map-palette{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-bottom:8px;padding:10px 12px;background:#f8fafc;border:1px dashed #cbd5e1;border-radius:8px}.expense-grid-map-palette-label{font-size:.85rem;color:#6b7280;font-weight:600}.expense-grid-map-chip{display:inline-flex;align-items:center;padding:6px 14px;border-radius:999px;font-size:.9rem;font-weight:600;cursor:grab;-webkit-user-select:none;user-select:none;border:2px solid transparent}.expense-grid-map-chip:active{cursor:grabbing}.expense-grid-map-chip.dragging{opacity:.55}.expense-grid-map-chip--date{background:#dbeafe;color:#1d4ed8;border-color:#93c5fd}.expense-grid-map-chip--desc{background:#dcfce7;color:#166534;border-color:#86efac}.expense-grid-map-chip--amount{background:#ffedd5;color:#c2410c;border-color:#fdba74}.expense-grid-col-label-inner{display:flex;flex-direction:column;align-items:center;gap:2px;line-height:1.2;padding:2px 0}.expense-grid-col-preview{font-size:.65rem;font-weight:500;max-width:72px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:inherit;opacity:.9}.expense-grid-map-badge{font-size:.65rem;font-weight:700;padding:1px 6px;border-radius:4px;line-height:1.3}.expense-grid-col-label.mapped-date:not(.selected){background:#dbeafe;color:#1e40af}.expense-grid-col-label.mapped-desc:not(.selected){background:#dcfce7;color:#166534}.expense-grid-col-label.mapped-amount:not(.selected){background:#ffedd5;color:#c2410c}.expense-grid-col-label.map-drop-target{box-shadow:inset 0 0 0 2px var(--accent)}.expense-grid-col-label.mapped-date .expense-grid-map-badge--date{background:#2563eb;color:#fff}.expense-grid-col-label.mapped-desc .expense-grid-map-badge--desc{background:#16a34a;color:#fff}.expense-grid-col-label.mapped-amount .expense-grid-map-badge--amount{background:#ea580c;color:#fff}.expense-grid-map-note{margin:8px 0 0}.expense-scan-title{margin:0 0 8px;font-size:16px;font-weight:600}.expense-scan-note{margin:0 0 12px;font-size:.85rem;color:#6b7280;line-height:1.5}.expense-scan-preview{margin:12px 0;text-align:center}.expense-scan-preview img{max-width:100%;max-height:240px;border-radius:8px;border:1px solid #e5e7eb}.expense-scan-warnings{margin:8px 0 0;padding-left:18px;font-size:.85rem;color:#b45309}.expense-scan-results{margin-top:16px;padding-top:16px;border-top:1px solid #eee;max-height:500px;overflow:auto}.expense-scan-results h3{margin:0 0 8px;font-size:15px}.expense-draft-list{display:flex;flex-direction:column;gap:10px;margin:0;padding:0;list-style:none}.expense-draft-item{display:flex;gap:10px;align-items:flex-start;padding:10px;border:1px solid #e5e7eb;border-radius:10px;background:#fafbfc}.expense-draft-check{padding-top:8px}.expense-draft-fields{display:grid;grid-template-columns:1fr;gap:8px;flex:1;min-width:0}.expense-draft-fields input{width:100%}.expense-dedup-fieldset{border:1px solid #e5e7eb;border-radius:10px;padding:12px 14px;margin:0 0 12px}.expense-dedup-legend{font-size:.9rem;font-weight:600;color:#374151;padding:0 4px}.expense-dedup-radio-group{display:flex;flex-direction:column;gap:10px}.expense-dedup-radio{display:flex;align-items:flex-start;gap:8px;font-size:.9rem;color:#374151;cursor:pointer;line-height:1.45}.expense-dedup-radio input{margin-top:3px;flex-shrink:0}.expense-scan-success{margin:8px 0;padding:10px 12px;border-radius:8px;background:#ecfdf5;color:#065f46;font-size:.9rem;line-height:1.45}.expense-draft-item.is-duplicate{background:#fff8f0;border-color:#fcd34d}.expense-draft-merge-badge{align-self:center;font-size:.75rem;font-weight:700;color:#1d4ed8;background:#dbeafe;padding:4px 8px;border-radius:999px;white-space:nowrap}.expense-draft-duplicate-badge{align-self:center;font-size:.75rem;font-weight:700;color:#b45309;background:#fef3c7;padding:4px 8px;border-radius:999px;white-space:nowrap}@media (min-width:600px){.expense-draft-fields{grid-template-columns:130px 1fr 100px}.expense-draft-item.is-duplicate{grid-template-columns:auto 1fr auto}}.empty{padding:12px;background:var(--card);border-radius:8px;text-align:center;opacity:0}.loading-spinner{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:#6b7280}.loading-spinner--inline{flex-direction:row;gap:8px}.loading-spinner--sm .loading-spinner-icon{width:14px;height:14px;border-width:2px}.loading-spinner--md .loading-spinner-icon{width:28px;height:28px;border-width:3px}.loading-spinner-icon{display:inline-block;border:3px solid #e5e7eb;border-top-color:var(--accent);border-radius:50%;animation:loading-spin .7s linear infinite;flex-shrink:0}.loading-spinner-label{font-size:.9rem;font-weight:600;color:#4b5563}@keyframes loading-spin{to{transform:rotate(360deg)}}.loading-block{display:flex;align-items:center;justify-content:center;padding:32px 16px;min-height:120px}.loading-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#ffffffc7;display:flex;align-items:center;justify-content:center;z-index:2000;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px)}.loading-overlay--scoped{position:absolute;top:0;right:0;bottom:0;left:0;z-index:30;border-radius:inherit}.busy-button{display:inline-flex;align-items:center;justify-content:center;gap:8px}.busy-button.is-busy{cursor:wait}.app-main{position:relative;min-height:120px}.expense-page{position:relative}.dashboard-summary-strip{display:flex;gap:12px;overflow-x:auto;padding-bottom:12px;margin-bottom:16px;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch}.dashboard-summary-card{min-width:170px;flex:0 0 auto;background:var(--card);padding:14px 16px;border-radius:12px;box-shadow:0 1px 4px #0000000f;border:1px solid rgba(0,0,0,.05)}.dashboard-summary-card-label{font-size:.8rem;color:#6b7280;margin-bottom:6px}.dashboard-summary-card-value{font-size:1.2rem;font-weight:700;color:#111}.dashboard-widget-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-flow:row;gap:3px;align-items:start;overflow-x:auto;padding:2px}.dashboard-widget{background:var(--card);border-radius:12px;padding:5px;position:relative;transition:box-shadow .2s ease,opacity .2s ease,border-color .2s ease;box-shadow:0 1px 4px #00000012;min-height:320px;height:49vh;overflow:auto;display:flex;flex-direction:column;align-items:center;touch-action:pan-y;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.dashboard-widget.widget-dragging{opacity:.95;box-shadow:inset 0 0 0 1000px #3871ff1f,0 12px 32px #1f5ae238;border:2px solid rgba(31,90,226,.75);outline:3px solid rgba(31,90,226,.35);background-color:#fffffffa}.dashboard-widget.widget-dragging:after{content:"移動中";position:absolute;top:12px;left:50%;transform:translate(-50%);background:#1f5ae2f2;color:#fff;padding:4px 10px;border-radius:999px;font-size:.78rem;z-index:2}.dashboard-widget.widget-drag-over{box-shadow:0 0 0 2px var(--accent),0 4px 16px #2d8cff2e}.widget-drag-handle{position:absolute;top:8px;right:10px;font-size:16px;color:#bbb;cursor:grab;-webkit-user-select:none;user-select:none;line-height:1;padding:2px 4px;border-radius:4px;visibility:hidden}.widget-drag-handle:active{cursor:grabbing}.dashboard-widget-donut,.dashboard-widget-calendar{height:100%;min-height:0;display:flex;flex-direction:column;align-items:center;width:100%}.dashboard-widget-donut{align-items:center;justify-content:space-between;gap:8px;padding-top:2px}.dashboard-widget-donut-chart{width:min(100%,280px);height:auto;aspect-ratio:1/1;flex:1 1 auto;min-height:0}.salary-donut-segment{transition:stroke-dasharray .85s cubic-bezier(.4,0,.2,1),stroke-dashoffset .85s cubic-bezier(.4,0,.2,1)}.salary-donut-segment--projected{opacity:.5}.salary-donut-labels{opacity:0;transition:opacity .45s ease .35s}.salary-donut-labels.is-visible{opacity:1}.salary-donut-label{font-size:20px;fill:#6b7280}.salary-donut-value{font-size:30px;font-weight:700;fill:#1f2937}.salary-donut-chart .salary-donut-label{font-size:clamp(13px,2.6vw,20px)}.salary-donut-chart .salary-donut-value{font-size:clamp(20px,4vw,30px)}@media (prefers-reduced-motion:reduce){.salary-donut-segment{transition:none}.salary-donut-labels{transition:none;opacity:1}}.dashboard-widget-calendar .shift-calendar{flex:1 1 auto;min-height:0;margin-bottom:0;padding:8px;width:100%;margin-left:auto;margin-right:auto;--calendar-shift-line-height:12px;--calendar-shift-line-border:rgba(15,23,42,.32);--calendar-shift-max-visible-lanes:2}.dashboard-widget-calendar .calendar-day-cell{overflow:hidden}.dashboard-widget-calendar .calendar-day{padding-bottom:4px}.dashboard-widget-calendar .calendar-day-cell.has-work-hours>.calendar-day{padding-bottom:4px}.dashboard-widget-calendar .calendar-grid{gap:0}.dashboard-widget-calendar .calendar-day{font-size:16px}.dashboard-widget-calendar .calendar-day-number{top:4px;left:6px;font-size:16px}.dashboard-widget-calendar .calendar-work-hours{margin-top:18px}.dashboard-widget-calendar .calendar-work-hours-time{font-size:8px}@container calendar-cell (max-width:90px){.dashboard-widget-calendar .calendar-work-hours-time{flex-direction:column;align-items:flex-start;gap:0;line-height:1.1}.dashboard-widget-calendar .calendar-work-hours-separator{line-height:1;font-size:7px}}.dashboard-widget-calendar .calendar-overtime-badge{font-size:7px;padding:0 3px;top:2px;right:2px}@container calendar-cell (max-width:90px){.dashboard-widget-calendar .calendar-overtime-badge-full{display:none}.dashboard-widget-calendar .calendar-overtime-badge-short{display:inline}}@media (max-width:1500px){.dashboard-widget-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.calendar-title-button{background:transparent;color:#333;border:none;padding:0;font-size:18px;font-weight:700;cursor:pointer}}@media (max-width:1300px){.dashboard-widget-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.calendar-title-summary{font-size:14px;color:#585f68;display:flex;align-items:center;gap:4px}.calendar-title-button{background:transparent;color:#333;border:none;padding:0;font-size:17px;font-weight:700;cursor:pointer}.calendar-day.has-shift .shift-mark-label{font-size:10px}.form{padding:8px 0 0}}@media (max-width:900px){.dashboard-widget-grid{grid-template-columns:1fr}.widget-drag-handle{font-size:20px;padding:4px 6px}.calendar-title-summary{font-size:12px;color:#585f68;display:flex;align-items:center;gap:4px}.calendar-title-button{background:transparent;color:#333;border:none;padding:0;font-size:16px;font-weight:700;cursor:pointer}.floating-menu-button{top:auto;left:auto;right:14px;bottom:30px}.hamburger-button{border-radius:50%;width:52px;height:52px;padding:12px 12px 12px 16px}.nav-drawer{position:fixed;left:0;right:0;bottom:0;height:320px;padding:16px;background:var(--card);box-shadow:0 -12px 32px #0000001f;transform:translateY(100%);transition:transform .25s ease,visibility .25s ease;display:flex;flex-direction:column;gap:12px;z-index:30;overflow-y:auto;border-top-left-radius:12px;border-top-right-radius:12px;visibility:hidden;pointer-events:none}.nav-drawer.open{transform:translateY(0);visibility:visible;pointer-events:auto}.drawer-backdrop{display:none;opacity:0;pointer-events:none}.drawer-backdrop.open{display:block;opacity:1;pointer-events:auto}.shift-layout{height:calc(100dvh - 10px);overflow:hidden;display:flex;flex-direction:column;gap:0}.shift-layout-calendar{flex:0 0 50%;max-height:50%;min-height:0;aspect-ratio:unset;position:relative;top:auto;height:auto;z-index:3;border-bottom:1px solid #e8edf5}.shift-layout-calendar .shift-calendar{margin-bottom:0;height:100%;--calendar-shift-line-height:18px;--calendar-shift-area-height:calc(var(--calendar-shift-line-height) * 3 + 4px);--calendar-shift-overlay-top:30px}.shift-layout-calendar .calendar-header{margin-bottom:6px}.shift-layout-calendar .calendar-day{padding:4px 4px 24px;font-size:15px}.shift-layout-detail{flex:0 0 50%;max-height:50%;min-height:0;display:flex;overflow:hidden;padding-right:0;touch-action:pan-y}.shift-layout-detail>.shift-day-panel{flex:1;min-height:0;display:flex;flex-direction:column;height:100%;touch-action:pan-y}.shift-day-header{position:sticky;top:0;z-index:2;background:var(--card);padding-bottom:8px;margin-bottom:0;flex-shrink:0}.shift-day-header h2{font-size:1rem}.shift-day-body{flex:1;overflow-y:auto;padding-top:8px;-ms-overflow-style:none;scrollbar-width:none;display:flex;flex-direction:column;min-height:0;touch-action:pan-y;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}.shift-day-empty{min-height:0}.day-time-schedule,.day-time-schedule-grid,.day-time-schedule-axis{touch-action:pan-y}.day-time-schedule{flex:0 0 auto}.day-time-schedule-grid{min-height:0;height:auto}.day-time-schedule-canvas{touch-action:pan-y}.day-time-schedule-block:not(.day-time-schedule-block--dragging){touch-action:pan-y}.shift-day-body::-webkit-scrollbar{display:none}.shift-day-item{cursor:pointer;touch-action:pan-y}.shift-day-item-content{flex-direction:column;align-items:flex-start}.shift-day-actions{display:none}.shift-day-list{margin:0;padding-bottom:12px}.calendar-day.has-shift .shift-mark-label{font-size:8px}.calendar-day{background:#f9f9fb;border:1px solid #eee;color:#333;cursor:pointer;position:relative;font-size:17px}}.drawer-role-badge{display:inline-block;margin-left:8px;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:600;background:#e8f0ff;color:#1d4ed8;vertical-align:middle}.user-roles-page{max-width:960px}.user-roles-lead{color:#6b7280;font-size:14px;margin:0 0 16px}.user-roles-table-wrap{overflow-x:auto}.user-roles-table{width:100%;border-collapse:collapse;font-size:14px}.user-roles-table th,.user-roles-table td{padding:10px 12px;border-bottom:1px solid #e5e7eb;text-align:left}.user-roles-table th{font-weight:600;color:#374151;background:#f9fafb}.user-roles-table select{min-width:140px;padding:6px 8px;border:1px solid #d1d5db;border-radius:6px}.success-banner{margin:0 0 12px;padding:10px 12px;border-radius:8px;background:#ecfdf5;color:#047857;font-size:14px}.login-pending{max-width:420px;margin:0 auto;text-align:center}.login-pending-message{font-size:16px;font-weight:600;color:#1f2937;margin:16px 0}.login-pending-hint{color:#6b7280;font-size:14px;line-height:1.6;margin:0 0 24px}.login-pending .logout-drawer-button{width:100%;max-width:240px;margin:0 auto}.user-approvals-page{max-width:960px}.user-approvals-lead{color:#6b7280;font-size:14px;margin:0 0 16px}.user-approvals-table-wrap{overflow-x:auto}
