:root{--wine:#552738;--wine-dark:#371725;--ink:#302c28;--muted:#736d66;--paper:#f6f3ed;--line:#e2ddd4;--sage:#eaf0e8;--green:#476447}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.65 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}a{color:var(--wine);text-underline-offset:4px}a:hover{color:var(--wine-dark)}.header{max-width:1280px;margin:auto;padding:26px 44px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:24px}.brand{display:flex;align-items:center;gap:14px;font:26px Georgia,serif;text-decoration:none;color:var(--wine)}.brand small{display:block;font:8px/2.5 system-ui;letter-spacing:2px;color:var(--muted)}.brandmark{border:1px solid #b7a38d;border-radius:50%;width:45px;height:45px;display:flex;justify-content:center;align-items:center;font-size:21px}.brandmark span{margin:10px 0 0 -6px;font-size:16px}nav{display:flex;gap:24px;align-items:center;font-size:14px}nav a{text-decoration:none}.local{color:var(--muted);font-size:13px}.shell{max-width:1160px;min-height:70vh;margin:auto;padding:64px 36px}.eyebrow{font-size:11px;font-weight:650;letter-spacing:2.1px;color:var(--wine);margin:0 0 20px}h1{font:normal clamp(35px,4.3vw,59px)/1.13 Georgia,serif;letter-spacing:-1.6px;margin:0 0 24px}h1 em{color:var(--wine);font-weight:400}h2{font:normal 27px/1.25 Georgia,serif;margin:12px 0 16px}h3{font:normal 22px Georgia,serif}p{margin:0 0 20px}.lead{font-size:17px;color:var(--muted);max-width:660px;line-height:1.8}.entrance{display:grid;grid-template-columns:1.15fr 1fr;gap:80px;align-items:start}.intro{padding-top:34px}.card{background:#fffdf9;border:1px solid var(--line);border-radius:15px;padding:32px}.login-card{padding:38px;box-shadow:0 14px 44px #302c2806}.login-card h2{font-size:32px}.login-card>p:not(.eyebrow){color:var(--muted);font-size:14px}label{display:block;font-size:14px;font-weight:600;margin:18px 0 7px}input:not([type=checkbox]):not([type=hidden]),select,textarea{width:100%;border:1px solid #cbc3b8;border-radius:7px;background:#fffefa;padding:12px 14px;color:var(--ink);font:inherit;min-height:46px}input:focus,textarea:focus{outline:2px solid #a37788;outline-offset:2px}.check{display:flex;gap:10px;align-items:flex-start;font-size:12px;line-height:1.6;font-weight:400;margin:22px 0}.check input{margin:4px 0 0;accent-color:var(--wine);width:17px;height:17px;flex-shrink:0}button,.button{display:inline-block;background:var(--wine);color:white;border:1px solid var(--wine);border-radius:7px;padding:12px 21px;font:500 14px/1.5 system-ui;cursor:pointer;text-decoration:none;text-align:center;min-height:46px}button:hover,.button:hover{background:var(--wine-dark);color:white}button:focus-visible,.button:focus-visible,a:focus-visible{outline:3px solid #b58a48;outline-offset:3px}.login-card button{width:100%;display:flex;justify-content:space-between}.secondary{background:transparent;color:var(--wine)}.help{border-top:1px solid var(--line);margin-top:28px;padding-top:22px;font-size:12px;color:var(--muted)}.help strong{color:var(--ink)}.help p{margin:5px 0 18px}.muted-link{font-size:12px}.muted,.caption{color:var(--muted);font-size:13px}.caption{font:italic 14px Georgia,serif;margin-top:22px}.grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin:36px 0}.grid p{color:var(--muted);font-size:15px}.badge{display:inline-block;font-size:9px;letter-spacing:1px;background:var(--sage);color:var(--green);border-radius:4px;padding:5px 9px}.next{padding:35px 0;border-top:1px solid var(--line);margin-top:45px;max-width:760px}.next p{color:var(--muted)}.activity{margin:32px 0}.activity ul{padding:0;list-style:none}.activity li{display:flex;gap:26px;padding:14px 0;border-top:1px solid var(--line);font-size:14px}.activity time{color:var(--muted);white-space:nowrap}.activity small{display:block}.device-list{margin:32px 0}.device{display:flex;justify-content:space-between;align-items:center;gap:24px;margin-bottom:16px}.device h2{font:500 15px/1.5 system-ui;overflow-wrap:anywhere}.device p{margin:0}.device form{flex-shrink:0}.narrow{max-width:650px;margin:auto}.messages{background:var(--sage);padding:14px 20px;border-radius:8px;margin-bottom:25px;font-size:14px}.messages p{margin:0}.errorlist{color:#942f36;font-size:14px;padding-left:18px}.welcome{text-align:center;max-width:780px;margin:10px auto}.welcome .lead{margin:0 auto 25px}.welcome .wine-art{margin:32px auto 0;width:300px;height:180px}.wine-art{height:245px;max-width:380px;position:relative;margin-top:38px;opacity:.83}.wine-art:before{content:"";position:absolute;inset:15px 0 0;background:#e8e2d6;border-radius:180px 180px 12px 12px}.bottle{position:absolute;bottom:14px;width:47px;height:133px;border-radius:16px 16px 7px 7px;background:#647064;box-shadow:inset 9px 0 #ffffff12}.bottle:before{content:"";position:absolute;top:-38px;left:15px;width:17px;height:44px;background:inherit;border-radius:3px 3px 0 0}.bottle:after{content:"MA CAVE";position:absolute;top:45px;left:4px;width:39px;height:48px;background:#f3eee0;color:#786750;text-align:center;font:7px/48px Georgia;letter-spacing:.7px}.bottle-a{left:70px;transform:rotate(-7deg);background:#4b5950}.bottle-b{left:148px;height:146px;background:#623b45}.bottle-c{left:225px;transform:rotate(7deg);background:#86784e}.shelf{position:absolute;bottom:4px;left:30px;right:20px;height:8px;background:#bdab91;border-radius:2px}.welcome .bottle-a{left:42px;height:105px}.welcome .bottle-b{left:123px;height:120px}.welcome .bottle-c{left:201px;height:105px}footer{max-width:1280px;border-top:1px solid var(--line);margin:0 auto;padding:24px 44px;display:flex;justify-content:space-between;gap:20px;color:var(--muted);font-size:11px}.skip{position:absolute;left:-9999px}.skip:focus{left:10px;top:10px;background:white;z-index:20}svg,img{max-width:100%;height:auto}code{overflow-wrap:anywhere}ul{padding-left:22px}hr{border:0;border-top:1px solid var(--line);margin:26px 0}main>h1{max-width:850px}main>form{max-width:560px}main>form label{margin-top:16px}main>form button{margin-top:20px}main>form textarea{min-height:220px}form ul{font-size:13px;color:var(--muted)}
@media(max-width:800px){.header{padding:20px 24px;align-items:flex-start}.brand{font-size:23px}.brand small{font-size:7px}nav{gap:12px;flex-wrap:wrap;justify-content:flex-end;font-size:12px}.local{display:none}.shell{padding:36px 22px}.entrance{grid-template-columns:1fr;gap:30px;max-width:510px;margin:auto}.intro{padding:0}.intro .wine-art,.intro .caption{display:none}.intro h1{font-size:39px}.intro .lead{font-size:15px}.login-card{padding:27px}.grid{grid-template-columns:1fr}.device{display:block}.device form{margin-top:18px}.activity li{display:block}.activity time{display:block;font-size:12px}.card{padding:25px}footer{padding:22px;display:block}footer span{display:block;margin:5px 0}.welcome h1{font-size:44px}}

/* Caves and access management; same server-rendered design, no script dependency. */
.page-heading{display:flex;justify-content:space-between;align-items:center;gap:28px;margin-bottom:32px}.page-heading h1{overflow-wrap:anywhere}.page-heading>.button{flex-shrink:0}.back{display:inline-block;margin-bottom:28px;font-size:14px}.actions{display:flex;flex-wrap:wrap;gap:16px;align-items:center;margin:24px 0 8px}.split{display:grid;grid-template-columns:1.1fr 1fr;gap:32px;align-items:start}.member-row{margin-bottom:18px;overflow-wrap:anywhere}.member-row h2{font-size:24px}.invite-card>p,.invite-card .helptext{font-size:14px;color:var(--muted)}.empty{grid-column:1/-1;max-width:760px;padding:42px}.empty .muted{margin-top:24px}.prose{overflow-wrap:anywhere;white-space:normal}.cellar-card h2{overflow-wrap:anywhere}.pagination{justify-content:center;margin:30px 0;flex-wrap:wrap}.timeline>.card{margin:20px 0}.timeline p{overflow-wrap:anywhere}.roles dt{font-weight:600;margin-top:12px}.roles dd{margin:4px 0;color:var(--muted);font-size:14px}summary{cursor:pointer;font-weight:600;color:var(--wine);padding:15px 0}summary:focus-visible,select:focus-visible{outline:3px solid #b58a48;outline-offset:3px}.helptext{display:block;font-size:13px;color:var(--muted);margin-top:5px}.header nav{flex-wrap:wrap;justify-content:flex-end}
@media(max-width:800px){.split{grid-template-columns:1fr}.page-heading{display:block}.page-heading>.button{margin-top:10px}.empty{padding:25px}.header{flex-wrap:wrap}.header nav{justify-content:flex-start}.actions{gap:14px}}

.label-photos{display:flex;flex-wrap:wrap;gap:1rem}.label-photos img{max-width:min(100%,320px);max-height:420px;object-fit:contain}.search-form{margin:1.5rem 0}.search-form input{max-width:30rem}.card dd{margin:0 0 .8rem;overflow-wrap:anywhere}.card dt{font-weight:600}input[type=file]{max-width:100%}

.room-plan{display:block;width:100%;height:auto;max-height:320px;margin:1rem 0}.room-boundary{fill:#f7f4ec;stroke:#5a5146;stroke-width:2;vector-effect:non-scaling-stroke}.equipment-shape{fill:#9b334d;stroke:#fff;stroke-width:2;vector-effect:non-scaling-stroke}.rack-scroll{overflow-x:auto;max-width:100%;margin-block:1rem}.rack-table{border-collapse:separate;border-spacing:6px;width:100%}.rack-table caption{text-align:left;padding:0.5rem}.rack-table td{padding:0;min-width:108px}.rack-place{display:flex;flex-direction:column;gap:0.5rem;border:1px solid #587469;border-radius:10px;background:#f0f6f2;color:#204938;padding:12px;text-decoration:none}.rack-place.occupied{background:#f8e9ee;color:#69253a;border-color:#943d58}.rack-place:focus-visible{outline:3px solid #132e53;outline-offset:2px}

.layout-plan{display:block;width:100%;height:auto;max-height:520px;min-height:220px;border:1px solid #ded6ca;touch-action:none;margin:1rem 0}.door-line{stroke:#197380;stroke-width:7;vector-effect:non-scaling-stroke}.plan-equipment{fill:#ad7e8c;stroke:#52273a;stroke-width:2;vector-effect:non-scaling-stroke;cursor:grab}.plan-equipment.selected{fill:#dec06d;stroke:#674f10;stroke-width:3}.plan-label{font-size:8px;fill:#211a1a;pointer-events:none}.position-fields{display:flex;gap:1rem;flex-wrap:wrap}.position-fields label{flex:1 1 100px}.three-container{width:100%;height:360px;margin-top:1rem}.three-container canvas{width:100%;height:360px;display:block;touch-action:none}button:disabled{opacity:.6;cursor:wait}[hidden]{display:none!important}
