/* Sekura City – Test-Tracker · Design-System (theme-fähig) */
:root{
  --bg:#0a0e14; --panel:#111823; --panel-2:#0e1520; --line:#1f2c3b;
  --line-soft:#18222f; --ink:#e8eef5; --ink-dim:#9fb0c3; --ink-faint:#66788c;
  --accent:#35e0d0; --accent-ink:#04211f; --accent-soft:rgba(53,224,208,.14);
  --ok:#4ade80; --wip:#f6b73c; --bug:#f87171; --admin:#a78bfa;
  --radius:14px; --radius-sm:9px; --maxw:960px;
  --shadow:0 1px 0 rgba(255,255,255,.03) inset, 0 18px 40px -24px rgba(0,0,0,.7);
  --mono:ui-monospace,"SF Mono",Menlo,Consolas,"Cascadia Code",monospace;
  --sans:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
}
@media (prefers-color-scheme: light){
  :root{
    --bg:#eef2f6; --panel:#ffffff; --panel-2:#f5f8fb; --line:#d9e2ec;
    --line-soft:#e6edf3; --ink:#0f1a26; --ink-dim:#47586b; --ink-faint:#8393a5;
    --accent:#0d9488; --accent-ink:#ffffff; --accent-soft:rgba(13,148,136,.12);
    --ok:#16a34a; --wip:#b7791f; --bug:#dc2626; --admin:#7c3aed;
    --shadow:0 1px 0 rgba(255,255,255,.6) inset, 0 14px 30px -22px rgba(20,40,60,.5);
  }
}
:root[data-theme="dark"]{
  --bg:#0a0e14; --panel:#111823; --panel-2:#0e1520; --line:#1f2c3b;
  --line-soft:#18222f; --ink:#e8eef5; --ink-dim:#9fb0c3; --ink-faint:#66788c;
  --accent:#35e0d0; --accent-ink:#04211f; --accent-soft:rgba(53,224,208,.14);
  --ok:#4ade80; --wip:#f6b73c; --bug:#f87171; --admin:#a78bfa;
  --shadow:0 1px 0 rgba(255,255,255,.03) inset, 0 18px 40px -24px rgba(0,0,0,.7);
}
:root[data-theme="light"]{
  --bg:#eef2f6; --panel:#ffffff; --panel-2:#f5f8fb; --line:#d9e2ec;
  --line-soft:#e6edf3; --ink:#0f1a26; --ink-dim:#47586b; --ink-faint:#8393a5;
  --accent:#0d9488; --accent-ink:#ffffff; --accent-soft:rgba(13,148,136,.12);
  --ok:#16a34a; --wip:#b7791f; --bug:#dc2626; --admin:#7c3aed;
  --shadow:0 1px 0 rgba(255,255,255,.6) inset, 0 14px 30px -22px rgba(20,40,60,.5);
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0; background:radial-gradient(1200px 600px at 50% -10%, var(--accent-soft), transparent 60%), var(--bg);
  color:var(--ink); font-family:var(--sans); line-height:1.55; -webkit-font-smoothing:antialiased; font-size:16px;
}
.wrap{max-width:var(--maxw); margin:0 auto; padding:clamp(18px,4vw,40px) clamp(14px,4vw,28px) 80px}
a{color:var(--accent)}

/* header */
.brand-eyebrow{font-family:var(--mono); font-size:12px; letter-spacing:.32em; text-transform:uppercase; color:var(--accent); margin:0 0 10px; display:flex; align-items:center; gap:10px}
.brand-eyebrow::before{content:""; width:26px; height:1px; background:var(--accent); opacity:.7}
h1{font-size:clamp(28px,5.5vw,48px); line-height:1.03; margin:0 0 8px; font-weight:800; letter-spacing:-.02em; text-wrap:balance}
h1 .city{color:var(--accent)}
.lede{color:var(--ink-dim); font-size:clamp(15px,2.2vw,17px); max-width:64ch; margin:0 0 20px}

/* identity bar */
.idbar{display:flex; flex-wrap:wrap; align-items:center; gap:10px; background:linear-gradient(180deg,var(--panel),var(--panel-2)); border:1px solid var(--line); border-radius:var(--radius); padding:14px 16px; box-shadow:var(--shadow); margin-bottom:20px}
.idbar label{font-family:var(--mono); font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-faint)}
.idbar input{flex:1; min-width:180px; background:var(--panel-2); border:1px solid var(--line); border-radius:8px; color:var(--ink); padding:9px 12px; font:inherit; font-size:14px}
.idbar input:focus-visible{outline:2px solid var(--accent); outline-offset:1px; border-color:transparent}
.idhint{font-size:12px; color:var(--ink-faint); flex-basis:100%}
.idbar.saved{border-color:color-mix(in srgb,var(--accent) 45%, var(--line))}

