*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;height:100%;overflow:hidden;font-family:-apple-system,BlinkMacSystemFont,"Helvetica Neue",Arial,sans-serif}button,input,textarea,select{font:inherit}button{border:0;background:none;color:inherit}.hidden{display:none!important}.app{height:100%;position:relative;overflow:hidden;background:var(--main-bg);color:var(--text-main)}.theme-black{--main-bg:#f2f2f7;--card:#fff;--text-main:#090909;--text-sub:#8b8b93;--primary:#0d0d0f;--primary-text:#fff;--tag:#efeff4;--orb:rgba(0,0,0,.04)}.theme-cream{--main-bg:#fbf3e8;--card:#fffaf2;--text-main:#2b2118;--text-sub:#9b8170;--primary:#5a3e2b;--primary-text:#fff;--tag:#f2e5d4;--orb:rgba(174,126,73,.14)}.theme-pink{--main-bg:#fff1f5;--card:#fff;--text-main:#3a2028;--text-sub:#b47b8d;--primary:#e75c8d;--primary-text:#fff;--tag:#ffe2eb;--orb:rgba(231,92,141,.13)}.theme-blue{--main-bg:#eef5ff;--card:#fff;--text-main:#132033;--text-sub:#6e83a5;--primary:#1f4b99;--primary-text:#fff;--tag:#dfeaff;--orb:rgba(31,75,153,.12)}.theme-purple{--main-bg:#f4f0ff;--card:#fff;--text-main:#211936;--text-sub:#7d6ba8;--primary:#6c4bd8;--primary-text:#fff;--tag:#ece5ff;--orb:rgba(108,75,216,.13)}.bg-orb{position:fixed;border-radius:50%;background:var(--orb);pointer-events:none}.orb-one{width:270px;height:270px;right:-90px;top:80px}.orb-two{width:300px;height:300px;left:-150px;bottom:90px}.phone-page{position:relative;z-index:1;height:100%;max-width:520px;margin:0 auto;display:flex;flex-direction:column;padding:0 22px}.status-space{height:max(36px,env(safe-area-inset-top))}.header{flex:0 0 auto;padding-bottom:12px}.header-main{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.title-wrap{min-width:0}.title-row{display:flex;align-items:center;gap:10px}.title-row h1{font-size:42px;letter-spacing:-1.5px;line-height:1;margin:0;font-weight:950;white-space:nowrap}.title-wrap p{font-size:16px;color:var(--text-sub);font-weight:700;margin:20px 0 0}.switch-pill,.theme-pill{height:38px;border-radius:999px;background:var(--card);box-shadow:0 8px 22px rgba(0,0,0,.06);padding:0 16px;font-size:14px;font-weight:900;white-space:nowrap}.theme-pill{margin-top:4px}.today-card{background:var(--card);border-radius:26px;padding:20px;margin-top:24px;box-shadow:0 18px 45px rgba(0,0,0,.055)}.today-top{display:flex;justify-content:space-between;align-items:flex-start}.mini-label{display:block;color:var(--text-sub);font-size:15px;font-weight:900;margin-bottom:6px}.today-top strong{font-size:22px;font-weight:950;letter-spacing:-.4px}.year-box{text-align:right}.year-box b{display:block;font-size:38px;line-height:1;font-weight:950}.year-box span{display:block;color:var(--text-sub);font-size:14px;font-weight:900;margin-top:5px}.progress-track{height:9px;background:var(--tag);border-radius:999px;overflow:hidden;margin-top:19px}.progress-track i{display:block;height:100%;width:0;background:var(--primary);border-radius:999px}.quick-actions{display:flex;gap:10px;margin-top:16px}.primary-action,.white-action{height:56px;border-radius:24px;font-size:17px;font-weight:950;display:flex;align-items:center;justify-content:center}.primary-action{flex:1;background:var(--primary);color:var(--primary-text);box-shadow:0 14px 28px rgba(0,0,0,.14)}.white-action{min-width:96px;background:var(--card);box-shadow:0 10px 24px rgba(0,0,0,.045)}.white-action.small{min-width:70px}.category-row,.mode-row{display:flex;gap:9px;overflow-x:auto;padding:16px 0 2px;scrollbar-width:none}.category-row::-webkit-scrollbar,.mode-row::-webkit-scrollbar{display:none}.category-pill,.mode-btn{flex:0 0 auto;height:39px;border-radius:999px;background:var(--card);padding:0 17px;font-weight:900;color:var(--text-main);box-shadow:0 8px 18px rgba(0,0,0,.04)}.category-pill.active,.mode-btn.active{background:var(--primary);color:var(--primary-text)}.content-scroll{flex:1;min-height:0;overflow-y:auto;padding-bottom:calc(28px + env(safe-area-inset-bottom));scrollbar-width:none}.content-scroll::-webkit-scrollbar{display:none}.panel{display:none}.active-panel{display:block}.record-card{background:var(--card);border-radius:29px;padding:20px;margin-bottom:18px;box-shadow:0 16px 36px rgba(0,0,0,.045)}.count-card{display:grid;grid-template-columns:66px 1fr 74px;gap:15px;align-items:center}.icon-box{width:66px;height:66px;border-radius:21px;background:var(--tag);display:grid;place-items:center;font-size:38px}.card-title{margin:0 0 8px;font-size:24px;line-height:1.15;font-weight:950}.muted{color:var(--text-sub);font-weight:700}.tag-row{display:flex;gap:7px;flex-wrap:wrap;margin-top:11px}.tag{border-radius:999px;background:var(--tag);color:var(--text-sub);padding:5px 10px;font-size:12px;font-weight:900}.small-progress{height:8px;background:var(--tag);border-radius:999px;overflow:hidden;margin-top:12px}.small-progress i{display:block;height:100%;background:var(--primary)}.days{text-align:right;font-size:48px;line-height:1;font-weight:950}.unit{text-align:right;color:var(--text-sub);font-size:15px;font-weight:800;margin-top:6px}.card-actions{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}.mini-btn{height:32px;border-radius:12px;background:var(--tag);padding:0 12px;font-size:13px;font-weight:900}.delete{color:#ff3b30}.table-card{background:var(--card);border-radius:21px;overflow:hidden;border:1px solid #111;margin-bottom:18px}.table-row{display:grid;grid-template-columns:.9fr 1.25fr 1.15fr 1fr .7fr;border-bottom:1px solid #111;min-height:52px}.table-row:last-child{border-bottom:0}.table-row>div{border-right:1px solid #111;display:flex;align-items:center;justify-content:center;text-align:center;padding:8px 5px;font-size:13px;font-weight:750;word-break:break-all}.table-row>div:last-child{border-right:0}.table-head{background:var(--tag)}.done-check{width:24px;height:24px;border-radius:8px;background:var(--tag);display:grid;place-items:center;font-weight:950}.timeline-item{display:grid;grid-template-columns:55px 1fr;gap:12px;margin-bottom:14px}.timeline-day{font-size:28px;font-weight:950;text-align:center}.check-top{display:flex;justify-content:space-between;gap:12px}.check-count{font-size:21px;font-weight:950}.check-progress{height:8px;background:var(--tag);border-radius:999px;overflow:hidden;margin-top:15px}.check-progress i{display:block;height:100%;background:var(--primary)}.check-list{display:grid;gap:12px;margin-top:16px}.check-item{display:flex;gap:10px;align-items:center}.check-box{width:22px;height:22px;border-radius:8px;background:var(--tag);display:grid;place-items:center;flex:0 0 auto;font-size:13px;font-weight:950}.check-item.done span{text-decoration:line-through;color:var(--text-sub)}.check-item.done .check-box{background:var(--primary);color:var(--primary-text)}.calendar-card,.map-card{background:var(--card);border-radius:28px;padding:20px;box-shadow:0 16px 36px rgba(0,0,0,.045)}.calendar-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.calendar-head h2{margin:0;font-size:24px}.calendar-head button{width:42px;height:42px;border-radius:50%;background:var(--tag);font-size:30px;font-weight:900}.week-row,.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:7px}.week-row span{text-align:center;color:var(--text-sub);font-weight:900;font-size:13px;margin-bottom:4px}.calendar-day{height:54px;border-radius:17px;background:rgba(255,255,255,.45);display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:15px;font-weight:900}.calendar-day.today{background:var(--primary);color:var(--primary-text)}.dot-row{display:flex;gap:4px;margin-top:5px}.dot{width:7px;height:7px;border-radius:50%;display:inline-block}.dot.event{background:#111}.dot.schedule{background:#999}.calendar-day.today .dot{background:#fff}.legend{display:flex;justify-content:center;gap:18px;margin-top:15px;color:var(--text-sub);font-size:13px;font-weight:900}.festival-hero{background:#111;color:#fff;border-radius:31px;padding:24px;margin-bottom:18px}.festival-hero small{opacity:.68;font-weight:800}.festival-hero h2{font-size:32px;margin:12px 0 8px}.festival-hero b{font-size:66px;line-height:1}.festival-card{display:flex;justify-content:space-between;align-items:center}.festival-left{display:flex;align-items:center;gap:13px}.festival-icon{width:58px;height:58px;border-radius:19px;background:var(--tag);display:grid;place-items:center;font-size:32px}.festival-days{font-size:40px;font-weight:950;text-align:right}.map-card-head{display:flex;justify-content:space-between;gap:15px;align-items:flex-start}.map-card h2{margin:0 0 5px;font-size:25px}.map-card p{margin:0;color:var(--text-sub);font-size:14px;font-weight:750}.count-badge{width:72px;height:72px;border-radius:22px;background:var(--primary);color:var(--primary-text);display:flex;flex-direction:column;justify-content:center;align-items:center}.count-badge b{font-size:28px;line-height:1}.count-badge span{font-size:12px;font-weight:850;margin-top:5px}.map-tools{display:flex;gap:9px;align-items:center;margin:15px 0}.map-tools button,.map-tools span{height:38px;min-width:38px;border-radius:999px;background:var(--tag);display:grid;place-items:center;padding:0 13px;font-weight:950}.map-tools button:last-child{margin-left:auto}.map-viewport{height:370px;border-radius:25px;overflow:hidden;background:linear-gradient(145deg,#1d2633,#101821);position:relative;touch-action:none}.world-map{position:absolute;width:880px;height:540px;left:50%;top:50%;transform:translate(-50%,-50%) scale(1);transform-origin:center;background:linear-gradient(145deg,#1d2633,#101821)}.world-map:before{content:"";position:absolute;left:0;right:0;top:50%;height:1px;background:rgba(255,255,255,.05)}.world-map:after{content:"";position:absolute;top:0;bottom:0;left:50%;width:1px;background:rgba(255,255,255,.04)}.continent{position:absolute;background:#6b7280;opacity:.5;border:1px solid rgba(255,255,255,.14)}.na{left:7%;top:18%;width:28%;height:28%;border-radius:55% 45% 48% 52%;transform:rotate(-16deg)}.sa{left:27%;top:54%;width:14%;height:34%;border-radius:48% 52% 58% 42%;transform:rotate(18deg)}.eu{left:45%;top:24%;width:17%;height:18%;border-radius:50% 50% 42% 58%;transform:rotate(8deg)}.af{left:47%;top:44%;width:18%;height:36%;border-radius:48% 52% 56% 44%;transform:rotate(-4deg)}.as{left:59%;top:24%;width:31%;height:34%;border-radius:52% 48% 45% 55%;transform:rotate(8deg)}.au{left:76%;top:72%;width:16%;height:13%;border-radius:56% 44% 50% 50%;transform:rotate(8deg)}.city-dot,.lit-dot{position:absolute;transform:translate(-50%,-50%);z-index:5}.city-core{width:9px;height:9px;border-radius:50%;background:rgba(255,255,255,.8);box-shadow:0 0 10px rgba(255,255,255,.6);display:block}.city-label{position:absolute;left:11px;top:-7px;font-size:11px;color:rgba(255,255,255,.8);white-space:nowrap;text-shadow:0 2px 7px rgba(0,0,0,.65);font-weight:800}.lit-core{width:17px;height:17px;border-radius:50%;background:#22d3ee;box-shadow:0 0 17px #22d3ee,0 0 30px rgba(34,211,238,.6);border:3px solid rgba(255,255,255,.9);display:block}.map-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:14px}.map-stats div{background:var(--tag);border-radius:18px;padding:13px 4px;text-align:center}.map-stats b{display:block;font-size:24px}.map-stats span{color:var(--text-sub);font-size:12px;font-weight:900}.section-title{font-size:24px;margin:22px 0 14px}.photo-row{display:flex;gap:9px;flex-wrap:wrap;margin-top:11px}.photo-row img{width:82px;height:82px;object-fit:cover;border-radius:17px}.empty{background:var(--card);border-radius:28px;padding:56px 18px;text-align:center;color:var(--text-sub);font-weight:900;box-shadow:0 16px 36px rgba(0,0,0,.045)}.sheet-mask{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:20;display:flex;align-items:flex-end}.sheet{width:100%;max-width:520px;margin:0 auto;background:#fff;border-radius:34px 34px 0 0;padding:22px 20px calc(24px + env(safe-area-inset-bottom));box-shadow:0 -20px 60px rgba(0,0,0,.18)}.sheet-title{text-align:center;font-size:22px;font-weight:950;margin-bottom:14px}.sheet-item{width:100%;display:flex;align-items:center;gap:14px;padding:14px;border-radius:22px;background:#f5f5f7;margin-bottom:9px;text-align:left}.sheet-item span{width:48px;height:48px;border-radius:16px;background:#fff;display:grid;place-items:center;font-size:25px}.sheet-item b{display:block;font-size:18px}.sheet-item em{font-style:normal;color:#888;font-size:13px;font-weight:700;margin-top:3px;display:block}dialog{
  border:0;
  background:transparent;
  padding:0;
  width:100vw;
  max-width:100vw;
  height:100dvh;
  max-height:100dvh;
  margin:0;
  overflow:hidden;
}
dialog::backdrop{
  background:rgba(0,0,0,.48);
  backdrop-filter:blur(8px);
}
dialog[open]{
  display:flex;
  justify-content:center;
  align-items:flex-end;
}
.dialog-box{
  width:100%;
  max-width:520px;
  margin:0 auto;
  background:var(--main-bg);
  border-radius:34px 34px 0 0;
  padding:0 22px calc(26px + env(safe-area-inset-bottom));
  max-height:92dvh;
  overflow-y:auto;
  box-shadow:0 -20px 60px rgba(0,0,0,.18);
}
.dialog-head{
  height:76px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  position:sticky;
  top:0;
  z-index:3;
  background:var(--main-bg);
}
.dialog-head button{color:var(--text-sub);font-weight:850;font-size:16px}.dialog-head b{font-size:18px}.form-card{background:var(--card);border-radius:26px;padding:7px 18px;margin-bottom:18px}.form-row{padding:15px 0;border-bottom:1px solid rgba(0,0,0,.06)}.form-row:last-child{border-bottom:0}.form-row label{display:block;font-size:14px;color:var(--text-sub);font-weight:900;margin-bottom:8px}.form-row input,.form-row select,.form-row textarea{width:100%;border:0;outline:0;background:transparent;font-size:18px;color:var(--text-main);font-weight:750}.form-row textarea{min-height:98px;resize:none}.save-btn,.mini-full,.danger-full{width:100%;height:58px;border-radius:24px;font-size:18px;font-weight:950;display:grid;place-items:center;margin-top:16px}.save-btn{background:var(--primary);color:var(--primary-text);box-shadow:0 14px 30px rgba(0,0,0,.14)}.secondary-save{background:var(--card);color:var(--text-main);box-shadow:0 10px 24px rgba(0,0,0,.045)}.mini-full{background:var(--card)}.danger-full{background:#fff1f1;color:#ff3b30}.hint{background:var(--card);padding:16px;border-radius:20px;color:var(--text-sub);font-weight:750;line-height:1.55}textarea#backupCode,textarea#restoreCode{width:100%;height:120px;border:0;background:var(--card);border-radius:20px;padding:14px;margin-top:14px;outline:0;color:var(--text-main)}.detail-title{font-size:28px;font-weight:950;margin:0 0 8px}.hidden{display:none!important}@media(min-width:521px){body{background:#dfe1e7}.phone-page{box-shadow:0 0 0 1px rgba(0,0,0,.04),0 18px 60px rgba(0,0,0,.12);background:var(--main-bg)}}