:root{--bg: #f3f5f9;--surface: #ffffff;--surface-2: #eef1f6;--border: #dde3ea;--text: #15192b;--muted: #646d7c;--brand: #2554c7;--brand-ink: #1c3f9c;--brand-contrast: #ffffff;--teal: #0d9488;--amber: #b45309;--amber-bg: #fef3e2;--amber-border: #f3d9a8;--danger: #dc2626;--danger-bg: #fdecec;--success: #15803d;--shadow: 0 1px 2px rgba(20, 24, 40, .04), 0 8px 20px -8px rgba(20, 24, 40, .1);--ring: rgba(37, 84, 199, .22);--radius: 10px}@media(prefers-color-scheme:dark){:root{--bg: #0f1218;--surface: #171b24;--surface-2: #1e232d;--border: #2a3140;--text: #e7eaf1;--muted: #92a0b3;--brand: #5b8df9;--brand-ink: #a9c4ff;--brand-contrast: #0b1220;--teal: #2dd4bf;--amber: #fbbf24;--amber-bg: #2a2010;--amber-border: #4a3a16;--danger: #f87171;--danger-bg: #2a1616;--success: #4ade80;--shadow: 0 1px 2px rgba(0, 0, 0, .3), 0 10px 24px -10px rgba(0, 0, 0, .55);--ring: rgba(91, 141, 249, .3)}}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,sans-serif;-webkit-font-smoothing:antialiased}button,input,select{font-family:inherit;font-size:.95rem}.icon{flex-shrink:0}.app{display:flex;flex-direction:column;min-height:100vh}.topbar{display:flex;align-items:center;gap:1.25rem;padding:.65rem 1.25rem;background:var(--surface);border-bottom:1px solid var(--border);flex-wrap:wrap}.brand{display:flex;align-items:center;gap:.55rem}.brand-icon{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:9px;background:linear-gradient(145deg,var(--brand),var(--brand-ink));color:var(--brand-contrast)}.brand h1{font-size:1.05rem;margin:0;font-weight:700;letter-spacing:-.01em}.topbar nav{display:flex;gap:.3rem}.topbar nav button{background:none;border:none;padding:.45rem .75rem;border-radius:7px;cursor:pointer;color:var(--muted);display:flex;align-items:center;gap:.4rem;font-weight:500;transition:background .15s,color .15s}.topbar nav button:hover{background:var(--surface-2);color:var(--text)}.topbar nav button.active{background:var(--brand);color:var(--brand-contrast)}.who{margin-left:auto;display:flex;align-items:center;gap:.7rem}.user-chip{display:flex;align-items:center;gap:.5rem;font-size:.88rem}.user-name{font-weight:600}.user-email{color:var(--muted);font-size:.8rem}main{padding:1.25rem;max-width:1240px;width:100%;margin:0 auto}.page-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:.9rem;flex-wrap:wrap}.page-header h2{display:flex;align-items:center;gap:.5rem;margin:0;font-size:1.2rem}.back-link{display:inline-flex;align-items:center;gap:.3rem;margin-bottom:.75rem;color:var(--muted);background:none;border:none;cursor:pointer;padding:0;font-size:.88rem}.back-link:hover{color:var(--text)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.1rem;margin-bottom:1rem;box-shadow:var(--shadow)}.card h3{display:flex;align-items:center;gap:.5rem;margin:0 0 .75rem;font-size:1rem}.error{color:var(--danger);background:var(--danger-bg);border-radius:7px;padding:.5rem .7rem;display:inline-block}.notice{color:var(--success);background:color-mix(in srgb,var(--success) 14%,transparent);border-radius:7px;padding:.5rem .7rem;display:inline-block}button{background:var(--brand);color:var(--brand-contrast);border:none;border-radius:7px;padding:.5rem .95rem;cursor:pointer;display:inline-flex;align-items:center;gap:.45rem;font-weight:600;transition:filter .15s,background .15s}button:hover:not(:disabled){filter:brightness(1.08)}button.secondary{background:var(--surface-2);color:var(--text);font-weight:500}button.link{background:none;color:var(--brand);padding:0;text-decoration:none;font-weight:500}button.link:hover{text-decoration:underline}button.link.danger{color:var(--danger)}button:disabled{opacity:.55;cursor:default;filter:none}.icon-btn{background:none;color:var(--muted);border:1px solid transparent;border-radius:7px;padding:.35rem;display:inline-flex;align-items:center;justify-content:center}.icon-btn:hover:not(:disabled){background:var(--surface-2);color:var(--text);filter:none}.icon-btn.danger:hover:not(:disabled){background:var(--danger-bg);color:var(--danger)}input,select{padding:.45rem .6rem;border:1px solid var(--border);border-radius:7px;background:var(--surface);color:var(--text)}input:focus,select:focus{outline:2px solid var(--ring);outline-offset:1px;border-color:var(--brand)}.form{display:flex;flex-direction:column;gap:.65rem;max-width:420px}.form.inline{flex-direction:row;align-items:flex-end;flex-wrap:wrap;max-width:none}.form label{display:flex;flex-direction:column;gap:.3rem;font-size:.85rem;color:var(--muted);font-weight:500}.field-hint{font-size:.78rem;color:var(--muted);font-weight:400}.form-actions{display:flex;gap:.5rem}.autocomplete{position:relative}.autocomplete input{width:100%}.autocomplete-results{position:absolute;z-index:10;top:calc(100% + 4px);left:0;right:0;background:var(--surface);border:1px solid var(--border);border-radius:8px;list-style:none;margin:0;padding:.3rem;max-height:220px;overflow-y:auto;box-shadow:var(--shadow)}.autocomplete-results li{padding:.45rem .6rem;border-radius:6px;cursor:pointer;display:flex;flex-direction:column;gap:.1rem}.autocomplete-results li:hover{background:var(--surface-2)}.autocomplete-results .autocomplete-hint{color:var(--muted);font-size:.8rem;cursor:default}.autocomplete-results .autocomplete-hint:hover{background:none}.ac-name{font-weight:600;font-size:.9rem}.ac-meta{font-size:.78rem;color:var(--muted)}.login-screen{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:1rem;background:radial-gradient(circle at 20% 20%,color-mix(in srgb,var(--brand) 10%,transparent),transparent 55%),radial-gradient(circle at 85% 80%,color-mix(in srgb,var(--teal) 10%,transparent),transparent 55%),var(--bg)}.login-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:2rem;width:100%;max-width:380px;display:flex;flex-direction:column;gap:.9rem;box-shadow:var(--shadow)}.login-brand{display:flex;flex-direction:column;align-items:center;gap:.6rem;margin-bottom:.3rem}.login-brand .brand-icon{width:48px;height:48px;border-radius:13px}.login-card h1{font-size:1.15rem;margin:0;text-align:center}.login-card .hint{color:var(--muted);margin:0;font-size:.85rem;text-align:center}.login-card label{display:flex;flex-direction:column;gap:.3rem;font-size:.88rem;font-weight:500}.login-card button[type=submit]{justify-content:center;padding:.6rem}.badge{display:inline-flex;align-items:center;gap:.35rem;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:.22rem .55rem;border-radius:999px}.badge-plant{background:color-mix(in srgb,var(--teal) 16%,transparent);color:var(--teal)}.badge-team{background:color-mix(in srgb,var(--brand) 14%,transparent);color:var(--brand)}.badge-admin{background:color-mix(in srgb,var(--amber) 18%,transparent);color:var(--amber)}.avatar{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;color:#fff;font-weight:700;flex-shrink:0;line-height:1;overflow:hidden}.avatar img{width:100%;height:100%;object-fit:cover}.person{display:flex;align-items:center;gap:.5rem}.person-name{font-weight:600}.photo-upload{position:relative;display:inline-flex}.photo-upload input[type=file]{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer}.unit-name{font-weight:700;display:block;margin-top:.1rem}.week-scroll{overflow-x:auto}.week-table{display:flex;flex-direction:column;gap:.6rem;min-width:800px}.week-head,.week-row{display:grid;grid-template-columns:minmax(170px,1.4fr) repeat(7,minmax(120px,1fr))}.week-head-cell{padding:.3rem .4rem;display:flex;flex-direction:column;align-items:center;gap:.15rem}.week-head-cell.today{color:var(--brand)}.week-weekday{font-size:.7rem;font-weight:700;text-transform:uppercase;color:var(--muted);letter-spacing:.03em}.week-head-cell.today .week-weekday{color:var(--brand)}.week-daynum{font-weight:700;font-size:1rem}.week-row{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.week-row-unit{display:flex;align-items:center;gap:.5rem;min-width:0;padding:.9rem;font-weight:600;font-size:.88rem;border:none;background:none;cursor:pointer;text-align:left;color:var(--text)}.week-row-unit:hover{background:var(--surface-2)}.week-day-cell{display:flex;align-items:center;min-width:0;min-height:76px;padding:.9rem .7rem;border:none;border-left:1px solid var(--border);background:none;cursor:pointer;color:var(--text);font:inherit;text-align:left}.week-day-cell:hover{background:var(--surface-2)}.week-day-cell.today{background:color-mix(in srgb,var(--brand) 7%,var(--surface))}.week-day-cell .person{min-width:0}.week-day-cell .person-name{font-size:.82rem;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.week-grid-empty{color:var(--muted)}.unit-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.55rem}.unit-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem 1rem}.unit-link{background:none;border:none;color:var(--text);display:flex;align-items:center;gap:.75rem;cursor:pointer;padding:0;text-align:left;flex:1}.unit-link-icon{display:flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:9px;background:var(--surface-2);color:var(--muted);flex-shrink:0}.unit-link-text{display:flex;flex-direction:column;gap:.3rem}.unit-responsible{font-size:.82rem;color:var(--muted);display:flex;align-items:center;gap:.3rem}.row-actions{display:flex;gap:.2rem}.members-table{width:100%;border-collapse:collapse;margin-bottom:.85rem}.members-table th{text-align:left;padding:.5rem .6rem;font-size:.75rem;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);border-bottom:1px solid var(--border)}.members-table td{text-align:left;padding:.55rem .6rem;border-bottom:1px solid var(--border);font-size:.9rem;vertical-align:middle}.members-table .meta-cell{color:var(--muted);display:flex;align-items:center;gap:.35rem;font-size:.85rem}.month-nav{display:flex;align-items:center;gap:.4rem;font-weight:600}.month-nav span{min-width:9.5rem;text-align:center}.calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;margin-bottom:.85rem}.calendar-weekday{font-size:.72rem;font-weight:700;color:var(--muted);text-align:center;padding:.2rem;text-transform:uppercase;letter-spacing:.03em}.calendar-cell{background:var(--surface-2);border:1px solid var(--border);border-radius:8px;padding:.4rem;min-height:78px;min-width:0;display:flex;flex-direction:column;gap:.3rem;font-size:.8rem}.calendar-cell.empty{background:none;border:none}.calendar-cell.today{border-color:var(--brand);box-shadow:0 0 0 1px var(--brand) inset}.calendar-cell select{width:100%;min-width:0;font-size:.72rem;padding:.15rem;text-overflow:ellipsis}.day-number{font-weight:700}.calendar-cell.today .day-number{color:var(--brand)}.day-assignee{display:flex;align-items:center;gap:.3rem;overflow:hidden}.day-assignee .person-name{font-size:.75rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}.day-assignee.empty{color:var(--muted);font-style:italic}@media(max-width:480px){main{padding:.8rem}.calendar-cell{min-height:60px;font-size:.7rem;padding:.3rem}.month-nav span{min-width:7rem}}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a0d1480;display:flex;align-items:center;justify-content:center;padding:1rem;z-index:50}.modal{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);width:100%;max-width:380px;max-height:90vh;overflow-y:auto}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.9rem 1.1rem;border-bottom:1px solid var(--border)}.modal-head h3{margin:0;font-size:1.02rem}.modal-body{padding:1.1rem;display:flex;flex-direction:column;gap:.9rem}.modal-person-head{display:flex;align-items:center;gap:.9rem}.modal-person-info{display:flex;flex-direction:column;gap:.2rem}.modal-person-head .person-name{font-size:1.1rem}.modal-fields{display:flex;flex-direction:column;gap:.6rem}.modal-field{display:flex;align-items:center;gap:.55rem;font-size:.9rem}.modal-field .icon{color:var(--muted);flex-shrink:0}.modal-field a{color:var(--brand);text-decoration:none}.modal-field a:hover{text-decoration:underline}.modal-field-label{color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.03em;display:block}