/* buttons */
.btn{font:inherit; cursor:pointer; border-radius:8px; border:1px solid var(--line); background:var(--panel-2); color:var(--ink-dim); padding:8px 13px; font-size:13.5px; transition:.15s}
.btn:hover{border-color:var(--accent); color:var(--ink)}
.btn.primary{background:var(--accent); color:var(--accent-ink); border-color:transparent; font-weight:600}
.btn.primary:hover{filter:brightness(1.06); color:var(--accent-ink)}
.btn.tiny{padding:4px 9px; font-size:12px; border-radius:7px}
.btn.ghost{background:transparent}
.btn:focus-visible{outline:2px solid var(--accent); outline-offset:2px}

/* legend */
.legend{display:flex; flex-wrap:wrap; gap:8px; margin:0 0 20px}
.badge{font-family:var(--mono); font-size:11.5px; letter-spacing:.03em; padding:4px 9px; border-radius:999px; border:1px solid var(--line); color:var(--ink-dim); display:inline-flex; align-items:center; gap:6px; background:var(--panel-2)}
.badge .dot{width:8px; height:8px; border-radius:50%; background:var(--ink-faint)}
.badge .dot.open{background:var(--ink-faint)} .badge .dot.done{background:var(--ok)} .badge .dot.issue{background:var(--bug)}
.badge.admin .dot{background:var(--admin)} .badge.wip .dot{background:var(--wip)}

/* overall */
.overall{position:sticky; top:0; z-index:20; margin:0 0 22px; padding:12px 14px; background:color-mix(in srgb, var(--panel) 90%, transparent); backdrop-filter:blur(8px); border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow); display:flex; align-items:center; gap:14px; flex-wrap:wrap}
.overall .count{font-family:var(--mono); font-variant-numeric:tabular-nums; font-size:13px; color:var(--ink-dim); white-space:nowrap}
.overall .count b{color:var(--ink); font-size:15px}
.overall .count .isnum{color:var(--bug)} .overall .count .sep{opacity:.4; margin:0 2px}
.overall .meterwrap{flex:1; min-width:160px}
.overall .meter{height:9px; border-radius:999px; background:var(--line-soft); overflow:hidden}
.overall .meter > i{display:block; height:100%; width:0%; background:linear-gradient(90deg,var(--accent),color-mix(in srgb,var(--accent) 55%, var(--ok))); transition:width .35s ease}
.filters{display:flex; gap:6px; flex-wrap:wrap}
.filters button{font:inherit; font-size:12.5px; cursor:pointer; padding:6px 11px; border-radius:8px; border:1px solid var(--line); background:var(--panel-2); color:var(--ink-dim)}
.filters button[aria-pressed="true"]{background:var(--accent); color:var(--accent-ink); border-color:transparent; font-weight:600}
.filters button:hover{border-color:var(--accent)}
.syncstate{font-size:20px; line-height:1; color:var(--ok); transition:color .3s}
.syncstate.err{color:var(--bug)} .syncstate.busy{color:var(--wip)}

/* board / section */
.loading{color:var(--ink-faint); text-align:center; padding:40px; font-family:var(--mono)}
.section{background:var(--panel); border:1px solid var(--line); border-radius:var(--radius); margin:0 0 16px; box-shadow:var(--shadow); overflow:hidden; scroll-margin-top:80px}
.section > summary{list-style:none; cursor:pointer; padding:15px 18px; display:flex; align-items:center; gap:13px}
.section > summary::-webkit-details-marker{display:none}
.section .code{font-family:var(--mono); font-size:12px; letter-spacing:.08em; color:var(--accent); border:1px solid var(--line); padding:5px 8px; border-radius:8px; background:var(--accent-soft); white-space:nowrap}
.section .stitle{font-size:17px; font-weight:700; letter-spacing:-.01em; margin:0; flex:1}
.section .sdesc{color:var(--ink-faint); font-size:12.5px; display:block; font-weight:400; margin-top:2px}
.section .sprog{font-family:var(--mono); font-variant-numeric:tabular-nums; font-size:12px; color:var(--ink-dim); white-space:nowrap}
.section .chev{color:var(--ink-faint); transition:transform .2s} .section[open] .chev{transform:rotate(90deg)}
.section .sbody{padding:0 18px 10px; border-top:1px solid var(--line-soft)}
.section .sectadd{margin:6px 0 4px}

