/* 360 Calendar — Anthony 23/10 [AM36] : « un véritable calendrier mobile », sombre « comme le site V5 »,
   « colle au maximum au design du Hub et du site ». Repris du Hub (client_portal/portal.py) : Outfit,
   fond #090909 et halo vert, un seul vert #329664, angles droits, filets de 2 px, barre biseautée sous
   les titres, bouton vert à texte sombre. Tailles paires, aucun interlettrage. Banc test_agenda360_mobile_2310. */
@font-face{font-family:'Outfit';font-weight:400;font-style:normal;font-display:swap;src:url(/agenda/Outfit-Regular.ttf) format('truetype')}
@font-face{font-family:'Outfit';font-weight:600;font-style:normal;font-display:swap;src:url(/agenda/Outfit-SemiBold.ttf) format('truetype')}
:root{color-scheme:dark;--bg:#090909;--surface:#080C09;--surface-2:#0C100D;--field:#141414;--field-line:#333333;--line:#ffffff20;
--text:#F1F5F1;--body:#BFC6C1;--muted:#96A29B;--dim:#6B7570;--green:#329664;--green-ink:#062416;--glow:rgba(50,150,100,.16);
--danger:#ED7773;--focus:#b7e6c5;--scrim:rgba(0,0,0,.66);--weekend:rgba(255,255,255,.02);--bar:rgba(9,9,9,.94);
--c0:#329664;--c1:#8db5ee;--c2:#d3a0df;--c3:#D3AB68;--c4:#8dd4cf;--c5:#d8cda2;--slot:48px;
--font:'Outfit',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;--safe:env(safe-area-inset-bottom,0px)}
*{box-sizing:border-box;border-radius:0!important}
html{background:var(--bg)}
body{margin:0;min-height:100dvh;color:var(--body);font:16px/1.5 var(--font);-webkit-font-smoothing:antialiased;
background:radial-gradient(ellipse at 88% 0%,var(--glow),transparent 56%),var(--bg);display:flex;flex-direction:column;height:100dvh;overflow:hidden}
button,input,select,textarea{font:inherit;color:var(--text)}
button,.button{background:transparent;border:2px solid var(--line);min-height:44px;padding:8px 14px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-size:14px;line-height:1.25;-webkit-tap-highlight-color:transparent}
button:hover{border-color:var(--green)}button:disabled{opacity:.5;cursor:default}
input,select,textarea{width:100%;min-width:0;background:var(--field);border:2px solid var(--field-line);padding:10px 12px;min-height:44px;outline:none}
input:focus,select:focus,textarea:focus{border-color:var(--green)}
input::placeholder,textarea::placeholder{color:var(--dim)}
input[type=checkbox]{width:20px;height:20px;min-height:20px;padding:0;accent-color:var(--green);flex-shrink:0}
input[type=date]::-webkit-calendar-picker-indicator,input[type=datetime-local]::-webkit-calendar-picker-indicator{filter:invert(.8)}
button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,summary:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
a{color:var(--text);text-underline-offset:4px}
h1,h2,h3{color:var(--text);font-weight:600;margin:0}p{margin:0}
.primary{background:var(--green);border-color:var(--green);color:var(--green-ink);font-weight:600}
.primary:hover{border-color:var(--green)}
.danger,.error{color:var(--danger)}[hidden]{display:none!important}
.sr-only{position:absolute;width:2px;height:2px;overflow:hidden;clip-path:inset(50%)}
.icon{width:44px;padding:0}.icon svg,#calendars-toggle svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:square;flex-shrink:0}
.primary.icon svg{stroke:var(--green-ink);stroke-width:2.6}
.note{font-size:12px;color:var(--muted);white-space:pre-line}
.narrow-only{display:none}

