:root{--bg:#0f1115;--panel:#171a21;--panel-2:#1e222b;--border:#2a2f3a;--text:#e6e9ef;--muted:#8a93a3;--accent:#5b8cff;--accent-soft:#1d2740;--green:#3fb950;--red:#f0506e;--yellow:#e3b341;--shadow:0 6px 24px rgba(0,0,0,0.35);--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px)}*{box-sizing:border-box}body,html{padding:0;margin:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;overscroll-behavior-y:none}button,input,select,textarea{font-family:inherit}a{color:var(--accent)}.app{max-width:920px;margin:0 auto;padding:calc(18px + var(--safe-top)) 16px calc(96px + var(--safe-bottom))}header.top{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:16px}header.top h1{font-size:20px;margin:0;font-weight:650}header.top .spacer{flex:1 1}.btn{background:var(--panel-2);color:var(--text);border:1px solid var(--border);padding:9px 13px;border-radius:10px;cursor:pointer;font-size:14px;transition:.15s;white-space:nowrap}.btn:hover{border-color:var(--accent);background:var(--accent-soft)}.btn:active{transform:scale(.97)}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover{filter:brightness(1.08)}.btn.ghost{background:transparent}.btn.small{padding:6px 10px;font-size:13px}.btn:disabled{opacity:.5;cursor:default}.toolbar{display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap;align-items:center}.search{flex:1 1;min-width:160px;background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:10px 12px;color:var(--text);font-size:15px}.search:focus{outline:none;border-color:var(--accent)}.seg{display:flex;gap:4px;background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:3px}.seg button{background:transparent;border:none;color:var(--muted);padding:6px 11px;border-radius:8px;cursor:pointer;font-size:13px}.seg button.on{background:var(--accent-soft);color:var(--text)}.add-row{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap;background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:10px}.add-row input{background:var(--panel-2);border:1px solid var(--border);border-radius:9px;padding:10px 11px;color:var(--text);font-size:15px}.add-row input:focus{outline:none;border-color:var(--accent)}.add-row .ar-title{flex:1 1;min-width:150px}.add-row .ar-extra{width:120px}.add-row .ar-date{width:150px;color-scheme:dark}ul.list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px}li.item{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:12px 14px;display:flex;align-items:flex-start;gap:12px;box-shadow:var(--shadow);transition:.12s}li.item.done{opacity:.58}li.item.done .title{text-decoration:line-through}.check{-moz-appearance:none;appearance:none;-webkit-appearance:none;width:22px;height:22px;min-width:22px;margin-top:1px;border:2px solid var(--border);border-radius:7px;cursor:pointer;position:relative;transition:.15s}.check:hover{border-color:var(--accent)}.check:checked{background:var(--green);border-color:var(--green)}.check:checked:after{content:"✓";color:#fff;font-size:14px;position:absolute;top:-1px;left:3px}.item-body{flex:1 1;min-width:0}.title{font-size:15px;word-break:break-word;line-height:1.35}.notes-input,.title-input{width:100%;background:var(--panel-2);border:1px solid var(--border);border-radius:8px;padding:8px 10px;color:var(--text);font-size:15px}.notes-input:focus,.title-input:focus{outline:none;border-color:var(--accent)}.meta{display:flex;gap:7px;margin-top:7px;flex-wrap:wrap}.chip,.meta{align-items:center}.chip{font-size:12px;padding:2px 9px;border-radius:20px;background:var(--panel-2);color:var(--muted);border:1px solid var(--border);display:inline-flex;gap:5px;text-decoration:none}.chip.cost{color:var(--green)}.chip.date{color:var(--yellow)}.chip.year{color:var(--muted)}.chip.rating{color:var(--accent)}.chip.overdue{color:var(--red);border-color:var(--red)}.chip.link:hover{border-color:var(--accent);color:var(--accent)}.notes{margin-top:7px;font-size:13px;color:var(--muted);white-space:pre-wrap;word-break:break-word}.item-actions{display:flex;gap:2px;flex-direction:column}.icon-btn{background:transparent;border:none;color:var(--muted);cursor:pointer;font-size:15px;padding:4px 7px;border-radius:7px}.icon-btn:hover{color:var(--accent);background:var(--panel-2)}.icon-btn.del:hover{color:var(--red)}.empty{text-align:center;padding:50px 20px;font-size:14px}.empty,.summary{color:var(--muted)}.summary{font-size:13px;margin-bottom:12px}.summary b{color:var(--text)}.external-card{background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:28px 22px;text-align:center;box-shadow:var(--shadow)}.external-card h2{margin:0 0 8px}.external-card p{color:var(--muted);margin:0 0 18px;line-height:1.5}.login-wrap{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:20px}.login-card{background:var(--panel);border:1px solid var(--border);border-radius:16px;padding:32px 28px;width:100%;max-width:360px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:12px;text-align:center}.login-logo{font-size:40px}.login-card h1{margin:0;font-size:22px}.login-card p{margin:0 0 6px;color:var(--muted);font-size:14px}.login-card input{background:var(--panel-2);border:1px solid var(--border);border-radius:10px;padding:12px;color:var(--text);font-size:16px;text-align:center}.login-card input:focus{outline:none;border-color:var(--accent)}.login-error{color:var(--red);font-size:13px}.overlay{position:fixed;inset:0;background:rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center;padding:18px;z-index:50}.modal{background:var(--panel);border:1px solid var(--border);border-radius:16px;max-width:560px;width:100%;padding:22px;box-shadow:var(--shadow);max-height:88dvh;overflow:auto}.modal h2{margin:0 0 6px;font-size:18px}.modal p{color:var(--muted);font-size:13px;margin:0 0 14px;line-height:1.5}.modal textarea{width:100%;min-height:150px;background:var(--panel-2);border:1px solid var(--border);border-radius:10px;color:var(--text);padding:11px;font-size:13px;font-family:ui-monospace,Menlo,Consolas,monospace;resize:vertical}.modal textarea:focus{outline:none;border-color:var(--accent)}.modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:14px;flex-wrap:wrap}.toast{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(20px + var(--safe-bottom));background:var(--panel-2);border:1px solid var(--border);color:var(--text);padding:11px 18px;border-radius:12px;font-size:13px;box-shadow:var(--shadow);opacity:0;pointer-events:none;transition:.25s;z-index:60}.toast.show{opacity:1;bottom:calc(30px + var(--safe-bottom))}.spinner-wrap{min-height:100dvh;display:flex;align-items:center;justify-content:center;color:var(--muted)}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(108px,1fr));grid-gap:16px;gap:16px}.tile{text-decoration:none;color:var(--text);flex-direction:column;gap:8px;cursor:pointer;background:none;border:none;padding:0;font:inherit}.tile,.tile-art{display:flex;align-items:center}.tile-art{position:relative;width:100%;aspect-ratio:1/1;border-radius:22px;justify-content:center;box-shadow:var(--shadow);transition:transform .12s ease;overflow:hidden}.tile-art:after{content:"";position:absolute;inset:0;background:radial-gradient(120% 100% at 0 0,rgba(255,255,255,.18),transparent 55%)}.tile:active .tile-art,.tile:hover .tile-art{transform:translateY(-3px) scale(1.02)}.tile-art.ghost{background:var(--panel);border:1.5px dashed var(--border);box-shadow:none}.tile-icon{width:46%;height:46%;color:#fff;position:relative;z-index:1}.tile-plus{font-size:34px;color:var(--muted)}.tile-name{font-size:13.5px;text-align:center;line-height:1.2}.tile-badge{position:absolute;top:8px;right:9px;min-width:22px;height:22px;padding:0 6px;border-radius:12px;background:rgba(0,0,0,.38);color:#fff;font-size:12px;font-weight:600;display:flex;align-items:center;justify-content:center;z-index:2;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.tile-badge.ext{background:rgba(0,0,0,.3);font-size:13px}.back{font-size:18px;padding:6px 12px}.health{display:flex;flex-direction:column;gap:14px}.card{background:var(--panel);border:1px solid var(--border);border-radius:16px;padding:16px;box-shadow:var(--shadow)}.card-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.card-head h2{font-size:17px;margin:0}.card-head.clickable{cursor:pointer}.card-head .head-right{display:flex;align-items:center;gap:10px}.card-head h2 .muted{font-size:13px;font-weight:400}.goal-edit{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:6px}.goal-edit input{width:64px;background:var(--panel-2);border:1px solid var(--border);border-radius:8px;padding:6px 8px;color:var(--text);font-size:14px;text-align:center}.muted{font-size:13px}.muted,.wc-empty{color:var(--muted)}.wc-empty{font-size:14px;padding:24px 0;text-align:center}.wc-head{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:6px}.wc-now{font-size:30px;font-weight:700;line-height:1}.wc-now span{font-size:15px;font-weight:500;color:var(--muted)}.wc-delta{font-size:13px;margin-top:5px}.wc-delta.down{color:var(--green)}.wc-delta.up{color:var(--red)}.wc-mini{display:flex;gap:14px}.wc-mini>div{text-align:right;display:flex;flex-direction:column}.wc-mini span{font-size:11px;color:var(--muted)}.wc-mini b{font-size:15px}.wc-svg{width:100%;height:auto;display:block;margin-top:4px;touch-action:none}.wc-axis{fill:var(--muted);font-size:10px}.wc-goal{fill:var(--green);font-size:10px}.wc-tip{fill:var(--text);font-size:11px;font-weight:600}.add-weight{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.add-weight input{background:var(--panel-2);border:1px solid var(--border);border-radius:9px;padding:9px 11px;color:var(--text);font-size:15px;color-scheme:dark}.add-weight input[type=date]{width:150px}.add-weight input[type=number]{width:120px}.add-weight .grow{flex:1 1;min-width:150px}.journal{list-style:none;padding:0;margin:10px 0 0;display:flex;flex-direction:column;gap:2px;max-height:240px;overflow:auto}.journal li{display:flex;align-items:center;gap:10px;padding:6px 4px;border-bottom:1px solid var(--border);font-size:14px}.journal li span{color:var(--muted);flex:1 1}.med-form{background:var(--panel-2);border:1px solid var(--border);border-radius:12px;padding:12px;margin-bottom:12px;display:flex;flex-direction:column;gap:8px}.med-form .row{display:flex;gap:8px;flex-wrap:wrap}.med-form .row.end{justify-content:flex-end}.med-form input,.med-form select{background:var(--panel);border:1px solid var(--border);border-radius:9px;padding:9px 11px;color:var(--text);font-size:15px}.med-form .grow{flex:1 1;min-width:140px}.med-form .dose{width:110px}.meds{list-style:none;padding:0;margin:0;gap:8px}.meds,.meds li{display:flex;flex-direction:column}.meds li{align-items:stretch;gap:10px;background:var(--panel-2);border:1px solid var(--border);border-radius:12px;padding:10px 12px}.med-top{display:flex;align-items:center;gap:10px}.med-info{flex:1 1;min-width:0}.med-name{font-size:15px}.med-dose,.med-when{color:var(--muted)}.med-when{font-size:12px;margin-top:2px}.mcal{background:var(--panel-2);border:1px solid var(--border);border-radius:12px;padding:12px}.cal-head{display:flex;align-items:center;justify-content:space-between;font-size:14px;margin-bottom:8px}.cal-head span{font-weight:600}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);grid-gap:4px;gap:4px}.cal-grid.head{margin-bottom:4px}.cal-wd{text-align:center;font-size:11px;color:var(--muted);padding:2px 0}.mcell{position:relative;aspect-ratio:1/1;border:1px solid transparent;border-radius:9px;background:transparent;color:var(--text);cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:0}.mcell.empty{background:none;cursor:default}.mcell:hover{background:var(--panel)}.mcell.sel,.mcell.today{border-color:var(--accent)}.mcell.sel{background:var(--accent-soft)}.mcell-day{font-size:13px}.mcell-dots{display:flex;gap:3px;height:7px;align-items:center}.mdot{width:6px;height:6px;border-radius:50%;border:1.5px solid var(--c);background:transparent}.mdot.on{background:var(--c)}.mdot.miss{border-color:var(--red)}.mcal-legend{display:flex;gap:14px;flex-wrap:wrap;margin-top:10px;font-size:12px;color:var(--muted)}.mcal-legend .dot,.mcal-list .dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:6px;vertical-align:middle}.mcal-day{margin-top:12px;border-top:1px solid var(--border);padding-top:12px}.mcal-day-h{font-size:14px;font-weight:600;margin-bottom:8px;text-transform:capitalize}.mcal-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px}.mcal-list li{display:flex;align-items:center;gap:8px}.mcal-name{flex:1 1;font-size:14px}.mcal-name em{color:var(--muted);font-style:normal}.meds-manage{list-style:none;padding:0;margin:12px 0 0;display:flex;flex-direction:column;gap:6px}.meds-manage li{display:flex;align-items:center;gap:10px;padding:8px 4px;border-top:1px solid var(--border)}.meds-manage .med-info{flex:1 1}.trips{display:flex;flex-direction:column;gap:14px}.scratch{background:#0c1a33;border-radius:12px;overflow:hidden}.scratch-svg{width:100%;height:auto;display:block}.sc-c{fill:#2a3344;stroke:#0c1a33;stroke-width:.5;cursor:pointer;transition:fill .12s}.sc-c:hover{fill:#3d4a63}.sc-c.v{fill:#5b8cff}.sc-c.v:hover{fill:#7aa2ff}.map-hint{margin:10px 0 0;text-align:center}.progress-row{display:flex;gap:18px;margin-bottom:12px}.prog-stat{display:flex;flex-direction:column}.prog-stat b{font-size:24px}.prog-stat span{font-size:12px;color:var(--muted)}.bar{height:8px;background:var(--panel-2);overflow:hidden}.bar,.bar-fill{border-radius:6px}.bar-fill{height:100%;background:linear-gradient(90deg,#2dd4bf,#5b8cff);transition:width .3s}.countries{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:2px}.countries li{border-bottom:1px solid var(--border)}.countries li:last-child{border-bottom:none}.country-row{display:flex;align-items:center;gap:10px;padding:9px 2px}.cname{flex:1 1;font-size:15px;cursor:pointer}.flag{font-size:18px}.ccount{font-size:12px;color:var(--muted);cursor:pointer}.cities{display:flex;flex-wrap:wrap;gap:6px;padding:0 0 12px 32px}.city-chip{background:var(--panel-2);border:1px solid var(--border);color:var(--muted);border-radius:16px;padding:5px 11px;font-size:13px;cursor:pointer}.city-chip.on{background:rgba(45,212,191,.14);border-color:#2dd4bf;color:#2dd4bf}.city-chip.add{border-style:dashed}.city-chip.del-country{border-style:dashed;color:var(--red);border-color:rgba(240,80,110,.4)}.add-city{display:inline-flex;gap:4px}.add-city input{background:var(--panel-2);border:1px solid var(--border);border-radius:16px;padding:5px 11px;color:var(--text);font-size:13px;width:110px}.add-country{display:flex;gap:8px;margin-bottom:12px}.add-country input{flex:1 1;background:var(--panel-2);border:1px solid var(--border);border-radius:9px;padding:9px 11px;color:var(--text);font-size:15px}.trip-form{background:var(--panel-2);border:1px solid var(--border);border-radius:12px;padding:12px;margin-bottom:12px;display:flex;flex-direction:column;gap:8px}.trip-form .row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.trip-form .row.end{justify-content:flex-end}.trip-form label{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:5px}.trip-form input{background:var(--panel);border:1px solid var(--border);border-radius:9px;padding:9px 11px;color:var(--text);font-size:15px;color-scheme:dark}.trip-form .grow{width:100%}.trip-form .bud{width:130px}.trips-tabs{width:-moz-fit-content;width:fit-content;margin-bottom:10px}.trip-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px}.trip{display:block;background:var(--panel-2);border:1px solid var(--border);border-radius:12px;padding:0;overflow:hidden}.trip-head{display:flex;align-items:flex-start;gap:10px;padding:12px;cursor:pointer}.trip-head:hover{background:var(--panel)}.trip-body{flex:1 1;min-width:0}.trip-title{font-size:15px}.trip-caret{color:var(--muted);font-size:14px;padding-top:2px}.trip-detail{padding:0 12px 12px;border-top:1px solid var(--border)}.trip-detail-actions{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}.trip-detail-actions .del-btn{color:var(--red);margin-left:auto}.bookings{list-style:none;padding:0;margin:12px 0 0;display:flex;flex-direction:column;gap:6px}.bookings li{display:flex;gap:10px;align-items:flex-start;padding:8px;background:var(--panel);border:1px solid var(--border);border-radius:10px}.bk-ico{font-size:17px;line-height:1.4}.bk-body{flex:1 1;min-width:0}.bk-title{font-size:14px;word-break:break-word}.bk-actions{display:flex;gap:2px}.chip.paid{color:var(--green);border-color:rgba(63,185,80,.4)}.chip.booked{color:var(--yellow);border-color:rgba(227,179,65,.4)}.bk-total{margin-top:10px;font-size:14px;color:var(--muted)}.bk-total b{color:var(--text)}.paid-note{color:var(--green)}.bk-form{margin-top:12px;background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:10px;display:flex;flex-direction:column;gap:8px}.bk-form .row{display:flex;gap:8px;flex-wrap:wrap}.bk-form .row.end{justify-content:flex-end}.bk-form input,.bk-form select{background:var(--panel-2);border:1px solid var(--border);border-radius:9px;padding:9px 10px;color:var(--text);font-size:15px;color-scheme:dark}.bk-form .grow{flex:1 1;min-width:140px;width:100%}.bk-form .bud{width:120px}@media (max-width:600px){.grid{grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:12px}}