:root{--ink:#221a18;--paper:#fff;--empty:#f3efea;--muted:#8a817c;--cw:min(72vw, 300px);--ch:min(calc(var(--cw) * 1.62), calc(100dvh - 230px));color:var(--ink);-webkit-font-smoothing:antialiased;font-family:Inter Tight,system-ui,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--paper);overscroll-behavior:none;overflow:hidden}button{font:inherit;color:inherit;-webkit-tap-highlight-color:transparent}.home{flex-direction:column;height:100dvh;display:flex}.topbar{padding:calc(14px + env(safe-area-inset-top)) 24px 0;letter-spacing:-.01em;justify-content:space-between;align-items:center;font-size:17px;font-weight:700;display:flex}.dots{gap:6px;display:flex}.dot-summary{margin-left:8px}.dot{cursor:pointer;background:#e8e3dc;border:0;border-radius:4px;width:14px;height:14px;padding:0;transition:background .3s}.stage{perspective:1100px;transform-style:preserve-3d;touch-action:pan-y;-webkit-user-select:none;user-select:none;cursor:grab;transform-origin:50% 47%;flex:1;position:relative;overflow:hidden}.stage:active{cursor:grabbing}.card{width:var(--cw);height:var(--ch);-webkit-box-reflect:below 12px linear-gradient(transparent 78%, #ffffff47);will-change:transform;backface-visibility:hidden;border-radius:32px;flex-direction:column;padding:24px 22px 20px;display:flex;position:absolute;top:47%;left:50%}.card-shade{border-radius:inherit;pointer-events:none;background:#000;position:absolute;inset:0}.card:not(.active){cursor:pointer}.card-head{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.card-title{letter-spacing:-.05em;font-weight:800;line-height:.92;font-size:calc(var(--cw) * .145);margin:0}.card-num{padding-top:6px;font-size:13px;font-weight:700}.card-grid{background:var(--paper);border-radius:18px;flex:1;min-height:0;margin:18px 0 16px;padding:12px;display:flex}.mini{flex:1;grid-template-rows:repeat(31,1fr);grid-template-columns:repeat(12,1fr);grid-auto-flow:column;gap:2px 3px;display:grid}.mini-cell{background:#e9e3dd;border-radius:2px}.mini-cell.future{background:var(--empty)}.mini-cell.none{background:0 0}.card-foot{justify-content:space-between;align-items:center;font-size:15px;font-weight:700;display:flex}.open-btn{background:var(--ink);color:#fff;border-radius:50%;place-items:center;width:50px;height:50px;font-size:20px;display:grid}.bonheur{margin:0 20px calc(24px + env(safe-area-inset-bottom));border:2px solid var(--ink);background:var(--paper);cursor:pointer;border-radius:999px;justify-content:space-between;align-self:center;align-items:center;gap:12px;width:min(100% - 40px,440px);padding:17px 26px;font-size:17px;font-weight:700;display:flex}.bonheur-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.cal{z-index:50;position:fixed;inset:0;overflow:hidden}.ghost{pointer-events:none;border-radius:32px;flex-direction:column;padding:24px 22px 20px;display:flex;position:absolute}.ghost .card-title{font-size:calc(var(--cw) * .145)}.cal-inner{max-width:620px;padding:calc(14px + env(safe-area-inset-top)) 14px calc(14px + env(safe-area-inset-bottom));flex-direction:column;margin:0 auto;display:flex;position:absolute;inset:0}.cal-head{align-items:center;gap:14px;padding:0 4px 14px;display:flex}.round-btn{background:var(--ink);color:#fff;cursor:pointer;border:0;border-radius:50%;flex:none;width:44px;height:44px;font-size:19px}.cal-title{letter-spacing:-.045em;margin:0;font-size:28px;font-weight:800;line-height:1}.cal-sub{opacity:.65;margin:4px 0 0;font-size:13px;font-weight:600}.cal-panel{contain:layout paint;background:var(--paper);border-radius:24px;flex:1;min-height:0;padding:12px 12px 10px 6px;display:flex}.cal-grid{flex:1;grid-template-rows:auto repeat(31,minmax(0,1fr));grid-template-columns:20px repeat(12,1fr);gap:2px 3px;display:grid}.cal-month,.cal-daynum{animation:.4s both fade;animation-delay:var(--d);justify-content:center;align-items:center;font-size:11px;font-weight:700;display:flex}.cal-month{padding-bottom:4px}.cal-daynum{color:var(--muted);justify-content:flex-end;padding-right:4px;font-size:9px}.c{color:#221a1861;cursor:pointer;min-height:0;animation:.4s cubic-bezier(.2,.9,.3,1.3) both pop;animation-delay:var(--d);background:#e9e3dd;border:0;border-radius:4px;justify-content:center;align-items:center;padding:0;font-size:8px;font-weight:700;line-height:1;transition:background .3s;display:flex;overflow:hidden}.c.future{background:var(--empty);color:#221a182e;cursor:default}.c.today{box-shadow:inset 0 0 0 2px var(--ink)}.c.selected{box-shadow:0 0 0 2px var(--paper), 0 0 0 4px var(--ink);z-index:1;position:relative}.c:not(:disabled):hover{filter:brightness(.94)}.legend{flex-wrap:wrap;gap:8px 14px;padding:14px 6px 0;font-size:13px;font-weight:600;display:flex}.legend-item{animation:.4s both fade;animation-delay:var(--d);align-items:center;gap:6px;display:flex}.legend-item i{border-radius:4px;width:14px;height:14px}@keyframes pop{0%{opacity:0;transform:scale(.2)}to{opacity:1;transform:none}}@keyframes fade{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.backdrop{z-index:80;background:#1e141252;position:fixed;inset:0}.sheet{z-index:90;background:var(--paper);border-radius:28px 28px 0 0;flex-direction:column;width:100%;max-width:560px;max-height:90dvh;margin:0 auto;display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -10px 40px #0000001f}.sheet-grab{touch-action:none;cursor:grab;flex:none;justify-content:space-between;align-items:center;padding:8px 12px 0;display:flex}.sheet-grab .grabber{margin:0 auto}.nav-btn{cursor:pointer;background:#f6f3ef;border:0;border-radius:50%;width:34px;height:34px;font-size:20px;font-weight:700;line-height:1}.nav-btn:disabled{opacity:.3;cursor:default}.sheet-page{touch-action:pan-y;-webkit-user-select:none;user-select:none;flex-direction:column;min-height:0;display:flex}.sheet-handle{touch-action:none;cursor:grab;flex:none;padding:4px 20px 0}.sheet-body{overscroll-behavior:contain;padding:0 20px calc(20px + env(safe-area-inset-bottom));overflow-y:auto}.grabber{background:#ddd6cf;border-radius:3px;width:40px;height:5px;margin:0 auto}.sheet-kicker{background:#f6f3ef;border-radius:999px;margin:0;padding:5px 10px;font-size:12px;font-weight:700;display:inline-block}.sheet-date{letter-spacing:-.045em;margin:10px 0 2px;font-size:30px;font-weight:800}.sheet-q{color:var(--muted);margin:0 0 14px;font-weight:600}.levels{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.lvl{text-align:left;cursor:pointer;background:#f6f3ef;border:2px solid #0000;border-radius:14px;flex-direction:column;align-items:flex-start;gap:7px;padding:9px;font-size:13px;font-weight:600;transition:border-color .2s,transform .15s;display:flex}.lvl:active{transform:scale(.97)}.lvl.on{border-color:var(--ink);background:var(--paper)}.sw{border-radius:7px;width:100%;height:24px}.field{flex-direction:column;gap:6px;margin-top:16px;font-size:13px;font-weight:700;display:flex}.field textarea,.field input{font:inherit;color:var(--ink);resize:none;background:#f6f3ef;border:0;border-radius:14px;outline:none;padding:12px 14px;font-size:16px;font-weight:500}.field textarea:focus,.field input:focus{box-shadow:inset 0 0 0 2px var(--ink)}.sheet-actions{justify-content:space-between;margin-top:18px;display:flex}.sheet-actions.end{background:linear-gradient(#fff0, var(--paper) 45%);pointer-events:none;justify-content:flex-end;margin:8px -20px 0;padding:24px 20px 4px;position:sticky;bottom:0}.sheet-actions.end button{pointer-events:auto}.measure{align-items:center;gap:12px;margin-bottom:10px;display:flex}.measure input[type=number]{min-width:0;font:inherit;letter-spacing:-.02em;color:var(--ink);background:#f6f3ef;border:0;border-radius:14px;outline:none;flex:1;padding:10px 14px;font-size:22px;font-weight:800}.measure input[type=number]:focus{box-shadow:inset 0 0 0 2px var(--ink)}.measure input[type=range]{appearance:none;cursor:pointer;background:0 0;flex:1;min-width:0;height:30px;margin:0}.measure input[type=range]::-webkit-slider-runnable-track{background:linear-gradient(90deg, var(--ink) var(--fill), #ebe5df var(--fill));border-radius:4px;height:8px}.measure input[type=range]::-webkit-slider-thumb{appearance:none;background:var(--paper);border:2px solid var(--ink);border-radius:50%;width:26px;height:26px;margin-top:-9px;box-shadow:0 2px 6px #00000026}.measure input[type=range]::-moz-range-track{background:#ebe5df;border-radius:4px;height:8px}.measure input[type=range]::-moz-range-progress{background:var(--ink);border-radius:4px;height:8px}.measure input[type=range]::-moz-range-thumb{background:var(--paper);border:2px solid var(--ink);border-radius:50%;width:22px;height:22px}.measure-value{text-align:right;flex:none;min-width:84px;font-size:17px;font-weight:800}.today-theme{border-top:1px solid #efe9e3;margin-top:18px;padding-top:16px}.today-theme header{align-items:center;gap:8px;margin-bottom:10px;display:flex}.today-theme h3{letter-spacing:-.03em;flex:1;margin:0;font-size:17px;font-weight:800}.today-dot{border-radius:4px;width:14px;height:14px}.today-check{background:var(--ink);color:#fff;border-radius:50%;place-items:center;width:22px;height:22px;font-size:12px;font-weight:800;display:grid}.compact .levels{flex-wrap:wrap;gap:6px;display:flex}.compact .lvl{border-radius:999px;flex-direction:row;align-items:center;gap:7px;padding:7px 12px 7px 8px;font-size:13px}.compact .sw{border-radius:50%;flex:none;width:16px;height:16px}.compact .measure input[type=number]{padding:8px 12px;font-size:18px}.ghost-btn,.primary-btn{cursor:pointer;border-radius:999px;padding:13px 22px;font-weight:700}.ghost-btn{background:0 0;border:2px solid #e4ded8}.primary-btn{background:var(--ink);color:#fff;border:0;padding-inline:34px}.pixel-badge{letter-spacing:-.03em;color:var(--ink);border-radius:18px;margin-top:6px;padding:18px;font-size:22px;font-weight:800;transition:background .35s}.pixel-badge.dark{color:#fff}.pixel-badge.empty{color:var(--muted);background:#f6f3ef;font-size:16px}.today-pixel{align-items:center;gap:12px;margin:10px 0 4px;font-size:13px;font-weight:700;display:flex}.today-pixel span{flex:none}.today-pixel .pixel-badge{border-radius:12px;flex:1;margin:0;padding:9px 14px;font-size:15px}.summary{margin:14px 0 0;font-size:15px;font-weight:500;line-height:1.45}.summary p{margin:0 0 6px}.factors{margin:14px 0 0;padding:0;list-style:none}.factors li{border-top:1px solid #efe9e3;align-items:center;gap:10px;padding:10px 0;font-size:14px;display:flex}.factors i{border-radius:4px;flex:none;width:14px;height:14px}.factor-name{flex:1;font-weight:700}.factor-value{color:var(--muted);font-weight:600}.factor-sign{text-align:center;width:22px;color:var(--muted);font-weight:800}.factor-sign.up{color:#4e9a3a}.factor-sign.down{color:#c9302c}.summary-bonheur{background:#f6f3ef;border-radius:14px;margin:14px 0 0;padding:12px 14px;font-weight:600}.topbar-left{align-items:center;gap:10px;display:flex}.avatar{background:var(--ink);color:#fff;cursor:pointer;border:0;border-radius:50%;width:32px;height:32px;padding:0;font-size:14px;font-weight:800}.account-email{text-overflow:ellipsis;font-size:22px;overflow:hidden}.account-actions{flex-direction:column;margin-top:12px;display:flex}.account-row{text-align:left;cursor:pointer;background:0 0;border:0;border-top:1px solid #efe9e3;justify-content:space-between;align-items:center;padding:16px 4px;font-size:16px;font-weight:700;display:flex}.account-row span{color:var(--muted)}.account-row.danger{color:#c9302c}.account-confirm{border-top:1px solid #efe9e3;padding-top:14px}.account-confirm p{margin:0;font-weight:600}.danger-btn{background:#c9302c}.auth{box-sizing:border-box;max-width:420px;min-height:100dvh;padding:calc(32px + env(safe-area-inset-top)) 24px calc(32px + env(safe-area-inset-bottom));flex-direction:column;justify-content:center;margin:0 auto;display:flex;overflow-y:auto}.auth-swatches{gap:6px;margin-bottom:22px;display:flex}.auth-swatches i{border-radius:6px;width:22px;height:22px}.auth-title{letter-spacing:-.055em;margin:0;font-size:52px;font-weight:800;line-height:.95}.auth-sub{color:var(--muted);margin:10px 0 28px;font-size:16px;font-weight:600}.auth-tabs{background:#f6f3ef;border-radius:999px;padding:4px;display:flex}.auth-tabs button{cursor:pointer;color:var(--muted);background:0 0;border:0;border-radius:999px;flex:1;padding:11px 8px;font-size:14px;font-weight:700;transition:background .2s,color .2s}.auth-tabs button.on{background:var(--paper);color:var(--ink);box-shadow:0 1px 4px #00000014}.auth-form{flex-direction:column;display:flex}.auth-submit{margin-top:22px;padding:16px;font-size:16px}.auth-submit:disabled{opacity:.6}.auth-error{color:#c9302c;margin:12px 0 0;font-size:14px;font-weight:600}.auth-info{color:#4e9a3a;margin:12px 0 0;font-size:14px;font-weight:600}.auth-note{text-align:center;color:var(--muted);margin:20px 0 0;font-size:13px;font-weight:500}body:has(.auth){overflow:auto}