/* En-tête : le mois et sa barre biseautée, recherche, + */
.app-header{flex:0 0 auto;display:flex;align-items:center;gap:8px;padding:12px 16px 8px;padding-top:max(12px,env(safe-area-inset-top,0px))}
.title{flex:1;min-width:0}
#period-button{border:0;padding:0 0 12px;min-height:44px;position:relative;font-size:30px;font-weight:600;line-height:1.1;color:var(--text);justify-content:flex-start;max-width:100%;text-align:left}
#period-button:after{content:'';position:absolute;left:0;bottom:0;width:44px;height:6px;background:var(--green);clip-path:polygon(0 0,100% 0,calc(100% - 6px) 100%,0 100%)}
#period{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}
#period .year{color:var(--muted);font-weight:400;margin-left:8px}
#date{position:absolute;width:2px;height:2px;min-height:2px;padding:0;border:0;opacity:0;pointer-events:none}
.header-actions{display:flex;gap:8px;align-items:center}
#create{width:auto;padding:0 14px}

.searchbar{flex:0 0 auto;display:flex;align-items:center;gap:12px;padding:0 16px 12px}
.searchbar label{flex:1}.searchbar select{max-width:240px}.searchbar span{font-size:12px;color:var(--muted)}

/* Barre d'outils : en haut sur ordinateur, en bas sur téléphone */
.toolbar{flex:0 0 auto;display:flex;align-items:center;gap:8px;padding:0 16px 12px;flex-wrap:wrap}
.views{display:flex;border:2px solid var(--line)}
.views button{border:0;min-width:44px;color:var(--muted);font-weight:600}
.views button[aria-pressed=true]{background:var(--green);color:var(--green-ink)}
#calendars-toggle{gap:6px}

main{flex:1;min-height:0;display:grid;grid-template-columns:260px minmax(0,1fr);border-top:2px solid var(--line)}
aside{border-right:2px solid var(--line);overflow:auto;padding:16px 0 24px;background:var(--surface)}
.panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 16px 12px}
.panel-head h2{font-size:22px;position:relative;padding-bottom:12px}
.panel-head h2:after{content:'';position:absolute;left:0;bottom:0;width:44px;height:6px;background:var(--green);clip-path:polygon(0 0,100% 0,calc(100% - 6px) 100%,0 100%)}
.panel-head button{min-height:36px;padding:4px 10px;font-size:12px}
.cal-group{display:flex;align-items:center;gap:10px;padding:12px 16px 4px;font-size:14px;color:var(--text);font-weight:600}
.cal-group:before{content:'';width:4px;height:16px;background:var(--green)}
.calendar-row{display:flex;align-items:center;gap:12px;min-height:52px;padding:4px 16px;overflow-wrap:anywhere;cursor:pointer;font-size:16px;color:var(--text)}
.calendar-row input{appearance:none;-webkit-appearance:none;width:22px;height:22px;min-height:22px;border:2px solid var(--cal);background:transparent;display:grid;place-items:center;margin:0}
.calendar-row input:checked{background:var(--cal)}
.calendar-row input:checked:after{content:'';width:10px;height:6px;border-left:2px solid var(--bg);border-bottom:2px solid var(--bg);transform:translateY(-2px) rotate(-45deg)}
.calendar-row small{display:block;color:var(--muted);font-size:12px}
.status{font-size:12px;color:var(--muted);padding:8px 16px;margin:8px 16px 0;border-left:4px solid var(--green);background:var(--surface-2)}
.panel-links{display:flex;flex-direction:column;margin-top:16px}
.panel-links>*{display:flex;justify-content:space-between;align-items:center;min-height:48px;padding:0 16px;border:0;border-top:2px solid var(--line);font-size:16px;color:var(--body);text-decoration:none;width:100%;text-align:left}
.panel-links span{color:var(--muted);font-size:14px}
.privacy{font-size:12px;color:var(--muted);padding:16px 16px 0}

.agenda{min-width:0;display:flex;flex-direction:column;min-height:0}
#notice{font-size:14px;color:var(--body);white-space:pre-line}
#notice:not(:empty){padding:8px 12px;border-left:4px solid var(--danger);margin:8px 16px;background:var(--surface-2)}
#board{flex:1;min-height:0;overflow:auto;position:relative;touch-action:pan-y pinch-zoom}
#board{transition:transform .16s ease-out;will-change:transform}#board.suit{transition:none}
#board.slide-next{animation:slide-next .18s ease-out}#board.slide-prev{animation:slide-prev .18s ease-out}
@keyframes slide-next{from{transform:translateX(48px);opacity:.5}to{transform:none;opacity:1}}
@keyframes slide-prev{from{transform:translateX(-48px);opacity:.5}to{transform:none;opacity:1}}
.empty{padding:32px 16px;color:var(--muted)}

