*{box-sizing:border-box} :root{--bg:#0b0d12;--panel:#141923;--panel2:#1b2230;--text:#f5f7fb;--muted:#aab3c2;--orange:#f07822;--line:#2b3444;--pink:#ff5e85}
body{margin:0;background:radial-gradient(circle at 80% -10%,#2b1b17 0,transparent 34%),var(--bg);color:var(--text);font:16px/1.55 system-ui,-apple-system,Segoe UI,Arial,sans-serif}
a{color:inherit;text-decoration:none}a:hover{color:#ffb06f}.topbar{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:18px max(22px,calc((100% - 1200px)/2));border-bottom:1px solid var(--line);background:#0b0d12ed;position:sticky;top:0;z-index:10;backdrop-filter:blur(12px)}
.brand{font-size:20px;font-weight:800;white-space:nowrap}.brand b{color:var(--orange)}.brand-mark{display:inline-grid;place-items:center;width:34px;height:34px;border-radius:10px;background:var(--orange);margin-right:7px}
nav{display:flex;align-items:center;gap:18px;flex-wrap:wrap;font-size:14px}.nav-user{color:var(--muted)}.nav-cta,.button.primary{background: linear-gradient(145deg, #d3c0b2, #5b321e);color:white!important;border-radius:10px;padding:10px 14px;font-weight:700}
.container{max-width:1500px;margin:0 auto;padding:30px 22px 55px}.hero{padding:38px;border:1px solid #543322;border-radius:22px;background:linear-gradient(115deg,#281a17,#151923 65%,#1b2432);margin-bottom:32px}.hero h1{font-size:clamp(30px,4vw,48px);line-height:1.1;margin:0 0 12px}.hero p{max-width:700px;color:var(--muted)}.eyebrow{color:#ffb06f;text-transform:uppercase;font-size:12px;font-weight:800;letter-spacing:.15em}
.section-head{display:flex;align-items:end;justify-content:space-between;gap:12px;margin:25px 0 16px}.section-head h1,.section-head h2{margin:0}.muted{color:var(--muted)}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:22px}.movie-card{min-width:0}.poster-wrap{position:relative;aspect-ratio:2/3;background:#202634;border-radius:13px;overflow:hidden;border:1px solid #2d3544}.poster{width:100%;height:100%;object-fit:cover;display:block;transition:transform .25s}.movie-card:hover .poster{transform:scale(1.035)}.heart{position:absolute;right:9px;top:9px;background:#0b0d12d9;border:1px solid #ffffff36;color:var(--pink);border-radius:50%;width:38px;height:38px;display:grid;place-items:center;font-size:21px;cursor:pointer}.movie-title{font-weight:750;margin:9px 0 2px;display:block;line-height:1.3}.meta{font-size:12px;color:var(--muted)}.tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px}.tag{font-size:11px;color:#ffd0ad;background:#492b1d;border:1px solid #6b3c25;border-radius:6px;padding:3px 7px}
.panel,.form-card{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:22px;margin:18px 0}.form-card{max-width:720px;margin:20px auto}.form-card h1{margin-top:0}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.field{display:flex;flex-direction:column;gap:6px}.field.full{grid-column:1/-1}label{font-size:13px;color:#cbd3df;font-weight:700}input,textarea,select{width:100%;border:1px solid #394355;background:#0e121a;color:var(--text);padding:12px;border-radius:9px;font:inherit}textarea{min-height:125px;resize:vertical}.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--line);background:var(--panel2);color:var(--text);border-radius:10px;padding:11px 15px;font-weight:750;cursor:pointer}.button:hover{filter:brightness(1.15)}.button.danger{border-color:#6a2b3a;color:#ff9ab0}.actions{display:flex;gap:10px;flex-wrap:wrap;margin:18px 0}.notice{padding:12px 15px;border-radius:10px;background:#182b24;border:1px solid #2e6c50;margin:14px 0}.error{background:#321c22;border-color:#7a3547}.movie-detail{display:grid;grid-template-columns:minmax(220px,320px) 1fr;gap:32px}.detail-poster{width:100%;border-radius:16px;border:1px solid var(--line)}.backdrop{width:100%;max-height:330px;object-fit:cover;border-radius:16px;margin-bottom:22px;opacity:.9}.synopsis{white-space:pre-line;color:#d3d9e3}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:12px;border-bottom:1px solid var(--line);vertical-align:top}th{color:#ffb06f;font-size:12px;text-transform:uppercase}.footer{text-align:center;border-top:1px solid var(--line);padding:24px;color:var(--muted);font-size:12px}.tmdb-credit{margin-top:5px}.empty{padding:30px;text-align:center;border:1px dashed var(--line);border-radius:14px;color:var(--muted)}.admin-links{display:flex;flex-wrap:wrap;gap:10px}.small{font-size:12px}.inline-form{display:inline}.video-player{width:100%;max-height:75vh;background:#000;border-radius:14px}.backlink{color:#ffb06f}
@media(max-width:760px){.topbar{align-items:flex-start;flex-direction:column;padding:14px 18px}nav{gap:12px}.container{padding:22px 16px}.hero{padding:24px}.movie-detail{grid-template-columns:1fr}.detail-poster{max-width:260px}.form-grid{grid-template-columns:1fr}.field.full{grid-column:auto}.grid{grid-template-columns:repeat(auto-fill,minmax(135px,1fr));gap:14px}}


/* Portail d'accueil TGSD */
.portal-layout{display:grid;grid-template-columns:minmax(180px,225px) minmax(0,1fr) minmax(180px,225px);gap:18px;align-items:start}
.portal-column,.portal-main{min-width:0}
.portal-block{background:linear-gradient(145deg,#171d28,#10141c);border:1px solid var(--line);border-radius:14px;overflow:hidden;margin-bottom:16px}
.portal-block-title{font-size:14px;letter-spacing:.04em;text-transform:uppercase;color:#ffb06f;padding:12px 14px;margin:0;border-bottom:1px solid var(--line);background:#345a69}
.portal-block-content{padding:14px}
.portal-welcome{padding:14px 8px}.portal-welcome h1{font-size:clamp(26px,3vw,42px);line-height:1.1;margin:8px 0}.portal-welcome p{color:var(--muted)}
.portal-main .portal-block-welcome .portal-block-content{padding:22px;background:radial-gradient(circle at 85% 10%,#4b2b1b,transparent 45%)}
.portal-block-featured .portal-block-content{padding:0}.portal-featured{display:block;position:relative;min-height:220px;background:#111;overflow:hidden}.portal-featured img{width:100%;height:290px;object-fit:cover;display:block;opacity:.7}.portal-featured span{position:absolute;inset:auto 0 0;padding:28px 20px 18px;display:flex;flex-direction:column;gap:5px;background:linear-gradient(transparent,#080a0f)}.portal-featured b{font-size:11px;text-transform:uppercase;color:#ffb06f}.portal-featured strong{font-size:25px}.portal-featured small{color:#eee}
.portal-movie-grid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:14px}.portal-movie-grid .movie-title{font-size:14px}
.portal-links{display:flex;flex-direction:column;gap:7px}.portal-links a{display:block;padding:7px 9px;border:1px solid #293243;border-radius:8px;background:#111721;font-size:13px}.portal-links a:before{content:"›";color:var(--orange);font-weight:900;margin-right:8px}
.portal-login label{display:block;margin:9px 0 4px}.portal-login input{padding:9px;font-size:13px}.portal-login .actions{gap:6px}.portal-login .button{padding:8px 10px;font-size:12px}
.portal-clock{text-align:center;padding:8px 0}.portal-clock strong{display:block;font-variant-numeric:tabular-nums;font-size:26px;letter-spacing:.03em;color:#ffb06f}.portal-clock span{display:block;color:var(--muted);font-size:12px;margin-top:5px}
.portal-stat{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:8px 0;border-bottom:1px dashed var(--line);font-size:12px}.portal-stat:last-child{border:0}.portal-stat strong{font-size:20px;color:#ffb06f}
.portal-mini-movies{display:flex;flex-direction:column;gap:10px}.portal-mini-movies a{display:flex;align-items:center;gap:9px;font-size:12px;font-weight:700}.portal-mini-movies img{width:48px;height:65px;object-fit:cover;border-radius:6px}
.portal-admin-table td{min-width:115px}.portal-admin-table td:first-child{min-width:180px}.portal-groups{display:flex;flex-direction:column;gap:5px;min-width:150px}.portal-groups label{display:flex;gap:6px;align-items:center;font-weight:500}.portal-toggle{display:flex;gap:10px;align-items:center;margin-bottom:16px}
@media(max-width:1050px){.portal-layout{grid-template-columns:190px minmax(0,1fr)}.portal-right{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.portal-right .portal-block{margin:0}}
@media(max-width:700px){.portal-layout{grid-template-columns:1fr}.portal-left,.portal-right{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.portal-left .portal-block,.portal-right .portal-block{margin:0}.portal-main{grid-row:1}.portal-welcome{padding:6px}.portal-featured img{height:220px}.portal-block-title{font-size:12px;padding:10px}.portal-block-content{padding:10px}}
@media(max-width:430px){.portal-left,.portal-right{grid-template-columns:1fr}}

/* Message public lorsque les inscriptions sont fermées */
.registration-closed{background:linear-gradient(135deg,#321e17,#171d28);border:1px solid #8a4b27;color:#ffe3cf;border-radius:12px;padding:15px 18px;margin:0 0 22px}
.registration-closed p{margin:6px 0 0;color:#dfc7b7}


/* Bannière globale configurable depuis l’administration */
.site-banner-shell{display:flex;justify-content:center;align-items:center;width:100%;padding:12px 18px;background:#090c12;border-bottom:1px solid var(--line)}
.site-banner-image{display:block;max-width:100%;object-fit:cover;border:1px solid #2b3444;border-radius:12px;box-shadow:0 8px 28px rgba(0,0,0,.22)}
@media(max-width:760px){.site-banner-shell{padding:8px 12px}.site-banner-image{width:100%!important;height:auto!important;max-height:240px;object-fit:contain}}

/* Sélecteur de thèmes TGSD */
.theme-picker{position:relative;display:inline-flex;align-items:center}
.theme-picker-button{border:1px solid var(--line);background:var(--panel2);color:var(--text);border-radius:9px;padding:8px 11px;font:inherit;font-size:13px;font-weight:700;cursor:pointer;white-space:nowrap}
.theme-picker-menu{display:none;position:absolute;top:calc(100% + 8px);right:0;min-width:185px;padding:6px;background:var(--panel);border:1px solid var(--line);border-radius:11px;box-shadow:0 12px 32px #0003;z-index:50}
.theme-picker-menu.is-open{display:block}
.theme-picker-menu form{margin:0}
.theme-picker-menu button{display:block;width:100%;text-align:left;border:0;background:transparent;color:var(--text);padding:10px 12px;border-radius:7px;font:inherit;cursor:pointer}
.theme-picker-menu button:hover,.theme-picker-menu button.is-selected{background:var(--panel2);color:var(--orange)}
@media(max-width:900px){.topbar{align-items:flex-start;flex-direction:column}.theme-picker-menu{left:0;right:auto}}

/* Menu des thèmes : liste verticale dépliable */
.theme-picker{position:relative;display:inline-flex;align-items:center;flex-shrink:0}
.theme-picker-button{display:inline-flex;align-items:center;gap:7px}
.theme-picker-menu{display:none;position:absolute;top:calc(100% + 9px);right:0;left:auto;width:230px;max-height:min(70vh,420px);overflow-y:auto;padding:7px;background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:0 16px 40px #0005;z-index:100}
.theme-picker-menu.is-open{display:flex;flex-direction:column;gap:3px}
.theme-picker-menu form{display:block;width:100%;margin:0}
.theme-picker-menu button{display:block;width:100%;text-align:left;white-space:normal;border:0;background:transparent;color:var(--text);padding:11px 13px;border-radius:8px;font:inherit;cursor:pointer}
.theme-picker-menu button:hover,.theme-picker-menu button.is-selected{background:var(--panel2);color:var(--orange)}
@media(max-width:900px){.theme-picker-menu{left:0;right:auto;top:calc(100% + 6px)}}


/* Actions de gestion de son torrent */
.ks-torrent-owner-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:14px 0 18px}
.ks-torrent-owner-actions form{margin:0}
.ks-torrent-owner-actions .button{display:inline-flex;align-items:center;justify-content:center;gap:6px;text-decoration:none;cursor:pointer}
.ks-torrent-edit-button{border:1px solid #ff7a00!important;color:#ff7a00!important;background:transparent}
.ks-torrent-delete-button{border:1px solid #c0392b!important;color:#c0392b!important;background:transparent}
.ks-torrent-edit-page{max-width:900px;margin:24px auto;padding:0 16px}
.ks-torrent-edit-page .form-card{display:grid;gap:12px;padding:20px;border:1px solid var(--border-color,rgba(128,128,128,.3));border-radius:12px}
.ks-torrent-edit-page input,.ks-torrent-edit-page textarea{width:100%;box-sizing:border-box;padding:11px;border:1px solid var(--border-color,rgba(128,128,128,.35));border-radius:8px;background:var(--card-bg,transparent);color:inherit}
.portal-member-presence p{margin:6px 0 12px}
.portal-member-presence h3{font-size:1rem;margin:18px 0 8px}
.portal-member-list{display:grid;gap:8px}
.portal-member{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:7px 9px;border-radius:8px;background:rgba(128,128,128,.07)}
.portal-member strong{overflow-wrap:anywhere}
.portal-member small{margin-left:auto;font-weight:700}
.portal-member-dot{width:8px;height:8px;flex:0 0 8px;border-radius:50%;background:#25b864;box-shadow:0 0 0 3px rgba(37,184,100,.12)}
.portal-member-dot.recent{background:#9aa0a6;box-shadow:none}
.portal-member-list-recent .portal-member{opacity:.9}


/* Améliorations du portail et éditeur d'annonces TGSD */
.portal-block-welcome { grid-column: 1 / -1; }
.portal-block-welcome .portal-block-content { padding: 0; }
.portal-block-welcome .portal-welcome { min-height: 330px; padding: 36px 34px; display:flex; flex-direction:column; justify-content:center; }
.portal-welcome .portal-announcement { max-width: 100%; font-size: 1.03rem; line-height: 1.75; margin: 14px 0 18px; overflow-wrap:anywhere; }
.portal-announcement p { margin: 0 0 10px; }
.portal-announcement a { color: var(--accent, #ffad35); text-decoration: underline; }
.portal-announcement blockquote { margin: 12px 0; padding: 10px 16px; border-left: 3px solid #ff9f24; background: rgba(255,255,255,.05); }
.portal-announcement ul { padding-left: 24px; }
.bbcode-toolbar { flex-wrap:wrap; gap:7px; margin:8px 0; }
.bbcode-toolbar .button { padding:7px 10px; }
@media (min-width: 1100px) { .portal-layout:has(.portal-block-welcome) { grid-template-columns: minmax(0, 1fr) minmax(210px, 240px); } .portal-layout:has(.portal-block-welcome) .portal-main { min-width:0; } }
@media (max-width: 700px) { .portal-block-welcome .portal-welcome { min-height:0; padding:24px 18px; } }

/* Correctifs portail TGSD : colonnes stables, bloc bienvenue large et responsive */
.portal-layout{display:grid;grid-template-columns:minmax(170px,225px) minmax(0,1fr) minmax(170px,225px);gap:18px;align-items:start;width:100%;}
.portal-layout>*{min-width:0;} .portal-main{min-width:0;width:100%;} .portal-block-welcome{width:100%;max-width:100%;}
.portal-block-welcome .portal-block-content{padding:clamp(18px,2.5vw,34px)!important;}
.portal-welcome{padding:8px!important;overflow-wrap:anywhere;} .portal-welcome h1{font-size:clamp(26px,3vw,42px);line-height:1.15;overflow-wrap:break-word;}
.portal-announcement{white-space:normal;overflow-wrap:anywhere;line-height:1.65;}
.bbcode-toolbar{flex-wrap:wrap;margin:8px 0;}
@media(max-width:1000px){.portal-layout{grid-template-columns:minmax(0,1fr) minmax(0,1fr);} .portal-main{grid-column:1/-1;grid-row:1;} .portal-left{grid-column:1;grid-row:2;} .portal-right{grid-column:2;grid-row:2;}}
@media(max-width:640px){.portal-layout{grid-template-columns:minmax(0,1fr);} .portal-main,.portal-left,.portal-right{grid-column:1;grid-row:auto;}}

/* Correctif définitif : le bloc bienvenue est indépendant des colonnes latérales. */
.portal-welcome-full{display:block;width:100%;max-width:100%;min-width:0;margin:0 0 18px;grid-column:1/-1}
.portal-welcome-full>.portal-block{width:100%;max-width:100%;min-width:0;margin:0 0 18px}
.portal-welcome-full .portal-block-content{padding:clamp(20px,3vw,36px)!important;min-width:0}
.portal-welcome-full .portal-welcome{width:100%;max-width:100%;min-width:0;box-sizing:border-box;padding:8px!important;overflow-wrap:anywhere}
.portal-welcome-full .portal-welcome h1{font-size:clamp(26px,3vw,42px);line-height:1.15;overflow-wrap:anywhere;word-break:normal}
.portal-welcome-full .portal-announcement{white-space:normal;overflow-wrap:anywhere;word-break:normal;line-height:1.7}
.portal-layout:has(.portal-block-welcome){grid-template-columns:minmax(0,1fr) minmax(180px,225px)!important}
@media(max-width:1000px){.portal-layout:has(.portal-block-welcome){grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important}}
@media(max-width:640px){.portal-layout:has(.portal-block-welcome){grid-template-columns:minmax(0,1fr)!important}}
