*{box-sizing:border-box}body{font-family:system-ui,sans-serif;margin:0;background:#faf9f5;color:#1a1a18}button{font:inherit;border:1px solid #ddd;background:#fff;border-radius:8px;padding:6px 10px;cursor:pointer}h1,h2{font-weight:600}.lock{max-width:320px;margin:20vh auto;text-align:center}.lock input{width:100%;padding:10px;font-size:16px;border:1px solid #ccc;border-radius:8px}.app{display:flex;flex-direction:column;height:100dvh}.toolbar{display:flex;gap:6px;padding:8px;align-items:center;border-bottom:1px solid #e5e2da}.toolbar .spacer{flex:1}.toolbar .today{font-weight:600}.toolbar .add{font-size:18px;line-height:1}.banner{padding:6px 12px;font-size:13px;text-align:center}.banner.warn{background:#faeeda;color:#633806}.banner.toast{background:#fcebeb;color:#791f1f}.weekstrip{display:flex;gap:2px;padding:6px 8px 0}.weekstrip .day{flex:1;display:flex;flex-direction:column;align-items:center;padding:4px 0;border:none;background:none;border-radius:8px}.weekstrip .day.today{background:#eae7de}.weekstrip .abbr{font-size:11px;color:#666}.weekstrip .num{font-size:15px;font-weight:600}.weekstrip .plane{font-size:10px}.filter{display:flex;gap:6px;padding:8px;overflow-x:auto}.chip{border:1.5px solid var(--chip);color:var(--chip);background:#fff;border-radius:999px;padding:3px 12px;font-size:13px;white-space:nowrap}.chip.active{background:var(--chip);color:#fff}.week{flex:1;display:flex;overflow-x:auto;overflow-y:auto;scroll-snap-type:x mandatory}.daycol{min-width:100vw;scroll-snap-align:start;padding:8px 12px 24px}.daycol h2{font-size:16px;margin:4px 0 8px}.daycol .date{color:#888;font-weight:400;font-size:13px}@media (min-width: 768px){.week{scroll-snap-type:none}.daycol{min-width:0;flex:1;border-left:1px solid #eee}.daycol h2{font-size:13px}}.travel{font-size:12px;border-radius:6px;padding:3px 8px;margin-bottom:6px;background:color-mix(in srgb,var(--chip) 12%,white);color:var(--chip);border:1px dashed var(--chip)}.grid{position:relative;margin-left:34px}.hourline{position:absolute;left:0;right:0;border-top:1px solid #e8e5dd}.hourline span{position:absolute;left:-34px;top:-8px;font-size:11px;color:#999}.block{position:absolute;border-radius:8px;padding:4px 8px;overflow:hidden;cursor:pointer;background:color-mix(in srgb,var(--blk) 14%,white);border:1.5px solid var(--blk);color:var(--blk);display:flex;flex-direction:column;touch-action:pan-y;user-select:none;-webkit-user-select:none}.block .title{font-weight:600;font-size:13px}.block .meta{font-size:11px;display:flex;gap:6px;align-items:center}.block .note{font-size:11px;opacity:.8;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.block .dots{display:inline-flex;gap:2px}.block .dots i{width:7px;height:7px;border-radius:50%;display:inline-block}.block.dimmed{opacity:.45;border-style:dashed}.block.faded{opacity:.2}.block.dragging{opacity:.85;box-shadow:0 4px 14px #00000040;z-index:10;touch-action:none}.block .resize{position:absolute;left:0;right:0;bottom:0;height:12px;cursor:ns-resize;touch-action:none}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;z-index:20}.sheet{position:fixed;left:0;right:0;bottom:0;background:#fff;border-radius:16px 16px 0 0;padding:16px;z-index:21;max-height:80dvh;overflow-y:auto}.sheet h3{margin:0 0 12px}.sheet label{display:block;font-size:13px;color:#555;margin:10px 0 4px}.sheet input[type=text],.sheet input[type=date],.sheet select,.sheet textarea{width:100%;padding:8px;font-size:15px;border:1px solid #ccc;border-radius:8px}.sheet .row{display:flex;gap:8px}.sheet .row>*{flex:1}.sheet .people{display:flex;flex-wrap:wrap;gap:6px}.sheet .actions{display:flex;gap:8px;margin-top:16px}.sheet .actions .danger{color:#a32d2d;border-color:#a32d2d}.sheet .actions .primary{background:#1a1a18;color:#fff;border-color:#1a1a18;flex:1}.sheet .bt-item{display:flex;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid #eee}.sheet .bt-item .name{flex:1;font-weight:600;color:var(--blk)}.print{padding:16px}.print table{width:100%;border-collapse:collapse}.print th,.print td{border:1px solid #ccc;padding:4px 6px;font-size:12px;vertical-align:top;text-align:left}.print .pb{border-radius:4px;padding:1px 4px;margin:1px 0;background:color-mix(in srgb,var(--blk) 14%,white);color:var(--blk)}@media print{.print .noprint{display:none}body{background:#fff}}
