:root{--bg: #f3f6f6;--card: #ffffff;--ink: #16242a;--muted: #5a6b71;--primary: #0f766e;--primary-dark: #0b5c55;--primary-ink: #ffffff;--primary-soft: #d6ece9;--accent: #0f766e;--warn: #b45309;--err: #b42318;--ok: #15803d;--line: #e2e8e8;--radius: 12px;--tap: 44px}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--ink);background:var(--bg);font-size:16px;line-height:1.45;-webkit-text-size-adjust:100%}h1,h2,h3{margin:0 0 .4em;line-height:1.2}h1{font-size:1.5rem}h2{font-size:1.3rem}h3{font-size:1.1rem}a{color:var(--primary)}.muted{color:var(--muted)}.small{font-size:.85rem}.center{text-align:center}.fullscreen{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:16px}.app{min-height:100vh;display:flex;flex-direction:column}.topbar{background:var(--primary);color:var(--primary-ink)}.topbar-inner{max-width:1000px;margin:0 auto;padding:10px 16px;display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px}.brand{font-weight:700;font-size:1.05rem}.nav{display:flex;gap:6px;flex:1;flex-wrap:wrap}.nav a{display:inline-flex;align-items:center;min-height:var(--tap);color:#d7e8e6;text-decoration:none;padding:6px 14px;border-radius:9px;font-size:.95rem;font-weight:600}.nav a.active,.nav a:hover{background:#ffffff2e;color:#fff}.user-box{display:flex;align-items:center;gap:10px;font-size:.85rem}.user-box .email{color:#cfe4e1}.content{max-width:1000px;width:100%;margin:0 auto;padding:20px 16px 60px}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:24px;width:100%;max-width:440px;box-shadow:0 2px 12px #0f3c370f}.login-card,.waiting-card,.onboarding-card{max-width:460px}.page{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:20px;box-shadow:0 1px 8px #0f3c370a}.page-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.section-title{margin-top:22px;display:flex;align-items:center;gap:8px}.stack{display:flex;flex-direction:column;gap:14px}.form-narrow{max-width:460px}label{display:flex;flex-direction:column;gap:6px;font-size:.9rem;font-weight:600;color:#36474d}input,select,textarea{font:inherit;font-size:1rem;min-height:var(--tap);padding:10px 12px;border:1px solid #c8d2d2;border-radius:10px;background:#fff;color:var(--ink);width:100%}textarea{min-height:88px}input:focus,select:focus,textarea:focus{outline:2px solid var(--primary);outline-offset:1px;border-color:var(--primary)}.row2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.check-label{flex-direction:row;align-items:center;gap:10px;font-weight:600;min-height:var(--tap);cursor:pointer}.check-label input{width:22px;height:22px;min-height:22px;flex:0 0 auto}.btn{font:inherit;font-weight:600;min-height:var(--tap);display:inline-flex;align-items:center;justify-content:center;padding:10px 18px;border-radius:10px;border:1px solid transparent;cursor:pointer}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-dark)}.btn-primary:disabled{opacity:.55;cursor:default}.btn-ghost{background:#eef2f2;color:var(--ink);border-color:#d6dede}.btn-ghost:hover{background:#e4eaea}.btn-sm{min-height:40px;padding:6px 12px;font-size:.9rem}.btn-link{background:none;border:none;color:var(--primary);cursor:pointer;font:inherit;font-weight:600;display:inline-flex;align-items:center;min-height:var(--tap);padding:6px 8px}.btn-link:hover{text-decoration:underline}.btn-link.danger{color:var(--err)}:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.btn-delete{font:inherit;font-weight:600;font-size:.85rem;color:var(--err);background:transparent;border:1px solid #e7b9b3;border-radius:9px;padding:6px 14px;min-height:38px;cursor:pointer;white-space:nowrap}.btn-delete:hover{background:#fceceb;border-color:var(--err)}.switch{display:inline-flex;border:1px solid #c8d2d2;border-radius:11px;overflow:hidden;margin-bottom:16px}.switch-btn{min-height:var(--tap);padding:9px 20px;border:none;background:#fff;cursor:pointer;font:inherit;font-weight:600;color:var(--muted)}.switch-btn.active{background:var(--primary);color:#fff}.filters{display:flex;flex-wrap:wrap;gap:14px;align-items:flex-end;margin:14px 0}.filters label{flex-direction:column}.month-nav{display:flex;align-items:center;gap:12px;margin:6px 0 16px}.month-nav .btn{min-width:var(--tap);padding:10px 14px;font-size:1.2rem;line-height:1}.month-label{font-weight:700;font-size:1.1rem;text-transform:capitalize;min-width:160px;text-align:center;flex:1}.totals-bar{display:flex;gap:12px;flex-wrap:wrap;margin:10px 0 18px}.total{background:#eef4f3;border:1px solid var(--line);border-radius:11px;padding:10px 14px;font-size:.9rem}.total-num{font-size:1.3rem;font-weight:700;color:var(--primary);margin-right:6px}.entry-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px}.entry{display:flex;gap:12px;align-items:baseline;padding:12px 14px;border:1px solid var(--line);border-radius:11px;flex-wrap:wrap}.entry-when{font-weight:600}.entry-detail{color:var(--muted)}.entry-tag,.ruolo-badge,.pill{display:inline-block;font-size:.74rem;font-weight:700;padding:3px 9px;border-radius:999px}.entry-tag{background:#e3efee;color:var(--primary)}.tag-ferie{background:#dcf3e4;color:#136c34}.tag-permesso{background:#fdecd2;color:#9a4a06}.tag-malattia{background:#f7ddd6;color:#9c3a1f}.tag-infortunio{background:#e9e0f5;color:#5b2ea6}.data-table{width:100%;border-collapse:collapse;margin-top:8px}.data-table th,.data-table td{text-align:left;padding:11px 10px;border-bottom:1px solid var(--line);font-size:.92rem}.data-table th{color:var(--muted);font-size:.8rem;text-transform:uppercase;letter-spacing:.03em}.row-actions{display:flex;gap:10px;white-space:nowrap}.row-waiting{background:#fff8ec}.data-table tr.entry-main-row td{border-bottom:none;padding-bottom:3px}.data-table tr.entry-trace-row td{padding:2px 10px 10px;border-bottom:1px solid var(--line);font-size:.82rem;color:var(--muted)}.trace-line{display:flex;align-items:center;justify-content:space-between;gap:14px}.trace-text{min-width:0}.ruolo-badge{background:#e3efee;color:var(--primary)}.badge-in_attesa{background:#fdecd2;color:#9a4a06}.badge-admin{background:#ece3f7;color:#5b2ea6}.badge-capo_reparto{background:#dcf3e4;color:#136c34}.pill{background:var(--warn);color:#fff}.worker-form{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:12px}.worker-form input{width:auto;flex:1 1 140px}.worker-form select{width:auto}.notice{padding:11px 13px;border-radius:10px;font-size:.92rem}.notice-ok{background:#e7f5ec;color:var(--ok);border:1px solid #b8e2c4}.notice-err{background:#fdeae8;color:var(--err);border:1px solid #f1bdb7}.notice-warn{background:#fdf0dc;color:var(--warn);border:1px solid #f0d6a6}.spinner{width:30px;height:30px;border:3px solid #cfdcdb;border-top-color:var(--primary);border-radius:50%;margin:0 auto 10px;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.print-only{display:none}@media print{body{background:#fff}.no-print{display:none!important}.app,.content,.page{all:unset}.print-only{display:block}.print-report{color:#000;font-size:12px}.print-header h1{font-size:18px;margin-bottom:4px}.print-meta{display:flex;flex-wrap:wrap;gap:4px 18px;margin-bottom:10px}.print-table{width:100%;border-collapse:collapse}.print-table th,.print-table td{border:1px solid #999;padding:5px 7px;text-align:left}.print-table th{background:#eee}.print-table tr.print-note-row td{border-top:none;padding:1px 7px 5px;font-size:9px;color:#666}.print-totals{display:flex;gap:24px;margin-top:12px;font-weight:600}.print-footer{margin-top:24px;font-size:10px;color:#555;border-top:1px solid #ccc;padding-top:6px}}@media (max-width: 700px){.topbar-inner{padding:10px 14px}.brand{flex:1 1 auto}.user-box{order:1}.nav{order:2;flex-basis:100%;gap:6px}.nav a{flex:1 1 auto;justify-content:center;background:#ffffff1a}.nav a.active,.nav a:hover{background:#ffffff38}.content{padding:16px 12px 56px}.page{padding:16px 14px}.filters{flex-direction:column;align-items:stretch;gap:12px}.filters label{width:100%}.switch{display:flex;width:100%;margin-bottom:18px}.switch-btn{flex:1;padding:9px 8px}.worker-form{flex-direction:column;align-items:stretch}.worker-form input,.worker-form select{width:100%;flex:none}.month-label{min-width:0}}@media (max-width: 700px){.data-table{display:block;margin-top:4px}.data-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.data-table tbody,.data-table tr{display:block}.data-table>tbody>tr,.entries-table tbody.entry-group{border:1px solid var(--line);border-radius:14px;background:var(--card);margin-bottom:12px;padding:4px 2px;box-shadow:0 1px 5px #0f3c370d}.entries-table tbody.entry-group tr{border:none;background:transparent;margin:0;padding:0;box-shadow:none}.data-table td{display:flex;justify-content:space-between;align-items:baseline;gap:14px;border:none;padding:9px 14px;font-size:1rem;text-align:right;overflow-wrap:anywhere}.data-table td:before{content:attr(data-label);flex:0 0 38%;text-align:left;font-weight:700;color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.03em}.data-table td[data-label=""]:before,.data-table td:not([data-label]):before{display:none}.data-table td.cell-actions{display:flex;gap:10px;padding:10px 14px 12px;border-top:1px solid var(--line);margin-top:2px;text-align:left}.data-table td.cell-actions:before{display:none}.data-table td.cell-actions>*,.data-table td.cell-actions .row-actions{flex:1}.data-table td.cell-actions select{width:100%}.data-table td.cell-actions .btn-link{justify-content:center;border:1px solid var(--line);border-radius:9px;flex:1}.data-table td.cell-actions .btn-link.danger{border-color:#e7b9b3}.entries-table .entry-trace-row td{display:block;padding:10px 14px 12px;border-top:1px solid var(--line);border-bottom:none;margin-top:2px}.trace-line{flex-wrap:wrap;gap:10px}.trace-text{flex:1 1 100%}.btn-delete{width:100%;min-height:var(--tap)}.row2{grid-template-columns:1fr}.user-box .email{display:none}.totals-bar{gap:10px}.total{flex:1 1 140px}}
