:root{--bg:#f4f6fa;--surface:#fff;--soft:#f8f9fc;--text:#171a24;--muted:#6f7482;--line:#e6e8ef;--primary:#5f6fff;--danger:#c84452;--shadow:0 14px 45px rgba(26,31,55,.07);--radius:18px}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,system-ui,-apple-system,"Segoe UI",sans-serif}.app{display:grid;grid-template-columns:250px minmax(0,1fr);min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;padding:26px 20px;background:#171a24;color:#fff;display:flex;flex-direction:column}.brand{display:flex;gap:12px;align-items:center;margin-bottom:32px}.logo{width:42px;height:42px;border-radius:13px;display:grid;place-items:center;font-weight:800;background:linear-gradient(135deg,#6676ff,#a77cff)}.brand strong,.brand small{display:block}.brand small{color:#9298a7;margin-top:3px}.sidebar nav{display:grid;gap:8px}.nav{border:0;padding:12px 14px;border-radius:12px;text-align:left;background:transparent;color:#b9beca;font:inherit;cursor:pointer}.nav:hover,.nav.active{color:#fff;background:rgba(255,255,255,.09)}.sidebar-bottom{margin-top:auto;color:#9298a7;font-size:.8rem}.sidebar-bottom p{line-height:1.45}main{padding:30px;overflow:hidden}header{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:24px}h1,h2,h3,p{margin-top:0}h1{margin-bottom:0;font-size:2rem}h2{margin-bottom:0}h3{margin-bottom:16px}.eyebrow{margin-bottom:5px;color:var(--muted);font-size:.72rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase}.muted{color:var(--muted)}.view{display:none}.view.active{display:block}.card{border:1px solid rgba(230,232,239,.9);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow)}.btn{min-height:42px;border-radius:11px;padding:10px 15px;font-weight:800;cursor:pointer}.primary{border:1px solid var(--primary);color:#fff;background:var(--primary)}.secondary{border:1px solid var(--line);background:#fff;color:var(--text)}.link{border:0;background:none;color:var(--primary);font:inherit;font-weight:800;cursor:pointer;padding:0}.danger{color:#ff7a86}.timer{padding:26px;display:grid;grid-template-columns:.7fr 1.3fr;gap:28px;align-items:center}.timer h2{font-size:clamp(2.4rem,6vw,4rem);margin-bottom:7px;font-variant-numeric:tabular-nums}.timer-fields{display:grid;grid-template-columns:1fr 1fr 1.4fr auto;gap:10px;align-items:end}.kpis{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin:16px 0}.kpi{padding:18px}.kpi span{display:block;color:var(--muted);font-size:.78rem;margin-bottom:8px}.kpi strong{font-size:1.45rem}.grid.two{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px}.panel{padding:20px;min-height:310px}.section-title{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:16px}.section-title.big{margin:2px 0 20px}.section-title h3{margin:0}.filters,.actions{display:flex;gap:9px}.filter-card{padding:14px;margin-bottom:14px}.bars{display:grid;gap:13px}.bar-head{display:flex;justify-content:space-between;font-size:.85rem;margin-bottom:6px}.bar-track{height:9px;background:#eef0f5;border-radius:99px;overflow:hidden}.bar-fill{height:100%;border-radius:inherit}.entry-row{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;padding:12px 0;border-bottom:1px solid var(--line)}.entry-row:last-child{border-bottom:0}.dot{width:11px;height:11px;border-radius:50%}.entry-row strong,.entry-row span{display:block}.entry-row span{color:var(--muted);font-size:.79rem;margin-top:3px}.duration{font-weight:800}.cards-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px}.entity-card{padding:20px}.entity-top{display:flex;justify-content:space-between;gap:12px}.avatar{width:45px;height:45px;border-radius:14px;display:grid;place-items:center;color:#fff;font-weight:800}.entity-card h3{margin:15px 0 4px}.entity-card .meta{color:var(--muted);font-size:.83rem;min-height:36px}.metrics{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:15px}.metric{background:var(--soft);border-radius:12px;padding:11px}.metric span{display:block;color:var(--muted);font-size:.7rem}.metric strong{display:block;margin-top:4px}.card-actions{display:flex;gap:8px;margin-top:14px}.filters select,.filter-card select{min-width:170px}.filter-card{display:flex;gap:10px}.table-card{padding:20px}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;min-width:900px}th,td{padding:12px 9px;border-bottom:1px solid var(--line);font-size:.82rem;text-align:left}th{color:var(--muted);font-size:.7rem;text-transform:uppercase}.pill{display:inline-flex;align-items:center;gap:7px;padding:6px 9px;border-radius:999px;background:var(--soft);white-space:nowrap}.row-actions{display:flex;gap:5px}.row-actions button{border:0;background:none;color:var(--muted);cursor:pointer}.row-actions .delete:hover{color:var(--danger)}label{display:grid;gap:7px;color:#4d5260;font-size:.8rem;font-weight:700}input,select,textarea{width:100%;border:1px solid var(--line);border-radius:11px;padding:10px 11px;background:#fff;color:var(--text);font:inherit;outline:none}input:focus,select:focus,textarea:focus{border-color:var(--primary);box-shadow:0 0 0 4px rgba(95,111,255,.12)}dialog{width:min(520px,calc(100vw - 24px));border:0;border-radius:19px;padding:0;box-shadow:0 28px 90px rgba(20,25,45,.25)}dialog::backdrop{background:rgba(15,19,30,.58);backdrop-filter:blur(4px)}.modal{padding:23px;display:grid;gap:15px}.modal-head{display:flex;justify-content:space-between;align-items:flex-start}.modal-head h2{margin:0}.close{border:0;background:none;font-size:1.7rem;color:var(--muted);cursor:pointer}.row{display:grid;grid-template-columns:1fr 1fr;gap:11px}.modal-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:5px}.empty{padding:38px;text-align:center;color:var(--muted)}.hidden{display:none!important}.toast{position:fixed;right:22px;bottom:22px;background:#171a24;color:#fff;padding:13px 16px;border-radius:12px;box-shadow:var(--shadow);opacity:0;transform:translateY(10px);transition:.2s;pointer-events:none}.toast.show{opacity:1;transform:none}canvas{max-width:100%}@media(max-width:1150px){.timer{grid-template-columns:1fr}.timer-fields{grid-template-columns:1fr 1fr}.timer-fields .btn{grid-column:1/-1}.kpis{grid-template-columns:repeat(3,1fr)}.cards-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:820px){.app{grid-template-columns:1fr}.sidebar{position:static;height:auto}.sidebar nav{grid-template-columns:repeat(5,1fr)}.nav{text-align:center;padding:10px 6px;font-size:.78rem}.sidebar-bottom{display:none}main{padding:17px}.grid.two{grid-template-columns:1fr}.kpis{grid-template-columns:repeat(2,1fr)}.cards-grid{grid-template-columns:1fr}.filters,.filter-card{flex-direction:column}.filters select,.filter-card select{min-width:0}.section-title.big{align-items:flex-start;flex-direction:column}}@media(max-width:540px){header .btn{display:none}.timer-fields,.row{grid-template-columns:1fr}.kpis{grid-template-columns:1fr}.sidebar nav{grid-template-columns:repeat(3,1fr)}}
/* Parallele Mitarbeiter-Timer */
.parallel-timer{margin-bottom:14px}.timer-intro h2{font-size:clamp(1.8rem,4vw,2.8rem);margin-bottom:8px}.active-timers{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-bottom:16px}.active-timer-card{padding:18px;display:grid;grid-template-columns:auto 1fr auto;gap:14px;align-items:center;border-left:5px solid var(--timer-color,#5f6fff)}.timer-avatar{width:46px;height:46px;border-radius:14px;display:grid;place-items:center;color:#fff;font-weight:800;background:var(--timer-color,#5f6fff)}.active-timer-card h3{margin:0 0 3px}.active-timer-card p{margin:0;color:var(--muted);font-size:.8rem}.active-timer-clock{font-size:1.45rem;font-weight:850;font-variant-numeric:tabular-nums;text-align:right}.stop-timer-btn{margin-top:7px;min-height:35px;padding:7px 11px;border-color:#d94d5b;background:#d94d5b;color:#fff}.no-active-timers{padding:18px;color:var(--muted);text-align:center;border:1px dashed var(--line);border-radius:var(--radius);background:rgba(255,255,255,.55)}
@media(max-width:1000px){.active-timers{grid-template-columns:1fr}}@media(max-width:620px){.active-timer-card{grid-template-columns:auto 1fr}.active-timer-actions{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between}.active-timer-clock{text-align:left}.stop-timer-btn{margin-top:0}}

.nav-badge{float:right;min-width:22px;padding:2px 6px;border-radius:999px;background:rgba(255,255,255,.13);color:#fff;text-align:center;font-size:.7rem}.finance-kpis{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin:16px 0}.finance-kpi{padding:19px;position:relative;overflow:hidden}.finance-kpi span{display:block;color:var(--muted);font-size:.78rem;margin-bottom:8px}.finance-kpi strong{display:block;font-size:1.5rem}.finance-kpi small{display:block;color:var(--muted);font-size:.7rem;margin-top:6px}.finance-kpi.accent{background:linear-gradient(135deg,#5f6fff,#7d67db);color:#fff}.finance-kpi.accent span,.finance-kpi.accent small{color:rgba(255,255,255,.76)}.finance-kpi.positive strong{color:#16866c}.finance-kpi.negative strong{color:var(--danger)}.compact-kpis{margin-top:0}.archive-info{padding:16px 20px;margin-bottom:16px;color:var(--muted)}.status-chip{display:inline-flex;padding:5px 9px;border-radius:999px;background:#e8f7f2;color:#167c65;font-size:.72rem;font-weight:800}.completed-card{opacity:.92}.completed-card .avatar{filter:saturate(.55)}.balances-grid{grid-template-columns:1.15fr .85fr;gap:16px;margin-bottom:16px}.balance-panel{display:grid;grid-template-columns:1fr 1fr;gap:25px;align-items:center}.balance-form{display:grid;gap:12px}.finance-page-kpis{margin-top:0}.finance-tables .table-card{min-height:410px}.finance-tables table{min-width:580px}.amount-positive{color:#16866c;font-weight:800}.amount-negative{color:var(--danger);font-weight:800}.channel-chip{display:inline-flex;padding:5px 8px;border-radius:999px;background:var(--soft);font-size:.75rem;font-weight:700}.timer-project-warning{color:#d88418;font-size:.72rem}.active-timer-card{position:relative}.active-timer-card .timer-live{font-variant-numeric:tabular-nums}.entity-top-actions{display:flex;gap:6px}.success-button{border-color:#b7dfd3!important;color:#167c65!important;background:#effaf6!important}@media(max-width:1200px){.finance-kpis{grid-template-columns:repeat(3,1fr)}}@media(max-width:900px){.balances-grid{grid-template-columns:1fr}.balance-panel{grid-template-columns:1fr}.finance-kpis{grid-template-columns:repeat(2,1fr)}}@media(max-width:540px){.finance-kpis{grid-template-columns:1fr}}

.project-metrics{grid-template-columns:repeat(2,1fr)}.total-metric{background:#eef0ff}.total-metric strong{color:var(--primary)}.materials-modal{width:min(820px,calc(100vw - 24px))}.material-form{display:grid;grid-template-columns:2fr .7fr 1fr auto;gap:10px;align-items:end}.materials-table{max-height:360px}.materials-footer{display:flex;justify-content:flex-end;align-items:center;gap:20px;padding:15px;border-radius:12px;background:var(--soft);font-size:1rem}.materials-footer strong{font-size:1.35rem}.material-hint{margin:0;text-align:right;font-size:.8rem}@media(max-width:760px){.material-form{grid-template-columns:1fr}.project-metrics{grid-template-columns:1fr 1fr}}

/* Fix: material dialog width must be applied to the dialog itself. */
#materialsDialog {
  width: min(820px, calc(100vw - 32px));
  max-width: 820px;
  overflow: hidden;
}

#materialsDialog .materials-modal {
  width: 100%;
  max-width: none;
  min-width: 0;
}

#materialsDialog .material-form > *,
#materialsDialog .modal-head > * {
  min-width: 0;
}

#materialsDialog .materials-table {
  width: 100%;
  overflow-x: auto;
}

#materialsDialog .materials-table table {
  min-width: 650px;
}

@media (max-width: 760px) {
  #materialsDialog {
    width: calc(100vw - 20px);
  }

  #materialsDialog .materials-modal {
    padding: 18px;
  }

  #materialsDialog .material-form {
    grid-template-columns: 1fr;
  }

  #materialsDialog .material-form .btn {
    width: 100%;
  }

  #materialsDialog .materials-footer {
    justify-content: space-between;
  }

  #materialsDialog .material-hint {
    text-align: left;
  }
}

/* Projektkarten: Aktionsbuttons sicher innerhalb der Karte halten */
.entity-card {
  min-width: 0;
  overflow: hidden;
}

.card-actions {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  width: 100%;
}

.card-actions .btn {
  width: 100%;
  min-width: 0;
  padding-left: 10px;
  padding-right: 10px;
  white-space: nowrap;
}

@media (max-width: 420px) {
  .card-actions {
    grid-template-columns: 1fr;
  }
}
