.tpap-app{
  --tpap-bg:#202020;
  --tpap-surface:#272727;
  --tpap-surface-raised:#313131;
  --tpap-border:#3d3d3d;
  --tpap-text-hi:#f1f0ee;
  --tpap-text-lo:#8f8f8f;
  --tpap-orange:#f08708;
  --tpap-orange-hover:#ff9c2e;
  --tpap-green:#4caf7a;
  --tpap-amber:#d8b400;
  --tpap-red:#d85c4d;
  --tpap-radius:6px;
  background:var(--tpap-bg);
  color:var(--tpap-text-hi);
  font-family:"IBM Plex Sans", system-ui, sans-serif;
  padding:28px 20px 36px;
  border-radius:10px;
  max-width:1040px;
  margin:0 auto;
  box-sizing:border-box;
}
.tpap-app *{ box-sizing:border-box; }
.tpap-app a{ color:var(--tpap-orange); }
.tpap-app button{ font-family:inherit; cursor:pointer; }
.tpap-app button:focus-visible,
.tpap-app input:focus-visible,
.tpap-app select:focus-visible{ outline:2px solid var(--tpap-orange); outline-offset:2px; }

.tpap-header{ display:flex; justify-content:space-between; align-items:flex-end; gap:16px; border-bottom:1px solid var(--tpap-border); padding-bottom:18px; margin-bottom:22px; flex-wrap:wrap; }
.tpap-header__identity{ display:flex; align-items:center; gap:18px; flex-wrap:wrap; }
.tpap-logo{ height:42px; width:auto; display:block; }
.tpap-eyebrow{ font-family:"IBM Plex Mono", monospace; font-size:11px; letter-spacing:.12em; text-transform:uppercase; color:var(--tpap-orange); margin:0 0 6px; }
.tpap-title{ font-family:"IBM Plex Sans Condensed", sans-serif; font-weight:700; font-size:26px; letter-spacing:.01em; margin:0; }
.tpap-sub{ color:var(--tpap-text-lo); font-size:14px; margin:6px 0 0; }

