:root{--bg:#0e1014;--surface:#15181e;--surface2:#1b1f27;--line:#2a303b;--text:#f5f7fa;--muted:#98a2b3;--accent:#d7ff3f;--accentText:#11140a;--danger:#ff6b6b;--shadow:0 18px 60px rgba(0,0,0,.28);--radius:22px}*{box-sizing:border-box}html{background:var(--bg);color-scheme:dark}body{margin:0;background:radial-gradient(circle at 75% -10%,rgba(215,255,63,.08),transparent 30%),var(--bg);color:var(--text);font:15px/1.55 Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;min-height:100vh}a{color:inherit;text-decoration:none}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;padding:15px max(20px,calc((100vw - 1120px)/2));background:rgba(14,16,20,.82);backdrop-filter:blur(18px);border-bottom:1px solid rgba(255,255,255,.06)}.brand{display:flex;align-items:center;gap:10px;font-weight:800;letter-spacing:-.02em}.brand-mark,.logo-big{display:grid;place-items:center;background:var(--accent);color:var(--accentText);font-weight:900}.brand-mark{width:32px;height:32px;border-radius:10px}.logo-big{width:58px;height:58px;border-radius:18px;font-size:28px;margin:0 auto 22px;box-shadow:0 12px 35px rgba(215,255,63,.12)}.nav{display:flex;gap:6px;align-items:center}.nav a{padding:8px 11px;border-radius:10px;color:var(--muted);font-size:14px}.nav a:hover,.nav a.active{background:var(--surface2);color:var(--text)}.shell{width:min(1120px,calc(100% - 32px));margin:0 auto;padding:46px 0 60px}.hero{display:flex;align-items:end;justify-content:space-between;gap:30px;margin:4px 0 34px}.hero.compact{margin-bottom:28px}.hero h1,.auth-card h1,.form-card h1,.detail-card h1{font-size:clamp(32px,5vw,58px);line-height:1.02;letter-spacing:-.045em;margin:7px 0 12px;max-width:820px}.hero.compact h1,.form-card h1,.detail-card h1{font-size:clamp(30px,4vw,46px)}.hero p,.lead{color:var(--muted);font-size:17px;margin:0;max-width:720px}.eyebrow{font-size:12px;font-weight:900;letter-spacing:.14em;color:var(--accent)}.button{appearance:none;border:1px solid var(--line);background:var(--surface2);color:var(--text);padding:11px 16px;border-radius:13px;font:inherit;font-weight:800;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:.18s ease}.button:hover{transform:translateY(-1px);border-color:#3a4250}.button.primary{background:var(--accent);border-color:var(--accent);color:var(--accentText)}.button.ghost{background:transparent}.button.danger{background:rgba(255,107,107,.08);color:#ff8b8b;border-color:rgba(255,107,107,.25)}.button.wide{width:100%;padding:13px 16px}.searchbar{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:8px 8px 8px 17px;box-shadow:var(--shadow);margin-bottom:40px}.searchbar span{color:var(--muted);font-size:25px}.searchbar input{border:0;background:transparent;outline:0;color:var(--text);font:inherit;font-size:16px;min-width:0}.searchbar button{border:0;background:var(--surface2);color:var(--text);padding:10px 15px;border-radius:11px;font-weight:800;cursor:pointer}.section{margin-top:36px}.section-head{display:flex;justify-content:space-between;align-items:center;margin:0 0 14px}.section-head h2,.form-card h2{font-size:19px;margin:0;letter-spacing:-.02em}.section-head span{color:var(--muted);font-size:13px}.group-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.group-card{background:linear-gradient(145deg,var(--surface),#12151a);border:1px solid var(--line);border-radius:var(--radius);padding:20px;min-height:210px;display:flex;flex-direction:column;box-shadow:0 12px 35px rgba(0,0,0,.13);transition:.2s ease}.group-card:hover{transform:translateY(-3px);border-color:#3b4350}.group-top{display:flex;justify-content:space-between}.group-icon{display:grid;place-items:center;width:38px;height:38px;border-radius:12px;background:rgba(215,255,63,.1);color:var(--accent);font-weight:900}.count{color:var(--muted);font-size:13px}.group-card h3{font-size:22px;margin:24px 0 5px;letter-spacing:-.025em}.group-card p{color:var(--muted);margin:0}.card-link{margin-top:auto;padding-top:25px;font-weight:800;font-size:13px;display:flex;justify-content:space-between}.entry-list{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.entry-row{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:18px 20px;border-bottom:1px solid var(--line);transition:.15s}.entry-row:last-child{border-bottom:0}.entry-row:hover{background:var(--surface2)}.entry-row h3{margin:5px 0 2px;font-size:18px;letter-spacing:-.02em}.entry-row p{margin:4px 0 0;color:var(--muted)}.entry-meta{display:flex;gap:9px;align-items:center;flex-wrap:wrap;color:var(--muted);font-size:12px}.code{font-size:11px;letter-spacing:.07em;font-weight:900;color:var(--accent);background:rgba(215,255,63,.08);border:1px solid rgba(215,255,63,.18);padding:3px 7px;border-radius:7px}.code.large{font-size:12px;padding:5px 9px}.arrow{font-size:20px;color:var(--muted)}.empty{padding:26px;background:var(--surface);border:1px dashed var(--line);border-radius:var(--radius);color:var(--muted)}.empty a{color:var(--accent)}.crumb{display:flex;gap:8px;align-items:center;color:var(--muted);font-size:13px;margin-bottom:24px;overflow:hidden}.crumb a:hover{color:var(--text)}.auth-wrap{min-height:calc(100vh - 190px);display:grid;place-items:center}.auth-card,.form-card,.detail-card{background:linear-gradient(145deg,var(--surface),#12151a);border:1px solid var(--line);border-radius:28px;padding:clamp(24px,5vw,42px);box-shadow:var(--shadow)}.auth-card{width:min(520px,100%);text-align:center}.auth-card .stack{text-align:left;margin-top:28px}.stack{display:grid;gap:18px}.stack label{display:grid;gap:7px;font-size:13px;font-weight:800}.hint{font-weight:500;color:var(--muted)}input,textarea,select{width:100%;border:1px solid var(--line);background:#101319;color:var(--text);border-radius:13px;padding:12px 13px;font:inherit;outline:0;transition:.15s}input:focus,textarea:focus,select:focus{border-color:#63703e;box-shadow:0 0 0 3px rgba(215,255,63,.07)}textarea{resize:vertical;line-height:1.6}.two-col{display:grid;grid-template-columns:1fr 2fr;gap:14px}.actions{display:flex;justify-content:flex-end;gap:10px;align-items:center}.actions.split{justify-content:space-between}.detail-card{padding:clamp(24px,5vw,48px)}.detail-top{display:flex;justify-content:space-between;gap:20px;align-items:flex-start}.content-text{font-size:17px;line-height:1.8;white-space:normal;border-top:1px solid var(--line);padding-top:28px;margin-top:25px;color:#e8ecf1}.detail-foot{border-top:1px solid var(--line);padding-top:18px;margin-top:34px;color:var(--muted);font-size:12px}.flash{padding:12px 14px;border-radius:13px;margin-bottom:18px;background:rgba(215,255,63,.1);border:1px solid rgba(215,255,63,.18);color:#eaff9a}.flash.error{background:rgba(255,107,107,.08);border-color:rgba(255,107,107,.22);color:#ff9b9b}.flash a{text-decoration:underline}.admin-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.muted{color:var(--muted)}.admin-list{border:1px solid var(--line);background:var(--surface);border-radius:var(--radius);overflow:hidden}.admin-row{display:flex;justify-content:space-between;align-items:center;padding:15px 18px;border-bottom:1px solid var(--line)}.admin-row:last-child{border:0}.admin-row>div{display:grid}.admin-row span{color:var(--muted);font-size:12px}.icon-danger{width:34px;height:34px;border-radius:10px;border:1px solid rgba(255,107,107,.2);background:rgba(255,107,107,.06);color:#ff8585;font-size:20px;cursor:pointer}.footer{width:min(1120px,calc(100% - 32px));margin:0 auto;padding:25px 0 40px;color:#606a78;font-size:12px;border-top:1px solid rgba(255,255,255,.05)}@media(max-width:820px){.shell{padding-top:30px}.group-grid{grid-template-columns:1fr 1fr}.hero{align-items:flex-start;flex-direction:column}.admin-grid{grid-template-columns:1fr}.two-col{grid-template-columns:1fr}.nav a{font-size:0;padding:9px}.nav a:before{font-size:14px}.nav a[href="index.php"]:before{content:"Ryhmät"}.nav a[href="add.php"]:before{content:"+ Lisää"}.nav a[href="admin.php"]:before{content:"Admin"}.nav a[href="logout.php"]:before{content:"Ulos"}}@media(max-width:560px){.topbar{padding:12px 16px}.brand>span:last-child{display:none}.shell{width:min(100% - 22px,1120px)}.group-grid{grid-template-columns:1fr}.group-card{min-height:175px}.searchbar button{display:none}.searchbar{padding-right:15px}.entry-row{padding:16px}.entry-row p{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.detail-top{flex-direction:column}.actions.split{align-items:stretch;flex-direction:column-reverse}.actions.split>div{display:flex;justify-content:flex-end}.auth-card,.form-card,.detail-card{border-radius:22px;padding:22px}.hero h1{font-size:38px}}

/* v2: kayttajat, kirjautumisloki ja IEC / Structured Text */
.user-chip{display:inline-flex;align-items:center;max-width:160px;padding:7px 10px;border-radius:999px;background:rgba(255,255,255,.045);border:1px solid var(--line);color:var(--muted);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.meta-chip{display:inline-flex;align-items:center;padding:3px 8px;border-radius:999px;border:1px solid var(--line);background:rgba(255,255,255,.035);color:var(--muted);font-size:11px;font-weight:800;letter-spacing:.02em}
.code-meta{border-color:rgba(215,255,63,.2);background:rgba(215,255,63,.07);color:#e8ff8d}
.button.small{padding:8px 11px;border-radius:10px;font-size:12px}

.code-editor-section{margin-top:8px;padding-top:26px;border-top:1px solid var(--line)}
.code-editor-heading{display:flex;align-items:end;justify-content:space-between;gap:14px;margin-bottom:13px}
.code-editor-heading h2,.code-section-title h2{margin:4px 0 0;font-size:20px;letter-spacing:-.025em}
.code-editors{display:grid;gap:13px}
.code-example-editor{overflow:hidden;border:1px solid #2c333d;border-radius:16px;background:#0b0e12;box-shadow:inset 0 1px 0 rgba(255,255,255,.025)}
.code-editor-top{display:grid;grid-template-columns:1fr auto;gap:8px;padding:9px;background:#11151b;border-bottom:1px solid #272e37}
.code-editor-top input{background:transparent;border:0;box-shadow:none;padding:8px 10px}
.code-editor-top input:focus{box-shadow:none;border-color:transparent}
.remove-code{width:37px;height:37px;border-radius:10px;border:1px solid rgba(255,107,107,.18);background:rgba(255,107,107,.05);color:#ff8f8f;font-size:20px;cursor:pointer}
.code-input{display:block;border:0;border-radius:0;background:#0b0e12;box-shadow:none!important;padding:17px 18px;color:#d9f27d;font:13px/1.65 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono",monospace;tab-size:4;min-height:170px}
.code-input:focus{border:0;box-shadow:none}

.code-section{margin-top:38px;padding-top:31px;border-top:1px solid var(--line)}
.code-section-title{margin-bottom:15px}
.code-example-list{display:grid;gap:16px}
.code-example{overflow:hidden;border:1px solid #2c333d;border-radius:18px;background:#0a0d10;box-shadow:0 18px 45px rgba(0,0,0,.2)}
.code-example-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 15px;background:linear-gradient(180deg,#151a21,#11151a);border-bottom:1px solid #29313a}
.code-example-head>div{display:flex;align-items:center;gap:9px;min-width:0}
.code-example-head strong{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.code-dot{width:8px;height:8px;border-radius:50%;background:var(--accent);box-shadow:0 0 12px rgba(215,255,63,.35)}
.copy-code{appearance:none;border:1px solid #303946;border-radius:9px;background:#181d24;color:#cbd3dc;font:inherit;font-size:11px;font-weight:800;padding:6px 9px;cursor:pointer}
.copy-code:hover{border-color:#4a5665;color:#fff}
.code-example pre{margin:0;overflow:auto;padding:20px;max-height:620px}
.code-example code{color:#e3edc2;font:13px/1.72 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono",monospace;white-space:pre;tab-size:4}

.user-admin-grid{grid-template-columns:minmax(300px,.8fr) minmax(0,1.2fr)}
.user-list-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;align-self:start}
.user-row{padding:15px 16px;border-bottom:1px solid var(--line);display:grid;gap:13px}
.user-row:last-child{border-bottom:0}
.user-main{display:flex;gap:11px;align-items:center;min-width:0}
.user-main>div:last-child{display:grid;min-width:0}
.user-main strong{font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.user-main span,.user-main small{color:var(--muted);font-size:11px}
.user-avatar{flex:0 0 auto;width:38px;height:38px;border-radius:12px;display:grid;place-items:center;background:rgba(215,255,63,.09);border:1px solid rgba(215,255,63,.14);color:var(--accent);font-weight:900}
.user-actions{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.inline-form{margin:0;display:flex;gap:6px;align-items:center}
.password-reset{flex:1;min-width:240px}
.password-reset input{padding:8px 10px;border-radius:10px;font-size:12px;min-width:130px}
.privacy-note{max-width:820px;margin:-2px 0 15px}
.log-table-wrap{overflow:auto;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}
.log-table{width:100%;border-collapse:collapse;min-width:590px}
.log-table th,.log-table td{padding:12px 14px;text-align:left;border-bottom:1px solid var(--line);font-size:12px}
.log-table th{color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.08em;background:#11151a}
.log-table tr:last-child td{border-bottom:0}
.status-pill{display:inline-flex;padding:3px 7px;border-radius:999px;font-size:10px;font-weight:900}
.status-pill.ok{color:#dfff79;background:rgba(215,255,63,.08);border:1px solid rgba(215,255,63,.17)}
.status-pill.bad{color:#ff9a9a;background:rgba(255,107,107,.07);border:1px solid rgba(255,107,107,.17)}

@media(max-width:820px){.user-chip{display:none}.user-admin-grid{grid-template-columns:1fr}.code-editor-heading{align-items:flex-start;flex-direction:column}.password-reset{min-width:100%}}
@media(max-width:560px){.code-example pre{padding:16px}.code-example code,.code-input{font-size:12px}.user-actions{align-items:stretch}.inline-form{width:100%}.inline-form .button{flex:1}.password-reset input{flex:1}.code-editor-heading .button{width:100%}}
