@import url('https://fonts.googleapis.com/css2?family=Hina+Mincho&display=swap');
:root{
  --bg:#f1f0eb;
  --surface:rgba(252,251,247,.90);
  --surface-soft:rgba(235,234,229,.88);
  --float:rgba(255,255,255,.90);
  --ink:#292924;
  --muted:#8b8880;
  --accent:#b8665d;
  --shadow:0 10px 30px rgba(37,34,29,.07);
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;background:var(--bg);color:var(--ink)}
body{font:14px/1.5 ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background-image:radial-gradient(circle at 1px 1px,rgba(30,30,26,.03) 1px,transparent 0);background-size:24px 24px}
button,textarea{font:inherit;color:inherit}
button{cursor:pointer}
.shell{max-width:1320px;margin:0 auto;padding:22px 22px 110px}
.topbar{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:20px}
.brand-wrap{display:flex;flex-direction:column;align-items:flex-start}.brand-row{display:flex;align-items:center;gap:10px}.brand{font:700 18px/1 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.12em}.brand-sub{display:block;margin-top:8px;color:var(--muted);font:500 8px/1.2 ui-monospace,monospace;letter-spacing:.1em}.system-status{display:flex;align-items:center;gap:5px;height:18px;color:#77736c}.status-icon{position:relative;width:20px;height:18px;border:0;padding:0;background:transparent;color:inherit;display:flex;align-items:center;justify-content:center;opacity:.62;transition:opacity .14s,transform .14s}.status-icon:hover{opacity:1;transform:translateY(-1px)}.status-techo{align-items:flex-end;gap:2px;padding-bottom:3px}.status-techo span{display:block;width:2px;background:currentColor;border-radius:1px}.status-techo span:nth-child(1){height:4px}.status-techo span:nth-child(2){height:7px}.status-techo span:nth-child(3){height:10px}.status-analysis span{position:relative;width:10px;height:10px;border:1.4px solid currentColor;border-radius:50%}.status-analysis span::after{content:"";position:absolute;left:50%;top:50%;width:3px;height:3px;border-radius:50%;background:currentColor;transform:translate(-50%,-50%)}.status-board{width:20px;height:18px;border:0;padding:0;background:transparent;color:#77736c;opacity:.58;font:800 7px/1 ui-monospace,monospace;letter-spacing:.03em}.status-board:hover{opacity:1;transform:translateY(-1px)}.status-system span{position:relative;width:12px;height:8px;border:1.4px solid currentColor;border-radius:1px}.status-system span::after{content:"";position:absolute;right:-3px;top:2px;width:2px;height:3px;background:currentColor;border-radius:0 1px 1px 0}
.now{text-align:right;font:600 11px/1.4 ui-monospace,monospace}.now small{color:var(--muted);font-size:9px}
.desk{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(260px,.65fr);gap:16px;align-items:start}
.calendar-news-grid{grid-column:1/-1;display:grid;grid-template-columns:minmax(0,1.35fr) minmax(260px,.65fr);gap:16px;align-items:stretch}
.object{background:var(--surface);border-radius:12px;box-shadow:var(--shadow);padding:18px;backdrop-filter:blur(8px)}
.object-label{font:700 9px/1 ui-monospace,monospace;letter-spacing:.14em;color:var(--muted)}
.object-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.object-no{font:700 8px ui-monospace,monospace;color:#a7a39b}
.capture-object{grid-column:1/-1;min-height:300px;display:flex;flex-direction:column}.capture-object textarea{flex:1;min-height:180px;margin-top:18px;border:0;outline:0;resize:none;background:transparent;color:var(--ink);font:18px/1.8 "Hina Mincho","Yu Mincho",serif}.capture-object textarea::placeholder{color:#b0ada6}
.capture-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:14px}.quiet{color:var(--muted);font-size:9px}
.action-btn,.ghost-btn{border:0;border-radius:7px;padding:9px 13px;background:var(--ink);color:#faf9f5;font-size:10px}.ghost-btn{background:var(--surface-soft);color:var(--ink)}.action-btn:hover,.ghost-btn:hover{transform:translateY(-1px)}
.today-object{min-height:320px}.list{margin-top:14px}.empty{padding:10px 0;color:var(--muted);font-size:10px}
.calendar-head{min-height:28px}.calendar-title{display:flex;align-items:center;gap:5px}.calendar-external{display:inline-flex;align-items:center;justify-content:center;width:14px;height:18px;background:transparent;color:#817d75;text-decoration:none;font:500 10px/1 ui-monospace,monospace;opacity:.30;transition:opacity .14s,color .14s,transform .14s}.calendar-external:hover{background:transparent;color:#5f5b54;opacity:.72;transform:translate(1px,-1px)}.date-nav{display:flex;align-items:center;gap:4px}.date-btn{border:0;border-radius:5px;min-width:26px;height:26px;padding:0 7px;background:rgba(235,234,229,.82);color:#77736c;font:700 10px/1 ui-monospace,monospace}.date-btn:hover{background:rgba(225,223,216,.95);color:var(--ink)}.date-label{min-width:78px;font-size:9px}.date-label.is-today{background:rgba(184,102,93,.10);color:var(--accent)}
.anytime{margin:0 0 14px 54px;padding:9px 10px;border-radius:7px;background:rgba(238,237,232,.64)}.anytime.past{opacity:.48;filter:grayscale(1)}.anytime-label{display:block;margin-bottom:6px;color:var(--muted);font:700 8px/1 ui-monospace,monospace;letter-spacing:.08em}.anytime-items{display:flex;flex-wrap:wrap;gap:5px}.anytime-item{padding:3px 6px;border-radius:4px;background:rgba(255,255,255,.58);font-size:10px;line-height:1.35}
.timeline{position:relative;margin-top:4px;min-height:220px;overflow:visible}.timeline-past{position:absolute;left:0;right:0;top:0;background:rgba(110,108,102,.075);pointer-events:none;z-index:0}.timeline-hour,.timeline-half{position:absolute;left:50px;right:0;height:1px;z-index:1}.timeline-hour{background:rgba(56,54,49,.14)}.timeline-hour::before{content:"";position:absolute;left:-5px;top:-2px;width:5px;height:5px;background:#8c8880}.timeline-hour span{position:absolute;left:-50px;top:-5px;width:42px;color:#74716a;font:650 9px/1 ui-monospace,monospace;text-align:right}.timeline-half{background:rgba(56,54,49,.055)}.timeline-half::before{content:"";position:absolute;left:-3px;top:0;width:3px;height:1px;background:#aaa69e}.timeline-track{position:absolute;left:50px;right:0;top:0;bottom:0;border-left:1px solid rgba(56,54,49,.16);z-index:2}.timeline-event{position:absolute;left:8px;right:2px;min-height:28px;padding:6px 8px;border-radius:5px;background:rgba(228,227,221,.88);box-shadow:0 3px 10px rgba(37,34,29,.035);overflow:hidden;transition:opacity .15s,filter .15s}.timeline-event.past{opacity:.38;filter:grayscale(1)}.timeline-event-time{display:block;margin-bottom:2px;color:#7d7971;font:700 8px/1.1 ui-monospace,monospace}.timeline-event-title{display:block;font-size:10px;line-height:1.35;color:#44423e}.timeline-now{position:absolute;left:44px;right:0;height:1px;background:rgba(184,102,93,.76);z-index:4}.timeline-now::before{content:"";position:absolute;left:3px;top:-3px;width:7px;height:7px;border-radius:50%;background:var(--accent)}.timeline-now span{position:absolute;left:-41px;top:-5px;color:var(--accent);font:700 7px/1 ui-monospace,monospace;letter-spacing:.04em}
.news-object{min-height:320px;display:flex;flex-direction:column}.news-object p{margin:22px 0 12px;color:#66635d;font-family:Georgia,"Yu Mincho",serif;font-size:15px;line-height:1.7}.state{font:700 8px ui-monospace,monospace;color:var(--muted)}
.dock{position:fixed;z-index:35;left:50%;bottom:16px;transform:translateX(-50%);display:flex;gap:10px;align-items:center;padding:0;background:transparent}
.app-btn{width:74px;height:62px;border:0;border-radius:9px;background:var(--float);box-shadow:0 8px 24px rgba(37,34,29,.08);backdrop-filter:blur(16px);color:var(--ink);transition:.14s}.app-btn:hover{transform:translateY(-3px);box-shadow:0 12px 28px rgba(37,34,29,.11)}.app-btn b{display:block;font:700 16px/1 ui-monospace,monospace}.app-btn span{display:block;margin-top:7px;color:var(--muted);font:500 8px ui-monospace,monospace}.app-btn.secret b{color:var(--accent)}
.app-window{position:fixed;z-index:80;inset:0;display:none;background:rgba(43,41,36,.18);padding:20px}.app-window.open{display:block}.app-frame{width:min(1280px,100%);height:calc(100vh - 40px);margin:0 auto;display:flex;flex-direction:column;background:#f8f7f2;border-radius:12px;box-shadow:0 30px 90px rgba(30,28,24,.18);overflow:hidden}.app-frame-head{height:48px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 14px;background:rgba(245,244,239,.95)}.app-title{font:700 9px ui-monospace,monospace;letter-spacing:.12em}.app-content{flex:1;min-height:0}.app-content iframe{width:100%;height:100%;border:0;background:#f8f7f2}.under-construction{height:100%;display:grid;place-items:center;padding:30px;text-align:center;color:var(--muted)}.under-construction strong{display:block;margin-bottom:10px;color:var(--ink);font:700 10px ui-monospace,monospace}.game-result{margin-top:18px;color:var(--accent)}
.pet{position:fixed;right:28px;bottom:104px;z-index:45;display:flex;flex-direction:column;align-items:center;user-select:none;touch-action:none;cursor:grab}.pet.dragging{cursor:grabbing}.pet-face{position:relative;width:72px;height:72px;border:1.5px solid #55534d;border-radius:3px;background:rgba(249,248,244,.86);box-shadow:0 8px 18px rgba(37,34,29,.05)}.pet-face::before{content:"";position:absolute;top:21px;left:19px;width:7px;height:7px;border-radius:50%;background:#3a3935;box-shadow:27px 0 0 #3a3935}.pet-face::after{content:"";position:absolute;left:50%;bottom:19px;width:31px;height:2px;background:#55534d;transform:translateX(-50%)}.pet-shadow{width:38px;height:4px;margin-top:5px;border-radius:50%;background:rgba(40,38,33,.09)}.pet-say{position:absolute;right:62px;bottom:62px;width:min(240px,65vw);padding:10px 12px;border-radius:8px;background:rgba(255,255,255,.94);box-shadow:var(--shadow);color:#55524c;font-size:10px;line-height:1.6;opacity:0;transform:translateY(4px);pointer-events:none;transition:.15s}.pet-say.show{opacity:1;transform:none}
@media(max-width:900px){.desk{grid-template-columns:1fr}.calendar-news-grid{grid-column:auto}.capture-object{grid-column:auto;min-height:280px}.capture-object textarea{min-height:150px}.today-object,.news-object{min-height:300px}}
@media(max-width:720px){.shell{padding:16px 12px 108px}.brand{font-size:16px}.brand-row{gap:7px}.system-status{gap:3px}.desk{gap:12px}.calendar-news-grid{grid-template-columns:1fr;gap:12px}.object{border-radius:10px;padding:15px}.capture-object{min-height:270px}.capture-object textarea{min-height:140px;font-size:16px}.capture-actions{align-items:flex-end}.quiet{max-width:190px}.date-nav{gap:3px}.date-btn{height:25px}.dock{left:8px;right:8px;bottom:8px;transform:none;gap:8px;overflow-x:auto;padding:4px 0 4px}.app-btn{flex:0 0 62px;width:62px;height:56px;border-radius:8px}.app-window{padding:0}.app-frame{height:100vh;border-radius:0}.app-frame-head{height:calc(48px + env(safe-area-inset-top));padding-top:env(safe-area-inset-top)}.pet{right:16px;bottom:88px}.pet-face{width:66px;height:66px}.pet-face::before{top:19px;left:17px;box-shadow:25px 0 0 #3a3935}.pet-face::after{bottom:17px;width:29px}.anytime{margin-left:48px}.timeline-hour,.timeline-half{left:46px}.timeline-hour span{left:-46px;width:38px}.timeline-track{left:46px}.timeline-now{left:40px}.timeline-now span{left:-37px}.timeline-event{left:7px;right:0}}
.status-mic span{position:relative;width:6px;height:11px;border:1.4px solid currentColor;border-radius:4px}.status-mic span::before{content:"";position:absolute;left:50%;bottom:-5px;width:10px;height:7px;border:1.4px solid currentColor;border-top:0;border-radius:0 0 6px 6px;transform:translateX(-50%)}.status-mic span::after{content:"";position:absolute;left:50%;bottom:-8px;width:1.4px;height:3px;background:currentColor;transform:translateX(-50%)}
.status-keyboard span{position:relative;width:13px;height:9px;border:1.4px solid currentColor;border-radius:2px}.status-keyboard span::before{content:"";position:absolute;left:1.5px;top:1.5px;width:1.4px;height:1.4px;background:currentColor;box-shadow:3px 0 currentColor,6px 0 currentColor,0 3px currentColor,3px 3px currentColor,6px 3px currentColor}
@media(max-width:520px){.brand-row{gap:4px!important}.system-status{gap:0}.system-status .status-icon,.system-status .status-board{width:28px!important;min-width:28px!important}.system-status .status-mail,.system-status .status-system{width:34px!important;min-width:34px!important}}