.tpap-btn{ border-radius:var(--tpap-radius); border:1px solid var(--tpap-border); background:var(--tpap-surface-raised); color:var(--tpap-text-hi); font-size:13px; font-weight:500; padding:9px 14px; transition:background .15s, border-color .15s; }
.tpap-btn:hover{ border-color:var(--tpap-orange); }
.tpap-btn-primary{ background:var(--tpap-orange); border-color:var(--tpap-orange); color:#201400; font-weight:600; }
.tpap-btn-primary:hover{ background:var(--tpap-orange-hover); }
.tpap-btn-primary:disabled{ opacity:.45; cursor:not-allowed; }
.tpap-btn-ghost{ background:transparent; }
.tpap-btn-danger{ background:transparent; border-color:var(--tpap-red); color:var(--tpap-red); }
.tpap-btn-danger:hover{ background:rgba(216,92,77,.12); }
.tpap-btn-sm{ padding:6px 10px; font-size:12px; }

.tpap-toolbar{ display:flex; justify-content:space-between; align-items:center; margin-bottom:10px; gap:10px; flex-wrap:wrap; }
.tpap-toolbar__label{ font-family:"IBM Plex Mono", monospace; font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:var(--tpap-text-lo); }
.tpap-board{ border:1px solid var(--tpap-border); border-radius:var(--tpap-radius); overflow:hidden; background:var(--tpap-surface); }
.tpap-board-head{ display:grid; grid-template-columns:68px 124px 1fr 168px 150px; gap:10px; padding:10px 16px; background:var(--tpap-surface-raised); font-family:"IBM Plex Mono", monospace; font-size:11px; letter-spacing:.08em; text-transform:uppercase; color:var(--tpap-text-lo); border-bottom:1px solid var(--tpap-border); }
.tpap-row{ display:grid; grid-template-columns:68px 124px 1fr 168px 150px; gap:10px; align-items:center; padding:14px 16px; border-bottom:1px solid var(--tpap-border); }
.tpap-row:last-child{ border-bottom:none; }
.tpap-row--past{ opacity:.4; }
.tpap-week{ font-family:"IBM Plex Mono", monospace; font-weight:600; font-size:14px; }
.tpap-week__year{ display:block; font-size:11px; color:var(--tpap-text-lo); font-weight:400; }
.tpap-period{ font-family:"IBM Plex Mono", monospace; font-size:13px; color:var(--tpap-text-lo); white-space:nowrap; }
.tpap-formation__title{ font-weight:600; font-size:14px; }
.tpap-formation__meta{ font-size:12px; color:var(--tpap-text-lo); margin-top:2px; }
.tpap-status{ display:flex; align-items:center; gap:7px; font-size:13px; }
.tpap-dot{ width:9px; height:9px; border-radius:50%; flex:none; box-shadow:0 0 0 3px rgba(255,255,255,.04); }
.tpap-dot--green{ background:var(--tpap-green); }
.tpap-dot--amber{ background:var(--tpap-amber); }
.tpap-dot--red{ background:var(--tpap-red); }
.tpap-status__label{ white-space:nowrap; }
.tpap-status__count{ font-family:"IBM Plex Mono", monospace; color:var(--tpap-text-lo); font-size:12px; }
.tpap-action{ display:flex; justify-content:flex-end; }
.tpap-names{ grid-column:1 / -1; display:flex; flex-wrap:wrap; gap:6px; margin-top:10px; }
.tpap-chip{ display:inline-flex; align-items:center; gap:6px; background:var(--tpap-surface-raised); border:1px solid var(--tpap-border); border-radius:999px; padding:4px 4px 4px 10px; font-size:12px; }
.tpap-chip__x{ background:transparent; border:none; color:var(--tpap-text-lo); font-size:14px; line-height:1; padding:2px 6px; border-radius:50%; }
.tpap-chip__x:hover{ color:var(--tpap-red); background:rgba(216,92,77,.12); }
.tpap-booking-form{ grid-column:1 / -1; display:flex; gap:8px; margin-top:12px; flex-wrap:wrap; }
.tpap-booking-form input{ flex:1; min-width:180px; background:var(--tpap-bg); border:1px solid var(--tpap-border); border-radius:var(--tpap-radius); padding:9px 10px; color:var(--tpap-text-hi); font-size:13px; }
.tpap-empty{ padding:40px 20px; text-align:center; color:var(--tpap-text-lo); font-size:14px; }

@media (max-width:780px){
  .tpap-board-head{ display:none; }
  .tpap-row{ grid-template-columns:1fr; gap:8px; }
  .tpap-action{ justify-content:flex-start; }
}

.tpap-footer-note{ margin-top:18px; font-size:12px; color:var(--tpap-text-lo); line-height:1.5; }
.tpap-admin-zone{ margin-top:34px; }
.tpap-admin-toggle{ background:none; border:none; color:var(--tpap-text-lo); font-size:12px; text-decoration:underline; padding:0; }
.tpap-admin-panel{ margin-top:14px; border:1px dashed var(--tpap-border); border-radius:var(--tpap-radius); padding:18px; background:var(--tpap-surface); }
.tpap-admin-panel__title{ font-family:"IBM Plex Sans Condensed", sans-serif; font-weight:600; font-size:15px; margin:0 0 14px; }
.tpap-field-grid{ display:grid; grid-template-columns:repeat(auto-fit, minmax(150px,1fr)); gap:12px; margin-bottom:14px; }
.tpap-field label{ display:block; font-size:11px; text-transform:uppercase; letter-spacing:.06em; color:var(--tpap-text-lo); margin-bottom:6px; }
.tpap-field input, .tpap-field select{ width:100%; background:var(--tpap-bg); border:1px solid var(--tpap-border); border-radius:var(--tpap-radius); padding:9px 10px; color:var(--tpap-text-hi); font-size:13px; font-family:inherit; }
.tpap-admin-slot-line{ display:flex; justify-content:space-between; align-items:center; gap:10px; padding:9px 0; border-bottom:1px solid var(--tpap-border); font-size:13px; }
.tpap-admin-slot-line:last-child{ border-bottom:none; }
.tpap-btn-excel{ background:#1d6f42; border-color:#1a6139; color:#fff; font-weight:600; }
.tpap-btn-excel:hover{ background:#25894f; border-color:#25894f; }
.tpap-excel-icon{ font-style:normal; margin-right:2px; }
.tpap-admin-actions-row{ display:flex; justify-content:space-between; align-items:center; margin-top:16px; gap:10px; flex-wrap:wrap; }
.tpap-passcode-row{ display:flex; gap:8px; flex-wrap:wrap; }
.tpap-passcode-row input{ background:var(--tpap-bg); border:1px solid var(--tpap-border); border-radius:var(--tpap-radius); padding:9px 10px; color:var(--tpap-text-hi); font-size:13px; min-width:200px; }

.tpap-toast{ position:fixed; left:50%; bottom:22px; transform:translate(-50%, 12px); background:var(--tpap-surface-raised); border:1px solid var(--tpap-border); color:var(--tpap-text-hi); padding:11px 18px; border-radius:var(--tpap-radius); font-size:13px; opacity:0; transition:opacity .2s, transform .2s; pointer-events:none; max-width:90vw; text-align:center; z-index:9999; }
.tpap-toast.tpap-toast--visible{ opacity:1; transform:translate(-50%,0); }