/* Couleurs des calendriers */
.c0{--cal:var(--c0)}.c1{--cal:var(--c1)}.c2{--cal:var(--c2)}.c3{--cal:var(--c3)}.c4{--cal:var(--c4)}.c5{--cal:var(--c5)}

/* Mois : sept colonnes, semaines séparées, étiquettes colorées, +N */
.month-view{display:flex;flex-direction:column;min-height:100%}
.month-head{position:sticky;top:0;z-index:1;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));background:var(--bg);text-align:center;font-size:12px;font-weight:600;color:var(--muted);padding:6px 0;border-bottom:2px solid var(--line)}
.month{flex:1;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-auto-rows:minmax(112px,1fr)}
.month-day{min-width:0;overflow:hidden;border-bottom:2px solid var(--line);padding:4px 2px 2px;cursor:pointer;display:flex;flex-direction:column;gap:2px}
.month-day:nth-child(7n+6),.month-day:nth-child(7n){background:var(--weekend)}
.month-day.selected{box-shadow:inset 0 0 0 2px var(--green)}
.month-date{border:0;min-height:24px;height:24px;width:28px;padding:0;margin:0 auto 2px;font-size:14px;font-weight:600;color:var(--body);flex-shrink:0}
.month-day.other .month-date{color:var(--dim)}
.month-date.is-today{background:var(--green);color:var(--green-ink)}
.month-event{display:block;width:100%;min-height:18px;height:18px;line-height:14px;padding:0 4px;font-size:12px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:clip;text-align:left;border:0;border-left:2px solid var(--cal);background:color-mix(in srgb,var(--cal) 20%,transparent);color:var(--text)}
.month-event.all{background:var(--cal);color:var(--bg)}
.more{display:block;font-size:12px;font-weight:600;color:var(--muted);padding:0 4px;min-height:16px;border:0;text-align:left}

/* Semaine / jour */
.week{min-width:900px}.week.single{min-width:280px}
.week-head,.week-body{display:grid;grid-template-columns:48px repeat(7,minmax(0,1fr))}
.week.single .week-head,.week.single .week-body{grid-template-columns:48px minmax(0,1fr)}
.week-head{position:sticky;top:0;z-index:3;background:var(--bg);border-bottom:2px solid var(--line)}
.dayhead{padding:8px 4px;border-left:2px solid var(--line);font-size:14px;text-align:center;color:var(--body)}
.dayhead.is-today{color:var(--text);box-shadow:inset 0 4px var(--green)}
.all-day{display:block;overflow:hidden;text-overflow:ellipsis;font-size:12px;min-height:28px;padding:2px 4px;text-align:left;border:0;border-left:4px solid var(--cal);background:color-mix(in srgb,var(--cal) 20%,transparent);margin-top:4px;max-width:100%;width:100%}
.hours{font-size:12px;color:var(--muted)}.hour{height:var(--slot);padding:2px 4px}
.daylane{height:1152px;position:relative;border-left:2px solid var(--line);background:repeating-linear-gradient(to bottom,transparent 0,transparent 46px,var(--line) 46px,var(--line) 48px)}
.event-block{position:absolute;overflow:hidden;padding:4px 6px;min-height:24px;text-align:left;display:block;background:color-mix(in srgb,var(--cal) 18%,var(--surface));border:0;border-left:4px solid var(--cal);font-size:12px;line-height:16px;color:var(--body)}
.event-block b{display:block;font-size:14px;line-height:18px;color:var(--text);font-weight:600}
.event-block.free{background:var(--surface);outline:2px dashed var(--line);outline-offset:-2px}
.event-block[draggable=true]{cursor:grab}

/* Liste */
.agenda-day h2{padding:12px 16px;border-bottom:2px solid var(--line);font-size:18px;position:sticky;top:0;background:var(--bg);z-index:1}
.list-event{width:100%;display:grid;grid-template-columns:128px minmax(0,1fr) 160px;text-align:left;gap:16px;padding:14px 16px;border:0;border-bottom:2px solid var(--line);border-left:4px solid var(--cal);align-items:start}
.list-event b{display:block;font-size:16px;color:var(--text);font-weight:600}
.list-event small{color:var(--muted);font-size:12px;overflow-wrap:anywhere}
.list-event time{font-size:14px;color:var(--text);font-weight:600}.list-event .cal-label{color:var(--cal)}

