:root{--ws-bg:#0d0f12;--ws-panel:#171a1f;--ws-panel-soft:#111419;--ws-field:#0f1115;--ws-line:#2b3038;--ws-line-strong:#3a414c;--ws-text:#f4f5f7;--ws-muted:#9aa4b2;--ws-accent:#d7ff45;--ws-accent-hover:#c8ef3c;--ws-danger:#ff6b6b;--ws-success:#5ee09a;--ws-warning:#ffcc66;--ws-radius:12px;--ws-shadow:0 18px 60px rgba(0,0,0,.2)}*{box-sizing:border-box}html{color-scheme:dark}body{margin:0;background:var(--ws-bg);color:var(--ws-text);font:15px/1.5 Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}a{color:var(--ws-accent)}.ws-icon{width:18px;height:18px;flex:0 0 auto}.ws-header{min-height:68px;border-bottom:1px solid var(--ws-line);display:flex;align-items:center;justify-content:space-between;gap:24px;padding:10px 28px;background:#111318;position:sticky;top:0;z-index:20}.ws-header__brand{display:flex;align-items:baseline;white-space:nowrap}.ws-header__title{font-size:18px}.ws-header__version{margin-left:10px;color:var(--ws-muted);font-size:12px}.ws-nav{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.ws-nav__link{display:inline-flex;align-items:center;gap:7px;padding:9px 11px;border-radius:10px;color:var(--ws-muted);text-decoration:none;font-weight:700;transition:.18s ease}.ws-nav__link:hover,.ws-nav__link.is-active{background:#232831;color:var(--ws-text)}.ws-nav__link.is-active{box-shadow:inset 0 0 0 1px var(--ws-line-strong)}.ws-nav__link--logout:hover{color:var(--ws-danger)}.ws-nav__user{color:var(--ws-muted);font-size:13px;padding:0 4px}.ws-container{max-width:1280px;margin:32px auto;padding:0 20px}.ws-panel,.ws-card{background:var(--ws-panel);border:1px solid var(--ws-line);border-radius:16px;padding:24px;margin-bottom:24px;box-shadow:var(--ws-shadow)}.ws-panel__head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px}.ws-panel__title,.ws-card__title{margin:0}.ws-panel__description,.ws-muted{margin:5px 0 22px;color:var(--ws-muted)}.ws-form{display:block}.ws-form__grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.ws-form__grid--2{grid-template-columns:1fr 1fr}.ws-field{display:block;margin-bottom:16px}.ws-field__label{display:block;font-weight:700;margin-bottom:7px}.ws-field__hint{display:block;color:var(--ws-muted);font-weight:400;margin-top:5px;font-size:13px}.ws-input,.ws-select,.ws-textarea,.ws-file{display:block;width:100%;min-height:48px;background:var(--ws-field);color:var(--ws-text);border:1px solid var(--ws-line);border-radius:10px;padding:12px 13px;font:inherit;transition:border-color .15s,box-shadow .15s,background .15s}.ws-select{appearance:none;-webkit-appearance:none;padding-right:42px;background-image:linear-gradient(45deg,transparent 50%,var(--ws-muted) 50%),linear-gradient(135deg,var(--ws-muted) 50%,transparent 50%);background-position:calc(100% - 19px) 20px,calc(100% - 13px) 20px;background-size:6px 6px,6px 6px;background-repeat:no-repeat}.ws-input:hover,.ws-select:hover,.ws-textarea:hover,.ws-file:hover{border-color:var(--ws-line-strong)}.ws-input:focus,.ws-select:focus,.ws-textarea:focus,.ws-file:focus{outline:none;border-color:var(--ws-accent);box-shadow:0 0 0 3px rgba(215,255,69,.16)}.ws-input:disabled,.ws-select:disabled,.ws-button:disabled{cursor:not-allowed;opacity:.48}.ws-checkbox{display:inline-flex;align-items:center;gap:10px;cursor:pointer;font-weight:700}.ws-checkbox__input{appearance:none;width:20px;height:20px;margin:0;border:1px solid var(--ws-line-strong);border-radius:6px;background:var(--ws-field);display:grid;place-items:center}.ws-checkbox__input:checked{background:var(--ws-accent);border-color:var(--ws-accent)}.ws-checkbox__input:checked:after{content:"";width:9px;height:5px;border-left:2px solid #111;border-bottom:2px solid #111;transform:rotate(-45deg) translateY(-1px)}.ws-checkbox__input:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(215,255,69,.16)}.ws-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;background:var(--ws-accent);color:#111;border:1px solid var(--ws-accent);border-radius:10px;padding:11px 18px;font:inherit;font-weight:850;cursor:pointer;text-decoration:none;transition:.16s ease}.ws-button:hover{background:var(--ws-accent-hover);border-color:var(--ws-accent-hover);transform:translateY(-1px)}.ws-button--secondary{background:#242830;border-color:#303640;color:var(--ws-text)}.ws-button--secondary:hover{background:#2d333d;border-color:#424a56}.ws-button--danger{background:rgba(255,107,107,.1);border-color:rgba(255,107,107,.4);color:#ff9292}.ws-button--danger:hover{background:rgba(255,107,107,.18);border-color:var(--ws-danger)}.ws-button--ghost{background:#242830;border-color:#242830;color:#757e8b}.ws-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.ws-custom-fields{display:flex;gap:20px;align-items:center;padding:16px;background:var(--ws-panel-soft);border:1px dashed var(--ws-line);border-radius:12px;margin-bottom:18px}.ws-custom-fields .ws-field:first-child{flex:1;margin-bottom:0}.ws-custom-fields .ws-checkbox{margin-bottom:13px}.is-hidden{display:none!important}.ws-table-wrap{overflow:auto}.ws-table{width:100%;border-collapse:collapse;min-width:900px}.ws-table__head,.ws-table__cell{text-align:left;padding:13px 12px;border-bottom:1px solid var(--ws-line);vertical-align:middle}.ws-table__head{font-size:12px;color:var(--ws-muted);text-transform:uppercase;letter-spacing:.06em}.ws-table__code{display:block;color:var(--ws-muted);font-size:11px;max-width:280px;overflow:hidden;text-overflow:ellipsis}.ws-small{font-size:12px}.ws-badge{display:inline-flex;align-items:center;background:#252a32;padding:5px 9px;border-radius:999px;font-size:12px}.ws-empty{text-align:center;color:var(--ws-muted);padding:32px}.ws-alert{padding:13px 15px;border-radius:10px;margin-bottom:16px}.ws-alert--success{background:rgba(94,224,154,.12);border:1px solid rgba(94,224,154,.35)}.ws-alert--error{background:rgba(255,107,107,.12);border:1px solid rgba(255,107,107,.35)}.ws-alert--warning{background:rgba(255,204,102,.1);border:1px solid rgba(255,204,102,.35)}.ws-auth{min-height:100vh;display:grid;place-items:center;padding:20px}.ws-card{width:min(460px,100%)}.ws-card--install{width:min(680px,100%)}.ws-card__divider{border:0;border-top:1px solid var(--ws-line);margin:12px 0 22px}.ws-stat-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:18px 0 24px}.ws-stat{background:var(--ws-panel-soft);border:1px solid var(--ws-line);border-radius:12px;padding:15px}.ws-stat__label{display:block;color:var(--ws-muted);font-size:12px;text-transform:uppercase;letter-spacing:.06em}.ws-stat__value{display:block;font-size:19px;margin-top:3px}.ws-upload-box{padding:20px;border:1px dashed var(--ws-line-strong);border-radius:14px;background:var(--ws-panel-soft)}.ws-backup-list{display:grid;gap:10px}.ws-backup{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px;border:1px solid var(--ws-line);border-radius:12px;background:var(--ws-panel-soft)}.ws-backup__meta{min-width:0}.ws-backup__name{display:block;font-weight:800;overflow:hidden;text-overflow:ellipsis}.ws-backup__details{display:block;color:var(--ws-muted);font-size:12px;margin-top:3px}.ws-note{padding:14px 16px;border-left:3px solid var(--ws-accent);background:rgba(215,255,69,.06);border-radius:0 10px 10px 0;color:var(--ws-muted)}@media(max-width:920px){.ws-header{align-items:flex-start}.ws-form__grid{grid-template-columns:1fr 1fr}.ws-stat-grid{grid-template-columns:1fr}}@media(max-width:650px){.ws-header{padding:14px 16px;display:block}.ws-nav{margin-top:12px;justify-content:flex-start}.ws-nav__user{display:none}.ws-form__grid,.ws-form__grid--2{grid-template-columns:1fr}.ws-custom-fields{display:block}.ws-custom-fields .ws-checkbox{margin:8px 0 0}.ws-backup{align-items:flex-start;flex-direction:column}.ws-container{margin-top:20px}}

/* 0.1.4: custom file control and code browser */
.ws-file-control{display:flex;align-items:center;gap:12px;min-height:56px;padding:8px;border:1px solid var(--ws-line-strong);border-radius:12px;background:var(--ws-field);transition:.16s ease}.ws-file-control:focus-within{border-color:var(--ws-accent);box-shadow:0 0 0 3px rgba(215,255,69,.16)}.ws-file__input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.ws-file__trigger{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:40px;padding:9px 14px;border-radius:9px;background:#292e36;border:1px solid #343b45;color:var(--ws-text);font-weight:800;cursor:pointer;white-space:nowrap;transition:.16s ease}.ws-file__trigger:hover{background:#333a44;border-color:#48515f}.ws-file__name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ws-muted)}.ws-file-control.has-file .ws-file__name{color:var(--ws-text);font-weight:700}.ws-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:18px}.ws-toolbar__meta{color:var(--ws-muted)}.ws-pagination{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap;margin-top:18px}.ws-pagination__current{color:var(--ws-muted);padding:0 8px}.ws-code-value{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono",monospace;font-weight:800;letter-spacing:.03em}.ws-url{display:block;max-width:520px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ws-muted);font-size:12px}.ws-button--small{min-height:36px;padding:7px 11px;font-size:13px}@media(max-width:650px){.ws-file-control{align-items:stretch;flex-direction:column}.ws-file__trigger{width:100%}.ws-file__name{padding:2px 4px}.ws-toolbar{align-items:stretch}.ws-toolbar .ws-actions{width:100%}.ws-toolbar .ws-button{flex:1}}

/* 0.2.0: template selector and QR/PDF test */
.ws-template-grid{display:grid;grid-template-columns:minmax(0,760px);gap:18px;margin:22px 0}.ws-template-card{display:grid;grid-template-columns:260px 1fr;overflow:hidden;border:1px solid var(--ws-line-strong);border-radius:16px;background:var(--ws-panel-soft)}.ws-template-card.is-selected{border-color:rgba(215,255,69,.75);box-shadow:0 0 0 3px rgba(215,255,69,.08)}.ws-template-card__preview{display:grid;place-items:center;padding:28px;background:#e9ecef}.ws-qr-preview{display:block;width:min(210px,100%);height:auto;background:#fff;box-shadow:0 12px 30px rgba(0,0,0,.18)}.ws-template-card__body{padding:24px}.ws-template-card__head{display:flex;align-items:center;justify-content:space-between;gap:12px}.ws-template-card__title{margin:0;font-size:22px}.ws-badge--accent{background:rgba(215,255,69,.12);color:var(--ws-accent);border:1px solid rgba(215,255,69,.24)}.ws-spec-list{display:grid;gap:10px;margin:20px 0 0}.ws-spec-list>div{display:grid;grid-template-columns:120px 1fr;gap:14px;padding-top:10px;border-top:1px solid var(--ws-line)}.ws-spec-list dt{color:var(--ws-muted)}.ws-spec-list dd{margin:0;overflow-wrap:anywhere}.ws-actions--spaced{justify-content:flex-end;margin:20px 0}.ws-actions--spaced+.ws-note{margin-top:18px}@media(max-width:760px){.ws-template-card{grid-template-columns:1fr}.ws-template-card__preview{padding:20px}.ws-actions--spaced{align-items:stretch;flex-direction:column}.ws-actions--spaced .ws-button{width:100%}.ws-spec-list>div{grid-template-columns:1fr;gap:3px}}

/* 0.2.1: drag and drop + generator kolejki */
.ws-file-control.is-dragover {
  border-color: var(--ws-accent, #d7ff2f);
  background: rgba(215, 255, 47, .08);
  box-shadow: 0 0 0 3px rgba(215, 255, 47, .12);
}
.ws-file-control.is-dragover .ws-file__trigger { transform: translateY(-1px); }
.ws-file-control.is-error { border-color: #ef6b73; }
.ws-file-control.is-error .ws-file__name { color: #ff9aa0; }
.ws-generation {
  margin-top: 24px;
  padding: 22px;
  border: 1px solid #303640;
  border-radius: 16px;
  background: #11151b;
}
.ws-generation__top { display:flex; justify-content:space-between; gap:20px; align-items:flex-end; }
.ws-generation__title { display:block; font-size:18px; }
.ws-generation__status { display:block; margin-top:5px; color:#9ca6b7; }
.ws-generation__counter { font-size:18px; white-space:nowrap; }
.ws-progress { height:14px; margin-top:18px; border-radius:999px; overflow:hidden; background:#252b34; }
.ws-progress__bar { display:block; height:100%; border-radius:inherit; background:#d7ff2f; transition:width .25s ease; }
.ws-generation__percent { margin-top:8px; text-align:right; color:#a9b2c1; font-variant-numeric:tabular-nums; }
.ws-form--inline { display:inline-flex; margin:0; }
.ws-button.is-disabled { pointer-events:none; opacity:.45; filter:grayscale(.35); }
@media (max-width:720px) {
  .ws-generation__top { align-items:flex-start; flex-direction:column; }
  .ws-generation__counter { white-space:normal; }
}

/* 0.2.2: live generator status */
.ws-generation__status { margin-top:8px; width:max-content; color:var(--ws-text); }
.ws-generation__status[data-status-value="queued"] { background:rgba(255,204,102,.12); color:var(--ws-warning); }
.ws-generation__status[data-status-value="generating"] { background:rgba(215,255,69,.12); color:var(--ws-accent); }
.ws-generation__status[data-status-value="ready"] { background:rgba(94,224,154,.12); color:var(--ws-success); }
.ws-generation__status[data-status-value="paused"] { background:rgba(154,164,178,.14); color:var(--ws-muted); }
.ws-generation__status[data-status-value="error"] { background:rgba(255,107,107,.12); color:var(--ws-danger); }
.ws-generation__message { display:block; margin-top:9px; color:var(--ws-muted); }
.ws-generation.is-complete { border-color:rgba(94,224,154,.45); box-shadow:0 0 0 3px rgba(94,224,154,.06); }
.ws-generation.is-complete .ws-progress__bar { background:var(--ws-success); }

.ws-inline-form { display: inline-flex; margin: 0; }

.ws-actions--icons{display:flex;align-items:center;gap:8px;flex-wrap:nowrap}.ws-icon-button{position:relative;display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;min-width:42px;padding:0;border:1px solid rgba(215,255,69,.35);border-radius:11px;background:var(--ws-accent);color:#10130a;cursor:pointer;text-decoration:none;transition:transform .16s ease,background .16s ease,border-color .16s ease,box-shadow .16s ease}.ws-icon-button:hover,.ws-icon-button:focus-visible{background:var(--ws-accent-hover);transform:translateY(-1px);box-shadow:0 8px 22px rgba(0,0,0,.22)}.ws-icon-button:focus-visible{outline:2px solid var(--ws-text);outline-offset:3px}.ws-icon-button--secondary{background:#232831;border-color:var(--ws-line-strong);color:var(--ws-text)}.ws-icon-button--secondary:hover,.ws-icon-button--secondary:focus-visible{background:#2d333d}.ws-icon-button--danger{background:rgba(255,107,107,.09);border-color:rgba(255,107,107,.45);color:#ff8b8b}.ws-icon-button--danger:hover,.ws-icon-button--danger:focus-visible{background:rgba(255,107,107,.16);border-color:var(--ws-danger)}.ws-icon-button::after{content:attr(data-tooltip);position:absolute;left:50%;bottom:calc(100% + 10px);z-index:50;transform:translate(-50%,6px);padding:7px 9px;border:1px solid var(--ws-line-strong);border-radius:8px;background:#090b0e;color:var(--ws-text);font-size:12px;font-weight:700;line-height:1.2;white-space:nowrap;opacity:0;visibility:hidden;pointer-events:none;box-shadow:0 10px 30px rgba(0,0,0,.35);transition:.14s ease}.ws-icon-button::before{content:"";position:absolute;left:50%;bottom:calc(100% + 5px);z-index:51;width:8px;height:8px;background:#090b0e;border-right:1px solid var(--ws-line-strong);border-bottom:1px solid var(--ws-line-strong);transform:translateX(-50%) rotate(45deg);opacity:0;visibility:hidden;transition:.14s ease}.ws-icon-button:hover::after,.ws-icon-button:hover::before,.ws-icon-button:focus-visible::after,.ws-icon-button:focus-visible::before{opacity:1;visibility:visible;transform:translate(-50%,0)}.ws-icon-button:hover::before,.ws-icon-button:focus-visible::before{transform:translateX(-50%) rotate(45deg)}.ws-actions--icons .ws-inline-form{display:inline-flex;margin:0}@media(max-width:760px){.ws-actions--icons{flex-wrap:wrap}.ws-icon-button{width:40px;height:40px;min-width:40px}.ws-icon-button::after,.ws-icon-button::before{display:none}}

.ws-output-form{align-items:flex-end;gap:12px;flex-wrap:wrap}.ws-field--compact{min-width:190px}.ws-permissions{display:flex;gap:18px;flex-wrap:wrap;padding:14px 0}.ws-alert--info{border-color:#35506b;background:#172433;color:#bcd7ef}

/* 0.3.2: PDF margin + output controls alignment */
.ws-output-form{
  display:grid;
  grid-template-columns:minmax(190px,220px) auto;
  align-items:center;
  gap:12px;
  flex:0 0 auto;
}
.ws-output-form .ws-field--compact{
  min-width:0;
  margin:0;
}
.ws-output-form .ws-select,
.ws-output-form .ws-button{
  min-height:48px;
}
.ws-output-form .ws-button{
  white-space:nowrap;
}
@media(max-width:920px){
  .ws-actions--spaced{justify-content:flex-start}
}
@media(max-width:650px){
  .ws-output-form{display:grid;width:100%;grid-template-columns:1fr}
  .ws-output-form .ws-button{width:100%}
}

/* 0.3.3: output format label removed for one-line alignment */
.ws-output-form .ws-field--compact{display:flex;align-items:center}


/* 0.4.0 System / cron */
.ws-system-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:20px 0}.ws-stat{padding:20px;border:1px solid var(--ws-border,#2d3440);border-radius:14px;background:#10141a}.ws-stat__label{display:block;color:#9aa5b5;font-size:12px;text-transform:uppercase;letter-spacing:.08em;margin-bottom:8px}.ws-stat__value{font-size:20px}.ws-cron-box{margin:18px 0;padding:18px;border:1px dashed #3b4656;border-radius:14px;background:#10141a}.ws-cron-command{display:block;margin-top:10px;padding:14px;border-radius:10px;overflow:auto;white-space:nowrap;background:#080b0f;color:#d4ff32}.ws-button--small{padding:10px 14px;font-size:14px}@media(max-width:800px){.ws-system-grid{grid-template-columns:1fr}.ws-cron-command{white-space:normal;overflow-wrap:anywhere}}