/* item */
.item{display:flex; gap:13px; padding:14px 2px 14px 12px; border-bottom:1px solid var(--line-soft); border-left:3px solid transparent; margin-left:-12px; position:relative}
.item:last-child{border-bottom:none}
.item.st-done{border-left-color:var(--ok)}
.item.st-issue{border-left-color:var(--bug)}
.item.st-done .icontent{opacity:.72}
.item.st-done .ititle{text-decoration:line-through; text-decoration-color:var(--ink-faint)}
.chk{appearance:none; -webkit-appearance:none; margin:2px 0 0; flex:0 0 auto; width:21px; height:21px; border:1.5px solid var(--line); border-radius:6px; background:var(--panel-2); cursor:pointer; position:relative; transition:.15s}
.chk:hover{border-color:var(--accent)}
.chk:checked{background:var(--ok); border-color:var(--ok)}
.chk:checked::after{content:""; position:absolute; left:6px; top:2px; width:5px; height:10px; border:solid #04220f; border-width:0 2.5px 2.5px 0; transform:rotate(43deg)}
.chk:focus-visible{outline:2px solid var(--accent); outline-offset:2px}
.icontent{flex:1; min-width:0}
.ihead{display:flex; align-items:baseline; gap:8px; flex-wrap:wrap}
.ititle{font-weight:600; font-size:15.5px}
.tags{display:inline-flex; gap:6px; flex-wrap:wrap}
.tag{font-family:var(--mono); font-size:10.5px; letter-spacing:.05em; text-transform:uppercase; padding:2px 7px; border-radius:999px; border:1px solid; font-weight:600}
.tag.wip{color:var(--wip); border-color:color-mix(in srgb,var(--wip) 45%, transparent); background:color-mix(in srgb,var(--wip) 12%, transparent)}
.tag.admin{color:var(--admin); border-color:color-mix(in srgb,var(--admin) 45%, transparent); background:color-mix(in srgb,var(--admin) 12%, transparent)}
.tag.job{color:var(--accent); border-color:color-mix(in srgb,var(--accent) 45%, transparent); background:var(--accent-soft)}
.line{display:flex; gap:8px; margin-top:6px; font-size:13.5px; color:var(--ink-dim); align-items:baseline}
.line .k{flex:0 0 auto; font-family:var(--mono); font-size:10.5px; letter-spacing:.08em; text-transform:uppercase; color:var(--ink-faint); width:74px; padding-top:2px}
.line .v{flex:1; min-width:0}
kbd{font-family:var(--mono); font-size:12px; background:var(--panel-2); border:1px solid var(--line); border-bottom-width:2px; border-radius:6px; padding:1px 7px; color:var(--ink); white-space:nowrap}
.cmd{font-family:var(--mono); font-size:12.5px; background:var(--accent-soft); border:1px solid color-mix(in srgb,var(--accent) 30%, transparent); border-radius:6px; padding:1px 7px; color:var(--accent); white-space:nowrap}

/* meta / assignee */
.meta{display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin-top:10px}
.assign{display:flex; align-items:center; gap:8px; flex-wrap:wrap}
.assign .k{font-family:var(--mono); font-size:10.5px; letter-spacing:.08em; text-transform:uppercase; color:var(--ink-faint)}
.assignInput{background:var(--panel-2); border:1px solid var(--line); border-radius:7px; color:var(--ink); padding:5px 9px; font:inherit; font-size:13px; width:170px}
.assignInput:focus-visible{outline:2px solid var(--accent); outline-offset:1px; border-color:transparent}
.updated{font-size:11.5px; color:var(--ink-faint); font-family:var(--mono)}
.issueBtn.on{color:var(--bug); border-color:color-mix(in srgb,var(--bug) 45%, transparent); background:color-mix(in srgb,var(--bug) 12%, transparent)}

/* comments */
.comments{display:flex; flex-direction:column; gap:6px; margin-top:10px}
.comment{background:var(--panel-2); border:1px solid var(--line-soft); border-radius:9px; padding:8px 11px; font-size:13.5px; color:var(--ink); position:relative}
.comment.issue{border-color:color-mix(in srgb,var(--bug) 40%, transparent); background:color-mix(in srgb,var(--bug) 8%, transparent)}
.comment .chead{display:flex; gap:8px; align-items:baseline; margin-bottom:2px}
.comment .cauthor{font-weight:600; font-size:12.5px}
.comment .ckind{font-family:var(--mono); font-size:9.5px; letter-spacing:.06em; text-transform:uppercase; padding:1px 6px; border-radius:999px; border:1px solid var(--line)}
.comment.issue .ckind{color:var(--bug); border-color:color-mix(in srgb,var(--bug) 40%, transparent)}
.comment .ctime{font-size:11px; color:var(--ink-faint); font-family:var(--mono); margin-left:auto}
.comment .cbody{white-space:pre-wrap; word-break:break-word}
.comment .cdel{position:absolute; top:6px; right:8px; background:none; border:none; color:var(--ink-faint); cursor:pointer; font-size:15px; line-height:1; padding:2px; display:none}
.comment:hover .cdel{display:block} .comment .cdel:hover{color:var(--bug)}

/* composer */
.composer{margin-top:8px}
.composer > summary{list-style:none; cursor:pointer; font-size:12.5px; color:var(--accent); font-family:var(--mono); padding:2px 0; width:max-content}
.composer > summary::-webkit-details-marker{display:none}
.composer > summary::before{content:"+ "; }
.composer[open] > summary::before{content:"– "; }
.composer-body{margin-top:8px; display:flex; flex-direction:column; gap:8px}
.cBody{background:var(--panel-2); border:1px solid var(--line); border-radius:8px; color:var(--ink); padding:8px 10px; font:inherit; font-size:13.5px; resize:vertical; min-height:42px}
.cBody:focus-visible{outline:2px solid var(--accent); outline-offset:1px; border-color:transparent}
.composer-row{display:flex; align-items:center; gap:14px; flex-wrap:wrap}
.kindsel{font-size:13px; color:var(--ink-dim); display:inline-flex; align-items:center; gap:5px; cursor:pointer}
.composer-row .addC{margin-left:auto}

/* add custom item */
.additem{border:1px dashed var(--line); border-radius:10px; padding:10px; margin:8px 0 6px}
.additem summary{list-style:none; cursor:pointer; font-size:13px; color:var(--ink-dim); font-family:var(--mono)}
.additem summary::-webkit-details-marker{display:none}
.additem .fields{display:flex; flex-direction:column; gap:8px; margin-top:10px}
.additem input,.additem textarea{background:var(--panel-2); border:1px solid var(--line); border-radius:8px; color:var(--ink); padding:8px 10px; font:inherit; font-size:13.5px}
.additem input:focus-visible,.additem textarea:focus-visible{outline:2px solid var(--accent); outline-offset:1px; border-color:transparent}

/* report */
.report{position:relative; background:linear-gradient(180deg,var(--panel),var(--panel-2)); border:1px solid var(--line); border-radius:var(--radius); padding:20px; box-shadow:var(--shadow); margin-top:26px}
.report h2{margin:0 0 6px; font-size:19px}
.report p{color:var(--ink-dim); margin:0 0 14px; max-width:64ch}
.tmpl{background:var(--panel-2); border:1px solid var(--line); border-radius:var(--radius-sm); padding:14px; font-family:var(--mono); font-size:12.5px; color:var(--ink-dim); white-space:pre-wrap; line-height:1.7}
.copy{position:absolute; top:14px; right:14px; font:inherit; font-size:12px; cursor:pointer; padding:5px 11px; border-radius:7px; border:1px solid var(--line); background:var(--panel); color:var(--ink)}
.copy:hover{border-color:var(--accent); color:var(--accent)}

footer{text-align:center; color:var(--ink-faint); font-size:12.5px; margin-top:40px; font-family:var(--mono); letter-spacing:.04em}

.toast{position:fixed; left:50%; bottom:24px; transform:translateX(-50%); background:var(--panel); border:1px solid var(--line); color:var(--ink); padding:10px 16px; border-radius:10px; box-shadow:var(--shadow); font-size:13.5px; z-index:50; opacity:0; transition:opacity .25s, transform .25s; pointer-events:none}
.toast.show{opacity:1; transform:translateX(-50%) translateY(-4px)}
.toast.err{border-color:color-mix(in srgb,var(--bug) 50%, var(--line))}

@media (prefers-reduced-motion:reduce){*{transition:none!important}}
@media (max-width:560px){
  .line .k{width:100%; padding-top:0} .line{flex-direction:column; gap:2px}
  .assignInput{width:100%} .assign{width:100%}
}
