:root{--indigo:#5b5fe0;--indigo-dark:#4a4ec9;--indigo-pale:#eef0fe;--bg:#f4f5fb;--card:#fff;--border:#e3e5f0;--text:#2f3240;--muted:#5d6070;--danger:#d64545;--warn-bg:#fff7e6;--warn-border:#f0c36d;--cell-bg:#f6f7fb;--cell-out-bg:#f1f2f8;--radius:14px}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Hiragino Sans,Hiragino Kaku Gothic ProN,Noto Sans JP,Yu Gothic UI,sans-serif;font-size:15px;line-height:1.6}.app-header{background:var(--indigo);color:#fff;padding:14px 16px}.app-header-inner{justify-content:space-between;align-items:center;gap:12px;max-width:1040px;margin:0 auto;display:flex}.app-title{font-size:19px;font-weight:700}.header-user{align-items:center;gap:10px;font-size:13px;display:flex}.header-name{opacity:.95;text-overflow:ellipsis;white-space:nowrap;max-width:40vw;overflow:hidden}.header-link{color:#fff;opacity:.95;white-space:nowrap;font-size:13px;text-decoration:none}.header-link:hover{text-decoration:underline}.btn-ghost{color:#fff;cursor:pointer;background:#ffffff24;border:1px solid #ffffff8c;border-radius:8px;padding:5px 12px;font-size:13px}.qr-box{border:1px solid var(--border);background:#fff;border-radius:10px;justify-content:center;margin:8px 0;padding:12px;display:flex}.qr-box svg{width:200px;height:200px}.btn-ghost:hover{background:#ffffff3d}.container{max-width:1040px;margin:0 auto;padding:16px}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:20px;box-shadow:0 1px 2px #282c5a0a}.card.narrow{width:100%;max-width:420px}.center-screen{background:var(--bg);justify-content:center;align-items:center;min-height:100dvh;padding:16px;display:flex}.page-title{margin:0 0 6px;font-size:17px}.muted{color:var(--muted)}.small{font-size:12px}.error-text{color:var(--danger);font-size:14px}.dimmed{opacity:.55;pointer-events:none}.btn-primary{background:var(--indigo);color:#fff;border:1px solid var(--indigo);cursor:pointer;border-radius:9px;padding:9px 18px;font-size:14px;font-weight:600}.btn-primary:hover{background:var(--indigo-dark)}.btn-primary:disabled{opacity:.55;cursor:not-allowed}.btn-primary.wide{width:100%;margin-top:6px}.btn-outline{color:var(--indigo);border:1.5px solid var(--indigo);cursor:pointer;background:#fff;border-radius:9px;padding:8px 14px;font-size:13.5px;font-weight:600}.btn-outline:hover{background:var(--indigo-pale)}.btn-outline:disabled{opacity:.55;cursor:not-allowed}.btn-sm{padding:5px 12px;font-size:12.5px}.btn-icon{padding:8px 12px;line-height:1}input[type=email],input[type=password],input[type=time],input[type=month],input[type=search],input[type=number],select,textarea{border:1px solid var(--border);color:var(--text);background:#fff;border-radius:9px;padding:8px 10px;font-family:inherit;font-size:14px}input:focus,select:focus,textarea:focus{outline:2px solid var(--indigo);outline-offset:1px;border-color:var(--indigo)}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,.cell:focus-visible{outline:2px solid var(--indigo);outline-offset:2px}textarea{resize:vertical;width:100%}.login-title{color:var(--indigo);margin:0;font-size:20px}.login-card .muted{margin-top:2px}.field-label{margin:14px 0 0;font-size:13px;font-weight:600;display:block}.field-label input{width:100%;margin-top:5px;display:block}.setup-steps{padding-left:20px}.setup-steps li{margin-bottom:6px}code{background:var(--cell-bg);border:1px solid var(--border);border-radius:5px;padding:1px 5px;font-size:.9em}.period-head{margin-top:14px}.period-label{font-size:15.5px;font-weight:700}.period-nav{flex-wrap:wrap;align-items:center;gap:8px;margin:12px 0 16px;display:flex}.month-input{width:140px}.search-input{flex:1;min-width:180px;margin-left:auto}.search-results{border:1px solid var(--border);border-radius:10px;margin-bottom:14px;overflow:hidden}.search-result{text-align:left;border:none;border-bottom:1px solid var(--border);cursor:pointer;background:#fff;align-items:baseline;gap:10px;width:100%;padding:9px 12px;font-size:13.5px;display:flex}.search-result:last-child{border-bottom:none}.search-result:hover{background:var(--indigo-pale)}.search-results>.muted{padding:10px 12px}.result-date{white-space:nowrap;font-weight:600}.result-summary{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.cal-head{grid-template-columns:repeat(7,1fr);gap:8px;margin-bottom:8px;display:grid}.cal-head-cell{text-align:center;color:var(--muted);font-size:13px;font-weight:600}.cal-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;display:grid}.cell{background:var(--cell-bg);min-height:74px;font:inherit;color:var(--text);text-align:left;cursor:pointer;border:1.5px solid #0000;border-radius:10px;flex-direction:column;gap:4px;padding:7px 8px;font-size:13px;display:flex;overflow:hidden}button.cell:hover{border-color:#c9ccef}.cell.selected{background:var(--indigo-pale);border-color:var(--indigo)}.cell.today .cell-date{color:var(--indigo)}.cell.out{background:var(--cell-out-bg);color:var(--muted);cursor:default;border:1.5px dashed #d8dbea}.cell-top{justify-content:space-between;align-items:baseline;gap:4px;display:flex}.cell-date{font-weight:700}.cell-dow{color:var(--muted);font-size:11.5px}.chips{flex-wrap:wrap;gap:3px;display:flex}.chip{white-space:nowrap;border-radius:6px;padding:3px 5px;font-size:10.5px;line-height:1}.chip-work{color:#3a4bbd;background:#e3e9ff}.chip-leave{color:#1f7a44;background:#e0f4e8}.chip-ot{color:#b25f12;background:#fdeede}.chip-abs{color:#b03030;background:#fde5e5}.chip-case{color:#5b3ec9;background:#e9e3ff}.chip-memo{color:#6b6f85;background:#eceef5}.day-editor{border:1px solid var(--border);border-radius:12px;margin-top:16px;padding:16px}.day-editor-head{justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px;display:flex}.day-editor-head h3{margin:0;font-size:15.5px}.editor-grid{grid-template-columns:1fr 1fr;gap:16px 24px;display:grid}.field{flex-direction:column;gap:6px;display:flex}.field.span2{grid-column:1/-1}.field-name{font-size:13px;font-weight:700}.check-label{cursor:pointer;align-items:center;gap:7px;font-size:14px;font-weight:700;display:inline-flex}.check-label input{width:17px;height:17px;accent-color:var(--indigo)}.time-row{flex-wrap:wrap;align-items:end;gap:12px;display:flex}.time-row label{flex-direction:column;gap:4px;font-size:12.5px;font-weight:600;display:flex}.hint{color:var(--muted);font-size:13px}.hint.warn{color:#a96a00}.field-error{color:var(--danger);font-size:12.5px;font-weight:600}.net-display{font-size:13.5px}.net-display strong{color:var(--indigo);font-size:15px}.hm-select{align-items:center;gap:6px;display:inline-flex}.hm-select .unit,.case-row .unit{font-size:13px}.case-row{align-items:center;gap:6px;display:inline-flex}.case-row input{width:90px}.editor-actions{flex-wrap:wrap;gap:10px;margin-top:16px;display:flex}.select-hint{text-align:center;border:1px dashed var(--border);border-radius:12px;margin-top:16px;padding:18px;font-size:13.5px}.totals{border-top:1px solid var(--border);flex-wrap:wrap;gap:8px 22px;margin-top:16px;padding-top:14px;font-size:13.5px;font-weight:600;display:flex}.totals strong{color:var(--indigo)}.warn-box{background:var(--warn-bg);border:1px solid var(--warn-border);color:#8a5a00;border-radius:10px;margin-top:14px;padding:10px 14px;font-size:13.5px;font-weight:600}.error-box{background:#fdf3f3;border:1px solid #f0c5c5;border-radius:10px;margin-bottom:14px;padding:14px}.toast{color:#fff;z-index:50;background:#33364a;border-radius:999px;padding:10px 20px;font-size:13.5px;position:fixed;bottom:28px;left:50%;transform:translate(-50%);box-shadow:0 4px 14px #14163240}.header-nav{gap:6px;display:flex}.header-nav a{color:#fff;white-space:nowrap;border:1px solid #ffffff73;border-radius:999px;padding:5px 13px;font-size:13px;text-decoration:none}.header-nav a.active{color:var(--indigo);background:#fff;font-weight:700}.admin-tabs{flex-wrap:wrap;gap:8px;margin-bottom:14px;display:flex}.admin-tabs a{color:var(--indigo);border:1.5px solid var(--indigo);background:#fff;border-radius:999px;padding:7px 16px;font-size:13.5px;font-weight:600;text-decoration:none}.admin-tabs a.active{background:var(--indigo);color:#fff}.lock-badge{color:#b03030;vertical-align:middle;background:#fde5e5;border-radius:999px;margin-left:10px;padding:2px 10px;font-size:12px;font-weight:700;display:inline-block}.banner-locked{color:#8a3030;background:#fdf3f3;border:1px solid #f0c5c5;border-radius:10px;margin-top:10px;padding:10px 14px;font-size:13.5px;font-weight:600}.plain-fieldset{border:0;min-inline-size:0;margin:0;padding:0}.table-scroll{overflow-x:auto}.data-table{border-collapse:collapse;width:100%;font-size:13.5px}.data-table th,.data-table td{border:1px solid var(--border);text-align:center;white-space:nowrap;padding:8px 10px}.data-table th{background:var(--cell-bg);font-weight:700}.data-table td.name-cell{text-align:left}.data-table tbody tr.clickable{cursor:pointer}.data-table tbody tr.clickable:hover{background:var(--indigo-pale)}.data-table tfoot td{background:#fafbff;font-weight:700}.form-grid{grid-template-columns:1fr 1fr;gap:14px 24px;display:grid}.info-box{background:var(--indigo-pale);border:1px solid #c9ccef;border-radius:10px;margin:10px 0 14px;padding:12px 14px;font-size:13.5px}.section-title{margin:0 0 8px;font-size:15px}.inline-actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.data-table tbody tr.selected-row{background:var(--indigo-pale)}.ok-text{color:#1f7a44;font-weight:700}.warn-text{color:#b25f12;font-weight:700}.leave-detail-grid{grid-template-columns:1fr 1fr;gap:20px;display:grid}.adj-form{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.leave-balance{margin-top:4px;font-size:12.5px}.leave-balance strong{color:var(--indigo);font-size:14px}.leave-balance.short strong{color:var(--danger)}@media (width<=640px){body{font-size:14px}.app-header{padding:10px 12px}.app-title{white-space:nowrap;font-size:15.5px}.header-user{gap:7px;font-size:12px}.header-name{max-width:26vw}.btn-ghost{white-space:nowrap;padding:4px 9px;font-size:12px}.container{padding:10px}.card{padding:12px}.cal-head,.cal-grid{gap:3px}.cal-head-cell{font-size:11.5px}.cell{border-width:1px;border-radius:7px;gap:2px;min-height:52px;padding:4px 3px;font-size:10px}.cell-dow{display:none}.chip{padding:2px 3px;font-size:8.5px}.editor-grid,.form-grid,.leave-detail-grid{grid-template-columns:1fr;gap:14px}.header-nav a{padding:4px 9px;font-size:12px}.admin-tabs a{padding:6px 12px;font-size:12.5px}.month-input{width:125px}.search-input{order:9;min-width:100%;margin-left:0}.totals{gap:6px 16px;font-size:12.5px}}
