:root{--bg: #fafaf7;--fg: #1a1a1a;--muted: #6b6b6b;--card: #ffffff;--border: #e8e6e0;--accent: #e63946;--done: #16a34a;--mark: #1a1a1a;--mark-rgb: 26, 26, 26;--empty: #ececec;--shadow: 0 10px 40px rgba(0,0,0,.06)}:root[data-theme=dark]{--bg: #0e0e10;--fg: #f2f2f2;--muted: #9a9a9a;--card: #17171a;--border: #26262b;--accent: #ff5a5f;--done: #4ade80;--mark: #f2f2f2;--mark-rgb: 242, 242, 242;--empty: #222227;--shadow: 0 10px 40px rgba(0,0,0,.6)}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--fg);font-family:"PT Serif",Georgia,serif;transition:background .3s ease,color .3s ease;-webkit-font-smoothing:antialiased;overflow-x:hidden}a{color:inherit}button{font:inherit;cursor:pointer}.app{max-width:900px;margin:0 auto;padding:40px 24px 96px;position:relative;z-index:1}.bg-grid{position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;display:grid;grid-template-columns:repeat(12,1fr);grid-template-rows:repeat(10,1fr);gap:6px;padding:6px;pointer-events:none;opacity:.03;transition:opacity .3s ease}:root[data-theme=dark] .bg-grid{opacity:.025}.bg-cell{border-radius:3px;transition:opacity .6s ease}.bg-cell--empty{background:var(--fg);opacity:0;animation:bgPulse var(--bt) var(--bd) ease-in-out infinite}.bg-cell--filled{background:var(--fg);opacity:0;animation:bgFill var(--bt) var(--bd) ease-in-out infinite}.bg-cell--cross{opacity:0;animation:bgCross var(--bt) var(--bd) ease-in-out infinite}.bg-cell--cross svg{width:100%;height:100%;display:block}.bg-cell--cross line{stroke:var(--fg);stroke-width:2.5;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1}.bg-cell--cross.bg-cell--cross{animation:bgCrossCell var(--bt) var(--bd) ease-in-out infinite}.bg-cell--cross line:first-child{animation:bgDrawLine var(--bt) var(--bd) ease-in-out infinite}.bg-cell--cross line:last-child{animation:bgDrawLine var(--bt) calc(var(--bd) + .3s) ease-in-out infinite}@keyframes bgPulse{0%,to{opacity:0}8%{opacity:.15}15%{opacity:0}}@keyframes bgFill{0%,to{opacity:0}10%{opacity:.6}50%{opacity:.6}65%{opacity:0}}@keyframes bgCrossCell{0%,to{opacity:0}8%{opacity:1}50%{opacity:1}65%{opacity:0}}@keyframes bgDrawLine{0%,5%{stroke-dashoffset:1}15%{stroke-dashoffset:0}50%{stroke-dashoffset:0}65%{stroke-dashoffset:1}to{stroke-dashoffset:1}}@media (max-width: 640px){.bg-grid{grid-template-columns:repeat(8,1fr);grid-template-rows:repeat(14,1fr)}}.nav{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:48px;flex-wrap:wrap}.brand{font-weight:700;font-size:20px;letter-spacing:-.02em;flex-shrink:0;background:none;border:0;color:var(--fg);padding:0;cursor:pointer;font-family:inherit}.brand span{color:var(--accent);transition:color .3s ease}.brand-done span{color:var(--done)}.nav-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:flex-end}.nav-user{color:var(--muted);font-size:13px;padding:0 4px}.theme-btn{background:transparent;border:1px solid var(--border);border-radius:999px;padding:6px 12px;color:var(--fg);font-size:13px;transition:border-color .15s ease,opacity .15s ease;white-space:nowrap}.theme-btn:hover{border-color:var(--fg)}.theme-btn.btn-muted{opacity:.4}.lang-switch{display:flex;align-items:center;gap:1px;border:1px solid var(--border);border-radius:999px;padding:2px}.lang-btn{background:transparent;border:0;color:var(--muted);font-size:11px;font-weight:600;letter-spacing:.05em;padding:3px 8px;border-radius:999px;transition:color .15s,background .15s}.lang-btn:hover{color:var(--fg)}.lang-btn.active{background:var(--fg);color:var(--bg)}.hero{text-align:center;padding:48px 0 32px}.hero h1{font-size:clamp(32px,6vw,64px);line-height:1.05;letter-spacing:-.035em;margin:0 0 16px}.hero h1 em{color:var(--accent);font-style:normal;transition:color .3s ease}.hero-done em{color:var(--done)!important}.hero p{color:var(--muted);font-size:clamp(15px,2vw,18px);max-width:540px;margin:0 auto 32px}.today-only-hint{color:var(--muted);font-size:12px;margin:-20px auto 28px;text-align:center;opacity:.7;letter-spacing:.01em}.create{display:flex;gap:8px;max-width:520px;margin:0 auto;background:transparent;border:0;border-radius:0;padding:8px}.create input{flex:1;min-width:0;border:1px solid var(--border);border-radius:12px;outline:0;background:transparent;color:var(--fg);font-size:16px;padding:10px 12px;transition:border-color .15s ease}.create input:focus{border-color:var(--fg)}.create input::placeholder{color:var(--muted)}.create button{background:var(--fg);color:var(--bg);border:0;border-radius:12px;padding:10px 18px;font-weight:600;font-size:14px;transition:transform .15s ease;white-space:nowrap}.create button:hover{transform:translateY(-1px)}.reminder-bar{display:flex;align-items:center;gap:16px;padding:8px 0 12px;flex-wrap:wrap}.reminder-toggle{display:flex;align-items:center;gap:8px;background:transparent;border:0;color:var(--muted);font-size:13px;padding:0;transition:color .15s}.reminder-toggle:hover,.reminder-toggle.on{color:var(--fg)}.toggle-track{width:32px;height:18px;border-radius:999px;background:var(--border);position:relative;display:block;transition:background .2s;flex-shrink:0}.reminder-toggle.on .toggle-track{background:var(--accent)}.toggle-thumb{position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:#fff;transition:left .18s ease;box-shadow:0 1px 3px #00000040}.reminder-toggle.on .toggle-thumb{left:16px}.reminder-time-wrap{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:13px}.time-input{background:var(--card);border:1px solid var(--border);border-radius:8px;color:var(--fg);font-size:13px;padding:4px 8px;outline:0;font-family:inherit}.saved-flash{color:var(--accent);font-size:12px;animation:fadeIn .25s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(2px)}to{opacity:1;transform:translateY(0)}}.goal-card{background:var(--card);border:1px solid var(--border);border-radius:20px;padding:24px 28px;margin-top:24px;animation:fadeUp .38s ease}@keyframes fadeUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.goal-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:16px;gap:12px}.goal-head h2{margin:0 0 6px;font-size:clamp(16px,2.5vw,22px);letter-spacing:-.01em;line-height:1.2}.streak-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.streak-badge{font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:2px 8px;border-radius:999px}.streak-badge.done{background:rgba(var(--mark-rgb),.14);color:var(--fg)}.streak-badge.pending{background:var(--empty);color:var(--muted)}.streak-text{color:var(--muted);font-size:13px}.del{background:transparent;border:0;color:var(--muted);font-size:20px;line-height:1;padding:0 2px;flex-shrink:0;transition:color .15s}.del:hover{color:var(--accent)}.card-actions{display:flex;align-items:center;gap:6px;flex-shrink:0}.share-wrap{position:relative}.share-trigger{background:transparent;border:0;color:var(--muted);width:28px;height:28px;padding:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:color .15s}.share-trigger svg{width:15px;height:15px}.share-trigger:hover{color:var(--accent)}.share-menu{position:absolute;top:calc(100% + 6px);right:0;background:var(--card);border:1px solid var(--border);border-radius:10px;padding:6px;min-width:170px;z-index:50;box-shadow:0 4px 16px #0000002e;display:flex;flex-direction:column;gap:2px}.share-menu button{background:transparent;border:0;padding:8px 12px;text-align:left;border-radius:6px;font-size:13px;color:var(--fg);cursor:pointer;display:flex;align-items:center;transition:background .12s}.share-menu button:hover{background:var(--empty)}.cal-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.cal-month-title{font-size:14px;font-weight:700;letter-spacing:.08em;color:var(--fg);text-transform:uppercase}.cal-nav-btn{background:transparent;border:0;color:var(--muted);font-size:22px;padding:2px 10px;border-radius:6px;line-height:1;transition:color .15s,background .15s}.cal-nav-btn:hover:not(:disabled){color:var(--fg);background:var(--empty)}.cal-nav-btn:disabled{opacity:.2;cursor:default}.cal-header,.cal-grid{display:grid;grid-template-columns:repeat(7,1fr)}.cal-header{gap:0;margin-bottom:clamp(4px,.6vw,8px)}.cal-grid{gap:clamp(4px,.6vw,8px)}.weekday-header{text-align:center;font-size:clamp(10px,1.3vw,13px);font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);padding-bottom:0;transition:opacity .25s}.weekday-header.weekend-off{opacity:.28}.day{aspect-ratio:1 / 1;width:100%;min-width:0;border-radius:clamp(5px,.9vw,10px);background:var(--empty);border:0;padding:0;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;overflow:clip;cursor:pointer;gap:2px;transition:transform .12s ease,opacity .25s ease,background .2s ease}.day.today:not(.marked):hover{transform:scale(1.06)}.day-num{font-size:clamp(16px,2.4vw,30px);font-weight:600;letter-spacing:-.02em;line-height:1;color:var(--fg);pointer-events:none;-webkit-user-select:none;user-select:none}.day-lbl{font-size:clamp(8px,.95vw,11px);color:var(--fg);opacity:.55;letter-spacing:.02em;line-height:1;pointer-events:none;-webkit-user-select:none;user-select:none}.day.today{outline:2px solid var(--fg);outline-offset:2px}.day.today .day-num{font-weight:700}.day.past{opacity:.45;cursor:default}.day.future{opacity:.25;cursor:not-allowed}.day.weekend-off{opacity:.28}.day.marked{background:var(--fg)}.day.marked .day-num{color:var(--bg)}.day.marked .day-lbl{color:rgba(var(--mark-rgb),.45)}.day.marked.weekend-off{opacity:.55}.day.today.marked{outline-color:var(--fg)}.day-x{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:visible}.day-x line{stroke:var(--bg);stroke-width:2.5;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:0}.day.just-marked .day-x .x-line1{animation:drawX .21s cubic-bezier(.4,0,.2,1) forwards}.day.just-marked .day-x .x-line2{animation:drawX .21s cubic-bezier(.4,0,.2,1) .18s both}@keyframes drawX{0%{stroke-dashoffset:1}to{stroke-dashoffset:0}}.day.just-marked{animation:markIn .32s cubic-bezier(.34,1.4,.64,1)}@keyframes markIn{0%{transform:scale(.88)}to{transform:scale(1)}}.theme-btn.btn-active{background:var(--fg);color:var(--bg);border-color:var(--fg)}.reminder-sep{width:1px;height:18px;background:var(--border);flex-shrink:0}.login-wrap{display:flex;flex-direction:column;align-items:center;gap:10px;margin-top:24px}.footer{text-align:center;color:var(--muted);font-size:13px;margin-top:64px}.empty{text-align:center;color:var(--muted);margin-top:48px;font-size:15px}.ach-page{margin-top:8px;animation:fadeUp .3s ease}.ach-page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:28px;padding-bottom:20px;border-bottom:1px solid var(--border)}.ach-page-title{margin:0 0 4px;font-size:clamp(20px,4vw,28px);letter-spacing:-.02em}.ach-page-sub{margin:0;font-size:13px;color:var(--muted)}.ach-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}@media (max-width: 640px){.ach-cards{grid-template-columns:repeat(2,1fr)}}@media (max-width: 400px){.ach-cards{grid-template-columns:1fr}}.ach-card{background:var(--card);border:1px solid var(--border);border-radius:18px;padding:20px;display:flex;flex-direction:column;gap:6px;opacity:.45;transition:opacity .2s,border-color .2s}.ach-card.earned{opacity:1;border-color:var(--fg)}.ach-card-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}.ach-icon{width:40px;height:40px;border-radius:50%;border:2px solid var(--border);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;font-family:Courier New,monospace;letter-spacing:-.02em;color:var(--fg);flex-shrink:0}.ach-card.earned .ach-icon{border-color:var(--fg)}.ach-earned-tag{font-size:10px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--done)}.ach-name{margin:0;font-size:14px;letter-spacing:-.01em;line-height:1.2}.ach-desc{margin:0;font-size:12px;color:var(--muted);line-height:1.5;flex:1}.ach-progress{margin-top:10px;display:flex;flex-direction:column;gap:6px}.prog-count{font-size:11px;font-family:Courier New,monospace;color:var(--muted);letter-spacing:.04em}.prog-date{margin-top:10px;font-size:11px;font-family:Courier New,monospace;color:var(--muted);letter-spacing:.04em}.day-grid{display:grid;grid-template-columns:repeat(var(--cols, 7),1fr);gap:3px}.dg-cell{aspect-ratio:1;border-radius:3px;background:var(--empty);transition:background .15s}.dg-cell.marked{background:var(--fg)}.dg-cell.today{outline:1.5px solid var(--fg);outline-offset:1px}.dg-cell.marked.today{outline-color:var(--accent)}.century-dots{display:grid;grid-template-columns:repeat(10,1fr);gap:3px}.cd-dot{aspect-ratio:1;border-radius:50%;background:var(--empty);transition:background .15s}.cd-dot.filled{background:var(--fg)}.migrate-banner{display:flex;align-items:center;justify-content:space-between;gap:16px;background:var(--card);border:1px solid var(--border);border-radius:16px;padding:16px 20px;margin-top:24px;flex-wrap:wrap;animation:fadeUp .3s ease}.migrate-banner>span{color:var(--muted);font-size:14px}.migrate-actions{display:flex;gap:8px}.migrate-btn{background:var(--empty);border:0;border-radius:8px;padding:6px 14px;font-size:13px;color:var(--muted);transition:color .15s,background .15s}.migrate-btn:hover{color:var(--fg);background:var(--border)}.migrate-btn.primary{background:var(--fg);color:var(--bg)}.migrate-btn.primary:hover{opacity:.85}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;display:flex;align-items:center;justify-content:center;z-index:100;padding:16px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal-card{background:var(--card);border:1px solid var(--border);border-radius:24px;padding:32px;max-width:600px;width:100%;max-height:90vh;overflow-y:auto;animation:fadeUp .28s ease}.modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.modal-header h2{margin:0;font-size:22px;letter-spacing:-.02em}.modal-close{background:var(--empty);border:0;border-radius:8px;padding:6px 14px;font-size:13px;color:var(--muted);transition:color .15s,background .15s}.modal-close:hover{color:var(--fg);background:var(--border)}.rules-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.rule-card{background:var(--bg);border:1px solid var(--border);border-radius:16px;padding:20px}.rule-num{font-size:11px;font-weight:700;letter-spacing:.1em;color:var(--accent);margin-bottom:10px}.rule-card h3{margin:0 0 8px;font-size:15px;letter-spacing:-.01em}.rule-card p{margin:0;font-size:13px;color:var(--muted);line-height:1.6}@media (max-width: 480px){.rules-grid{grid-template-columns:1fr}.modal-card{padding:20px 18px}}.achievements{margin-top:40px;padding-top:32px;border-top:1px solid var(--border)}.achievements-title{margin:0 0 14px;font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.badge-row{display:flex;flex-wrap:wrap;gap:8px}.badge{display:flex;align-items:center;gap:6px;border:1px solid var(--border);border-radius:999px;padding:5px 12px 5px 8px;font-size:12px;cursor:default;transition:opacity .2s}.badge.locked{opacity:.25;filter:grayscale(1)}.badge.earned{background:var(--card)}.badge-icon{font-size:14px;line-height:1}.badge-name{font-weight:600;letter-spacing:.02em;color:var(--fg);white-space:nowrap}.server-clock{font-family:Courier New,monospace;font-size:11px;opacity:.45;letter-spacing:.06em;display:block;margin-top:6px}@media (max-width: 640px){.app{padding:24px 16px 64px}.nav{margin-bottom:32px}.hero{padding:28px 0 20px}.goal-card{padding:18px 16px}.create{border-radius:14px}.create input{font-size:15px;padding:8px 10px}.create button{padding:8px 14px;font-size:13px}.day-lbl{display:none}}@media (max-width: 400px){.lang-btn{padding:3px 6px}.theme-btn{padding:5px 9px;font-size:12px}.brand{font-size:18px}}.contact-modal{max-width:480px}.contact-form{display:flex;flex-direction:column;gap:16px}.contact-label{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:600;color:var(--muted);letter-spacing:.04em;text-transform:uppercase}.contact-select,.contact-input,.contact-textarea{background:var(--empty);border:1px solid var(--border);border-radius:10px;color:var(--fg);font-family:inherit;font-size:14px;padding:9px 12px;transition:border-color .15s ease;resize:none}.contact-select:focus,.contact-input:focus,.contact-textarea:focus{outline:none;border-color:var(--fg)}.contact-select{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%236b6b6b' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px}.contact-submit{background:var(--fg);color:var(--bg);border:0;border-radius:10px;padding:11px 0;font-family:inherit;font-size:14px;font-weight:600;cursor:pointer;transition:opacity .15s ease}.contact-submit:disabled{opacity:.45;cursor:default}.contact-submit:not(:disabled):hover{opacity:.85}.contact-success{color:var(--muted);font-size:14px;text-align:center;padding:24px 0}.contact-error{color:#c0392b;font-size:13px;margin:0}.stats-bar{display:flex;align-items:center;justify-content:center;margin:32px auto 8px;max-width:440px}.stat-item{display:flex;flex-direction:column;align-items:center;gap:5px;flex:1}.stat-number{font-size:clamp(26px,5vw,38px);font-weight:700;letter-spacing:-.04em;line-height:1;color:var(--fg);font-family:"PT Serif",Georgia,serif;transition:color .3s ease}.stat-label{font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.stats-sep{width:1px;height:36px;background:var(--border);flex-shrink:0;margin:0 12px}.nf-page{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;background:var(--bg);color:var(--fg);text-align:center;padding:24px;font-family:"PT Serif",Georgia,serif}.nf-code{font-size:120px;font-weight:700;line-height:1;letter-spacing:-4px;opacity:.08;-webkit-user-select:none;user-select:none}.nf-title{margin:0;font-size:22px;font-weight:600}.nf-sub{margin:0;color:var(--muted);font-size:15px}.nf-btn{margin-top:12px;display:inline-block;padding:10px 28px;background:var(--fg);color:var(--bg);border-radius:999px;text-decoration:none;font-size:14px;font-weight:500;transition:opacity .15s}.nf-btn:hover{opacity:.8}.goals-limit{color:var(--muted);font-size:13px;text-align:center;margin:16px auto 0;opacity:.75;letter-spacing:.01em}.meta-login-btn{display:flex;align-items:center;gap:10px;background:#fff;border:1px solid #dadce0;border-radius:999px;padding:8px 20px 8px 14px;font-size:14px;font-weight:500;color:#3c4043;cursor:pointer;transition:background .15s,border-color .15s,box-shadow .15s;white-space:nowrap;font-family:inherit}.meta-login-btn:hover{background:#f8f9fa;box-shadow:0 1px 3px #0000001f}.meta-login-btn.dark{background:#3b3b3b;border-color:transparent;color:#e8eaed}.meta-login-btn.dark:hover{background:#4a4a4a}.meta-icon{width:18px;height:18px;color:#1877f2;flex-shrink:0}
