/* Layout and components only. No colours here: everything reads variables from theme.css */
*{box-sizing:border-box}
body{margin:0;font:14px/1.5 var(--font);color:var(--ink);background:var(--bg)}
a{color:inherit;text-decoration:none}
hr{border:0;border-top:1px solid var(--line);margin:12px 0}
.tag{background:var(--tag-bg);color:var(--tag-ink);padding:5px 24px;font-size:11px;display:flex;justify-content:space-between}
.tag a{color:var(--tag-link);text-decoration:underline}
.nav{display:flex;align-items:center;gap:20px;padding:13px 24px;background:var(--nav-bg);color:var(--nav-ink-strong)}
.nav a{color:var(--nav-ink);font-weight:500;font-size:13px}.nav a:hover{color:var(--nav-ink-strong)}
.nav .logo{font-weight:800;font-size:17px;letter-spacing:.08em;color:var(--nav-ink-strong);margin-right:auto;flex:none;white-space:nowrap}
.nav .logo .role{font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;background:rgba(128,128,128,.28);color:var(--nav-ink-strong);padding:3px 9px;border-radius:var(--r-pill);margin-left:10px;vertical-align:3px}
.nav .logo:before{content:"";display:inline-block;width:20px;height:20px;border-radius:6px;background:var(--mark);margin-right:9px;vertical-align:-4px}
.nav input{width:260px}
.nav .btn.p{color:var(--accent-ink)}
.wrap{max-width:1080px;margin:0 auto;padding:28px 24px}
.brand{text-align:center;margin:44px auto 18px;font-weight:800;font-size:22px;letter-spacing:.1em}
.brand .mk{display:inline-block;width:24px;height:24px;border-radius:7px;background:var(--mark);margin-right:10px;vertical-align:-5px}
.brand small{display:block;font-weight:500;font-size:12px;letter-spacing:0;color:var(--mute);margin-top:4px}
.narrow{max-width:440px;margin:0 auto 40px;background:var(--card);border:1px solid var(--line);border-radius:calc(var(--r) + 4px);padding:32px;box-shadow:var(--shadow-lg)}
h1{font-size:24px;font-weight:700;letter-spacing:-.01em;margin:0 0 16px}
h2{font-size:16px;font-weight:700;margin:22px 0 10px}
.row{display:flex;gap:16px;align-items:flex-start}.row>*{flex:1;min-width:0}
.g2,.g3,.g4{display:grid;gap:16px}.g2{grid-template-columns:repeat(2,1fr)}.g3{grid-template-columns:repeat(3,1fr)}.g4{grid-template-columns:repeat(4,1fr)}
.box{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:16px;box-shadow:var(--shadow)}
a.box{transition:.15s}a.box:hover{border-color:var(--accent);box-shadow:0 6px 18px rgba(var(--accent-rgb),.16);transform:translateY(-1px)}
.ph{background:linear-gradient(135deg,var(--ph1),var(--ph2));border:1px dashed var(--ph-line);border-radius:var(--r-sm);display:flex;align-items:center;justify-content:center;color:var(--ph-ink);font-size:12px}
.bar{height:9px;border-radius:6px;margin:8px 0;background:linear-gradient(90deg,var(--bar1) 25%,var(--bar2) 50%,var(--bar1) 75%);background-size:200% 100%;animation:sh 1.8s linear infinite}.bar.s{width:60%}.bar.m{width:80%}
@keyframes sh{to{background-position:-200% 0}}
@media(prefers-reduced-motion:reduce){.bar{animation:none}}
.btn{display:inline-block;border:1px solid var(--btn-line);padding:9px 18px;margin:4px 6px 4px 0;background:var(--card);color:var(--ink);cursor:pointer;font-size:14px;font-weight:600;border-radius:var(--r-sm);transition:.15s}
.btn:hover{border-color:var(--ink)}
.btn.p{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);box-shadow:0 2px 8px rgba(var(--accent-rgb),.28)}.btn.p:hover{background:var(--accent-hover);border-color:var(--accent-hover)}
.btn.full{display:block;text-align:center;margin-right:0}.btn.sm{padding:5px 12px;font-size:12px;border-radius:var(--r-xs)}
label{display:block;font-size:12px;font-weight:600;margin:14px 0 5px;color:var(--label)}
input,select,textarea{width:100%;padding:10px 12px;border:1px solid var(--input-line);border-radius:var(--r-sm);font:inherit;background:var(--card);color:var(--ink)}
input:focus,select:focus,textarea:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 3px rgba(var(--accent-rgb),.2)}
input[type=checkbox],input[type=radio]{accent-color:var(--accent)}
.tw{overflow:auto;background:var(--card);border:1px solid var(--line);border-radius:var(--r)}.tw table{min-width:520px}
table{width:100%;border-collapse:collapse}
th{background:var(--head-bg);color:var(--soft-ink);font-size:11px;text-transform:uppercase;letter-spacing:.05em;text-align:left;padding:11px 14px;border-bottom:1px solid var(--line)}
td{padding:11px 14px;border-bottom:1px solid var(--line-soft);font-size:13px;text-align:left}
tr:last-child td{border-bottom:0}tr:hover td{background:var(--hover)}
.note{font-size:12px;color:var(--mute);margin:8px 0}
.tabs{display:flex;gap:4px;background:var(--soft);padding:4px;border-radius:var(--r-sm);width:fit-content;max-width:100%;margin-bottom:18px}
.tabs span{padding:7px 15px;border-radius:var(--r-xs);font-weight:600;color:var(--soft-ink);white-space:nowrap}.tabs .on{background:var(--card);color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.12)}
.steps{display:flex;gap:6px;margin-bottom:22px;font-size:12px}
.steps span{background:var(--card);border:1px solid var(--line);padding:5px 14px;border-radius:var(--r-pill);color:var(--mute)}.steps .on{background:var(--strong-bg);border-color:var(--strong-bg);color:var(--strong-ink);font-weight:600}
.opt{background:var(--card);border:1px solid var(--line);border-radius:var(--r-sm);padding:14px;margin-bottom:10px;display:flex;gap:12px;align-items:flex-start;transition:.15s}
.opt input{width:auto;margin-top:3px}.opt:has(input:checked){border-color:var(--accent);background:var(--accent-tint)}
.side{display:grid;grid-template-columns:220px 1fr;gap:22px}
.sp{display:flex;justify-content:space-between;align-items:center;gap:10px}
.chip{display:inline-block;background:var(--chip-bg);color:var(--soft-ink);padding:3px 11px;font-size:12px;font-weight:500;border-radius:var(--r-pill);margin:2px 4px 2px 0}
.badge{display:inline-block;background:var(--badge-bg);color:var(--badge-ink);padding:2px 11px;font-size:12px;font-weight:600;border-radius:var(--r-pill);white-space:nowrap}
.v-ok{background:var(--ok-tint)!important;color:var(--ok)!important}.v-warn{background:var(--warn-tint)!important;color:var(--warn)!important}.v-bad{background:var(--bad-tint)!important;color:var(--bad)!important}.v-info{background:var(--info-tint)!important;color:var(--info)!important}
ul.i{padding-left:18px}ul.i li{margin:6px 0}
.tl{border-left:2px solid var(--line);margin-left:8px;padding-left:20px}.tl .s{position:relative;margin-bottom:18px}
.tl .s:before{content:"";position:absolute;left:-29px;top:3px;width:14px;height:14px;border:2px solid var(--btn-line);background:var(--card);border-radius:50%}
.tl .s.done:before{background:var(--accent);border-color:var(--accent)}.tl .s.now:before{border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-tint)}
.chat{border:1px solid var(--line);background:var(--chat-bg);border-radius:var(--r);height:340px;padding:14px;overflow:auto;display:flex;flex-direction:column;gap:10px}
.chat .m{max-width:70%;padding:9px 14px;border:1px solid var(--line);background:var(--card);border-radius:var(--r) var(--r) var(--r) 4px}
.chat .m.me{align-self:flex-end;background:var(--strong-bg);border-color:var(--strong-bg);color:var(--strong-ink);border-radius:var(--r) var(--r) 4px var(--r)}
details.box{margin-bottom:10px}summary{cursor:pointer;font-weight:600}details[open] summary{margin-bottom:8px}
.links{display:flex;gap:8px 18px;flex-wrap:wrap;justify-content:flex-end}
.ixg{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px}
a.ix{display:block;background:var(--card);border:1px solid var(--line);border-radius:var(--r-sm);padding:10px 14px;font-weight:500;transition:.15s}a.ix:hover{border-color:var(--accent)}a.ix b{color:var(--accent);margin-right:8px}
/* theme picker (Settings > Appearance) */
input[type=color]{padding:3px;height:42px;cursor:pointer}
.cust{display:none;background:var(--head-bg);border:1px solid var(--line);border-radius:var(--r);padding:16px;margin-bottom:12px}.cust.on{display:block}.cust .g3{margin:6px 0 4px}
.tp{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;margin:12px 0}
.tpc{cursor:pointer;text-align:left;font:inherit;display:block;background:var(--bg);color:var(--ink);border:2px solid var(--line);border-radius:var(--r);padding:10px}
.tpc .pv{display:block;position:relative;overflow:hidden;height:54px;margin-bottom:8px;background:var(--card);border:1px solid var(--line);border-radius:var(--r-xs)}
.tpc .pv i{position:absolute;display:block}
.tpc .pv .a{left:0;right:0;top:0;height:14px;background:var(--nav-bg)}
.tpc .pv .b{left:8px;bottom:8px;width:46px;height:14px;border-radius:var(--r-xs);background:var(--accent)}
.tpc .pv .c{right:8px;bottom:8px;width:24px;height:14px;border-radius:var(--r-xs);background:var(--soft)}
.tpc.sel{border-color:var(--accent);box-shadow:0 0 0 3px rgba(var(--accent-rgb),.22)}.tpc.sel b:after{content:" \2713";color:var(--accent)}
@media(max-width:900px){.g4{grid-template-columns:repeat(2,1fr)}.g3{grid-template-columns:repeat(2,1fr)}.side{grid-template-columns:1fr}}
@media(max-width:700px){
.wrap{padding:16px}.narrow{margin:0 16px 32px;padding:22px}.brand{margin:28px auto 14px}h1{font-size:20px}
.nav{flex-wrap:wrap;padding:10px 16px;gap:8px 12px}.nav .logo{width:100%;margin:0}
.links{flex-wrap:nowrap;justify-content:flex-start;overflow-x:auto;width:100%;gap:18px;padding-bottom:6px;white-space:nowrap}
.nav input{width:100%}.nav input[style]{flex:1}
.g2{grid-template-columns:1fr}
.row:not(.keep){flex-direction:column}.row:not(.keep)>*{flex:none!important;width:100%}
.row.keep{gap:6px}.row.keep input{padding:8px 2px}
.btn{padding:11px 18px}.btn.sm{padding:6px 12px}
.tabs{overflow-x:auto}.steps{flex-wrap:wrap}.tag{padding:6px 16px}.sp{flex-wrap:wrap}}
@media(max-width:480px){.g3,.g4{grid-template-columns:1fr 1fr;gap:10px}.box{padding:12px}.opt{padding:12px}}
