:root{--navy: #1b4f7a;--navy-deep: #163f61;--green: #217648;--green-hover: #1b6440;--green-brand: #4cb77c;--bg: #f4f6f8;--surface: #ffffff;--border: #d6dee6;--ink: #202933;--muted: #6e7a86;--hover: #e8f0f7;--radius: 8px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:Segoe UI,system-ui,-apple-system,sans-serif;background:var(--bg);color:var(--ink);font-size:14px}a{color:inherit;text-decoration:none}button{font-family:inherit;cursor:pointer}.app-shell{display:flex;flex-direction:column;height:100%}.hdr{background:var(--navy);color:#fff;padding:14px 20px 0;display:flex;flex-direction:column;border-top-left-radius:0;border-top-right-radius:0}.hdr-row{display:flex;align-items:center;gap:12px;min-height:48px}.hdr-wordmark{font-size:12px;font-weight:700;color:var(--green-brand);letter-spacing:.5px}.hdr-title{font-size:22px;font-weight:700;flex:1}.hdr-accent{height:4px;background:var(--green);border-radius:0 0 2px 2px;margin-top:12px}.hdr-sub{font-size:13px;color:#c8d8e6}.btn-menu{background:#ffffff29;color:#fff;border:1px solid rgba(255,255,255,.4);border-radius:6px;padding:9px 16px;font-size:14px}.btn-menu:hover{background:#ffffff47}.btn{border:1px solid var(--border);border-radius:6px;padding:9px 16px;font-size:14px;background:#fff;color:var(--ink)}.btn-primary{background:var(--green);color:#fff;border-color:var(--green);font-weight:600}.btn-primary:hover{background:var(--green-hover)}.btn-primary:disabled{background:#a8c8b5;border-color:#a8c8b5;cursor:not-allowed}.btn-secondary{background:#fff;color:var(--ink)}.btn-secondary:hover{background:var(--hover)}.home-body{flex:1;padding:16px;overflow-y:auto}.tile-wrap{display:flex;flex-wrap:wrap;gap:16px}.tile{width:260px;height:120px;background:#fff;border:1px solid var(--border);border-radius:10px;color:var(--navy);font-size:17px;font-weight:600;display:flex;align-items:center;justify-content:center;gap:12px;text-align:center}.tile:hover{background:var(--hover)}.tile:active{background:#d6e4f0}.page-body{flex:1;display:flex;gap:16px;padding:16px;overflow:hidden}.list-pane{flex:2;background:#fff;border-radius:var(--radius);border:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden}.edit-pane{flex:1;background:#fff;border-radius:var(--radius);border:1px solid var(--border);padding:16px;overflow-y:auto;display:flex;flex-direction:column;gap:10px}.list-hint{text-align:center;font-size:12px;font-weight:600;color:var(--muted);padding:8px;border-bottom:1px solid var(--border)}.list-scroll{overflow-y:auto;flex:1}.row{display:flex;align-items:center;padding:8px 16px;border-bottom:1px solid #eef1f4;cursor:pointer;gap:8px}.row:hover{background:#1b4f7a0f}.row.selected{background:#1b4f7a1a}.row-main{flex:1;min-width:0}.row-name{font-size:15px;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.row-name.retired{color:#96a0aa}.row-sub{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.row-price{font-size:15px;font-weight:600;color:var(--navy);white-space:nowrap;padding-left:12px}.row-chevron{font-size:22px;color:#96a0aa;padding-left:8px}.field-label{font-size:12px;color:var(--muted);margin-top:4px}.field-label.strong{font-weight:600}.edit-title{font-size:18px;font-weight:700;color:var(--ink);margin-bottom:4px}input[type=text],input[type=number],select,textarea{width:100%;padding:9px 10px;font-size:14px;border:1px solid var(--border);border-radius:6px;background:#fff;color:var(--ink);font-family:inherit}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--navy)}textarea{resize:vertical}.toggle-row{display:flex;align-items:center;gap:8px;font-size:13px;margin-top:6px}.actions-row{display:flex;gap:10px;margin-top:10px}.actions-row .btn{flex:1;padding:12px}.search-input{width:300px}.scroll-body{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:10px}.section-head{font-size:16px;font-weight:700;color:var(--ink);margin-top:12px}.section-intro{font-size:12px;color:var(--muted)}.cfg-row{display:flex;align-items:center;gap:12px;padding:8px 0;border-bottom:1px solid #eef1f4}.cfg-name{flex:1;min-width:320px;font-size:14px;font-weight:600}.cfg-input{width:140px;flex:none}.cfg-input.sm{width:104px}.cfg-multi{display:flex;gap:10px}.cfg-multi>div{display:flex;flex-direction:column;gap:2px}.cfg-caption{font-size:11px;color:var(--muted)}.toast{position:fixed;bottom:20px;left:50%;transform:translate(-50%);padding:12px 20px;border-radius:8px;color:#fff;font-size:14px;font-weight:600;box-shadow:0 4px 16px #0003;z-index:100}.toast.success{background:var(--green)}.toast.error{background:#c0392b}.loading,.empty{padding:40px;text-align:center;color:var(--muted)}.error-banner{background:#fdecea;color:#a12;padding:12px 16px;border-radius:8px;margin:16px}.signin-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}.signin-card{background:#fff;border:1px solid var(--border);border-radius:12px;padding:32px;max-width:460px;width:100%;box-shadow:0 8px 28px #1b4f7a1a}.signin-word{font-size:13px;font-weight:700;color:var(--green-brand);letter-spacing:1px}.signin-title{font-size:26px;font-weight:700;color:var(--navy);margin:4px 0 8px}.signin-sub{color:var(--muted);font-size:14px;margin-bottom:16px}.signin-btns{display:grid;gap:10px}.signin-btns .btn{padding:12px}.signed-bar{background:var(--navy-deep);color:#fff;font-size:13px;padding:6px 16px;display:flex;align-items:center;justify-content:space-between}.signed-bar strong{color:#fff}.linkbtn{background:none;border:0;color:#cfe0ee;text-decoration:underline;font-size:13px;cursor:pointer}.mock-banner{background:#fff3cd;border:1px solid #ffe08a;color:#6a5300;border-radius:8px;padding:10px 12px;font-size:12px;margin-bottom:14px}.mock-banner.slim{border-radius:0;margin:0;border-left:0;border-right:0}.readonly-banner{background:#eef4fb;border-bottom:1px solid #cdddec;color:var(--navy-deep);font-size:13px;padding:8px 16px;text-align:center}.role-chip{display:inline-block;margin-left:8px;padding:1px 8px;border-radius:999px;font-size:11px;font-weight:600;letter-spacing:.02em;vertical-align:middle}.role-chip.role-owner{background:#d6f5e0;color:#0d6a34}.role-chip.role-manager{background:#dbe8fb;color:#1c4e8a}.role-chip.role-crew{background:#eceff2;color:#555}.error-boundary{display:flex;justify-content:center;padding:48px 16px}.error-boundary-card{max-width:520px;width:100%;background:#fff;border:1px solid #f0c9c4;border-radius:12px;padding:24px;box-shadow:0 2px 8px #0000000f}.error-boundary-title{font-size:20px;font-weight:700;color:#a12;margin-bottom:8px}.error-boundary-msg{color:var(--ink);line-height:1.5;margin:0 0 12px}.error-boundary-detail{background:#fbece9;color:#7a1a12;padding:10px 12px;border-radius:8px;font-size:12px;white-space:pre-wrap;word-break:break-word;margin:0 0 16px}.access-grid th:first-child,.access-grid td:first-child{position:sticky;left:0;z-index:1;background:#fff;box-shadow:2px 0 4px -2px #0000002e}.access-grid thead th:first-child{z-index:2}.access-scroll-hint{display:none}@media(max-width:720px){body{font-size:15px}.hdr{padding:12px 14px 0;padding-left:max(14px,env(safe-area-inset-left));padding-right:max(14px,env(safe-area-inset-right))}.hdr-row{flex-wrap:wrap;row-gap:10px}.hdr-title{font-size:20px;flex-basis:100%;order:-1}.hdr-row .search-input,.search-input{width:100%;flex:1 1 100%}.hdr-row .btn{flex:1 1 auto}.btn,.btn-menu{min-height:44px}.home-body{padding:14px}.tile-wrap{gap:12px}.tile{width:100%;height:84px;font-size:16px}.page-body{flex-direction:column;overflow-y:auto;padding:12px;padding-bottom:max(12px,env(safe-area-inset-bottom));gap:12px}.list-pane,.edit-pane{flex:1 1 auto;width:100%}.list-pane{max-height:55vh}.edit-pane{overflow:visible}.scroll-body{padding:12px;padding-bottom:max(12px,env(safe-area-inset-bottom))}.cfg-row{flex-wrap:wrap;gap:8px}.cfg-name{min-width:0;flex:1 1 100%}.cfg-input,.cfg-input.sm{width:100%;flex:1 1 auto}.cfg-multi{flex-wrap:wrap;width:100%}.cfg-multi>div{flex:1 1 45%}.row{padding:12px 14px}.actions-row .btn{padding:14px;min-height:48px}input[type=text],input[type=number],select,textarea{padding:11px 12px;font-size:16px}.signin-card{padding:24px}.signin-btns .btn{min-height:48px}.access-grid{min-width:640px}.access-scroll{-webkit-overflow-scrolling:touch}.access-scroll-hint{display:block;font-size:12px;color:var(--navy-deep);background:#eef4fb;border:1px solid #cdddec;border-radius:8px;padding:6px 10px;margin-bottom:8px}.access-grid tbody td:first-child{background:#fff}}
