:root{color-scheme:dark;--bg:#090a0d;--surface:#14161c;--surface2:#1c1e25;--text:#f6f6f8;--muted:#a0a2b0;--subtle:#717481;--line:#2b2d36;--accent:#f0445f;--accent-dark:#4c222d;--green:#9ad3ac;--font:-apple-system,BlinkMacSystemFont,"Segoe UI",Inter,Arial,sans-serif}
*{box-sizing:border-box}html{background:var(--bg)}body{margin:0;min-width:320px;font-family:var(--font);background:var(--bg);color:var(--text);-webkit-tap-highlight-color:transparent}button,input{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,a:focus-visible{outline:2px solid #ff7a93;outline-offset:3px}.app-shell{max-width:540px;min-height:100dvh;margin:auto;position:relative;background:var(--bg);box-shadow:0 0 100px #0007;overflow:hidden}.screen{padding:24px 20px calc(116px + env(safe-area-inset-bottom));min-height:100dvh}.loading-view{height:100dvh;display:grid;place-items:center}.brand{font-size:23px;font-weight:900;letter-spacing:-1.25px}.brand span{color:var(--accent)}.topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px;gap:12px}.top-actions{display:flex;align-items:center;gap:8px}.icon-btn{display:grid;place-items:center;width:42px;height:42px;background:#171820;border:1px solid #292b35;color:#f4f4f7;border-radius:14px}.icon-btn svg,.nav-item svg,.section-heading svg,.small-icon svg,.check-area svg,.action-button svg,.details-back svg,.toast svg,.settings-icon svg{width:19px;height:19px;stroke-width:1.9;flex-shrink:0}.private-tag{font-size:10px;color:#a3dcb7;background:#173023;border:1px solid #254835;border-radius:20px;padding:6px 9px;letter-spacing:.2px;font-weight:700}.eyebrow{text-transform:uppercase;letter-spacing:1.4px;font-size:10px;color:#999baa;font-weight:700}.page-title{font-size:29px;line-height:1.12;font-weight:780;letter-spacing:-.9px;margin:0 0 8px}.subtitle{font-size:13px;line-height:1.5;color:var(--muted);margin:0}.section-heading{display:flex;justify-content:space-between;align-items:center;margin:27px 0 13px;gap:10px}.section-heading h2{font-size:19px;letter-spacing:-.35px;margin:0;font-weight:760}.section-heading .meta{font-size:11px;color:var(--muted)}.hero{position:relative;height:315px;border-radius:22px;overflow:hidden;border:1px solid #44434d;background:#212330;margin-top:12px}.hero-art{position:absolute;inset:0;background-size:cover;background-position:center 35%;filter:saturate(1.08)}.hero::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(9,10,13,.01) 5%,rgba(9,10,13,.27) 40%,rgba(9,10,13,.97) 100%)}.hero-content{position:absolute;inset:auto 17px 16px;z-index:2}.hero-content h2{font-size:30px;letter-spacing:-.8px;line-height:1.05;margin:9px 0 8px;text-shadow:0 1px 7px #000a}.hero-content .description{color:#e1e1e6;font-size:12px;line-height:1.5;margin:0 0 15px;max-width:315px}.hero .tag{font-size:10px;color:#fff;background:rgba(240,68,95,.93);padding:6px 9px;border-radius:7px;letter-spacing:.55px;font-weight:750}.next-panel{display:flex;align-items:center;gap:10px;border:1px solid #45454c;background:rgba(26,27,34,.95);border-radius:14px;padding:11px 12px;min-height:75px}.next-panel .next-meta{flex:1;min-width:0}.next-panel .episode-id{font-size:11px;color:#ff8194;font-weight:750;letter-spacing:.35px}.next-panel .episode-title{font-size:13px;font-weight:730;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:3px}.next-panel .hint{font-size:10px;color:#b2b3bd;margin-top:4px}.checkbox-outer{width:40px;height:40px;display:grid;place-items:center;background:#292b34;border:1px solid #666874;border-radius:12px;color:#dfe0e6;flex-shrink:0;transition:transform .16s,background .16s}.checkbox-outer:active{transform:scale(.94)}.checkbox-outer.checked{background:#264232;border-color:#62aa79;color:#c0f5cc}.checkbox-outer svg{width:22px;height:22px}.card-list{display:grid;gap:9px}.queue-card{display:flex;gap:12px;align-items:center;background:#191a21;border:1px solid #2b2d36;padding:9px;border-radius:16px;min-width:0}.poster-mini{width:66px;height:90px;object-fit:cover;border-radius:10px;flex-shrink:0;background:#363645}.queue-content{flex:1;min-width:0}.queue-content h3{margin:0 0 7px;font-size:14px;font-weight:770;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.queue-content .item-episode{font-size:11px;color:#ff758e;font-weight:650;margin-bottom:4px}.queue-content .item-title{font-size:11px;color:#e7e7ea;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.queue-content .item-sub{font-size:10px;color:var(--muted);margin-top:4px}.progress{height:4px;border-radius:4px;background:#3e404b;overflow:hidden;margin-top:11px}.progress>span{display:block;background:var(--accent);height:100%;border-radius:4px;transition:width .25s}.nav{position:fixed;z-index:12;bottom:0;width:100%;max-width:540px;background:rgba(15,16,22,.96);border-top:1px solid #343640;padding:12px 10px calc(12px + env(safe-area-inset-bottom));display:grid;grid-template-columns:repeat(5,1fr);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)}.nav-item{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:5px;background:none;border:0;color:#8e909d;min-height:48px;padding:0;font-size:9px;font-weight:660}.nav-item.active{color:var(--accent)}.nav-item svg{width:22px;height:22px}.filter-row{display:flex;overflow:auto;gap:8px;padding:14px 0 3px;scrollbar-width:none}.filter-row::-webkit-scrollbar{display:none}.filter-pill{flex-shrink:0;border:1px solid #34343b;background:#1f2129;color:#b7b8c2;border-radius:30px;padding:9px 13px;font-size:12px;font-weight:700}.filter-pill.active{background:var(--accent);border-color:var(--accent);color:white}.search-box{display:flex;gap:9px;align-items:center;border:1px solid #30323d;background:#1d1e26;border-radius:13px;padding:0 13px;height:47px;color:#a4a5ae;margin:18px 0 0}.search-box svg{width:18px;height:18px;flex-shrink:0}.search-box input{width:100%;border:0;outline:0;color:white;background:transparent;font-size:13px}.search-box input::placeholder{color:#777987}.poster-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 12px;margin-top:16px}.poster-tile{min-width:0}.poster-art{width:100%;aspect-ratio:2/3;object-fit:cover;display:block;border-radius:13px;border:1px solid #383942;box-shadow:0 8px 16px #0006}.poster-tile h3{font-size:13px;letter-spacing:-.2px;margin:10px 0 5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.poster-tile .poster-sub{font-size:11px;color:#f17b8f;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.35;min-height:16px}.poster-tile .tile-actions{display:flex;gap:7px;align-items:center;margin-top:9px;justify-content:space-between}.tile-actions .tiny-check{border:1px solid #4e505a;background:#262831;color:#d2d4dc;border-radius:9px;min-width:43px;height:34px;display:flex;align-items:center;justify-content:center;gap:5px;font-size:10px;font-weight:750}.tiny-check svg{width:15px;height:15px}.tile-actions .tiny-check.complete{border-color:#4e885e;color:#a6efb7;background:#173025}.tile-actions .details-link{border:none;background:transparent;color:#aeb0bb;font-size:11px;padding:7px 0}.category-tag{font-size:10px;color:#e5e6eb;background:#2b2d36;border-radius:5px;padding:4px 6px}.add-btn{width:100%;margin-top:9px;display:flex;align-items:center;justify-content:center;gap:7px;height:36px;border-radius:10px;border:1px solid #373943;color:#f5f5f6;background:#252730;font-size:12px;font-weight:700}.add-btn svg{width:16px;height:16px}.add-btn.added{background:#183626;color:#9fe6b1;border-color:#2e6745}.feature-banner{height:180px;border-radius:18px;overflow:hidden;position:relative;margin:18px 0 12px}.feature-banner img{height:100%;width:100%;object-fit:cover;object-position:center 38%}.feature-banner:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#08080add,transparent 95%),linear-gradient(0deg,#08090acd,transparent 70%)}.feature-banner .overlay{position:absolute;z-index:1;bottom:17px;left:16px}.feature-banner h2{font-size:25px;margin:7px 0 0;letter-spacing:-.5px}.empty{padding:36px 15px;text-align:center;border:1px dashed #383944;border-radius:18px;color:#abb0bd;background:#15161d;margin:18px 0}.empty strong{display:block;color:#fff;font-size:15px;margin-bottom:7px}.empty p{font-size:12px;margin:0;line-height:1.5}.calendar-toolbar{display:flex;align-items:center;justify-content:space-between;margin:21px 0}.calendar-toolbar h2{margin:0;font-size:19px}.cal-tools{display:flex;gap:7px}.cal-tools button{border:1px solid #3a3b45;border-radius:10px;background:#20212a;color:#fff;width:34px;height:34px;font-size:22px}.month-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:7px 2px}.day-head{text-align:center;color:#888a97;font-size:11px;padding-bottom:9px}.day-cell{height:42px;border:1px solid transparent;background:transparent;color:#c9cbd3;border-radius:11px;font-size:13px;position:relative}.day-cell.has-event{background:#48222d;border-color:#814253;color:#fff;font-weight:800}.day-cell.today{outline:1px solid #7b7b89}.day-cell.is-other{color:#424551}.day-cell.has-event:after{content:"";position:absolute;width:4px;height:4px;bottom:3px;left:calc(50% - 2px);background:#fff;border-radius:50%}.events-list{display:grid;gap:9px;margin-top:14px}.event-card{display:flex;gap:12px;background:#1a1c23;border:1px solid #30313b;border-radius:13px;padding:13px;align-items:center}.event-date{width:54px;flex-shrink:0;text-align:center;background:#30313a;border-radius:10px;padding:8px 2px}.event-date strong{display:block;color:#ff718c;font-size:19px}.event-date span{font-size:9px;color:#c9cad3}.event-data{min-width:0}.event-data strong{font-size:13px;display:block}.event-data span{font-size:11px;color:#a6a7b4;display:block;margin-top:5px}.settings-section{margin-top:23px}.settings-section h2{font-size:10px;text-transform:uppercase;letter-spacing:1.35px;color:#a1a3b0;margin-bottom:10px}.settings-panel{background:#1b1d24;border:1px solid #292c36;border-radius:16px;padding:0 13px}.setting-row{display:flex;gap:11px;align-items:center;padding:15px 0;min-height:61px}.setting-row+.setting-row{border-top:1px solid #343640}.settings-icon{width:35px;height:35px;display:grid;place-items:center;color:#f46a82;background:#35252f;border-radius:10px;flex-shrink:0}.setting-text{flex:1}.setting-text strong{display:block;font-size:13px;font-weight:740}.setting-text small{display:block;margin-top:4px;font-size:10px;color:#a4a6b2;line-height:1.35}.setting-value{font-size:11px;color:#b9bac4}.toggle{width:43px;height:26px;border-radius:30px;background:#464852;border:none;padding:3px;display:flex;align-items:center;transition:background .2s}.toggle i{display:block;width:20px;height:20px;border-radius:50%;background:#fff;transition:transform .2s}.toggle.on{background:var(--accent)}.toggle.on i{transform:translateX(17px)}.warn{background:#281e21;border:1px solid #5a343b;padding:12px;border-radius:12px;color:#e8aeba;font-size:11px;line-height:1.6;margin-top:15px}.save-info{font-size:11px;color:#a8aab5;line-height:1.6;margin-top:15px}.details-overlay{position:fixed;inset:0;z-index:30;background:#000a;display:flex;justify-content:center;align-items:flex-end}.details-sheet{background:#111218;width:min(540px,100%);border:1px solid #40404b;border-radius:25px 25px 0 0;padding:17px 17px calc(20px + env(safe-area-inset-bottom));max-height:90dvh;overflow:auto;box-shadow:0 -20px 80px #000b}.details-back{display:flex;align-items:center;gap:6px;background:transparent;color:#e6e6e9;border:0;font-size:12px;padding:4px 0 14px}.detail-header{display:flex;gap:14px}.detail-header img{width:98px;aspect-ratio:2/3;object-fit:cover;border-radius:12px}.detail-header h2{font-size:23px;letter-spacing:-.5px;margin:4px 0 6px}.detail-header .tagline{font-size:11px;color:#c6c6d0;line-height:1.5}.detail-header small{color:#ff8399;font-size:11px}.detail-controls{display:flex;gap:10px;margin:19px 0}.action-button{display:flex;align-items:center;justify-content:center;gap:8px;background:var(--accent);color:#fff;border:0;border-radius:11px;padding:12px 15px;font-size:12px;font-weight:800;min-height:43px}.action-button.secondary{background:#292b35}.season-tabs{display:flex;gap:8px;overflow:auto;padding:5px 0 12px}.season-tabs button{flex-shrink:0;border:1px solid #40414a;background:#242630;color:#dee0e8;padding:9px 13px;border-radius:20px;font-size:12px}.season-tabs button.active{background:#ea425e;color:white;border-color:#ea425e}.episode-row{display:flex;align-items:center;gap:12px;padding:13px 0;border-top:1px solid #2c2e37}.episode-row .ep-info{flex:1;min-width:0}.episode-row .ep-info strong{font-size:12px;display:block;margin-bottom:5px}.episode-row .ep-info span{display:block;color:#aaaebb;font-size:11px}.episode-row .ep-info .air-label{color:#f58498;font-size:10px;margin-top:5px}.episode-row .checkbox-outer{width:36px;height:36px}.episode-row .checkbox-outer svg{width:18px;height:18px}.toast{position:fixed;z-index:50;bottom:calc(91px + env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);width:min(390px,calc(100% - 24px));border:1px solid #464854;background:#252731;color:#fff;padding:11px 12px;border-radius:13px;display:flex;align-items:center;gap:11px;box-shadow:0 12px 32px #0009;animation:appear .2s ease}.toast span{font-size:12px;flex:1;line-height:1.3}.toast button{background:transparent;border:0;color:#ff8fa2;font-size:12px;font-weight:800}.app-footer{font-size:10px;color:#7c808d;margin-top:34px;line-height:1.6}.label-soft{color:#b9bcc7;font-size:11px}.no-results{margin-top:30px}@keyframes appear{from{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%,0)}}
@media(min-width:600px){body{padding:22px 0}.app-shell{min-height:calc(100dvh - 44px);border:1px solid #33353d;border-radius:28px}.nav{bottom:22px;border-radius:0 0 28px 28px}.screen{min-height:calc(100dvh - 44px)}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}

.details-link svg{display:inline-block;width:12px;height:12px;vertical-align:middle}.cover-button{cursor:pointer}.warn svg,.save-info svg{display:inline-block;width:15px;height:15px;vertical-align:-3px;margin-right:4px}

/* CEYSSFLIX V1.8 : suivi épuré, validation circulaire verte */
.checkbox-outer { border-radius: 50%; background:transparent; border:2px solid #737684; color:#fff; width:38px; height:38px; min-width:38px; padding:0; }
.checkbox-outer.checked { background:#22c55e; border-color:#22c55e; color:#fff; }
.checkbox-outer:focus-visible,.season-complete-btn:focus-visible { outline:3px solid #f6a5b5;outline-offset:3px; }
.poster-tile .checkbox-outer { height:35px;width:35px;min-width:35px; }
.progress.complete > span { background:#22c55e; }
.season-summary { padding:18px 0 8px; }
.season-heading { display:flex;align-items:center;justify-content:space-between;gap:12px; }
.season-heading h3 { font-size:20px;line-height:1.25;margin:0 0 5px; }
.season-heading small { display:block;color:#a7a8b5;font-size:12px; }
.season-finished { color:#4ade80!important; }
.season-complete-btn { border:1px solid #464a52;background:#292b34;color:#fafafa;display:inline-flex;gap:7px;align-items:center;justify-content:center;padding:10px 11px;border-radius:10px;font-weight:700;font-size:11px;min-height:42px; }
.season-complete-btn svg { width:16px;height:16px; }
.season-complete-btn.is-done { border-color:#327a49;color:#4ade80;background:#183022; }
.season-progress { display:flex;align-items:center;gap:12px;margin:17px 0 8px; }
.season-progress .progress { flex:1;height:7px;margin:0; }
.season-progress strong { width:39px;text-align:right;font-size:12px;color:#e7e7ec; }
.episode-row .ep-info small { display:block;color:#999ba8;font-size:11px;margin-bottom:4px; }
.episode-row .ep-info strong { color:#f7f7fb;font-size:13px;margin-bottom:0;line-height:1.45; }
.episode-row .checkbox-outer { width:34px;height:34px;min-width:34px; }
.future-tag { color:#c8cad1;background:#282a33;padding:7px 8px;border-radius:7px;font-size:11px;white-space:nowrap; }
.movie-watch-row { margin-top:18px;display:flex;align-items:center;justify-content:space-between;gap:16px;background:#1d1f27;border-radius:13px;padding:14px; }
.movie-watch-row strong,.movie-watch-row small {display:block;}
.movie-watch-row strong {font-size:14px;margin-bottom:5px;}
.movie-watch-row small {font-size:11px;color:#b9bbc6;}

.season-complete-btn:disabled { opacity:.45;cursor:not-allowed; }
