:root{--bg: #f4f7f9;--card: #ffffff;--ink: #073b4c;--muted: #5c7280;--accent: #118ab2;--accent-hover: #0d7093;--accent-tint: #e2f0f5;--accent-ink: #ffffff;--border: #dbe4e8;--danger: #ef476f;--danger-hover: #d83862;--ok: #06d6a0;--ok-ink: #0a8f6c;--ok-tint: #e0f7f0;--warn: #ffd166;--warn-ink: #8a6a00;--warn-tint: #fff3d1;--secondary: #e6edf1;--row-hover: #eef4f7}*{box-sizing:border-box}html,body{max-width:100%;overflow-x:hidden}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--ink)}a{color:var(--accent);text-decoration:none}.app-header{position:relative;display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:.75rem 1.25rem;background:var(--card);border-bottom:1px solid var(--border)}.app-header nav{display:flex;gap:1.25rem;align-items:center}.nav-toggle{display:none;background:none;border:none;color:var(--ink);font-size:1.4rem;line-height:1;padding:.25rem .5rem;cursor:pointer}.app-header nav a{white-space:nowrap;padding:.35rem .7rem;border-radius:8px;color:var(--muted, var(--ink));border-bottom:2px solid transparent;transition:background .15s,color .15s}.app-header nav a:hover{background:color-mix(in srgb,var(--accent) 10%,transparent)}.app-header nav a.active{color:var(--accent);font-weight:600;background:color-mix(in srgb,var(--accent) 12%,transparent);border-bottom-color:var(--accent)}.app-header .brand{font-weight:700;font-size:1.1rem;color:var(--ink);flex-shrink:0}.container{max-width:900px;margin:1.5rem auto;padding:0 1rem}.card{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:1rem 1.25rem;margin-bottom:1rem}h1{font-size:1.5rem}h2{font-size:1.2rem}button,.btn{background:var(--accent);color:var(--accent-ink);border:none;border-radius:7px;padding:.5rem .9rem;font-size:.95rem;cursor:pointer}button.secondary{background:var(--secondary);color:var(--ink)}button.danger{background:var(--danger)}button.fab-add{width:3rem;height:3rem;border-radius:50%;padding:0;font-size:1.9rem;line-height:1;font-weight:300;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 6px #0003}button.new-trip-btn{width:3.25rem;height:3.25rem;border-radius:50%;padding:0;display:inline-flex;align-items:center;justify-content:center;box-shadow:0 2px 6px #0003}button:disabled{opacity:.5;cursor:not-allowed}.link-btn{background:none;color:var(--accent);padding:0}.expense-screen{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:var(--bg);display:flex;flex-direction:column;overflow-y:auto}.expense-screen-head{display:flex;align-items:center;justify-content:space-between;padding:.9rem 1.25rem;background:var(--card);border-bottom:1px solid var(--border);font-weight:600;flex-shrink:0}.expense-screen-head .link-btn{font-size:1.1rem}.expense-screen-head .head-spacer{width:1.1rem;flex-shrink:0}.amount-hero{flex:1;min-height:38vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.25rem;padding:1.5rem 1rem}.amount-input{width:100%;max-width:8ch;border:none;background:transparent;text-align:center;font-size:clamp(3.5rem,18vw,7rem);font-weight:700;line-height:1;font-variant-numeric:tabular-nums;color:var(--ink);padding:0}.amount-input:focus{outline:none}.amount-cur{font-size:1.6rem;font-weight:600;color:var(--muted)}.amount-eur{margin:.4rem 0 0;font-size:1rem}.expense-screen-fields{max-width:600px;width:100%;margin:0 auto;padding:0 1.25rem 2rem;flex-shrink:0}.expense-screen-foot{position:sticky;bottom:0;flex-shrink:0;padding:.85rem 1.25rem calc(.85rem + env(safe-area-inset-bottom));background:var(--card);border-top:1px solid var(--border)}.expense-screen-foot .submit-primary{display:block;width:100%;max-width:600px;margin:0 auto;padding:.8rem;font-size:1rem;font-weight:600}.entry-card{display:contents}@media (min-width: 640px){.expense-screen.entry-modal{background:#0f172a73;align-items:center;justify-content:center;padding:2rem 1rem}.expense-screen.entry-modal .entry-card{display:flex;flex-direction:column;width:100%;max-width:640px;max-height:calc(100vh - 4rem);background:var(--card);border-radius:14px;overflow:hidden;box-shadow:0 20px 60px #00000040}.expense-screen.entry-modal .expense-screen-fields{overflow-y:auto;padding-top:1.25rem}.expense-screen.entry-modal .expense-screen-foot{position:static}}label{display:block;font-size:.85rem;color:var(--muted);margin:.5rem 0 .15rem}label.check{display:flex;align-items:center;gap:.4rem;cursor:pointer;margin-top:.6rem}label.check input{width:auto}input,select,textarea{width:100%;padding:.5rem;border:1px solid var(--border);border-radius:6px;font-size:.95rem;font-family:inherit;background:#fff}.row{display:flex;gap:.75rem;flex-wrap:wrap}.row>*{flex:1;min-width:120px}.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:.5rem;border-bottom:1px solid var(--border);font-size:.92rem}th{color:var(--muted);font-weight:600}.right{text-align:right}.clickable-row{cursor:pointer;transition:background .12s}.clickable-row:hover td{background:var(--row-hover)}.row-actions{display:flex;gap:1.1rem;justify-content:flex-end;align-items:center}.link-btn svg{display:block}.error{color:var(--danger);font-size:.9rem;margin:.5rem 0}.muted{color:var(--muted)}.list-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.badge{display:inline-block;background:var(--secondary);border-radius:20px;padding:.1rem .6rem;font-size:.8rem;color:var(--muted)}.badge-warn{background:var(--warn-tint);color:var(--warn-ink);margin-left:.5rem;vertical-align:middle;font-size:.72rem}.amount{font-variant-numeric:tabular-nums;font-weight:600}.login-wrap{max-width:360px;margin:4rem auto}.expense-list>.clickable-row+.clickable-row{border-top:1px solid var(--border)}.expense-item{display:flex;align-items:center;gap:.75rem;padding:.6rem .15rem}.expense-item:hover{background:var(--row-hover)}.expense-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:.1rem}.expense-date{font-size:.78rem;color:var(--muted)}.expense-cat{font-size:.95rem;color:var(--ink)}.expense-desc{font-size:.8rem;color:var(--muted);overflow-wrap:anywhere}.expense-amounts{flex-shrink:0;text-align:right;display:flex;flex-direction:column;gap:.1rem}.expense-eur{font-size:.8rem;font-weight:500;color:var(--muted)}.tabs{display:flex;gap:.25rem;margin:.25rem 0 1rem;border-bottom:1px solid var(--border)}.tabs .tab{background:none;color:var(--muted);border:none;border-radius:0;padding:.5rem .9rem;font-size:.95rem;font-weight:600;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px}.tabs .tab:hover{color:var(--ink)}.tabs .tab.active{color:var(--accent);border-bottom-color:var(--accent)}.agenda-day{display:flex;align-items:baseline;justify-content:space-between;gap:.5rem;margin:1rem 0 .35rem;padding:.2rem .15rem;border-bottom:1px solid var(--border);cursor:pointer;border-radius:4px}.agenda-day:first-child{margin-top:0}.agenda-day:hover{background:var(--row-hover)}.agenda-day-label{font-size:.9rem;font-weight:700;color:var(--ink);text-transform:capitalize}.agenda-day-add{font-size:.75rem;font-weight:600;color:var(--accent);white-space:nowrap}.agenda-empty{font-size:.85rem;margin:.2rem 0 .4rem}.agenda-empty-click{cursor:pointer}.agenda-item{display:flex;align-items:flex-start;gap:.75rem;padding:.55rem .15rem}.agenda-item+.agenda-item{border-top:1px solid var(--border)}.agenda-item:hover{background:var(--row-hover)}.agenda-time{flex-shrink:0;width:5.5rem;font-size:.85rem;font-weight:600;color:var(--accent);font-variant-numeric:tabular-nums;padding-top:.05rem}.agenda-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:.1rem}.agenda-title{font-size:.95rem;color:var(--ink);overflow-wrap:anywhere}.agenda-loc,.agenda-notes{font-size:.8rem;color:var(--muted);overflow-wrap:anywhere}.trip-card{display:flex;flex-direction:row;align-items:stretch;gap:1rem}.trip-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:.85rem}.trip-card.clickable{cursor:pointer;transition:border-color .12s,box-shadow .12s}.trip-card.clickable:hover{border-color:var(--accent);box-shadow:0 1px 6px #0000000f}.trip-card.clickable h2{color:var(--accent)}.trip-header{display:flex;align-items:center;gap:1rem}.trip-main{flex:1;min-width:0}.trip-thumb{flex-shrink:0;align-self:flex-start;width:76px;height:76px;border-radius:10px;overflow:hidden;display:flex;align-items:center;justify-content:center;background:var(--accent-tint);color:var(--accent)}.trip-thumb svg{width:40px;height:40px}.trip-cover-img{width:100%;height:100%;object-fit:cover;display:block}.trip-cover-banner{position:relative;width:100%;max-height:240px;height:200px;border-radius:12px;overflow:hidden;margin:.25rem 0 .5rem;background:var(--accent-tint);color:var(--accent);display:flex;align-items:center;justify-content:center}.trip-cover-banner svg{width:56px;height:56px}.trip-cover-banner--editable{cursor:pointer;transition:filter .12s}.trip-cover-banner--editable:hover{filter:brightness(.96)}.trip-cover-banner--editable.is-busy{cursor:progress;opacity:.7}.trip-cover-fill{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.trip-cover-hint{color:var(--accent);font-weight:600}.trip-cover-edit-badge{position:absolute;right:.6rem;bottom:.6rem;width:2rem;height:2rem;display:flex;align-items:center;justify-content:center;border-radius:999px;background:#00000073;font-size:1rem}.trip-cover-caption{position:absolute;left:0;right:0;bottom:0;padding:2.5rem 1rem .9rem;display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;pointer-events:none;background:linear-gradient(to top,rgba(0,0,0,.72),rgba(0,0,0,.28) 55%,transparent)}.trip-cover-cap-left{display:flex;flex-direction:column;gap:.2rem;min-width:0;text-align:left}.trip-cover-cap-right{flex-shrink:0;text-align:right}.trip-cover-desc{margin:0;color:#fff;font-weight:600;white-space:pre-wrap;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;text-shadow:0 1px 3px rgba(0,0,0,.5)}.trip-cover-participants{color:#ffffffeb;font-size:.85rem;text-shadow:0 1px 3px rgba(0,0,0,.5)}.trip-cover-meta{color:#fff;font-weight:600;font-size:.9rem;text-shadow:0 1px 3px rgba(0,0,0,.5)}.cover-field{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.cover-field-preview{width:120px;height:90px;border-radius:8px;overflow:hidden;flex-shrink:0;background:var(--accent-tint);color:var(--accent);display:flex;align-items:center;justify-content:center}.cover-field-preview svg{width:36px;height:36px}.cover-field-empty{border:1px dashed var(--border);background:var(--bg)}.cover-field-empty .muted{font-size:.8rem}.cover-field-actions{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.cover-pick{display:inline-flex;align-items:center;cursor:pointer;padding:.5rem .9rem;border:1px solid var(--border);border-radius:8px;background:var(--card);font-size:.9rem}.cover-pick:hover{border-color:var(--accent);color:var(--accent)}.cropper-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#0009;display:flex;align-items:center;justify-content:center;padding:1rem}.cropper-modal{width:min(560px,100%);background:var(--card);border-radius:12px;padding:1rem;box-shadow:0 10px 40px #00000059}.cropper-viewport{position:relative;width:100%;overflow:hidden;border-radius:8px;background:#000;touch-action:none;cursor:grab;-webkit-user-select:none;user-select:none}.cropper-viewport:active{cursor:grabbing}.cropper-img{position:absolute;max-width:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.cropper-frame{position:absolute;top:0;right:0;bottom:0;left:0;box-shadow:inset 0 0 0 1px #fff9;pointer-events:none}.cropper-controls{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-top:.9rem;flex-wrap:wrap}.cropper-zoom{display:flex;align-items:center;gap:.6rem;flex:1;min-width:180px;color:var(--muted)}.cropper-zoom input[type=range]{flex:1}.cropper-actions{display:flex;gap:.6rem}.trip-total{text-align:right;flex-shrink:0;margin-right:1.5rem}.trip-total-amount{display:block;font-size:1.6rem;font-weight:700;font-variant-numeric:tabular-nums;color:var(--ink);white-space:nowrap}.trip-edit{flex-shrink:0;font-size:1.1rem}.trip-delete-zone{margin-top:2rem}.trip-delete-zone button{width:100%}.trip-chart--pie{display:flex;justify-content:center}.pie-embed{display:flex;flex-direction:column;align-items:center;text-align:center}.pie-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1rem;margin-top:.5rem}.pie-card{border:1px solid var(--border);border-radius:10px;padding:.75rem;display:flex;flex-direction:column;align-items:center;text-align:center}.pie-title{font-size:1rem;margin:0 0 .5rem;color:var(--ink)}.pie-card svg path{cursor:pointer;transition:opacity .12s}.pie-center-value{font-size:20px;font-weight:700;fill:var(--ink)}.pie-center-label{font-size:11px;fill:var(--muted)}.pie-caption{margin:.5rem 0 0;font-size:.85rem;color:var(--muted)}.pie-legend{display:flex;flex-wrap:wrap;gap:.35rem 1rem;margin:0}.legend-item{display:inline-flex;align-items:center;gap:.4rem;font-size:.85rem;color:var(--ink);background:none;border:none;border-radius:4px;padding:.1rem .2rem;cursor:pointer}.legend-item--off{color:var(--muted);text-decoration:line-through}.legend-item--off .legend-swatch{opacity:.35}.legend-swatch{width:12px;height:12px;border-radius:3px;display:inline-block}.legend-bar{display:flex;align-items:flex-start;gap:.75rem;margin-bottom:.75rem}.legend-area{flex:1;min-width:0;position:relative}.legend-measure{position:absolute;top:0;left:0;right:0;visibility:hidden;pointer-events:none}.legend-open{background:none;border:1px solid var(--border);color:var(--ink);border-radius:7px;padding:.3rem .7rem;font-size:.85rem;cursor:pointer}.legend-drawer{margin:0 0 .75rem;padding:.6rem .7rem;border:1px solid var(--border);border-radius:8px;background:var(--bg)}.trip-notes-field{margin-top:.75rem}.add-expense-bar{display:flex;justify-content:center;margin:.25rem 0 1rem}.trip-notes{margin-top:.75rem}.trip-notes-title{font-size:1rem;margin:0 0 .5rem}.trip-description{white-space:pre-wrap}.todo-list{list-style:none;margin:0 0 .6rem;padding:0;display:flex;flex-direction:column;gap:.35rem}.todo-item{display:flex;align-items:center;gap:.5rem}.todo-tick{background:none;border:none;color:var(--accent);font-size:1.15rem;line-height:1;padding:0 .15rem;cursor:pointer}.todo-text{flex:1;min-width:0;word-break:break-word}.todo-text.done{text-decoration:line-through;color:var(--muted)}.todo-del{background:none;border:none;color:var(--muted);font-size:.9rem;padding:0 .2rem;cursor:pointer}.todo-del:hover{color:var(--danger)}.todo-more{background:none;border:none;color:var(--accent);padding:.15rem 0;margin:0 0 .5rem;font-size:.9rem;cursor:pointer}.todo-add{display:flex;align-items:center;gap:.6rem}.todo-add input{flex:1;min-width:0}.todo-add-btn{flex-shrink:0;background:none;border:none;color:var(--accent);padding:.25rem;cursor:pointer;display:flex;align-items:center}.todo-add-btn svg{display:block}.todo-msg{display:inline-block;margin-top:.4rem}.view-toggle{flex-shrink:0;display:inline-flex;border:1px solid var(--border);border-radius:7px;overflow:hidden}.view-toggle button{background:var(--card);color:var(--muted);border:none;border-radius:0;padding:.35rem .6rem;font-size:.85rem;display:inline-flex;align-items:center}.view-toggle svg{display:block}.view-toggle button+button{border-left:1px solid var(--border)}.view-toggle button.active{background:var(--accent);color:var(--accent-ink)}.bar-list{display:flex;flex-direction:column;gap:.85rem;margin-top:.5rem}.bar-card{border:1px solid var(--border);border-radius:10px;padding:.75rem}.bar-head{display:flex;justify-content:space-between;align-items:baseline;gap:.5rem;margin-bottom:.5rem}.bar-title{font-size:1rem;margin:0;color:var(--ink)}.bar-total{font-size:.9rem;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums}.bar-track{display:flex;width:100%;height:26px;border-radius:6px;overflow:hidden}.bar-seg{min-width:2px;cursor:pointer;transition:opacity .12s}.bar-seg+.bar-seg{box-shadow:-2px 0 0 var(--card)}.bar-caption{margin:.5rem 0 0;font-size:.85rem;color:var(--muted)}.year-chart-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.year-chart-scroll svg{display:block;height:auto}.year-chart-total{margin:.75rem 0 0;font-size:.9rem}.year-chart-total strong{color:var(--ink);font-variant-numeric:tabular-nums}.year-chart-toggle{display:flex;justify-content:center;margin-top:.75rem}.attachments{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.5rem;align-items:center}.attachment{border:1px solid var(--border);border-radius:6px;padding:.3rem .6rem;font-size:.85rem;display:flex;gap:.5rem;align-items:center}.doc-add{display:inline-flex;align-items:center;justify-content:center;padding:.25rem;border:1px dashed var(--border);border-radius:6px;color:var(--accent)}.doc-add:hover{border-color:var(--accent)}.doc-list{display:flex;flex-direction:column}.doc-item{display:flex;align-items:center;gap:.5rem;padding:.55rem .15rem;border-bottom:1px solid var(--border)}.doc-item:last-child{border-bottom:none}.doc-open{flex:1;min-width:0;display:flex;align-items:center;gap:.6rem;text-align:left;color:inherit}.doc-icon{flex-shrink:0;font-size:1.1rem}.doc-main{min-width:0;display:flex;flex-direction:column;gap:.15rem}.doc-name{font-size:.95rem;color:var(--ink);overflow-wrap:anywhere}.doc-meta{display:flex;align-items:center;flex-wrap:wrap;gap:.35rem;font-size:.8rem}.doc-source{color:var(--muted);overflow-wrap:anywhere}.doc-badge{flex-shrink:0;padding:.05rem .4rem;border-radius:999px;font-size:.7rem;font-weight:600}.doc-badge-expense{background:var(--accent-tint);color:var(--accent)}.doc-badge-planning{background:var(--ok-tint);color:var(--ok-ink)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f161e80;display:flex;align-items:center;justify-content:center;padding:1rem;z-index:50}.modal-box{background:var(--card);border-radius:10px;padding:1rem;width:100%;max-width:420px;max-height:90vh;overflow:auto;display:flex;flex-direction:column;gap:.75rem}.modal-box-wide{max-width:820px}.modal-head{display:flex;justify-content:space-between;align-items:center;gap:1rem;font-weight:600}.modal-head .link-btn{font-size:1.1rem}.modal-foot{display:flex;justify-content:flex-end;gap:.5rem;margin-top:.25rem}.preview-img{max-width:100%;max-height:78vh;object-fit:contain;margin:0 auto;display:block}.pdf-view{max-height:78vh;overflow:auto;background:var(--bg);border-radius:6px}.pdf-page{display:block;margin:0 auto .5rem;box-shadow:0 1px 4px #00000026}@media (max-width: 640px){.app-header{gap:.75rem;padding:.6rem .9rem}.app-header .brand{font-size:1rem}.nav-toggle{display:block}.app-header nav{display:none;position:absolute;top:100%;right:0;left:0;z-index:20;flex-direction:column;align-items:stretch;gap:.25rem;padding:.5rem;background:var(--card);border-bottom:1px solid var(--border);box-shadow:0 8px 16px #0000001f}.app-header nav.open{display:flex}.app-header nav a{padding:.6rem .75rem;border-bottom:none;border-radius:8px}.app-header nav a.active{border-bottom:none}.container{margin:1rem auto;padding:0 .75rem}.card{padding:.85rem .9rem}h1{font-size:1.3rem}th,td{padding:.4rem .35rem;font-size:.85rem}.trip-total{margin-right:.5rem}.trip-total-amount{font-size:1.3rem}.trip-thumb{width:56px;height:56px}.trip-thumb svg{width:30px;height:30px}}@media (orientation: landscape) and (max-height: 600px){.year-chart-scroll svg{width:auto;height:72vh;margin:0 auto}}