/* Feuilles et fenêtres */
dialog{background:var(--surface);color:var(--body);border:2px solid var(--line);padding:0;width:min(680px,calc(100vw - 24px));max-height:calc(100dvh - 32px);overflow:auto}
dialog::backdrop{background:var(--scrim)}
dialog h2{font-size:22px}
dialog label{display:flex;flex-direction:column;gap:6px;margin:12px 0;font-size:14px;color:var(--text)}
dialog fieldset{border:0;padding:0;margin:0;min-width:0}
.dialog-heading{position:sticky;top:0;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;background:var(--surface);border-bottom:2px solid var(--line)}
.dialog-heading h2{font-size:18px;text-align:center;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dialog-heading .icon{font-size:24px}
.form-body{padding:12px 16px 24px}
.form-body>button,.form-body>a,.form-body>p{margin-top:12px}
#preferences .form-body>button,#preferences .form-body>a{display:flex;width:100%}
.group{background:var(--bg);border:2px solid var(--line);padding:0 14px;margin:12px 0}
.group>label:first-child{margin-top:12px}
.two{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.check{flex-direction:row!important;align-items:center;gap:10px!important;min-height:44px;color:var(--body)!important;font-size:16px!important}
.more-options summary{min-height:48px;display:flex;align-items:center;justify-content:space-between;gap:12px;cursor:pointer;color:var(--text);list-style:none}
.more-options summary::-webkit-details-marker{display:none}
.more-options summary span{color:var(--muted);font-size:14px}
.more-options[open] summary{border-bottom:2px solid var(--line)}
.dialog-footer{display:flex;flex-wrap:wrap;gap:8px;margin-top:20px;padding-top:16px;border-top:2px solid var(--line)}
.rsvp,.choice-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.choice-actions{margin-top:20px}.rsvp{margin-top:12px;color:var(--text)}
#form-error{white-space:pre-line;font-size:14px}
#choice,#confirmation{padding:20px 16px 16px}
#choice p,#confirmation p{margin-top:12px;color:var(--body)}
.setup-step{margin-top:20px;padding-top:16px;border-top:2px solid var(--line)}
.setup-step h3{font-size:18px;margin-bottom:8px}.setup-step>*+*{margin-top:8px}
.setup-step .connect{display:block}
.setup-secrets dt{color:var(--text);font-weight:600;margin-top:8px;overflow-wrap:anywhere}.setup-secrets dd{margin:0;font-size:14px}
#google-guide ol{padding-left:20px}#google-guide li{margin:6px 0}code{overflow-wrap:anywhere}

/* Notes du rendez-vous [AF36] */
.note-block{padding:12px 14px 14px;border-left:4px solid var(--green)}
.note-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px}
.note-head h3{font-size:18px}
#note-meta{font-size:12px;color:var(--muted)}
#note-text{margin-top:8px;min-height:120px;resize:vertical}
.note-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:10px 0 6px}
#note-status{font-size:12px;color:var(--muted)}
.has-note{display:inline-block;margin-left:6px;padding:0 6px;font-size:10px;font-weight:600;color:var(--green-ink);background:var(--green);vertical-align:middle}

