@font-face{font-family:Inter Tight;font-style:normal;font-weight:500 800;font-display:swap;src:url(/fonts/InterTight.woff2)format("woff2")}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500 700;font-display:swap;src:url(/fonts/JetBrainsMono.woff2)format("woff2")}:root{--paper:#f1ead3;--paper-2:#e7ddbc;--card:#fbf7ea;--ink:#2f3326;--ink-2:#786d54;--ink-3:#9fa889;--line:#786d542e;--green:#4abb8f;--green-2:#2b8a66;--late:#c4643f;--c1:#3fae9a;--c2:#939d2d;--c3:#d9825b;--c4:#9a6b9e;--c5:#5b8fc2;--c6:#d1a43a;--mono:"JetBrains Mono","Droid Sans Mono",monospace;--sans:"Inter Tight",Roboto,sans-serif}*{box-sizing:border-box}html,body{margin:0}body{width:1280px;height:800px;color:var(--ink);font-family:var(--sans);background:url(/img/blot.png) 0 0/400px,url(/img/grain.png) 0 0/200px,var(--paper);font-size:19px;line-height:1.3;display:flex;overflow:hidden}.rail{border-right:1px solid var(--line);background:#e7ddbcb3;flex-direction:column;flex:none;align-items:center;gap:6px;width:88px;padding:14px 0;display:flex}.rail a{width:72px;color:var(--ink-2);font:500 11px var(--mono);letter-spacing:.04em;text-transform:uppercase;border-radius:14px;flex-direction:column;align-items:center;gap:3px;padding:6px 0;text-decoration:none;display:flex}.rail a.on{background:var(--card);color:var(--ink);box-shadow:0 1px #786d5440}.rail .dot{color:#fff;width:44px;height:44px;font:800 17px var(--sans);border-radius:50%;justify-content:center;align-items:center;display:flex}.rail .ico{justify-content:center;align-items:center;width:44px;height:44px;display:flex}.rail hr{border:0;border-top:1px solid var(--line);width:48px;margin:4px 0}svg.i{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;width:26px;height:26px}.main{flex-direction:column;flex:1;gap:14px;min-width:0;padding:16px;display:flex}.label{font:500 13px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2)}.banner{background:url(/img/banner-shore.jpg) 50%/cover;border-radius:18px;flex:none;height:216px;position:relative;overflow:hidden}.banner:after{content:"";background:linear-gradient(#f1ead300,#f1ead38c);height:60px;position:absolute;bottom:0;left:0;right:0}.clock{z-index:1;color:#1f3b2e;position:absolute;top:14px;left:26px}.clock .t{font:800 112px/1 var(--sans);letter-spacing:-.04em}.clock .t small{letter-spacing:0;margin-left:6px;font-size:30px}.clock .d{font:500 17px var(--mono);margin-top:8px}.clock .d b{letter-spacing:.06em;text-transform:uppercase;font-weight:700}.who{z-index:1;color:#1f3b2e;position:absolute;top:18px;left:26px}.who .n{font:800 76px/1 var(--sans);letter-spacing:-.03em}.who .d{font:500 17px var(--mono);margin-top:10px}.who .t2{font:800 44px/1 var(--sans);letter-spacing:-.02em;white-space:nowrap;position:absolute;top:128px;left:0}.who .t2 small{margin-left:4px;font-size:18px}.wx{z-index:1;background:#fbf7eae6;border-radius:14px;width:430px;padding:14px 18px;position:absolute;top:16px;bottom:16px;right:16px}.wx .now{align-items:center;gap:12px;display:flex}.wx .now svg.i{width:40px;height:40px;color:var(--ink-2)}.wx .deg{font:800 48px/1 var(--sans);letter-spacing:-.03em}.wx .hl{font:500 14px var(--mono);color:var(--ink-2)}.wx .say{margin:8px 0 10px;font-size:17px}.hours{text-align:center;font:500 13px var(--mono);color:var(--ink-2);justify-content:space-between;display:flex}.hours svg.i{width:20px;height:20px;margin:3px auto;display:block}.hours b{color:var(--ink);font-weight:700}.next{flex:none;gap:12px;height:122px;display:flex}.card{background:var(--card);border-radius:16px;box-shadow:0 1px #786d5433,0 6px 16px #3c321e12}.big{background:var(--green-2);color:#f6f1df;flex:1.9;align-items:center;gap:18px;padding:14px 22px;display:flex}.big .label{color:#cfe9dc}.big .ttl{font:800 36px/1.05 var(--sans);letter-spacing:-.02em;margin:4px 0 2px}.big .meta{font:500 15px var(--mono);color:#d8eee3}.big .count{text-align:right;margin-left:auto}.big .count b{font:800 66px/1 var(--sans);letter-spacing:-.04em;display:block}.big .count span{font:700 13px var(--mono);letter-spacing:.08em}.pill{color:var(--green-2);font:700 13px var(--mono);letter-spacing:.04em;background:#f6f1df;border-radius:20px;margin-top:8px;padding:4px 12px;display:inline-block}.small{flex-direction:column;flex:1;padding:14px 18px;display:flex}.small .ttl{font:700 21px/1.15 var(--sans);margin-top:6px}.small .meta{font:500 14px var(--mono);color:var(--ink-2);margin-top:auto}.tag{vertical-align:0;border-radius:50%;width:12px;height:12px;margin-right:6px;display:inline-block}.grid{flex:1;gap:10px;min-height:0;display:flex}.pcol{border-top:5px solid;flex-direction:column;flex:1;gap:12px;min-width:0;padding:14px 12px;display:flex}.pcol h3{font:800 20px var(--sans);align-items:center;gap:8px;margin:0;display:flex}.ring{align-items:center;gap:10px;display:flex}.ring svg{flex:none;width:54px;height:54px;transform:rotate(-90deg)}.ring .txt b{font:800 20px/1 var(--sans);display:block}.ring .txt span{font:500 12px var(--mono);color:var(--ink-2)}.late{color:var(--late)!important;font-weight:700!important}.ev{font-size:16px;line-height:1.25}.ev i{font:normal 500 13px var(--mono);color:var(--ink-2);display:block}.side{flex-direction:column;flex:none;gap:10px;width:236px;display:flex}.side .card{padding:14px 16px}.num{font:800 44px/1 var(--sans);letter-spacing:-.03em}.num small{font:500 14px var(--mono);color:var(--ink-2);letter-spacing:0;margin-left:4px}ul.plain{margin:8px 0 0;padding:0;font-size:16px;list-style:none}ul.plain li{padding:2px 0}ul.plain li:before{content:"· ";color:var(--ink-3)}.pgrid{flex:1;gap:12px;min-height:0;display:flex}.pgrid>.card{padding:16px 18px}.chores{flex:1.25}.routine{flex:1}.sec{justify-content:space-between;align-items:baseline;margin-bottom:4px;display:flex}.sec+.sec,.list+.sec{margin-top:14px}.list{margin:0;padding:0;list-style:none}.list li{border-bottom:1px dashed var(--line);align-items:center;gap:14px;min-height:46px;display:flex}.list li:last-child{border-bottom:0}.box{border:2px solid var(--ink-2);border-radius:7px;flex:none;justify-content:center;align-items:center;width:30px;height:30px;display:flex}.box svg{fill:none;stroke:#fff;stroke-width:3px;stroke-linecap:round;stroke-linejoin:round;width:18px;height:18px}.box.on{background:var(--green);border-color:var(--green)}.box.wait{border-style:dashed;border-color:var(--green-2)}.box.wait svg{stroke:var(--green-2)}.list .nm{flex:1;min-width:0}.list li.done .nm{color:var(--ink-3);text-decoration:line-through}.list .by{font:500 14px var(--mono);color:var(--ink-2);white-space:nowrap}.chip{font:700 12px var(--mono);letter-spacing:.04em;border-radius:10px;padding:2px 8px}.chip.lt{color:var(--late);background:#c4643f24}.chip.ck{color:var(--green-2);background:#4abb8f29}.pside{flex-direction:column;flex:none;gap:10px;width:300px;display:flex}.pside .card{padding:14px 16px}.note{margin-top:8px;font-size:17px}.note i{font:normal 500 13px var(--mono);color:var(--ink-2);display:block}.btn{background:var(--green-2);color:#f6f1df;min-height:52px;font:700 18px var(--sans);border-radius:14px;justify-content:center;align-items:center;gap:10px;display:flex}.btn.ghost{background:var(--card);color:var(--ink);box-shadow:0 1px 0 #786d5440,0 0 0 1px var(--line)}.row2{gap:10px;display:flex}.row2 .btn{flex:1}a{color:inherit;text-decoration:none}.pcol{color:var(--ink)}.next>.soon{flex:1}.soon{padding:16px 18px}.soon p,p.empty{color:var(--ink-2);margin:8px 0 0;font-size:17px}.main>.soon{flex:1}button.box{font:inherit;cursor:pointer;background:0 0;padding:0}.box svg{visibility:hidden}.box.on svg,.box.wait svg{visibility:visible}.btn.off{opacity:.55}.chores,.routine{-webkit-overflow-scrolling:touch;overflow-y:auto}.list li{min-height:42px}body.plain-page{justify-content:center;align-items:center;width:auto;height:auto;min-height:100vh;padding:16px;overflow:auto}.login{width:100%;max-width:380px;padding:28px}.login h1{font:800 30px/1.1 var(--sans);letter-spacing:-.02em;margin:0 0 18px}.login p{color:var(--ink-2)}.login label{font:500 13px var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2);margin-bottom:14px;display:block}.login input{border:1px solid var(--line);width:100%;font:500 18px var(--sans);color:var(--ink);background:#fff;border-radius:10px;margin-top:6px;padding:12px 14px;display:block}.login button.btn{cursor:pointer;border:0;width:100%}.login .err{color:var(--late);font-weight:700}body.admin-page{align-items:flex-start}.admin{width:100%;max-width:640px}.admin-head{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.admin-head h1{font:800 32px/1.1 var(--sans);letter-spacing:-.02em;margin:0}.admin-head .btn{cursor:pointer;border:0;min-height:40px;padding:0 18px;font-size:15px}.admin h2{font:800 22px var(--sans);margin:18px 0 4px}.admin .hint{color:var(--ink-2);margin:0 0 14px;font-size:16px}.admin .ok{color:var(--green-2);font-weight:700}.admin .err{color:var(--late);font-weight:700}.login-row{flex-wrap:wrap;align-items:flex-end;gap:10px 14px;margin-bottom:12px;padding:16px;display:flex}.login-row .who-line{justify-content:space-between;gap:10px;width:100%;display:flex}.login-row .who-line span{font:500 13px var(--mono);color:var(--ink-2)}.login-row label{min-width:180px;font:500 12px var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2);flex:1}.login-row input{border:1px solid var(--line);width:100%;font:500 17px var(--sans);color:var(--ink);background:#fff;border-radius:10px;margin-top:5px;padding:10px 12px;display:block}.login-row .btn{cursor:pointer;border:0;min-height:44px;padding:0 22px;font-size:16px}.hub h1{margin-bottom:14px}.hub-btn{background:var(--green-2);color:#f6f1df;border-radius:14px;margin-bottom:12px;padding:16px 18px;display:block}.hub-btn b{font:800 22px var(--sans);display:block}.hub-btn span{font:500 14px var(--mono);color:#d8eee3}.hub form .btn{cursor:pointer;border:0;width:100%;margin-top:6px}.admin-head h1 a{color:inherit}.tabs{flex-wrap:wrap;gap:6px;margin:6px 0 4px;display:flex}.tabs a{background:var(--card);box-shadow:0 0 0 1px var(--line);font:700 15px var(--sans);color:var(--ink-2);border-radius:20px;padding:8px 14px}.tabs a.on{background:var(--green-2);color:#f6f1df;box-shadow:none}.check-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px;padding:14px 16px;display:flex}.check-row .what{font-size:17px}.check-row .when{font:500 13px var(--mono);color:var(--ink-2);margin-left:8px}.check-row .acts{gap:8px;display:flex}.check-row .btn{cursor:pointer;border:0;min-height:42px;padding:0 16px;font-size:15px}.later{color:var(--ink-2);margin-bottom:6px;font-size:17px}.chips{flex-wrap:wrap;gap:6px;margin:8px 0;display:flex}.chips a{background:var(--card);box-shadow:0 0 0 1px var(--line);font:700 15px var(--sans);border-radius:18px;align-items:center;padding:6px 12px;display:inline-flex}.chips a.on{box-shadow:0 0 0 2px var(--green-2)}.routine-edit{margin-bottom:14px;padding:16px}.routine-edit h3{font:800 19px var(--sans);margin:0 0 10px}.r-top{flex-wrap:wrap;gap:10px;display:flex}.admin label{font:500 12px var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2)}.admin label.grow{flex:1;min-width:160px}.admin input[type=text],.admin input:not([type]),.admin input[type=time],.admin input[type=number],.admin select{border:1px solid var(--line);width:100%;font:500 17px var(--sans);color:var(--ink);background:#fff;border-radius:10px;margin-top:5px;padding:10px 12px;display:block}.admin input[type=checkbox]{accent-color:#2b8a66;width:22px;height:22px}.days{gap:6px;margin:12px 0;display:flex}.days label{font:700 14px var(--sans);color:var(--ink);flex-direction:column;align-items:center;gap:2px;display:flex}.steps-head{font:500 12px var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2);justify-content:space-between;margin-bottom:4px;display:flex}.step{align-items:center;gap:12px;margin-bottom:6px;display:flex}.step input:first-child{border:1px solid var(--line);font:500 17px var(--sans);background:#fff;border-radius:10px;flex:1;padding:9px 12px}.step input[type=checkbox]{margin-right:28px}.routine-edit .btn,.copy-from .btn,.copy .btn{cursor:pointer;border:0;min-height:44px;margin-top:8px;padding:0 18px;font-size:16px}.copy{border-top:1px dashed var(--line);flex-wrap:wrap;align-items:center;gap:6px 12px;margin-top:14px;padding-top:12px;font-size:16px;display:flex}.copy label{font:600 15px var(--sans);text-transform:none;letter-spacing:0;color:var(--ink);align-items:center;gap:4px;display:inline-flex}.copy .btn{margin-top:0}.copy-from{flex-wrap:wrap;align-items:flex-end;gap:10px;margin-bottom:14px;padding:16px;display:flex}.link-btn{color:var(--late);font:600 15px var(--sans);cursor:pointer;background:0 0;border:0;margin-top:10px;padding:0}.r-top label:not(.grow){width:128px}.refresh{color:var(--ink-2);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin:10px 0 4px;padding:12px 16px;font-size:16px;display:flex}.refresh .btn{cursor:pointer;border:0;min-height:40px;padding:0 16px;font-size:15px}.chore-edit{margin-bottom:8px;padding:0}.chore-edit summary{cursor:pointer;flex-wrap:wrap;justify-content:space-between;gap:4px 10px;padding:14px 16px;list-style:none;display:flex}.chore-edit summary::-webkit-details-marker{display:none}.chore-edit summary .nm{font:700 17px var(--sans)}.chore-edit summary .meta{font:500 13px var(--mono);color:var(--ink-2)}.chore-edit.paused summary{opacity:.55}.chore-edit.add summary .nm{color:var(--green-2)}.chore-edit form{flex-direction:column;gap:10px;padding:0 16px 16px;display:flex}.chore-edit .btn,.person-edit .btn{cursor:pointer;border:0;align-self:flex-start;min-height:44px;padding:0 22px;font-size:16px}.odds{border-top:1px dashed var(--line);padding-top:8px}.odds-head{font:500 12px var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2);justify-content:space-between;margin-bottom:4px;display:flex}.odds-row{align-items:center;gap:12px;margin-bottom:6px;display:flex}.odds-row .odds-who{font:600 16px var(--sans);flex:1;align-items:center;display:flex}.odds-row input[type=number]{border:1px solid var(--line);width:84px;font:500 16px var(--sans);background:#fff;border-radius:10px;padding:8px 10px}.odds-row input[type=checkbox]{margin-right:28px}.admin label.inline{font:600 15px var(--sans);text-transform:none;letter-spacing:0;color:var(--ink);align-items:center;gap:8px;display:flex}.person-edit{flex-direction:column;gap:10px;margin-bottom:12px;padding:16px;display:flex}.person-edit h3{font:800 19px var(--sans);margin:0}.admin input[type=color]{border:1px solid var(--line);background:#fff;border-radius:10px;width:64px;height:44px;margin-top:5px;padding:2px;display:block}.shuffle{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px;padding:14px 16px;display:flex}.shuffle b,.shuf-title b{font:800 18px var(--sans);display:block}.shuffle span,.shuf-title span{color:var(--ink-2);font-size:15px}.shuffle .btn,.shuffle-preview .btn{cursor:pointer;border:0;min-height:42px;padding:0 16px;font-size:15px}.shuffle-preview{margin-bottom:12px;padding:14px 16px}.shuf-title{margin-bottom:8px}.shuf-person{border-top:1px dashed var(--line);padding:8px 0}.shuf-head{align-items:center;gap:4px;display:flex}.shuf-head span:last-child{font:500 13px var(--mono);color:var(--ink-2);margin-left:auto}.shuf-list{color:var(--ink-2);margin-top:2px;font-size:15px}.cal-row{flex-direction:column;gap:10px;margin-bottom:10px;padding:14px 16px;display:flex}.cal-row .who-line{flex-wrap:wrap;justify-content:space-between;gap:6px 10px;display:flex}.cal-state{font:500 13px var(--mono);color:var(--ink-2)}.cal-state.ok{color:var(--green-2)}.cal-state.bad{color:var(--late)}.cal-row .acts{gap:8px;display:flex}.cal-row .btn{cursor:pointer;border:0;min-height:42px;padding:0 18px;font-size:15px}.admin input[type=url]{border:1px solid var(--line);width:100%;font:500 15px var(--sans);color:var(--ink);background:#fff;border-radius:10px;margin-top:5px;padding:10px 12px;display:block}.big .ttl{white-space:nowrap;text-overflow:ellipsis;max-width:380px;overflow:hidden}.big>div:first-child{min-width:0}.small .ttl{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.small .meta{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.days5{flex:1;gap:10px;min-height:0;display:flex}.daycol{-webkit-overflow-scrolling:touch;flex:1;min-width:0;padding:14px;overflow-y:auto}.dayhead{border-bottom:1px solid var(--line);justify-content:space-between;align-items:baseline;margin-bottom:10px;padding-bottom:8px;display:flex}.dayhead b{font:800 24px var(--sans)}.dayhead span{font:500 13px var(--mono);color:var(--ink-2)}.allday{font:600 15px var(--sans);background:#4abb8f24;border-radius:8px;margin-bottom:6px;padding:5px 9px}.dev{border-bottom:1px dashed var(--line);padding:7px 0;font-size:17px;line-height:1.25}.dev i{font:normal 500 13px var(--mono);color:var(--ink-2);display:block}.acgrid{flex:1;gap:10px;min-height:0;display:flex}.accol{-webkit-overflow-scrolling:touch;border-top:5px solid;flex:1;min-width:0;padding:12px 12px 6px;overflow-y:auto}.ac-head{align-items:center;gap:10px;margin-bottom:6px;display:flex}.ac-head b{font:800 20px/1.1 var(--sans);display:block}.ac-head span span{font:500 12px var(--mono);color:var(--ink-2)}.ac-ring svg{width:44px;height:44px;display:block;transform:rotate(-90deg)}.ac-sec{margin:10px 0 2px;font-size:11px}.ac-list li{gap:10px;min-height:40px;font-size:16px;line-height:1.2}.ac-list .box{width:26px;height:26px}.ac-list .chip{padding:1px 6px;font-size:10px}.chore-edit .del{padding:0 16px 14px}.cal-item{border-top:1px dashed var(--line);justify-content:space-between;align-items:center;gap:10px;padding:8px 0;display:flex}.cal-item b{font:700 16px var(--sans);display:block}.cal-item .link-btn{white-space:nowrap;margin:0}.cal-add summary{cursor:pointer;border-top:1px dashed var(--line);font:700 15px var(--sans);color:var(--green-2);padding-top:8px;list-style:none}.cal-add summary::-webkit-details-marker{display:none}.cal-add form{flex-direction:column;gap:10px;margin-top:10px;display:flex}.cal-add .btn{cursor:pointer;border:0;align-self:flex-start;min-height:42px;padding:0 18px;font-size:15px}.dots{vertical-align:-1px;margin-right:6px;display:inline-flex}.dots .tag{box-shadow:0 0 0 2px var(--card);margin:0 0 0 -5px}.dots .tag:first-child{margin-left:0}