/* Feuille Journée */
.sheet-grab{height:20px;display:grid;place-items:center}
.sheet-grab:after{content:'';width:40px;height:4px;background:var(--dim)}
.sheet-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:4px 16px 0}
.sheet-head h2{font-size:24px;position:relative;padding-bottom:12px;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sheet-head h2:after{content:'';position:absolute;left:0;bottom:0;width:44px;height:6px;background:var(--green);clip-path:polygon(0 0,100% 0,calc(100% - 6px) 100%,0 100%)}
.sheet-actions{display:flex;gap:8px}
.day-meta{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:4px 16px 0}
#day-count{font-size:14px}
#day-view{border:0;min-height:36px;padding:0 4px;color:var(--text);white-space:nowrap}
.week-strip{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));padding:12px 8px;border-bottom:2px solid var(--line)}
.week-strip button{border:0;flex-direction:column;gap:2px;padding:4px 0;min-height:56px;font-size:12px;color:var(--muted)}
.week-strip b{display:grid;place-items:center;width:28px;height:24px;font-size:14px;color:var(--body)}
.week-strip button.is-today b{background:var(--green);color:var(--green-ink)}
.week-strip button[aria-pressed=true] b{box-shadow:0 0 0 2px var(--green)}
.dots{display:flex;gap:2px;height:6px}.dots i{width:6px;height:6px;background:var(--cal)}
.day-event{width:100%;display:flex;gap:12px;align-items:stretch;text-align:left;padding:12px 16px;border:0;border-bottom:2px solid var(--line);justify-content:flex-start}
.day-event time{width:52px;flex:0 0 52px;font-size:14px;font-weight:600;color:var(--text);line-height:18px}
.day-event time small{display:block;font-weight:400;color:var(--muted);font-size:12px}
.day-event .bar{width:4px;flex:0 0 4px;background:var(--cal)}
.day-event b{display:block;font-size:16px;font-weight:600;color:var(--text)}
.day-event small{display:block;font-size:12px;color:var(--muted);overflow-wrap:anywhere}
.day-event .cal-label{color:var(--cal)}
#day-events .empty{padding:24px 16px}

.scrim{display:none}

/* Téléphone */
@media(max-width:760px){
 .wide-only{display:none!important}.narrow-only{display:inline-flex}
 .app-header{padding:10px 12px 6px 16px}
 #period-button{font-size:28px}
 .searchbar{display:none;padding:0 12px 10px;flex-wrap:wrap}.searchbar.open{display:flex}
 .searchbar select{max-width:none;flex:1}.searchbar span{display:none}
 #create{width:44px;padding:0}
 .toolbar{order:9;position:relative;z-index:6;justify-content:space-between;gap:6px;padding:10px 8px calc(10px + var(--safe));margin:0;border-top:2px solid var(--line);background:var(--bar);flex-wrap:nowrap}
 .toolbar>button{padding:0 10px}
 .views button{min-width:36px;padding:0}
 main{display:block;position:relative;border-top:0}
 .agenda{height:100%}
 aside{position:fixed;left:0;right:0;bottom:0;z-index:20;max-height:86dvh;border:0;border-top:2px solid var(--green);padding:12px 0 calc(16px + var(--safe));transform:translateY(102%);transition:transform .22s ease-out;visibility:hidden}
 aside.open{transform:none;visibility:visible}
 .scrim{position:fixed;inset:0;z-index:19;background:var(--scrim);display:block}
 .month{grid-auto-rows:minmax(96px,1fr)}
 .month-event{font-size:10px;height:16px;min-height:16px;line-height:14px;padding:0 2px;pointer-events:none}
 .more{font-size:10px;min-height:14px;padding:0 2px;pointer-events:none}
 .week{min-width:0}.week-head,.week-body{grid-template-columns:36px repeat(7,minmax(0,1fr))}
 .week.single .week-head,.week.single .week-body{grid-template-columns:44px minmax(0,1fr)}
 .dayhead{font-size:12px;padding:6px 0}.hour{font-size:10px}
 .event-block{padding:2px 4px;font-size:10px;line-height:14px}.event-block b{font-size:12px;line-height:16px}
 .week:not(.single) .event-block{font-size:0}.week:not(.single) .event-block b{font-size:10px;line-height:14px}
 .list-event{grid-template-columns:92px minmax(0,1fr);gap:4px 12px;padding:12px 16px}.list-event .cal-label{grid-column:2}
 dialog.full{width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;margin:0;border:0}
 dialog.sheet{width:100vw;max-width:100vw;margin:auto 0 0;max-height:88dvh;border:0;border-top:2px solid var(--green)}
 .two{grid-template-columns:1fr}
 .dialog-heading{padding:10px 12px}
 .dialog-heading>button{padding:0 12px}
}
@media not all and (max-width:760px){#calendars-toggle{display:none}aside{display:block}.toolbar{order:0}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation:none!important;transition:none!important}}
